Name: series-workflow8lfhl Phase: Failed StartedAt: 2026-09-06 08:03:12 +0000 UTC FinishedAt: 2026-09-06 08:06:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8lfhl[0] Phase: Succeeded StartedAt: 2026-09-06 08:03:12 +0000 UTC FinishedAt: 2026-09-06 08:06:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8lfhl[0].run-triage Phase: Succeeded StartedAt: 2026-09-06 08:03:12 +0000 UTC FinishedAt: 2026-09-06 08:06:34 +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+CgkJCTx0ZD4yMDI2LzA5LzA2IDA4OjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jIGlzIHBhcnQgb2YgdGhlIGF0aDlrIGRyaXZlciBmb3IgcGh5c2ljYWwgQXRoZXJvcyA4MDIuMTFuIFBDSS9BSEIgd2lyZWxlc3MgYWRhcHRlcnMuIEJlY2F1c2Ugc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4gUUVNVS9HQ0UpIGRvIG5vdCBlbXVsYXRlIGF0aDlrIFBDSS9BSEIgaGFyZHdhcmUsIHRoaXMgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA4OjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTFiNWUwZmI2ZTUwNzNlZjdkZmUxNmYzMmU4MWE0ZmVlMjlkZGZhNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMDg6MDU6NDIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNcbmluZGV4IDg5ZDhiMzE3ODc4NDYuLjE2YjY0OTA4ZThkZmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jXG5AQCAtMjI1NSw2ICYjNDM7MjI1NSwxMSBAQCBzdGF0aWMgc3RydWN0IGF0aF9idWYgKmF0aF90eF9zZXR1cF9idWZmZXIoc3RydWN0IGF0aF9zb2Z0YyAqc2MsXG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuJiM0MztcdGlmIChmaS1cdTAwM2ViZikge1xuJiM0MztcdFx0ZmktXHUwMDNlYmYtXHUwMDNlYmZfbXBkdSA9IE5VTEw7XG4mIzQzO1x0XHRmaS1cdTAwM2ViZi1cdTAwM2ViZl9idWZfYWRkciA9IDA7XG4mIzQzO1x0XHRhdGhfdHhfcmV0dXJuX2J1ZmZlcihzYywgZmktXHUwMDNlYmYpO1xuJiM0MztcdH1cbiBcdGZpLVx1MDAzZWJmID0gYmY7XG4gXG4gXHRyZXR1cm4gYmY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDg6MDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jIGlzIHBhcnQgb2YgdGhlIGF0aDlrIGRyaXZlciBmb3IgcGh5c2ljYWwgQXRoZXJvcyA4MDIuMTFuIFBDSS9BSEIgd2lyZWxlc3MgYWRhcHRlcnMuIEJlY2F1c2Ugc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4gUUVNVS9HQ0UpIGRvIG5vdCBlbXVsYXRlIGF0aDlrIFBDSS9BSEIgaGFyZHdhcmUsIHRoaXMgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTFiNWUwZmI2ZTUwNzNlZjdkZmUxNmYzMmU4MWE0ZmVlMjlkZGZhNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDYgMDg6MDU6NDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYwppbmRleCA4OWQ4YjMxNzg3ODQ2Li4xNmI2NDkwOGU4ZGZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMKQEAgLTIyNTUsNiAmIzQzOzIyNTUsMTEgQEAgc3RhdGljIHN0cnVjdCBhdGhfYnVmICphdGhfdHhfc2V0dXBfYnVmZmVyKHN0cnVjdCBhdGhfc29mdGMgKnNjLAogCQlyZXR1cm4gTlVMTDsKIAl9CiAKJiM0MzsJaWYgKGZpLSZndDtiZikgewomIzQzOwkJZmktJmd0O2JmLSZndDtiZl9tcGR1ID0gTlVMTDsKJiM0MzsJCWZpLSZndDtiZi0mZ3Q7YmZfYnVmX2FkZHIgPSAwOwomIzQzOwkJYXRoX3R4X3JldHVybl9idWZmZXIoc2MsIGZpLSZndDtiZik7CiYjNDM7CX0KIAlmaS0mZ3Q7YmYgPSBiZjsKIAogCXJldHVybiBiZjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkwMwoJCQkJCQkJb3V0cHV0OiA3NgoJCQkJCQkJdGhvdWdodHM6IDIxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gYXNzZXNzIGlmIHRoaXMgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNgIGlzIHdvcnRoIHB1cnN1aW5nIHdpdGggc3l6a2FsbGVyLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlLiBJJiMzOTtsbCB1c2UgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIHRvIGV4YW1pbmUgdGhlIGNoYW5nZXMgYW5kIHRoZSBzdXJyb3VuZGluZyBjb2RlIGZvciBzb21lIGNvbnRleHQuIFJpZ2h0LCBzbyB0aGlzIGlzIGFib3V0IHRoZSBhdGg5ayBkcml2ZXIuIEFoLCB0aGUgQXRoZXJvcyA4MDIuMTFuIHdpcmVsZXNzIGRyaXZlci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGF0dGFjayBzdXJmYWNlLiBDYW4gSSByZWFjaCB0aGlzIHRoaW5nIHRocm91Z2ggc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gb3IgaXMgdGhpcyBsb2NrZWQgYmVoaW5kIHNwZWNpZmljIGhhcmR3YXJlIGFjY2Vzcz8gV2FpdCwgSSB0aGluayBJIHJlbWVtYmVyLi4uIGF0aDlrIGlzIFBDSSwgYW5kIEFIQi4gQW5kIHdhc24mIzM5O3QgdGhlcmUgYW4gYXRoOWtfaHRjIHRoYXQgdXNlZCBVU0I/CgpUaGlzIGdldHMgY29tcGxpY2F0ZWQgcXVpY2tseSwgaXMgdGhlIGNvZGUgdXNlZCBieSBhdGg5a19odGMgcmVsYXRlZCB0byB0aGUgc2FtZSBmaWxlPyBJIG5lZWQgdG8gY2xhcmlmeSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYXRoOWsgYW5kIGF0aDlrX2h0Yy4gU28sIGlzIGBhdGg5ay94bWl0LmNgIHVzZWQgYnkgYm90aD8gT3IgaXMgYGF0aDlrYCBQQ0kvQUhCIG9ubHk/IElzIHRoZXJlIHNvbWUga2luZCBvZiBlbXVsYXRpb24gSSBjYW4gdGFrZSBhZHZhbnRhZ2Ugb2Y/IENhbiBJIGp1c3QgcnVuIHRoaXMgb24gYSBVU0IgZ2FkZ2V0LCBvciB3aWxsIEkgbmVlZCBhIHJlYWwgcGllY2Ugb2YgaGFyZHdhcmU/IEFscmlnaHQsIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIEtjb25maWcgdG8gc29ydCB0aGlzIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwODowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGhfdHhfc2V0dXBfYnVmZmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTcwPXN0YXRpYyB2b2lkIGF0aF90eF91cGRhdGVfYmF3KHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzo3MTpzdGF0aWMgc3RydWN0IGF0aF9idWYgKmF0aF90eF9zZXR1cF9idWZmZXIoc3RydWN0IGF0aF9zb2Z0YyAqc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTcyLVx0XHRcdFx0XHQgICBzdHJ1Y3QgYXRoX3R4cSAqdHhxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9OTM4PWF0aF90eF9nZXRfdGlkX3N1YmZyYW1lKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtOTU1LVx0XHRpZiAoIWZpLVx1MDAzZWJmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzo5NTY6XHRcdFx0YmYgPSBhdGhfdHhfc2V0dXBfYnVmZmVyKHNjLCB0eHEsIHRpZCwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtOTU3LVx0XHRlbHNlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0yMTkyPXU4IGF0aF90eGNoYWlubWFza19yZWR1Y3Rpb24oc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHU4IGNoYWlubWFzaywgdTMyIHJhdGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yMjEwLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoyMjExOnN0YXRpYyBzdHJ1Y3QgYXRoX2J1ZiAqYXRoX3R4X3NldHVwX2J1ZmZlcihzdHJ1Y3QgYXRoX3NvZnRjICpzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjIxMi1cdFx0XHRcdFx0ICAgc3RydWN0IGF0aF90eHEgKnR4cSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTIzMjg9aW50IGF0aF90eF9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTIzNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjIzNzA6XHRiZiA9IGF0aF90eF9zZXR1cF9idWZmZXIoc2MsIHR4cSwgdGlkLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yMzcxLVx0aWYgKCFiZikge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MjM5ND12b2lkIGF0aF90eF9jYWJxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjQxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjQxODpcdFx0YmYgPSBhdGhfdHhfc2V0dXBfYnVmZmVyKHNjLCB0eGN0bC50eHEsIE5VTEwsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTI0MTktXHRcdGlmICghYmYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0yOTE5PWludCBhdGg5a190eDk5X3NlbmQoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yOTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoyOTQ2Olx0YmYgPSBhdGhfdHhfc2V0dXBfYnVmZmVyKHNjLCB0eGN0bC1cdTAwM2V0eHEsIE5VTEwsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTI5NDctXHRpZiAoIWJmKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDg6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QVRIOUsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Mjpjb25maWcgQVRIOUtfSFdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NDpjb25maWcgQVRIOUtfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTYtXHRzZWxlY3QgQVRIX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Nzpjb25maWcgQVRIOUtfQ09NTU9OX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy04LVx0Ym9vbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6OTpjb25maWcgQVRIOUtfREZTX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEwLVx0ZGVmX2Jvb2wgeVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTE6XHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXHUwMDI2XHUwMDI2IEFUSDlLX0RGU19DRVJUSUZJRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTM6Y29uZmlnIEFUSDlLX0JUQ09FWF9TVVBQT1JUXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBibHVldG9vdGggY29leGlzdGVuY2Ugc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU6XHRkZXBlbmRzIG9uIChBVEg5SyB8fCBBVEg5S19IVEMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNi1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjE6Y29uZmlnIEFUSDlLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMi1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgODAyLjExbiB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjQtXHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjU6XHRzZWxlY3QgQVRIOUtfSFdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjI2Olx0c2VsZWN0IEFUSDlLX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzozOTpjb25maWcgQVRIOUtfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00MC1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayBQQ0kvUENJZSBidXMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNDEtXHRkZWZhdWx0IHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjQyOlx0ZGVwZW5kcyBvbiBBVEg5SyBcdTAwMjZcdTAwMjYgUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00My1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjQ4OmNvbmZpZyBBVEg5S19BSEJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQ5LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIEFIQiBidXMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NTA6XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiBPRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNTEtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjU4OmNvbmZpZyBBVEg5S19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01OS1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjYwOlx0ZGVwZW5kcyBvbiBBVEg5SyBcdTAwMjZcdTAwMjYgREVCVUdfRlMgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjYxOlx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNjItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo2OTpjb25maWcgQVRIOUtfU1RBVElPTl9TVEFUSVNUSUNTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03MC1cdGJvb2wgXCYjMzQ7RGV0YWlsZWQgc3RhdGlvbiBzdGF0aXN0aWNzXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3MTpcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IEFUSDlLX0RFQlVHRlMgXHUwMDI2XHUwMDI2IERFQlVHX0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03Mi1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NzY6Y29uZmlnIEFUSDlLX1RYOTlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIFRYOTkgdGVzdGluZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3ODpcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyBcdTAwMjZcdTAwMjYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03OS1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6OTY6Y29uZmlnIEFUSDlLX0RGU19DRVJUSUZJRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTk3LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIERGUyBzdXBwb3J0IGZvciBjZXJ0aWZpZWQgcGxhdGZvcm1zXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5ODpcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTktXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTU6Y29uZmlnIEFUSDlLX0RZTkFDS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTE2LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIEFDSyB0aW1lb3V0IGVzdGltYXRpb24gYWxnb3JpdGhtXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTc6XHRkZXBlbmRzIG9uIEFUSDlLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMTgtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMjQ6Y29uZmlnIEFUSDlLX1dPV1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTI1LVx0Ym9vbCBcJiMzNDtXYWtlIG9uIFdpcmVsZXNzIExBTiBzdXBwb3J0IChFWFBFUklNRU5UQUwpXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMjY6XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiBQTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTI3LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTMyOmNvbmZpZyBBVEg5S19SRktJTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayByZmtpbGwgc3VwcG9ydFwmIzM0OyBpZiBFWFBFUlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEzNDpcdGRlcGVuZHMgb24gQVRIOUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEzNTpcdGRlcGVuZHMgb24gUkZLSUxMPXkgfHwgUkZLSUxMPUFUSDlLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMzYtXHRkZWZhdWx0IHlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNDI6Y29uZmlnIEFUSDlLX0NIQU5ORUxfQ09OVEVYVFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTQzLVx0Ym9vbCBcJiMzNDtDaGFubmVsIENvbnRleHQgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTQ0Olx0ZGVwZW5kcyBvbiBBVEg5S1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTQ1LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTUxOmNvbmZpZyBBVEg5S19QQ09FTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTUyLVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIHN1cHBvcnQgZm9yIFBDIE9FTSBjYXJkc1wmIzM0OyBpZiBFWFBFUlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE1MzpcdGRlcGVuZHMgb24gQVRIOUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1NC1cdGRlZmF1bHQgeVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU2OmNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTctXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDlrIHBjaSBsb2FkZXIgZm9yIEVFUFJPTS1sZXNzIGNoaXBzXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTg6XHRkZXBlbmRzIG9uIEFUSDlLX1BDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTU5LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzUtXHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTc2Olx0c2VsZWN0IEFUSDlLX0hXXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNzc6XHRzZWxlY3QgQVRIOUtfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzgtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4OTpcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFx1MDAyNlx1MDAyNiBERUJVR19GU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTkwOlx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTkxLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE5NTpjb25maWcgQVRIOUtfSFdSTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE5Ni1cdGJvb2wgXCYjMzQ7UmFuZG9tIG51bWJlciBnZW5lcmF0b3Igc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTk3Olx0ZGVwZW5kcyBvbiBBVEg5SyBcdTAwMjZcdTAwMjYgKEhXX1JBTkRPTSA9IHkgfHwgSFdfUkFORE9NID0gQVRIOUspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTgtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDY6Y29uZmlnIEFUSDlLX0NPTU1PTl9TUEVDVFJBTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA3LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrL2F0aDlrX2h0YyBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjIwODpcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyB8fCBBVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA5LVx0c2VsZWN0IFJFTEFZXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM5OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IE1ha2VmaWxlOgoKKipBbmFseXppbmcgdGhlIEFUSDlLIGFuZCBBVEg5S19IVEMgQ29tcGlsYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGVgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBzcGVjaWZpYyBvYmplY3QgZmlsZXMgZ2V0IGNvbXBpbGVkIGRlcGVuZGluZyBvbiB3aGV0aGVyIHdlJiMzOTtyZSBidWlsZGluZyBmb3IgYSBzdGFuZGFyZCBBVEg5SyBkZXZpY2Ugb3IgdGhlIEFUSDlLX0hUQyB2YXJpYW50LiBUaGlzIGlzIGFsbCBhYm91dCBidWlsZCBjb25maWd1cmF0aW9uLCBhbmQgaG93IHRoZSBNYWtlZmlsZSBoYW5kbGVzIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGNhcmVmdWxseSBleGFtaW5lIHRoZSBydWxlcyBhbmQgYW55IGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgKGxpa2VseSB1c2luZyBgaWZkZWZgLCBgaWZuZXFgLCBvciBtYXliZSBzb21lIGNvbXBsZXggdmFyaWFibGUgbWFuaXB1bGF0aW9uKSB0byBtYXAgdGhlIG9iamVjdCBmaWxlcyB0byB0aGUgYXBwcm9wcmlhdGUgdGFyZ2V0LiBUaGUga2V5IGlzIHRvIGZpbmQgaG93IHRoZSBNYWtlZmlsZSBkaXN0aW5ndWlzaGVzIGJldHdlZW4gdGhlIHR3byBjb25maWd1cmF0aW9ucy4gSSBzdXNwZWN0IHRoZXJlIHdpbGwgYmUgYSBjbGVhcmx5IG5hbWVkIGNvbmRpdGlvbmFsIHZhcmlhYmxlIHRoYXQgZGlmZmVyZW50aWF0ZXMgYmV0d2VlbiBzdGFuZGFyZCBhbmQgSFRDIGRyaXZlcnMuIFVuZGVyc3RhbmRpbmcgdGhhdCBpcyB0aGUga2V5IHRvIHRyYWNpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgc2VlaW5nIHByZWNpc2VseSB3aGljaCBvYmplY3QgZmlsZXMgYXJlIGluY2x1ZGVkIGluIGVhY2ggYnVpbGQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDg6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eG1pdC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Mj1hdGg5ay15ICYjNDM7PVx0YmVhY29uLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNi1cdFx0cmVjdi5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NzpcdFx0eG1pdC5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtOC1cdFx0bGluay5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc3OAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIHRoZSBBdGhlcm9zIFdpcmVsZXNzIERyaXZlciBCdWlsZCBQcm9jZXNzKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgYXRoOWtgIGFuZCBgYXRoOWtfaHRjYCBkcml2ZXJzIGFyZSBiZWluZyBidWlsdCB3aXRoaW4gdGhlIGtlcm5lbC4gSXQgc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZGlnIGludG8gdGhlIGBNYWtlZmlsZWAgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2AsIGJlY2F1c2UgdGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBjb21tYW5kIGNlbnRlciBmb3IgdGhpcyBraW5kIG9mIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyB0aGUgYnVpbGQgc3lzdGVtIGRpZmZlcmVudGlhdGVzIGJldHdlZW4gYGF0aDlrYCBhbmQgYGF0aDlrX2h0Y2AuIFRoZXJlJiMzOTtzIHByb2JhYmx5IHNvbWUgY29uZGl0aW9uYWwgbG9naWMgb3IgdmFyaWFibGUgYXNzaWdubWVudCB3aXRoaW4gdGhhdCBgTWFrZWZpbGVgIHRoYXQgY29udHJvbHMgd2hpY2ggbW9kdWxlcyBnZXQgY29tcGlsZWQgYW5kIGxpbmtlZC4gSSYjMzk7bGwgbmVlZCB0byBwYXJzZSB0aHJvdWdoIHRoYXQgYW5kIHNlZSB3aGF0IGZsYWdzIG9yIGRlcGVuZGVuY2llcyBhcmUgYmVpbmcgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwODowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAgMjpcdGF0aDlrLXkgJiM0Mzs9XHRiZWFjb24ubyBcXFxuICAgMzpcdFx0XHRncGlvLm8gXFxcbiAgIDQ6XHRcdFx0aW5pdC5vIFxcXG4gICA1Olx0XHRcdG1haW4ubyBcXFxuICAgNjpcdFx0XHRyZWN2Lm8gXFxcbiAgIDc6XHRcdFx0eG1pdC5vIFxcXG4gICA4Olx0XHRcdGxpbmsubyBcXFxuICAgOTpcdFx0XHRhbnRlbm5hLm8gXFxcbiAgMTA6XHRcdFx0Y2hhbm5lbC5vXG4gIDExOlx0XG4gIDEyOlx0YXRoOWstJChDT05GSUdfQVRIOUtfQlRDT0VYX1NVUFBPUlQpICYjNDM7PSBtY2kub1xuICAxMzpcdGF0aDlrLSQoQ09ORklHX0FUSDlLX1BDSSkgJiM0Mzs9IHBjaS5vXG4gIDE0Olx0YXRoOWstJChDT05GSUdfQVRIOUtfQUhCKSAmIzQzOz0gYWhiLm9cbiAgMTU6XHRhdGg5ay0kKENPTkZJR19BVEg5S19ERlNfREVCVUdGUykgJiM0Mzs9IGRmc19kZWJ1Zy5vXG4gIDE2Olx0YXRoOWstJChDT05GSUdfQVRIOUtfREZTX0NFUlRJRklFRCkgJiM0Mzs9IGRmcy5vXG4gIDE3Olx0YXRoOWstJChDT05GSUdfQVRIOUtfVFg5OSkgJiM0Mzs9IHR4OTkub1xuICAxODpcdGF0aDlrLSQoQ09ORklHX0FUSDlLX1dPVykgJiM0Mzs9IHdvdy5vXG4gIDE5Olx0YXRoOWstJChDT05GSUdfQVRIOUtfSFdSTkcpICYjNDM7PSBybmcub1xuICAyMDpcdFxuICAyMTpcdGF0aDlrLSQoQ09ORklHX0FUSDlLX0RFQlVHRlMpICYjNDM7PSBkZWJ1Zy5vXG4gIDIyOlx0XG4gIDIzOlx0YXRoOWstJChDT05GSUdfQVRIOUtfU1RBVElPTl9TVEFUSVNUSUNTKSAmIzQzOz0gZGVidWdfc3RhLm9cbiAgMjQ6XHRcbiAgMjU6XHRvYmotJChDT05GSUdfQVRIOUspICYjNDM7PSBhdGg5ay5vXG4gIDI2Olx0XG4gIDI3Olx0YXRoOWtfaHcteTo9XHRcXFxuICAyODpcdFx0XHRhcjkwMDJfaHcubyBcXFxuICAyOTpcdFx0XHRhcjkwMDNfaHcubyBcXFxuICAzMDpcdFx0XHRody5vIFxcXG4gIDMxOlx0XHRcdGFyOTAwM19waHkubyBcXFxuICAzMjpcdFx0XHRhcjkwMDJfcGh5Lm8gXFxcbiAgMzM6XHRcdFx0YXI1MDA4X3BoeS5vIFxcXG4gIDM0Olx0XHRcdGFyOTAwMl9jYWxpYi5vIFxcXG4gIDM1Olx0XHRcdGFyOTAwM19jYWxpYi5vIFxcXG4gIDM2Olx0XHRcdGNhbGliLm8gXFxcbiAgMzc6XHRcdFx0ZWVwcm9tLm8gXFxcbiAgMzg6XHRcdFx0ZWVwcm9tX2RlZi5vIFxcXG4gIDM5Olx0XHRcdGVlcHJvbV80ay5vIFxcXG4gIDQwOlx0XHRcdGVlcHJvbV85Mjg3Lm8gXFxcbiAgNDE6XHRcdFx0YW5pLm8gXFxcbiAgNDI6XHRcdFx0bWFjLm8gXFxcbiAgNDM6XHRcdFx0YXI5MDAyX21hYy5vIFxcXG4gIDQ0Olx0XHRcdGFyOTAwM19tYWMubyBcXFxuICA0NTpcdFx0XHRhcjkwMDNfZWVwcm9tLm8gXFxcbiAgNDY6XHRcdFx0YXI5MDAzX3BhcHJkLm9cbiAgNDc6XHRcbiAgNDg6XHRhdGg5a19ody0kKENPTkZJR19BVEg5S19XT1cpICYjNDM7PSBhcjkwMDNfd293Lm9cbiAgNDk6XHRcbiAgNTA6XHRhdGg5a19ody0kKENPTkZJR19BVEg5S19CVENPRVhfU1VQUE9SVCkgJiM0Mzs9IGJ0Y29leC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA4OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4MjUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgYXRoOWsgRHJpdmVyKioKCk9rYXksIHNvIGBhdGg5ay5rb2AgaXMgYnVpbHQgd2hlbiBgQ09ORklHX0FUSDlLYCBpcyBlbmFibGVkLiBUaGF0IG1ha2VzIHNlbnNlLiBCdXQgd2FpdCBhIHNlY29uZC4uLiBgYXRoOWtgIGlzIHRoYXQgUENJL0FIQiBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciB0aG9zZSBBdGhlcm9zIDgwMi4xMW4gd2lyZWxlc3MgY2FyZHMsIHJpZ2h0PwoKUmlnaHQhIE5vdywgY2FuIEkgZXZlbiAqdGVzdCogb3IgKmZ1enoqIHRoaXMgdGhpbmcgZWZmZWN0aXZlbHkgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBzZXR1cCBsaWtlIFFFTVUgb3IgdXNpbmcgc3l6a2FsbGVyPyBUaGF0JiMzOTtzIHRoZSByZWFsIHF1ZXN0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBzeXprYWxsZXIsIG9yIHBlcmhhcHMgdGhlIG1hYzgwMjExIGh3c2ltLCBvciBldmVuIFVTQiwgb2ZmZXJzIGEgdmlhYmxlIHBhdGggdG8gcmVhY2ggdGhlIGBhdGg5a2AgZHJpdmVyLgoKSG1tLCB3aGF0IGFib3V0IGBhdGg5a19odGNgPyBEb2VzIGl0IGludGVyYWN0IHdpdGggb3IgcmVseSBvbiB0aGUgc2FtZSBpbmZyYXN0cnVjdHVyZSBvciBjb21wb25lbnRzIGFzIGBhdGg5a2A/IERvZXMgaXQgdXRpbGl6ZSBhbnkgb2YgdGhvc2UgKnkqIGZpbGVzPwoKVGltZSB0byBkaWcgaW50byB0aGUgTWFrZWZpbGUgYW5kIHNlZSB3aGF0IHRoZSBidWlsZCBzeXN0ZW0gcmV2ZWFscyBhYm91dCBgYXRoOWtfaHRjYCYjMzk7cyBkZXBlbmRlbmNpZXMgYW5kIGhvdyBpdCByZWxhdGVzIHRvIGBhdGg5a2AuIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwODowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNTE6XHRcdFx0XHRcdFx0ICAgYXI5MDAzX21jaS5vIFxcXG4gIDUyOlx0XHRcdFx0XHRcdCAgIGFyOTAwM19haWMub1xuICA1MzpcdFxuICA1NDpcdGF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX1BDT0VNKSAmIzQzOz0gYXI5MDAzX3J0dC5vXG4gIDU1Olx0XG4gIDU2Olx0YXRoOWtfaHctJChDT05GSUdfQVRIOUtfRFlOQUNLKSAmIzQzOz0gZHluYWNrLm9cbiAgNTc6XHRcbiAgNTg6XHRvYmotJChDT05GSUdfQVRIOUtfSFcpICYjNDM7PSBhdGg5a19ody5vXG4gIDU5Olx0XG4gIDYwOlx0b2JqLSQoQ09ORklHX0FUSDlLX0NPTU1PTikgJiM0Mzs9IGF0aDlrX2NvbW1vbi5vXG4gIDYxOlx0YXRoOWtfY29tbW9uLXk6PVx0Y29tbW9uLm8gXFxcbiAgNjI6XHRcdFx0XHRjb21tb24taW5pdC5vIFxcXG4gIDYzOlx0XHRcdFx0Y29tbW9uLWJlYWNvbi5vIFxcXG4gIDY0Olx0XG4gIDY1Olx0YXRoOWtfY29tbW9uLSQoQ09ORklHX0FUSDlLX0NPTU1PTl9ERUJVRykgJiM0Mzs9IGNvbW1vbi1kZWJ1Zy5vXG4gIDY2Olx0YXRoOWtfY29tbW9uLSQoQ09ORklHX0FUSDlLX0NPTU1PTl9TUEVDVFJBTCkgJiM0Mzs9IGNvbW1vbi1zcGVjdHJhbC5vXG4gIDY3Olx0XG4gIDY4Olx0YXRoOWtfaHRjLXkgJiM0Mzs9XHRodGNfaHN0Lm8gXFxcbiAgNjk6XHRcdFx0aGlmX3VzYi5vIFxcXG4gIDcwOlx0XHRcdHdtaS5vIFxcXG4gIDcxOlx0XHRcdGh0Y19kcnZfdHhyeC5vIFxcXG4gIDcyOlx0XHRcdGh0Y19kcnZfbWFpbi5vIFxcXG4gIDczOlx0XHRcdGh0Y19kcnZfYmVhY29uLm8gXFxcbiAgNzQ6XHRcdFx0aHRjX2Rydl9pbml0Lm8gXFxcbiAgNzU6XHRcdFx0aHRjX2Rydl9ncGlvLm9cbiAgNzY6XHRcbiAgNzc6XHRhdGg5a19odGMtJChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpICYjNDM7PSBodGNfZHJ2X2RlYnVnLm9cbiAgNzg6XHRcbiAgNzk6XHRvYmotJChDT05GSUdfQVRIOUtfSFRDKSAmIzQzOz0gYXRoOWtfaHRjLm9cbiAgODA6XHRcbiAgODE6XHRvYmotJChDT05GSUdfQVRIOUtfUENJX05PX0VFUFJPTSkgJiM0Mzs9IGF0aDlrX3BjaV9vd2xfbG9hZGVyLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDg6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc5MQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDQ5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEF0aGVyb3MgYXRoOWsgV2lyZWxlc3MgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBhdGg5a2Agd2lyZWxlc3MgZHJpdmVyJiMzOTtzIGBNYWtlZmlsZWAuIEkgc2VlIHRoYXQgYGF0aDlrLm9gIGluY2x1ZGVzIGB4bWl0Lm9gLCBhbmQgYGF0aDlrX2h0Yy5vYCBpbmNsdWRlcyBhIGJ1bmNoIG9mIG90aGVyIG1vZHVsZXMgcmVsYXRlZCB0byBIVEMsIFVTQiwgV01JLCBhbmQgc28gb24uIFRoZSBrZXkgb2JzZXJ2YXRpb24gaGVyZSBpcyB0aGF0IGB4bWl0Lm9gIGlzICpleGNsdXNpdmVseSogcGFydCBvZiBgYXRoOWsteWAuIFRoaXMgbWFrZXMgbWUgdGhpbmsgYWJvdXQgdGhlIGhhcmR3YXJlLiBJcyBgYXRoOWtgIGV4Y2x1c2l2ZWx5IGZvciBQQ0kgb3IgQUhCIGhhcmR3YXJlPwoKUmlnaHQsIGNvbmZpcm1lZC4gYGF0aDlrYCBpcyBQQ0kvQUhCLiBOb3cgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBjYW4gdGhpcyBiZSByZWFjaGVkIGluIGEgUUVNVSBlbnZpcm9ubWVudD8gQ29uc2lkZXJpbmcgc3RhbmRhcmQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIEF0aGVyb3MgYXRoOWsgUENJIHdpcmVsZXNzIGNhcmRzLCBpdCYjMzk7cyBzZWVtaW5nIHVubGlrZWx5LiAKCkFoLCB3YWl0ISBJIG5lZWQgdG8gcmUtZXZhbHVhdGUgdGhpcyBpbiB0aGUgY29udGV4dCBvZiB0aGUgcHJvbXB0JiMzOTtzIHN0cnVjdHVyYWwgdW5yZWFjaGFiaWxpdHkgY3JpdGVyaWEuIEl0IHNwZWNpZmljYWxseSBjYWxscyBvdXQgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMgYW5kIGRyaXZlcnMgZm9yIGhhcmR3YXJlIHRoYXQgaXNuJiMzOTt0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIElzIGBhdGg5a2Agc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlPyBJIG5lZWQgdG8gY29uc2lkZXIgaWYgdGhlcmUgYXJlIGFueSB2aXJ0dWFsIGludGVyZmFjZXMgb3Igc2ltdWxhdGlvbiBwYXRocy4KCk9rYXksIHNvIEkga25vdyBgbWFjODAyMTFfaHdzaW1gIGV4aXN0cywgYnV0IHRoYXQmIzM5O3MgYSAqc2VwYXJhdGUqIGRyaXZlci4gRG9lcyBpdCBpbnRlcmFjdCB3aXRoIGBhdGg5a2A/IE5vLCBpdCYjMzk7cyBpbmRlcGVuZGVudC4gV2hhdCBhYm91dCBVU0IgZW11bGF0aW9uPyBEb2VzIGEgVVNCIGdhZGdldCBvciBSYXcgR2FkZ2V0IHNldHVwIG9mZmVyIGEgcG90ZW50aWFsIHBhdGh3YXkgdG8gYGF0aDlrYD8gTm93IHRoZSBgYXRoOWtfaHRjYCBwb3J0aW9uIHNwcmluZ3MgdG8gbWluZC4gUmF3IEdhZGdldCBtaWdodCBhbGxvdyB1cyB0byBlbXVsYXRlIFVTQiBkZXZpY2VzLCB3aGljaCB0aGVuIG1pZ2h0IGFjY2VzcyBgYXRoOWtfaHRjYCwgYnV0IGFnYWluIHRoZSBjb3JlIGB4bWl0LmNgIGlzIE5PVCBwYXJ0IG9mIGBhdGg5a19odGNgISAKCkkmIzM5O20gbm93IGdvaW5nIHRvIHRyaXBsZS1jaGVjayB0aGF0IGB4bWl0LmNgIGlzIE9OTFkgZXZlciB1c2VkIGJ5IGBhdGg5ay5rb2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA4OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aF90eF9zZXR1cF9idWZmZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz03MD1zdGF0aWMgdm9pZCBhdGhfdHhfdXBkYXRlX2JhdyhzdHJ1Y3QgYXRoX2F0eF90aWQgKnRpZCwgc3RydWN0IGF0aF9idWYgKmJmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6NzE6c3RhdGljIHN0cnVjdCBhdGhfYnVmICphdGhfdHhfc2V0dXBfYnVmZmVyKHN0cnVjdCBhdGhfc29mdGMgKnNjLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy03Mi1cdFx0XHRcdFx0ICAgc3RydWN0IGF0aF90eHEgKnR4cSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTkzOD1hdGhfdHhfZ2V0X3RpZF9zdWJmcmFtZShzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IGF0aF90eHEgKnR4cSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTk1NS1cdFx0aWYgKCFmaS1cdTAwM2ViZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6OTU2Olx0XHRcdGJmID0gYXRoX3R4X3NldHVwX2J1ZmZlcihzYywgdHhxLCB0aWQsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTk1Ny1cdFx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MjE5Mj11OCBhdGhfdHhjaGFpbm1hc2tfcmVkdWN0aW9uKHN0cnVjdCBhdGhfc29mdGMgKnNjLCB1OCBjaGFpbm1hc2ssIHUzMiByYXRlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjIxMC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjIxMTpzdGF0aWMgc3RydWN0IGF0aF9idWYgKmF0aF90eF9zZXR1cF9idWZmZXIoc3RydWN0IGF0aF9zb2Z0YyAqc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTIyMTItXHRcdFx0XHRcdCAgIHN0cnVjdCBhdGhfdHhxICp0eHEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0yMzI4PWludCBhdGhfdHhfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yMzY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoyMzcwOlx0YmYgPSBhdGhfdHhfc2V0dXBfYnVmZmVyKHNjLCB0eHEsIHRpZCwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjM3MS1cdGlmICghYmYpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTIzOTQ9dm9pZCBhdGhfdHhfY2FicShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTI0MTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjI0MTg6XHRcdGJmID0gYXRoX3R4X3NldHVwX2J1ZmZlcihzYywgdHhjdGwudHhxLCBOVUxMLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yNDE5LVx0XHRpZiAoIWJmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MjkxOT1pbnQgYXRoOWtfdHg5OV9zZW5kKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjk0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6Mjk0NjpcdGJmID0gYXRoX3R4X3NldHVwX2J1ZmZlcihzYywgdHhjdGwtXHUwMDNldHhxLCBOVUxMLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yOTQ3LVx0aWYgKCFiZikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwODowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTY0OQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhhdDoKCioqSW52ZXN0aWdhdGluZyB0aGUgQXRoZXJvcyBXaXJlbGVzcyBEcml2ZXIgQ29kZSoqCgpSaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgdGFraW5nIGEgbG9vayBhdCBgcGNpLmNgIGFuZCBgYWhiLmNgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9gIGRpcmVjdG9yeS4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIHN1c3BlY3QgdGhlc2UgZmlsZXMgYXJlIHBpdm90YWwgaW4gdW5kZXJzdGFuZGluZyBob3cgdGhlIEF0aGVyb3MgQVI5ayBzZXJpZXMgd2lyZWxlc3MgY2hpcHNldCBpbnRlcmFjdHMgd2l0aCB0aGUgaG9zdCBzeXN0ZW0sIHNwZWNpZmljYWxseSB2aWEgdGhlIFBDSSBhbmQgQUhCIGJ1c2VzLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBkcml2ZXImIzM5O3Mgb3ZlcmFsbCBzdHJ1Y3R1cmUgYnkgY2hlY2tpbmcgdGhlc2UuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOgoKKiAgICoqSW5pdGlhbGl6YXRpb24gYW5kIHByb2JlIHJvdXRpbmVzOioqIEkgZXhwZWN0IGBwY2kuY2AgYW5kIGBhaGIuY2Agd2lsbCBjb250YWluIHRoZSBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIGRldGVjdGluZyB0aGUgaGFyZHdhcmUgZHVyaW5nIGJvb3QtdXAgb3IgaG90cGx1Z2dpbmcuIEkgd2FudCB0byBzZWUgaG93IHRoZSBkcml2ZXIgaWRlbnRpZmllcyB0aGUgc3BlY2lmaWMgQXRoZXJvcyBkZXZpY2UsIGFsbG9jYXRlcyByZXNvdXJjZXMgKG1lbW9yeSwgaW50ZXJydXB0cywgZXRjLiksIGFuZCBzZXRzIHVwIHRoZSBpbml0aWFsIGhhcmR3YXJlIHJlZ2lzdGVycy4KKiAgICoqQnVzLXNwZWNpZmljIGludGVyYWN0aW9uOioqIEkmIzM5O2xsIHplcm8gaW4gb24gdGhlIGJ1cy1zcGVjaWZpYyBjb2RlLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zOyB3aGVyZSB0aGUgUENJIGFuZCBBSEIgZnVuY3Rpb25zIGFyZSB1c2VkIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIGhhcmR3YXJlLiBJJiMzOTtsbCBiZSB3YXRjaGluZyBob3cgdGhlc2UgY29tbXVuaWNhdGUgdGhyb3VnaCBETUEuCiogICAqKkludGVycnVwdCBoYW5kbGluZzoqKiBJJiMzOTttIGludGVyZXN0ZWQgaW4gaG93IGludGVycnVwdCBoYW5kbGVycyBhcmUgc2V0IHVwIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMgdG8gcmVhZCBkYXRhIGFuZCBzZW5kIGNvbW1hbmRzLgoqICAgKipFcnJvciBoYW5kbGluZyBhbmQgcG93ZXIgbWFuYWdlbWVudDoqKiBJIHdhbnQgdG8gZ2xhbmNlIGF0IGhvdyB0aGUgZHJpdmVyIGRlYWxzIHdpdGggcG90ZW50aWFsIGVycm9ycyBkdXJpbmcgaGFyZHdhcmUgYWNjZXNzLCBkZXZpY2UgcmVzZXQsIGFuZCBwb3dlciBtYW5hZ2VtZW50IGZlYXR1cmVzLgoKRXNzZW50aWFsbHksIEkmIzM5O20gZXhwZWN0aW5nIHRvIGdhaW4gYW4gdW5kZXJzdGFuZGluZyBvZiB0aGUgbG93LWxldmVsIGJ1cyBpbnRlcmFjdGlvbiBhbmQgZ2V0IGEgZmlybSBncmFzcCBvbiB0aGUgY29yZSBjb250cm9sIGZsb3cgb2YgdGhpcyBkcml2ZXIuIFRoZXNlIGZpbGVzIGFyZSB0aGUgZXNzZW50aWFsIGJyaWRnZSBiZXR3ZWVuIHRoZSBBdGhlcm9zIGhhcmR3YXJlIGFuZCB0aGUgcmVzdCBvZiB0aGUgbmV0d29yayBzdGFjay4gSSYjMzk7bGwgYmUgZXhwZWN0aW5nIGxvdHMgb2YgcmVnaXN0ZXIgcmVhZHMgYW5kIHdyaXRlcyBhbmQgdGhlIHVzdWFsIERNQSBzZXR1cCBmb3IgZGF0YSB0cmFuc2Zlci4gSXQgd2lsbCBiZSBoZWxwZnVsIHRvIGVzdGFibGlzaCB0aGUgaGFyZHdhcmUgaW50ZXJhY3Rpb24gYmVmb3JlIGdvaW5nIGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA4OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9wY2lfZHJpdmVyfG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJ8bW9kdWxlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5a19wY2lfb3dsX2xvYWRlci5jPTIzMj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgb3dsX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWtfcGNpX293bF9sb2FkZXIuYy0yMzctfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5a19wY2lfb3dsX2xvYWRlci5jOjIzODptb2R1bGVfcGNpX2RyaXZlcihvd2xfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5a19wY2lfb3dsX2xvYWRlci5jLTIzOS1NT0RVTEVfQVVUSE9SKFwmIzM0O0NocmlzdGlhbiBMYW1wYXJ0ZXIgXHUwMDNjY2h1bmtlZXlAZ21haWwuY29tXHUwMDNlXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jPTExMzA9c3RhdGljIGludCBfX2luaXQgYXRoOWtfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTE1NS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjExNTY6bW9kdWxlX2luaXQoYXRoOWtfaW5pdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTExNTctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA4OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNDQ0CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgQXRoZXJvcyBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoaXMuIE15IGZvY3VzIGlzIG9uIHRoZSBgYXRoOWtgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGl0cyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmNgIGFuZCB6ZXJvIGluIG9uIHRoZSBgYXRoOWtfaW5pdGAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoaXMgYmVhc3QgZ2V0cyBvZmYgdGhlIGdyb3VuZC4gV2hhdCBhcmUgdGhlIGtleSBzdGVwcz8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIHJlZCBmbGFncyBJIGNhbiBzcG90IHF1aWNrbHk/IEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGhhcmR3YXJlIHByb2JpbmcsIHJlc291cmNlIGFsbG9jYXRpb24sIGFueSBjcml0aWNhbCBzZXR1cCBmb3IgdGhlIE1BQyBhbmQgUEhZLCBhbmQgaG93IGl0IGhhbmRsZXMgcG90ZW50aWFsIGVycm9ycyBkdXJpbmcgdGhlIHByb2Nlc3MuIFRoaXMgaW5pdGlhbCBwaGFzZSBpcyBjcnVjaWFsLCBhcyBhbnkgaXNzdWVzIGhlcmUgd2lsbCByaXBwbGUgdGhyb3VnaCB0aGUgZHJpdmVyJiMzOTtzIG9wZXJhdGlvbi4gSSB3YW50IHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB0aGlzIGluaXRpYWxpemF0aW9uIGZsb3csIGZyb20gc3RhcnQgdG8gZmluaXNoLCBzbyBJIGNhbiBiZXR0ZXIgdW5kZXJzdGFuZCB3aGVyZSB0byBsb29rIGluIGNhc2Ugb2YgbGF0ZXIgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwODowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzExMzA6XHRzdGF0aWMgaW50IF9faW5pdCBhdGg5a19pbml0KHZvaWQpXG4xMTMxOlx0e1xuMTEzMjpcdFx0aW50IGVycm9yO1xuMTEzMzpcdFxuMTEzNDpcdFx0ZXJyb3IgPSBhdGhfcGNpX2luaXQoKTtcbjExMzU6XHRcdGlmIChlcnJvciBcdTAwM2MgMCkge1xuMTEzNjpcdFx0XHRwcl9lcnIoXCYjMzQ7Tm8gUENJIGRldmljZXMgZm91bmQsIGRyaXZlciBub3QgaW5zdGFsbGVkXFxuXCYjMzQ7KTtcbjExMzc6XHRcdFx0ZXJyb3IgPSAtRU5PREVWO1xuMTEzODpcdFx0XHRnb3RvIGVycl9vdXQ7XG4xMTM5Olx0XHR9XG4xMTQwOlx0XG4xMTQxOlx0XHRlcnJvciA9IGF0aF9haGJfaW5pdCgpO1xuMTE0MjpcdFx0aWYgKGVycm9yIFx1MDAzYyAwKSB7XG4xMTQzOlx0XHRcdGVycm9yID0gLUVOT0RFVjtcbjExNDQ6XHRcdFx0Z290byBlcnJfcGNpX2V4aXQ7XG4xMTQ1Olx0XHR9XG4xMTQ2Olx0XG4xMTQ3Olx0XHRkbWlfY2hlY2tfc3lzdGVtKGF0aDlrX3F1aXJrcyk7XG4xMTQ4Olx0XG4xMTQ5Olx0XHRyZXR1cm4gMDtcbjExNTA6XHRcbjExNTE6XHQgZXJyX3BjaV9leGl0OlxuMTE1MjpcdFx0YXRoX3BjaV9leGl0KCk7XG4xMTUzOlx0IGVycl9vdXQ6XG4xMTU0Olx0XHRyZXR1cm4gZXJyb3I7XG4xMTU1Olx0fVxuMTE1NjpcdG1vZHVsZV9pbml0KGF0aDlrX2luaXQpO1xuMTE1NzpcdFxuMTE1ODpcdHN0YXRpYyB2b2lkIF9fZXhpdCBhdGg5a19leGl0KHZvaWQpXG4xMTU5Olx0e1xuMTE2MDpcdFx0aXNfYXRoOWtfdW5sb2FkZWQgPSB0cnVlO1xuMTE2MTpcdFx0YXRoX2FoYl9leGl0KCk7XG4xMTYyOlx0XHRhdGhfcGNpX2V4aXQoKTtcbjExNjM6XHRcdHByX2luZm8oXCYjMzQ7JXM6IERyaXZlciB1bmxvYWRlZFxcblwmIzM0OywgZGV2X2luZm8pO1xuMTE2NDpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDg6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxODEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBhdGg5ayBJbml0aWFsaXphdGlvbioqCgpSaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBgYXRoOWtgIGRyaXZlci4gU2VlbXMgbGlrZSBpdCYjMzk7cyBnZXR0aW5nIGtpY2tlZCBvZmYgd2l0aCBgYXRoX3BjaV9pbml0KClgIGFuZCBgYXRoX2FoYl9pbml0KClgLiBTdGFuZGFyZCBzdHVmZiwgdGhlIFBDSSBhbmQgQUhCIHZlcnNpb25zIG9mIHRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lcy4gR2l2ZW4gdGhlIHRhcmdldCBoYXJkd2FyZSwgSSYjMzk7bSBndWVzc2luZyB3ZSYjMzk7cmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBhIFBDSS1iYXNlZCBzeXN0ZW0sIGFzIEFIQiBpcyB1c2VkIGxlc3MuCgpMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBpbnRvIGBhdGhfcGNpX2luaXQoKWAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNvcmUgUENJLXNwZWNpZmljIHNldHVwIHdpbGwgYmUgaGFwcGVuaW5nLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyBkZXZpY2UgcHJvYmUsIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBhbnkgcG90ZW50aWFsIHF1aXJrcyByZWxhdGVkIHRvIHRoZSBBdGhlcm9zIGNoaXBzZXQgYW5kIHRoZSBQQ0kgYnVzLiBJJiMzOTttIGtlZW4gdG8gZXhhbWluZSB0aGUgYGF0aF9wY2lfaW5pdGAgZnVuY3Rpb24sIEkgaGF2ZSBhIGZlZWxpbmcgdGhlcmUgbWlnaHQgYmUgaXNzdWVzLiBJIHdhbnQgdG8gbG9vayBpbnRvIGl0cyBpbXBsZW1lbnRhdGlvbiBhbmQgc2VlIHdoYXQgaXQgaXMgZG9pbmcgc3BlY2lmaWNhbGx5LiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBzbyBsZXQmIzM5O3MgZ2V0IHN0YXJ0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA4OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aF9wY2lfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmg9MTEzOD12b2lkIGF0aDlrX3BzX3Jlc3RvcmUoc3RydWN0IGF0aF9zb2Z0YyAqc2MpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oLTExNDAtI2lmZGVmIENPTkZJR19BVEg5S19QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oOjExNDE6aW50IGF0aF9wY2lfaW5pdCh2b2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oLTExNDItdm9pZCBhdGhfcGNpX2V4aXQodm9pZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaC0xMTQzLSNlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaDoxMTQ0OnN0YXRpYyBpbmxpbmUgaW50IGF0aF9wY2lfaW5pdCh2b2lkKSB7IHJldHVybiAwOyB9O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTE0NS1zdGF0aWMgaW5saW5lIHZvaWQgYXRoX3BjaV9leGl0KHZvaWQpIHt9O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9MTEzMD1zdGF0aWMgaW50IF9faW5pdCBhdGg5a19pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0xMTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoxMTM0Olx0ZXJyb3IgPSBhdGhfcGNpX2luaXQoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTEzNS1cdGlmIChlcnJvciBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYz0xMDc1PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBhdGhfcGNpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcGNpLmMtMTA4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYzoxMDgzOmludCBhdGhfcGNpX2luaXQodm9pZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYy0xMDg0LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDg6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM5OTcKCQkJCQkJCW91dHB1dDogMTE4CgkJCQkJCQl0aG91Z2h0czogNzU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBQcm9wb3NlZCBQYXRjaCYjMzk7cyBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSB0aGUgbW9kaWZpY2F0aW9uIHRvIGBhdGhfdHhfc2V0dXBfYnVmZmVyYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNgLCBpcyBsaWtlbHkgKm5vdCogc3VpdGFibGUgZm9yIGZ1enppbmcgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudC4gTGV0JiMzOTtzIGRlbHZlIGludG8gdGhlIHJlYXNvbmluZy4KCkZpcnN0LCBJIHNlZSB0aGF0IHRoZSBgYXRoX3BjaV9kcml2ZXJgIGhhbmRsZXMgQXRoZXJvcyBQQ0kvUENJZSBjYXJkcywgYW5kIGBhdGhfYWhiX2RyaXZlcmAgaXMgZm9yIHRoZSBBSEIgYnVzIChRdWFsY29tbSBBdGhlcm9zIFNvQykuIE5laXRoZXIgb2YgdGhlc2UgaXMgdHlwaWNhbGx5IGVtdWxhdGVkIHdpdGhpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIERpZ2dpbmcgYSBiaXQgZGVlcGVyLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBgYXRoOWtgIGlzIHRoZSBkcml2ZXIgaW4gcXVlc3Rpb24sIGRlc2lnbmVkIGZvciA4MDIuMTFuIFBDSS9BSEIgaGFyZHdhcmUuCgpNeSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBndWlkZWxpbmVzIGlzIGNydWNpYWwgaGVyZS4gU2VjdGlvbiAyIGhpZ2hsaWdodHMgdW5yZWFjaGFibGUgaGFyZHdhcmUsIHNwZWNpZmljYWxseSBtZW50aW9uaW5nIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIGFuZCBHUFUgZHJpdmVycy4gIFRoZXNlIHJlcXVpcmUgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLCB3aGljaCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUuIFNlY3Rpb24gMSByZWluZm9yY2VzIHRoaXMg4oCTIHJlYWNoYWJpbGl0eSBpcyB0aGUgcHJpbWFyeSBnYXRlLiBJZiB0aGUgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUsIGl0IHNob3VsZG4mIzM5O3QgYmUgZnV6emVkLgoKVGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyBgYXRoX3R4X3NldHVwX2J1ZmZlcmAsIGEgY29yZSBmdW5jdGlvbiB3aXRoaW4gdGhlIGBhdGg5a2AgZHJpdmVyLiAgVGhlIGNyaXRpY2FsIHBvaW50IGlzIHRoYXQgdGhpcyBkcml2ZXIgaXMgZm9yICpwaHlzaWNhbCogQXRoZXJvcyA4MDIuMTFuIFBDSS9QQ0llIGFuZCBBSEIgZGV2aWNlcy4gV2hpbGUgZHJpdmVycyBsaWtlIGBhdGg5a19odGNgIGZvciBVU0Igd2lyZWxlc3MgZGV2aWNlcyBvciBgbWFjODAyMTFfaHdzaW1gIGZvciB2aXJ0dWFsIGRldmljZXMgYXJlIGZ1enplYWJsZSwgdGhlIGBhdGg5a2AgY29kZSBwYXRoIGlzIG5vdC4KClRoZSBmdXp6aW5nLXJlbGF0ZWQgbWV0YWRhdGEgY29uZmlybXMgbXkgc3VzcGljaW9uczogYFdvcnRoRnV6emluZzogZmFsc2VgLCBgRW5hYmxlQ29uZmlnczogbnVsbCAvIFtdYCwgYW5kIGBGb2N1c1N5bWJvbHM6IFtdYC4gIFRoZSBwcm92aWRlZCByZWFzb25pbmcgaXMgc3BvdC1vbjogIHRoZSBsYWNrIG9mIGVtdWxhdGlvbiBmb3IgdGhlc2UgcGh5c2ljYWwgUENJZS9BSEIgd2lyZWxlc3MgZGV2aWNlcyBpbiBzdGFuZGFyZCBlbnZpcm9ubWVudHMgbWFrZXMgdGhpcyBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4KClRoZXJlZm9yZSwgSSYjMzk7bSBjb25maWRlbnQgaW4gY29uY2x1ZGluZyB0aGF0IHRoaXMgcGF0Y2ggaXNuJiMzOTt0IHN1aXRhYmxlIGZvciBzdGFuZGFyZCBmdXp6aW5nIGVmZm9ydHMuIEkgc2hvdWxkIHByb2NlZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwODowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGNvZGUgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYyBpcyBwYXJ0IG9mIHRoZSBhdGg5ayBkcml2ZXIgZm9yIHBoeXNpY2FsIEF0aGVyb3MgODAyLjExbiBQQ0kvQUhCIHdpcmVsZXNzIGFkYXB0ZXJzLiBCZWNhdXNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChlLmcuIFFFTVUvR0NFKSBkbyBub3QgZW11bGF0ZSBhdGg5ayBQQ0kvQUhCIGhhcmR3YXJlLCB0aGlzIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jIGlzIHBhcnQgb2YgdGhlIGF0aDlrIGRyaXZlciBmb3IgcGh5c2ljYWwgQXRoZXJvcyA4MDIuMTFuIFBDSS9BSEIgd2lyZWxlc3MgYWRhcHRlcnMuIEJlY2F1c2Ugc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4gUUVNVS9HQ0UpIGRvIG5vdCBlbXVsYXRlIGF0aDlrIFBDSS9BSEIgaGFyZHdhcmUsIHRoaXMgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwODowNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDZUMDg6MDU6NDMuODIwMTMwODY4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk2MzE0NjY4MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBjb2RlIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMgaXMgcGFydCBvZiB0aGUgYXRoOWsgZHJpdmVyIGZvciBwaHlzaWNhbCBBdGhlcm9zIDgwMi4xMW4gUENJL0FIQiB3aXJlbGVzcyBhZGFwdGVycy4gQmVjYXVzZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoZS5nLiBRRU1VL0dDRSkgZG8gbm90IGVtdWxhdGUgYXRoOWsgUENJL0FIQiBoYXJkd2FyZSwgdGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA4OjA1OjQzLjgyMDEzNzIwOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc3NzAwNjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOTFiNWUwZmI2ZTUwNzNlZjdkZmUxNmYzMmU4MWE0ZmVlMjlkZGZhNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCA2IDA4OjA1OjQyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jXFxuaW5kZXggODlkOGIzMTc4Nzg0Ni4uMTZiNjQ5MDhlOGRmYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuY1xcbkBAIC0yMjU1LDYgKzIyNTUsMTEgQEAgc3RhdGljIHN0cnVjdCBhdGhfYnVmICphdGhfdHhfc2V0dXBfYnVmZmVyKHN0cnVjdCBhdGhfc29mdGMgKnNjLFxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKGZpLVxcdTAwM2ViZikge1xcbitcXHRcXHRmaS1cXHUwMDNlYmYtXFx1MDAzZWJmX21wZHUgPSBOVUxMO1xcbitcXHRcXHRmaS1cXHUwMDNlYmYtXFx1MDAzZWJmX2J1Zl9hZGRyID0gMDtcXG4rXFx0XFx0YXRoX3R4X3JldHVybl9idWZmZXIoc2MsIGZpLVxcdTAwM2ViZik7XFxuK1xcdH1cXG4gXFx0ZmktXFx1MDAzZWJmID0gYmY7XFxuIFxcbiBcXHRyZXR1cm4gYmY7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA4OjA1OjQ0LjQ5ODc3Njk1OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6Mzg5NTI4MDcxNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYyBpcyBwYXJ0IG9mIHRoZSBhdGg5ayBkcml2ZXIgZm9yIHBoeXNpY2FsIEF0aGVyb3MgODAyLjExbiBQQ0kvQUhCIHdpcmVsZXNzIGFkYXB0ZXJzLiBCZWNhdXNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChlLmcuIFFFTVUvR0NFKSBkbyBub3QgZW11bGF0ZSBhdGg5ayBQQ0kvQUhCIGhhcmR3YXJlLCB0aGlzIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5MWI1ZTBmYjZlNTA3M2VmN2RmZTE2ZjMyZTgxYTRmZWUyOWRkZmE1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAwODowNTo0MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jXG5pbmRleCA4OWQ4YjMxNzg3ODQ2Li4xNmI2NDkwOGU4ZGZhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuY1xuQEAgLTIyNTUsNiArMjI1NSwxMSBAQCBzdGF0aWMgc3RydWN0IGF0aF9idWYgKmF0aF90eF9zZXR1cF9idWZmZXIoc3RydWN0IGF0aF9zb2Z0YyAqc2MsXG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuK1x0aWYgKGZpLVx1MDAzZWJmKSB7XG4rXHRcdGZpLVx1MDAzZWJmLVx1MDAzZWJmX21wZHUgPSBOVUxMO1xuK1x0XHRmaS1cdTAwM2ViZi1cdTAwM2ViZl9idWZfYWRkciA9IDA7XG4rXHRcdGF0aF90eF9yZXR1cm5fYnVmZmVyKHNjLCBmaS1cdTAwM2ViZik7XG4rXHR9XG4gXHRmaS1cdTAwM2ViZiA9IGJmO1xuIFxuIFx0cmV0dXJuIGJmO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDg6MDU6NDQuNDk4Nzc5Mjc5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODczMzQ0ODMzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGFzc2VzcyBpZiB0aGlzIHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jYCBpcyB3b3J0aCBwdXJzdWluZyB3aXRoIHN5emthbGxlci4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZS4gSSdsbCB1c2UgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIHRvIGV4YW1pbmUgdGhlIGNoYW5nZXMgYW5kIHRoZSBzdXJyb3VuZGluZyBjb2RlIGZvciBzb21lIGNvbnRleHQuIFJpZ2h0LCBzbyB0aGlzIGlzIGFib3V0IHRoZSBhdGg5ayBkcml2ZXIuIEFoLCB0aGUgQXRoZXJvcyA4MDIuMTFuIHdpcmVsZXNzIGRyaXZlci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGF0dGFjayBzdXJmYWNlLiBDYW4gSSByZWFjaCB0aGlzIHRoaW5nIHRocm91Z2ggc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gb3IgaXMgdGhpcyBsb2NrZWQgYmVoaW5kIHNwZWNpZmljIGhhcmR3YXJlIGFjY2Vzcz8gV2FpdCwgSSB0aGluayBJIHJlbWVtYmVyLi4uIGF0aDlrIGlzIFBDSSwgYW5kIEFIQi4gQW5kIHdhc24ndCB0aGVyZSBhbiBhdGg5a19odGMgdGhhdCB1c2VkIFVTQj9cblxuVGhpcyBnZXRzIGNvbXBsaWNhdGVkIHF1aWNrbHksIGlzIHRoZSBjb2RlIHVzZWQgYnkgYXRoOWtfaHRjIHJlbGF0ZWQgdG8gdGhlIHNhbWUgZmlsZT8gSSBuZWVkIHRvIGNsYXJpZnkgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGF0aDlrIGFuZCBhdGg5a19odGMuIFNvLCBpcyBgYXRoOWsveG1pdC5jYCB1c2VkIGJ5IGJvdGg/IE9yIGlzIGBhdGg5a2AgUENJL0FIQiBvbmx5PyBJcyB0aGVyZSBzb21lIGtpbmQgb2YgZW11bGF0aW9uIEkgY2FuIHRha2UgYWR2YW50YWdlIG9mPyBDYW4gSSBqdXN0IHJ1biB0aGlzIG9uIGEgVVNCIGdhZGdldCwgb3Igd2lsbCBJIG5lZWQgYSByZWFsIHBpZWNlIG9mIGhhcmR3YXJlPyBBbHJpZ2h0LCBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBLY29uZmlnIHRvIHNvcnQgdGhpcyBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MDMsIk91dHB1dFRva2VucyI6NzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwODowNTo1My4yMzIyMzY5MThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc2NDUzNjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aF90eF9zZXR1cF9idWZmZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTcwPXN0YXRpYyB2b2lkIGF0aF90eF91cGRhdGVfYmF3KHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6NzE6c3RhdGljIHN0cnVjdCBhdGhfYnVmICphdGhfdHhfc2V0dXBfYnVmZmVyKHN0cnVjdCBhdGhfc29mdGMgKnNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtNzItXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGF0aF90eHEgKnR4cSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9OTM4PWF0aF90eF9nZXRfdGlkX3N1YmZyYW1lKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy05NTUtXFx0XFx0aWYgKCFmaS1cXHUwMDNlYmYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzo5NTY6XFx0XFx0XFx0YmYgPSBhdGhfdHhfc2V0dXBfYnVmZmVyKHNjLCB0eHEsIHRpZCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTk1Ny1cXHRcXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTIxOTI9dTggYXRoX3R4Y2hhaW5tYXNrX3JlZHVjdGlvbihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgdTggY2hhaW5tYXNrLCB1MzIgcmF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjIxMC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjIyMTE6c3RhdGljIHN0cnVjdCBhdGhfYnVmICphdGhfdHhfc2V0dXBfYnVmZmVyKHN0cnVjdCBhdGhfc29mdGMgKnNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjIxMi1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoX3R4cSAqdHhxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0yMzI4PWludCBhdGhfdHhfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTIzNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoyMzcwOlxcdGJmID0gYXRoX3R4X3NldHVwX2J1ZmZlcihzYywgdHhxLCB0aWQsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yMzcxLVxcdGlmICghYmYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MjM5ND12b2lkIGF0aF90eF9jYWJxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yNDE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjQxODpcXHRcXHRiZiA9IGF0aF90eF9zZXR1cF9idWZmZXIoc2MsIHR4Y3RsLnR4cSwgTlVMTCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTI0MTktXFx0XFx0aWYgKCFiZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MjkxOT1pbnQgYXRoOWtfdHg5OV9zZW5kKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yOTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6Mjk0NjpcXHRiZiA9IGF0aF90eF9zZXR1cF9idWZmZXIoc2MsIHR4Y3RsLVxcdTAwM2V0eHEsIE5VTEwsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yOTQ3LVxcdGlmICghYmYpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDg6MDU6NTMuNTA4Njk1NjI0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MDA0OTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkFUSDlLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Mjpjb25maWcgQVRIOUtfSFdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NDpjb25maWcgQVRIOUtfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTYtXFx0c2VsZWN0IEFUSF9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3OmNvbmZpZyBBVEg5S19DT01NT05fREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy04LVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5OmNvbmZpZyBBVEg5S19ERlNfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEwLVxcdGRlZl9ib29sIHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTpcXHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXFx1MDAyNlxcdTAwMjYgQVRIOUtfREZTX0NFUlRJRklFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEzOmNvbmZpZyBBVEg5S19CVENPRVhfU1VQUE9SVFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0LVxcdGJvb2wgXFxcIkF0aGVyb3MgYmx1ZXRvb3RoIGNvZXhpc3RlbmNlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU6XFx0ZGVwZW5kcyBvbiAoQVRIOUsgfHwgQVRIOUtfSFRDKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE2LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjE6Y29uZmlnIEFUSDlLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjItXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgODAyLjExbiB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjQtXFx0c2VsZWN0IE1BQzgwMjExX0xFRFMgaWYgTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyNTpcXHRzZWxlY3QgQVRIOUtfSFdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyNjpcXHRzZWxlY3QgQVRIOUtfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Mzk6Y29uZmlnIEFUSDlLX1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQwLVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgUENJL1BDSWUgYnVzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNDEtXFx0ZGVmYXVsdCB5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NDI6XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00My1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo0ODpjb25maWcgQVRIOUtfQUhCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNDktXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBBSEIgYnVzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NTA6XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBPRlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTUxLVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NTg6Y29uZmlnIEFUSDlLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01OS1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIGRlYnVnZ2luZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo2MDpcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo2MTpcXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNjItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Njk6Y29uZmlnIEFUSDlLX1NUQVRJT05fU1RBVElTVElDU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTcwLVxcdGJvb2wgXFxcIkRldGFpbGVkIHN0YXRpb24gc3RhdGlzdGljc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3MTpcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IEFUSDlLX0RFQlVHRlMgXFx1MDAyNlxcdTAwMjYgREVCVUdfRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03Mi1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjc2OmNvbmZpZyBBVEg5S19UWDk5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzctXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBUWDk5IHRlc3Rpbmcgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3ODpcXHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzktXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy05NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5Njpjb25maWcgQVRIOUtfREZTX0NFUlRJRklFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTk3LVxcdGJvb2wgXFxcIkF0aGVyb3MgREZTIHN1cHBvcnQgZm9yIGNlcnRpZmllZCBwbGF0Zm9ybXNcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6OTg6XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy05OS1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTExNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTU6Y29uZmlnIEFUSDlLX0RZTkFDS1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTExNi1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIEFDSyB0aW1lb3V0IGVzdGltYXRpb24gYWxnb3JpdGhtXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjExNzpcXHRkZXBlbmRzIG9uIEFUSDlLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTE4LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEyNDpjb25maWcgQVRIOUtfV09XXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTI1LVxcdGJvb2wgXFxcIldha2Ugb24gV2lyZWxlc3MgTEFOIHN1cHBvcnQgKEVYUEVSSU1FTlRBTClcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTI2OlxcdGRlcGVuZHMgb24gQVRIOUsgXFx1MDAyNlxcdTAwMjYgUE1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMjctXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTMyOmNvbmZpZyBBVEg5S19SRktJTExcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMzMtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayByZmtpbGwgc3VwcG9ydFxcXCIgaWYgRVhQRVJUXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTM0OlxcdGRlcGVuZHMgb24gQVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMzU6XFx0ZGVwZW5kcyBvbiBSRktJTEw9eSB8fCBSRktJTEw9QVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMzYtXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTQyOmNvbmZpZyBBVEg5S19DSEFOTkVMX0NPTlRFWFRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNDMtXFx0Ym9vbCBcXFwiQ2hhbm5lbCBDb250ZXh0IHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTQ0OlxcdGRlcGVuZHMgb24gQVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNDUtXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTUxOmNvbmZpZyBBVEg5S19QQ09FTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1Mi1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIHN1cHBvcnQgZm9yIFBDIE9FTSBjYXJkc1xcXCIgaWYgRVhQRVJUXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTUzOlxcdGRlcGVuZHMgb24gQVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTQtXFx0ZGVmYXVsdCB5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE1Njpjb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1Ny1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGg5ayBwY2kgbG9hZGVyIGZvciBFRVBST00tbGVzcyBjaGlwc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTg6XFx0ZGVwZW5kcyBvbiBBVEg5S19QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTktXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzUtXFx0c2VsZWN0IE1BQzgwMjExX0xFRFMgaWYgTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNzY6XFx0c2VsZWN0IEFUSDlLX0hXXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTc3OlxcdHNlbGVjdCBBVEg5S19DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4Nzpjb25maWcgQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5a19odGMgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4OTpcXHRkZXBlbmRzIG9uIEFUSDlLX0hUQyBcXHUwMDI2XFx1MDAyNiBERUJVR19GU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE5MDpcXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTkxLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxOTU6Y29uZmlnIEFUSDlLX0hXUk5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTk2LVxcdGJvb2wgXFxcIlJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTk3OlxcdGRlcGVuZHMgb24gQVRIOUsgXFx1MDAyNlxcdTAwMjYgKEhXX1JBTkRPTSA9IHkgfHwgSFdfUkFORE9NID0gQVRIOUspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTk4LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjIwNjpjb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA3LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDg6XFx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA5LVxcdHNlbGVjdCBSRUxBWVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwODowNTo1My41NjU3MTIyODRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTg4MTc3MTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgTWFrZWZpbGU6XG5cbioqQW5hbHl6aW5nIHRoZSBBVEg5SyBhbmQgQVRIOUtfSFRDIENvbXBpbGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIHNwZWNpZmljIG9iamVjdCBmaWxlcyBnZXQgY29tcGlsZWQgZGVwZW5kaW5nIG9uIHdoZXRoZXIgd2UncmUgYnVpbGRpbmcgZm9yIGEgc3RhbmRhcmQgQVRIOUsgZGV2aWNlIG9yIHRoZSBBVEg5S19IVEMgdmFyaWFudC4gVGhpcyBpcyBhbGwgYWJvdXQgYnVpbGQgY29uZmlndXJhdGlvbiwgYW5kIGhvdyB0aGUgTWFrZWZpbGUgaGFuZGxlcyBjb25kaXRpb25hbCBjb21waWxhdGlvbi4gSSdsbCBuZWVkIHRvIGNhcmVmdWxseSBleGFtaW5lIHRoZSBydWxlcyBhbmQgYW55IGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgKGxpa2VseSB1c2luZyBgaWZkZWZgLCBgaWZuZXFgLCBvciBtYXliZSBzb21lIGNvbXBsZXggdmFyaWFibGUgbWFuaXB1bGF0aW9uKSB0byBtYXAgdGhlIG9iamVjdCBmaWxlcyB0byB0aGUgYXBwcm9wcmlhdGUgdGFyZ2V0LiBUaGUga2V5IGlzIHRvIGZpbmQgaG93IHRoZSBNYWtlZmlsZSBkaXN0aW5ndWlzaGVzIGJldHdlZW4gdGhlIHR3byBjb25maWd1cmF0aW9ucy4gSSBzdXNwZWN0IHRoZXJlIHdpbGwgYmUgYSBjbGVhcmx5IG5hbWVkIGNvbmRpdGlvbmFsIHZhcmlhYmxlIHRoYXQgZGlmZmVyZW50aWF0ZXMgYmV0d2VlbiBzdGFuZGFyZCBhbmQgSFRDIGRyaXZlcnMuIFVuZGVyc3RhbmRpbmcgdGhhdCBpcyB0aGUga2V5IHRvIHRyYWNpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgc2VlaW5nIHByZWNpc2VseSB3aGljaCBvYmplY3QgZmlsZXMgYXJlIGluY2x1ZGVkIGluIGVhY2ggYnVpbGQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczOTksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDg6MDU6NTUuNzUzODkyMDI1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMzc3MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhtaXQub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT0yPWF0aDlrLXkgKz1cXHRiZWFjb24ubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNi1cXHRcXHRyZWN2Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3OlxcdFxcdHhtaXQubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTgtXFx0XFx0bGluay5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDg6MDU6NTUuODM2Mjc0OTM0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI1MjEwMjUzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgdGhlIEF0aGVyb3MgV2lyZWxlc3MgRHJpdmVyIEJ1aWxkIFByb2Nlc3MqKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgYXRoOWtgIGFuZCBgYXRoOWtfaHRjYCBkcml2ZXJzIGFyZSBiZWluZyBidWlsdCB3aXRoaW4gdGhlIGtlcm5lbC4gSXQgc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZGlnIGludG8gdGhlIGBNYWtlZmlsZWAgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2AsIGJlY2F1c2UgdGhhdCdzIHVzdWFsbHkgdGhlIGNvbW1hbmQgY2VudGVyIGZvciB0aGlzIGtpbmQgb2YgYnVpbGQgY29uZmlndXJhdGlvbi4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhlIGJ1aWxkIHN5c3RlbSBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIGBhdGg5a2AgYW5kIGBhdGg5a19odGNgLiBUaGVyZSdzIHByb2JhYmx5IHNvbWUgY29uZGl0aW9uYWwgbG9naWMgb3IgdmFyaWFibGUgYXNzaWdubWVudCB3aXRoaW4gdGhhdCBgTWFrZWZpbGVgIHRoYXQgY29udHJvbHMgd2hpY2ggbW9kdWxlcyBnZXQgY29tcGlsZWQgYW5kIGxpbmtlZC4gSSdsbCBuZWVkIHRvIHBhcnNlIHRocm91Z2ggdGhhdCBhbmQgc2VlIHdoYXQgZmxhZ3Mgb3IgZGVwZW5kZW5jaWVzIGFyZSBiZWluZyB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Nzc4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDg6MDU6NTguMDg4MzgwOTQ2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5MTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xcbiAgIDI6XFx0YXRoOWsteSArPVxcdGJlYWNvbi5vIFxcXFxcXG4gICAzOlxcdFxcdFxcdGdwaW8ubyBcXFxcXFxuICAgNDpcXHRcXHRcXHRpbml0Lm8gXFxcXFxcbiAgIDU6XFx0XFx0XFx0bWFpbi5vIFxcXFxcXG4gICA2OlxcdFxcdFxcdHJlY3YubyBcXFxcXFxuICAgNzpcXHRcXHRcXHR4bWl0Lm8gXFxcXFxcbiAgIDg6XFx0XFx0XFx0bGluay5vIFxcXFxcXG4gICA5OlxcdFxcdFxcdGFudGVubmEubyBcXFxcXFxuICAxMDpcXHRcXHRcXHRjaGFubmVsLm9cXG4gIDExOlxcdFxcbiAgMTI6XFx0YXRoOWstJChDT05GSUdfQVRIOUtfQlRDT0VYX1NVUFBPUlQpICs9IG1jaS5vXFxuICAxMzpcXHRhdGg5ay0kKENPTkZJR19BVEg5S19QQ0kpICs9IHBjaS5vXFxuICAxNDpcXHRhdGg5ay0kKENPTkZJR19BVEg5S19BSEIpICs9IGFoYi5vXFxuICAxNTpcXHRhdGg5ay0kKENPTkZJR19BVEg5S19ERlNfREVCVUdGUykgKz0gZGZzX2RlYnVnLm9cXG4gIDE2OlxcdGF0aDlrLSQoQ09ORklHX0FUSDlLX0RGU19DRVJUSUZJRUQpICs9IGRmcy5vXFxuICAxNzpcXHRhdGg5ay0kKENPTkZJR19BVEg5S19UWDk5KSArPSB0eDk5Lm9cXG4gIDE4OlxcdGF0aDlrLSQoQ09ORklHX0FUSDlLX1dPVykgKz0gd293Lm9cXG4gIDE5OlxcdGF0aDlrLSQoQ09ORklHX0FUSDlLX0hXUk5HKSArPSBybmcub1xcbiAgMjA6XFx0XFxuICAyMTpcXHRhdGg5ay0kKENPTkZJR19BVEg5S19ERUJVR0ZTKSArPSBkZWJ1Zy5vXFxuICAyMjpcXHRcXG4gIDIzOlxcdGF0aDlrLSQoQ09ORklHX0FUSDlLX1NUQVRJT05fU1RBVElTVElDUykgKz0gZGVidWdfc3RhLm9cXG4gIDI0OlxcdFxcbiAgMjU6XFx0b2JqLSQoQ09ORklHX0FUSDlLKSArPSBhdGg5ay5vXFxuICAyNjpcXHRcXG4gIDI3OlxcdGF0aDlrX2h3LXk6PVxcdFxcXFxcXG4gIDI4OlxcdFxcdFxcdGFyOTAwMl9ody5vIFxcXFxcXG4gIDI5OlxcdFxcdFxcdGFyOTAwM19ody5vIFxcXFxcXG4gIDMwOlxcdFxcdFxcdGh3Lm8gXFxcXFxcbiAgMzE6XFx0XFx0XFx0YXI5MDAzX3BoeS5vIFxcXFxcXG4gIDMyOlxcdFxcdFxcdGFyOTAwMl9waHkubyBcXFxcXFxuICAzMzpcXHRcXHRcXHRhcjUwMDhfcGh5Lm8gXFxcXFxcbiAgMzQ6XFx0XFx0XFx0YXI5MDAyX2NhbGliLm8gXFxcXFxcbiAgMzU6XFx0XFx0XFx0YXI5MDAzX2NhbGliLm8gXFxcXFxcbiAgMzY6XFx0XFx0XFx0Y2FsaWIubyBcXFxcXFxuICAzNzpcXHRcXHRcXHRlZXByb20ubyBcXFxcXFxuICAzODpcXHRcXHRcXHRlZXByb21fZGVmLm8gXFxcXFxcbiAgMzk6XFx0XFx0XFx0ZWVwcm9tXzRrLm8gXFxcXFxcbiAgNDA6XFx0XFx0XFx0ZWVwcm9tXzkyODcubyBcXFxcXFxuICA0MTpcXHRcXHRcXHRhbmkubyBcXFxcXFxuICA0MjpcXHRcXHRcXHRtYWMubyBcXFxcXFxuICA0MzpcXHRcXHRcXHRhcjkwMDJfbWFjLm8gXFxcXFxcbiAgNDQ6XFx0XFx0XFx0YXI5MDAzX21hYy5vIFxcXFxcXG4gIDQ1OlxcdFxcdFxcdGFyOTAwM19lZXByb20ubyBcXFxcXFxuICA0NjpcXHRcXHRcXHRhcjkwMDNfcGFwcmQub1xcbiAgNDc6XFx0XFxuICA0ODpcXHRhdGg5a19ody0kKENPTkZJR19BVEg5S19XT1cpICs9IGFyOTAwM193b3cub1xcbiAgNDk6XFx0XFxuICA1MDpcXHRhdGg5a19ody0kKENPTkZJR19BVEg5S19CVENPRVhfU1VQUE9SVCkgKz0gYnRjb2V4Lm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwODowNTo1OC4wODg0OTI4NDZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjU4OTYyOTk2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHRoZSBhdGg5ayBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBgYXRoOWsua29gIGlzIGJ1aWx0IHdoZW4gYENPTkZJR19BVEg5S2AgaXMgZW5hYmxlZC4gVGhhdCBtYWtlcyBzZW5zZS4gQnV0IHdhaXQgYSBzZWNvbmQuLi4gYGF0aDlrYCBpcyB0aGF0IFBDSS9BSEIgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgdGhvc2UgQXRoZXJvcyA4MDIuMTFuIHdpcmVsZXNzIGNhcmRzLCByaWdodD9cblxuUmlnaHQhIE5vdywgY2FuIEkgZXZlbiAqdGVzdCogb3IgKmZ1enoqIHRoaXMgdGhpbmcgZWZmZWN0aXZlbHkgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBzZXR1cCBsaWtlIFFFTVUgb3IgdXNpbmcgc3l6a2FsbGVyPyBUaGF0J3MgdGhlIHJlYWwgcXVlc3Rpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHN5emthbGxlciwgb3IgcGVyaGFwcyB0aGUgbWFjODAyMTEgaHdzaW0sIG9yIGV2ZW4gVVNCLCBvZmZlcnMgYSB2aWFibGUgcGF0aCB0byByZWFjaCB0aGUgYGF0aDlrYCBkcml2ZXIuXG5cbkhtbSwgd2hhdCBhYm91dCBgYXRoOWtfaHRjYD8gRG9lcyBpdCBpbnRlcmFjdCB3aXRoIG9yIHJlbHkgb24gdGhlIHNhbWUgaW5mcmFzdHJ1Y3R1cmUgb3IgY29tcG9uZW50cyBhcyBgYXRoOWtgPyBEb2VzIGl0IHV0aWxpemUgYW55IG9mIHRob3NlICp5KiBmaWxlcz9cblxuVGltZSB0byBkaWcgaW50byB0aGUgTWFrZWZpbGUgYW5kIHNlZSB3aGF0IHRoZSBidWlsZCBzeXN0ZW0gcmV2ZWFscyBhYm91dCBgYXRoOWtfaHRjYCdzIGRlcGVuZGVuY2llcyBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gYGF0aDlrYC4gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MjUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwODowNjowMC42NzgxMjYzNDJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2NTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiA1MSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA1MTpcXHRcXHRcXHRcXHRcXHRcXHQgICBhcjkwMDNfbWNpLm8gXFxcXFxcbiAgNTI6XFx0XFx0XFx0XFx0XFx0XFx0ICAgYXI5MDAzX2FpYy5vXFxuICA1MzpcXHRcXG4gIDU0OlxcdGF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX1BDT0VNKSArPSBhcjkwMDNfcnR0Lm9cXG4gIDU1OlxcdFxcbiAgNTY6XFx0YXRoOWtfaHctJChDT05GSUdfQVRIOUtfRFlOQUNLKSArPSBkeW5hY2sub1xcbiAgNTc6XFx0XFxuICA1ODpcXHRvYmotJChDT05GSUdfQVRIOUtfSFcpICs9IGF0aDlrX2h3Lm9cXG4gIDU5OlxcdFxcbiAgNjA6XFx0b2JqLSQoQ09ORklHX0FUSDlLX0NPTU1PTikgKz0gYXRoOWtfY29tbW9uLm9cXG4gIDYxOlxcdGF0aDlrX2NvbW1vbi15Oj1cXHRjb21tb24ubyBcXFxcXFxuICA2MjpcXHRcXHRcXHRcXHRjb21tb24taW5pdC5vIFxcXFxcXG4gIDYzOlxcdFxcdFxcdFxcdGNvbW1vbi1iZWFjb24ubyBcXFxcXFxuICA2NDpcXHRcXG4gIDY1OlxcdGF0aDlrX2NvbW1vbi0kKENPTkZJR19BVEg5S19DT01NT05fREVCVUcpICs9IGNvbW1vbi1kZWJ1Zy5vXFxuICA2NjpcXHRhdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMKSArPSBjb21tb24tc3BlY3RyYWwub1xcbiAgNjc6XFx0XFxuICA2ODpcXHRhdGg5a19odGMteSArPVxcdGh0Y19oc3QubyBcXFxcXFxuICA2OTpcXHRcXHRcXHRoaWZfdXNiLm8gXFxcXFxcbiAgNzA6XFx0XFx0XFx0d21pLm8gXFxcXFxcbiAgNzE6XFx0XFx0XFx0aHRjX2Rydl90eHJ4Lm8gXFxcXFxcbiAgNzI6XFx0XFx0XFx0aHRjX2Rydl9tYWluLm8gXFxcXFxcbiAgNzM6XFx0XFx0XFx0aHRjX2Rydl9iZWFjb24ubyBcXFxcXFxuICA3NDpcXHRcXHRcXHRodGNfZHJ2X2luaXQubyBcXFxcXFxuICA3NTpcXHRcXHRcXHRodGNfZHJ2X2dwaW8ub1xcbiAgNzY6XFx0XFxuICA3NzpcXHRhdGg5a19odGMtJChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpICs9IGh0Y19kcnZfZGVidWcub1xcbiAgNzg6XFx0XFxuICA3OTpcXHRvYmotJChDT05GSUdfQVRIOUtfSFRDKSArPSBhdGg5a19odGMub1xcbiAgODA6XFx0XFxuICA4MTpcXHRvYmotJChDT05GSUdfQVRIOUtfUENJX05PX0VFUFJPTSkgKz0gYXRoOWtfcGNpX293bF9sb2FkZXIub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwODowNjowMC42NzgyNDYyNTNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDI1ODMwNjM1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEF0aGVyb3MgYXRoOWsgV2lyZWxlc3MgRHJpdmVyKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSdtIGxvb2tpbmcgYXQgdGhlIGBhdGg5a2Agd2lyZWxlc3MgZHJpdmVyJ3MgYE1ha2VmaWxlYC4gSSBzZWUgdGhhdCBgYXRoOWsub2AgaW5jbHVkZXMgYHhtaXQub2AsIGFuZCBgYXRoOWtfaHRjLm9gIGluY2x1ZGVzIGEgYnVuY2ggb2Ygb3RoZXIgbW9kdWxlcyByZWxhdGVkIHRvIEhUQywgVVNCLCBXTUksIGFuZCBzbyBvbi4gVGhlIGtleSBvYnNlcnZhdGlvbiBoZXJlIGlzIHRoYXQgYHhtaXQub2AgaXMgKmV4Y2x1c2l2ZWx5KiBwYXJ0IG9mIGBhdGg5ay15YC4gVGhpcyBtYWtlcyBtZSB0aGluayBhYm91dCB0aGUgaGFyZHdhcmUuIElzIGBhdGg5a2AgZXhjbHVzaXZlbHkgZm9yIFBDSSBvciBBSEIgaGFyZHdhcmU/XG5cblJpZ2h0LCBjb25maXJtZWQuIGBhdGg5a2AgaXMgUENJL0FIQi4gTm93IHRoZSBjcml0aWNhbCBxdWVzdGlvbjogY2FuIHRoaXMgYmUgcmVhY2hlZCBpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IENvbnNpZGVyaW5nIHN0YW5kYXJkIFFFTVUgZG9lc24ndCBlbXVsYXRlIEF0aGVyb3MgYXRoOWsgUENJIHdpcmVsZXNzIGNhcmRzLCBpdCdzIHNlZW1pbmcgdW5saWtlbHkuIFxuXG5BaCwgd2FpdCEgSSBuZWVkIHRvIHJlLWV2YWx1YXRlIHRoaXMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHByb21wdCdzIHN0cnVjdHVyYWwgdW5yZWFjaGFiaWxpdHkgY3JpdGVyaWEuIEl0IHNwZWNpZmljYWxseSBjYWxscyBvdXQgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMgYW5kIGRyaXZlcnMgZm9yIGhhcmR3YXJlIHRoYXQgaXNuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gSXMgYGF0aDlrYCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU/IEkgbmVlZCB0byBjb25zaWRlciBpZiB0aGVyZSBhcmUgYW55IHZpcnR1YWwgaW50ZXJmYWNlcyBvciBzaW11bGF0aW9uIHBhdGhzLlxuXG5Pa2F5LCBzbyBJIGtub3cgYG1hYzgwMjExX2h3c2ltYCBleGlzdHMsIGJ1dCB0aGF0J3MgYSAqc2VwYXJhdGUqIGRyaXZlci4gRG9lcyBpdCBpbnRlcmFjdCB3aXRoIGBhdGg5a2A/IE5vLCBpdCdzIGluZGVwZW5kZW50LiBXaGF0IGFib3V0IFVTQiBlbXVsYXRpb24/IERvZXMgYSBVU0IgZ2FkZ2V0IG9yIFJhdyBHYWRnZXQgc2V0dXAgb2ZmZXIgYSBwb3RlbnRpYWwgcGF0aHdheSB0byBgYXRoOWtgPyBOb3cgdGhlIGBhdGg5a19odGNgIHBvcnRpb24gc3ByaW5ncyB0byBtaW5kLiBSYXcgR2FkZ2V0IG1pZ2h0IGFsbG93IHVzIHRvIGVtdWxhdGUgVVNCIGRldmljZXMsIHdoaWNoIHRoZW4gbWlnaHQgYWNjZXNzIGBhdGg5a19odGNgLCBidXQgYWdhaW4gdGhlIGNvcmUgYHhtaXQuY2AgaXMgTk9UIHBhcnQgb2YgYGF0aDlrX2h0Y2AhIFxuXG5JJ20gbm93IGdvaW5nIHRvIHRyaXBsZS1jaGVjayB0aGF0IGB4bWl0LmNgIGlzIE9OTFkgZXZlciB1c2VkIGJ5IGBhdGg5ay5rb2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3OTEsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwODowNjowNC45MzY1NTUyNDhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NDE2MTI3NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoX3R4X3NldHVwX2J1ZmZlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTcwPXN0YXRpYyB2b2lkIGF0aF90eF91cGRhdGVfYmF3KHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6NzE6c3RhdGljIHN0cnVjdCBhdGhfYnVmICphdGhfdHhfc2V0dXBfYnVmZmVyKHN0cnVjdCBhdGhfc29mdGMgKnNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtNzItXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGF0aF90eHEgKnR4cSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9OTM4PWF0aF90eF9nZXRfdGlkX3N1YmZyYW1lKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy05NTUtXFx0XFx0aWYgKCFmaS1cXHUwMDNlYmYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzo5NTY6XFx0XFx0XFx0YmYgPSBhdGhfdHhfc2V0dXBfYnVmZmVyKHNjLCB0eHEsIHRpZCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTk1Ny1cXHRcXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTIxOTI9dTggYXRoX3R4Y2hhaW5tYXNrX3JlZHVjdGlvbihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgdTggY2hhaW5tYXNrLCB1MzIgcmF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjIxMC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjIyMTE6c3RhdGljIHN0cnVjdCBhdGhfYnVmICphdGhfdHhfc2V0dXBfYnVmZmVyKHN0cnVjdCBhdGhfc29mdGMgKnNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjIxMi1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoX3R4cSAqdHhxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0yMzI4PWludCBhdGhfdHhfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTIzNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoyMzcwOlxcdGJmID0gYXRoX3R4X3NldHVwX2J1ZmZlcihzYywgdHhxLCB0aWQsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yMzcxLVxcdGlmICghYmYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MjM5ND12b2lkIGF0aF90eF9jYWJxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yNDE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjQxODpcXHRcXHRiZiA9IGF0aF90eF9zZXR1cF9idWZmZXIoc2MsIHR4Y3RsLnR4cSwgTlVMTCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTI0MTktXFx0XFx0aWYgKCFiZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MjkxOT1pbnQgYXRoOWtfdHg5OV9zZW5kKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yOTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6Mjk0NjpcXHRiZiA9IGF0aF90eF9zZXR1cF9idWZmZXIoc2MsIHR4Y3RsLVxcdTAwM2V0eHEsIE5VTEwsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yOTQ3LVxcdGlmICghYmYpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDg6MDY6MDcuMzc4MTc0MTE3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM2MzAzODQzNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGF0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEF0aGVyb3MgV2lyZWxlc3MgRHJpdmVyIENvZGUqKlxuXG5SaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSBnb2luZyB0byBzdGFydCBieSB0YWtpbmcgYSBsb29rIGF0IGBwY2kuY2AgYW5kIGBhaGIuY2Agd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2AgZGlyZWN0b3J5LiBHaXZlbiBteSBleHBlcnRpc2UsIEkgc3VzcGVjdCB0aGVzZSBmaWxlcyBhcmUgcGl2b3RhbCBpbiB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgQXRoZXJvcyBBUjlrIHNlcmllcyB3aXJlbGVzcyBjaGlwc2V0IGludGVyYWN0cyB3aXRoIHRoZSBob3N0IHN5c3RlbSwgc3BlY2lmaWNhbGx5IHZpYSB0aGUgUENJIGFuZCBBSEIgYnVzZXMuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgZHJpdmVyJ3Mgb3ZlcmFsbCBzdHJ1Y3R1cmUgYnkgY2hlY2tpbmcgdGhlc2UuIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6XG5cbiogICAqKkluaXRpYWxpemF0aW9uIGFuZCBwcm9iZSByb3V0aW5lczoqKiBJIGV4cGVjdCBgcGNpLmNgIGFuZCBgYWhiLmNgIHdpbGwgY29udGFpbiB0aGUgZnVuY3Rpb25zIHJlc3BvbnNpYmxlIGZvciBkZXRlY3RpbmcgdGhlIGhhcmR3YXJlIGR1cmluZyBib290LXVwIG9yIGhvdHBsdWdnaW5nLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgZHJpdmVyIGlkZW50aWZpZXMgdGhlIHNwZWNpZmljIEF0aGVyb3MgZGV2aWNlLCBhbGxvY2F0ZXMgcmVzb3VyY2VzIChtZW1vcnksIGludGVycnVwdHMsIGV0Yy4pLCBhbmQgc2V0cyB1cCB0aGUgaW5pdGlhbCBoYXJkd2FyZSByZWdpc3RlcnMuXG4qICAgKipCdXMtc3BlY2lmaWMgaW50ZXJhY3Rpb246KiogSSdsbCB6ZXJvIGluIG9uIHRoZSBidXMtc3BlY2lmaWMgY29kZS4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVuczsgd2hlcmUgdGhlIFBDSSBhbmQgQUhCIGZ1bmN0aW9ucyBhcmUgdXNlZCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBoYXJkd2FyZS4gSSdsbCBiZSB3YXRjaGluZyBob3cgdGhlc2UgY29tbXVuaWNhdGUgdGhyb3VnaCBETUEuXG4qICAgKipJbnRlcnJ1cHQgaGFuZGxpbmc6KiogSSdtIGludGVyZXN0ZWQgaW4gaG93IGludGVycnVwdCBoYW5kbGVycyBhcmUgc2V0IHVwIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMgdG8gcmVhZCBkYXRhIGFuZCBzZW5kIGNvbW1hbmRzLlxuKiAgICoqRXJyb3IgaGFuZGxpbmcgYW5kIHBvd2VyIG1hbmFnZW1lbnQ6KiogSSB3YW50IHRvIGdsYW5jZSBhdCBob3cgdGhlIGRyaXZlciBkZWFscyB3aXRoIHBvdGVudGlhbCBlcnJvcnMgZHVyaW5nIGhhcmR3YXJlIGFjY2VzcywgZGV2aWNlIHJlc2V0LCBhbmQgcG93ZXIgbWFuYWdlbWVudCBmZWF0dXJlcy5cblxuRXNzZW50aWFsbHksIEknbSBleHBlY3RpbmcgdG8gZ2FpbiBhbiB1bmRlcnN0YW5kaW5nIG9mIHRoZSBsb3ctbGV2ZWwgYnVzIGludGVyYWN0aW9uIGFuZCBnZXQgYSBmaXJtIGdyYXNwIG9uIHRoZSBjb3JlIGNvbnRyb2wgZmxvdyBvZiB0aGlzIGRyaXZlci4gVGhlc2UgZmlsZXMgYXJlIHRoZSBlc3NlbnRpYWwgYnJpZGdlIGJldHdlZW4gdGhlIEF0aGVyb3MgaGFyZHdhcmUgYW5kIHRoZSByZXN0IG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBJJ2xsIGJlIGV4cGVjdGluZyBsb3RzIG9mIHJlZ2lzdGVyIHJlYWRzIGFuZCB3cml0ZXMgYW5kIHRoZSB1c3VhbCBETUEgc2V0dXAgZm9yIGRhdGEgdHJhbnNmZXIuIEl0IHdpbGwgYmUgaGVscGZ1bCB0byBlc3RhYmxpc2ggdGhlIGhhcmR3YXJlIGludGVyYWN0aW9uIGJlZm9yZSBnb2luZyBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTY0OSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA4OjA2OjExLjAwODU2MjM0MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc2MTg1MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3BjaV9kcml2ZXJ8bW9kdWxlX3BsYXRmb3JtX2RyaXZlcnxtb2R1bGVfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5a19wY2lfb3dsX2xvYWRlci5jPTIzMj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgb3dsX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5a19wY2lfb3dsX2xvYWRlci5jLTIzNy19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5a19wY2lfb3dsX2xvYWRlci5jOjIzODptb2R1bGVfcGNpX2RyaXZlcihvd2xfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWtfcGNpX293bF9sb2FkZXIuYy0yMzktTU9EVUxFX0FVVEhPUihcXFwiQ2hyaXN0aWFuIExhbXBhcnRlciBcXHUwMDNjY2h1bmtlZXlAZ21haWwuY29tXFx1MDAzZVxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz0xMTMwPXN0YXRpYyBpbnQgX19pbml0IGF0aDlrX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTE1NS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoxMTU2Om1vZHVsZV9pbml0KGF0aDlrX2luaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTE1Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDg6MDY6MTEuMTA2MTg2MzE5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ1MDAwMDE1MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEF0aGVyb3MgRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoaXMuIE15IGZvY3VzIGlzIG9uIHRoZSBgYXRoOWtgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGl0cyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSdtIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuY2AgYW5kIHplcm8gaW4gb24gdGhlIGBhdGg5a19pbml0YCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhpcyBiZWFzdCBnZXRzIG9mZiB0aGUgZ3JvdW5kLiBXaGF0IGFyZSB0aGUga2V5IHN0ZXBzPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgcmVkIGZsYWdzIEkgY2FuIHNwb3QgcXVpY2tseT8gSSdtIGxvb2tpbmcgZm9yIHRoZSBoYXJkd2FyZSBwcm9iaW5nLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbnkgY3JpdGljYWwgc2V0dXAgZm9yIHRoZSBNQUMgYW5kIFBIWSwgYW5kIGhvdyBpdCBoYW5kbGVzIHBvdGVudGlhbCBlcnJvcnMgZHVyaW5nIHRoZSBwcm9jZXNzLiBUaGlzIGluaXRpYWwgcGhhc2UgaXMgY3J1Y2lhbCwgYXMgYW55IGlzc3VlcyBoZXJlIHdpbGwgcmlwcGxlIHRocm91Z2ggdGhlIGRyaXZlcidzIG9wZXJhdGlvbi4gSSB3YW50IHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB0aGlzIGluaXRpYWxpemF0aW9uIGZsb3csIGZyb20gc3RhcnQgdG8gZmluaXNoLCBzbyBJIGNhbiBiZXR0ZXIgdW5kZXJzdGFuZCB3aGVyZSB0byBsb29rIGluIGNhc2Ugb2YgbGF0ZXIgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQ0NCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA4OjA2OjE1LjYwNjE5MTc2MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTc2NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTMwLFxuICBcIkxpbmVDb3VudFwiOiAzNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMTMwOlxcdHN0YXRpYyBpbnQgX19pbml0IGF0aDlrX2luaXQodm9pZClcXG4xMTMxOlxcdHtcXG4xMTMyOlxcdFxcdGludCBlcnJvcjtcXG4xMTMzOlxcdFxcbjExMzQ6XFx0XFx0ZXJyb3IgPSBhdGhfcGNpX2luaXQoKTtcXG4xMTM1OlxcdFxcdGlmIChlcnJvciBcXHUwMDNjIDApIHtcXG4xMTM2OlxcdFxcdFxcdHByX2VycihcXFwiTm8gUENJIGRldmljZXMgZm91bmQsIGRyaXZlciBub3QgaW5zdGFsbGVkXFxcXG5cXFwiKTtcXG4xMTM3OlxcdFxcdFxcdGVycm9yID0gLUVOT0RFVjtcXG4xMTM4OlxcdFxcdFxcdGdvdG8gZXJyX291dDtcXG4xMTM5OlxcdFxcdH1cXG4xMTQwOlxcdFxcbjExNDE6XFx0XFx0ZXJyb3IgPSBhdGhfYWhiX2luaXQoKTtcXG4xMTQyOlxcdFxcdGlmIChlcnJvciBcXHUwMDNjIDApIHtcXG4xMTQzOlxcdFxcdFxcdGVycm9yID0gLUVOT0RFVjtcXG4xMTQ0OlxcdFxcdFxcdGdvdG8gZXJyX3BjaV9leGl0O1xcbjExNDU6XFx0XFx0fVxcbjExNDY6XFx0XFxuMTE0NzpcXHRcXHRkbWlfY2hlY2tfc3lzdGVtKGF0aDlrX3F1aXJrcyk7XFxuMTE0ODpcXHRcXG4xMTQ5OlxcdFxcdHJldHVybiAwO1xcbjExNTA6XFx0XFxuMTE1MTpcXHQgZXJyX3BjaV9leGl0OlxcbjExNTI6XFx0XFx0YXRoX3BjaV9leGl0KCk7XFxuMTE1MzpcXHQgZXJyX291dDpcXG4xMTU0OlxcdFxcdHJldHVybiBlcnJvcjtcXG4xMTU1OlxcdH1cXG4xMTU2OlxcdG1vZHVsZV9pbml0KGF0aDlrX2luaXQpO1xcbjExNTc6XFx0XFxuMTE1ODpcXHRzdGF0aWMgdm9pZCBfX2V4aXQgYXRoOWtfZXhpdCh2b2lkKVxcbjExNTk6XFx0e1xcbjExNjA6XFx0XFx0aXNfYXRoOWtfdW5sb2FkZWQgPSB0cnVlO1xcbjExNjE6XFx0XFx0YXRoX2FoYl9leGl0KCk7XFxuMTE2MjpcXHRcXHRhdGhfcGNpX2V4aXQoKTtcXG4xMTYzOlxcdFxcdHByX2luZm8oXFxcIiVzOiBEcml2ZXIgdW5sb2FkZWRcXFxcblxcXCIsIGRldl9pbmZvKTtcXG4xMTY0OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDg6MDY6MTUuNjA2MzUxOTAyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxODUyNjM0NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgYXRoOWsgSW5pdGlhbGl6YXRpb24qKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGBhdGg5a2AgZHJpdmVyLiBTZWVtcyBsaWtlIGl0J3MgZ2V0dGluZyBraWNrZWQgb2ZmIHdpdGggYGF0aF9wY2lfaW5pdCgpYCBhbmQgYGF0aF9haGJfaW5pdCgpYC4gU3RhbmRhcmQgc3R1ZmYsIHRoZSBQQ0kgYW5kIEFIQiB2ZXJzaW9ucyBvZiB0aGUgaW5pdGlhbGl6YXRpb24gcm91dGluZXMuIEdpdmVuIHRoZSB0YXJnZXQgaGFyZHdhcmUsIEknbSBndWVzc2luZyB3ZSdyZSBsaWtlbHkgZGVhbGluZyB3aXRoIGEgUENJLWJhc2VkIHN5c3RlbSwgYXMgQUhCIGlzIHVzZWQgbGVzcy5cblxuTGV0J3Mgc3RhcnQgYnkgbG9va2luZyBpbnRvIGBhdGhfcGNpX2luaXQoKWAuIFRoYXQncyB3aGVyZSB0aGUgY29yZSBQQ0ktc3BlY2lmaWMgc2V0dXAgd2lsbCBiZSBoYXBwZW5pbmcuIEkgd2FudCB0byBzZWUgaG93IHRoZXkncmUgaGFuZGxpbmcgZGV2aWNlIHByb2JlLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgYW55IHBvdGVudGlhbCBxdWlya3MgcmVsYXRlZCB0byB0aGUgQXRoZXJvcyBjaGlwc2V0IGFuZCB0aGUgUENJIGJ1cy4gSSdtIGtlZW4gdG8gZXhhbWluZSB0aGUgYGF0aF9wY2lfaW5pdGAgZnVuY3Rpb24sIEkgaGF2ZSBhIGZlZWxpbmcgdGhlcmUgbWlnaHQgYmUgaXNzdWVzLiBJIHdhbnQgdG8gbG9vayBpbnRvIGl0cyBpbXBsZW1lbnRhdGlvbiBhbmQgc2VlIHdoYXQgaXQgaXMgZG9pbmcgc3BlY2lmaWNhbGx5LiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBzbyBsZXQncyBnZXQgc3RhcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxODEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA4OjA2OjE3Ljc5MTYxODUyNFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM2NTMwOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoX3BjaV9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmg9MTEzOD12b2lkIGF0aDlrX3BzX3Jlc3RvcmUoc3RydWN0IGF0aF9zb2Z0YyAqc2MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTE0MC0jaWZkZWYgQ09ORklHX0FUSDlLX1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oOjExNDE6aW50IGF0aF9wY2lfaW5pdCh2b2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaC0xMTQyLXZvaWQgYXRoX3BjaV9leGl0KHZvaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oLTExNDMtI2Vsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaDoxMTQ0OnN0YXRpYyBpbmxpbmUgaW50IGF0aF9wY2lfaW5pdCh2b2lkKSB7IHJldHVybiAwOyB9O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oLTExNDUtc3RhdGljIGlubGluZSB2b2lkIGF0aF9wY2lfZXhpdCh2b2lkKSB7fTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9MTEzMD1zdGF0aWMgaW50IF9faW5pdCBhdGg5a19pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTExMzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoxMTM0OlxcdGVycm9yID0gYXRoX3BjaV9pbml0KCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0xMTM1LVxcdGlmIChlcnJvciBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYz0xMDc1PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBhdGhfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYy0xMDgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYzoxMDgzOmludCBhdGhfcGNpX2luaXQodm9pZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcGNpLmMtMTA4NC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA4OjA2OjE3Ljg1NTI4MjgwM1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NTk2MjcxODE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBQcm9wb3NlZCBQYXRjaCdzIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSB0aGUgbW9kaWZpY2F0aW9uIHRvIGBhdGhfdHhfc2V0dXBfYnVmZmVyYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNgLCBpcyBsaWtlbHkgKm5vdCogc3VpdGFibGUgZm9yIGZ1enppbmcgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudC4gTGV0J3MgZGVsdmUgaW50byB0aGUgcmVhc29uaW5nLlxuXG5GaXJzdCwgSSBzZWUgdGhhdCB0aGUgYGF0aF9wY2lfZHJpdmVyYCBoYW5kbGVzIEF0aGVyb3MgUENJL1BDSWUgY2FyZHMsIGFuZCBgYXRoX2FoYl9kcml2ZXJgIGlzIGZvciB0aGUgQUhCIGJ1cyAoUXVhbGNvbW0gQXRoZXJvcyBTb0MpLiBOZWl0aGVyIG9mIHRoZXNlIGlzIHR5cGljYWxseSBlbXVsYXRlZCB3aXRoaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBEaWdnaW5nIGEgYml0IGRlZXBlciwgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCBgYXRoOWtgIGlzIHRoZSBkcml2ZXIgaW4gcXVlc3Rpb24sIGRlc2lnbmVkIGZvciA4MDIuMTFuIFBDSS9BSEIgaGFyZHdhcmUuXG5cbk15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGd1aWRlbGluZXMgaXMgY3J1Y2lhbCBoZXJlLiBTZWN0aW9uIDIgaGlnaGxpZ2h0cyB1bnJlYWNoYWJsZSBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IG1lbnRpb25pbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgYW5kIEdQVSBkcml2ZXJzLiAgVGhlc2UgcmVxdWlyZSBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMsIHdoaWNoIFFFTVUgZG9lc24ndCBlbXVsYXRlLiBTZWN0aW9uIDEgcmVpbmZvcmNlcyB0aGlzIOKAkyByZWFjaGFiaWxpdHkgaXMgdGhlIHByaW1hcnkgZ2F0ZS4gSWYgdGhlIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLCBpdCBzaG91bGRuJ3QgYmUgZnV6emVkLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIG1vZGlmaWVzIGBhdGhfdHhfc2V0dXBfYnVmZmVyYCwgYSBjb3JlIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYGF0aDlrYCBkcml2ZXIuICBUaGUgY3JpdGljYWwgcG9pbnQgaXMgdGhhdCB0aGlzIGRyaXZlciBpcyBmb3IgKnBoeXNpY2FsKiBBdGhlcm9zIDgwMi4xMW4gUENJL1BDSWUgYW5kIEFIQiBkZXZpY2VzLiBXaGlsZSBkcml2ZXJzIGxpa2UgYGF0aDlrX2h0Y2AgZm9yIFVTQiB3aXJlbGVzcyBkZXZpY2VzIG9yIGBtYWM4MDIxMV9od3NpbWAgZm9yIHZpcnR1YWwgZGV2aWNlcyBhcmUgZnV6emVhYmxlLCB0aGUgYGF0aDlrYCBjb2RlIHBhdGggaXMgbm90LlxuXG5UaGUgZnV6emluZy1yZWxhdGVkIG1ldGFkYXRhIGNvbmZpcm1zIG15IHN1c3BpY2lvbnM6IGBXb3J0aEZ1enppbmc6IGZhbHNlYCwgYEVuYWJsZUNvbmZpZ3M6IG51bGwgLyBbXWAsIGFuZCBgRm9jdXNTeW1ib2xzOiBbXWAuICBUaGUgcHJvdmlkZWQgcmVhc29uaW5nIGlzIHNwb3Qtb246ICB0aGUgbGFjayBvZiBlbXVsYXRpb24gZm9yIHRoZXNlIHBoeXNpY2FsIFBDSWUvQUhCIHdpcmVsZXNzIGRldmljZXMgaW4gc3RhbmRhcmQgZW52aXJvbm1lbnRzIG1ha2VzIHRoaXMgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXG5cblRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiBjb25jbHVkaW5nIHRoYXQgdGhpcyBwYXRjaCBpc24ndCBzdWl0YWJsZSBmb3Igc3RhbmRhcmQgZnV6emluZyBlZmZvcnRzLiBJIHNob3VsZCBwcm9jZWVkIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM5OTcsIk91dHB1dFRva2VucyI6MTE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA4OjA2OjIzLjQ1MTU1NzY2MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYyBpcyBwYXJ0IG9mIHRoZSBhdGg5ayBkcml2ZXIgZm9yIHBoeXNpY2FsIEF0aGVyb3MgODAyLjExbiBQQ0kvQUhCIHdpcmVsZXNzIGFkYXB0ZXJzLiBCZWNhdXNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChlLmcuIFFFTVUvR0NFKSBkbyBub3QgZW11bGF0ZSBhdGg5ayBQQ0kvQUhCIGhhcmR3YXJlLCB0aGlzIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jIGlzIHBhcnQgb2YgdGhlIGF0aDlrIGRyaXZlciBmb3IgcGh5c2ljYWwgQXRoZXJvcyA4MDIuMTFuIFBDSS9BSEIgd2lyZWxlc3MgYWRhcHRlcnMuIEJlY2F1c2Ugc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4gUUVNVS9HQ0UpIGRvIG5vdCBlbXVsYXRlIGF0aDlrIFBDSS9BSEIgaGFyZHdhcmUsIHRoaXMgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwODowNjoyMy40NTE1ODU5MzJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8lfhl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-06 08:03:12 +0000 UTC FinishedAt: 2026-09-06 08:06:25 +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+CgkJCTx0ZD4yMDI2LzA5LzA2IDA4OjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jIGlzIHBhcnQgb2YgdGhlIGF0aDlrIGRyaXZlciBmb3IgcGh5c2ljYWwgQXRoZXJvcyA4MDIuMTFuIFBDSS9BSEIgd2lyZWxlc3MgYWRhcHRlcnMuIEJlY2F1c2Ugc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4gUUVNVS9HQ0UpIGRvIG5vdCBlbXVsYXRlIGF0aDlrIFBDSS9BSEIgaGFyZHdhcmUsIHRoaXMgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA4OjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTFiNWUwZmI2ZTUwNzNlZjdkZmUxNmYzMmU4MWE0ZmVlMjlkZGZhNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDYgMDg6MDU6NDIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNcbmluZGV4IDg5ZDhiMzE3ODc4NDYuLjE2YjY0OTA4ZThkZmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jXG5AQCAtMjI1NSw2ICYjNDM7MjI1NSwxMSBAQCBzdGF0aWMgc3RydWN0IGF0aF9idWYgKmF0aF90eF9zZXR1cF9idWZmZXIoc3RydWN0IGF0aF9zb2Z0YyAqc2MsXG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuJiM0MztcdGlmIChmaS1cdTAwM2ViZikge1xuJiM0MztcdFx0ZmktXHUwMDNlYmYtXHUwMDNlYmZfbXBkdSA9IE5VTEw7XG4mIzQzO1x0XHRmaS1cdTAwM2ViZi1cdTAwM2ViZl9idWZfYWRkciA9IDA7XG4mIzQzO1x0XHRhdGhfdHhfcmV0dXJuX2J1ZmZlcihzYywgZmktXHUwMDNlYmYpO1xuJiM0MztcdH1cbiBcdGZpLVx1MDAzZWJmID0gYmY7XG4gXG4gXHRyZXR1cm4gYmY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDg6MDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jIGlzIHBhcnQgb2YgdGhlIGF0aDlrIGRyaXZlciBmb3IgcGh5c2ljYWwgQXRoZXJvcyA4MDIuMTFuIFBDSS9BSEIgd2lyZWxlc3MgYWRhcHRlcnMuIEJlY2F1c2Ugc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4gUUVNVS9HQ0UpIGRvIG5vdCBlbXVsYXRlIGF0aDlrIFBDSS9BSEIgaGFyZHdhcmUsIHRoaXMgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTFiNWUwZmI2ZTUwNzNlZjdkZmUxNmYzMmU4MWE0ZmVlMjlkZGZhNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDYgMDg6MDU6NDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYwppbmRleCA4OWQ4YjMxNzg3ODQ2Li4xNmI2NDkwOGU4ZGZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMKQEAgLTIyNTUsNiAmIzQzOzIyNTUsMTEgQEAgc3RhdGljIHN0cnVjdCBhdGhfYnVmICphdGhfdHhfc2V0dXBfYnVmZmVyKHN0cnVjdCBhdGhfc29mdGMgKnNjLAogCQlyZXR1cm4gTlVMTDsKIAl9CiAKJiM0MzsJaWYgKGZpLSZndDtiZikgewomIzQzOwkJZmktJmd0O2JmLSZndDtiZl9tcGR1ID0gTlVMTDsKJiM0MzsJCWZpLSZndDtiZi0mZ3Q7YmZfYnVmX2FkZHIgPSAwOwomIzQzOwkJYXRoX3R4X3JldHVybl9idWZmZXIoc2MsIGZpLSZndDtiZik7CiYjNDM7CX0KIAlmaS0mZ3Q7YmYgPSBiZjsKIAogCXJldHVybiBiZjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkwMwoJCQkJCQkJb3V0cHV0OiA3NgoJCQkJCQkJdGhvdWdodHM6IDIxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gYXNzZXNzIGlmIHRoaXMgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNgIGlzIHdvcnRoIHB1cnN1aW5nIHdpdGggc3l6a2FsbGVyLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlLiBJJiMzOTtsbCB1c2UgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIHRvIGV4YW1pbmUgdGhlIGNoYW5nZXMgYW5kIHRoZSBzdXJyb3VuZGluZyBjb2RlIGZvciBzb21lIGNvbnRleHQuIFJpZ2h0LCBzbyB0aGlzIGlzIGFib3V0IHRoZSBhdGg5ayBkcml2ZXIuIEFoLCB0aGUgQXRoZXJvcyA4MDIuMTFuIHdpcmVsZXNzIGRyaXZlci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGF0dGFjayBzdXJmYWNlLiBDYW4gSSByZWFjaCB0aGlzIHRoaW5nIHRocm91Z2ggc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gb3IgaXMgdGhpcyBsb2NrZWQgYmVoaW5kIHNwZWNpZmljIGhhcmR3YXJlIGFjY2Vzcz8gV2FpdCwgSSB0aGluayBJIHJlbWVtYmVyLi4uIGF0aDlrIGlzIFBDSSwgYW5kIEFIQi4gQW5kIHdhc24mIzM5O3QgdGhlcmUgYW4gYXRoOWtfaHRjIHRoYXQgdXNlZCBVU0I/CgpUaGlzIGdldHMgY29tcGxpY2F0ZWQgcXVpY2tseSwgaXMgdGhlIGNvZGUgdXNlZCBieSBhdGg5a19odGMgcmVsYXRlZCB0byB0aGUgc2FtZSBmaWxlPyBJIG5lZWQgdG8gY2xhcmlmeSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYXRoOWsgYW5kIGF0aDlrX2h0Yy4gU28sIGlzIGBhdGg5ay94bWl0LmNgIHVzZWQgYnkgYm90aD8gT3IgaXMgYGF0aDlrYCBQQ0kvQUhCIG9ubHk/IElzIHRoZXJlIHNvbWUga2luZCBvZiBlbXVsYXRpb24gSSBjYW4gdGFrZSBhZHZhbnRhZ2Ugb2Y/IENhbiBJIGp1c3QgcnVuIHRoaXMgb24gYSBVU0IgZ2FkZ2V0LCBvciB3aWxsIEkgbmVlZCBhIHJlYWwgcGllY2Ugb2YgaGFyZHdhcmU/IEFscmlnaHQsIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIEtjb25maWcgdG8gc29ydCB0aGlzIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwODowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGhfdHhfc2V0dXBfYnVmZmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTcwPXN0YXRpYyB2b2lkIGF0aF90eF91cGRhdGVfYmF3KHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzo3MTpzdGF0aWMgc3RydWN0IGF0aF9idWYgKmF0aF90eF9zZXR1cF9idWZmZXIoc3RydWN0IGF0aF9zb2Z0YyAqc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTcyLVx0XHRcdFx0XHQgICBzdHJ1Y3QgYXRoX3R4cSAqdHhxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9OTM4PWF0aF90eF9nZXRfdGlkX3N1YmZyYW1lKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtOTU1LVx0XHRpZiAoIWZpLVx1MDAzZWJmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzo5NTY6XHRcdFx0YmYgPSBhdGhfdHhfc2V0dXBfYnVmZmVyKHNjLCB0eHEsIHRpZCwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtOTU3LVx0XHRlbHNlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0yMTkyPXU4IGF0aF90eGNoYWlubWFza19yZWR1Y3Rpb24oc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHU4IGNoYWlubWFzaywgdTMyIHJhdGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yMjEwLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoyMjExOnN0YXRpYyBzdHJ1Y3QgYXRoX2J1ZiAqYXRoX3R4X3NldHVwX2J1ZmZlcihzdHJ1Y3QgYXRoX3NvZnRjICpzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjIxMi1cdFx0XHRcdFx0ICAgc3RydWN0IGF0aF90eHEgKnR4cSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTIzMjg9aW50IGF0aF90eF9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTIzNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjIzNzA6XHRiZiA9IGF0aF90eF9zZXR1cF9idWZmZXIoc2MsIHR4cSwgdGlkLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yMzcxLVx0aWYgKCFiZikge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MjM5ND12b2lkIGF0aF90eF9jYWJxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjQxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjQxODpcdFx0YmYgPSBhdGhfdHhfc2V0dXBfYnVmZmVyKHNjLCB0eGN0bC50eHEsIE5VTEwsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTI0MTktXHRcdGlmICghYmYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0yOTE5PWludCBhdGg5a190eDk5X3NlbmQoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yOTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoyOTQ2Olx0YmYgPSBhdGhfdHhfc2V0dXBfYnVmZmVyKHNjLCB0eGN0bC1cdTAwM2V0eHEsIE5VTEwsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTI5NDctXHRpZiAoIWJmKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDg6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QVRIOUsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Mjpjb25maWcgQVRIOUtfSFdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NDpjb25maWcgQVRIOUtfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTYtXHRzZWxlY3QgQVRIX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Nzpjb25maWcgQVRIOUtfQ09NTU9OX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy04LVx0Ym9vbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6OTpjb25maWcgQVRIOUtfREZTX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEwLVx0ZGVmX2Jvb2wgeVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTE6XHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXHUwMDI2XHUwMDI2IEFUSDlLX0RGU19DRVJUSUZJRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTM6Y29uZmlnIEFUSDlLX0JUQ09FWF9TVVBQT1JUXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBibHVldG9vdGggY29leGlzdGVuY2Ugc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU6XHRkZXBlbmRzIG9uIChBVEg5SyB8fCBBVEg5S19IVEMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNi1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjE6Y29uZmlnIEFUSDlLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMi1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgODAyLjExbiB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjQtXHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjU6XHRzZWxlY3QgQVRIOUtfSFdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjI2Olx0c2VsZWN0IEFUSDlLX0NPTU1PTlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzozOTpjb25maWcgQVRIOUtfUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00MC1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayBQQ0kvUENJZSBidXMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNDEtXHRkZWZhdWx0IHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjQyOlx0ZGVwZW5kcyBvbiBBVEg5SyBcdTAwMjZcdTAwMjYgUENJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00My1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjQ4OmNvbmZpZyBBVEg5S19BSEJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQ5LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIEFIQiBidXMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NTA6XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiBPRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNTEtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjU4OmNvbmZpZyBBVEg5S19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01OS1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjYwOlx0ZGVwZW5kcyBvbiBBVEg5SyBcdTAwMjZcdTAwMjYgREVCVUdfRlMgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjYxOlx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNjItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo2OTpjb25maWcgQVRIOUtfU1RBVElPTl9TVEFUSVNUSUNTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03MC1cdGJvb2wgXCYjMzQ7RGV0YWlsZWQgc3RhdGlvbiBzdGF0aXN0aWNzXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3MTpcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IEFUSDlLX0RFQlVHRlMgXHUwMDI2XHUwMDI2IERFQlVHX0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03Mi1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NzY6Y29uZmlnIEFUSDlLX1RYOTlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIFRYOTkgdGVzdGluZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3ODpcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyBcdTAwMjZcdTAwMjYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03OS1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6OTY6Y29uZmlnIEFUSDlLX0RGU19DRVJUSUZJRURcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTk3LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIERGUyBzdXBwb3J0IGZvciBjZXJ0aWZpZWQgcGxhdGZvcm1zXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5ODpcdGRlcGVuZHMgb24gQVRIOUsgXHUwMDI2XHUwMDI2IENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctOTktXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTU6Y29uZmlnIEFUSDlLX0RZTkFDS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTE2LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIEFDSyB0aW1lb3V0IGVzdGltYXRpb24gYWxnb3JpdGhtXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTc6XHRkZXBlbmRzIG9uIEFUSDlLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMTgtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMjQ6Y29uZmlnIEFUSDlLX1dPV1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTI1LVx0Ym9vbCBcJiMzNDtXYWtlIG9uIFdpcmVsZXNzIExBTiBzdXBwb3J0IChFWFBFUklNRU5UQUwpXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMjY6XHRkZXBlbmRzIG9uIEFUSDlLIFx1MDAyNlx1MDAyNiBQTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTI3LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTMyOmNvbmZpZyBBVEg5S19SRktJTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGg5ayByZmtpbGwgc3VwcG9ydFwmIzM0OyBpZiBFWFBFUlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEzNDpcdGRlcGVuZHMgb24gQVRIOUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEzNTpcdGRlcGVuZHMgb24gUkZLSUxMPXkgfHwgUkZLSUxMPUFUSDlLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMzYtXHRkZWZhdWx0IHlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNDI6Y29uZmlnIEFUSDlLX0NIQU5ORUxfQ09OVEVYVFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTQzLVx0Ym9vbCBcJiMzNDtDaGFubmVsIENvbnRleHQgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTQ0Olx0ZGVwZW5kcyBvbiBBVEg5S1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTQ1LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTUxOmNvbmZpZyBBVEg5S19QQ09FTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTUyLVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrIHN1cHBvcnQgZm9yIFBDIE9FTSBjYXJkc1wmIzM0OyBpZiBFWFBFUlRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE1MzpcdGRlcGVuZHMgb24gQVRIOUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1NC1cdGRlZmF1bHQgeVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU2OmNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTctXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDlrIHBjaSBsb2FkZXIgZm9yIEVFUFJPTS1sZXNzIGNoaXBzXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTg6XHRkZXBlbmRzIG9uIEFUSDlLX1BDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTU5LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzUtXHRzZWxlY3QgTUFDODAyMTFfTEVEUyBpZiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTc2Olx0c2VsZWN0IEFUSDlLX0hXXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNzc6XHRzZWxlY3QgQVRIOUtfQ09NTU9OXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzgtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4OTpcdGRlcGVuZHMgb24gQVRIOUtfSFRDIFx1MDAyNlx1MDAyNiBERUJVR19GU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTkwOlx0c2VsZWN0IEFUSDlLX0NPTU1PTl9ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTkxLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE5NTpjb25maWcgQVRIOUtfSFdSTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE5Ni1cdGJvb2wgXCYjMzQ7UmFuZG9tIG51bWJlciBnZW5lcmF0b3Igc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTk3Olx0ZGVwZW5kcyBvbiBBVEg5SyBcdTAwMjZcdTAwMjYgKEhXX1JBTkRPTSA9IHkgfHwgSFdfUkFORE9NID0gQVRIOUspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xOTgtXHRkZWZhdWx0IG5cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0yMDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDY6Y29uZmlnIEFUSDlLX0NPTU1PTl9TUEVDVFJBTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA3LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrL2F0aDlrX2h0YyBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjIwODpcdGRlcGVuZHMgb24gQVRIOUtfREVCVUdGUyB8fCBBVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA5LVx0c2VsZWN0IFJFTEFZXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM5OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IE1ha2VmaWxlOgoKKipBbmFseXppbmcgdGhlIEFUSDlLIGFuZCBBVEg5S19IVEMgQ29tcGlsYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGVgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBzcGVjaWZpYyBvYmplY3QgZmlsZXMgZ2V0IGNvbXBpbGVkIGRlcGVuZGluZyBvbiB3aGV0aGVyIHdlJiMzOTtyZSBidWlsZGluZyBmb3IgYSBzdGFuZGFyZCBBVEg5SyBkZXZpY2Ugb3IgdGhlIEFUSDlLX0hUQyB2YXJpYW50LiBUaGlzIGlzIGFsbCBhYm91dCBidWlsZCBjb25maWd1cmF0aW9uLCBhbmQgaG93IHRoZSBNYWtlZmlsZSBoYW5kbGVzIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGNhcmVmdWxseSBleGFtaW5lIHRoZSBydWxlcyBhbmQgYW55IGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgKGxpa2VseSB1c2luZyBgaWZkZWZgLCBgaWZuZXFgLCBvciBtYXliZSBzb21lIGNvbXBsZXggdmFyaWFibGUgbWFuaXB1bGF0aW9uKSB0byBtYXAgdGhlIG9iamVjdCBmaWxlcyB0byB0aGUgYXBwcm9wcmlhdGUgdGFyZ2V0LiBUaGUga2V5IGlzIHRvIGZpbmQgaG93IHRoZSBNYWtlZmlsZSBkaXN0aW5ndWlzaGVzIGJldHdlZW4gdGhlIHR3byBjb25maWd1cmF0aW9ucy4gSSBzdXNwZWN0IHRoZXJlIHdpbGwgYmUgYSBjbGVhcmx5IG5hbWVkIGNvbmRpdGlvbmFsIHZhcmlhYmxlIHRoYXQgZGlmZmVyZW50aWF0ZXMgYmV0d2VlbiBzdGFuZGFyZCBhbmQgSFRDIGRyaXZlcnMuIFVuZGVyc3RhbmRpbmcgdGhhdCBpcyB0aGUga2V5IHRvIHRyYWNpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgc2VlaW5nIHByZWNpc2VseSB3aGljaCBvYmplY3QgZmlsZXMgYXJlIGluY2x1ZGVkIGluIGVhY2ggYnVpbGQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDg6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eG1pdC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU9Mj1hdGg5ay15ICYjNDM7PVx0YmVhY29uLm8gXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNi1cdFx0cmVjdi5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGU6NzpcdFx0eG1pdC5vIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtOC1cdFx0bGluay5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDg6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc3OAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIHRoZSBBdGhlcm9zIFdpcmVsZXNzIERyaXZlciBCdWlsZCBQcm9jZXNzKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgYXRoOWtgIGFuZCBgYXRoOWtfaHRjYCBkcml2ZXJzIGFyZSBiZWluZyBidWlsdCB3aXRoaW4gdGhlIGtlcm5lbC4gSXQgc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZGlnIGludG8gdGhlIGBNYWtlZmlsZWAgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2AsIGJlY2F1c2UgdGhhdCYjMzk7cyB1c3VhbGx5IHRoZSBjb21tYW5kIGNlbnRlciBmb3IgdGhpcyBraW5kIG9mIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyB0aGUgYnVpbGQgc3lzdGVtIGRpZmZlcmVudGlhdGVzIGJldHdlZW4gYGF0aDlrYCBhbmQgYGF0aDlrX2h0Y2AuIFRoZXJlJiMzOTtzIHByb2JhYmx5IHNvbWUgY29uZGl0aW9uYWwgbG9naWMgb3IgdmFyaWFibGUgYXNzaWdubWVudCB3aXRoaW4gdGhhdCBgTWFrZWZpbGVgIHRoYXQgY29udHJvbHMgd2hpY2ggbW9kdWxlcyBnZXQgY29tcGlsZWQgYW5kIGxpbmtlZC4gSSYjMzk7bGwgbmVlZCB0byBwYXJzZSB0aHJvdWdoIHRoYXQgYW5kIHNlZSB3aGF0IGZsYWdzIG9yIGRlcGVuZGVuY2llcyBhcmUgYmVpbmcgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwODowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAgMjpcdGF0aDlrLXkgJiM0Mzs9XHRiZWFjb24ubyBcXFxuICAgMzpcdFx0XHRncGlvLm8gXFxcbiAgIDQ6XHRcdFx0aW5pdC5vIFxcXG4gICA1Olx0XHRcdG1haW4ubyBcXFxuICAgNjpcdFx0XHRyZWN2Lm8gXFxcbiAgIDc6XHRcdFx0eG1pdC5vIFxcXG4gICA4Olx0XHRcdGxpbmsubyBcXFxuICAgOTpcdFx0XHRhbnRlbm5hLm8gXFxcbiAgMTA6XHRcdFx0Y2hhbm5lbC5vXG4gIDExOlx0XG4gIDEyOlx0YXRoOWstJChDT05GSUdfQVRIOUtfQlRDT0VYX1NVUFBPUlQpICYjNDM7PSBtY2kub1xuICAxMzpcdGF0aDlrLSQoQ09ORklHX0FUSDlLX1BDSSkgJiM0Mzs9IHBjaS5vXG4gIDE0Olx0YXRoOWstJChDT05GSUdfQVRIOUtfQUhCKSAmIzQzOz0gYWhiLm9cbiAgMTU6XHRhdGg5ay0kKENPTkZJR19BVEg5S19ERlNfREVCVUdGUykgJiM0Mzs9IGRmc19kZWJ1Zy5vXG4gIDE2Olx0YXRoOWstJChDT05GSUdfQVRIOUtfREZTX0NFUlRJRklFRCkgJiM0Mzs9IGRmcy5vXG4gIDE3Olx0YXRoOWstJChDT05GSUdfQVRIOUtfVFg5OSkgJiM0Mzs9IHR4OTkub1xuICAxODpcdGF0aDlrLSQoQ09ORklHX0FUSDlLX1dPVykgJiM0Mzs9IHdvdy5vXG4gIDE5Olx0YXRoOWstJChDT05GSUdfQVRIOUtfSFdSTkcpICYjNDM7PSBybmcub1xuICAyMDpcdFxuICAyMTpcdGF0aDlrLSQoQ09ORklHX0FUSDlLX0RFQlVHRlMpICYjNDM7PSBkZWJ1Zy5vXG4gIDIyOlx0XG4gIDIzOlx0YXRoOWstJChDT05GSUdfQVRIOUtfU1RBVElPTl9TVEFUSVNUSUNTKSAmIzQzOz0gZGVidWdfc3RhLm9cbiAgMjQ6XHRcbiAgMjU6XHRvYmotJChDT05GSUdfQVRIOUspICYjNDM7PSBhdGg5ay5vXG4gIDI2Olx0XG4gIDI3Olx0YXRoOWtfaHcteTo9XHRcXFxuICAyODpcdFx0XHRhcjkwMDJfaHcubyBcXFxuICAyOTpcdFx0XHRhcjkwMDNfaHcubyBcXFxuICAzMDpcdFx0XHRody5vIFxcXG4gIDMxOlx0XHRcdGFyOTAwM19waHkubyBcXFxuICAzMjpcdFx0XHRhcjkwMDJfcGh5Lm8gXFxcbiAgMzM6XHRcdFx0YXI1MDA4X3BoeS5vIFxcXG4gIDM0Olx0XHRcdGFyOTAwMl9jYWxpYi5vIFxcXG4gIDM1Olx0XHRcdGFyOTAwM19jYWxpYi5vIFxcXG4gIDM2Olx0XHRcdGNhbGliLm8gXFxcbiAgMzc6XHRcdFx0ZWVwcm9tLm8gXFxcbiAgMzg6XHRcdFx0ZWVwcm9tX2RlZi5vIFxcXG4gIDM5Olx0XHRcdGVlcHJvbV80ay5vIFxcXG4gIDQwOlx0XHRcdGVlcHJvbV85Mjg3Lm8gXFxcbiAgNDE6XHRcdFx0YW5pLm8gXFxcbiAgNDI6XHRcdFx0bWFjLm8gXFxcbiAgNDM6XHRcdFx0YXI5MDAyX21hYy5vIFxcXG4gIDQ0Olx0XHRcdGFyOTAwM19tYWMubyBcXFxuICA0NTpcdFx0XHRhcjkwMDNfZWVwcm9tLm8gXFxcbiAgNDY6XHRcdFx0YXI5MDAzX3BhcHJkLm9cbiAgNDc6XHRcbiAgNDg6XHRhdGg5a19ody0kKENPTkZJR19BVEg5S19XT1cpICYjNDM7PSBhcjkwMDNfd293Lm9cbiAgNDk6XHRcbiAgNTA6XHRhdGg5a19ody0kKENPTkZJR19BVEg5S19CVENPRVhfU1VQUE9SVCkgJiM0Mzs9IGJ0Y29leC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA4OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4MjUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiB0aGUgYXRoOWsgRHJpdmVyKioKCk9rYXksIHNvIGBhdGg5ay5rb2AgaXMgYnVpbHQgd2hlbiBgQ09ORklHX0FUSDlLYCBpcyBlbmFibGVkLiBUaGF0IG1ha2VzIHNlbnNlLiBCdXQgd2FpdCBhIHNlY29uZC4uLiBgYXRoOWtgIGlzIHRoYXQgUENJL0FIQiBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciB0aG9zZSBBdGhlcm9zIDgwMi4xMW4gd2lyZWxlc3MgY2FyZHMsIHJpZ2h0PwoKUmlnaHQhIE5vdywgY2FuIEkgZXZlbiAqdGVzdCogb3IgKmZ1enoqIHRoaXMgdGhpbmcgZWZmZWN0aXZlbHkgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBzZXR1cCBsaWtlIFFFTVUgb3IgdXNpbmcgc3l6a2FsbGVyPyBUaGF0JiMzOTtzIHRoZSByZWFsIHF1ZXN0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBzeXprYWxsZXIsIG9yIHBlcmhhcHMgdGhlIG1hYzgwMjExIGh3c2ltLCBvciBldmVuIFVTQiwgb2ZmZXJzIGEgdmlhYmxlIHBhdGggdG8gcmVhY2ggdGhlIGBhdGg5a2AgZHJpdmVyLgoKSG1tLCB3aGF0IGFib3V0IGBhdGg5a19odGNgPyBEb2VzIGl0IGludGVyYWN0IHdpdGggb3IgcmVseSBvbiB0aGUgc2FtZSBpbmZyYXN0cnVjdHVyZSBvciBjb21wb25lbnRzIGFzIGBhdGg5a2A/IERvZXMgaXQgdXRpbGl6ZSBhbnkgb2YgdGhvc2UgKnkqIGZpbGVzPwoKVGltZSB0byBkaWcgaW50byB0aGUgTWFrZWZpbGUgYW5kIHNlZSB3aGF0IHRoZSBidWlsZCBzeXN0ZW0gcmV2ZWFscyBhYm91dCBgYXRoOWtfaHRjYCYjMzk7cyBkZXBlbmRlbmNpZXMgYW5kIGhvdyBpdCByZWxhdGVzIHRvIGBhdGg5a2AuIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwODowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNTE6XHRcdFx0XHRcdFx0ICAgYXI5MDAzX21jaS5vIFxcXG4gIDUyOlx0XHRcdFx0XHRcdCAgIGFyOTAwM19haWMub1xuICA1MzpcdFxuICA1NDpcdGF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX1BDT0VNKSAmIzQzOz0gYXI5MDAzX3J0dC5vXG4gIDU1Olx0XG4gIDU2Olx0YXRoOWtfaHctJChDT05GSUdfQVRIOUtfRFlOQUNLKSAmIzQzOz0gZHluYWNrLm9cbiAgNTc6XHRcbiAgNTg6XHRvYmotJChDT05GSUdfQVRIOUtfSFcpICYjNDM7PSBhdGg5a19ody5vXG4gIDU5Olx0XG4gIDYwOlx0b2JqLSQoQ09ORklHX0FUSDlLX0NPTU1PTikgJiM0Mzs9IGF0aDlrX2NvbW1vbi5vXG4gIDYxOlx0YXRoOWtfY29tbW9uLXk6PVx0Y29tbW9uLm8gXFxcbiAgNjI6XHRcdFx0XHRjb21tb24taW5pdC5vIFxcXG4gIDYzOlx0XHRcdFx0Y29tbW9uLWJlYWNvbi5vIFxcXG4gIDY0Olx0XG4gIDY1Olx0YXRoOWtfY29tbW9uLSQoQ09ORklHX0FUSDlLX0NPTU1PTl9ERUJVRykgJiM0Mzs9IGNvbW1vbi1kZWJ1Zy5vXG4gIDY2Olx0YXRoOWtfY29tbW9uLSQoQ09ORklHX0FUSDlLX0NPTU1PTl9TUEVDVFJBTCkgJiM0Mzs9IGNvbW1vbi1zcGVjdHJhbC5vXG4gIDY3Olx0XG4gIDY4Olx0YXRoOWtfaHRjLXkgJiM0Mzs9XHRodGNfaHN0Lm8gXFxcbiAgNjk6XHRcdFx0aGlmX3VzYi5vIFxcXG4gIDcwOlx0XHRcdHdtaS5vIFxcXG4gIDcxOlx0XHRcdGh0Y19kcnZfdHhyeC5vIFxcXG4gIDcyOlx0XHRcdGh0Y19kcnZfbWFpbi5vIFxcXG4gIDczOlx0XHRcdGh0Y19kcnZfYmVhY29uLm8gXFxcbiAgNzQ6XHRcdFx0aHRjX2Rydl9pbml0Lm8gXFxcbiAgNzU6XHRcdFx0aHRjX2Rydl9ncGlvLm9cbiAgNzY6XHRcbiAgNzc6XHRhdGg5a19odGMtJChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpICYjNDM7PSBodGNfZHJ2X2RlYnVnLm9cbiAgNzg6XHRcbiAgNzk6XHRvYmotJChDT05GSUdfQVRIOUtfSFRDKSAmIzQzOz0gYXRoOWtfaHRjLm9cbiAgODA6XHRcbiAgODE6XHRvYmotJChDT05GSUdfQVRIOUtfUENJX05PX0VFUFJPTSkgJiM0Mzs9IGF0aDlrX3BjaV9vd2xfbG9hZGVyLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDg6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc5MQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDQ5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEF0aGVyb3MgYXRoOWsgV2lyZWxlc3MgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBhdGg5a2Agd2lyZWxlc3MgZHJpdmVyJiMzOTtzIGBNYWtlZmlsZWAuIEkgc2VlIHRoYXQgYGF0aDlrLm9gIGluY2x1ZGVzIGB4bWl0Lm9gLCBhbmQgYGF0aDlrX2h0Yy5vYCBpbmNsdWRlcyBhIGJ1bmNoIG9mIG90aGVyIG1vZHVsZXMgcmVsYXRlZCB0byBIVEMsIFVTQiwgV01JLCBhbmQgc28gb24uIFRoZSBrZXkgb2JzZXJ2YXRpb24gaGVyZSBpcyB0aGF0IGB4bWl0Lm9gIGlzICpleGNsdXNpdmVseSogcGFydCBvZiBgYXRoOWsteWAuIFRoaXMgbWFrZXMgbWUgdGhpbmsgYWJvdXQgdGhlIGhhcmR3YXJlLiBJcyBgYXRoOWtgIGV4Y2x1c2l2ZWx5IGZvciBQQ0kgb3IgQUhCIGhhcmR3YXJlPwoKUmlnaHQsIGNvbmZpcm1lZC4gYGF0aDlrYCBpcyBQQ0kvQUhCLiBOb3cgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBjYW4gdGhpcyBiZSByZWFjaGVkIGluIGEgUUVNVSBlbnZpcm9ubWVudD8gQ29uc2lkZXJpbmcgc3RhbmRhcmQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIEF0aGVyb3MgYXRoOWsgUENJIHdpcmVsZXNzIGNhcmRzLCBpdCYjMzk7cyBzZWVtaW5nIHVubGlrZWx5LiAKCkFoLCB3YWl0ISBJIG5lZWQgdG8gcmUtZXZhbHVhdGUgdGhpcyBpbiB0aGUgY29udGV4dCBvZiB0aGUgcHJvbXB0JiMzOTtzIHN0cnVjdHVyYWwgdW5yZWFjaGFiaWxpdHkgY3JpdGVyaWEuIEl0IHNwZWNpZmljYWxseSBjYWxscyBvdXQgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMgYW5kIGRyaXZlcnMgZm9yIGhhcmR3YXJlIHRoYXQgaXNuJiMzOTt0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIElzIGBhdGg5a2Agc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlPyBJIG5lZWQgdG8gY29uc2lkZXIgaWYgdGhlcmUgYXJlIGFueSB2aXJ0dWFsIGludGVyZmFjZXMgb3Igc2ltdWxhdGlvbiBwYXRocy4KCk9rYXksIHNvIEkga25vdyBgbWFjODAyMTFfaHdzaW1gIGV4aXN0cywgYnV0IHRoYXQmIzM5O3MgYSAqc2VwYXJhdGUqIGRyaXZlci4gRG9lcyBpdCBpbnRlcmFjdCB3aXRoIGBhdGg5a2A/IE5vLCBpdCYjMzk7cyBpbmRlcGVuZGVudC4gV2hhdCBhYm91dCBVU0IgZW11bGF0aW9uPyBEb2VzIGEgVVNCIGdhZGdldCBvciBSYXcgR2FkZ2V0IHNldHVwIG9mZmVyIGEgcG90ZW50aWFsIHBhdGh3YXkgdG8gYGF0aDlrYD8gTm93IHRoZSBgYXRoOWtfaHRjYCBwb3J0aW9uIHNwcmluZ3MgdG8gbWluZC4gUmF3IEdhZGdldCBtaWdodCBhbGxvdyB1cyB0byBlbXVsYXRlIFVTQiBkZXZpY2VzLCB3aGljaCB0aGVuIG1pZ2h0IGFjY2VzcyBgYXRoOWtfaHRjYCwgYnV0IGFnYWluIHRoZSBjb3JlIGB4bWl0LmNgIGlzIE5PVCBwYXJ0IG9mIGBhdGg5a19odGNgISAKCkkmIzM5O20gbm93IGdvaW5nIHRvIHRyaXBsZS1jaGVjayB0aGF0IGB4bWl0LmNgIGlzIE9OTFkgZXZlciB1c2VkIGJ5IGBhdGg5ay5rb2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA4OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aF90eF9zZXR1cF9idWZmZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz03MD1zdGF0aWMgdm9pZCBhdGhfdHhfdXBkYXRlX2JhdyhzdHJ1Y3QgYXRoX2F0eF90aWQgKnRpZCwgc3RydWN0IGF0aF9idWYgKmJmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6NzE6c3RhdGljIHN0cnVjdCBhdGhfYnVmICphdGhfdHhfc2V0dXBfYnVmZmVyKHN0cnVjdCBhdGhfc29mdGMgKnNjLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy03Mi1cdFx0XHRcdFx0ICAgc3RydWN0IGF0aF90eHEgKnR4cSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTkzOD1hdGhfdHhfZ2V0X3RpZF9zdWJmcmFtZShzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IGF0aF90eHEgKnR4cSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTk1NS1cdFx0aWYgKCFmaS1cdTAwM2ViZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6OTU2Olx0XHRcdGJmID0gYXRoX3R4X3NldHVwX2J1ZmZlcihzYywgdHhxLCB0aWQsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTk1Ny1cdFx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MjE5Mj11OCBhdGhfdHhjaGFpbm1hc2tfcmVkdWN0aW9uKHN0cnVjdCBhdGhfc29mdGMgKnNjLCB1OCBjaGFpbm1hc2ssIHUzMiByYXRlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjIxMC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjIxMTpzdGF0aWMgc3RydWN0IGF0aF9idWYgKmF0aF90eF9zZXR1cF9idWZmZXIoc3RydWN0IGF0aF9zb2Z0YyAqc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTIyMTItXHRcdFx0XHRcdCAgIHN0cnVjdCBhdGhfdHhxICp0eHEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0yMzI4PWludCBhdGhfdHhfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yMzY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoyMzcwOlx0YmYgPSBhdGhfdHhfc2V0dXBfYnVmZmVyKHNjLCB0eHEsIHRpZCwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjM3MS1cdGlmICghYmYpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTIzOTQ9dm9pZCBhdGhfdHhfY2FicShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTI0MTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjI0MTg6XHRcdGJmID0gYXRoX3R4X3NldHVwX2J1ZmZlcihzYywgdHhjdGwudHhxLCBOVUxMLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yNDE5LVx0XHRpZiAoIWJmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MjkxOT1pbnQgYXRoOWtfdHg5OV9zZW5kKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjk0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6Mjk0NjpcdGJmID0gYXRoX3R4X3NldHVwX2J1ZmZlcihzYywgdHhjdGwtXHUwMDNldHhxLCBOVUxMLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yOTQ3LVx0aWYgKCFiZikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwODowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTY0OQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhhdDoKCioqSW52ZXN0aWdhdGluZyB0aGUgQXRoZXJvcyBXaXJlbGVzcyBEcml2ZXIgQ29kZSoqCgpSaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgdGFraW5nIGEgbG9vayBhdCBgcGNpLmNgIGFuZCBgYWhiLmNgIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9gIGRpcmVjdG9yeS4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIHN1c3BlY3QgdGhlc2UgZmlsZXMgYXJlIHBpdm90YWwgaW4gdW5kZXJzdGFuZGluZyBob3cgdGhlIEF0aGVyb3MgQVI5ayBzZXJpZXMgd2lyZWxlc3MgY2hpcHNldCBpbnRlcmFjdHMgd2l0aCB0aGUgaG9zdCBzeXN0ZW0sIHNwZWNpZmljYWxseSB2aWEgdGhlIFBDSSBhbmQgQUhCIGJ1c2VzLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBkcml2ZXImIzM5O3Mgb3ZlcmFsbCBzdHJ1Y3R1cmUgYnkgY2hlY2tpbmcgdGhlc2UuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOgoKKiAgICoqSW5pdGlhbGl6YXRpb24gYW5kIHByb2JlIHJvdXRpbmVzOioqIEkgZXhwZWN0IGBwY2kuY2AgYW5kIGBhaGIuY2Agd2lsbCBjb250YWluIHRoZSBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIGRldGVjdGluZyB0aGUgaGFyZHdhcmUgZHVyaW5nIGJvb3QtdXAgb3IgaG90cGx1Z2dpbmcuIEkgd2FudCB0byBzZWUgaG93IHRoZSBkcml2ZXIgaWRlbnRpZmllcyB0aGUgc3BlY2lmaWMgQXRoZXJvcyBkZXZpY2UsIGFsbG9jYXRlcyByZXNvdXJjZXMgKG1lbW9yeSwgaW50ZXJydXB0cywgZXRjLiksIGFuZCBzZXRzIHVwIHRoZSBpbml0aWFsIGhhcmR3YXJlIHJlZ2lzdGVycy4KKiAgICoqQnVzLXNwZWNpZmljIGludGVyYWN0aW9uOioqIEkmIzM5O2xsIHplcm8gaW4gb24gdGhlIGJ1cy1zcGVjaWZpYyBjb2RlLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zOyB3aGVyZSB0aGUgUENJIGFuZCBBSEIgZnVuY3Rpb25zIGFyZSB1c2VkIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIGhhcmR3YXJlLiBJJiMzOTtsbCBiZSB3YXRjaGluZyBob3cgdGhlc2UgY29tbXVuaWNhdGUgdGhyb3VnaCBETUEuCiogICAqKkludGVycnVwdCBoYW5kbGluZzoqKiBJJiMzOTttIGludGVyZXN0ZWQgaW4gaG93IGludGVycnVwdCBoYW5kbGVycyBhcmUgc2V0IHVwIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMgdG8gcmVhZCBkYXRhIGFuZCBzZW5kIGNvbW1hbmRzLgoqICAgKipFcnJvciBoYW5kbGluZyBhbmQgcG93ZXIgbWFuYWdlbWVudDoqKiBJIHdhbnQgdG8gZ2xhbmNlIGF0IGhvdyB0aGUgZHJpdmVyIGRlYWxzIHdpdGggcG90ZW50aWFsIGVycm9ycyBkdXJpbmcgaGFyZHdhcmUgYWNjZXNzLCBkZXZpY2UgcmVzZXQsIGFuZCBwb3dlciBtYW5hZ2VtZW50IGZlYXR1cmVzLgoKRXNzZW50aWFsbHksIEkmIzM5O20gZXhwZWN0aW5nIHRvIGdhaW4gYW4gdW5kZXJzdGFuZGluZyBvZiB0aGUgbG93LWxldmVsIGJ1cyBpbnRlcmFjdGlvbiBhbmQgZ2V0IGEgZmlybSBncmFzcCBvbiB0aGUgY29yZSBjb250cm9sIGZsb3cgb2YgdGhpcyBkcml2ZXIuIFRoZXNlIGZpbGVzIGFyZSB0aGUgZXNzZW50aWFsIGJyaWRnZSBiZXR3ZWVuIHRoZSBBdGhlcm9zIGhhcmR3YXJlIGFuZCB0aGUgcmVzdCBvZiB0aGUgbmV0d29yayBzdGFjay4gSSYjMzk7bGwgYmUgZXhwZWN0aW5nIGxvdHMgb2YgcmVnaXN0ZXIgcmVhZHMgYW5kIHdyaXRlcyBhbmQgdGhlIHVzdWFsIERNQSBzZXR1cCBmb3IgZGF0YSB0cmFuc2Zlci4gSXQgd2lsbCBiZSBoZWxwZnVsIHRvIGVzdGFibGlzaCB0aGUgaGFyZHdhcmUgaW50ZXJhY3Rpb24gYmVmb3JlIGdvaW5nIGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA4OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9wY2lfZHJpdmVyfG1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJ8bW9kdWxlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5a19wY2lfb3dsX2xvYWRlci5jPTIzMj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgb3dsX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWtfcGNpX293bF9sb2FkZXIuYy0yMzctfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5a19wY2lfb3dsX2xvYWRlci5jOjIzODptb2R1bGVfcGNpX2RyaXZlcihvd2xfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5a19wY2lfb3dsX2xvYWRlci5jLTIzOS1NT0RVTEVfQVVUSE9SKFwmIzM0O0NocmlzdGlhbiBMYW1wYXJ0ZXIgXHUwMDNjY2h1bmtlZXlAZ21haWwuY29tXHUwMDNlXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jPTExMzA9c3RhdGljIGludCBfX2luaXQgYXRoOWtfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTE1NS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jOjExNTY6bW9kdWxlX2luaXQoYXRoOWtfaW5pdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTExNTctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA4OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNDQ0CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgQXRoZXJvcyBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoaXMuIE15IGZvY3VzIGlzIG9uIHRoZSBgYXRoOWtgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGl0cyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmNgIGFuZCB6ZXJvIGluIG9uIHRoZSBgYXRoOWtfaW5pdGAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoaXMgYmVhc3QgZ2V0cyBvZmYgdGhlIGdyb3VuZC4gV2hhdCBhcmUgdGhlIGtleSBzdGVwcz8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIHJlZCBmbGFncyBJIGNhbiBzcG90IHF1aWNrbHk/IEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGhhcmR3YXJlIHByb2JpbmcsIHJlc291cmNlIGFsbG9jYXRpb24sIGFueSBjcml0aWNhbCBzZXR1cCBmb3IgdGhlIE1BQyBhbmQgUEhZLCBhbmQgaG93IGl0IGhhbmRsZXMgcG90ZW50aWFsIGVycm9ycyBkdXJpbmcgdGhlIHByb2Nlc3MuIFRoaXMgaW5pdGlhbCBwaGFzZSBpcyBjcnVjaWFsLCBhcyBhbnkgaXNzdWVzIGhlcmUgd2lsbCByaXBwbGUgdGhyb3VnaCB0aGUgZHJpdmVyJiMzOTtzIG9wZXJhdGlvbi4gSSB3YW50IHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB0aGlzIGluaXRpYWxpemF0aW9uIGZsb3csIGZyb20gc3RhcnQgdG8gZmluaXNoLCBzbyBJIGNhbiBiZXR0ZXIgdW5kZXJzdGFuZCB3aGVyZSB0byBsb29rIGluIGNhc2Ugb2YgbGF0ZXIgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwODowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzExMzA6XHRzdGF0aWMgaW50IF9faW5pdCBhdGg5a19pbml0KHZvaWQpXG4xMTMxOlx0e1xuMTEzMjpcdFx0aW50IGVycm9yO1xuMTEzMzpcdFxuMTEzNDpcdFx0ZXJyb3IgPSBhdGhfcGNpX2luaXQoKTtcbjExMzU6XHRcdGlmIChlcnJvciBcdTAwM2MgMCkge1xuMTEzNjpcdFx0XHRwcl9lcnIoXCYjMzQ7Tm8gUENJIGRldmljZXMgZm91bmQsIGRyaXZlciBub3QgaW5zdGFsbGVkXFxuXCYjMzQ7KTtcbjExMzc6XHRcdFx0ZXJyb3IgPSAtRU5PREVWO1xuMTEzODpcdFx0XHRnb3RvIGVycl9vdXQ7XG4xMTM5Olx0XHR9XG4xMTQwOlx0XG4xMTQxOlx0XHRlcnJvciA9IGF0aF9haGJfaW5pdCgpO1xuMTE0MjpcdFx0aWYgKGVycm9yIFx1MDAzYyAwKSB7XG4xMTQzOlx0XHRcdGVycm9yID0gLUVOT0RFVjtcbjExNDQ6XHRcdFx0Z290byBlcnJfcGNpX2V4aXQ7XG4xMTQ1Olx0XHR9XG4xMTQ2Olx0XG4xMTQ3Olx0XHRkbWlfY2hlY2tfc3lzdGVtKGF0aDlrX3F1aXJrcyk7XG4xMTQ4Olx0XG4xMTQ5Olx0XHRyZXR1cm4gMDtcbjExNTA6XHRcbjExNTE6XHQgZXJyX3BjaV9leGl0OlxuMTE1MjpcdFx0YXRoX3BjaV9leGl0KCk7XG4xMTUzOlx0IGVycl9vdXQ6XG4xMTU0Olx0XHRyZXR1cm4gZXJyb3I7XG4xMTU1Olx0fVxuMTE1NjpcdG1vZHVsZV9pbml0KGF0aDlrX2luaXQpO1xuMTE1NzpcdFxuMTE1ODpcdHN0YXRpYyB2b2lkIF9fZXhpdCBhdGg5a19leGl0KHZvaWQpXG4xMTU5Olx0e1xuMTE2MDpcdFx0aXNfYXRoOWtfdW5sb2FkZWQgPSB0cnVlO1xuMTE2MTpcdFx0YXRoX2FoYl9leGl0KCk7XG4xMTYyOlx0XHRhdGhfcGNpX2V4aXQoKTtcbjExNjM6XHRcdHByX2luZm8oXCYjMzQ7JXM6IERyaXZlciB1bmxvYWRlZFxcblwmIzM0OywgZGV2X2luZm8pO1xuMTE2NDpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDg6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxODEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBhdGg5ayBJbml0aWFsaXphdGlvbioqCgpSaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBgYXRoOWtgIGRyaXZlci4gU2VlbXMgbGlrZSBpdCYjMzk7cyBnZXR0aW5nIGtpY2tlZCBvZmYgd2l0aCBgYXRoX3BjaV9pbml0KClgIGFuZCBgYXRoX2FoYl9pbml0KClgLiBTdGFuZGFyZCBzdHVmZiwgdGhlIFBDSSBhbmQgQUhCIHZlcnNpb25zIG9mIHRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lcy4gR2l2ZW4gdGhlIHRhcmdldCBoYXJkd2FyZSwgSSYjMzk7bSBndWVzc2luZyB3ZSYjMzk7cmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBhIFBDSS1iYXNlZCBzeXN0ZW0sIGFzIEFIQiBpcyB1c2VkIGxlc3MuCgpMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBpbnRvIGBhdGhfcGNpX2luaXQoKWAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNvcmUgUENJLXNwZWNpZmljIHNldHVwIHdpbGwgYmUgaGFwcGVuaW5nLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyBkZXZpY2UgcHJvYmUsIHJlc291cmNlIGFsbG9jYXRpb24sIGFuZCBhbnkgcG90ZW50aWFsIHF1aXJrcyByZWxhdGVkIHRvIHRoZSBBdGhlcm9zIGNoaXBzZXQgYW5kIHRoZSBQQ0kgYnVzLiBJJiMzOTttIGtlZW4gdG8gZXhhbWluZSB0aGUgYGF0aF9wY2lfaW5pdGAgZnVuY3Rpb24sIEkgaGF2ZSBhIGZlZWxpbmcgdGhlcmUgbWlnaHQgYmUgaXNzdWVzLiBJIHdhbnQgdG8gbG9vayBpbnRvIGl0cyBpbXBsZW1lbnRhdGlvbiBhbmQgc2VlIHdoYXQgaXQgaXMgZG9pbmcgc3BlY2lmaWNhbGx5LiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBzbyBsZXQmIzM5O3MgZ2V0IHN0YXJ0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA4OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aF9wY2lfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmg9MTEzOD12b2lkIGF0aDlrX3BzX3Jlc3RvcmUoc3RydWN0IGF0aF9zb2Z0YyAqc2MpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oLTExNDAtI2lmZGVmIENPTkZJR19BVEg5S19QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oOjExNDE6aW50IGF0aF9wY2lfaW5pdCh2b2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oLTExNDItdm9pZCBhdGhfcGNpX2V4aXQodm9pZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaC0xMTQzLSNlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaDoxMTQ0OnN0YXRpYyBpbmxpbmUgaW50IGF0aF9wY2lfaW5pdCh2b2lkKSB7IHJldHVybiAwOyB9O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTE0NS1zdGF0aWMgaW5saW5lIHZvaWQgYXRoX3BjaV9leGl0KHZvaWQpIHt9O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9MTEzMD1zdGF0aWMgaW50IF9faW5pdCBhdGg5a19pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0xMTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoxMTM0Olx0ZXJyb3IgPSBhdGhfcGNpX2luaXQoKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTEzNS1cdGlmIChlcnJvciBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYz0xMDc1PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBhdGhfcGNpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcGNpLmMtMTA4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYzoxMDgzOmludCBhdGhfcGNpX2luaXQodm9pZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYy0xMDg0LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDg6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM5OTcKCQkJCQkJCW91dHB1dDogMTE4CgkJCQkJCQl0aG91Z2h0czogNzU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBQcm9wb3NlZCBQYXRjaCYjMzk7cyBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSB0aGUgbW9kaWZpY2F0aW9uIHRvIGBhdGhfdHhfc2V0dXBfYnVmZmVyYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNgLCBpcyBsaWtlbHkgKm5vdCogc3VpdGFibGUgZm9yIGZ1enppbmcgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudC4gTGV0JiMzOTtzIGRlbHZlIGludG8gdGhlIHJlYXNvbmluZy4KCkZpcnN0LCBJIHNlZSB0aGF0IHRoZSBgYXRoX3BjaV9kcml2ZXJgIGhhbmRsZXMgQXRoZXJvcyBQQ0kvUENJZSBjYXJkcywgYW5kIGBhdGhfYWhiX2RyaXZlcmAgaXMgZm9yIHRoZSBBSEIgYnVzIChRdWFsY29tbSBBdGhlcm9zIFNvQykuIE5laXRoZXIgb2YgdGhlc2UgaXMgdHlwaWNhbGx5IGVtdWxhdGVkIHdpdGhpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIERpZ2dpbmcgYSBiaXQgZGVlcGVyLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBgYXRoOWtgIGlzIHRoZSBkcml2ZXIgaW4gcXVlc3Rpb24sIGRlc2lnbmVkIGZvciA4MDIuMTFuIFBDSS9BSEIgaGFyZHdhcmUuCgpNeSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBndWlkZWxpbmVzIGlzIGNydWNpYWwgaGVyZS4gU2VjdGlvbiAyIGhpZ2hsaWdodHMgdW5yZWFjaGFibGUgaGFyZHdhcmUsIHNwZWNpZmljYWxseSBtZW50aW9uaW5nIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIGFuZCBHUFUgZHJpdmVycy4gIFRoZXNlIHJlcXVpcmUgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLCB3aGljaCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUuIFNlY3Rpb24gMSByZWluZm9yY2VzIHRoaXMg4oCTIHJlYWNoYWJpbGl0eSBpcyB0aGUgcHJpbWFyeSBnYXRlLiBJZiB0aGUgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUsIGl0IHNob3VsZG4mIzM5O3QgYmUgZnV6emVkLgoKVGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyBgYXRoX3R4X3NldHVwX2J1ZmZlcmAsIGEgY29yZSBmdW5jdGlvbiB3aXRoaW4gdGhlIGBhdGg5a2AgZHJpdmVyLiAgVGhlIGNyaXRpY2FsIHBvaW50IGlzIHRoYXQgdGhpcyBkcml2ZXIgaXMgZm9yICpwaHlzaWNhbCogQXRoZXJvcyA4MDIuMTFuIFBDSS9QQ0llIGFuZCBBSEIgZGV2aWNlcy4gV2hpbGUgZHJpdmVycyBsaWtlIGBhdGg5a19odGNgIGZvciBVU0Igd2lyZWxlc3MgZGV2aWNlcyBvciBgbWFjODAyMTFfaHdzaW1gIGZvciB2aXJ0dWFsIGRldmljZXMgYXJlIGZ1enplYWJsZSwgdGhlIGBhdGg5a2AgY29kZSBwYXRoIGlzIG5vdC4KClRoZSBmdXp6aW5nLXJlbGF0ZWQgbWV0YWRhdGEgY29uZmlybXMgbXkgc3VzcGljaW9uczogYFdvcnRoRnV6emluZzogZmFsc2VgLCBgRW5hYmxlQ29uZmlnczogbnVsbCAvIFtdYCwgYW5kIGBGb2N1c1N5bWJvbHM6IFtdYC4gIFRoZSBwcm92aWRlZCByZWFzb25pbmcgaXMgc3BvdC1vbjogIHRoZSBsYWNrIG9mIGVtdWxhdGlvbiBmb3IgdGhlc2UgcGh5c2ljYWwgUENJZS9BSEIgd2lyZWxlc3MgZGV2aWNlcyBpbiBzdGFuZGFyZCBlbnZpcm9ubWVudHMgbWFrZXMgdGhpcyBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4KClRoZXJlZm9yZSwgSSYjMzk7bSBjb25maWRlbnQgaW4gY29uY2x1ZGluZyB0aGF0IHRoaXMgcGF0Y2ggaXNuJiMzOTt0IHN1aXRhYmxlIGZvciBzdGFuZGFyZCBmdXp6aW5nIGVmZm9ydHMuIEkgc2hvdWxkIHByb2NlZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwODowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGNvZGUgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYyBpcyBwYXJ0IG9mIHRoZSBhdGg5ayBkcml2ZXIgZm9yIHBoeXNpY2FsIEF0aGVyb3MgODAyLjExbiBQQ0kvQUhCIHdpcmVsZXNzIGFkYXB0ZXJzLiBCZWNhdXNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChlLmcuIFFFTVUvR0NFKSBkbyBub3QgZW11bGF0ZSBhdGg5ayBQQ0kvQUhCIGhhcmR3YXJlLCB0aGlzIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jIGlzIHBhcnQgb2YgdGhlIGF0aDlrIGRyaXZlciBmb3IgcGh5c2ljYWwgQXRoZXJvcyA4MDIuMTFuIFBDSS9BSEIgd2lyZWxlc3MgYWRhcHRlcnMuIEJlY2F1c2Ugc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4gUUVNVS9HQ0UpIGRvIG5vdCBlbXVsYXRlIGF0aDlrIFBDSS9BSEIgaGFyZHdhcmUsIHRoaXMgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwODowNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDZUMDg6MDU6NDMuODIwMTMwODY4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk2MzE0NjY4MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBjb2RlIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMgaXMgcGFydCBvZiB0aGUgYXRoOWsgZHJpdmVyIGZvciBwaHlzaWNhbCBBdGhlcm9zIDgwMi4xMW4gUENJL0FIQiB3aXJlbGVzcyBhZGFwdGVycy4gQmVjYXVzZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoZS5nLiBRRU1VL0dDRSkgZG8gbm90IGVtdWxhdGUgYXRoOWsgUENJL0FIQiBoYXJkd2FyZSwgdGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA4OjA1OjQzLjgyMDEzNzIwOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc3NzAwNjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOTFiNWUwZmI2ZTUwNzNlZjdkZmUxNmYzMmU4MWE0ZmVlMjlkZGZhNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCA2IDA4OjA1OjQyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jXFxuaW5kZXggODlkOGIzMTc4Nzg0Ni4uMTZiNjQ5MDhlOGRmYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuY1xcbkBAIC0yMjU1LDYgKzIyNTUsMTEgQEAgc3RhdGljIHN0cnVjdCBhdGhfYnVmICphdGhfdHhfc2V0dXBfYnVmZmVyKHN0cnVjdCBhdGhfc29mdGMgKnNjLFxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKGZpLVxcdTAwM2ViZikge1xcbitcXHRcXHRmaS1cXHUwMDNlYmYtXFx1MDAzZWJmX21wZHUgPSBOVUxMO1xcbitcXHRcXHRmaS1cXHUwMDNlYmYtXFx1MDAzZWJmX2J1Zl9hZGRyID0gMDtcXG4rXFx0XFx0YXRoX3R4X3JldHVybl9idWZmZXIoc2MsIGZpLVxcdTAwM2ViZik7XFxuK1xcdH1cXG4gXFx0ZmktXFx1MDAzZWJmID0gYmY7XFxuIFxcbiBcXHRyZXR1cm4gYmY7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA4OjA1OjQ0LjQ5ODc3Njk1OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6Mzg5NTI4MDcxNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYyBpcyBwYXJ0IG9mIHRoZSBhdGg5ayBkcml2ZXIgZm9yIHBoeXNpY2FsIEF0aGVyb3MgODAyLjExbiBQQ0kvQUhCIHdpcmVsZXNzIGFkYXB0ZXJzLiBCZWNhdXNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChlLmcuIFFFTVUvR0NFKSBkbyBub3QgZW11bGF0ZSBhdGg5ayBQQ0kvQUhCIGhhcmR3YXJlLCB0aGlzIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5MWI1ZTBmYjZlNTA3M2VmN2RmZTE2ZjMyZTgxYTRmZWUyOWRkZmE1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAwODowNTo0MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jXG5pbmRleCA4OWQ4YjMxNzg3ODQ2Li4xNmI2NDkwOGU4ZGZhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuY1xuQEAgLTIyNTUsNiArMjI1NSwxMSBAQCBzdGF0aWMgc3RydWN0IGF0aF9idWYgKmF0aF90eF9zZXR1cF9idWZmZXIoc3RydWN0IGF0aF9zb2Z0YyAqc2MsXG4gXHRcdHJldHVybiBOVUxMO1xuIFx0fVxuIFxuK1x0aWYgKGZpLVx1MDAzZWJmKSB7XG4rXHRcdGZpLVx1MDAzZWJmLVx1MDAzZWJmX21wZHUgPSBOVUxMO1xuK1x0XHRmaS1cdTAwM2ViZi1cdTAwM2ViZl9idWZfYWRkciA9IDA7XG4rXHRcdGF0aF90eF9yZXR1cm5fYnVmZmVyKHNjLCBmaS1cdTAwM2ViZik7XG4rXHR9XG4gXHRmaS1cdTAwM2ViZiA9IGJmO1xuIFxuIFx0cmV0dXJuIGJmO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDg6MDU6NDQuNDk4Nzc5Mjc5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODczMzQ0ODMzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCBmb3IgU3l6a2FsbGVyIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGFzc2VzcyBpZiB0aGlzIHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jYCBpcyB3b3J0aCBwdXJzdWluZyB3aXRoIHN5emthbGxlci4gRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZS4gSSdsbCB1c2UgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIHRvIGV4YW1pbmUgdGhlIGNoYW5nZXMgYW5kIHRoZSBzdXJyb3VuZGluZyBjb2RlIGZvciBzb21lIGNvbnRleHQuIFJpZ2h0LCBzbyB0aGlzIGlzIGFib3V0IHRoZSBhdGg5ayBkcml2ZXIuIEFoLCB0aGUgQXRoZXJvcyA4MDIuMTFuIHdpcmVsZXNzIGRyaXZlci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGF0dGFjayBzdXJmYWNlLiBDYW4gSSByZWFjaCB0aGlzIHRoaW5nIHRocm91Z2ggc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gb3IgaXMgdGhpcyBsb2NrZWQgYmVoaW5kIHNwZWNpZmljIGhhcmR3YXJlIGFjY2Vzcz8gV2FpdCwgSSB0aGluayBJIHJlbWVtYmVyLi4uIGF0aDlrIGlzIFBDSSwgYW5kIEFIQi4gQW5kIHdhc24ndCB0aGVyZSBhbiBhdGg5a19odGMgdGhhdCB1c2VkIFVTQj9cblxuVGhpcyBnZXRzIGNvbXBsaWNhdGVkIHF1aWNrbHksIGlzIHRoZSBjb2RlIHVzZWQgYnkgYXRoOWtfaHRjIHJlbGF0ZWQgdG8gdGhlIHNhbWUgZmlsZT8gSSBuZWVkIHRvIGNsYXJpZnkgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGF0aDlrIGFuZCBhdGg5a19odGMuIFNvLCBpcyBgYXRoOWsveG1pdC5jYCB1c2VkIGJ5IGJvdGg/IE9yIGlzIGBhdGg5a2AgUENJL0FIQiBvbmx5PyBJcyB0aGVyZSBzb21lIGtpbmQgb2YgZW11bGF0aW9uIEkgY2FuIHRha2UgYWR2YW50YWdlIG9mPyBDYW4gSSBqdXN0IHJ1biB0aGlzIG9uIGEgVVNCIGdhZGdldCwgb3Igd2lsbCBJIG5lZWQgYSByZWFsIHBpZWNlIG9mIGhhcmR3YXJlPyBBbHJpZ2h0LCBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBLY29uZmlnIHRvIHNvcnQgdGhpcyBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MDMsIk91dHB1dFRva2VucyI6NzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwODowNTo1My4yMzIyMzY5MThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc2NDUzNjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aF90eF9zZXR1cF9idWZmZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTcwPXN0YXRpYyB2b2lkIGF0aF90eF91cGRhdGVfYmF3KHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6NzE6c3RhdGljIHN0cnVjdCBhdGhfYnVmICphdGhfdHhfc2V0dXBfYnVmZmVyKHN0cnVjdCBhdGhfc29mdGMgKnNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtNzItXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGF0aF90eHEgKnR4cSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9OTM4PWF0aF90eF9nZXRfdGlkX3N1YmZyYW1lKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy05NTUtXFx0XFx0aWYgKCFmaS1cXHUwMDNlYmYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzo5NTY6XFx0XFx0XFx0YmYgPSBhdGhfdHhfc2V0dXBfYnVmZmVyKHNjLCB0eHEsIHRpZCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTk1Ny1cXHRcXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTIxOTI9dTggYXRoX3R4Y2hhaW5tYXNrX3JlZHVjdGlvbihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgdTggY2hhaW5tYXNrLCB1MzIgcmF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjIxMC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjIyMTE6c3RhdGljIHN0cnVjdCBhdGhfYnVmICphdGhfdHhfc2V0dXBfYnVmZmVyKHN0cnVjdCBhdGhfc29mdGMgKnNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjIxMi1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoX3R4cSAqdHhxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0yMzI4PWludCBhdGhfdHhfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTIzNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoyMzcwOlxcdGJmID0gYXRoX3R4X3NldHVwX2J1ZmZlcihzYywgdHhxLCB0aWQsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yMzcxLVxcdGlmICghYmYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MjM5ND12b2lkIGF0aF90eF9jYWJxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yNDE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjQxODpcXHRcXHRiZiA9IGF0aF90eF9zZXR1cF9idWZmZXIoc2MsIHR4Y3RsLnR4cSwgTlVMTCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTI0MTktXFx0XFx0aWYgKCFiZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MjkxOT1pbnQgYXRoOWtfdHg5OV9zZW5kKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yOTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6Mjk0NjpcXHRiZiA9IGF0aF90eF9zZXR1cF9idWZmZXIoc2MsIHR4Y3RsLVxcdTAwM2V0eHEsIE5VTEwsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yOTQ3LVxcdGlmICghYmYpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDg6MDU6NTMuNTA4Njk1NjI0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MDA0OTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkFUSDlLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Mjpjb25maWcgQVRIOUtfSFdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NDpjb25maWcgQVRIOUtfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTYtXFx0c2VsZWN0IEFUSF9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3OmNvbmZpZyBBVEg5S19DT01NT05fREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy04LVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5OmNvbmZpZyBBVEg5S19ERlNfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEwLVxcdGRlZl9ib29sIHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTpcXHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXFx1MDAyNlxcdTAwMjYgQVRIOUtfREZTX0NFUlRJRklFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEzOmNvbmZpZyBBVEg5S19CVENPRVhfU1VQUE9SVFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE0LVxcdGJvb2wgXFxcIkF0aGVyb3MgYmx1ZXRvb3RoIGNvZXhpc3RlbmNlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTU6XFx0ZGVwZW5kcyBvbiAoQVRIOUsgfHwgQVRIOUtfSFRDKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE2LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MjE6Y29uZmlnIEFUSDlLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjItXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgODAyLjExbiB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjQtXFx0c2VsZWN0IE1BQzgwMjExX0xFRFMgaWYgTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyNTpcXHRzZWxlY3QgQVRIOUtfSFdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyNjpcXHRzZWxlY3QgQVRIOUtfQ09NTU9OXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Mzk6Y29uZmlnIEFUSDlLX1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTQwLVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsgUENJL1BDSWUgYnVzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNDEtXFx0ZGVmYXVsdCB5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NDI6XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00My1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy00Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo0ODpjb25maWcgQVRIOUtfQUhCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNDktXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBBSEIgYnVzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NTA6XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBPRlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTUxLVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6NTg6Y29uZmlnIEFUSDlLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy01OS1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIGRlYnVnZ2luZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo2MDpcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IERFQlVHX0ZTIFxcdTAwMjZcXHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo2MTpcXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNjItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6Njk6Y29uZmlnIEFUSDlLX1NUQVRJT05fU1RBVElTVElDU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTcwLVxcdGJvb2wgXFxcIkRldGFpbGVkIHN0YXRpb24gc3RhdGlzdGljc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3MTpcXHRkZXBlbmRzIG9uIEFUSDlLIFxcdTAwMjZcXHUwMDI2IEFUSDlLX0RFQlVHRlMgXFx1MDAyNlxcdTAwMjYgREVCVUdfRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy03Mi1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjc2OmNvbmZpZyBBVEg5S19UWDk5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzctXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayBUWDk5IHRlc3Rpbmcgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo3ODpcXHRkZXBlbmRzIG9uIEFUSDlLX0RFQlVHRlMgXFx1MDAyNlxcdTAwMjYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctNzktXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy05NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzo5Njpjb25maWcgQVRIOUtfREZTX0NFUlRJRklFRFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTk3LVxcdGJvb2wgXFxcIkF0aGVyb3MgREZTIHN1cHBvcnQgZm9yIGNlcnRpZmllZCBwbGF0Zm9ybXNcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6OTg6XFx0ZGVwZW5kcyBvbiBBVEg5SyBcXHUwMDI2XFx1MDAyNiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy05OS1cXHRkZWZhdWx0IG5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTExNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMTU6Y29uZmlnIEFUSDlLX0RZTkFDS1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTExNi1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIEFDSyB0aW1lb3V0IGVzdGltYXRpb24gYWxnb3JpdGhtXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjExNzpcXHRkZXBlbmRzIG9uIEFUSDlLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTE4LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjEyNDpjb25maWcgQVRIOUtfV09XXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTI1LVxcdGJvb2wgXFxcIldha2Ugb24gV2lyZWxlc3MgTEFOIHN1cHBvcnQgKEVYUEVSSU1FTlRBTClcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTI2OlxcdGRlcGVuZHMgb24gQVRIOUsgXFx1MDAyNlxcdTAwMjYgUE1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMjctXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTMyOmNvbmZpZyBBVEg5S19SRktJTExcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMzMtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5ayByZmtpbGwgc3VwcG9ydFxcXCIgaWYgRVhQRVJUXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTM0OlxcdGRlcGVuZHMgb24gQVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxMzU6XFx0ZGVwZW5kcyBvbiBSRktJTEw9eSB8fCBSRktJTEw9QVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xMzYtXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTQyOmNvbmZpZyBBVEg5S19DSEFOTkVMX0NPTlRFWFRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNDMtXFx0Ym9vbCBcXFwiQ2hhbm5lbCBDb250ZXh0IHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTQ0OlxcdGRlcGVuZHMgb24gQVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNDUtXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTUxOmNvbmZpZyBBVEg5S19QQ09FTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1Mi1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrIHN1cHBvcnQgZm9yIFBDIE9FTSBjYXJkc1xcXCIgaWYgRVhQRVJUXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTUzOlxcdGRlcGVuZHMgb24gQVRIOUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTQtXFx0ZGVmYXVsdCB5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE1Njpjb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE1Ny1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGg5ayBwY2kgbG9hZGVyIGZvciBFRVBST00tbGVzcyBjaGlwc1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNTg6XFx0ZGVwZW5kcyBvbiBBVEg5S19QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNTktXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzUtXFx0c2VsZWN0IE1BQzgwMjExX0xFRFMgaWYgTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9TUFDODAyMTFcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxNzY6XFx0c2VsZWN0IEFUSDlLX0hXXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTc3OlxcdHNlbGVjdCBBVEg5S19DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4Nzpjb25maWcgQVRIOUtfSFRDX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGg5a19odGMgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE4OTpcXHRkZXBlbmRzIG9uIEFUSDlLX0hUQyBcXHUwMDI2XFx1MDAyNiBERUJVR19GU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE5MDpcXHRzZWxlY3QgQVRIOUtfQ09NTU9OX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTkxLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoxOTU6Y29uZmlnIEFUSDlLX0hXUk5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTk2LVxcdGJvb2wgXFxcIlJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTk3OlxcdGRlcGVuZHMgb24gQVRIOUsgXFx1MDAyNlxcdTAwMjYgKEhXX1JBTkRPTSA9IHkgfHwgSFdfUkFORE9NID0gQVRIOUspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTk4LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjIwNjpjb25maWcgQVRIOUtfQ09NTU9OX1NQRUNUUkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA3LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoOWsvYXRoOWtfaHRjIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZzoyMDg6XFx0ZGVwZW5kcyBvbiBBVEg5S19ERUJVR0ZTIHx8IEFUSDlLX0hUQ19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMjA5LVxcdHNlbGVjdCBSRUxBWVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwODowNTo1My41NjU3MTIyODRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTg4MTc3MTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgTWFrZWZpbGU6XG5cbioqQW5hbHl6aW5nIHRoZSBBVEg5SyBhbmQgQVRIOUtfSFRDIENvbXBpbGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIHNwZWNpZmljIG9iamVjdCBmaWxlcyBnZXQgY29tcGlsZWQgZGVwZW5kaW5nIG9uIHdoZXRoZXIgd2UncmUgYnVpbGRpbmcgZm9yIGEgc3RhbmRhcmQgQVRIOUsgZGV2aWNlIG9yIHRoZSBBVEg5S19IVEMgdmFyaWFudC4gVGhpcyBpcyBhbGwgYWJvdXQgYnVpbGQgY29uZmlndXJhdGlvbiwgYW5kIGhvdyB0aGUgTWFrZWZpbGUgaGFuZGxlcyBjb25kaXRpb25hbCBjb21waWxhdGlvbi4gSSdsbCBuZWVkIHRvIGNhcmVmdWxseSBleGFtaW5lIHRoZSBydWxlcyBhbmQgYW55IGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgKGxpa2VseSB1c2luZyBgaWZkZWZgLCBgaWZuZXFgLCBvciBtYXliZSBzb21lIGNvbXBsZXggdmFyaWFibGUgbWFuaXB1bGF0aW9uKSB0byBtYXAgdGhlIG9iamVjdCBmaWxlcyB0byB0aGUgYXBwcm9wcmlhdGUgdGFyZ2V0LiBUaGUga2V5IGlzIHRvIGZpbmQgaG93IHRoZSBNYWtlZmlsZSBkaXN0aW5ndWlzaGVzIGJldHdlZW4gdGhlIHR3byBjb25maWd1cmF0aW9ucy4gSSBzdXNwZWN0IHRoZXJlIHdpbGwgYmUgYSBjbGVhcmx5IG5hbWVkIGNvbmRpdGlvbmFsIHZhcmlhYmxlIHRoYXQgZGlmZmVyZW50aWF0ZXMgYmV0d2VlbiBzdGFuZGFyZCBhbmQgSFRDIGRyaXZlcnMuIFVuZGVyc3RhbmRpbmcgdGhhdCBpcyB0aGUga2V5IHRvIHRyYWNpbmcgdGhlIGRlcGVuZGVuY2llcyBhbmQgc2VlaW5nIHByZWNpc2VseSB3aGljaCBvYmplY3QgZmlsZXMgYXJlIGluY2x1ZGVkIGluIGVhY2ggYnVpbGQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczOTksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDg6MDU6NTUuNzUzODkyMDI1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMzc3MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhtaXQub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZT0yPWF0aDlrLXkgKz1cXHRiZWFjb24ubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUtNi1cXHRcXHRyZWN2Lm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZTo3OlxcdFxcdHhtaXQubyBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlLTgtXFx0XFx0bGluay5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDg6MDU6NTUuODM2Mjc0OTM0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI1MjEwMjUzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgdGhlIEF0aGVyb3MgV2lyZWxlc3MgRHJpdmVyIEJ1aWxkIFByb2Nlc3MqKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgYXRoOWtgIGFuZCBgYXRoOWtfaHRjYCBkcml2ZXJzIGFyZSBiZWluZyBidWlsdCB3aXRoaW4gdGhlIGtlcm5lbC4gSXQgc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZGlnIGludG8gdGhlIGBNYWtlZmlsZWAgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2AsIGJlY2F1c2UgdGhhdCdzIHVzdWFsbHkgdGhlIGNvbW1hbmQgY2VudGVyIGZvciB0aGlzIGtpbmQgb2YgYnVpbGQgY29uZmlndXJhdGlvbi4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhlIGJ1aWxkIHN5c3RlbSBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIGBhdGg5a2AgYW5kIGBhdGg5a19odGNgLiBUaGVyZSdzIHByb2JhYmx5IHNvbWUgY29uZGl0aW9uYWwgbG9naWMgb3IgdmFyaWFibGUgYXNzaWdubWVudCB3aXRoaW4gdGhhdCBgTWFrZWZpbGVgIHRoYXQgY29udHJvbHMgd2hpY2ggbW9kdWxlcyBnZXQgY29tcGlsZWQgYW5kIGxpbmtlZC4gSSdsbCBuZWVkIHRvIHBhcnNlIHRocm91Z2ggdGhhdCBhbmQgc2VlIHdoYXQgZmxhZ3Mgb3IgZGVwZW5kZW5jaWVzIGFyZSBiZWluZyB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Nzc4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDg6MDU6NTguMDg4MzgwOTQ2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5MTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xcbiAgIDI6XFx0YXRoOWsteSArPVxcdGJlYWNvbi5vIFxcXFxcXG4gICAzOlxcdFxcdFxcdGdwaW8ubyBcXFxcXFxuICAgNDpcXHRcXHRcXHRpbml0Lm8gXFxcXFxcbiAgIDU6XFx0XFx0XFx0bWFpbi5vIFxcXFxcXG4gICA2OlxcdFxcdFxcdHJlY3YubyBcXFxcXFxuICAgNzpcXHRcXHRcXHR4bWl0Lm8gXFxcXFxcbiAgIDg6XFx0XFx0XFx0bGluay5vIFxcXFxcXG4gICA5OlxcdFxcdFxcdGFudGVubmEubyBcXFxcXFxuICAxMDpcXHRcXHRcXHRjaGFubmVsLm9cXG4gIDExOlxcdFxcbiAgMTI6XFx0YXRoOWstJChDT05GSUdfQVRIOUtfQlRDT0VYX1NVUFBPUlQpICs9IG1jaS5vXFxuICAxMzpcXHRhdGg5ay0kKENPTkZJR19BVEg5S19QQ0kpICs9IHBjaS5vXFxuICAxNDpcXHRhdGg5ay0kKENPTkZJR19BVEg5S19BSEIpICs9IGFoYi5vXFxuICAxNTpcXHRhdGg5ay0kKENPTkZJR19BVEg5S19ERlNfREVCVUdGUykgKz0gZGZzX2RlYnVnLm9cXG4gIDE2OlxcdGF0aDlrLSQoQ09ORklHX0FUSDlLX0RGU19DRVJUSUZJRUQpICs9IGRmcy5vXFxuICAxNzpcXHRhdGg5ay0kKENPTkZJR19BVEg5S19UWDk5KSArPSB0eDk5Lm9cXG4gIDE4OlxcdGF0aDlrLSQoQ09ORklHX0FUSDlLX1dPVykgKz0gd293Lm9cXG4gIDE5OlxcdGF0aDlrLSQoQ09ORklHX0FUSDlLX0hXUk5HKSArPSBybmcub1xcbiAgMjA6XFx0XFxuICAyMTpcXHRhdGg5ay0kKENPTkZJR19BVEg5S19ERUJVR0ZTKSArPSBkZWJ1Zy5vXFxuICAyMjpcXHRcXG4gIDIzOlxcdGF0aDlrLSQoQ09ORklHX0FUSDlLX1NUQVRJT05fU1RBVElTVElDUykgKz0gZGVidWdfc3RhLm9cXG4gIDI0OlxcdFxcbiAgMjU6XFx0b2JqLSQoQ09ORklHX0FUSDlLKSArPSBhdGg5ay5vXFxuICAyNjpcXHRcXG4gIDI3OlxcdGF0aDlrX2h3LXk6PVxcdFxcXFxcXG4gIDI4OlxcdFxcdFxcdGFyOTAwMl9ody5vIFxcXFxcXG4gIDI5OlxcdFxcdFxcdGFyOTAwM19ody5vIFxcXFxcXG4gIDMwOlxcdFxcdFxcdGh3Lm8gXFxcXFxcbiAgMzE6XFx0XFx0XFx0YXI5MDAzX3BoeS5vIFxcXFxcXG4gIDMyOlxcdFxcdFxcdGFyOTAwMl9waHkubyBcXFxcXFxuICAzMzpcXHRcXHRcXHRhcjUwMDhfcGh5Lm8gXFxcXFxcbiAgMzQ6XFx0XFx0XFx0YXI5MDAyX2NhbGliLm8gXFxcXFxcbiAgMzU6XFx0XFx0XFx0YXI5MDAzX2NhbGliLm8gXFxcXFxcbiAgMzY6XFx0XFx0XFx0Y2FsaWIubyBcXFxcXFxuICAzNzpcXHRcXHRcXHRlZXByb20ubyBcXFxcXFxuICAzODpcXHRcXHRcXHRlZXByb21fZGVmLm8gXFxcXFxcbiAgMzk6XFx0XFx0XFx0ZWVwcm9tXzRrLm8gXFxcXFxcbiAgNDA6XFx0XFx0XFx0ZWVwcm9tXzkyODcubyBcXFxcXFxuICA0MTpcXHRcXHRcXHRhbmkubyBcXFxcXFxuICA0MjpcXHRcXHRcXHRtYWMubyBcXFxcXFxuICA0MzpcXHRcXHRcXHRhcjkwMDJfbWFjLm8gXFxcXFxcbiAgNDQ6XFx0XFx0XFx0YXI5MDAzX21hYy5vIFxcXFxcXG4gIDQ1OlxcdFxcdFxcdGFyOTAwM19lZXByb20ubyBcXFxcXFxuICA0NjpcXHRcXHRcXHRhcjkwMDNfcGFwcmQub1xcbiAgNDc6XFx0XFxuICA0ODpcXHRhdGg5a19ody0kKENPTkZJR19BVEg5S19XT1cpICs9IGFyOTAwM193b3cub1xcbiAgNDk6XFx0XFxuICA1MDpcXHRhdGg5a19ody0kKENPTkZJR19BVEg5S19CVENPRVhfU1VQUE9SVCkgKz0gYnRjb2V4Lm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwODowNTo1OC4wODg0OTI4NDZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjU4OTYyOTk2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHRoZSBhdGg5ayBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBgYXRoOWsua29gIGlzIGJ1aWx0IHdoZW4gYENPTkZJR19BVEg5S2AgaXMgZW5hYmxlZC4gVGhhdCBtYWtlcyBzZW5zZS4gQnV0IHdhaXQgYSBzZWNvbmQuLi4gYGF0aDlrYCBpcyB0aGF0IFBDSS9BSEIgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgdGhvc2UgQXRoZXJvcyA4MDIuMTFuIHdpcmVsZXNzIGNhcmRzLCByaWdodD9cblxuUmlnaHQhIE5vdywgY2FuIEkgZXZlbiAqdGVzdCogb3IgKmZ1enoqIHRoaXMgdGhpbmcgZWZmZWN0aXZlbHkgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBzZXR1cCBsaWtlIFFFTVUgb3IgdXNpbmcgc3l6a2FsbGVyPyBUaGF0J3MgdGhlIHJlYWwgcXVlc3Rpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHN5emthbGxlciwgb3IgcGVyaGFwcyB0aGUgbWFjODAyMTEgaHdzaW0sIG9yIGV2ZW4gVVNCLCBvZmZlcnMgYSB2aWFibGUgcGF0aCB0byByZWFjaCB0aGUgYGF0aDlrYCBkcml2ZXIuXG5cbkhtbSwgd2hhdCBhYm91dCBgYXRoOWtfaHRjYD8gRG9lcyBpdCBpbnRlcmFjdCB3aXRoIG9yIHJlbHkgb24gdGhlIHNhbWUgaW5mcmFzdHJ1Y3R1cmUgb3IgY29tcG9uZW50cyBhcyBgYXRoOWtgPyBEb2VzIGl0IHV0aWxpemUgYW55IG9mIHRob3NlICp5KiBmaWxlcz9cblxuVGltZSB0byBkaWcgaW50byB0aGUgTWFrZWZpbGUgYW5kIHNlZSB3aGF0IHRoZSBidWlsZCBzeXN0ZW0gcmV2ZWFscyBhYm91dCBgYXRoOWtfaHRjYCdzIGRlcGVuZGVuY2llcyBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gYGF0aDlrYC4gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MjUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwODowNjowMC42NzgxMjYzNDJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2NTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiA1MSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA1MTpcXHRcXHRcXHRcXHRcXHRcXHQgICBhcjkwMDNfbWNpLm8gXFxcXFxcbiAgNTI6XFx0XFx0XFx0XFx0XFx0XFx0ICAgYXI5MDAzX2FpYy5vXFxuICA1MzpcXHRcXG4gIDU0OlxcdGF0aDlrX2h3LSQoQ09ORklHX0FUSDlLX1BDT0VNKSArPSBhcjkwMDNfcnR0Lm9cXG4gIDU1OlxcdFxcbiAgNTY6XFx0YXRoOWtfaHctJChDT05GSUdfQVRIOUtfRFlOQUNLKSArPSBkeW5hY2sub1xcbiAgNTc6XFx0XFxuICA1ODpcXHRvYmotJChDT05GSUdfQVRIOUtfSFcpICs9IGF0aDlrX2h3Lm9cXG4gIDU5OlxcdFxcbiAgNjA6XFx0b2JqLSQoQ09ORklHX0FUSDlLX0NPTU1PTikgKz0gYXRoOWtfY29tbW9uLm9cXG4gIDYxOlxcdGF0aDlrX2NvbW1vbi15Oj1cXHRjb21tb24ubyBcXFxcXFxuICA2MjpcXHRcXHRcXHRcXHRjb21tb24taW5pdC5vIFxcXFxcXG4gIDYzOlxcdFxcdFxcdFxcdGNvbW1vbi1iZWFjb24ubyBcXFxcXFxuICA2NDpcXHRcXG4gIDY1OlxcdGF0aDlrX2NvbW1vbi0kKENPTkZJR19BVEg5S19DT01NT05fREVCVUcpICs9IGNvbW1vbi1kZWJ1Zy5vXFxuICA2NjpcXHRhdGg5a19jb21tb24tJChDT05GSUdfQVRIOUtfQ09NTU9OX1NQRUNUUkFMKSArPSBjb21tb24tc3BlY3RyYWwub1xcbiAgNjc6XFx0XFxuICA2ODpcXHRhdGg5a19odGMteSArPVxcdGh0Y19oc3QubyBcXFxcXFxuICA2OTpcXHRcXHRcXHRoaWZfdXNiLm8gXFxcXFxcbiAgNzA6XFx0XFx0XFx0d21pLm8gXFxcXFxcbiAgNzE6XFx0XFx0XFx0aHRjX2Rydl90eHJ4Lm8gXFxcXFxcbiAgNzI6XFx0XFx0XFx0aHRjX2Rydl9tYWluLm8gXFxcXFxcbiAgNzM6XFx0XFx0XFx0aHRjX2Rydl9iZWFjb24ubyBcXFxcXFxuICA3NDpcXHRcXHRcXHRodGNfZHJ2X2luaXQubyBcXFxcXFxuICA3NTpcXHRcXHRcXHRodGNfZHJ2X2dwaW8ub1xcbiAgNzY6XFx0XFxuICA3NzpcXHRhdGg5a19odGMtJChDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMpICs9IGh0Y19kcnZfZGVidWcub1xcbiAgNzg6XFx0XFxuICA3OTpcXHRvYmotJChDT05GSUdfQVRIOUtfSFRDKSArPSBhdGg5a19odGMub1xcbiAgODA6XFx0XFxuICA4MTpcXHRvYmotJChDT05GSUdfQVRIOUtfUENJX05PX0VFUFJPTSkgKz0gYXRoOWtfcGNpX293bF9sb2FkZXIub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwODowNjowMC42NzgyNDYyNTNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDI1ODMwNjM1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEF0aGVyb3MgYXRoOWsgV2lyZWxlc3MgRHJpdmVyKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSdtIGxvb2tpbmcgYXQgdGhlIGBhdGg5a2Agd2lyZWxlc3MgZHJpdmVyJ3MgYE1ha2VmaWxlYC4gSSBzZWUgdGhhdCBgYXRoOWsub2AgaW5jbHVkZXMgYHhtaXQub2AsIGFuZCBgYXRoOWtfaHRjLm9gIGluY2x1ZGVzIGEgYnVuY2ggb2Ygb3RoZXIgbW9kdWxlcyByZWxhdGVkIHRvIEhUQywgVVNCLCBXTUksIGFuZCBzbyBvbi4gVGhlIGtleSBvYnNlcnZhdGlvbiBoZXJlIGlzIHRoYXQgYHhtaXQub2AgaXMgKmV4Y2x1c2l2ZWx5KiBwYXJ0IG9mIGBhdGg5ay15YC4gVGhpcyBtYWtlcyBtZSB0aGluayBhYm91dCB0aGUgaGFyZHdhcmUuIElzIGBhdGg5a2AgZXhjbHVzaXZlbHkgZm9yIFBDSSBvciBBSEIgaGFyZHdhcmU/XG5cblJpZ2h0LCBjb25maXJtZWQuIGBhdGg5a2AgaXMgUENJL0FIQi4gTm93IHRoZSBjcml0aWNhbCBxdWVzdGlvbjogY2FuIHRoaXMgYmUgcmVhY2hlZCBpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IENvbnNpZGVyaW5nIHN0YW5kYXJkIFFFTVUgZG9lc24ndCBlbXVsYXRlIEF0aGVyb3MgYXRoOWsgUENJIHdpcmVsZXNzIGNhcmRzLCBpdCdzIHNlZW1pbmcgdW5saWtlbHkuIFxuXG5BaCwgd2FpdCEgSSBuZWVkIHRvIHJlLWV2YWx1YXRlIHRoaXMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHByb21wdCdzIHN0cnVjdHVyYWwgdW5yZWFjaGFiaWxpdHkgY3JpdGVyaWEuIEl0IHNwZWNpZmljYWxseSBjYWxscyBvdXQgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMgYW5kIGRyaXZlcnMgZm9yIGhhcmR3YXJlIHRoYXQgaXNuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gSXMgYGF0aDlrYCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU/IEkgbmVlZCB0byBjb25zaWRlciBpZiB0aGVyZSBhcmUgYW55IHZpcnR1YWwgaW50ZXJmYWNlcyBvciBzaW11bGF0aW9uIHBhdGhzLlxuXG5Pa2F5LCBzbyBJIGtub3cgYG1hYzgwMjExX2h3c2ltYCBleGlzdHMsIGJ1dCB0aGF0J3MgYSAqc2VwYXJhdGUqIGRyaXZlci4gRG9lcyBpdCBpbnRlcmFjdCB3aXRoIGBhdGg5a2A/IE5vLCBpdCdzIGluZGVwZW5kZW50LiBXaGF0IGFib3V0IFVTQiBlbXVsYXRpb24/IERvZXMgYSBVU0IgZ2FkZ2V0IG9yIFJhdyBHYWRnZXQgc2V0dXAgb2ZmZXIgYSBwb3RlbnRpYWwgcGF0aHdheSB0byBgYXRoOWtgPyBOb3cgdGhlIGBhdGg5a19odGNgIHBvcnRpb24gc3ByaW5ncyB0byBtaW5kLiBSYXcgR2FkZ2V0IG1pZ2h0IGFsbG93IHVzIHRvIGVtdWxhdGUgVVNCIGRldmljZXMsIHdoaWNoIHRoZW4gbWlnaHQgYWNjZXNzIGBhdGg5a19odGNgLCBidXQgYWdhaW4gdGhlIGNvcmUgYHhtaXQuY2AgaXMgTk9UIHBhcnQgb2YgYGF0aDlrX2h0Y2AhIFxuXG5JJ20gbm93IGdvaW5nIHRvIHRyaXBsZS1jaGVjayB0aGF0IGB4bWl0LmNgIGlzIE9OTFkgZXZlciB1c2VkIGJ5IGBhdGg5ay5rb2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3OTEsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwODowNjowNC45MzY1NTUyNDhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NDE2MTI3NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoX3R4X3NldHVwX2J1ZmZlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTcwPXN0YXRpYyB2b2lkIGF0aF90eF91cGRhdGVfYmF3KHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6NzE6c3RhdGljIHN0cnVjdCBhdGhfYnVmICphdGhfdHhfc2V0dXBfYnVmZmVyKHN0cnVjdCBhdGhfc29mdGMgKnNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtNzItXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IGF0aF90eHEgKnR4cSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9OTM4PWF0aF90eF9nZXRfdGlkX3N1YmZyYW1lKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy05NTUtXFx0XFx0aWYgKCFmaS1cXHUwMDNlYmYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzo5NTY6XFx0XFx0XFx0YmYgPSBhdGhfdHhfc2V0dXBfYnVmZmVyKHNjLCB0eHEsIHRpZCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTk1Ny1cXHRcXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jPTIxOTI9dTggYXRoX3R4Y2hhaW5tYXNrX3JlZHVjdGlvbihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgdTggY2hhaW5tYXNrLCB1MzIgcmF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjIxMC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jOjIyMTE6c3RhdGljIHN0cnVjdCBhdGhfYnVmICphdGhfdHhfc2V0dXBfYnVmZmVyKHN0cnVjdCBhdGhfc29mdGMgKnNjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMtMjIxMi1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoX3R4cSAqdHhxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYz0yMzI4PWludCBhdGhfdHhfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTIzNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYzoyMzcwOlxcdGJmID0gYXRoX3R4X3NldHVwX2J1ZmZlcihzYywgdHhxLCB0aWQsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yMzcxLVxcdGlmICghYmYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MjM5ND12b2lkIGF0aF90eF9jYWJxKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yNDE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6MjQxODpcXHRcXHRiZiA9IGF0aF90eF9zZXR1cF9idWZmZXIoc2MsIHR4Y3RsLnR4cSwgTlVMTCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jLTI0MTktXFx0XFx0aWYgKCFiZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM9MjkxOT1pbnQgYXRoOWtfdHg5OV9zZW5kKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yOTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmM6Mjk0NjpcXHRiZiA9IGF0aF90eF9zZXR1cF9idWZmZXIoc2MsIHR4Y3RsLVxcdTAwM2V0eHEsIE5VTEwsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYy0yOTQ3LVxcdGlmICghYmYpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDg6MDY6MDcuMzc4MTc0MTE3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM2MzAzODQzNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGF0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEF0aGVyb3MgV2lyZWxlc3MgRHJpdmVyIENvZGUqKlxuXG5SaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSBnb2luZyB0byBzdGFydCBieSB0YWtpbmcgYSBsb29rIGF0IGBwY2kuY2AgYW5kIGBhaGIuY2Agd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2AgZGlyZWN0b3J5LiBHaXZlbiBteSBleHBlcnRpc2UsIEkgc3VzcGVjdCB0aGVzZSBmaWxlcyBhcmUgcGl2b3RhbCBpbiB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgQXRoZXJvcyBBUjlrIHNlcmllcyB3aXJlbGVzcyBjaGlwc2V0IGludGVyYWN0cyB3aXRoIHRoZSBob3N0IHN5c3RlbSwgc3BlY2lmaWNhbGx5IHZpYSB0aGUgUENJIGFuZCBBSEIgYnVzZXMuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgZHJpdmVyJ3Mgb3ZlcmFsbCBzdHJ1Y3R1cmUgYnkgY2hlY2tpbmcgdGhlc2UuIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6XG5cbiogICAqKkluaXRpYWxpemF0aW9uIGFuZCBwcm9iZSByb3V0aW5lczoqKiBJIGV4cGVjdCBgcGNpLmNgIGFuZCBgYWhiLmNgIHdpbGwgY29udGFpbiB0aGUgZnVuY3Rpb25zIHJlc3BvbnNpYmxlIGZvciBkZXRlY3RpbmcgdGhlIGhhcmR3YXJlIGR1cmluZyBib290LXVwIG9yIGhvdHBsdWdnaW5nLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgZHJpdmVyIGlkZW50aWZpZXMgdGhlIHNwZWNpZmljIEF0aGVyb3MgZGV2aWNlLCBhbGxvY2F0ZXMgcmVzb3VyY2VzIChtZW1vcnksIGludGVycnVwdHMsIGV0Yy4pLCBhbmQgc2V0cyB1cCB0aGUgaW5pdGlhbCBoYXJkd2FyZSByZWdpc3RlcnMuXG4qICAgKipCdXMtc3BlY2lmaWMgaW50ZXJhY3Rpb246KiogSSdsbCB6ZXJvIGluIG9uIHRoZSBidXMtc3BlY2lmaWMgY29kZS4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVuczsgd2hlcmUgdGhlIFBDSSBhbmQgQUhCIGZ1bmN0aW9ucyBhcmUgdXNlZCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBoYXJkd2FyZS4gSSdsbCBiZSB3YXRjaGluZyBob3cgdGhlc2UgY29tbXVuaWNhdGUgdGhyb3VnaCBETUEuXG4qICAgKipJbnRlcnJ1cHQgaGFuZGxpbmc6KiogSSdtIGludGVyZXN0ZWQgaW4gaG93IGludGVycnVwdCBoYW5kbGVycyBhcmUgc2V0IHVwIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMgdG8gcmVhZCBkYXRhIGFuZCBzZW5kIGNvbW1hbmRzLlxuKiAgICoqRXJyb3IgaGFuZGxpbmcgYW5kIHBvd2VyIG1hbmFnZW1lbnQ6KiogSSB3YW50IHRvIGdsYW5jZSBhdCBob3cgdGhlIGRyaXZlciBkZWFscyB3aXRoIHBvdGVudGlhbCBlcnJvcnMgZHVyaW5nIGhhcmR3YXJlIGFjY2VzcywgZGV2aWNlIHJlc2V0LCBhbmQgcG93ZXIgbWFuYWdlbWVudCBmZWF0dXJlcy5cblxuRXNzZW50aWFsbHksIEknbSBleHBlY3RpbmcgdG8gZ2FpbiBhbiB1bmRlcnN0YW5kaW5nIG9mIHRoZSBsb3ctbGV2ZWwgYnVzIGludGVyYWN0aW9uIGFuZCBnZXQgYSBmaXJtIGdyYXNwIG9uIHRoZSBjb3JlIGNvbnRyb2wgZmxvdyBvZiB0aGlzIGRyaXZlci4gVGhlc2UgZmlsZXMgYXJlIHRoZSBlc3NlbnRpYWwgYnJpZGdlIGJldHdlZW4gdGhlIEF0aGVyb3MgaGFyZHdhcmUgYW5kIHRoZSByZXN0IG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBJJ2xsIGJlIGV4cGVjdGluZyBsb3RzIG9mIHJlZ2lzdGVyIHJlYWRzIGFuZCB3cml0ZXMgYW5kIHRoZSB1c3VhbCBETUEgc2V0dXAgZm9yIGRhdGEgdHJhbnNmZXIuIEl0IHdpbGwgYmUgaGVscGZ1bCB0byBlc3RhYmxpc2ggdGhlIGhhcmR3YXJlIGludGVyYWN0aW9uIGJlZm9yZSBnb2luZyBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTY0OSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA4OjA2OjExLjAwODU2MjM0MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc2MTg1MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3BjaV9kcml2ZXJ8bW9kdWxlX3BsYXRmb3JtX2RyaXZlcnxtb2R1bGVfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5a19wY2lfb3dsX2xvYWRlci5jPTIzMj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgb3dsX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5a19wY2lfb3dsX2xvYWRlci5jLTIzNy19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5a19wY2lfb3dsX2xvYWRlci5jOjIzODptb2R1bGVfcGNpX2RyaXZlcihvd2xfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWtfcGNpX293bF9sb2FkZXIuYy0yMzktTU9EVUxFX0FVVEhPUihcXFwiQ2hyaXN0aWFuIExhbXBhcnRlciBcXHUwMDNjY2h1bmtlZXlAZ21haWwuY29tXFx1MDAzZVxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYz0xMTMwPXN0YXRpYyBpbnQgX19pbml0IGF0aDlrX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTE1NS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoxMTU2Om1vZHVsZV9pbml0KGF0aDlrX2luaXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMtMTE1Ny1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDg6MDY6MTEuMTA2MTg2MzE5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ1MDAwMDE1MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEF0aGVyb3MgRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoaXMuIE15IGZvY3VzIGlzIG9uIHRoZSBgYXRoOWtgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGl0cyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSdtIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuY2AgYW5kIHplcm8gaW4gb24gdGhlIGBhdGg5a19pbml0YCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhpcyBiZWFzdCBnZXRzIG9mZiB0aGUgZ3JvdW5kLiBXaGF0IGFyZSB0aGUga2V5IHN0ZXBzPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgcmVkIGZsYWdzIEkgY2FuIHNwb3QgcXVpY2tseT8gSSdtIGxvb2tpbmcgZm9yIHRoZSBoYXJkd2FyZSBwcm9iaW5nLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbnkgY3JpdGljYWwgc2V0dXAgZm9yIHRoZSBNQUMgYW5kIFBIWSwgYW5kIGhvdyBpdCBoYW5kbGVzIHBvdGVudGlhbCBlcnJvcnMgZHVyaW5nIHRoZSBwcm9jZXNzLiBUaGlzIGluaXRpYWwgcGhhc2UgaXMgY3J1Y2lhbCwgYXMgYW55IGlzc3VlcyBoZXJlIHdpbGwgcmlwcGxlIHRocm91Z2ggdGhlIGRyaXZlcidzIG9wZXJhdGlvbi4gSSB3YW50IHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB0aGlzIGluaXRpYWxpemF0aW9uIGZsb3csIGZyb20gc3RhcnQgdG8gZmluaXNoLCBzbyBJIGNhbiBiZXR0ZXIgdW5kZXJzdGFuZCB3aGVyZSB0byBsb29rIGluIGNhc2Ugb2YgbGF0ZXIgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQ0NCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA4OjA2OjE1LjYwNjE5MTc2MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTc2NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTMwLFxuICBcIkxpbmVDb3VudFwiOiAzNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMTMwOlxcdHN0YXRpYyBpbnQgX19pbml0IGF0aDlrX2luaXQodm9pZClcXG4xMTMxOlxcdHtcXG4xMTMyOlxcdFxcdGludCBlcnJvcjtcXG4xMTMzOlxcdFxcbjExMzQ6XFx0XFx0ZXJyb3IgPSBhdGhfcGNpX2luaXQoKTtcXG4xMTM1OlxcdFxcdGlmIChlcnJvciBcXHUwMDNjIDApIHtcXG4xMTM2OlxcdFxcdFxcdHByX2VycihcXFwiTm8gUENJIGRldmljZXMgZm91bmQsIGRyaXZlciBub3QgaW5zdGFsbGVkXFxcXG5cXFwiKTtcXG4xMTM3OlxcdFxcdFxcdGVycm9yID0gLUVOT0RFVjtcXG4xMTM4OlxcdFxcdFxcdGdvdG8gZXJyX291dDtcXG4xMTM5OlxcdFxcdH1cXG4xMTQwOlxcdFxcbjExNDE6XFx0XFx0ZXJyb3IgPSBhdGhfYWhiX2luaXQoKTtcXG4xMTQyOlxcdFxcdGlmIChlcnJvciBcXHUwMDNjIDApIHtcXG4xMTQzOlxcdFxcdFxcdGVycm9yID0gLUVOT0RFVjtcXG4xMTQ0OlxcdFxcdFxcdGdvdG8gZXJyX3BjaV9leGl0O1xcbjExNDU6XFx0XFx0fVxcbjExNDY6XFx0XFxuMTE0NzpcXHRcXHRkbWlfY2hlY2tfc3lzdGVtKGF0aDlrX3F1aXJrcyk7XFxuMTE0ODpcXHRcXG4xMTQ5OlxcdFxcdHJldHVybiAwO1xcbjExNTA6XFx0XFxuMTE1MTpcXHQgZXJyX3BjaV9leGl0OlxcbjExNTI6XFx0XFx0YXRoX3BjaV9leGl0KCk7XFxuMTE1MzpcXHQgZXJyX291dDpcXG4xMTU0OlxcdFxcdHJldHVybiBlcnJvcjtcXG4xMTU1OlxcdH1cXG4xMTU2OlxcdG1vZHVsZV9pbml0KGF0aDlrX2luaXQpO1xcbjExNTc6XFx0XFxuMTE1ODpcXHRzdGF0aWMgdm9pZCBfX2V4aXQgYXRoOWtfZXhpdCh2b2lkKVxcbjExNTk6XFx0e1xcbjExNjA6XFx0XFx0aXNfYXRoOWtfdW5sb2FkZWQgPSB0cnVlO1xcbjExNjE6XFx0XFx0YXRoX2FoYl9leGl0KCk7XFxuMTE2MjpcXHRcXHRhdGhfcGNpX2V4aXQoKTtcXG4xMTYzOlxcdFxcdHByX2luZm8oXFxcIiVzOiBEcml2ZXIgdW5sb2FkZWRcXFxcblxcXCIsIGRldl9pbmZvKTtcXG4xMTY0OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDg6MDY6MTUuNjA2MzUxOTAyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxODUyNjM0NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byB0aGUgYXRoOWsgSW5pdGlhbGl6YXRpb24qKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGBhdGg5a2AgZHJpdmVyLiBTZWVtcyBsaWtlIGl0J3MgZ2V0dGluZyBraWNrZWQgb2ZmIHdpdGggYGF0aF9wY2lfaW5pdCgpYCBhbmQgYGF0aF9haGJfaW5pdCgpYC4gU3RhbmRhcmQgc3R1ZmYsIHRoZSBQQ0kgYW5kIEFIQiB2ZXJzaW9ucyBvZiB0aGUgaW5pdGlhbGl6YXRpb24gcm91dGluZXMuIEdpdmVuIHRoZSB0YXJnZXQgaGFyZHdhcmUsIEknbSBndWVzc2luZyB3ZSdyZSBsaWtlbHkgZGVhbGluZyB3aXRoIGEgUENJLWJhc2VkIHN5c3RlbSwgYXMgQUhCIGlzIHVzZWQgbGVzcy5cblxuTGV0J3Mgc3RhcnQgYnkgbG9va2luZyBpbnRvIGBhdGhfcGNpX2luaXQoKWAuIFRoYXQncyB3aGVyZSB0aGUgY29yZSBQQ0ktc3BlY2lmaWMgc2V0dXAgd2lsbCBiZSBoYXBwZW5pbmcuIEkgd2FudCB0byBzZWUgaG93IHRoZXkncmUgaGFuZGxpbmcgZGV2aWNlIHByb2JlLCByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgYW55IHBvdGVudGlhbCBxdWlya3MgcmVsYXRlZCB0byB0aGUgQXRoZXJvcyBjaGlwc2V0IGFuZCB0aGUgUENJIGJ1cy4gSSdtIGtlZW4gdG8gZXhhbWluZSB0aGUgYGF0aF9wY2lfaW5pdGAgZnVuY3Rpb24sIEkgaGF2ZSBhIGZlZWxpbmcgdGhlcmUgbWlnaHQgYmUgaXNzdWVzLiBJIHdhbnQgdG8gbG9vayBpbnRvIGl0cyBpbXBsZW1lbnRhdGlvbiBhbmQgc2VlIHdoYXQgaXQgaXMgZG9pbmcgc3BlY2lmaWNhbGx5LiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBzbyBsZXQncyBnZXQgc3RhcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxODEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA4OjA2OjE3Ljc5MTYxODUyNFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM2NTMwOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoX3BjaV9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmg9MTEzOD12b2lkIGF0aDlrX3BzX3Jlc3RvcmUoc3RydWN0IGF0aF9zb2Z0YyAqc2MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgtMTE0MC0jaWZkZWYgQ09ORklHX0FUSDlLX1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oOjExNDE6aW50IGF0aF9wY2lfaW5pdCh2b2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaC0xMTQyLXZvaWQgYXRoX3BjaV9leGl0KHZvaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oLTExNDMtI2Vsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaDoxMTQ0OnN0YXRpYyBpbmxpbmUgaW50IGF0aF9wY2lfaW5pdCh2b2lkKSB7IHJldHVybiAwOyB9O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5ay5oLTExNDUtc3RhdGljIGlubGluZSB2b2lkIGF0aF9wY2lfZXhpdCh2b2lkKSB7fTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmM9MTEzMD1zdGF0aWMgaW50IF9faW5pdCBhdGg5a19pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5jLTExMzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYzoxMTM0OlxcdGVycm9yID0gYXRoX3BjaV9pbml0KCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYy0xMTM1LVxcdGlmIChlcnJvciBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYz0xMDc1PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBhdGhfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYy0xMDgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYzoxMDgzOmludCBhdGhfcGNpX2luaXQodm9pZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcGNpLmMtMTA4NC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA4OjA2OjE3Ljg1NTI4MjgwM1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NTk2MjcxODE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBQcm9wb3NlZCBQYXRjaCdzIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSB0aGUgbW9kaWZpY2F0aW9uIHRvIGBhdGhfdHhfc2V0dXBfYnVmZmVyYCB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmNgLCBpcyBsaWtlbHkgKm5vdCogc3VpdGFibGUgZm9yIGZ1enppbmcgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudC4gTGV0J3MgZGVsdmUgaW50byB0aGUgcmVhc29uaW5nLlxuXG5GaXJzdCwgSSBzZWUgdGhhdCB0aGUgYGF0aF9wY2lfZHJpdmVyYCBoYW5kbGVzIEF0aGVyb3MgUENJL1BDSWUgY2FyZHMsIGFuZCBgYXRoX2FoYl9kcml2ZXJgIGlzIGZvciB0aGUgQUhCIGJ1cyAoUXVhbGNvbW0gQXRoZXJvcyBTb0MpLiBOZWl0aGVyIG9mIHRoZXNlIGlzIHR5cGljYWxseSBlbXVsYXRlZCB3aXRoaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBEaWdnaW5nIGEgYml0IGRlZXBlciwgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCBgYXRoOWtgIGlzIHRoZSBkcml2ZXIgaW4gcXVlc3Rpb24sIGRlc2lnbmVkIGZvciA4MDIuMTFuIFBDSS9BSEIgaGFyZHdhcmUuXG5cbk15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGd1aWRlbGluZXMgaXMgY3J1Y2lhbCBoZXJlLiBTZWN0aW9uIDIgaGlnaGxpZ2h0cyB1bnJlYWNoYWJsZSBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IG1lbnRpb25pbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgYW5kIEdQVSBkcml2ZXJzLiAgVGhlc2UgcmVxdWlyZSBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMsIHdoaWNoIFFFTVUgZG9lc24ndCBlbXVsYXRlLiBTZWN0aW9uIDEgcmVpbmZvcmNlcyB0aGlzIOKAkyByZWFjaGFiaWxpdHkgaXMgdGhlIHByaW1hcnkgZ2F0ZS4gSWYgdGhlIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLCBpdCBzaG91bGRuJ3QgYmUgZnV6emVkLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIG1vZGlmaWVzIGBhdGhfdHhfc2V0dXBfYnVmZmVyYCwgYSBjb3JlIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYGF0aDlrYCBkcml2ZXIuICBUaGUgY3JpdGljYWwgcG9pbnQgaXMgdGhhdCB0aGlzIGRyaXZlciBpcyBmb3IgKnBoeXNpY2FsKiBBdGhlcm9zIDgwMi4xMW4gUENJL1BDSWUgYW5kIEFIQiBkZXZpY2VzLiBXaGlsZSBkcml2ZXJzIGxpa2UgYGF0aDlrX2h0Y2AgZm9yIFVTQiB3aXJlbGVzcyBkZXZpY2VzIG9yIGBtYWM4MDIxMV9od3NpbWAgZm9yIHZpcnR1YWwgZGV2aWNlcyBhcmUgZnV6emVhYmxlLCB0aGUgYGF0aDlrYCBjb2RlIHBhdGggaXMgbm90LlxuXG5UaGUgZnV6emluZy1yZWxhdGVkIG1ldGFkYXRhIGNvbmZpcm1zIG15IHN1c3BpY2lvbnM6IGBXb3J0aEZ1enppbmc6IGZhbHNlYCwgYEVuYWJsZUNvbmZpZ3M6IG51bGwgLyBbXWAsIGFuZCBgRm9jdXNTeW1ib2xzOiBbXWAuICBUaGUgcHJvdmlkZWQgcmVhc29uaW5nIGlzIHNwb3Qtb246ICB0aGUgbGFjayBvZiBlbXVsYXRpb24gZm9yIHRoZXNlIHBoeXNpY2FsIFBDSWUvQUhCIHdpcmVsZXNzIGRldmljZXMgaW4gc3RhbmRhcmQgZW52aXJvbm1lbnRzIG1ha2VzIHRoaXMgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXG5cblRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiBjb25jbHVkaW5nIHRoYXQgdGhpcyBwYXRjaCBpc24ndCBzdWl0YWJsZSBmb3Igc3RhbmRhcmQgZnV6emluZyBlZmZvcnRzLiBJIHNob3VsZCBwcm9jZWVkIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM5OTcsIk91dHB1dFRva2VucyI6MTE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzU4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA4OjA2OjIzLjQ1MTU1NzY2MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYyBpcyBwYXJ0IG9mIHRoZSBhdGg5ayBkcml2ZXIgZm9yIHBoeXNpY2FsIEF0aGVyb3MgODAyLjExbiBQQ0kvQUhCIHdpcmVsZXNzIGFkYXB0ZXJzLiBCZWNhdXNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChlLmcuIFFFTVUvR0NFKSBkbyBub3QgZW11bGF0ZSBhdGg5ayBQQ0kvQUhCIGhhcmR3YXJlLCB0aGlzIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jIGlzIHBhcnQgb2YgdGhlIGF0aDlrIGRyaXZlciBmb3IgcGh5c2ljYWwgQXRoZXJvcyA4MDIuMTFuIFBDSS9BSEIgd2lyZWxlc3MgYWRhcHRlcnMuIEJlY2F1c2Ugc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKGUuZy4gUUVNVS9HQ0UpIGRvIG5vdCBlbXVsYXRlIGF0aDlrIFBDSS9BSEIgaGFyZHdhcmUsIHRoaXMgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwODowNjoyMy40NTE1ODU5MzJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8lfhl[1] Phase: Running StartedAt: 2026-09-06 08:06:34 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8lfhl[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-06 08:06:34 +0000 UTC FinishedAt: 2026-09-06 08:06:40 +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,}