Name: series-workflowwk6tf Phase: Succeeded StartedAt: 2026-08-26 04:45:03 +0000 UTC FinishedAt: 2026-08-26 05:28:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[0] Phase: Succeeded StartedAt: 2026-08-26 04:45:03 +0000 UTC FinishedAt: 2026-08-26 04:49:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[0].run-triage Phase: Succeeded StartedAt: 2026-08-26 04:45:03 +0000 UTC FinishedAt: 2026-08-26 04:49:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "ca800a9302764c445de0da0e84d2252400a770ee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "ca800a9302764c445de0da0e84d2252400a770ee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U" ], "series_id": "5e7c1420-e165-4d27-9822-ad5d2eabe54f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7925_change_vif_links" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVfY2hhbmdlX3ZpZl9saW5rcyYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgY2hhbmdpbmcgVklGIGxpbmtzIGluIHRoZSBtdDc5MjUgZHJpdmVyIGJ5IGFkZGluZyBhIGNvbmRpdGlvbiB0byByZW1vdmUgYW5kIHJlLWFkZCBhIEJTUyBsaW5rIHdoZW4gdHJhbnNpdGlvbmluZyBmcm9tIGhhdmluZyB2YWxpZCBsaW5rcyB0byBubyB2YWxpZCBsaW5rcy4gVGhpcyBpcyBhIHN0YXRlIG1hY2hpbmUgYW5kIGZpcm13YXJlIHN5bmNocm9uaXphdGlvbiBmaXguIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZC4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgaW52b2x2ZSB1c2UtYWZ0ZXItZnJlZSwgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgb3IgbG9naWMgZXJyb3JzLCB3aGljaCBhcmUgd2VsbC1jb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBpbiB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB0byByZXN0b3JlIHRoZSBsZWdhY3kgQlNTIHdoZW4gbGlua3MgYXJlIHJlbW92ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjODAyMTEgZHJpdmVyIG9wZXJhdGlvbnMuIFRoZSBkcml2ZXIgaGFzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKGR1bW15X2hjZCkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTA4ZWRmOWIxZWVmMzQwYTljNTUwOGIyODA0OTI5NDk1OTQyMDlkZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDA0OjQ4OjE4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1xuaW5kZXggODRiNTVmMDA4YjNkMy4uYzdjZWQyZWZkNGQ3YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXG5AQCAtMjI5NCw2ICYjNDM7MjI5NCwyMSBAQCBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiBcbiBcdG12aWYtXHUwMDNldmFsaWRfbGlua3MgPSBuZXdfbGlua3M7XG4gXG4mIzQzO1x0LyogVGhlIGZpcm13YXJlIHdvdWxkIGtlZXAgdGhlIE1MRCBCU1MgYW5kIERFViBlbnRyeTogdGhlIHJlbW92YWxcbiYjNDM7XHQgKiBsb29wIHNraXBzIHRoZSBkZWZsaW5rIGFuZCB0aGUgaHdlaWdodDE2KCkgZmFsbGJhY2sgYWJvdmUgcmVhZHNcbiYjNDM7XHQgKiB0aGUgc3RhbGUgcHJlLXVwZGF0ZSB2YWxpZF9saW5rcy4gUmVzdG9yZSB0aGUgbGVnYWN5IEJTUy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAob2xkX2xpbmtzIFx1MDAyNlx1MDAyNiAhbmV3X2xpbmtzKSB7XG4mIzQzO1x0XHRtdDc5MnhfbWFjX2xpbmtfYnNzX3JlbW92ZShkZXYsIFx1MDAyNm12aWYtXHUwMDNlYnNzX2NvbmYsXG4mIzQzO1x0XHRcdFx0XHQgICBcdTAwMjZtdmlmLVx1MDAzZXN0YS5kZWZsaW5rKTtcbiYjNDM7XHRcdGVyciA9IG10NzkyNV9tYWNfbGlua19ic3NfYWRkKGRldiwgXHUwMDI2dmlmLVx1MDAzZWJzc19jb25mLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgXHUwMDI2bXZpZi1cdTAwM2VzdGEuZGVmbGluayk7XG4mIzQzO1x0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4mIzQzO1x0XHRcdHJldHVybiBlcnI7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiBcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4gXG4gXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNDo0ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9jaGFuZ2VfdmlmX2xpbmtzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgaW4gdGhlIE1lZGlhVGVrIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIgdG8gcmVzdG9yZSB0aGUgbGVnYWN5IEJTUyB3aGVuIGxpbmtzIGFyZSByZW1vdmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1hYzgwMjExIGRyaXZlciBvcGVyYXRpb25zLiBUaGUgZHJpdmVyIGhhcyBhIFVTQiB2YXJpYW50IChNVDc5MjVVKSB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uIChkdW1teV9oY2QpIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkwOGVkZjliMWVlZjM0MGE5YzU1MDhiMjgwNDkyOTQ5NTk0MjA5ZGUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAyNiAwNDo0ODoxOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYwppbmRleCA4NGI1NWYwMDhiM2QzLi5jN2NlZDJlZmQ0ZDdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jCkBAIC0yMjk0LDYgJiM0MzsyMjk0LDIxIEBAIG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLAogCiAJbXZpZi0mZ3Q7dmFsaWRfbGlua3MgPSBuZXdfbGlua3M7CiAKJiM0MzsJLyogVGhlIGZpcm13YXJlIHdvdWxkIGtlZXAgdGhlIE1MRCBCU1MgYW5kIERFViBlbnRyeTogdGhlIHJlbW92YWwKJiM0MzsJICogbG9vcCBza2lwcyB0aGUgZGVmbGluayBhbmQgdGhlIGh3ZWlnaHQxNigpIGZhbGxiYWNrIGFib3ZlIHJlYWRzCiYjNDM7CSAqIHRoZSBzdGFsZSBwcmUtdXBkYXRlIHZhbGlkX2xpbmtzLiBSZXN0b3JlIHRoZSBsZWdhY3kgQlNTLgomIzQzOwkgKi8KJiM0MzsJaWYgKG9sZF9saW5rcyAmYW1wOyZhbXA7ICFuZXdfbGlua3MpIHsKJiM0MzsJCW10NzkyeF9tYWNfbGlua19ic3NfcmVtb3ZlKGRldiwgJmFtcDttdmlmLSZndDtic3NfY29uZiwKJiM0MzsJCQkJCSAgICZhbXA7bXZpZi0mZ3Q7c3RhLmRlZmxpbmspOwomIzQzOwkJZXJyID0gbXQ3OTI1X21hY19saW5rX2Jzc19hZGQoZGV2LCAmYW1wO3ZpZi0mZ3Q7YnNzX2NvbmYsCiYjNDM7CQkJCQkgICAgICAmYW1wO212aWYtJmd0O3N0YS5kZWZsaW5rKTsKJiM0MzsJCWlmIChlcnIgJmx0OyAwKSB7CiYjNDM7CQkJbXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTsKJiM0MzsJCQlyZXR1cm4gZXJyOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiAJbXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTsKIAogCXJldHVybiAwOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjE5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCBmb3IgdGhlIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgZnVuY3Rpb24gd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNgLiBUaGlzIHBsYWNlcyBpdCBmaXJtbHkgd2l0aGluIHRoZSBNZWRpYVRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBJJiMzOTttIGZhbWlsaWFyIHdpdGguIEJ1dCBhIHRob3VnaHQgaW1tZWRpYXRlbHkgcG9wcyB1cDogY2FuIEkgKnRlc3QqIHRoaXMgaW4gUUVNVT8gVGhlc2UgTVQ3NiBkcml2ZXJzIGFyZSAqdHlwaWNhbGx5KiB0YXJnZXRlZCBhdCBwaHlzaWNhbCBoYXJkd2FyZSDigJMgUENJZSBvciBVU0IgZGV2aWNlcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgZXZlbiBhIFVTQiB2YXJpYW50IG9mIHRoZSBNVDc5MjUuIFRpbWUgdG8gZmlyZSB1cCBgZ3JlcGAgYW5kIHNlYXJjaCB3aXRoaW4gS2NvbmZpZywgb3IgYXQgbGVhc3QgYSBxdWljayBzY2FuIHRocm91Z2ggdGhlIGRyaXZlciBmaWxlcywgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBpbmRpY2F0aW9uIG9mIGEgVVNCIHN1cHBvcnQgcGF0aC4gV2l0aG91dCB0aGF0LCB0aGlzIHBhdGNoIGlzIGdvaW5nIHRvIGJlIHNpZ25pZmljYW50bHkgbW9yZSBjdW1iZXJzb21lIHRvIGV2YWx1YXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA0MDk3IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9NTA9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo1MTpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU9NTE9b2JqLSQoQ09ORklHX01UNzk5NkUpICYjNDM7PSBtdDc5OTYvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19NVDc5MjVfQ09NTU9OKSAmIzQzOz0gbXQ3OTI1L1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0xODA9c3RhdGljIGlubGluZSBib29sIGlzX2Nvbm5hYzMoc3RydWN0IG10NzZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoxODU6c3RhdGljIGlubGluZSBib29sIGlzX210NzkyNShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xODYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM9NTQ9aW50IG10NzZfY29ubmFjX21jdV9pbml0X2Rvd25sb2FkKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYWRkciwgdTMyIGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jLTY5LVx0ICAgIChpc19jb25uYWMyKGRldikgXHUwMDI2XHUwMDI2IGFkZHIgPT0gMHg5MDAwMDApIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jOjcwOlx0ICAgICgoaXNfbXQ3OTI1KGRldikgfHwgaXNfbXQ3OTI3KGRldikpIFx1MDAyNlx1MDAyNiAoYWRkciA9PSAweDkwMDAwMCB8fCBhZGRyID09IDB4ZTAwMDI4MDApKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYy03MS1cdCAgICAoaXNfbXQ3OTI4KGRldikgXHUwMDI2XHUwMDI2IChhZGRyID09IDB4OTAwMDAwIHx8IGFkZHIgPT0gMHhlMDAwMjAwMCkpIHx8XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGUtMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01UNzkyNV9DT01NT04pICYjNDM7PSBtdDc5MjUtY29tbW9uLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX01UNzkyNUUpICYjNDM7PSBtdDc5MjVlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX01UNzkyNVUpICYjNDM7PSBtdDc5MjV1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo3Om10NzkyNS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm8gbmFuLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjg6bXQ3OTI1LWNvbW1vbi0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6OTptdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6MTA6bXQ3OTI1dS15IDo9IHVzYi5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDojaW5jbHVkZSBcJiMzNDttdDc5MjUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTUtI2luY2x1ZGUgXCYjMzQ7bWN1LmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6ODptdDc5MjVfcmVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMy1cdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ6XHRtdDc5MjVfbWN1X3JlZ3ZhbChkZXYsIGRldi1cdTAwM2VtdDc2LmRlYnVnZnNfcmVnLCBcdTAwMjZyZWd2YWwsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1LVx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIxOm10NzkyNV9yZWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjctXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4Olx0cmV0ID0gbXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXHUwMDI2cmVndmFsLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjktXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozNjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZWd2YWwsIG10NzkyNV9yZWdfZ2V0LCBtdDc5MjVfcmVnX3NldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNy1cdFx0XHQgXCYjMzQ7MHglMDhsbHhcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTM4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozOTptdDc5MjVfZndfZGVidWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00NS1cdGRldi1cdTAwM2Vmd19kZWJ1ZyA9ICh1OCl2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDY6XHRtdDc5MjVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBkZXYtXHUwMDNlZndfZGVidWcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQ3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz01Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NTQ6bXQ3OTI1X2Z3X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy01NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjYzOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnLCBtdDc5MjVfZndfZGVidWdfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjY0Olx0XHRcdCBtdDc5MjVfZndfZGVidWdfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy02NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Njg9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo2OTptdDc5MjVfc2VxX3B1dHNfYXJyYXkoc3RydWN0IHNlcV9maWxlICpmaWxlLCBjb25zdCBjaGFyICpzdHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNzAtXHRcdCAgICAgIHM4IHZhbFtdWzJdLCBpbnQgbGVuLCB1OCBiYW5kX2lkeClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6ODM6I2RlZmluZSBtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkocHJlZml4LCByYXRlLCBpZHgpXHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTg0LSh7XHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjg1Olx0bXQ3OTI1X3NlcV9wdXRzX2FycmF5KHMsICNwcmVmaXggXCYjMzQ7ICh0bWFjKVwmIzM0OyxcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtODYtXHRcdFx0ICAgICAgdHhwd3ItXHUwMDNlcmF0ZSxcdFx0XFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9OTE9c3RhdGljIGlubGluZSB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6OTI6bXQ3OTI1X2VodF90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyLCB1OCBiYW5kX2lkeClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy05My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTk3LVx0XHQgICBcJiMzNDttY3MxMlwmIzM0OywgXCYjMzQ7bWNzMTNcJiMzNDssIFwmIzM0O21jczE0XCYjMzQ7LCBcJiMzNDttY3MxNVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6OTg6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjYsIGVodDI2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6OTk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNTIsIGVodDUyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTAwOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDEwNiwgZWh0MTA2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTAxOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI0MiwgZWh0MjQyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTAyOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDQ4NCwgZWh0NDg0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTYsIGVodDk5NiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4MiwgZWh0OTk2eDIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDY6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDQsIGVodDk5Nng0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTA3Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2XzUyLCBlaHQyNl81MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwODpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNl8xMDYsIGVodDI2XzEwNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwOTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODRfMjQyLCBlaHQ0ODRfMjQyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTEwOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODQsIGVodDk5Nl80ODQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTE6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2XzQ4NF8yNDIsIGVodDk5Nl80ODRfMjQyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTEyOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyXzQ4NCwgZWh0OTk2eDJfNDg0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTEzOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngzLCBlaHQ5OTZ4MywgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExNDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4M180ODQsIGVodDk5NngzXzQ4NCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTExNS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTExNz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTE4Om10NzkyNV90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTE5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMjAtXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXHUwMDNlcHJpdmF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTIxOlx0c3RydWN0IG10NzkyNV90eHB3ciAqdHhwd3IgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEyMi1cdHU4IGJhbmRfaWR4ID0gZGV2LVx1MDAzZW1waHkuYmFuZF9pZHg7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzMC1cdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTMxOlx0cmV0ID0gbXQ3OTI1X2dldF90eHB3cl9pbmZvKGRldiwgYmFuZF9pZHgsIHR4cHdyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzItXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzgtXHRcdCAgIFwmIzM0OyBcJiMzNDssIFwmIzM0OzFtXCYjMzQ7LCBcJiMzNDsybVwmIzM0OywgXCYjMzQ7NW1cJiMzNDssIFwmIzM0OzExbVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTM5Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KENDSywgY2NrLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNDMtXHRcdCAgIFwmIzM0OzQ4bVwmIzM0OywgXCYjMzQ7NTRtXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDQ6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoT0ZETSwgb2ZkbSwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE0NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQ4LVx0XHQgICBcJiMzNDttY3M2XCYjMzQ7LCBcJiMzNDttY3M3XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSFQyMCwgaHQyMCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTUzLVx0XHQgICBcJiMzNDttY3M2XCYjMzQ7LCBcJiMzNDttY3M3XCYjMzQ7LCBcJiMzNDttY3MzMlwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTU0Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUNDAsIGh0NDAsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1OC1cdFx0ICAgXCYjMzQ7bWNzNlwmIzM0OywgXCYjMzQ7bWNzN1wmIzM0OywgXCYjMzQ7bWNzOFwmIzM0OywgXCYjMzQ7bWNzOVwmIzM0OywgXCYjMzQ7bWNzMTBcJiMzNDssIFwmIzM0O21jczExXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNTk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUMjAsIHZodDIwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTYwOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDQwLCB2aHQ0MCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjI6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUODAsIHZodDgwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTYzOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDE2MCwgdmh0MTYwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2NTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTI2LCBoZTI2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTY2Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFNTIsIGhlNTIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjc6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUxMDYsIGhlMTA2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTY4Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMjQyLCBoZTI0MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2OTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTQ4NCwgaGU0ODQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTcxOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFOTk2LCBoZTk5NiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE3MjpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NngyLCBoZTk5NngyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE3NDpcdG10NzkyNV9laHRfdHhwd3IocywgdHhwd3IsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNzUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTE4MT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTgyOm10NzkyNV9wbV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xODMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMDUtXHRwbS1cdTAwM2VlbmFibGVfdXNlciA9IHZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMDY6XHRtdDc5MjVfc2V0X3J1bnRpbWVfcG0oZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMDctXHRtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKFx1MDAyNmRldi1cdTAwM2VtcGh5LCBwbSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIxND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjE1Om10NzkyNV9wbV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjE2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIyNDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbSwgbXQ3OTI1X3BtX2dldCwgbXQ3OTI1X3BtX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIyNj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjI3Om10NzkyNV9kZWVwX3NsZWVwX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI0Mi1cdHBtLVx1MDAzZWRzX2VuYWJsZSA9IGVuYWJsZSBcdTAwMjZcdTAwMjYgIW1vbml0b3I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjQzOlx0bXQ3OTI1X21jdV9zZXRfZGVlcF9zbGVlcChkZXYsIHBtLVx1MDAzZWRzX2VuYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjQ0LW91dDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjUwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNTE6bXQ3OTI1X2RlZXBfc2xlZXBfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI1Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNjA6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZHMsIG10NzkyNV9kZWVwX3NsZWVwX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNjE6XHRcdFx0IG10NzkyNV9kZWVwX3NsZWVwX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI2Mz1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbV9pZGxlX3RpbWVvdXQsIG10NzkyeF9wbV9pZGxlX3RpbWVvdXRfZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjY2OnN0YXRpYyBpbnQgbXQ3OTI1X2NoaXBfcmVzZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNzgtXHRcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjc5Olx0XHRyZXQgPSBtdDc5MjVfbWN1X2NoaXBfY29uZmlnKGRldiwgXCYjMzQ7YXNzZXJ0XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODAtXHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXQsIE5VTEwsIG10NzkyNV9jaGlwX3Jlc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjg5OmludCBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjkwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzA0LVx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7dHhwb3dlcl9za3VcJiMzNDssIGRpcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozMDU6XHRcdFx0XHQgICAgbXQ3OTI1X3R4cHdyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zMDYtXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3R4X3N0YXRzXCYjMzQ7LCAwNDAwLCBkaXIsIGRldiwgXHUwMDI2bXQ3OTJ4X3R4X3N0YXRzX2ZvcHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy04LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2Zpcm13YXJlLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo5OiNpbmNsdWRlIFwmIzM0O210NzkyNS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTAtI2luY2x1ZGUgXCYjMzQ7cmVnZC5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE0OnN0YXRpYyBzc2l6ZV90IG10NzkyNV90aGVybWFsX3RlbXBfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTUtXHRcdFx0XHRcdHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNC1cdFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUobWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjU6XHRcdHRlbXBlcmF0dXJlID0gbXQ3OTI1X21jdV9nZXRfdGVtcGVyYXR1cmUocGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNi1cdFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UobWRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTM2LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozNzpzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSX1JPKHRlbXAxX2lucHV0LCBtdDc5MjVfdGhlcm1hbF90ZW1wLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozOTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbXQ3OTI1X2h3bW9uX2F0dHJzW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDAtXHRcdTAwMjZzZW5zb3JfZGV2X2F0dHJfdGVtcDFfaW5wdXQuZGV2X2F0dHIuYXR0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDItfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo0MzpBVFRSSUJVVEVfR1JPVVBTKG10NzkyNV9od21vbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NDU6c3RhdGljIGludCBtdDc5MjVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo1NDpcdG5hbWUgPSBkZXZtX2thc3ByaW50ZihcdTAwMjZ3aXBoeS1cdTAwM2VkZXYsIEdGUF9LRVJORUwsIFwmIzM0O210NzkyNV8lc1wmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01NS1cdFx0XHQgICAgICB3aXBoeV9uYW1lKHdpcGh5KSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTU5LVx0aHdtb24gPSBkZXZtX2h3bW9uX2RldmljZV9yZWdpc3Rlcl93aXRoX2dyb3VwcyhcdTAwMjZ3aXBoeS1cdTAwM2VkZXYsIG5hbWUsIHBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo2MDpcdFx0XHRcdFx0XHQgICAgICAgbXQ3OTI1X2h3bW9uX2dyb3Vwcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjEtXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGh3bW9uKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NjQ6c3RhdGljIHZvaWQgbXQ3OTI1X21hY19pbml0X2Jhc2ljX3JhdGVzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03My1cdFx0ICAgICAgIEZJRUxEX1BSRVAoTVRfVFhfUkFURV9JRFgsIHJhdGUgXHUwMDI2IEdFTk1BU0soNywgMCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjc0Olx0XHRtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKGRldiwgaWR4LCByYXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03NS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Nzg6aW50IG10NzkyNV9tYWNfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTc5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtODYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNVDc5MnhfV1RCTF9TSVpFOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo4NzpcdFx0bXQ3OTI1X21hY193dGJsX3VwZGF0ZShkZXYsIGksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtODgtXHRcdFx0XHQgICAgICAgTVRfV1RCTF9VUERBVEVfQURNX0NPVU5UX0NMRUFSKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6OTI6XHRtdDc5MjVfbWFjX2luaXRfYmFzaWNfcmF0ZXMoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy05My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjk4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tYWNfaW5pdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTAwOnN0YXRpYyBpbnQgX19tdDc5MjVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEwMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTExMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMTI6XHRyZXQgPSBtdDc5MjVfbWN1X3NldF9lZXByb20oZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTE2Olx0cmV0ID0gbXQ3OTI1X21hY19pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTE3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTIwLVx0aWYgKGlzX210NzkyNyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMjE6XHRcdHJldCA9IG10NzkyNV9tY3Vfc2V0X2RiZGMoXHUwMDI2ZGV2LVx1MDAzZW1waHksIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEyMi1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTMzOnN0YXRpYyBpbnQgbXQ3OTI1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTQ1Olx0XHRyZXQgPSBfX210NzkyNV9pbml0X2hhcmR3YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTQ2LVx0XHRpZiAoIXJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE2MzpzdGF0aWMgaW50IG10NzkyNV9pbml0X25hbl9jYXAoc3RydWN0IG10NzZfZGV2ICptZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE2NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxOTA6c3RhdGljIHZvaWQgbXQ3OTI1X2luaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTkxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE5NjpcdHJldCA9IG10NzkyNV9pbml0X2hhcmR3YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTk3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjAwLVx0bXQ3Nl9zZXRfc3RyZWFtX2NhcHMoXHUwMDI2ZGV2LVx1MDAzZW1waHksIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIwMTpcdG10NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwMi1cdG10NzkyeF9jb25maWdfbWFjX2FkZHJfbGlzdChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMDQ6XHRyZXQgPSBtdDc5MjVfaW5pdF9tbG9fY2FwcyhcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDUtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMTA6XHRkZXYtXHUwMDNlbXQ3Ni5pbml0X3dpcGh5ID0gbXQ3OTI1X2luaXRfbmFuX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIxOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMTk6XHRyZXQgPSBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjIwLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjI1Olx0cmV0ID0gbXQ3OTI1X3RoZXJtYWxfaW5pdChcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjYtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMzE6XHRyZXQgPSBtdDc5MjVfbWN1X3NldF90aGVybWFsX3Byb3RlY3QoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMzItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNDA6XHRtdDc5MjVfbWN1X3NldF9kZWVwX3NsZWVwKGRldiwgZGV2LVx1MDAzZXBtLmRzX2VuYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQxLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjQzOmludCBtdDc5MjVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQ0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjUzLVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBtLnBzX3dvcmssIG10NzkyeF9wbV9wb3dlcl9zYXZlX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI1NDpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yaywgbXQ3OTI1X21sb19wbV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNTUtXHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBtLndha2Vfd29yaywgbXQ3OTJ4X3BtX3dha2Vfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2MS1cdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VtcGh5Lm1hY193b3JrLCBtdDc5MnhfbWFjX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI2MjpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VwaHkuc2Nhbl93b3JrLCBtdDc5MjVfc2Nhbl93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNjM6XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZkZXYtXHUwMDNlY29yZWR1bXAud29yaywgbXQ3OTI1X2NvcmVkdW1wX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2NC0jaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNjU6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZWlwdjZfbnNfd29yaywgbXQ3OTI1X3NldF9pcHY2X25zX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2Ni1cdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2ZGV2LVx1MDAzZWlwdjZfbnNfbGlzdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNzE6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dvcmssIG10NzkyNV9tYWNfcmVzZXRfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjcyOlx0SU5JVF9XT1JLKFx1MDAyNmRldi1cdTAwM2Vpbml0X3dvcmssIG10NzkyNV9pbml0X3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNzQ6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBoeS5yb2Nfd29yaywgbXQ3OTI1X3JvY193b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNzUtXHR0aW1lcl9zZXR1cChcdTAwMjZkZXYtXHUwMDNlcGh5LnJvY190aW1lciwgbXQ3OTJ4X3JvY190aW1lciwgMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTMwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozMDI6XHRody1cdTAwM2V3aXBoeS1cdTAwM2VyZWdfbm90aWZpZXIgPSBtdDc5MjVfcmVnZF9ub3RpZmllcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zMDMtXHRkZXYtXHUwMDNlbXBoeS5zYmFuZF8yZy5zYmFuZC5odF9jYXAuY2FwIHw9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTMyOS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MzMwOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9yZWdpc3Rlcl9kZXZpY2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTYtI2luY2x1ZGUgXHUwMDNjbGludXgvdGltZWtlZXBpbmcuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NzojaW5jbHVkZSBcJiMzNDttdDc5MjUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtOC0jaW5jbHVkZSBcJiMzNDsuLi9kbWEuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTM6Ym9vbCBtdDc5MjVfbWFjX3d0YmxfdXBkYXRlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGludCBpZHgsIHUzMiBtYXNrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6Mjk6c3RhdGljIHZvaWQgbXQ3OTI1X21hY19zdGFfcG9sbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTY1LVx0XHRpZHggPSBtbGluay1cdTAwM2V3Y2lkLmlkeDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjY2Olx0XHRhZGRyID0gbXQ3OTI1X21hY193dGJsX2xtYWNfYWRkcihkZXYsIGlkeCwgTVRfV1RCTF9BQzBfQ1RUX09GRlNFVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NC1cdFx0aWYgKGNsZWFyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4NTpcdFx0XHRtdDc5MjVfbWFjX3d0YmxfdXBkYXRlKGRldiwgaWR4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODYtXHRcdFx0XHRcdCAgICAgICBNVF9XVEJMX1VQREFURV9BRE1fQ09VTlRfQ0xFQVIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEzMDpcdFx0YWRkciA9IG10NzkyNV9tYWNfd3RibF9sbWFjX2FkZHIoZGV2LCBpZHgsIDYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTMxLVx0XHR2YWwgPSBtdDc2X3JyKGRldiwgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzItXHRcdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBSQVRFX0lORk9fRkxBR1NfRUhUX01DUykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTMzOlx0XHRcdGFkZHIgPSBtdDc5MjVfbWFjX3d0YmxfbG1hY19hZGRyKGRldiwgaWR4LCA1KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzNC1cdFx0XHR2YWwgPSBtdDc2X3JyKGRldiwgYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ4LVx0XHQvKiBnZXQgc2lnbmFsIHN0cmVuZ3RoIG9mIHJlc3AgZnJhbWVzIChDVFMvQkEvQUNLKSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ5Olx0XHRhZGRyID0gbXQ3OTI1X21hY193dGJsX2xtYWNfYWRkcihkZXYsIGlkeCwgMzQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTUwLVx0XHR2YWwgPSBtdDc2X3JyKGRldiwgYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY0OnZvaWQgbXQ3OTI1X21hY19zZXRfZml4ZWRfcmF0ZV90YWJsZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY1LVx0XHRcdFx0ICAgICB1OCB0YmxfaWR4LCB1MTYgcmF0ZV9pZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTgyLS8qIFRoZSBIVyBkb2VzIG5vdCB0cmFuc2xhdGUgdGhlIG1hYyBoZWFkZXIgdG8gODAyLjMgZm9yIG1lc2ggcG9pbnQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE4MzpzdGF0aWMgaW50IG10NzkyNV9yZXZlcnNlX2ZyYWcwX2hkcl90cmFucyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgaGRyX2dhcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE4NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MjYyPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjI2MzptdDc5MjVfbWFjX2ZpbGxfcnhfcmF0ZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMjY0LVx0XHRcdHN0cnVjdCBtdDc2X3J4X3N0YXR1cyAqc3RhdHVzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTM3Mj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzozNzM6bXQ3OTI1X21hY19maWxsX3J4KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0zNzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTU1Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjU1MzpcdFx0cmV0ID0gbXQ3OTI1X21hY19maWxsX3J4X3JhdGUoZGV2LCBzdGF0dXMsIHNiYW5kLCByeHYsIFx1MDAyNm1vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNTU0LVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTU2Ni1cdGlmIChoZHJfdHJhbnMgXHUwMDI2XHUwMDI2IGllZWU4MDIxMV9oYXNfbW9yZWZyYWdzKGZjKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NTY3Olx0XHRpZiAobXQ3OTI1X3JldmVyc2VfZnJhZzBfaGRyX3RyYW5zKHNrYiwgaGRyX2dhcCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy01NjgtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NjQwPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo2NDE6bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjMoX19sZTMyICp0eHdpLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjQyLVx0XHRcdCAgIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9Njc1PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo2NzY6bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02NzctXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NzQ2PXZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjc0NzptdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTc0OC1cdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04MzktXHRpZiAoaXNfODAyMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg0MDpcdFx0bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjModHh3aSwgc2tiLCB3Y2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg0MS1cdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg0MjpcdFx0bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKGRldiwgdHh3aSwgc2tiLCBrZXkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg2Ni19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4Njc6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21hY193cml0ZV90eHdpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg2OTpzdGF0aWMgdm9pZCBtdDc5MjVfdHhfY2hlY2tfYWdncihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODcwLVx0XHRcdFx0IHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9OTIzPXN0YXRpYyBib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo5MjQ6bXQ3OTI1X21hY19hZGRfdHhzX3NrYihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtOTI1LVx0XHQgICAgICAgaW50IHBpZCwgX19sZTMyICp0eHNfZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xMTkyPXZvaWQgbXQ3OTI4X21hY19hZGRfdHhzX21zZyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMjI5OnZvaWQgbXQ3OTI1X21hY19hZGRfdHhzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjMwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTI2MzpcdG10NzkyNV9tYWNfYWRkX3R4c19za2IoZGV2LCB3Y2lkLCBwaWQsIHR4c19kYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyNjQtXHRpZiAoIXdjaWQtXHUwMDNlc3RhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMjczOnZvaWQgbXQ3OTI1X3R4d2lfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl90eHdpX2NhY2hlICp0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTI3NC1cdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjg3LVx0XHRpZiAobGlrZWx5KHQtXHUwMDNlc2tiLVx1MDAzZXByb3RvY29sICE9IGNwdV90b19iZTE2KEVUSF9QX1BBRSkpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTI4ODpcdFx0XHRtdDc5MjVfdHhfY2hlY2tfYWdncihzdGEsIHQtXHUwMDNlc2tiLCB3Y2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyODktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTI5OS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzAwOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV90eHdpX2ZyZWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTMwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTEzMDI9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEzMDM6bXQ3OTI1X21hY190eF9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzA0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTM3MDpcdFx0XHRtdDc5MjVfdHh3aV9mcmVlKGRldiwgdHh3aSwgc3RhLCB3Y2lkLCBcdTAwMjZmcmVlX2xpc3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTM3MS1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzc0Olx0bXQ3OTI1X21hY19zdGFfcG9sbChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTM3NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTM4Nzpib29sIG10NzkyNV9yeF9jaGVjayhzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzg4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDA2LVx0XHRcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0MDc6XHRcdG10NzkyNV9tYWNfdHhfZnJlZShkZXYsIGRhdGEsIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDA4LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQxMC1cdFx0Zm9yIChyeGQgJiM0Mzs9IDQ7IHJ4ZCAmIzQzOyAxMiBcdTAwM2M9IGVuZDsgcnhkICYjNDM7PSAxMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0MTE6XHRcdFx0bXQ3OTI1X21hY19hZGRfdHhzKGRldiwgcnhkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MTItXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDE2LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0MTc6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3J4X2NoZWNrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDE5OnZvaWQgbXQ3OTI1X3F1ZXVlX3J4X3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MjAtXHRcdFx0IHN0cnVjdCBza19idWZmICpza2IsIHUzMiAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDQ2LVx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDQ3Olx0XHRtdDc5MjVfbWFjX3R4X2ZyZWUoZGV2LCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDQ4LVx0XHRuYXBpX2NvbnN1bWVfc2tiKHNrYiwgMSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1MC1cdGNhc2UgUEtUX1RZUEVfUlhfRVZFTlQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDUxOlx0XHRtdDc5MjVfbWN1X3J4X2V2ZW50KGRldiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NTItXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NTQtXHRcdGZvciAocnhkICYjNDM7PSAyOyByeGQgJiM0MzsgOCBcdTAwM2M9IGVuZDsgcnhkICYjNDM7PSA4KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ1NTpcdFx0XHRtdDc5MjVfbWFjX2FkZF90eHMoZGV2LCByeGQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1Ni1cdFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NTktXHRjYXNlIFBLVF9UWVBFX05PUk1BTDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0NjA6XHRcdGlmICghbXQ3OTI1X21hY19maWxsX3J4KGRldiwgc2tiKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ2MS1cdFx0XHRtdDc2X3J4KFx1MDAyNmRldi1cdTAwM2VtdDc2LCBxLCBza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NjktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ3MDpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfcXVldWVfcnhfc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNDcyPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDczOm10NzkyNV92aWZfY29ubmVjdF9pdGVyKHZvaWQgKnByaXYsIHU4ICptYWMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDc0LVx0XHRcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTUxNwoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDE4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNVDc5MjUgRHJpdmVyIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBtdDc5MjVgIGRyaXZlci4gUmlnaHQsIGl0JiMzOTtzIGdvdCBib3RoIGBtdDc5MjVlLm9gLCB0aGUgUENJZSB2ZXJzaW9uLCBhbmQgYG10NzkyNXUub2AsIHdoaWNoIGlzIFVTQi4gV2FpdCBhIG1pbnV0ZS4uLiAqeWVzKiwgYG10NzkyNXUteSA6PSB1c2Iub2AgY29uZmlybXMgdGhlcmUmIzM5O3MgYSBVU0IgZHJpdmVyIGZvciB0aGlzIE1UNzkyNSBjaGlwc2V0LiBFeGNlbGxlbnQhIFRoaXMgb3BlbnMgdXAgc29tZSBpbnRlcmVzdGluZyBmdXp6aW5nIHBvc3NpYmlsaXRpZXMuIFNpbmNlIGl0JiMzOTtzIFVTQiwgSSBjYW4gbGV2ZXJhZ2UgZHVtbXlfaGNkIGFuZCBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIOKAkyB0aGF0JiMzOTtzIGEga2V5IGFkdmFudGFnZS4KCk5vdywgbGV0JiMzOTtzIHNlZS4uLiB3aGF0JiMzOTtzIGEgZ29vZCB0YXJnZXQgZnVuY3Rpb24gdG8gZXhhbWluZSBmb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcz8gSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCBzdGFydCBieSBjaGVja2luZyBpZiBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgIGlzIHJlYWNoYWJsZS4gTGV0IG1lIHF1aWNrbHkgY29uZmlybSB3aGVyZSB0aGF0JiMzOTtzIGRlZmluZWQ7IHllcCwgaXQmIzM5O3MgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY2AuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHRyYWNlIHRoZSBmdW5jdGlvbiYjMzk7cyB1c2FnZSwgdW5kZXJzdGFuZCBob3cgaXQgZ2V0cyBjYWxsZWQgYW5kIHVuZGVyIHdoYXQgY2lyY3Vtc3RhbmNlcy4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaW50ZXJlc3Rpbmcgc3R1ZmYgdXN1YWxseSBsaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9jaGFuZ2VfdmlmX2xpbmtzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yMjA4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoyMjA5Om10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTIyMTAtXHRcdFx0dTE2IG9sZF9saW5rcywgdTE2IG5ld19saW5rcyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MjczMT1jb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBtdDc5MjVfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNzkwLVx0LmxpbmtfaW5mb19jaGFuZ2VkID0gbXQ3OTI1X2xpbmtfaW5mb19jaGFuZ2VkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjI3OTE6XHQuY2hhbmdlX3ZpZl9saW5rcyA9IG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI3OTItXHQuY2hhbmdlX3N0YV9saW5rcyA9IG10NzkyNV9jaGFuZ2Vfc3RhX2xpbmtzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMzc1CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3OTI1IERyaXZlciYjMzk7cyBMaW5rIENoYW5nZSBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYG10NzkyNV9vcHNgIHN0cnVjdHVyZSBhbmQgSSBzZWUgdGhlIGAuY2hhbmdlX3ZpZl9saW5rc2AgZnVuY3Rpb24gYXNzaWduZWQuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBvcGVyYXRpbmcgd2l0aGluIHRoZSBtYWM4MDIxMSBmcmFtZXdvcmssIHdoaWNoIGlzIHN0YW5kYXJkIHByb2NlZHVyZS4gU2luY2Ugd2UgYXJlIHRhbGtpbmcgYWJvdXQgYSBVU0IgZHJpdmVyLCBpdCAqc2hvdWxkKiBiZSBhdHRhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uLCBhIGNvbW1vbiBhcHByb2FjaCBmb3IgdGVzdGluZyB0aGVzZSBraW5kcyBvZiB0aGluZ3MuCgpCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBpcyB0aGUgTVQ3OTI1IFVTQiBkcml2ZXIgYWN0dWFsbHkgZW5hYmxlZCBpbiBzeXprYWxsZXImIzM5O3MgY29uZmlndXJhdGlvbj8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyIGRvd24gdGhpcyByYWJiaXQgaG9sZS4gTGV0IG1lIGdvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBNVDc5MjVVYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgYW5zd2VyIHdpbGwgYmUuIEdvdHRhIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgZXZlbiB0ZXN0aW5nIHRoZSByaWdodCBwYXRoIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDQ6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzkyNVUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZz03PWNvbmZpZyBNVDc5MjVFXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDg1OAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKldvcmtpbmcgd2l0aCBNVDc5MjVVIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsICpNVDc5MjVVKiBpcyB0aGUgY29uZmlndXJhdGlvbiB3ZSYjMzk7cmUgZ29pbmcgd2l0aCwgeWVwLiBCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBiZWZvcmUgd2UgZ28gYW55IGZ1cnRoZXIsIGxldCYjMzk7cyBqdXN0IGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mICpNVDc5MjVVKi4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB3ZSBoYXZlbiYjMzk7dCBvdmVybG9va2VkIGFueSBjcml0aWNhbCB1cHN0cmVhbSBvciBkb3duc3RyZWFtIGNvbXBvbmVudHMgdGhhdCByZWx5IG9uIG9yIGltcGFjdCB0aGlzIHBhcnRpY3VsYXIgc2V0dXAuIEl0JiMzOTtzIHRvbyBlYXN5IHRvIGdldCBjYXVnaHQgb3V0IGJ5IHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zIGxhdGVyIG9uLiBBIHF1aWNrIHJldmlldyBvZiB0aGUgZGVwZW5kZW5jaWVzIG5vdyBpcyBhbHdheXMgdGltZSB3ZWxsIHNwZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRjb25maWcgTVQ3OTI1X0NPTU1PTlxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBNVDc5MnhfTElCXG4gICA1Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgIDY6XHRcbiAgIDc6XHRjb25maWcgTVQ3OTI1RVxuICAgODpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuICAgOTpcdFx0c2VsZWN0IE1UNzkyNV9DT01NT05cbiAgMTA6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMTE6XHRcdGRlcGVuZHMgb24gUENJXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgUENJZSBkZXZpY2VzLFxuICAxNDpcdFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcbiAgMTU6XHRcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxuICAxNjpcdFxuICAxNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAxODpcdFxuICAxOTpcdGNvbmZpZyBNVDc5MjVVXG4gIDIwOlx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiAgMjE6XHRcdHNlbGVjdCBNVDc5MnhfVVNCXG4gIDIyOlx0XHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxuICAyMzpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAyNDpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgMjU6XHRcdGhlbHBcbiAgMjY6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBVU0IgZGV2aWNlcyxcbiAgMjc6XHRcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXG4gIDI4Olx0XHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cbiAgMjk6XHRcbiAgMzA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDQ6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE1NTQKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiA3NTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgdGhlIGRlcGVuZGVuY2llcyBqdW1wIG91dDogYE1BQzgwMjExYCBhbmQgYFVTQmAuICBUaGF0IG1lYW5zIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGlzIGxpa2VseSBgTVQ3OTI1VWAuIFRoZSBjb3JlIGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVlbiBtb2RpZmllZCBpcyBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgLiAgTGV0JiMzOTtzIHJlLWV4YW1pbmUgdGhhdCBjb2RlIGJsb2NrLCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBhZGRlZCBsb2dpYyB0aGF0IGhhbmRsZXMgdGhlIGxlZ2FjeSBCU1MgcmVzdG9yZS4KCmBgYGMKQEAgLTIyOTQsNiAmIzQzOzIyOTQsMjEgQEAgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsCiAKIAltdmlmLSZndDt2YWxpZF9saW5rcyA9IG5ld19saW5rczsKIAomIzQzOwkvKiBUaGUgZmlybXdhcmUgd291bGQga2VlcCB0aGUgTUxEIEJTUyBhbmQgREVWIGVudHJ5OiB0aGUgcmVtb3ZhbAomIzQzOwkgKiBsb29wIHNraXBzIHRoZSBkZWZsaW5rIGFuZCB0aGUgaHdlaWdodDE2KCkgZmFsbGJhY2sgYWJvdmUgcmVhZHMKJiM0MzsJICogdGhlIHN0YWxlIHByZS11cGRhdGUgdmFsaWRfbGlua3MuIFJlc3RvcmUgdGhlIGxlZ2FjeSBCU1MuCiYjNDM7CSAqLwomIzQzOwlpZiAob2xkX2xpbmtzICZhbXA7JmFtcDsgIW5ld19saW5rcykgewomIzQzOwkJbXQ3OTJ4X21hY19saW5rX2Jzc19yZW1vdmUoZGV2LCAmYW1wO212aWYtJmd0O2Jzc19jb25mLAomIzQzOwkJCQkJICAgJmFtcDttdmlmLSZndDtzdGEuZGVmbGluayk7CiYjNDM7CQllcnIgPSBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZChkZXYsICZhbXA7dmlmLSZndDtic3NfY29uZiwKJiM0MzsJCQkJCSAgICAgICZhbXA7bXZpZi0mZ3Q7c3RhLmRlZmxpbmspOwomIzQzOwkJaWYgKGVyciAmbHQ7IDApIHsKJiM0MzsJCQltdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpOwomIzQzOwkJCXJldHVybiBlcnI7CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKIAltdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpOwogCiAJcmV0dXJuIDA7CmBgYAoKVGhpcyBpcyBjbGVhcmx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AuIE5vdywgYSBjcnVjaWFsIHF1ZXN0aW9uIGFyaXNlczogaXMgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBldmVuIHJlYWNoYWJsZT8gIEkga25vdyB0aGF0IGBtYWM4MDIxMWAgY2FsbHMgdGhpcyB3aGVuIHZpcnR1YWwgaW50ZXJmYWNlICh2aWYpIGxpbmtzIGNoYW5nZSwgd2hpY2ggaXMgdHlwaWNhbGx5IHRyaWdnZXJlZCB2aWEgbmV0bGluay4gQnV0IGRvZXMgZmlybXdhcmUgbmVlZCB0byBiZSBsb2FkZWQgZm9yIHRoaXMgY29kZSBwYXRoIHRvIGJlIHJlYWNoZWQ/IFdpdGggVVNCIGRyaXZlcnMgaW4gYG1hYzgwMjExYCwgZmlybXdhcmUgdXN1YWxseSAqaXMqIHJlcXVpcmVkIGZvciBwcm9wZXIgaW5pdGlhbGl6YXRpb24uIElmIGZpcm13YXJlIGlzbiYjMzk7dCBhdmFpbGFibGUsIHRoZSBkcml2ZXIgbWlnaHQgZmFpbCB0byBwcm9iZS4KCkhlcmUmIzM5O3Mgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZyBpbiB0aGUgY29udGV4dCBvZiBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLiAgU3l6a2FsbGVyIGNhbiBzb21ldGltZXMgYnlwYXNzIGZpcm13YXJlIHJlcXVpcmVtZW50cy4gSXQgY291bGQgbW9jayB0aGUgZmlybXdhcmUsIG9yIHRoZSBkcml2ZXIgbWlnaHQgbm90ICpzdHJpY3RseSogbmVlZCBpdCB0byByZWdpc3RlciB0aGUgYG1hYzgwMjExYCBkZXZpY2UuIFdlIG5lZWQgdG8gYXNjZXJ0YWluIGlmIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgaXMgcmVhY2hhYmxlIHdpdGhvdXQgZmlybXdhcmUsIG9yIHdoZXRoZXIgc3l6a2FsbGVyJiMzOTtzIHNldHVwIGFsbG93cyBpdC4KClN5emthbGxlciBnZW5lcmFsbHkgdXNlcyBgbWFjODAyMTFfaHdzaW1gLCBidXQgZm9yIFVTQiBkcml2ZXJzLCBpdCB1c2VzIGBkdW1teV9oY2RgIGFuZCBpbmplY3RzIGRlc2NyaXB0b3JzLiBJZiB0aGUgZHJpdmVyICpkb2VzKiBuZWVkIGZpcm13YXJlLCBzeXprYWxsZXIgaGFzIGEgZmFsbGJhY2sgbWVjaGFuaXNtIHRvIHN1cHBseSBkdW1teSBmaXJtd2FyZSB2aWEgdGhlIGZpcm13YXJlIGxvYWRlci4KCkxldCYjMzk7cyBhbHNvIGV2YWx1YXRlIGBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZGAgYW5kIGBtdDc5MnhfbWFjX2xpbmtfYnNzX3JlbW92ZWAgYXMgcG90ZW50aWFsIGZvY3VzIHN5bWJvbHMuIFdoaWxlIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgaXMgdGhlIGNlbnRyYWwgbW9kaWZpZWQgZnVuY3Rpb24sIHRob3NlIHJlbGF0ZWQgZnVuY3Rpb25zIGluIHRoZSBwYXRjaCBtaWdodCBiZSBpbnRlcmVzdGluZyB0b28uIENoZWNraW5nIGJhY2ssIGl0IGxvb2tzIGxpa2UgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBpcyBkZWNsYXJlZCBzdGF0aWMuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoZSBjb2RlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjVfY2hhbmdlX3ZpZl9saW5rcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MjIwOD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjIwOTptdDc5MjVfY2hhbmdlX3ZpZl9saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yMjEwLVx0XHRcdHUxNiBvbGRfbGlua3MsIHUxNiBuZXdfbGlua3MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTI3MzE9Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3OTI1X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjc5MC1cdC5saW5rX2luZm9fY2hhbmdlZCA9IG10NzkyNV9saW5rX2luZm9fY2hhbmdlZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoyNzkxOlx0LmNoYW5nZV92aWZfbGlua3MgPSBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNzkyLVx0LmNoYW5nZV9zdGFfbGlua3MgPSBtdDc5MjVfY2hhbmdlX3N0YV9saW5rcyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDQ6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM1NTYKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAxNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uc2lkZXJpbmcgdGhlIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGlzIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgZnVuY3Rpb24uIFRoZSBjb2RlIHNheXMgaXQmIzM5O3Mgc3RhdGljLCB3aGljaCB1c3VhbGx5IG1lYW5zIHRoZSBjb21waWxlciBtaWdodCBpbmxpbmUgaXQsIG1ha2luZyBpdHMgc3ltYm9sIGFkZHJlc3MgYW1iaWd1b3VzLiBIb3dldmVyLCBzaW5jZSBpdCYjMzk7cyBiZWluZyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIGlubGluaW5nIGlzIHVubGlrZWx5LiBTbywgdGhlIHN0YXRpYyBkZWNsYXJhdGlvbiBpcyBhIGJpdCByZWR1bmRhbnQgYnV0IGxpa2VseSBoYXJtbGVzcywgYWx0aG91Z2ggaXQmIzM5O3MgYmV0dGVyIHRvIGVuc3VyZSBpdCYjMzk7cyBwcm92aWRlZCBpZiBpdCBpcyAqbm90KiBpbmxpbmVkLgoKSGFuZyBvbiBhIHNlY29uZOKApiB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIGEgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5IHBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGlzIGlzIHdoZXJlIEkgaGF2ZSB0byBwYXVzZSBhbmQgY29uc2lkZXIgLSBpcyBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgIHRoZSAqZXhhY3QqIGZ1bmN0aW9uIHRoYXQgbmVlZHMgdG8gYmUgbW9kaWZpZWQ/IElmIHNvLCB3aGF0IGFyZSBteSBvcHRpb25zPyBJcyB0aGVyZSBhIG5vbi1zdGF0aWMgYWx0ZXJuYXRpdmUgSSBjYW4gdXNlIGhlcmU/IEkgbmVlZCB0byBleHBsb3JlIHdoYXQgdGhlIGFsdGVybmF0aXZlIG1ldGhvZHMgYXJlIGhlcmUuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayBgbXQ3OTI1X21hY19saW5rX2Jzc19hZGRgLiBNYXliZSB0aGF0IGZ1bmN0aW9uIGlzIHRoZSBwcmVmZXJyZWQgbWV0aG9kIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9tYWNfbGlua19ic3NfYWRkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0zNjY9c3RhdGljIGludCBtdDc5MjVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTM3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzozNzg6c3RhdGljIGludCBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTM3OS1cdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmxpbmtfY29uZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9NDU1PW10NzkyNV9hZGRfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy00NjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6NDcwOlx0cmV0ID0gbXQ3OTI1X21hY19saW5rX2Jzc19hZGQoZGV2LCBcdTAwMjZ2aWYtXHUwMDNlYnNzX2NvbmYsIFx1MDAyNm12aWYtXHUwMDNlc3RhLmRlZmxpbmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTQ3MS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTIyMDk9bXQ3OTI1X2NoYW5nZV92aWZfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTIyODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjI4MzpcdFx0ZXJyID0gbXQ3OTI1X21hY19saW5rX2Jzc19hZGQoZGV2LCBsaW5rX2NvbmYsIG1saW5rKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yMjg0LVx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yMzAzLVx0XHRcdFx0XHQgICBcdTAwMjZtdmlmLVx1MDAzZXN0YS5kZWZsaW5rKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoyMzA0Olx0XHRlcnIgPSBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZChkZXYsIFx1MDAyNnZpZi1cdTAwM2Vic3NfY29uZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yMzA1LVx0XHRcdFx0XHQgICAgICBcdTAwMjZtdmlmLVx1MDAzZXN0YS5kZWZsaW5rKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDQ6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ3MjgKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgZmFtaWxpYXIgd2l0aCBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBkcml2ZXIgZGV2ZWxvcG1lbnQ6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogU3RhdGljIENvbnRleHQgYW5kIEZ1bmN0aW9uIFVzYWdlKioKCkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIG9ic2VydmF0aW9uIHBvaW50cyBvdXQgYSBrZXkgYXNwZWN0OiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHN0YXRpYyBlbGVtZW50cyBpbiB0aGlzIHBhcnRpY3VsYXIgc2NlbmFyaW8uIE15IGltbWVkaWF0ZSBmb2xsb3ctdXAgcXVlc3Rpb24gaXMsIGFyZSB3ZSAqZXhjbHVzaXZlbHkqIGRlYWxpbmcgd2l0aCBzdGF0aWMgZnVuY3Rpb25zLCBvciBhcmUgdGhlcmUgYW55IG5vbi1zdGF0aWMgYWx0ZXJuYXRpdmVzIHRvIGNvbnNpZGVyPyBUaGlzIGlzIGNyaXRpY2FsIGluIHVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIG9mIHRoZSBwcm9ibGVtLgoKVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgYG10NzkyNV9vcHNgIHN0cnVjdHVyZS4gTXkgcHJpbWFyeSBmb2N1cyBpcyB0byBkZXRlcm1pbmUgaG93IGl0JiMzOTtzIGJlaW5nICp1dGlsaXplZCouIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGtub3cgaWYgaXQmIzM5O3MgZXhwb3J0ZWQsIGFuZCB0aGVyZWZvcmUgcG9zc2libHkgYWNjZXNzaWJsZSBvdXRzaWRlIG9mIGl0cyBpbnRlbmRlZCBzY29wZSwgb3IgdXNlZCBpbiBgaW5pdC5jYC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBpbml0aWFsaXphdGlvbiBhbmQgYWNjZXNzIG1ldGhvZHMgb2YgdGhlIGNvZGUuIFRoaXMgd2lsbCBoZWxwIG1lIG5hcnJvdyBkb3duIHBvdGVudGlhbCBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTI3MjI9c3RhdGljIHZvaWQgbXQ3OTI1X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjczMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoyNzMxOmNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzkyNV9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjczMi1cdC50eCA9IG10NzkyeF90eCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjgwNC19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjI4MDU6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjgwNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0yNjM9c3RhdGljIGlubGluZSB1OCBtdDc5MjdfYmFuZF9pZHgoZW51bSBubDgwMjExX2JhbmQgYmFuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0yNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDoyNzU6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzkyNV9vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0yNzYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9NTI4PXN0YXRpYyBpbnQgbXQ3OTI1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy02MDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYzo2MDE6XHRvcHMgPSBtdDc5MnhfZ2V0X21hYzgwMjExX29wcyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgXHUwMDI2bXQ3OTI1X29wcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTYwMi1cdFx0XHRcdCAgICAgICh2b2lkICopaWQtXHUwMDNlZHJpdmVyX2RhdGEsIFx1MDAyNmZlYXR1cmVzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxOTE6XHRvcHMgPSBtdDc5MnhfZ2V0X21hYzgwMjExX29wcyhcdTAwMjZ1c2JfaW50Zi1cdTAwM2VkZXYsIFx1MDAyNm10NzkyNV9vcHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xOTItXHRcdFx0XHQgICAgICAodm9pZCAqKWlkLVx1MDAzZWRyaXZlcl9pbmZvLCBcdTAwMjZmZWF0dXJlcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODU3CgkJCQkJCQlvdXRwdXQ6IDE0MgoJCQkJCQkJdGhvdWdodHM6IDcyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgIGlzIHRoZSBmb2N1cyBoZXJlLiBJdCYjMzk7cyB1c2VkIGluIGJvdGggYHVzYi5jYCBhbmQgYHBjaS5jYCwgd2hpY2ggdGVsbHMgbWUgaXQmIzM5O3MgZXhwb3NlZCB0aHJvdWdoIGBtdDc5MjVfb3BzYCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuIFNpbmNlIGl0JiMzOTtzIGEgcG9pbnRlciwgbm8gaW5saW5pbmcsIHdoaWNoIGlzIGdvb2QgZm9yIGZ1enppbmcuIFdlIGNhbiB0YXJnZXQgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBkaXJlY3RseS4KClRoZSBuZXh0IHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBmdW5jdGlvbiBiZSByZWFjaGVkIHdpdGhvdXQgcmVhbCBoYXJkd2FyZT8gWWVzLCB0aHJvdWdoIHRoZSBgbWFjODAyMTFgIGRyaXZlciBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgd2hlbiB0aGUgZGV2aWNlIGlzIHByb2JlZC4gRm9yIHRoZSBVU0IgY2FzZSwgd2UgY2FuIHVzZSBgZHVtbXlfaGNkYCB0byBwcm9iZSBgbXQ3OTI1dWAuIE5vdywgbGV0JiMzOTtzIHNlZSBpZiBgTVQ3OTI1VWAgaXMgZW5hYmxlZCBpbiBzeXprYWxsZXIuIFRoZSBhbnN3ZXIgaXMgeWVzLCBzbyBJIG5lZWQgdG8gcmV0dXJuIGBFbmFibGVDb25maWdzOiBbJiMzNDtNVDc5MjVVJiMzNDtdYC4KCkkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMuIENoZWNraW5nIGBNVDc5MjVVYCBkZXBlbmRlbmNpZXMsIGl0IGxvb2tzIGxpa2UgaXQgZGVwZW5kcyBvbiBgTUFDODAyMTFgIGFuZCBgVVNCYC4gRGlnZ2luZyBmdXJ0aGVyLCBgTVQ3OTI1X0NPTU1PTmAgaXMgc2VsZWN0ZWQgYnkgYE1UNzkyNVVgLCBhbmQgYE1UNzkyeF9VU0JgIGlzIGFsc28gc2VsZWN0ZWQgYnkgYE1UNzkyNVVgLCBzbyBgTVQ3OTI1VWAgaXMgaW5kZWVkIHN1ZmZpY2llbnQuCgpJJiMzOTt2ZSBkb3VibGUtY2hlY2tlZCwgYW5kIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgaXMgdGhlIG9ubHkgZnVuY3Rpb24gbW9kaWZpZWQuIFRoZSBwYXRjaCByZXN0b3JlcyB0aGUgbGVnYWN5IEJTUy4gVGhpcyBwYXRjaCBmaXhlcyBhIGJ1ZyB3aXRoIGZpcm13YXJlIGFuZCBpdCBzZWVtcyB0byBiZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLiAqKldvcnRoRnV6emluZz10cnVlKiogaXQgaXMuCgpMZXQmIzM5O3Mgc3VtbWFyaXplIHRoZSBuZWNlc3NhcnkgY29uZmlncyBhZ2FpbjogYE1UNzkyNVVgLCBgTUFDODAyMTFgLCBhbmQgYFVTQmAuCgpJJiMzOTtsbCBhbHNvIGNoZWNrIGlmIGBNVDc5MjVVYCByZXF1aXJlcyBmaXJtd2FyZS4gSWYgaXQgZG9lcywgc3l6a2FsbGVyJiMzOTtzIGZhbGxiYWNrIGZpcm13YXJlIGxvYWRpbmcgbWlnaHQgaGFuZGxlIGl0LCBvciBwcm9iaW5nIG1pZ2h0IGZhaWwuIEJ1dCB3ZSB3YW50IHRvIGZ1enogdGhpcyBjb2RlIGluIGFueSBjYXNlLiBMb29raW5nIGF0IHRoZSBvdGhlciBkcml2ZXIgdmFyaWFudHMsIGBNVDc5MjVFYCBpcyBQQ0llLCB3aGljaCBJIGtub3cgaXMgbW9yZSBjaGFsbGVuZ2luZyB0byBmdXp6IHJlbGlhYmx5IGluIFFFTVUgY29tcGFyZWQgdG8gVVNCLCBldmVuIHdpdGggc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIuIFVTQiBpcyBkZWZpbml0ZWx5IHRoZSBiZXR0ZXIgcGF0aC4KCkxldCYjMzk7cyByZS1leGFtaW5lIHRoZSBjb2RlIGluIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2A6CgpgYGBjCglpZiAob2xkX2xpbmtzICZhbXA7JmFtcDsgIW5ld19saW5rcykgewoJCW10NzkyeF9tYWNfbGlua19ic3NfcmVtb3ZlKGRldiwgJmFtcDttdmlmLSZndDtic3NfY29uZiwKCQkJCQkgICAmYW1wO212aWYtJmd0O3N0YS5kZWZsaW5rKTsKCQllcnIgPSBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZChkZXYsICZhbXA7dmlmLSZndDtic3NfY29uZiwKCQkJCQkgICAgICAmYW1wO212aWYtJmd0O3N0YS5kZWZsaW5rKTsKCQlpZiAoZXJyICZsdDsgMCkgewoJCQltdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpOwoJCQlyZXR1cm4gZXJyOwoJCX0KCX0KYGBgCgpZZXAsIHRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgYG1hYzgwMjExYCBkcml2ZXIuCgpTbyB0aGUgKipmb2N1cyBzeW1ib2wgaXMgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCoqLCBhbmQgdGhlIHJlcXVpcmVkIGNvbmZpZ3MgYXJlIGBNVDc5MjVVYC4gVGltZSB0byBzZXQgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1X2NoYW5nZV92aWZfbGlua3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBpbiB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB0byByZXN0b3JlIHRoZSBsZWdhY3kgQlNTIHdoZW4gbGlua3MgYXJlIHJlbW92ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjODAyMTEgZHJpdmVyIG9wZXJhdGlvbnMuIFRoZSBkcml2ZXIgaGFzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKGR1bW15X2hjZCkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1X2NoYW5nZV92aWZfbGlua3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBpbiB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB0byByZXN0b3JlIHRoZSBsZWdhY3kgQlNTIHdoZW4gbGlua3MgYXJlIHJlbW92ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjODAyMTEgZHJpdmVyIG9wZXJhdGlvbnMuIFRoZSBkcml2ZXIgaGFzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKGR1bW15X2hjZCkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNDo0OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgY2hhbmdpbmcgVklGIGxpbmtzIGluIHRoZSBtdDc5MjUgZHJpdmVyIGJ5IGFkZGluZyBhIGNvbmRpdGlvbiB0byByZW1vdmUgYW5kIHJlLWFkZCBhIEJTUyBsaW5rIHdoZW4gdHJhbnNpdGlvbmluZyBmcm9tIGhhdmluZyB2YWxpZCBsaW5rcyB0byBubyB2YWxpZCBsaW5rcy4gVGhpcyBpcyBhIHN0YXRlIG1hY2hpbmUgYW5kIGZpcm13YXJlIHN5bmNocm9uaXphdGlvbiBmaXguIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZC4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgaW52b2x2ZSB1c2UtYWZ0ZXItZnJlZSwgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgb3IgbG9naWMgZXJyb3JzLCB3aGljaCBhcmUgd2VsbC1jb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTA4ZWRmOWIxZWVmMzQwYTljNTUwOGIyODA0OTI5NDk1OTQyMDlkZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDI2IDA0OjQ4OjE4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jCmluZGV4IDg0YjU1ZjAwOGIzZDMuLmM3Y2VkMmVmZDRkN2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMKQEAgLTIyOTQsNiAmIzQzOzIyOTQsMjEgQEAgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsCiAKIAltdmlmLSZndDt2YWxpZF9saW5rcyA9IG5ld19saW5rczsKIAomIzQzOwkvKiBUaGUgZmlybXdhcmUgd291bGQga2VlcCB0aGUgTUxEIEJTUyBhbmQgREVWIGVudHJ5OiB0aGUgcmVtb3ZhbAomIzQzOwkgKiBsb29wIHNraXBzIHRoZSBkZWZsaW5rIGFuZCB0aGUgaHdlaWdodDE2KCkgZmFsbGJhY2sgYWJvdmUgcmVhZHMKJiM0MzsJICogdGhlIHN0YWxlIHByZS11cGRhdGUgdmFsaWRfbGlua3MuIFJlc3RvcmUgdGhlIGxlZ2FjeSBCU1MuCiYjNDM7CSAqLwomIzQzOwlpZiAob2xkX2xpbmtzICZhbXA7JmFtcDsgIW5ld19saW5rcykgewomIzQzOwkJbXQ3OTJ4X21hY19saW5rX2Jzc19yZW1vdmUoZGV2LCAmYW1wO212aWYtJmd0O2Jzc19jb25mLAomIzQzOwkJCQkJICAgJmFtcDttdmlmLSZndDtzdGEuZGVmbGluayk7CiYjNDM7CQllcnIgPSBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZChkZXYsICZhbXA7dmlmLSZndDtic3NfY29uZiwKJiM0MzsJCQkJCSAgICAgICZhbXA7bXZpZi0mZ3Q7c3RhLmRlZmxpbmspOwomIzQzOwkJaWYgKGVyciAmbHQ7IDApIHsKJiM0MzsJCQltdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpOwomIzQzOwkJCXJldHVybiBlcnI7CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKIAltdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpOwogCiAJcmV0dXJuIDA7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNDo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjE2CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMjU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1UNzkyNSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2Agd2l0aGluIHRoZSBNVDc5MjUgZHJpdmVyLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZGluZyBhIGNvbmRpdGlvbmFsIGNoZWNrOiBgaWYgKG9sZF9saW5rcyAmYW1wOyZhbXA7ICFuZXdfbGlua3MpYC4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBNQUMgbGluayBCU1MgcmVtb3ZhbCBhbmQgYWRkaXRpb24uIEl0JiMzOTtzIGNhbGxpbmcgYG10NzkyeF9tYWNfbGlua19ic3NfcmVtb3ZlYCBhbmQgYG10NzkyNV9tYWNfbGlua19ic3NfYWRkYCBiYXNlZCBvbiB0aGlzIGNoZWNrLiBNeSBpbml0aWFsIGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgdW5pbml0aWFsaXplZCBtZW1vcnkuIExldCYjMzk7cyBzZWUuLi4gYG9sZF9saW5rc2AgYW5kIGBuZXdfbGlua3NgIHNlZW0gdG8gYmUgaW50ZWdlcnMsIGxpa2VseSBgdTE2YCBiaXRtYXNrcy4gYG12aWYtJmd0O2Jzc19jb25mYCBhbmQgYHZpZi0mZ3Q7YnNzX2NvbmZgIGFyZSBwb2ludGVycywgYXMgaXMgYG12aWYtJmd0O3N0YS5kZWZsaW5rYC4KCkFscmlnaHQsIEkgZG9uJiMzOTt0IHNlZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9uIGhlcmUsIGFuZCBkZWZpbml0ZWx5IG5vIGRpcmVjdCBgY29weV90b191c2VyYCBjYWxscyB0aGF0IHdvdWxkIGJlIGFuIG9idmlvdXMgc291cmNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlLiBJdCBkb2VzbiYjMzk7dCBsb29rIGxpa2UgYW55IHVuaW5pdGlhbGl6ZWQgZGF0YSBpcyBiZWluZyByZWFkIGVpdGhlci4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0aGF0IHRoaXMgaXMgcHVyZWx5IGEgbG9naWNhbCBjaGFuZ2UsIHByb2JhYmx5IGZpeGluZyBhIHN0YXRlIG1hY2hpbmUgb3Igc3luY2hyb25pemF0aW9uIGlzc3VlIHdpdGggdGhlIGZpcm13YXJlLCB3aGljaCBpcyBhIGZhaXJseSBjb21tb24gYXJlYSBmb3IgcGF0Y2hlcyBsaWtlIHRoaXMuCgpHaXZlbiB0aGlzLCBJIGRvbiYjMzk7dCBpbW1lZGlhdGVseSBzZWUgYW55IG9idmlvdXMgS01TQU4gaXNzdWVzLiBLQVNBTiB3b3VsZCBiZSB0aGUgbW9yZSBsaWtlbHkgdG9vbCB0byBjYXRjaCBhbnkgVXNlLUFmdGVyLUZyZWUgb3IgT3V0LW9mLUJvdW5kcyBpc3N1ZXMgKmlmKiB0aGVyZSB3ZXJlIGFueS4gVGhvdWdoLCBpdCBuZXZlciBodXJ0cyB0byBkb3VibGUtY2hlY2sgdGhlc2UgdGhpbmdzLiBMZXQgbWUganVzdCB0YWtlIGFub3RoZXIgcXVpY2sgbG9vayBhdCB0aGUgY29kZSB0byBiZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgb2J2aW91cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDQ6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMjgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzIyODA6XHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKG12aWYtXHUwMDNlbGlua19jb25mW2xpbmtfaWRdLCBtY29uZik7XG4yMjgxOlx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihtdmlmLVx1MDAzZXN0YS5saW5rW2xpbmtfaWRdLCBtbGluayk7XG4yMjgyOlx0XG4yMjgzOlx0XHRcdGVyciA9IG10NzkyNV9tYWNfbGlua19ic3NfYWRkKGRldiwgbGlua19jb25mLCBtbGluayk7XG4yMjg0Olx0XHRcdGlmIChlcnIgXHUwMDNjIDApXG4yMjg1Olx0XHRcdFx0Z290byBmcmVlO1xuMjI4NjpcdFxuMjI4NzpcdFx0XHRpZiAobWNvbmYgIT0gXHUwMDI2bXZpZi1cdTAwM2Vic3NfY29uZikge1xuMjI4ODpcdFx0XHRcdGVyciA9IG10NzkyNV9zZXRfbWxvX3JvYyhwaHksIFx1MDAyNm12aWYtXHUwMDNlYnNzX2NvbmYsXG4yMjg5Olx0XHRcdFx0XHRcdFx0IHZpZi1cdTAwM2VhY3RpdmVfbGlua3MpO1xuMjI5MDpcdFx0XHRcdGlmIChlcnIgXHUwMDNjIDApXG4yMjkxOlx0XHRcdFx0XHRnb3RvIGZyZWU7XG4yMjkyOlx0XHRcdH1cbjIyOTM6XHRcdH1cbjIyOTQ6XHRcbjIyOTU6XHRcdG12aWYtXHUwMDNldmFsaWRfbGlua3MgPSBuZXdfbGlua3M7XG4yMjk2Olx0XG4yMjk3Olx0XHQvKiBUaGUgZmlybXdhcmUgd291bGQga2VlcCB0aGUgTUxEIEJTUyBhbmQgREVWIGVudHJ5OiB0aGUgcmVtb3ZhbFxuMjI5ODpcdFx0ICogbG9vcCBza2lwcyB0aGUgZGVmbGluayBhbmQgdGhlIGh3ZWlnaHQxNigpIGZhbGxiYWNrIGFib3ZlIHJlYWRzXG4yMjk5Olx0XHQgKiB0aGUgc3RhbGUgcHJlLXVwZGF0ZSB2YWxpZF9saW5rcy4gUmVzdG9yZSB0aGUgbGVnYWN5IEJTUy5cbjIzMDA6XHRcdCAqL1xuMjMwMTpcdFx0aWYgKG9sZF9saW5rcyBcdTAwMjZcdTAwMjYgIW5ld19saW5rcykge1xuMjMwMjpcdFx0XHRtdDc5MnhfbWFjX2xpbmtfYnNzX3JlbW92ZShkZXYsIFx1MDAyNm12aWYtXHUwMDNlYnNzX2NvbmYsXG4yMzAzOlx0XHRcdFx0XHRcdCAgIFx1MDAyNm12aWYtXHUwMDNlc3RhLmRlZmxpbmspO1xuMjMwNDpcdFx0XHRlcnIgPSBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZChkZXYsIFx1MDAyNnZpZi1cdTAwM2Vic3NfY29uZixcbjIzMDU6XHRcdFx0XHRcdFx0ICAgICAgXHUwMDI2bXZpZi1cdTAwM2VzdGEuZGVmbGluayk7XG4yMzA2Olx0XHRcdGlmIChlcnIgXHUwMDNjIDApIHtcbjIzMDc6XHRcdFx0XHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuMjMwODpcdFx0XHRcdHJldHVybiBlcnI7XG4yMzA5Olx0XHRcdH1cbjIzMTA6XHRcdH1cbjIzMTE6XHRcbjIzMTI6XHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4yMzEzOlx0XG4yMzE0Olx0XHRyZXR1cm4gMDtcbjIzMTU6XHRcbjIzMTY6XHRmcmVlOlxuMjMxNzpcdFx0Zm9yX2VhY2hfc2V0X2JpdChsaW5rX2lkLCBcdTAwMjZhZGQsIElFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LUykge1xuMjMxODpcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIobXZpZi1cdTAwM2VsaW5rX2NvbmZbbGlua19pZF0sIE5VTEwpO1xuMjMxOTpcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIobXZpZi1cdTAwM2VzdGEubGlua1tsaW5rX2lkXSwgTlVMTCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NzIKCQkJCQkJCW91dHB1dDogMTY1CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqUGF0Y2ggUmV2aWV3IGFuZCBTdGF0ZSBNYWNoaW5lIExvZ2ljKioKCkFscmlnaHQsIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgaXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkLiBUaGUgbWFpbiBmdW5jdGlvbiBpcyB0byBoYW5kbGUgdGhlIHJlbW92YWwgYW5kIGFkZGl0aW9uIG9mIEJTUyBsaW5rcyBiYXNlZCBvbiBjaGFuZ2VzIGluIHRoZSBsaW5rIHN0YXRlLCBzcGVjaWZpY2FsbHkgd2hlbiB0aGUgYG9sZF9saW5rc2AgYXJlIHByZXNlbnQgYnV0IHRoZSBgbmV3X2xpbmtzYCBhcmUgbm90LiBUaGlzIGlzIGRlZmluaXRlbHkgYSBzdGF0ZSBtYWNoaW5lIGNvcnJlY3Rpb24sIHdoaWNoIGlzIHdoYXQgSSBzdXNwZWN0ZWQgZ2l2ZW4gdGhlIGRlc2NyaXB0aW9uLiBOb3RoaW5nIGluIHRoaXMgY29kZSB0b3VjaGVzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB3aGljaCBpcyBhIHJlbGllZiDigJMgYWx3YXlzIGEgZ29vZCB0aGluZyB0byB2ZXJpZnkuIEdpdmVuIHRoYXQsIEkmIzM5O20gY29uZmlkZW50IHRoZXJlJiMzOTtzIG5vIG5lZWQgdG8gZW5hYmxlIGFueSBleHRyYSBkZWJ1Z2dpbmcgb3IgaGFyZGVuaW5nLCBzbyBJJiMzOTttIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgLiBUaGlzIGxvb2tzIGNsZWFuLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGNoYW5naW5nIFZJRiBsaW5rcyBpbiB0aGUgbXQ3OTI1IGRyaXZlciBieSBhZGRpbmcgYSBjb25kaXRpb24gdG8gcmVtb3ZlIGFuZCByZS1hZGQgYSBCU1MgbGluayB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBoYXZpbmcgdmFsaWQgbGlua3MgdG8gbm8gdmFsaWQgbGlua3MuIFRoaXMgaXMgYSBzdGF0ZSBtYWNoaW5lIGFuZCBmaXJtd2FyZSBzeW5jaHJvbml6YXRpb24gZml4LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGludm9sdmUgdXNlLWFmdGVyLWZyZWUsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIG9yIGxvZ2ljIGVycm9ycywgd2hpY2ggYXJlIHdlbGwtY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGNoYW5naW5nIFZJRiBsaW5rcyBpbiB0aGUgbXQ3OTI1IGRyaXZlciBieSBhZGRpbmcgYSBjb25kaXRpb24gdG8gcmVtb3ZlIGFuZCByZS1hZGQgYSBCU1MgbGluayB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBoYXZpbmcgdmFsaWQgbGlua3MgdG8gbm8gdmFsaWQgbGlua3MuIFRoaXMgaXMgYSBzdGF0ZSBtYWNoaW5lIGFuZCBmaXJtd2FyZSBzeW5jaHJvbml6YXRpb24gZml4LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGludm9sdmUgdXNlLWFmdGVyLWZyZWUsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIG9yIGxvZ2ljIGVycm9ycywgd2hpY2ggYXJlIHdlbGwtY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ4OjE5LjU5NTk1OTA0N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNjA2OTc5MDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBjaGFuZ2luZyBWSUYgbGlua3MgaW4gdGhlIG10NzkyNSBkcml2ZXIgYnkgYWRkaW5nIGEgY29uZGl0aW9uIHRvIHJlbW92ZSBhbmQgcmUtYWRkIGEgQlNTIGxpbmsgd2hlbiB0cmFuc2l0aW9uaW5nIGZyb20gaGF2aW5nIHZhbGlkIGxpbmtzIHRvIG5vIHZhbGlkIGxpbmtzLiBUaGlzIGlzIGEgc3RhdGUgbWFjaGluZSBhbmQgZmlybXdhcmUgc3luY2hyb25pemF0aW9uIGZpeC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSByZWFkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBpbnZvbHZlIHVzZS1hZnRlci1mcmVlLCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCBvciBsb2dpYyBlcnJvcnMsIHdoaWNoIGFyZSB3ZWxsLWNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIG5lY2Vzc2l0YXRlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgaW4gdGhlIE1lZGlhVGVrIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIgdG8gcmVzdG9yZSB0aGUgbGVnYWN5IEJTUyB3aGVuIGxpbmtzIGFyZSByZW1vdmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1hYzgwMjExIGRyaXZlciBvcGVyYXRpb25zLiBUaGUgZHJpdmVyIGhhcyBhIFVTQiB2YXJpYW50IChNVDc5MjVVKSB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uIChkdW1teV9oY2QpIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDQ6NDg6MTkuNTk1OTYzMDE3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg1NjcwNTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOTA4ZWRmOWIxZWVmMzQwYTljNTUwOGIyODA0OTI5NDk1OTQyMDlkZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAyNiAwNDo0ODoxOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcXG5pbmRleCA4NGI1NWYwMDhiM2QzLi5jN2NlZDJlZmQ0ZDdjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1xcbkBAIC0yMjk0LDYgKzIyOTQsMjEgQEAgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuIFxcbiBcXHRtdmlmLVxcdTAwM2V2YWxpZF9saW5rcyA9IG5ld19saW5rcztcXG4gXFxuK1xcdC8qIFRoZSBmaXJtd2FyZSB3b3VsZCBrZWVwIHRoZSBNTEQgQlNTIGFuZCBERVYgZW50cnk6IHRoZSByZW1vdmFsXFxuK1xcdCAqIGxvb3Agc2tpcHMgdGhlIGRlZmxpbmsgYW5kIHRoZSBod2VpZ2h0MTYoKSBmYWxsYmFjayBhYm92ZSByZWFkc1xcbitcXHQgKiB0aGUgc3RhbGUgcHJlLXVwZGF0ZSB2YWxpZF9saW5rcy4gUmVzdG9yZSB0aGUgbGVnYWN5IEJTUy5cXG4rXFx0ICovXFxuK1xcdGlmIChvbGRfbGlua3MgXFx1MDAyNlxcdTAwMjYgIW5ld19saW5rcykge1xcbitcXHRcXHRtdDc5MnhfbWFjX2xpbmtfYnNzX3JlbW92ZShkZXYsIFxcdTAwMjZtdmlmLVxcdTAwM2Vic3NfY29uZixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNm12aWYtXFx1MDAzZXN0YS5kZWZsaW5rKTtcXG4rXFx0XFx0ZXJyID0gbXQ3OTI1X21hY19saW5rX2Jzc19hZGQoZGV2LCBcXHUwMDI2dmlmLVxcdTAwM2Vic3NfY29uZixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNm12aWYtXFx1MDAzZXN0YS5kZWZsaW5rKTtcXG4rXFx0XFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4rXFx0XFx0XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4rXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbiBcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ4OjIwLjc4MjIwNzA4N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ4NzEzODAzMjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgaW4gdGhlIE1lZGlhVGVrIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIgdG8gcmVzdG9yZSB0aGUgbGVnYWN5IEJTUyB3aGVuIGxpbmtzIGFyZSByZW1vdmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1hYzgwMjExIGRyaXZlciBvcGVyYXRpb25zLiBUaGUgZHJpdmVyIGhhcyBhIFVTQiB2YXJpYW50IChNVDc5MjVVKSB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uIChkdW1teV9oY2QpIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTA4ZWRmOWIxZWVmMzQwYTljNTUwOGIyODA0OTI5NDk1OTQyMDlkZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDA0OjQ4OjE4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXG5pbmRleCA4NGI1NWYwMDhiM2QzLi5jN2NlZDJlZmQ0ZDdjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcbkBAIC0yMjk0LDYgKzIyOTQsMjEgQEAgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXG4gXHRtdmlmLVx1MDAzZXZhbGlkX2xpbmtzID0gbmV3X2xpbmtzO1xuIFxuK1x0LyogVGhlIGZpcm13YXJlIHdvdWxkIGtlZXAgdGhlIE1MRCBCU1MgYW5kIERFViBlbnRyeTogdGhlIHJlbW92YWxcbitcdCAqIGxvb3Agc2tpcHMgdGhlIGRlZmxpbmsgYW5kIHRoZSBod2VpZ2h0MTYoKSBmYWxsYmFjayBhYm92ZSByZWFkc1xuK1x0ICogdGhlIHN0YWxlIHByZS11cGRhdGUgdmFsaWRfbGlua3MuIFJlc3RvcmUgdGhlIGxlZ2FjeSBCU1MuXG4rXHQgKi9cbitcdGlmIChvbGRfbGlua3MgXHUwMDI2XHUwMDI2ICFuZXdfbGlua3MpIHtcbitcdFx0bXQ3OTJ4X21hY19saW5rX2Jzc19yZW1vdmUoZGV2LCBcdTAwMjZtdmlmLVx1MDAzZWJzc19jb25mLFxuK1x0XHRcdFx0XHQgICBcdTAwMjZtdmlmLVx1MDAzZXN0YS5kZWZsaW5rKTtcbitcdFx0ZXJyID0gbXQ3OTI1X21hY19saW5rX2Jzc19hZGQoZGV2LCBcdTAwMjZ2aWYtXHUwMDNlYnNzX2NvbmYsXG4rXHRcdFx0XHRcdCAgICAgIFx1MDAyNm12aWYtXHUwMDNlc3RhLmRlZmxpbmspO1xuK1x0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4rXHRcdFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbitcdFx0XHRyZXR1cm4gZXJyO1xuK1x0XHR9XG4rXHR9XG4rXG4gXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuIFxuIFx0cmV0dXJuIDA7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNDo0ODoyMC43ODIyMDgyNjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjI3MzU1NDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIHRoZSBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgIGZ1bmN0aW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jYC4gVGhpcyBwbGFjZXMgaXQgZmlybWx5IHdpdGhpbiB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciwgd2hpY2ggSSdtIGZhbWlsaWFyIHdpdGguIEJ1dCBhIHRob3VnaHQgaW1tZWRpYXRlbHkgcG9wcyB1cDogY2FuIEkgKnRlc3QqIHRoaXMgaW4gUUVNVT8gVGhlc2UgTVQ3NiBkcml2ZXJzIGFyZSAqdHlwaWNhbGx5KiB0YXJnZXRlZCBhdCBwaHlzaWNhbCBoYXJkd2FyZSDigJMgUENJZSBvciBVU0IgZGV2aWNlcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBldmVuIGEgVVNCIHZhcmlhbnQgb2YgdGhlIE1UNzkyNS4gVGltZSB0byBmaXJlIHVwIGBncmVwYCBhbmQgc2VhcmNoIHdpdGhpbiBLY29uZmlnLCBvciBhdCBsZWFzdCBhIHF1aWNrIHNjYW4gdGhyb3VnaCB0aGUgZHJpdmVyIGZpbGVzLCB0byBzZWUgaWYgdGhlcmUncyBhbnkgaW5kaWNhdGlvbiBvZiBhIFVTQiBzdXBwb3J0IHBhdGguIFdpdGhvdXQgdGhhdCwgdGhpcyBwYXRjaCBpcyBnb2luZyB0byBiZSBzaWduaWZpY2FudGx5IG1vcmUgY3VtYmVyc29tZSB0byBldmFsdWF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIxOSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ4OjI1LjAwOTU2NzQyNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDMzODUyMDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDA5NyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTUwPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NTE6c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT01MT1vYmotJChDT05GSUdfTVQ3OTk2RSkgKz0gbXQ3OTk2L1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NTI6b2JqLSQoQ09ORklHX01UNzkyNV9DT01NT04pICs9IG10NzkyNS9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0xODA9c3RhdGljIGlubGluZSBib29sIGlzX2Nvbm5hYzMoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMTg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoxODU6c3RhdGljIGlubGluZSBib29sIGlzX210NzkyNShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMTg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM9NTQ9aW50IG10NzZfY29ubmFjX21jdV9pbml0X2Rvd25sb2FkKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYWRkciwgdTMyIGxlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtNjktXFx0ICAgIChpc19jb25uYWMyKGRldikgXFx1MDAyNlxcdTAwMjYgYWRkciA9PSAweDkwMDAwMCkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jOjcwOlxcdCAgICAoKGlzX210NzkyNShkZXYpIHx8IGlzX210NzkyNyhkZXYpKSBcXHUwMDI2XFx1MDAyNiAoYWRkciA9PSAweDkwMDAwMCB8fCBhZGRyID09IDB4ZTAwMDI4MDApKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtNzEtXFx0ICAgIChpc19tdDc5MjgoZGV2KSBcXHUwMDI2XFx1MDAyNiAoYWRkciA9PSAweDkwMDAwMCB8fCBhZGRyID09IDB4ZTAwMDIwMDApKSB8fFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGUtMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19NVDc5MjVfQ09NTU9OKSArPSBtdDc5MjUtY29tbW9uLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19NVDc5MjVFKSArPSBtdDc5MjVlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19NVDc5MjVVKSArPSBtdDc5MjV1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZS02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjc6bXQ3OTI1LWNvbW1vbi15IDo9IG1hYy5vIG1jdS5vIHJlZ2QubyBtYWluLm8gaW5pdC5vIGRlYnVnZnMubyBuYW4ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjg6bXQ3OTI1LWNvbW1vbi0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSArPSB0ZXN0bW9kZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6OTptdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjEwOm10NzkyNXUteSA6PSB1c2Iub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQ6I2luY2x1ZGUgXFxcIm10NzkyNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy01LSNpbmNsdWRlIFxcXCJtY3UuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz03PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6ODptdDc5MjVfcmVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy05LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMy1cXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDpcXHRtdDc5MjVfbWN1X3JlZ3ZhbChkZXYsIGRldi1cXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXFx1MDAyNnJlZ3ZhbCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1LVxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMTptdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3LVxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OlxcdHJldCA9IG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVxcdTAwM2VtdDc2LmRlYnVnZnNfcmVnLCBcXHUwMDI2cmVndmFsLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5LVxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjM2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3OTI1X3JlZ19nZXQsIG10NzkyNV9yZWdfc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNy1cXHRcXHRcXHQgXFxcIjB4JTA4bGx4XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Mzg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozOTptdDc5MjVfZndfZGVidWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00NS1cXHRkZXYtXFx1MDAzZWZ3X2RlYnVnID0gKHU4KXZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDY6XFx0bXQ3OTI1X21jdV9md19sb2dfMl9ob3N0KGRldiwgZGV2LVxcdTAwM2Vmd19kZWJ1Zyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTUzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NTQ6bXQ3OTI1X2Z3X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo2MzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1ZywgbXQ3OTI1X2Z3X2RlYnVnX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NjQ6XFx0XFx0XFx0IG10NzkyNV9md19kZWJ1Z19zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNjUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Njg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Njk6bXQ3OTI1X3NlcV9wdXRzX2FycmF5KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqc3RyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy03MC1cXHRcXHQgICAgICBzOCB2YWxbXVsyXSwgaW50IGxlbiwgdTggYmFuZF9pZHgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjgzOiNkZWZpbmUgbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KHByZWZpeCwgcmF0ZSwgaWR4KVxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtODQtKHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjg1OlxcdG10NzkyNV9zZXFfcHV0c19hcnJheShzLCAjcHJlZml4IFxcXCIgKHRtYWMpXFxcIixcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTg2LVxcdFxcdFxcdCAgICAgIHR4cHdyLVxcdTAwM2VyYXRlLFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz05MT1zdGF0aWMgaW5saW5lIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6OTI6bXQ3OTI1X2VodF90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyLCB1OCBiYW5kX2lkeClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTk3LVxcdFxcdCAgIFxcXCJtY3MxMlxcXCIsIFxcXCJtY3MxM1xcXCIsIFxcXCJtY3MxNFxcXCIsIFxcXCJtY3MxNVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo5ODpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjYsIGVodDI2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjk5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ1MiwgZWh0NTIsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTAwOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQxMDYsIGVodDEwNiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDE6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI0MiwgZWh0MjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwMjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNDg0LCBlaHQ0ODQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDQ6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NiwgZWh0OTk2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDIsIGVodDk5NngyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDQsIGVodDk5Nng0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfNTIsIGVodDI2XzUyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwODpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfMTA2LCBlaHQyNl8xMDYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTA5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODRfMjQyLCBlaHQ0ODRfMjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2XzQ4NCwgZWh0OTk2XzQ4NCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTE6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODRfMjQyLCBlaHQ5OTZfNDg0XzI0MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTI6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyXzQ4NCwgZWh0OTk2eDJfNDg0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDMsIGVodDk5NngzLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExNDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDNfNDg0LCBlaHQ5OTZ4M180ODQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTE1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0xMTc9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTg6bXQ3OTI1X3R4cHdyKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTE5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTIwLVxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cXHUwMDNlcHJpdmF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEyMTpcXHRzdHJ1Y3QgbXQ3OTI1X3R4cHdyICp0eHB3ciA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEyMi1cXHR1OCBiYW5kX2lkeCA9IGRldi1cXHUwMDNlbXBoeS5iYW5kX2lkeDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzAtXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTMxOlxcdHJldCA9IG10NzkyNV9nZXRfdHhwd3JfaW5mbyhkZXYsIGJhbmRfaWR4LCB0eHB3cik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzMi1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzOC1cXHRcXHQgICBcXFwiIFxcXCIsIFxcXCIxbVxcXCIsIFxcXCIybVxcXCIsIFxcXCI1bVxcXCIsIFxcXCIxMW1cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTM5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShDQ0ssIGNjaywgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQzLVxcdFxcdCAgIFxcXCI0OG1cXFwiLCBcXFwiNTRtXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE0NDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoT0ZETSwgb2ZkbSwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQ4LVxcdFxcdCAgIFxcXCJtY3M2XFxcIiwgXFxcIm1jczdcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIVDIwLCBodDIwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTMtXFx0XFx0ICAgXFxcIm1jczZcXFwiLCBcXFwibWNzN1xcXCIsIFxcXCJtY3MzMlxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNTQ6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUNDAsIGh0NDAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTU1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1OC1cXHRcXHQgICBcXFwibWNzNlxcXCIsIFxcXCJtY3M3XFxcIiwgXFxcIm1jczhcXFwiLCBcXFwibWNzOVxcXCIsIFxcXCJtY3MxMFxcXCIsIFxcXCJtY3MxMVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNTk6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDIwLCB2aHQyMCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjA6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDQwLCB2aHQ0MCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2MjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUODAsIHZodDgwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2MzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUMTYwLCB2aHQxNjAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjU6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMjYsIGhlMjYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTY2OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTUyLCBoZTUyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2NzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUxMDYsIGhlMTA2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2ODpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUyNDIsIGhlMjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2OTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU0ODQsIGhlNDg0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTcxOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NiwgaGU5OTYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTcyOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NngyLCBoZTk5NngyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTc0OlxcdG10NzkyNV9laHRfdHhwd3IocywgdHhwd3IsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTc1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTE4MT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE4MjptdDc5MjVfcG1fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE4My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjA1LVxcdHBtLVxcdTAwM2VlbmFibGVfdXNlciA9IHZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjA2OlxcdG10NzkyNV9zZXRfcnVudGltZV9wbShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMDctXFx0bXQ3Nl9jb25uYWNfcG93ZXJfc2F2ZV9zY2hlZChcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LCBwbSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjE0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjE1Om10NzkyNV9wbV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIxNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMjQ6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG0sIG10NzkyNV9wbV9nZXQsIG10NzkyNV9wbV9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMjY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMjc6bXQ3OTI1X2RlZXBfc2xlZXBfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjQyLVxcdHBtLVxcdTAwM2Vkc19lbmFibGUgPSBlbmFibGUgXFx1MDAyNlxcdTAwMjYgIW1vbml0b3I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI0MzpcXHRtdDc5MjVfbWN1X3NldF9kZWVwX3NsZWVwKGRldiwgcG0tXFx1MDAzZWRzX2VuYWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI0NC1vdXQ6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjUwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjUxOm10NzkyNV9kZWVwX3NsZWVwX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2MDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19kcywgbXQ3OTI1X2RlZXBfc2xlZXBfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNjE6XFx0XFx0XFx0IG10NzkyNV9kZWVwX3NsZWVwX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI2Mz1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbV9pZGxlX3RpbWVvdXQsIG10NzkyeF9wbV9pZGxlX3RpbWVvdXRfZ2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjY2OnN0YXRpYyBpbnQgbXQ3OTI1X2NoaXBfcmVzZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNzgtXFx0XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjc5OlxcdFxcdHJldCA9IG10NzkyNV9tY3VfY2hpcF9jb25maWcoZGV2LCBcXFwiYXNzZXJ0XFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI4MC1cXHRcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjg3OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3Jlc2V0LCBOVUxMLCBtdDc5MjVfY2hpcF9yZXNldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OTppbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMwNC1cXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcInR4cG93ZXJfc2t1XFxcIiwgZGlyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozMDU6XFx0XFx0XFx0XFx0ICAgIG10NzkyNV90eHB3cik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMwNi1cXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJ0eF9zdGF0c1xcXCIsIDA0MDAsIGRpciwgZGV2LCBcXHUwMDI2bXQ3OTJ4X3R4X3N0YXRzX2ZvcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Zpcm13YXJlLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjk6I2luY2x1ZGUgXFxcIm10NzkyNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMC0jaW5jbHVkZSBcXFwicmVnZC5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxNDpzdGF0aWMgc3NpemVfdCBtdDc5MjVfdGhlcm1hbF90ZW1wX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNS1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNC1cXHRcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShtZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjU6XFx0XFx0dGVtcGVyYXR1cmUgPSBtdDc5MjVfbWN1X2dldF90ZW1wZXJhdHVyZShwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNi1cXHRcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShtZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zNi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjM3OnN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFJfUk8odGVtcDFfaW5wdXQsIG10NzkyNV90aGVybWFsX3RlbXAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Mzk6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKm10NzkyNV9od21vbl9hdHRyc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy00MC1cXHRcXHUwMDI2c2Vuc29yX2Rldl9hdHRyX3RlbXAxX2lucHV0LmRldl9hdHRyLmF0dHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDItfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NDM6QVRUUklCVVRFX0dST1VQUyhtdDc5MjVfaHdtb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy00NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NDU6c3RhdGljIGludCBtdDc5MjVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NTQ6XFx0bmFtZSA9IGRldm1fa2FzcHJpbnRmKFxcdTAwMjZ3aXBoeS1cXHUwMDNlZGV2LCBHRlBfS0VSTkVMLCBcXFwibXQ3OTI1XyVzXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNTUtXFx0XFx0XFx0ICAgICAgd2lwaHlfbmFtZSh3aXBoeSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTU5LVxcdGh3bW9uID0gZGV2bV9od21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9ncm91cHMoXFx1MDAyNndpcGh5LVxcdTAwM2VkZXYsIG5hbWUsIHBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NjA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIG10NzkyNV9od21vbl9ncm91cHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy02MS1cXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGh3bW9uKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy02My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NjQ6c3RhdGljIHZvaWQgbXQ3OTI1X21hY19pbml0X2Jhc2ljX3JhdGVzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03My1cXHRcXHQgICAgICAgRklFTERfUFJFUChNVF9UWF9SQVRFX0lEWCwgcmF0ZSBcXHUwMDI2IEdFTk1BU0soNywgMCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo3NDpcXHRcXHRtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKGRldiwgaWR4LCByYXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNzUtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo3ODppbnQgbXQ3OTI1X21hY19pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTc5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy04Ni1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTVQ3OTJ4X1dUQkxfU0laRTsgaSsrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo4NzpcXHRcXHRtdDc5MjVfbWFjX3d0YmxfdXBkYXRlKGRldiwgaSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtODgtXFx0XFx0XFx0XFx0ICAgICAgIE1UX1dUQkxfVVBEQVRFX0FETV9DT1VOVF9DTEVBUik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjkyOlxcdG10NzkyNV9tYWNfaW5pdF9iYXNpY19yYXRlcyhkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy05My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy05Ny19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjk4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tYWNfaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMDA6c3RhdGljIGludCBfX210NzkyNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEwMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMTI6XFx0cmV0ID0gbXQ3OTI1X21jdV9zZXRfZWVwcm9tKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTExMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTExNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTE2OlxcdHJldCA9IG10NzkyNV9tYWNfaW5pdChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMjAtXFx0aWYgKGlzX210NzkyNyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMjE6XFx0XFx0cmV0ID0gbXQ3OTI1X21jdV9zZXRfZGJkYyhcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LCB0cnVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTIyLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjEzMzpzdGF0aWMgaW50IG10NzkyNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEzNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxNDU6XFx0XFx0cmV0ID0gX19tdDc5MjVfaW5pdF9oYXJkd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNDYtXFx0XFx0aWYgKCFyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxNjM6c3RhdGljIGludCBtdDc5MjVfaW5pdF9uYW5fY2FwKHN0cnVjdCBtdDc2X2RldiAqbWRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE5MDpzdGF0aWMgdm9pZCBtdDc5MjVfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTkxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xOTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE5NjpcXHRyZXQgPSBtdDc5MjVfaW5pdF9oYXJkd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xOTctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDAtXFx0bXQ3Nl9zZXRfc3RyZWFtX2NhcHMoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIwMTpcXHRtdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDItXFx0bXQ3OTJ4X2NvbmZpZ19tYWNfYWRkcl9saXN0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjA0OlxcdHJldCA9IG10NzkyNV9pbml0X21sb19jYXBzKFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwNS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMTA6XFx0ZGV2LVxcdTAwM2VtdDc2LmluaXRfd2lwaHkgPSBtdDc5MjVfaW5pdF9uYW5fY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMTk6XFx0cmV0ID0gbXQ3OTI1X2luaXRfZGVidWdmcyhkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjAtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjI1OlxcdHJldCA9IG10NzkyNV90aGVybWFsX2luaXQoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjI2LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIzMTpcXHRyZXQgPSBtdDc5MjVfbWN1X3NldF90aGVybWFsX3Byb3RlY3QoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjMyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI0MDpcXHRtdDc5MjVfbWN1X3NldF9kZWVwX3NsZWVwKGRldiwgZGV2LVxcdTAwM2VwbS5kc19lbmFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNDEtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI0MzppbnQgbXQ3OTI1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNDQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI1My1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VwbS5wc193b3JrLCBtdDc5MnhfcG1fcG93ZXJfc2F2ZV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjU0OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrLCBtdDc5MjVfbWxvX3BtX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNTUtXFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBtLndha2Vfd29yaywgbXQ3OTJ4X3BtX3dha2Vfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjYxLVxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZW1waHkubWFjX3dvcmssIG10NzkyeF9tYWNfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI2MjpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHkuc2Nhbl93b3JrLCBtdDc5MjVfc2Nhbl93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjYzOlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZWNvcmVkdW1wLndvcmssIG10NzkyNV9jb3JlZHVtcF93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjY0LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNjU6XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZWlwdjZfbnNfd29yaywgbXQ3OTI1X3NldF9pcHY2X25zX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNjYtXFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VpcHY2X25zX2xpc3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjcxOlxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VyZXNldF93b3JrLCBtdDc5MjVfbWFjX3Jlc2V0X3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNzI6XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZWluaXRfd29yaywgbXQ3OTI1X2luaXRfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Mjc0OlxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHkucm9jX3dvcmssIG10NzkyNV9yb2Nfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI3NS1cXHR0aW1lcl9zZXR1cChcXHUwMDI2ZGV2LVxcdTAwM2VwaHkucm9jX3RpbWVyLCBtdDc5Mnhfcm9jX3RpbWVyLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjMwMjpcXHRody1cXHUwMDNld2lwaHktXFx1MDAzZXJlZ19ub3RpZmllciA9IG10NzkyNV9yZWdkX25vdGlmaWVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zMDMtXFx0ZGV2LVxcdTAwM2VtcGh5LnNiYW5kXzJnLnNiYW5kLmh0X2NhcC5jYXAgfD1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zMjktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozMzA6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3JlZ2lzdGVyX2RldmljZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02LSNpbmNsdWRlIFxcdTAwM2NsaW51eC90aW1la2VlcGluZy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjc6I2luY2x1ZGUgXFxcIm10NzkyNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTgtI2luY2x1ZGUgXFxcIi4uL2RtYS5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTM6Ym9vbCBtdDc5MjVfbWFjX3d0YmxfdXBkYXRlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGludCBpZHgsIHUzMiBtYXNrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjI5OnN0YXRpYyB2b2lkIG10NzkyNV9tYWNfc3RhX3BvbGwoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0zMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02NS1cXHRcXHRpZHggPSBtbGluay1cXHUwMDNld2NpZC5pZHg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NjY6XFx0XFx0YWRkciA9IG10NzkyNV9tYWNfd3RibF9sbWFjX2FkZHIoZGV2LCBpZHgsIE1UX1dUQkxfQUMwX0NUVF9PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTY3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQtXFx0XFx0aWYgKGNsZWFyKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODU6XFx0XFx0XFx0bXQ3OTI1X21hY193dGJsX3VwZGF0ZShkZXYsIGlkeCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04Ni1cXHRcXHRcXHRcXHRcXHQgICAgICAgTVRfV1RCTF9VUERBVEVfQURNX0NPVU5UX0NMRUFSKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzA6XFx0XFx0YWRkciA9IG10NzkyNV9tYWNfd3RibF9sbWFjX2FkZHIoZGV2LCBpZHgsIDYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzMS1cXHRcXHR2YWwgPSBtdDc2X3JyKGRldiwgYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTMyLVxcdFxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IFJBVEVfSU5GT19GTEFHU19FSFRfTUNTKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTMzOlxcdFxcdFxcdGFkZHIgPSBtdDc5MjVfbWFjX3d0YmxfbG1hY19hZGRyKGRldiwgaWR4LCA1KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzQtXFx0XFx0XFx0dmFsID0gbXQ3Nl9ycihkZXYsIGFkZHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ4LVxcdFxcdC8qIGdldCBzaWduYWwgc3RyZW5ndGggb2YgcmVzcCBmcmFtZXMgKENUUy9CQS9BQ0spICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ5OlxcdFxcdGFkZHIgPSBtdDc5MjVfbWFjX3d0YmxfbG1hY19hZGRyKGRldiwgaWR4LCAzNCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTUwLVxcdFxcdHZhbCA9IG10NzZfcnIoZGV2LCBhZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjQ6dm9pZCBtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY1LVxcdFxcdFxcdFxcdCAgICAgdTggdGJsX2lkeCwgdTE2IHJhdGVfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTgyLS8qIFRoZSBIVyBkb2VzIG5vdCB0cmFuc2xhdGUgdGhlIG1hYyBoZWFkZXIgdG8gODAyLjMgZm9yIG1lc2ggcG9pbnQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxODM6c3RhdGljIGludCBtdDc5MjVfcmV2ZXJzZV9mcmFnMF9oZHJfdHJhbnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IGhkcl9nYXApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTg0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTI2Mj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MjYzOm10NzkyNV9tYWNfZmlsbF9yeF9yYXRlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMjY0LVxcdFxcdFxcdHN0cnVjdCBtdDc2X3J4X3N0YXR1cyAqc3RhdHVzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MzcyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzozNzM6bXQ3OTI1X21hY19maWxsX3J4KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMzc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTU1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo1NTM6XFx0XFx0cmV0ID0gbXQ3OTI1X21hY19maWxsX3J4X3JhdGUoZGV2LCBzdGF0dXMsIHNiYW5kLCByeHYsIFxcdTAwMjZtb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy01NTQtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy01NjYtXFx0aWYgKGhkcl90cmFucyBcXHUwMDI2XFx1MDAyNiBpZWVlODAyMTFfaGFzX21vcmVmcmFncyhmYykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo1Njc6XFx0XFx0aWYgKG10NzkyNV9yZXZlcnNlX2ZyYWcwX2hkcl90cmFucyhza2IsIGhkcl9nYXApKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTU2OC1cXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTY0MD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjY0MTptdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMyhfX2xlMzIgKnR4d2ksIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjQyLVxcdFxcdFxcdCAgIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz02NzU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo2NzY6bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjc3LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NzQ2PXZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo3NDc6bXQ3OTI1X21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzQ4LVxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04MzktXFx0aWYgKGlzXzgwMjMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODQwOlxcdFxcdG10NzkyNV9tYWNfd3JpdGVfdHh3aV84MDIzKHR4d2ksIHNrYiwgd2NpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQxLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4NDI6XFx0XFx0bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKGRldiwgdHh3aSwgc2tiLCBrZXkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg0My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg2Ni19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODY3OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tYWNfd3JpdGVfdHh3aSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg2OTpzdGF0aWMgdm9pZCBtdDc5MjVfdHhfY2hlY2tfYWdncihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg3MC1cXHRcXHRcXHRcXHQgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTkyMz1zdGF0aWMgYm9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjkyNDptdDc5MjVfbWFjX2FkZF90eHNfc2tiKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtOTI1LVxcdFxcdCAgICAgICBpbnQgcGlkLCBfX2xlMzIgKnR4c19kYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MTE5Mj12b2lkIG10NzkyOF9tYWNfYWRkX3R4c19tc2coc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTIyOTp2b2lkIG10NzkyNV9tYWNfYWRkX3R4cyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyMzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTI2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMjYzOlxcdG10NzkyNV9tYWNfYWRkX3R4c19za2IoZGV2LCB3Y2lkLCBwaWQsIHR4c19kYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjY0LVxcdGlmICghd2NpZC1cXHUwMDNlc3RhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTI3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMjczOnZvaWQgbXQ3OTI1X3R4d2lfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl90eHdpX2NhY2hlICp0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyNzQtXFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyODctXFx0XFx0aWYgKGxpa2VseSh0LVxcdTAwM2Vza2ItXFx1MDAzZXByb3RvY29sICE9IGNwdV90b19iZTE2KEVUSF9QX1BBRSkpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEyODg6XFx0XFx0XFx0bXQ3OTI1X3R4X2NoZWNrX2FnZ3Ioc3RhLCB0LVxcdTAwM2Vza2IsIHdjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyODktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjk5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzAwOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV90eHdpX2ZyZWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MTMwMj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEzMDM6bXQ3OTI1X21hY190eF9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTMwNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEzNzA6XFx0XFx0XFx0bXQ3OTI1X3R4d2lfZnJlZShkZXYsIHR4d2ksIHN0YSwgd2NpZCwgXFx1MDAyNmZyZWVfbGlzdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTM3MS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEzNzQ6XFx0bXQ3OTI1X21hY19zdGFfcG9sbChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzNzUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEzODc6Ym9vbCBtdDc5MjVfcnhfY2hlY2soc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICpkYXRhLCBpbnQgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzODgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQwNi1cXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQwNzpcXHRcXHRtdDc5MjVfbWFjX3R4X2ZyZWUoZGV2LCBkYXRhLCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MDgtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQxMC1cXHRcXHRmb3IgKHJ4ZCArPSA0OyByeGQgKyAxMiBcXHUwMDNjPSBlbmQ7IHJ4ZCArPSAxMilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDExOlxcdFxcdFxcdG10NzkyNV9tYWNfYWRkX3R4cyhkZXYsIHJ4ZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQxMi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDE2LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDE3OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9yeF9jaGVjayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDE5OnZvaWQgbXQ3OTI1X3F1ZXVlX3J4X3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDIwLVxcdFxcdFxcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDQ2LVxcdFxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDQ3OlxcdFxcdG10NzkyNV9tYWNfdHhfZnJlZShkZXYsIHNrYi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NDgtXFx0XFx0bmFwaV9jb25zdW1lX3NrYihza2IsIDEpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1MC1cXHRjYXNlIFBLVF9UWVBFX1JYX0VWRU5UOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0NTE6XFx0XFx0bXQ3OTI1X21jdV9yeF9ldmVudChkZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1Mi1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NTQtXFx0XFx0Zm9yIChyeGQgKz0gMjsgcnhkICsgOCBcXHUwMDNjPSBlbmQ7IHJ4ZCArPSA4KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0NTU6XFx0XFx0XFx0bXQ3OTI1X21hY19hZGRfdHhzKGRldiwgcnhkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDU2LVxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NTktXFx0Y2FzZSBQS1RfVFlQRV9OT1JNQUw6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ2MDpcXHRcXHRpZiAoIW10NzkyNV9tYWNfZmlsbF9yeChkZXYsIHNrYikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDYxLVxcdFxcdFxcdG10NzZfcngoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgcSwgc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NjktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0NzA6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3F1ZXVlX3J4X3NrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNDcyPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ3MzptdDc5MjVfdmlmX2Nvbm5lY3RfaXRlcih2b2lkICpwcml2LCB1OCAqbWFjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NzQtXFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDQ6NDg6MjUuNDEyOTU2NjkxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkxNjM0MDk2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNVDc5MjUgRHJpdmVyIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgbXQ3OTI1YCBkcml2ZXIuIFJpZ2h0LCBpdCdzIGdvdCBib3RoIGBtdDc5MjVlLm9gLCB0aGUgUENJZSB2ZXJzaW9uLCBhbmQgYG10NzkyNXUub2AsIHdoaWNoIGlzIFVTQi4gV2FpdCBhIG1pbnV0ZS4uLiAqeWVzKiwgYG10NzkyNXUteSA6PSB1c2Iub2AgY29uZmlybXMgdGhlcmUncyBhIFVTQiBkcml2ZXIgZm9yIHRoaXMgTVQ3OTI1IGNoaXBzZXQuIEV4Y2VsbGVudCEgVGhpcyBvcGVucyB1cCBzb21lIGludGVyZXN0aW5nIGZ1enppbmcgcG9zc2liaWxpdGllcy4gU2luY2UgaXQncyBVU0IsIEkgY2FuIGxldmVyYWdlIGR1bW15X2hjZCBhbmQgc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIOKAkyB0aGF0J3MgYSBrZXkgYWR2YW50YWdlLlxuXG5Ob3csIGxldCdzIHNlZS4uLiB3aGF0J3MgYSBnb29kIHRhcmdldCBmdW5jdGlvbiB0byBleGFtaW5lIGZvciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzPyBJJ20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgYnkgY2hlY2tpbmcgaWYgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBpcyByZWFjaGFibGUuIExldCBtZSBxdWlja2x5IGNvbmZpcm0gd2hlcmUgdGhhdCdzIGRlZmluZWQ7IHllcCwgaXQncyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jYC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gdHJhY2UgdGhlIGZ1bmN0aW9uJ3MgdXNhZ2UsIHVuZGVyc3RhbmQgaG93IGl0IGdldHMgY2FsbGVkIGFuZCB1bmRlciB3aGF0IGNpcmN1bXN0YW5jZXMuIFRoYXQncyB3aGVyZSB0aGUgaW50ZXJlc3Rpbmcgc3R1ZmYgdXN1YWxseSBsaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTUxNywiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNDo0ODozMC4zMjkyOTk0OThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2NjExNjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X2NoYW5nZV92aWZfbGlua3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yMjA4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjIwOTptdDc5MjVfY2hhbmdlX3ZpZl9saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjIxMC1cXHRcXHRcXHR1MTYgb2xkX2xpbmtzLCB1MTYgbmV3X2xpbmtzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTI3MzE9Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3OTI1X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNzkwLVxcdC5saW5rX2luZm9fY2hhbmdlZCA9IG10NzkyNV9saW5rX2luZm9fY2hhbmdlZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6Mjc5MTpcXHQuY2hhbmdlX3ZpZl9saW5rcyA9IG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNzkyLVxcdC5jaGFuZ2Vfc3RhX2xpbmtzID0gbXQ3OTI1X2NoYW5nZV9zdGFfbGlua3MsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ4OjMwLjM3Mjk2ODEyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQzOTg0NDE4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1UNzkyNSBEcml2ZXIncyBMaW5rIENoYW5nZSBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGBtdDc5MjVfb3BzYCBzdHJ1Y3R1cmUgYW5kIEkgc2VlIHRoZSBgLmNoYW5nZV92aWZfbGlua3NgIGZ1bmN0aW9uIGFzc2lnbmVkLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgb3BlcmF0aW5nIHdpdGhpbiB0aGUgbWFjODAyMTEgZnJhbWV3b3JrLCB3aGljaCBpcyBzdGFuZGFyZCBwcm9jZWR1cmUuIFNpbmNlIHdlIGFyZSB0YWxraW5nIGFib3V0IGEgVVNCIGRyaXZlciwgaXQgKnNob3VsZCogYmUgYXR0YWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbiwgYSBjb21tb24gYXBwcm9hY2ggZm9yIHRlc3RpbmcgdGhlc2Uga2luZHMgb2YgdGhpbmdzLlxuXG5CdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBpcyB0aGUgTVQ3OTI1IFVTQiBkcml2ZXIgYWN0dWFsbHkgZW5hYmxlZCBpbiBzeXprYWxsZXIncyBjb25maWd1cmF0aW9uPyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIgZG93biB0aGlzIHJhYmJpdCBob2xlLiBMZXQgbWUgZ28gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgYE1UNzkyNVVgLiBUaGF0J3Mgd2hlcmUgdGhlIGFuc3dlciB3aWxsIGJlLiBHb3R0YSBtYWtlIHN1cmUgd2UncmUgZXZlbiB0ZXN0aW5nIHRoZSByaWdodCBwYXRoIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzc1LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ4OjM0LjgxMjgxNDk0N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzQ2MjQzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3OTI1VVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZz03PWNvbmZpZyBNVDc5MjVFXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ4OjM0Ljg1NjI3OTE1OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMTkzMTQ0NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKldvcmtpbmcgd2l0aCBNVDc5MjVVIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgKk1UNzkyNVUqIGlzIHRoZSBjb25maWd1cmF0aW9uIHdlJ3JlIGdvaW5nIHdpdGgsIHllcC4gQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gYmVmb3JlIHdlIGdvIGFueSBmdXJ0aGVyLCBsZXQncyBqdXN0IGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mICpNVDc5MjVVKi4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB3ZSBoYXZlbid0IG92ZXJsb29rZWQgYW55IGNyaXRpY2FsIHVwc3RyZWFtIG9yIGRvd25zdHJlYW0gY29tcG9uZW50cyB0aGF0IHJlbHkgb24gb3IgaW1wYWN0IHRoaXMgcGFydGljdWxhciBzZXR1cC4gSXQncyB0b28gZWFzeSB0byBnZXQgY2F1Z2h0IG91dCBieSB1bmV4cGVjdGVkIGludGVyYWN0aW9ucyBsYXRlciBvbi4gQSBxdWljayByZXZpZXcgb2YgdGhlIGRlcGVuZGVuY2llcyBub3cgaXMgYWx3YXlzIHRpbWUgd2VsbCBzcGVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4NTgsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNDo0ODozOC4wNzU1OTU4MzRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIE1UNzkyNV9DT01NT05cXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRzZWxlY3QgTVQ3OTJ4X0xJQlxcbiAgIDU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAgNjpcXHRcXG4gICA3OlxcdGNvbmZpZyBNVDc5MjVFXFxuICAgODpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFxcXCJcXG4gICA5OlxcdFxcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXFxuICAxMDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFBDSWUgZGV2aWNlcyxcXG4gIDE0OlxcdFxcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXFxuICAxNTpcXHRcXHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTVQ3OTI1VVxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFxcXCJcXG4gIDIxOlxcdFxcdHNlbGVjdCBNVDc5MnhfVVNCXFxuICAyMjpcXHRcXHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxcbiAgMjM6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMjQ6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDI1OlxcdFxcdGhlbHBcXG4gIDI2OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBVU0IgZGV2aWNlcyxcXG4gIDI3OlxcdFxcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXFxuICAyODpcXHRcXHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNDo0ODozOC4wNzU2NzYyMTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTExMDE5Njc1MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBkZXBlbmRlbmNpZXMganVtcCBvdXQ6IGBNQUM4MDIxMWAgYW5kIGBVU0JgLiAgVGhhdCBtZWFucyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBpcyBsaWtlbHkgYE1UNzkyNVVgLiBUaGUgY29yZSBmdW5jdGlvbiB0aGF0J3MgYmVlbiBtb2RpZmllZCBpcyBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgLiAgTGV0J3MgcmUtZXhhbWluZSB0aGF0IGNvZGUgYmxvY2ssIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGFkZGVkIGxvZ2ljIHRoYXQgaGFuZGxlcyB0aGUgbGVnYWN5IEJTUyByZXN0b3JlLlxuXG5gYGBjXG5AQCAtMjI5NCw2ICsyMjk0LDIxIEBAIG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuIFxuIFx0bXZpZi1cdTAwM2V2YWxpZF9saW5rcyA9IG5ld19saW5rcztcbiBcbitcdC8qIFRoZSBmaXJtd2FyZSB3b3VsZCBrZWVwIHRoZSBNTEQgQlNTIGFuZCBERVYgZW50cnk6IHRoZSByZW1vdmFsXG4rXHQgKiBsb29wIHNraXBzIHRoZSBkZWZsaW5rIGFuZCB0aGUgaHdlaWdodDE2KCkgZmFsbGJhY2sgYWJvdmUgcmVhZHNcbitcdCAqIHRoZSBzdGFsZSBwcmUtdXBkYXRlIHZhbGlkX2xpbmtzLiBSZXN0b3JlIHRoZSBsZWdhY3kgQlNTLlxuK1x0ICovXG4rXHRpZiAob2xkX2xpbmtzIFx1MDAyNlx1MDAyNiAhbmV3X2xpbmtzKSB7XG4rXHRcdG10NzkyeF9tYWNfbGlua19ic3NfcmVtb3ZlKGRldiwgXHUwMDI2bXZpZi1cdTAwM2Vic3NfY29uZixcbitcdFx0XHRcdFx0ICAgXHUwMDI2bXZpZi1cdTAwM2VzdGEuZGVmbGluayk7XG4rXHRcdGVyciA9IG10NzkyNV9tYWNfbGlua19ic3NfYWRkKGRldiwgXHUwMDI2dmlmLVx1MDAzZWJzc19jb25mLFxuK1x0XHRcdFx0XHQgICAgICBcdTAwMjZtdmlmLVx1MDAzZXN0YS5kZWZsaW5rKTtcbitcdFx0aWYgKGVyciBcdTAwM2MgMCkge1xuK1x0XHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4rXHRcdFx0cmV0dXJuIGVycjtcbitcdFx0fVxuK1x0fVxuK1xuIFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbiBcbiBcdHJldHVybiAwO1xuYGBgXG5cblRoaXMgaXMgY2xlYXJseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgLiBOb3csIGEgY3J1Y2lhbCBxdWVzdGlvbiBhcmlzZXM6IGlzIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgZXZlbiByZWFjaGFibGU/ICBJIGtub3cgdGhhdCBgbWFjODAyMTFgIGNhbGxzIHRoaXMgd2hlbiB2aXJ0dWFsIGludGVyZmFjZSAodmlmKSBsaW5rcyBjaGFuZ2UsIHdoaWNoIGlzIHR5cGljYWxseSB0cmlnZ2VyZWQgdmlhIG5ldGxpbmsuIEJ1dCBkb2VzIGZpcm13YXJlIG5lZWQgdG8gYmUgbG9hZGVkIGZvciB0aGlzIGNvZGUgcGF0aCB0byBiZSByZWFjaGVkPyBXaXRoIFVTQiBkcml2ZXJzIGluIGBtYWM4MDIxMWAsIGZpcm13YXJlIHVzdWFsbHkgKmlzKiByZXF1aXJlZCBmb3IgcHJvcGVyIGluaXRpYWxpemF0aW9uLiBJZiBmaXJtd2FyZSBpc24ndCBhdmFpbGFibGUsIHRoZSBkcml2ZXIgbWlnaHQgZmFpbCB0byBwcm9iZS5cblxuSGVyZSdzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcgaW4gdGhlIGNvbnRleHQgb2YgZnV6emluZyB3aXRoIHN5emthbGxlci4gIFN5emthbGxlciBjYW4gc29tZXRpbWVzIGJ5cGFzcyBmaXJtd2FyZSByZXF1aXJlbWVudHMuIEl0IGNvdWxkIG1vY2sgdGhlIGZpcm13YXJlLCBvciB0aGUgZHJpdmVyIG1pZ2h0IG5vdCAqc3RyaWN0bHkqIG5lZWQgaXQgdG8gcmVnaXN0ZXIgdGhlIGBtYWM4MDIxMWAgZGV2aWNlLiBXZSBuZWVkIHRvIGFzY2VydGFpbiBpZiBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgIGlzIHJlYWNoYWJsZSB3aXRob3V0IGZpcm13YXJlLCBvciB3aGV0aGVyIHN5emthbGxlcidzIHNldHVwIGFsbG93cyBpdC5cblxuU3l6a2FsbGVyIGdlbmVyYWxseSB1c2VzIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCBmb3IgVVNCIGRyaXZlcnMsIGl0IHVzZXMgYGR1bW15X2hjZGAgYW5kIGluamVjdHMgZGVzY3JpcHRvcnMuIElmIHRoZSBkcml2ZXIgKmRvZXMqIG5lZWQgZmlybXdhcmUsIHN5emthbGxlciBoYXMgYSBmYWxsYmFjayBtZWNoYW5pc20gdG8gc3VwcGx5IGR1bW15IGZpcm13YXJlIHZpYSB0aGUgZmlybXdhcmUgbG9hZGVyLlxuXG5MZXQncyBhbHNvIGV2YWx1YXRlIGBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZGAgYW5kIGBtdDc5MnhfbWFjX2xpbmtfYnNzX3JlbW92ZWAgYXMgcG90ZW50aWFsIGZvY3VzIHN5bWJvbHMuIFdoaWxlIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgaXMgdGhlIGNlbnRyYWwgbW9kaWZpZWQgZnVuY3Rpb24sIHRob3NlIHJlbGF0ZWQgZnVuY3Rpb25zIGluIHRoZSBwYXRjaCBtaWdodCBiZSBpbnRlcmVzdGluZyB0b28uIENoZWNraW5nIGJhY2ssIGl0IGxvb2tzIGxpa2UgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBpcyBkZWNsYXJlZCBzdGF0aWMuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoZSBjb2RlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTU1NCwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ4OjQ5LjE3NzY0NjY3MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwMjAwNzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X2NoYW5nZV92aWZfbGlua3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yMjA4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjIwOTptdDc5MjVfY2hhbmdlX3ZpZl9saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjIxMC1cXHRcXHRcXHR1MTYgb2xkX2xpbmtzLCB1MTYgbmV3X2xpbmtzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTI3MzE9Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3OTI1X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNzkwLVxcdC5saW5rX2luZm9fY2hhbmdlZCA9IG10NzkyNV9saW5rX2luZm9fY2hhbmdlZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6Mjc5MTpcXHQuY2hhbmdlX3ZpZl9saW5rcyA9IG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNzkyLVxcdC5jaGFuZ2Vfc3RhX2xpbmtzID0gbXQ3OTI1X2NoYW5nZV9zdGFfbGlua3MsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ4OjQ5LjIyMzY2ODc4M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTExNzI2NTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbnNpZGVyaW5nIHRoZSBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBmdW5jdGlvbi4gVGhlIGNvZGUgc2F5cyBpdCdzIHN0YXRpYywgd2hpY2ggdXN1YWxseSBtZWFucyB0aGUgY29tcGlsZXIgbWlnaHQgaW5saW5lIGl0LCBtYWtpbmcgaXRzIHN5bWJvbCBhZGRyZXNzIGFtYmlndW91cy4gSG93ZXZlciwgc2luY2UgaXQncyBiZWluZyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIGlubGluaW5nIGlzIHVubGlrZWx5LiBTbywgdGhlIHN0YXRpYyBkZWNsYXJhdGlvbiBpcyBhIGJpdCByZWR1bmRhbnQgYnV0IGxpa2VseSBoYXJtbGVzcywgYWx0aG91Z2ggaXQncyBiZXR0ZXIgdG8gZW5zdXJlIGl0J3MgcHJvdmlkZWQgaWYgaXQgaXMgKm5vdCogaW5saW5lZC5cblxuSGFuZyBvbiBhIHNlY29uZOKApiB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIGEgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5IHBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGlzIGlzIHdoZXJlIEkgaGF2ZSB0byBwYXVzZSBhbmQgY29uc2lkZXIgLSBpcyBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgIHRoZSAqZXhhY3QqIGZ1bmN0aW9uIHRoYXQgbmVlZHMgdG8gYmUgbW9kaWZpZWQ/IElmIHNvLCB3aGF0IGFyZSBteSBvcHRpb25zPyBJcyB0aGVyZSBhIG5vbi1zdGF0aWMgYWx0ZXJuYXRpdmUgSSBjYW4gdXNlIGhlcmU/IEkgbmVlZCB0byBleHBsb3JlIHdoYXQgdGhlIGFsdGVybmF0aXZlIG1ldGhvZHMgYXJlIGhlcmUuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgYG10NzkyNV9tYWNfbGlua19ic3NfYWRkYC4gTWF5YmUgdGhhdCBmdW5jdGlvbiBpcyB0aGUgcHJlZmVycmVkIG1ldGhvZCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzU1NiwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNDo0ODo1NC4xMzUzOTcyMTlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NDU2MTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyNV9tYWNfbGlua19ic3NfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MzY2PXN0YXRpYyBpbnQgbXQ3OTI1X3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTM3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6Mzc4OnN0YXRpYyBpbnQgbXQ3OTI1X21hY19saW5rX2Jzc19hZGQoc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzc5LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmxpbmtfY29uZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz00NTU9bXQ3OTI1X2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtNDY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzo0NzA6XFx0cmV0ID0gbXQ3OTI1X21hY19saW5rX2Jzc19hZGQoZGV2LCBcXHUwMDI2dmlmLVxcdTAwM2Vic3NfY29uZiwgXFx1MDAyNm12aWYtXFx1MDAzZXN0YS5kZWZsaW5rKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtNDcxLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTIyMDk9bXQ3OTI1X2NoYW5nZV92aWZfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjI4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjI4MzpcXHRcXHRlcnIgPSBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZChkZXYsIGxpbmtfY29uZiwgbWxpbmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yMjg0LVxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTIzMDMtXFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNm12aWYtXFx1MDAzZXN0YS5kZWZsaW5rKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjMwNDpcXHRcXHRlcnIgPSBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZChkZXYsIFxcdTAwMjZ2aWYtXFx1MDAzZWJzc19jb25mLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yMzA1LVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZtdmlmLVxcdTAwM2VzdGEuZGVmbGluayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ4OjU0LjE4Mzg1NzUxMVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjMzOTI4MDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGggZW1iZWRkZWQgc3lzdGVtcyBhbmQgZHJpdmVyIGRldmVsb3BtZW50OlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogU3RhdGljIENvbnRleHQgYW5kIEZ1bmN0aW9uIFVzYWdlKipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgb2JzZXJ2YXRpb24gcG9pbnRzIG91dCBhIGtleSBhc3BlY3Q6IHdlJ3JlIGRlYWxpbmcgd2l0aCBzdGF0aWMgZWxlbWVudHMgaW4gdGhpcyBwYXJ0aWN1bGFyIHNjZW5hcmlvLiBNeSBpbW1lZGlhdGUgZm9sbG93LXVwIHF1ZXN0aW9uIGlzLCBhcmUgd2UgKmV4Y2x1c2l2ZWx5KiBkZWFsaW5nIHdpdGggc3RhdGljIGZ1bmN0aW9ucywgb3IgYXJlIHRoZXJlIGFueSBub24tc3RhdGljIGFsdGVybmF0aXZlcyB0byBjb25zaWRlcj8gVGhpcyBpcyBjcml0aWNhbCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBzY29wZSBvZiB0aGUgcHJvYmxlbS5cblxuVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgYG10NzkyNV9vcHNgIHN0cnVjdHVyZS4gTXkgcHJpbWFyeSBmb2N1cyBpcyB0byBkZXRlcm1pbmUgaG93IGl0J3MgYmVpbmcgKnV0aWxpemVkKi4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8ga25vdyBpZiBpdCdzIGV4cG9ydGVkLCBhbmQgdGhlcmVmb3JlIHBvc3NpYmx5IGFjY2Vzc2libGUgb3V0c2lkZSBvZiBpdHMgaW50ZW5kZWQgc2NvcGUsIG9yIHVzZWQgaW4gYGluaXQuY2AuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gYW5kIGFjY2VzcyBtZXRob2RzIG9mIHRoZSBjb2RlLiBUaGlzIHdpbGwgaGVscCBtZSBuYXJyb3cgZG93biBwb3RlbnRpYWwgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDcyOCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ4OjU3LjgxNzc5NjEzNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2NzE0MjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTI3MjI9c3RhdGljIHZvaWQgbXQ3OTI1X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNzMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoyNzMxOmNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzkyNV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI3MzItXFx0LnR4ID0gbXQ3OTJ4X3R4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI4MDQtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjgwNTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfb3BzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjgwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTI2Mz1zdGF0aWMgaW5saW5lIHU4IG10NzkyN19iYW5kX2lkeChlbnVtIG5sODAyMTFfYmFuZCBiYW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMjc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjI3NTpleHRlcm4gY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3OTI1X29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0yNzYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYz01Mjg9c3RhdGljIGludCBtdDc5MjVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNjAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjYwMTpcXHRvcHMgPSBtdDc5MnhfZ2V0X21hYzgwMjExX29wcyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXHUwMDI2bXQ3OTI1X29wcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy02MDItXFx0XFx0XFx0XFx0ICAgICAgKHZvaWQgKilpZC1cXHUwMDNlZHJpdmVyX2RhdGEsIFxcdTAwMjZmZWF0dXJlcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxOTE6XFx0b3BzID0gbXQ3OTJ4X2dldF9tYWM4MDIxMV9vcHMoXFx1MDAyNnVzYl9pbnRmLVxcdTAwM2VkZXYsIFxcdTAwMjZtdDc5MjVfb3BzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE5Mi1cXHRcXHRcXHRcXHQgICAgICAodm9pZCAqKWlkLVxcdTAwM2Vkcml2ZXJfaW5mbywgXFx1MDAyNmZlYXR1cmVzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDQ6NDg6NTcuODYxNDcyMTE2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNTUxNDE5Nzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgIEZ1bmN0aW9uKipcblxuT2theSwgc28gYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBpcyB0aGUgZm9jdXMgaGVyZS4gSXQncyB1c2VkIGluIGJvdGggYHVzYi5jYCBhbmQgYHBjaS5jYCwgd2hpY2ggdGVsbHMgbWUgaXQncyBleHBvc2VkIHRocm91Z2ggYG10NzkyNV9vcHNgIGFzIGEgZnVuY3Rpb24gcG9pbnRlci4gU2luY2UgaXQncyBhIHBvaW50ZXIsIG5vIGlubGluaW5nLCB3aGljaCBpcyBnb29kIGZvciBmdXp6aW5nLiBXZSBjYW4gdGFyZ2V0IGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgZGlyZWN0bHkuXG5cblRoZSBuZXh0IHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBmdW5jdGlvbiBiZSByZWFjaGVkIHdpdGhvdXQgcmVhbCBoYXJkd2FyZT8gWWVzLCB0aHJvdWdoIHRoZSBgbWFjODAyMTFgIGRyaXZlciBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgd2hlbiB0aGUgZGV2aWNlIGlzIHByb2JlZC4gRm9yIHRoZSBVU0IgY2FzZSwgd2UgY2FuIHVzZSBgZHVtbXlfaGNkYCB0byBwcm9iZSBgbXQ3OTI1dWAuIE5vdywgbGV0J3Mgc2VlIGlmIGBNVDc5MjVVYCBpcyBlbmFibGVkIGluIHN5emthbGxlci4gVGhlIGFuc3dlciBpcyB5ZXMsIHNvIEkgbmVlZCB0byByZXR1cm4gYEVuYWJsZUNvbmZpZ3M6IFtcIk1UNzkyNVVcIl1gLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zLiBDaGVja2luZyBgTVQ3OTI1VWAgZGVwZW5kZW5jaWVzLCBpdCBsb29rcyBsaWtlIGl0IGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAuIERpZ2dpbmcgZnVydGhlciwgYE1UNzkyNV9DT01NT05gIGlzIHNlbGVjdGVkIGJ5IGBNVDc5MjVVYCwgYW5kIGBNVDc5MnhfVVNCYCBpcyBhbHNvIHNlbGVjdGVkIGJ5IGBNVDc5MjVVYCwgc28gYE1UNzkyNVVgIGlzIGluZGVlZCBzdWZmaWNpZW50LlxuXG5JJ3ZlIGRvdWJsZS1jaGVja2VkLCBhbmQgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBpcyB0aGUgb25seSBmdW5jdGlvbiBtb2RpZmllZC4gVGhlIHBhdGNoIHJlc3RvcmVzIHRoZSBsZWdhY3kgQlNTLiBUaGlzIHBhdGNoIGZpeGVzIGEgYnVnIHdpdGggZmlybXdhcmUgYW5kIGl0IHNlZW1zIHRvIGJlIGEgZnVuY3Rpb25hbCBjaGFuZ2UuICoqV29ydGhGdXp6aW5nPXRydWUqKiBpdCBpcy5cblxuTGV0J3Mgc3VtbWFyaXplIHRoZSBuZWNlc3NhcnkgY29uZmlncyBhZ2FpbjogYE1UNzkyNVVgLCBgTUFDODAyMTFgLCBhbmQgYFVTQmAuXG5cbkknbGwgYWxzbyBjaGVjayBpZiBgTVQ3OTI1VWAgcmVxdWlyZXMgZmlybXdhcmUuIElmIGl0IGRvZXMsIHN5emthbGxlcidzIGZhbGxiYWNrIGZpcm13YXJlIGxvYWRpbmcgbWlnaHQgaGFuZGxlIGl0LCBvciBwcm9iaW5nIG1pZ2h0IGZhaWwuIEJ1dCB3ZSB3YW50IHRvIGZ1enogdGhpcyBjb2RlIGluIGFueSBjYXNlLiBMb29raW5nIGF0IHRoZSBvdGhlciBkcml2ZXIgdmFyaWFudHMsIGBNVDc5MjVFYCBpcyBQQ0llLCB3aGljaCBJIGtub3cgaXMgbW9yZSBjaGFsbGVuZ2luZyB0byBmdXp6IHJlbGlhYmx5IGluIFFFTVUgY29tcGFyZWQgdG8gVVNCLCBldmVuIHdpdGggc3l6a2FsbGVyJ3MgUENJIGZ1enplci4gVVNCIGlzIGRlZmluaXRlbHkgdGhlIGJldHRlciBwYXRoLlxuXG5MZXQncyByZS1leGFtaW5lIHRoZSBjb2RlIGluIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2A6XG5cbmBgYGNcblx0aWYgKG9sZF9saW5rcyBcdTAwMjZcdTAwMjYgIW5ld19saW5rcykge1xuXHRcdG10NzkyeF9tYWNfbGlua19ic3NfcmVtb3ZlKGRldiwgXHUwMDI2bXZpZi1cdTAwM2Vic3NfY29uZixcblx0XHRcdFx0XHQgICBcdTAwMjZtdmlmLVx1MDAzZXN0YS5kZWZsaW5rKTtcblx0XHRlcnIgPSBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZChkZXYsIFx1MDAyNnZpZi1cdTAwM2Vic3NfY29uZixcblx0XHRcdFx0XHQgICAgICBcdTAwMjZtdmlmLVx1MDAzZXN0YS5kZWZsaW5rKTtcblx0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG5cdFx0XHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuXHRcdFx0cmV0dXJuIGVycjtcblx0XHR9XG5cdH1cbmBgYFxuXG5ZZXAsIHRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgYG1hYzgwMjExYCBkcml2ZXIuXG5cblNvIHRoZSAqKmZvY3VzIHN5bWJvbCBpcyBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgKiosIGFuZCB0aGUgcmVxdWlyZWQgY29uZmlncyBhcmUgYE1UNzkyNVVgLiBUaW1lIHRvIHNldCB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4NTcsIk91dHB1dFRva2VucyI6MTQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ5OjA5LjQxMjg5NDA1MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMTEzMTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X2NoYW5nZV92aWZfbGlua3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgIGluIHRoZSBNZWRpYVRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyIHRvIHJlc3RvcmUgdGhlIGxlZ2FjeSBCU1Mgd2hlbiBsaW5rcyBhcmUgcmVtb3ZlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBtYWM4MDIxMSBkcml2ZXIgb3BlcmF0aW9ucy4gVGhlIGRyaXZlciBoYXMgYSBVU0IgdmFyaWFudCAoTVQ3OTI1VSkgd2hpY2ggY2FuIGJlIGZ1enplZCB2aWEgVVNCIGVtdWxhdGlvbiAoZHVtbXlfaGNkKSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTI1VVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBpbiB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB0byByZXN0b3JlIHRoZSBsZWdhY3kgQlNTIHdoZW4gbGlua3MgYXJlIHJlbW92ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjODAyMTEgZHJpdmVyIG9wZXJhdGlvbnMuIFRoZSBkcml2ZXIgaGFzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKGR1bW15X2hjZCkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNDo0OTowOS40OTYwMTQyMDVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzA2OTE1MTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDQ6NDk6MDkuNDk2NDgxNzk1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEwNzA2NDQ0NDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGNoYW5naW5nIFZJRiBsaW5rcyBpbiB0aGUgbXQ3OTI1IGRyaXZlciBieSBhZGRpbmcgYSBjb25kaXRpb24gdG8gcmVtb3ZlIGFuZCByZS1hZGQgYSBCU1MgbGluayB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBoYXZpbmcgdmFsaWQgbGlua3MgdG8gbm8gdmFsaWQgbGlua3MuIFRoaXMgaXMgYSBzdGF0ZSBtYWNoaW5lIGFuZCBmaXJtd2FyZSBzeW5jaHJvbml6YXRpb24gZml4LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGludm9sdmUgdXNlLWFmdGVyLWZyZWUsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIG9yIGxvZ2ljIGVycm9ycywgd2hpY2ggYXJlIHdlbGwtY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTA4ZWRmOWIxZWVmMzQwYTljNTUwOGIyODA0OTI5NDk1OTQyMDlkZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDA0OjQ4OjE4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXG5pbmRleCA4NGI1NWYwMDhiM2QzLi5jN2NlZDJlZmQ0ZDdjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcbkBAIC0yMjk0LDYgKzIyOTQsMjEgQEAgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXG4gXHRtdmlmLVx1MDAzZXZhbGlkX2xpbmtzID0gbmV3X2xpbmtzO1xuIFxuK1x0LyogVGhlIGZpcm13YXJlIHdvdWxkIGtlZXAgdGhlIE1MRCBCU1MgYW5kIERFViBlbnRyeTogdGhlIHJlbW92YWxcbitcdCAqIGxvb3Agc2tpcHMgdGhlIGRlZmxpbmsgYW5kIHRoZSBod2VpZ2h0MTYoKSBmYWxsYmFjayBhYm92ZSByZWFkc1xuK1x0ICogdGhlIHN0YWxlIHByZS11cGRhdGUgdmFsaWRfbGlua3MuIFJlc3RvcmUgdGhlIGxlZ2FjeSBCU1MuXG4rXHQgKi9cbitcdGlmIChvbGRfbGlua3MgXHUwMDI2XHUwMDI2ICFuZXdfbGlua3MpIHtcbitcdFx0bXQ3OTJ4X21hY19saW5rX2Jzc19yZW1vdmUoZGV2LCBcdTAwMjZtdmlmLVx1MDAzZWJzc19jb25mLFxuK1x0XHRcdFx0XHQgICBcdTAwMjZtdmlmLVx1MDAzZXN0YS5kZWZsaW5rKTtcbitcdFx0ZXJyID0gbXQ3OTI1X21hY19saW5rX2Jzc19hZGQoZGV2LCBcdTAwMjZ2aWYtXHUwMDNlYnNzX2NvbmYsXG4rXHRcdFx0XHRcdCAgICAgIFx1MDAyNm12aWYtXHUwMDNlc3RhLmRlZmxpbmspO1xuK1x0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4rXHRcdFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbitcdFx0XHRyZXR1cm4gZXJyO1xuK1x0XHR9XG4rXHR9XG4rXG4gXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuIFxuIFx0cmV0dXJuIDA7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNDo0OTowOS40OTY0ODI2ODVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk4ODUwMzc1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNVDc5MjUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2Agd2l0aGluIHRoZSBNVDc5MjUgZHJpdmVyLiBJdCBsb29rcyBsaWtlIGl0J3MgYWRkaW5nIGEgY29uZGl0aW9uYWwgY2hlY2s6IGBpZiAob2xkX2xpbmtzIFx1MDAyNlx1MDAyNiAhbmV3X2xpbmtzKWAuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgTUFDIGxpbmsgQlNTIHJlbW92YWwgYW5kIGFkZGl0aW9uLiBJdCdzIGNhbGxpbmcgYG10NzkyeF9tYWNfbGlua19ic3NfcmVtb3ZlYCBhbmQgYG10NzkyNV9tYWNfbGlua19ic3NfYWRkYCBiYXNlZCBvbiB0aGlzIGNoZWNrLiBNeSBpbml0aWFsIGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgdW5pbml0aWFsaXplZCBtZW1vcnkuIExldCdzIHNlZS4uLiBgb2xkX2xpbmtzYCBhbmQgYG5ld19saW5rc2Agc2VlbSB0byBiZSBpbnRlZ2VycywgbGlrZWx5IGB1MTZgIGJpdG1hc2tzLiBgbXZpZi1cdTAwM2Vic3NfY29uZmAgYW5kIGB2aWYtXHUwMDNlYnNzX2NvbmZgIGFyZSBwb2ludGVycywgYXMgaXMgYG12aWYtXHUwMDNlc3RhLmRlZmxpbmtgLlxuXG5BbHJpZ2h0LCBJIGRvbid0IHNlZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9uIGhlcmUsIGFuZCBkZWZpbml0ZWx5IG5vIGRpcmVjdCBgY29weV90b191c2VyYCBjYWxscyB0aGF0IHdvdWxkIGJlIGFuIG9idmlvdXMgc291cmNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlLiBJdCBkb2Vzbid0IGxvb2sgbGlrZSBhbnkgdW5pbml0aWFsaXplZCBkYXRhIGlzIGJlaW5nIHJlYWQgZWl0aGVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgdGhpcyBpcyBwdXJlbHkgYSBsb2dpY2FsIGNoYW5nZSwgcHJvYmFibHkgZml4aW5nIGEgc3RhdGUgbWFjaGluZSBvciBzeW5jaHJvbml6YXRpb24gaXNzdWUgd2l0aCB0aGUgZmlybXdhcmUsIHdoaWNoIGlzIGEgZmFpcmx5IGNvbW1vbiBhcmVhIGZvciBwYXRjaGVzIGxpa2UgdGhpcy5cblxuR2l2ZW4gdGhpcywgSSBkb24ndCBpbW1lZGlhdGVseSBzZWUgYW55IG9idmlvdXMgS01TQU4gaXNzdWVzLiBLQVNBTiB3b3VsZCBiZSB0aGUgbW9yZSBsaWtlbHkgdG9vbCB0byBjYXRjaCBhbnkgVXNlLUFmdGVyLUZyZWUgb3IgT3V0LW9mLUJvdW5kcyBpc3N1ZXMgKmlmKiB0aGVyZSB3ZXJlIGFueS4gVGhvdWdoLCBpdCBuZXZlciBodXJ0cyB0byBkb3VibGUtY2hlY2sgdGhlc2UgdGhpbmdzLiBMZXQgbWUganVzdCB0YWtlIGFub3RoZXIgcXVpY2sgbG9vayBhdCB0aGUgY29kZSB0byBiZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjE2LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDQ6NDk6MTUuNDg0OTg5NDU3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMTIyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjI4MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjI4MDpcXHRcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIobXZpZi1cXHUwMDNlbGlua19jb25mW2xpbmtfaWRdLCBtY29uZik7XFxuMjI4MTpcXHRcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIobXZpZi1cXHUwMDNlc3RhLmxpbmtbbGlua19pZF0sIG1saW5rKTtcXG4yMjgyOlxcdFxcbjIyODM6XFx0XFx0XFx0ZXJyID0gbXQ3OTI1X21hY19saW5rX2Jzc19hZGQoZGV2LCBsaW5rX2NvbmYsIG1saW5rKTtcXG4yMjg0OlxcdFxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbjIyODU6XFx0XFx0XFx0XFx0Z290byBmcmVlO1xcbjIyODY6XFx0XFxuMjI4NzpcXHRcXHRcXHRpZiAobWNvbmYgIT0gXFx1MDAyNm12aWYtXFx1MDAzZWJzc19jb25mKSB7XFxuMjI4ODpcXHRcXHRcXHRcXHRlcnIgPSBtdDc5MjVfc2V0X21sb19yb2MocGh5LCBcXHUwMDI2bXZpZi1cXHUwMDNlYnNzX2NvbmYsXFxuMjI4OTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgdmlmLVxcdTAwM2VhY3RpdmVfbGlua3MpO1xcbjIyOTA6XFx0XFx0XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuMjI5MTpcXHRcXHRcXHRcXHRcXHRnb3RvIGZyZWU7XFxuMjI5MjpcXHRcXHRcXHR9XFxuMjI5MzpcXHRcXHR9XFxuMjI5NDpcXHRcXG4yMjk1OlxcdFxcdG12aWYtXFx1MDAzZXZhbGlkX2xpbmtzID0gbmV3X2xpbmtzO1xcbjIyOTY6XFx0XFxuMjI5NzpcXHRcXHQvKiBUaGUgZmlybXdhcmUgd291bGQga2VlcCB0aGUgTUxEIEJTUyBhbmQgREVWIGVudHJ5OiB0aGUgcmVtb3ZhbFxcbjIyOTg6XFx0XFx0ICogbG9vcCBza2lwcyB0aGUgZGVmbGluayBhbmQgdGhlIGh3ZWlnaHQxNigpIGZhbGxiYWNrIGFib3ZlIHJlYWRzXFxuMjI5OTpcXHRcXHQgKiB0aGUgc3RhbGUgcHJlLXVwZGF0ZSB2YWxpZF9saW5rcy4gUmVzdG9yZSB0aGUgbGVnYWN5IEJTUy5cXG4yMzAwOlxcdFxcdCAqL1xcbjIzMDE6XFx0XFx0aWYgKG9sZF9saW5rcyBcXHUwMDI2XFx1MDAyNiAhbmV3X2xpbmtzKSB7XFxuMjMwMjpcXHRcXHRcXHRtdDc5MnhfbWFjX2xpbmtfYnNzX3JlbW92ZShkZXYsIFxcdTAwMjZtdmlmLVxcdTAwM2Vic3NfY29uZixcXG4yMzAzOlxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZtdmlmLVxcdTAwM2VzdGEuZGVmbGluayk7XFxuMjMwNDpcXHRcXHRcXHRlcnIgPSBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZChkZXYsIFxcdTAwMjZ2aWYtXFx1MDAzZWJzc19jb25mLFxcbjIzMDU6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNm12aWYtXFx1MDAzZXN0YS5kZWZsaW5rKTtcXG4yMzA2OlxcdFxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKSB7XFxuMjMwNzpcXHRcXHRcXHRcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbjIzMDg6XFx0XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4yMzA5OlxcdFxcdFxcdH1cXG4yMzEwOlxcdFxcdH1cXG4yMzExOlxcdFxcbjIzMTI6XFx0XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4yMzEzOlxcdFxcbjIzMTQ6XFx0XFx0cmV0dXJuIDA7XFxuMjMxNTpcXHRcXG4yMzE2OlxcdGZyZWU6XFxuMjMxNzpcXHRcXHRmb3JfZWFjaF9zZXRfYml0KGxpbmtfaWQsIFxcdTAwMjZhZGQsIElFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LUykge1xcbjIzMTg6XFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKG12aWYtXFx1MDAzZWxpbmtfY29uZltsaW5rX2lkXSwgTlVMTCk7XFxuMjMxOTpcXHRcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIobXZpZi1cXHUwMDNlc3RhLmxpbmtbbGlua19pZF0sIE5VTEwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNDo0OToxNS40ODUyMjI0MzdaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcxNzY3NDY2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqUGF0Y2ggUmV2aWV3IGFuZCBTdGF0ZSBNYWNoaW5lIExvZ2ljKipcblxuQWxyaWdodCwgbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCBzZWVtcyBzdHJhaWdodGZvcndhcmQuIFRoZSBtYWluIGZ1bmN0aW9uIGlzIHRvIGhhbmRsZSB0aGUgcmVtb3ZhbCBhbmQgYWRkaXRpb24gb2YgQlNTIGxpbmtzIGJhc2VkIG9uIGNoYW5nZXMgaW4gdGhlIGxpbmsgc3RhdGUsIHNwZWNpZmljYWxseSB3aGVuIHRoZSBgb2xkX2xpbmtzYCBhcmUgcHJlc2VudCBidXQgdGhlIGBuZXdfbGlua3NgIGFyZSBub3QuIFRoaXMgaXMgZGVmaW5pdGVseSBhIHN0YXRlIG1hY2hpbmUgY29ycmVjdGlvbiwgd2hpY2ggaXMgd2hhdCBJIHN1c3BlY3RlZCBnaXZlbiB0aGUgZGVzY3JpcHRpb24uIE5vdGhpbmcgaW4gdGhpcyBjb2RlIHRvdWNoZXMgdW5pbml0aWFsaXplZCBtZW1vcnksIHdoaWNoIGlzIGEgcmVsaWVmIOKAkyBhbHdheXMgYSBnb29kIHRoaW5nIHRvIHZlcmlmeS4gR2l2ZW4gdGhhdCwgSSdtIGNvbmZpZGVudCB0aGVyZSdzIG5vIG5lZWQgdG8gZW5hYmxlIGFueSBleHRyYSBkZWJ1Z2dpbmcgb3IgaGFyZGVuaW5nLCBzbyBJJ20gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAuIFRoaXMgbG9va3MgY2xlYW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NzIsIk91dHB1dFRva2VucyI6MTY1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNDo0OToyMC4yMDI4OTkwOTVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgY2hhbmdpbmcgVklGIGxpbmtzIGluIHRoZSBtdDc5MjUgZHJpdmVyIGJ5IGFkZGluZyBhIGNvbmRpdGlvbiB0byByZW1vdmUgYW5kIHJlLWFkZCBhIEJTUyBsaW5rIHdoZW4gdHJhbnNpdGlvbmluZyBmcm9tIGhhdmluZyB2YWxpZCBsaW5rcyB0byBubyB2YWxpZCBsaW5rcy4gVGhpcyBpcyBhIHN0YXRlIG1hY2hpbmUgYW5kIGZpcm13YXJlIHN5bmNocm9uaXphdGlvbiBmaXguIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZC4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgaW52b2x2ZSB1c2UtYWZ0ZXItZnJlZSwgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgb3IgbG9naWMgZXJyb3JzLCB3aGljaCBhcmUgd2VsbC1jb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBLTVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGNoYW5naW5nIFZJRiBsaW5rcyBpbiB0aGUgbXQ3OTI1IGRyaXZlciBieSBhZGRpbmcgYSBjb25kaXRpb24gdG8gcmVtb3ZlIGFuZCByZS1hZGQgYSBCU1MgbGluayB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBoYXZpbmcgdmFsaWQgbGlua3MgdG8gbm8gdmFsaWQgbGlua3MuIFRoaXMgaXMgYSBzdGF0ZSBtYWNoaW5lIGFuZCBmaXJtd2FyZSBzeW5jaHJvbml6YXRpb24gZml4LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGludm9sdmUgdXNlLWFmdGVyLWZyZWUsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIG9yIGxvZ2ljIGVycm9ycywgd2hpY2ggYXJlIHdlbGwtY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowwk6tf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-26 04:45:03 +0000 UTC FinishedAt: 2026-08-26 04:49:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "ca800a9302764c445de0da0e84d2252400a770ee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "ca800a9302764c445de0da0e84d2252400a770ee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U" ], "series_id": "5e7c1420-e165-4d27-9822-ad5d2eabe54f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7925_change_vif_links" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjVfY2hhbmdlX3ZpZl9saW5rcyYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgY2hhbmdpbmcgVklGIGxpbmtzIGluIHRoZSBtdDc5MjUgZHJpdmVyIGJ5IGFkZGluZyBhIGNvbmRpdGlvbiB0byByZW1vdmUgYW5kIHJlLWFkZCBhIEJTUyBsaW5rIHdoZW4gdHJhbnNpdGlvbmluZyBmcm9tIGhhdmluZyB2YWxpZCBsaW5rcyB0byBubyB2YWxpZCBsaW5rcy4gVGhpcyBpcyBhIHN0YXRlIG1hY2hpbmUgYW5kIGZpcm13YXJlIHN5bmNocm9uaXphdGlvbiBmaXguIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZC4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgaW52b2x2ZSB1c2UtYWZ0ZXItZnJlZSwgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgb3IgbG9naWMgZXJyb3JzLCB3aGljaCBhcmUgd2VsbC1jb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBpbiB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB0byByZXN0b3JlIHRoZSBsZWdhY3kgQlNTIHdoZW4gbGlua3MgYXJlIHJlbW92ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjODAyMTEgZHJpdmVyIG9wZXJhdGlvbnMuIFRoZSBkcml2ZXIgaGFzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKGR1bW15X2hjZCkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTA4ZWRmOWIxZWVmMzQwYTljNTUwOGIyODA0OTI5NDk1OTQyMDlkZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDA0OjQ4OjE4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1xuaW5kZXggODRiNTVmMDA4YjNkMy4uYzdjZWQyZWZkNGQ3YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXG5AQCAtMjI5NCw2ICYjNDM7MjI5NCwyMSBAQCBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbiBcbiBcdG12aWYtXHUwMDNldmFsaWRfbGlua3MgPSBuZXdfbGlua3M7XG4gXG4mIzQzO1x0LyogVGhlIGZpcm13YXJlIHdvdWxkIGtlZXAgdGhlIE1MRCBCU1MgYW5kIERFViBlbnRyeTogdGhlIHJlbW92YWxcbiYjNDM7XHQgKiBsb29wIHNraXBzIHRoZSBkZWZsaW5rIGFuZCB0aGUgaHdlaWdodDE2KCkgZmFsbGJhY2sgYWJvdmUgcmVhZHNcbiYjNDM7XHQgKiB0aGUgc3RhbGUgcHJlLXVwZGF0ZSB2YWxpZF9saW5rcy4gUmVzdG9yZSB0aGUgbGVnYWN5IEJTUy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAob2xkX2xpbmtzIFx1MDAyNlx1MDAyNiAhbmV3X2xpbmtzKSB7XG4mIzQzO1x0XHRtdDc5MnhfbWFjX2xpbmtfYnNzX3JlbW92ZShkZXYsIFx1MDAyNm12aWYtXHUwMDNlYnNzX2NvbmYsXG4mIzQzO1x0XHRcdFx0XHQgICBcdTAwMjZtdmlmLVx1MDAzZXN0YS5kZWZsaW5rKTtcbiYjNDM7XHRcdGVyciA9IG10NzkyNV9tYWNfbGlua19ic3NfYWRkKGRldiwgXHUwMDI2dmlmLVx1MDAzZWJzc19jb25mLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgXHUwMDI2bXZpZi1cdTAwM2VzdGEuZGVmbGluayk7XG4mIzQzO1x0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4mIzQzO1x0XHRcdHJldHVybiBlcnI7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiBcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4gXG4gXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNDo0ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNV9jaGFuZ2VfdmlmX2xpbmtzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgaW4gdGhlIE1lZGlhVGVrIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIgdG8gcmVzdG9yZSB0aGUgbGVnYWN5IEJTUyB3aGVuIGxpbmtzIGFyZSByZW1vdmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1hYzgwMjExIGRyaXZlciBvcGVyYXRpb25zLiBUaGUgZHJpdmVyIGhhcyBhIFVTQiB2YXJpYW50IChNVDc5MjVVKSB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uIChkdW1teV9oY2QpIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkwOGVkZjliMWVlZjM0MGE5YzU1MDhiMjgwNDkyOTQ5NTk0MjA5ZGUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAyNiAwNDo0ODoxOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYwppbmRleCA4NGI1NWYwMDhiM2QzLi5jN2NlZDJlZmQ0ZDdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jCkBAIC0yMjk0LDYgJiM0MzsyMjk0LDIxIEBAIG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLAogCiAJbXZpZi0mZ3Q7dmFsaWRfbGlua3MgPSBuZXdfbGlua3M7CiAKJiM0MzsJLyogVGhlIGZpcm13YXJlIHdvdWxkIGtlZXAgdGhlIE1MRCBCU1MgYW5kIERFViBlbnRyeTogdGhlIHJlbW92YWwKJiM0MzsJICogbG9vcCBza2lwcyB0aGUgZGVmbGluayBhbmQgdGhlIGh3ZWlnaHQxNigpIGZhbGxiYWNrIGFib3ZlIHJlYWRzCiYjNDM7CSAqIHRoZSBzdGFsZSBwcmUtdXBkYXRlIHZhbGlkX2xpbmtzLiBSZXN0b3JlIHRoZSBsZWdhY3kgQlNTLgomIzQzOwkgKi8KJiM0MzsJaWYgKG9sZF9saW5rcyAmYW1wOyZhbXA7ICFuZXdfbGlua3MpIHsKJiM0MzsJCW10NzkyeF9tYWNfbGlua19ic3NfcmVtb3ZlKGRldiwgJmFtcDttdmlmLSZndDtic3NfY29uZiwKJiM0MzsJCQkJCSAgICZhbXA7bXZpZi0mZ3Q7c3RhLmRlZmxpbmspOwomIzQzOwkJZXJyID0gbXQ3OTI1X21hY19saW5rX2Jzc19hZGQoZGV2LCAmYW1wO3ZpZi0mZ3Q7YnNzX2NvbmYsCiYjNDM7CQkJCQkgICAgICAmYW1wO212aWYtJmd0O3N0YS5kZWZsaW5rKTsKJiM0MzsJCWlmIChlcnIgJmx0OyAwKSB7CiYjNDM7CQkJbXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTsKJiM0MzsJCQlyZXR1cm4gZXJyOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiAJbXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTsKIAogCXJldHVybiAwOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjE5CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCBmb3IgdGhlIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgZnVuY3Rpb24gd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNgLiBUaGlzIHBsYWNlcyBpdCBmaXJtbHkgd2l0aGluIHRoZSBNZWRpYVRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyLCB3aGljaCBJJiMzOTttIGZhbWlsaWFyIHdpdGguIEJ1dCBhIHRob3VnaHQgaW1tZWRpYXRlbHkgcG9wcyB1cDogY2FuIEkgKnRlc3QqIHRoaXMgaW4gUUVNVT8gVGhlc2UgTVQ3NiBkcml2ZXJzIGFyZSAqdHlwaWNhbGx5KiB0YXJnZXRlZCBhdCBwaHlzaWNhbCBoYXJkd2FyZSDigJMgUENJZSBvciBVU0IgZGV2aWNlcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUmIzM5O3MgZXZlbiBhIFVTQiB2YXJpYW50IG9mIHRoZSBNVDc5MjUuIFRpbWUgdG8gZmlyZSB1cCBgZ3JlcGAgYW5kIHNlYXJjaCB3aXRoaW4gS2NvbmZpZywgb3IgYXQgbGVhc3QgYSBxdWljayBzY2FuIHRocm91Z2ggdGhlIGRyaXZlciBmaWxlcywgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBpbmRpY2F0aW9uIG9mIGEgVVNCIHN1cHBvcnQgcGF0aC4gV2l0aG91dCB0aGF0LCB0aGlzIHBhdGNoIGlzIGdvaW5nIHRvIGJlIHNpZ25pZmljYW50bHkgbW9yZSBjdW1iZXJzb21lIHRvIGV2YWx1YXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA0MDk3IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc9NTA9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo1MTpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU9NTE9b2JqLSQoQ09ORklHX01UNzk5NkUpICYjNDM7PSBtdDc5OTYvXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19NVDc5MjVfQ09NTU9OKSAmIzQzOz0gbXQ3OTI1L1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0xODA9c3RhdGljIGlubGluZSBib29sIGlzX2Nvbm5hYzMoc3RydWN0IG10NzZfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hYy5oLTE4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoxODU6c3RhdGljIGlubGluZSBib29sIGlzX210NzkyNShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaC0xODYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM9NTQ9aW50IG10NzZfY29ubmFjX21jdV9pbml0X2Rvd25sb2FkKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYWRkciwgdTMyIGxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jLTY5LVx0ICAgIChpc19jb25uYWMyKGRldikgXHUwMDI2XHUwMDI2IGFkZHIgPT0gMHg5MDAwMDApIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jOjcwOlx0ICAgICgoaXNfbXQ3OTI1KGRldikgfHwgaXNfbXQ3OTI3KGRldikpIFx1MDAyNlx1MDAyNiAoYWRkciA9PSAweDkwMDAwMCB8fCBhZGRyID09IDB4ZTAwMDI4MDApKSB8fFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2X2Nvbm5hY19tY3UuYy03MS1cdCAgICAoaXNfbXQ3OTI4KGRldikgXHUwMDI2XHUwMDI2IChhZGRyID09IDB4OTAwMDAwIHx8IGFkZHIgPT0gMHhlMDAwMjAwMCkpIHx8XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGUtMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01UNzkyNV9DT01NT04pICYjNDM7PSBtdDc5MjUtY29tbW9uLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX01UNzkyNUUpICYjNDM7PSBtdDc5MjVlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX01UNzkyNVUpICYjNDM7PSBtdDc5MjV1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo3Om10NzkyNS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm8gbmFuLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjg6bXQ3OTI1LWNvbW1vbi0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6OTptdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3Uub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6MTA6bXQ3OTI1dS15IDo9IHVzYi5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDojaW5jbHVkZSBcJiMzNDttdDc5MjUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTUtI2luY2x1ZGUgXCYjMzQ7bWN1LmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6ODptdDc5MjVfcmVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMy1cdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ6XHRtdDc5MjVfbWN1X3JlZ3ZhbChkZXYsIGRldi1cdTAwM2VtdDc2LmRlYnVnZnNfcmVnLCBcdTAwMjZyZWd2YWwsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1LVx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIxOm10NzkyNV9yZWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjctXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4Olx0cmV0ID0gbXQ3OTI1X21jdV9yZWd2YWwoZGV2LCBkZXYtXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXHUwMDI2cmVndmFsLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjktXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozNjpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZWd2YWwsIG10NzkyNV9yZWdfZ2V0LCBtdDc5MjVfcmVnX3NldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNy1cdFx0XHQgXCYjMzQ7MHglMDhsbHhcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTM4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozOTptdDc5MjVfZndfZGVidWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNDAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00NS1cdGRldi1cdTAwM2Vmd19kZWJ1ZyA9ICh1OCl2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDY6XHRtdDc5MjVfbWN1X2Z3X2xvZ18yX2hvc3QoZGV2LCBkZXYtXHUwMDNlZndfZGVidWcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQ3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz01Mz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NTQ6bXQ3OTI1X2Z3X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy01NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjYzOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2Z3X2RlYnVnLCBtdDc5MjVfZndfZGVidWdfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjY0Olx0XHRcdCBtdDc5MjVfZndfZGVidWdfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy02NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Njg9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo2OTptdDc5MjVfc2VxX3B1dHNfYXJyYXkoc3RydWN0IHNlcV9maWxlICpmaWxlLCBjb25zdCBjaGFyICpzdHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNzAtXHRcdCAgICAgIHM4IHZhbFtdWzJdLCBpbnQgbGVuLCB1OCBiYW5kX2lkeClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6ODM6I2RlZmluZSBtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkocHJlZml4LCByYXRlLCBpZHgpXHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTg0LSh7XHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjg1Olx0bXQ3OTI1X3NlcV9wdXRzX2FycmF5KHMsICNwcmVmaXggXCYjMzQ7ICh0bWFjKVwmIzM0OyxcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtODYtXHRcdFx0ICAgICAgdHhwd3ItXHUwMDNlcmF0ZSxcdFx0XFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9OTE9c3RhdGljIGlubGluZSB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6OTI6bXQ3OTI1X2VodF90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyLCB1OCBiYW5kX2lkeClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy05My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTk3LVx0XHQgICBcJiMzNDttY3MxMlwmIzM0OywgXCYjMzQ7bWNzMTNcJiMzNDssIFwmIzM0O21jczE0XCYjMzQ7LCBcJiMzNDttY3MxNVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6OTg6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjYsIGVodDI2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6OTk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNTIsIGVodDUyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTAwOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDEwNiwgZWh0MTA2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTAxOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI0MiwgZWh0MjQyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTAyOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDQ4NCwgZWh0NDg0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTYsIGVodDk5NiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4MiwgZWh0OTk2eDIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDY6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDQsIGVodDk5Nng0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTA3Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI2XzUyLCBlaHQyNl81MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwODpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQyNl8xMDYsIGVodDI2XzEwNiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwOTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODRfMjQyLCBlaHQ0ODRfMjQyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTEwOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODQsIGVodDk5Nl80ODQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTE6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2XzQ4NF8yNDIsIGVodDk5Nl80ODRfMjQyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTEyOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyXzQ4NCwgZWh0OTk2eDJfNDg0LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTEzOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngzLCBlaHQ5OTZ4MywgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExNDpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ5OTZ4M180ODQsIGVodDk5NngzXzQ4NCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTExNS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTExNz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTE4Om10NzkyNV90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTE5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMjAtXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gZGV2X2dldF9kcnZkYXRhKHMtXHUwMDNlcHJpdmF0ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTIxOlx0c3RydWN0IG10NzkyNV90eHB3ciAqdHhwd3IgPSBOVUxMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEyMi1cdHU4IGJhbmRfaWR4ID0gZGV2LVx1MDAzZW1waHkuYmFuZF9pZHg7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzMC1cdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTMxOlx0cmV0ID0gbXQ3OTI1X2dldF90eHB3cl9pbmZvKGRldiwgYmFuZF9pZHgsIHR4cHdyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzItXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzgtXHRcdCAgIFwmIzM0OyBcJiMzNDssIFwmIzM0OzFtXCYjMzQ7LCBcJiMzNDsybVwmIzM0OywgXCYjMzQ7NW1cJiMzNDssIFwmIzM0OzExbVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTM5Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KENDSywgY2NrLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNDMtXHRcdCAgIFwmIzM0OzQ4bVwmIzM0OywgXCYjMzQ7NTRtXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDQ6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoT0ZETSwgb2ZkbSwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE0NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQ4LVx0XHQgICBcJiMzNDttY3M2XCYjMzQ7LCBcJiMzNDttY3M3XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSFQyMCwgaHQyMCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTUzLVx0XHQgICBcJiMzNDttY3M2XCYjMzQ7LCBcJiMzNDttY3M3XCYjMzQ7LCBcJiMzNDttY3MzMlwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTU0Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUNDAsIGh0NDAsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1OC1cdFx0ICAgXCYjMzQ7bWNzNlwmIzM0OywgXCYjMzQ7bWNzN1wmIzM0OywgXCYjMzQ7bWNzOFwmIzM0OywgXCYjMzQ7bWNzOVwmIzM0OywgXCYjMzQ7bWNzMTBcJiMzNDssIFwmIzM0O21jczExXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNTk6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUMjAsIHZodDIwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTYwOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDQwLCB2aHQ0MCwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjI6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUODAsIHZodDgwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTYzOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDE2MCwgdmh0MTYwLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTY0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2NTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTI2LCBoZTI2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTY2Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFNTIsIGhlNTIsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjc6XHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUxMDYsIGhlMTA2LCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTY4Olx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMjQyLCBoZTI0MiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2OTpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTQ4NCwgaGU0ODQsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTcxOlx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFOTk2LCBoZTk5NiwgYmFuZF9pZHgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE3MjpcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NngyLCBoZTk5NngyLCBiYW5kX2lkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE3NDpcdG10NzkyNV9laHRfdHhwd3IocywgdHhwd3IsIGJhbmRfaWR4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNzUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTE4MT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTgyOm10NzkyNV9wbV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xODMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMDUtXHRwbS1cdTAwM2VlbmFibGVfdXNlciA9IHZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMDY6XHRtdDc5MjVfc2V0X3J1bnRpbWVfcG0oZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMDctXHRtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKFx1MDAyNmRldi1cdTAwM2VtcGh5LCBwbSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIxND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjE1Om10NzkyNV9wbV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjE2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjIyNDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbSwgbXQ3OTI1X3BtX2dldCwgbXQ3OTI1X3BtX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTIyNj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjI3Om10NzkyNV9kZWVwX3NsZWVwX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI0Mi1cdHBtLVx1MDAzZWRzX2VuYWJsZSA9IGVuYWJsZSBcdTAwMjZcdTAwMjYgIW1vbml0b3I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjQzOlx0bXQ3OTI1X21jdV9zZXRfZGVlcF9zbGVlcChkZXYsIHBtLVx1MDAzZWRzX2VuYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjQ0LW91dDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjUwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNTE6bXQ3OTI1X2RlZXBfc2xlZXBfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI1Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNjA6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZHMsIG10NzkyNV9kZWVwX3NsZWVwX2dldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNjE6XHRcdFx0IG10NzkyNV9kZWVwX3NsZWVwX3NldCwgXCYjMzQ7JWxsZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI2Mz1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbV9pZGxlX3RpbWVvdXQsIG10NzkyeF9wbV9pZGxlX3RpbWVvdXRfZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjY2OnN0YXRpYyBpbnQgbXQ3OTI1X2NoaXBfcmVzZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNzgtXHRcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjc5Olx0XHRyZXQgPSBtdDc5MjVfbWN1X2NoaXBfY29uZmlnKGRldiwgXCYjMzQ7YXNzZXJ0XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODAtXHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyODc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXQsIE5VTEwsIG10NzkyNV9jaGlwX3Jlc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjg5OmludCBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjkwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzA0LVx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7dHhwb3dlcl9za3VcJiMzNDssIGRpcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozMDU6XHRcdFx0XHQgICAgbXQ3OTI1X3R4cHdyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zMDYtXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3R4X3N0YXRzXCYjMzQ7LCAwNDAwLCBkaXIsIGRldiwgXHUwMDI2bXQ3OTJ4X3R4X3N0YXRzX2ZvcHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy04LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2Zpcm13YXJlLmhcdTAwM2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo5OiNpbmNsdWRlIFwmIzM0O210NzkyNS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTAtI2luY2x1ZGUgXCYjMzQ7cmVnZC5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE0OnN0YXRpYyBzc2l6ZV90IG10NzkyNV90aGVybWFsX3RlbXBfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTUtXHRcdFx0XHRcdHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNC1cdFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUobWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjU6XHRcdHRlbXBlcmF0dXJlID0gbXQ3OTI1X21jdV9nZXRfdGVtcGVyYXR1cmUocGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNi1cdFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UobWRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTM2LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozNzpzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSX1JPKHRlbXAxX2lucHV0LCBtdDc5MjVfdGhlcm1hbF90ZW1wLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozOTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbXQ3OTI1X2h3bW9uX2F0dHJzW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDAtXHRcdTAwMjZzZW5zb3JfZGV2X2F0dHJfdGVtcDFfaW5wdXQuZGV2X2F0dHIuYXR0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDItfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo0MzpBVFRSSUJVVEVfR1JPVVBTKG10NzkyNV9od21vbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NDU6c3RhdGljIGludCBtdDc5MjVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo1NDpcdG5hbWUgPSBkZXZtX2thc3ByaW50ZihcdTAwMjZ3aXBoeS1cdTAwM2VkZXYsIEdGUF9LRVJORUwsIFwmIzM0O210NzkyNV8lc1wmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01NS1cdFx0XHQgICAgICB3aXBoeV9uYW1lKHdpcGh5KSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTU5LVx0aHdtb24gPSBkZXZtX2h3bW9uX2RldmljZV9yZWdpc3Rlcl93aXRoX2dyb3VwcyhcdTAwMjZ3aXBoeS1cdTAwM2VkZXYsIG5hbWUsIHBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo2MDpcdFx0XHRcdFx0XHQgICAgICAgbXQ3OTI1X2h3bW9uX2dyb3Vwcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjEtXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGh3bW9uKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NjQ6c3RhdGljIHZvaWQgbXQ3OTI1X21hY19pbml0X2Jhc2ljX3JhdGVzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03My1cdFx0ICAgICAgIEZJRUxEX1BSRVAoTVRfVFhfUkFURV9JRFgsIHJhdGUgXHUwMDI2IEdFTk1BU0soNywgMCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjc0Olx0XHRtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKGRldiwgaWR4LCByYXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03NS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Nzg6aW50IG10NzkyNV9tYWNfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTc5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtODYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNVDc5MnhfV1RCTF9TSVpFOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo4NzpcdFx0bXQ3OTI1X21hY193dGJsX3VwZGF0ZShkZXYsIGksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtODgtXHRcdFx0XHQgICAgICAgTVRfV1RCTF9VUERBVEVfQURNX0NPVU5UX0NMRUFSKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6OTI6XHRtdDc5MjVfbWFjX2luaXRfYmFzaWNfcmF0ZXMoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy05My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTctfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjk4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tYWNfaW5pdCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTAwOnN0YXRpYyBpbnQgX19tdDc5MjVfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEwMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTExMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMTI6XHRyZXQgPSBtdDc5MjVfbWN1X3NldF9lZXByb20oZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTE2Olx0cmV0ID0gbXQ3OTI1X21hY19pbml0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTE3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTIwLVx0aWYgKGlzX210NzkyNyhcdTAwMjZkZXYtXHUwMDNlbXQ3NikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMjE6XHRcdHJldCA9IG10NzkyNV9tY3Vfc2V0X2RiZGMoXHUwMDI2ZGV2LVx1MDAzZW1waHksIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEyMi1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTMzOnN0YXRpYyBpbnQgbXQ3OTI1X2luaXRfaGFyZHdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTQ1Olx0XHRyZXQgPSBfX210NzkyNV9pbml0X2hhcmR3YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTQ2LVx0XHRpZiAoIXJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE2MzpzdGF0aWMgaW50IG10NzkyNV9pbml0X25hbl9jYXAoc3RydWN0IG10NzZfZGV2ICptZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE2NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTE4OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxOTA6c3RhdGljIHZvaWQgbXQ3OTI1X2luaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTkxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE5NjpcdHJldCA9IG10NzkyNV9pbml0X2hhcmR3YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTk3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjAwLVx0bXQ3Nl9zZXRfc3RyZWFtX2NhcHMoXHUwMDI2ZGV2LVx1MDAzZW1waHksIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIwMTpcdG10NzkyNV9zZXRfc3RyZWFtX2hlX2VodF9jYXBzKFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwMi1cdG10NzkyeF9jb25maWdfbWFjX2FkZHJfbGlzdChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMDQ6XHRyZXQgPSBtdDc5MjVfaW5pdF9tbG9fY2FwcyhcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDUtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMTA6XHRkZXYtXHUwMDNlbXQ3Ni5pbml0X3dpcGh5ID0gbXQ3OTI1X2luaXRfbmFuX2NhcDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIxOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMTk6XHRyZXQgPSBtdDc5MjVfaW5pdF9kZWJ1Z2ZzKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjIwLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjI1Olx0cmV0ID0gbXQ3OTI1X3RoZXJtYWxfaW5pdChcdTAwMjZkZXYtXHUwMDNlcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjYtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMzE6XHRyZXQgPSBtdDc5MjVfbWN1X3NldF90aGVybWFsX3Byb3RlY3QoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMzItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNDA6XHRtdDc5MjVfbWN1X3NldF9kZWVwX3NsZWVwKGRldiwgZGV2LVx1MDAzZXBtLmRzX2VuYWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQxLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNDItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjQzOmludCBtdDc5MjVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjQ0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjUzLVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBtLnBzX3dvcmssIG10NzkyeF9wbV9wb3dlcl9zYXZlX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI1NDpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yaywgbXQ3OTI1X21sb19wbV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNTUtXHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBtLndha2Vfd29yaywgbXQ3OTJ4X3BtX3dha2Vfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2MS1cdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VtcGh5Lm1hY193b3JrLCBtdDc5MnhfbWFjX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI2MjpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VwaHkuc2Nhbl93b3JrLCBtdDc5MjVfc2Nhbl93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNjM6XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZkZXYtXHUwMDNlY29yZWR1bXAud29yaywgbXQ3OTI1X2NvcmVkdW1wX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2NC0jaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNjU6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZWlwdjZfbnNfd29yaywgbXQ3OTI1X3NldF9pcHY2X25zX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI2Ni1cdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2ZGV2LVx1MDAzZWlwdjZfbnNfbGlzdCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNzE6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dvcmssIG10NzkyNV9tYWNfcmVzZXRfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjcyOlx0SU5JVF9XT1JLKFx1MDAyNmRldi1cdTAwM2Vpbml0X3dvcmssIG10NzkyNV9pbml0X3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNzQ6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBoeS5yb2Nfd29yaywgbXQ3OTI1X3JvY193b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNzUtXHR0aW1lcl9zZXR1cChcdTAwMjZkZXYtXHUwMDNlcGh5LnJvY190aW1lciwgbXQ3OTJ4X3JvY190aW1lciwgMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTMwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozMDI6XHRody1cdTAwM2V3aXBoeS1cdTAwM2VyZWdfbm90aWZpZXIgPSBtdDc5MjVfcmVnZF9ub3RpZmllcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zMDMtXHRkZXYtXHUwMDNlbXBoeS5zYmFuZF8yZy5zYmFuZC5odF9jYXAuY2FwIHw9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTMyOS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MzMwOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9yZWdpc3Rlcl9kZXZpY2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTYtI2luY2x1ZGUgXHUwMDNjbGludXgvdGltZWtlZXBpbmcuaFx1MDAzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NzojaW5jbHVkZSBcJiMzNDttdDc5MjUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtOC0jaW5jbHVkZSBcJiMzNDsuLi9kbWEuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTM6Ym9vbCBtdDc5MjVfbWFjX3d0YmxfdXBkYXRlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGludCBpZHgsIHUzMiBtYXNrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6Mjk6c3RhdGljIHZvaWQgbXQ3OTI1X21hY19zdGFfcG9sbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTY1LVx0XHRpZHggPSBtbGluay1cdTAwM2V3Y2lkLmlkeDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjY2Olx0XHRhZGRyID0gbXQ3OTI1X21hY193dGJsX2xtYWNfYWRkcihkZXYsIGlkeCwgTVRfV1RCTF9BQzBfQ1RUX09GRlNFVCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04NC1cdFx0aWYgKGNsZWFyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4NTpcdFx0XHRtdDc5MjVfbWFjX3d0YmxfdXBkYXRlKGRldiwgaWR4LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODYtXHRcdFx0XHRcdCAgICAgICBNVF9XVEJMX1VQREFURV9BRE1fQ09VTlRfQ0xFQVIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEzMDpcdFx0YWRkciA9IG10NzkyNV9tYWNfd3RibF9sbWFjX2FkZHIoZGV2LCBpZHgsIDYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTMxLVx0XHR2YWwgPSBtdDc2X3JyKGRldiwgYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzItXHRcdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBSQVRFX0lORk9fRkxBR1NfRUhUX01DUykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTMzOlx0XHRcdGFkZHIgPSBtdDc5MjVfbWFjX3d0YmxfbG1hY19hZGRyKGRldiwgaWR4LCA1KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzNC1cdFx0XHR2YWwgPSBtdDc2X3JyKGRldiwgYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ4LVx0XHQvKiBnZXQgc2lnbmFsIHN0cmVuZ3RoIG9mIHJlc3AgZnJhbWVzIChDVFMvQkEvQUNLKSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ5Olx0XHRhZGRyID0gbXQ3OTI1X21hY193dGJsX2xtYWNfYWRkcihkZXYsIGlkeCwgMzQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTUwLVx0XHR2YWwgPSBtdDc2X3JyKGRldiwgYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTY0OnZvaWQgbXQ3OTI1X21hY19zZXRfZml4ZWRfcmF0ZV90YWJsZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY1LVx0XHRcdFx0ICAgICB1OCB0YmxfaWR4LCB1MTYgcmF0ZV9pZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTgyLS8qIFRoZSBIVyBkb2VzIG5vdCB0cmFuc2xhdGUgdGhlIG1hYyBoZWFkZXIgdG8gODAyLjMgZm9yIG1lc2ggcG9pbnQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE4MzpzdGF0aWMgaW50IG10NzkyNV9yZXZlcnNlX2ZyYWcwX2hkcl90cmFucyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgaGRyX2dhcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE4NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MjYyPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjI2MzptdDc5MjVfbWFjX2ZpbGxfcnhfcmF0ZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMjY0LVx0XHRcdHN0cnVjdCBtdDc2X3J4X3N0YXR1cyAqc3RhdHVzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTM3Mj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzozNzM6bXQ3OTI1X21hY19maWxsX3J4KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0zNzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTU1Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjU1MzpcdFx0cmV0ID0gbXQ3OTI1X21hY19maWxsX3J4X3JhdGUoZGV2LCBzdGF0dXMsIHNiYW5kLCByeHYsIFx1MDAyNm1vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNTU0LVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTU2Ni1cdGlmIChoZHJfdHJhbnMgXHUwMDI2XHUwMDI2IGllZWU4MDIxMV9oYXNfbW9yZWZyYWdzKGZjKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NTY3Olx0XHRpZiAobXQ3OTI1X3JldmVyc2VfZnJhZzBfaGRyX3RyYW5zKHNrYiwgaGRyX2dhcCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy01NjgtXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NjQwPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo2NDE6bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjMoX19sZTMyICp0eHdpLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjQyLVx0XHRcdCAgIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9Njc1PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo2NzY6bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02NzctXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NzQ2PXZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjc0NzptdDc5MjVfbWFjX3dyaXRlX3R4d2koc3RydWN0IG10NzZfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTc0OC1cdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04MzktXHRpZiAoaXNfODAyMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg0MDpcdFx0bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjModHh3aSwgc2tiLCB3Y2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg0MS1cdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg0MjpcdFx0bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKGRldiwgdHh3aSwgc2tiLCBrZXkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg2Ni19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4Njc6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X21hY193cml0ZV90eHdpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg2OTpzdGF0aWMgdm9pZCBtdDc5MjVfdHhfY2hlY2tfYWdncihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODcwLVx0XHRcdFx0IHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9OTIzPXN0YXRpYyBib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo5MjQ6bXQ3OTI1X21hY19hZGRfdHhzX3NrYihzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtOTI1LVx0XHQgICAgICAgaW50IHBpZCwgX19sZTMyICp0eHNfZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xMTkyPXZvaWQgbXQ3OTI4X21hY19hZGRfdHhzX21zZyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMjI5OnZvaWQgbXQ3OTI1X21hY19hZGRfdHhzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjMwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTI2MzpcdG10NzkyNV9tYWNfYWRkX3R4c19za2IoZGV2LCB3Y2lkLCBwaWQsIHR4c19kYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyNjQtXHRpZiAoIXdjaWQtXHUwMDNlc3RhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMjczOnZvaWQgbXQ3OTI1X3R4d2lfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl90eHdpX2NhY2hlICp0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTI3NC1cdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjg3LVx0XHRpZiAobGlrZWx5KHQtXHUwMDNlc2tiLVx1MDAzZXByb3RvY29sICE9IGNwdV90b19iZTE2KEVUSF9QX1BBRSkpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTI4ODpcdFx0XHRtdDc5MjVfdHhfY2hlY2tfYWdncihzdGEsIHQtXHUwMDNlc2tiLCB3Y2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyODktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTI5OS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzAwOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV90eHdpX2ZyZWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTMwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTEzMDI9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEzMDM6bXQ3OTI1X21hY190eF9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzA0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTM3MDpcdFx0XHRtdDc5MjVfdHh3aV9mcmVlKGRldiwgdHh3aSwgc3RhLCB3Y2lkLCBcdTAwMjZmcmVlX2xpc3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTM3MS1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzc0Olx0bXQ3OTI1X21hY19zdGFfcG9sbChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTM3NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTM4Nzpib29sIG10NzkyNV9yeF9jaGVjayhzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzg4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDA2LVx0XHRcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0MDc6XHRcdG10NzkyNV9tYWNfdHhfZnJlZShkZXYsIGRhdGEsIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDA4LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQxMC1cdFx0Zm9yIChyeGQgJiM0Mzs9IDQ7IHJ4ZCAmIzQzOyAxMiBcdTAwM2M9IGVuZDsgcnhkICYjNDM7PSAxMilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0MTE6XHRcdFx0bXQ3OTI1X21hY19hZGRfdHhzKGRldiwgcnhkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MTItXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDE2LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0MTc6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3J4X2NoZWNrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDE5OnZvaWQgbXQ3OTI1X3F1ZXVlX3J4X3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MjAtXHRcdFx0IHN0cnVjdCBza19idWZmICpza2IsIHUzMiAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDQ2LVx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDQ3Olx0XHRtdDc5MjVfbWFjX3R4X2ZyZWUoZGV2LCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDQ4LVx0XHRuYXBpX2NvbnN1bWVfc2tiKHNrYiwgMSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1MC1cdGNhc2UgUEtUX1RZUEVfUlhfRVZFTlQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDUxOlx0XHRtdDc5MjVfbWN1X3J4X2V2ZW50KGRldiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NTItXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NTQtXHRcdGZvciAocnhkICYjNDM7PSAyOyByeGQgJiM0MzsgOCBcdTAwM2M9IGVuZDsgcnhkICYjNDM7PSA4KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ1NTpcdFx0XHRtdDc5MjVfbWFjX2FkZF90eHMoZGV2LCByeGQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1Ni1cdFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NTktXHRjYXNlIFBLVF9UWVBFX05PUk1BTDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0NjA6XHRcdGlmICghbXQ3OTI1X21hY19maWxsX3J4KGRldiwgc2tiKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ2MS1cdFx0XHRtdDc2X3J4KFx1MDAyNmRldi1cdTAwM2VtdDc2LCBxLCBza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NjktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ3MDpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfcXVldWVfcnhfc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNDcyPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDczOm10NzkyNV92aWZfY29ubmVjdF9pdGVyKHZvaWQgKnByaXYsIHU4ICptYWMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDc0LVx0XHRcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTUxNwoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDE4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNVDc5MjUgRHJpdmVyIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBtdDc5MjVgIGRyaXZlci4gUmlnaHQsIGl0JiMzOTtzIGdvdCBib3RoIGBtdDc5MjVlLm9gLCB0aGUgUENJZSB2ZXJzaW9uLCBhbmQgYG10NzkyNXUub2AsIHdoaWNoIGlzIFVTQi4gV2FpdCBhIG1pbnV0ZS4uLiAqeWVzKiwgYG10NzkyNXUteSA6PSB1c2Iub2AgY29uZmlybXMgdGhlcmUmIzM5O3MgYSBVU0IgZHJpdmVyIGZvciB0aGlzIE1UNzkyNSBjaGlwc2V0LiBFeGNlbGxlbnQhIFRoaXMgb3BlbnMgdXAgc29tZSBpbnRlcmVzdGluZyBmdXp6aW5nIHBvc3NpYmlsaXRpZXMuIFNpbmNlIGl0JiMzOTtzIFVTQiwgSSBjYW4gbGV2ZXJhZ2UgZHVtbXlfaGNkIGFuZCBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIOKAkyB0aGF0JiMzOTtzIGEga2V5IGFkdmFudGFnZS4KCk5vdywgbGV0JiMzOTtzIHNlZS4uLiB3aGF0JiMzOTtzIGEgZ29vZCB0YXJnZXQgZnVuY3Rpb24gdG8gZXhhbWluZSBmb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcz8gSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCBzdGFydCBieSBjaGVja2luZyBpZiBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgIGlzIHJlYWNoYWJsZS4gTGV0IG1lIHF1aWNrbHkgY29uZmlybSB3aGVyZSB0aGF0JiMzOTtzIGRlZmluZWQ7IHllcCwgaXQmIzM5O3MgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY2AuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHRyYWNlIHRoZSBmdW5jdGlvbiYjMzk7cyB1c2FnZSwgdW5kZXJzdGFuZCBob3cgaXQgZ2V0cyBjYWxsZWQgYW5kIHVuZGVyIHdoYXQgY2lyY3Vtc3RhbmNlcy4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaW50ZXJlc3Rpbmcgc3R1ZmYgdXN1YWxseSBsaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9jaGFuZ2VfdmlmX2xpbmtzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yMjA4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoyMjA5Om10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTIyMTAtXHRcdFx0dTE2IG9sZF9saW5rcywgdTE2IG5ld19saW5rcyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MjczMT1jb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBtdDc5MjVfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNzkwLVx0LmxpbmtfaW5mb19jaGFuZ2VkID0gbXQ3OTI1X2xpbmtfaW5mb19jaGFuZ2VkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjI3OTE6XHQuY2hhbmdlX3ZpZl9saW5rcyA9IG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI3OTItXHQuY2hhbmdlX3N0YV9saW5rcyA9IG10NzkyNV9jaGFuZ2Vfc3RhX2xpbmtzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMzc1CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVQ3OTI1IERyaXZlciYjMzk7cyBMaW5rIENoYW5nZSBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYG10NzkyNV9vcHNgIHN0cnVjdHVyZSBhbmQgSSBzZWUgdGhlIGAuY2hhbmdlX3ZpZl9saW5rc2AgZnVuY3Rpb24gYXNzaWduZWQuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBvcGVyYXRpbmcgd2l0aGluIHRoZSBtYWM4MDIxMSBmcmFtZXdvcmssIHdoaWNoIGlzIHN0YW5kYXJkIHByb2NlZHVyZS4gU2luY2Ugd2UgYXJlIHRhbGtpbmcgYWJvdXQgYSBVU0IgZHJpdmVyLCBpdCAqc2hvdWxkKiBiZSBhdHRhY2hhYmxlIHZpYSBVU0IgZW11bGF0aW9uLCBhIGNvbW1vbiBhcHByb2FjaCBmb3IgdGVzdGluZyB0aGVzZSBraW5kcyBvZiB0aGluZ3MuCgpCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBpcyB0aGUgTVQ3OTI1IFVTQiBkcml2ZXIgYWN0dWFsbHkgZW5hYmxlZCBpbiBzeXprYWxsZXImIzM5O3MgY29uZmlndXJhdGlvbj8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyIGRvd24gdGhpcyByYWJiaXQgaG9sZS4gTGV0IG1lIGdvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBNVDc5MjVVYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgYW5zd2VyIHdpbGwgYmUuIEdvdHRhIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgZXZlbiB0ZXN0aW5nIHRoZSByaWdodCBwYXRoIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDQ6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzkyNVUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZz03PWNvbmZpZyBNVDc5MjVFXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZy0xOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDg1OAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKldvcmtpbmcgd2l0aCBNVDc5MjVVIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsICpNVDc5MjVVKiBpcyB0aGUgY29uZmlndXJhdGlvbiB3ZSYjMzk7cmUgZ29pbmcgd2l0aCwgeWVwLiBCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBiZWZvcmUgd2UgZ28gYW55IGZ1cnRoZXIsIGxldCYjMzk7cyBqdXN0IGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mICpNVDc5MjVVKi4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB3ZSBoYXZlbiYjMzk7dCBvdmVybG9va2VkIGFueSBjcml0aWNhbCB1cHN0cmVhbSBvciBkb3duc3RyZWFtIGNvbXBvbmVudHMgdGhhdCByZWx5IG9uIG9yIGltcGFjdCB0aGlzIHBhcnRpY3VsYXIgc2V0dXAuIEl0JiMzOTtzIHRvbyBlYXN5IHRvIGdldCBjYXVnaHQgb3V0IGJ5IHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zIGxhdGVyIG9uLiBBIHF1aWNrIHJldmlldyBvZiB0aGUgZGVwZW5kZW5jaWVzIG5vdyBpcyBhbHdheXMgdGltZSB3ZWxsIHNwZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbiAgIDI6XHRjb25maWcgTVQ3OTI1X0NPTU1PTlxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBNVDc5MnhfTElCXG4gICA1Olx0XHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiAgIDY6XHRcbiAgIDc6XHRjb25maWcgTVQ3OTI1RVxuICAgODpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFwmIzM0O1xuICAgOTpcdFx0c2VsZWN0IE1UNzkyNV9DT01NT05cbiAgMTA6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMTE6XHRcdGRlcGVuZHMgb24gUENJXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgUENJZSBkZXZpY2VzLFxuICAxNDpcdFx0ICB3aGljaCBzdXBwb3J0IG9wZXJhdGlvbiBhdCA2R0h6LCA1R0h6LCBhbmQgMi40R0h6IElFRUUgODAyLjExYmVcbiAgMTU6XHRcdCAgMngyOjJTUyA0MDk2LVFBTSwgMTYwTUh6IGNoYW5uZWxzLlxuICAxNjpcdFxuICAxNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxuICAxODpcdFxuICAxOTpcdGNvbmZpZyBNVDc5MjVVXG4gIDIwOlx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiAgMjE6XHRcdHNlbGVjdCBNVDc5MnhfVVNCXG4gIDIyOlx0XHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxuICAyMzpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAyNDpcdFx0ZGVwZW5kcyBvbiBVU0JcbiAgMjU6XHRcdGhlbHBcbiAgMjY6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBVU0IgZGV2aWNlcyxcbiAgMjc6XHRcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXG4gIDI4Olx0XHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cbiAgMjk6XHRcbiAgMzA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDQ6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE1NTQKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiA3NTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgdGhlIGRlcGVuZGVuY2llcyBqdW1wIG91dDogYE1BQzgwMjExYCBhbmQgYFVTQmAuICBUaGF0IG1lYW5zIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGlzIGxpa2VseSBgTVQ3OTI1VWAuIFRoZSBjb3JlIGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVlbiBtb2RpZmllZCBpcyBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgLiAgTGV0JiMzOTtzIHJlLWV4YW1pbmUgdGhhdCBjb2RlIGJsb2NrLCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBhZGRlZCBsb2dpYyB0aGF0IGhhbmRsZXMgdGhlIGxlZ2FjeSBCU1MgcmVzdG9yZS4KCmBgYGMKQEAgLTIyOTQsNiAmIzQzOzIyOTQsMjEgQEAgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsCiAKIAltdmlmLSZndDt2YWxpZF9saW5rcyA9IG5ld19saW5rczsKIAomIzQzOwkvKiBUaGUgZmlybXdhcmUgd291bGQga2VlcCB0aGUgTUxEIEJTUyBhbmQgREVWIGVudHJ5OiB0aGUgcmVtb3ZhbAomIzQzOwkgKiBsb29wIHNraXBzIHRoZSBkZWZsaW5rIGFuZCB0aGUgaHdlaWdodDE2KCkgZmFsbGJhY2sgYWJvdmUgcmVhZHMKJiM0MzsJICogdGhlIHN0YWxlIHByZS11cGRhdGUgdmFsaWRfbGlua3MuIFJlc3RvcmUgdGhlIGxlZ2FjeSBCU1MuCiYjNDM7CSAqLwomIzQzOwlpZiAob2xkX2xpbmtzICZhbXA7JmFtcDsgIW5ld19saW5rcykgewomIzQzOwkJbXQ3OTJ4X21hY19saW5rX2Jzc19yZW1vdmUoZGV2LCAmYW1wO212aWYtJmd0O2Jzc19jb25mLAomIzQzOwkJCQkJICAgJmFtcDttdmlmLSZndDtzdGEuZGVmbGluayk7CiYjNDM7CQllcnIgPSBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZChkZXYsICZhbXA7dmlmLSZndDtic3NfY29uZiwKJiM0MzsJCQkJCSAgICAgICZhbXA7bXZpZi0mZ3Q7c3RhLmRlZmxpbmspOwomIzQzOwkJaWYgKGVyciAmbHQ7IDApIHsKJiM0MzsJCQltdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpOwomIzQzOwkJCXJldHVybiBlcnI7CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKIAltdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpOwogCiAJcmV0dXJuIDA7CmBgYAoKVGhpcyBpcyBjbGVhcmx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AuIE5vdywgYSBjcnVjaWFsIHF1ZXN0aW9uIGFyaXNlczogaXMgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBldmVuIHJlYWNoYWJsZT8gIEkga25vdyB0aGF0IGBtYWM4MDIxMWAgY2FsbHMgdGhpcyB3aGVuIHZpcnR1YWwgaW50ZXJmYWNlICh2aWYpIGxpbmtzIGNoYW5nZSwgd2hpY2ggaXMgdHlwaWNhbGx5IHRyaWdnZXJlZCB2aWEgbmV0bGluay4gQnV0IGRvZXMgZmlybXdhcmUgbmVlZCB0byBiZSBsb2FkZWQgZm9yIHRoaXMgY29kZSBwYXRoIHRvIGJlIHJlYWNoZWQ/IFdpdGggVVNCIGRyaXZlcnMgaW4gYG1hYzgwMjExYCwgZmlybXdhcmUgdXN1YWxseSAqaXMqIHJlcXVpcmVkIGZvciBwcm9wZXIgaW5pdGlhbGl6YXRpb24uIElmIGZpcm13YXJlIGlzbiYjMzk7dCBhdmFpbGFibGUsIHRoZSBkcml2ZXIgbWlnaHQgZmFpbCB0byBwcm9iZS4KCkhlcmUmIzM5O3Mgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZyBpbiB0aGUgY29udGV4dCBvZiBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLiAgU3l6a2FsbGVyIGNhbiBzb21ldGltZXMgYnlwYXNzIGZpcm13YXJlIHJlcXVpcmVtZW50cy4gSXQgY291bGQgbW9jayB0aGUgZmlybXdhcmUsIG9yIHRoZSBkcml2ZXIgbWlnaHQgbm90ICpzdHJpY3RseSogbmVlZCBpdCB0byByZWdpc3RlciB0aGUgYG1hYzgwMjExYCBkZXZpY2UuIFdlIG5lZWQgdG8gYXNjZXJ0YWluIGlmIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgaXMgcmVhY2hhYmxlIHdpdGhvdXQgZmlybXdhcmUsIG9yIHdoZXRoZXIgc3l6a2FsbGVyJiMzOTtzIHNldHVwIGFsbG93cyBpdC4KClN5emthbGxlciBnZW5lcmFsbHkgdXNlcyBgbWFjODAyMTFfaHdzaW1gLCBidXQgZm9yIFVTQiBkcml2ZXJzLCBpdCB1c2VzIGBkdW1teV9oY2RgIGFuZCBpbmplY3RzIGRlc2NyaXB0b3JzLiBJZiB0aGUgZHJpdmVyICpkb2VzKiBuZWVkIGZpcm13YXJlLCBzeXprYWxsZXIgaGFzIGEgZmFsbGJhY2sgbWVjaGFuaXNtIHRvIHN1cHBseSBkdW1teSBmaXJtd2FyZSB2aWEgdGhlIGZpcm13YXJlIGxvYWRlci4KCkxldCYjMzk7cyBhbHNvIGV2YWx1YXRlIGBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZGAgYW5kIGBtdDc5MnhfbWFjX2xpbmtfYnNzX3JlbW92ZWAgYXMgcG90ZW50aWFsIGZvY3VzIHN5bWJvbHMuIFdoaWxlIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgaXMgdGhlIGNlbnRyYWwgbW9kaWZpZWQgZnVuY3Rpb24sIHRob3NlIHJlbGF0ZWQgZnVuY3Rpb25zIGluIHRoZSBwYXRjaCBtaWdodCBiZSBpbnRlcmVzdGluZyB0b28uIENoZWNraW5nIGJhY2ssIGl0IGxvb2tzIGxpa2UgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBpcyBkZWNsYXJlZCBzdGF0aWMuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoZSBjb2RlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5MjVfY2hhbmdlX3ZpZl9saW5rcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MjIwOD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjIwOTptdDc5MjVfY2hhbmdlX3ZpZl9saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yMjEwLVx0XHRcdHUxNiBvbGRfbGlua3MsIHUxNiBuZXdfbGlua3MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTI3MzE9Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3OTI1X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjc5MC1cdC5saW5rX2luZm9fY2hhbmdlZCA9IG10NzkyNV9saW5rX2luZm9fY2hhbmdlZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoyNzkxOlx0LmNoYW5nZV92aWZfbGlua3MgPSBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNzkyLVx0LmNoYW5nZV9zdGFfbGlua3MgPSBtdDc5MjVfY2hhbmdlX3N0YV9saW5rcyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDQ6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM1NTYKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAxNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uc2lkZXJpbmcgdGhlIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGlzIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgZnVuY3Rpb24uIFRoZSBjb2RlIHNheXMgaXQmIzM5O3Mgc3RhdGljLCB3aGljaCB1c3VhbGx5IG1lYW5zIHRoZSBjb21waWxlciBtaWdodCBpbmxpbmUgaXQsIG1ha2luZyBpdHMgc3ltYm9sIGFkZHJlc3MgYW1iaWd1b3VzLiBIb3dldmVyLCBzaW5jZSBpdCYjMzk7cyBiZWluZyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIGlubGluaW5nIGlzIHVubGlrZWx5LiBTbywgdGhlIHN0YXRpYyBkZWNsYXJhdGlvbiBpcyBhIGJpdCByZWR1bmRhbnQgYnV0IGxpa2VseSBoYXJtbGVzcywgYWx0aG91Z2ggaXQmIzM5O3MgYmV0dGVyIHRvIGVuc3VyZSBpdCYjMzk7cyBwcm92aWRlZCBpZiBpdCBpcyAqbm90KiBpbmxpbmVkLgoKSGFuZyBvbiBhIHNlY29uZOKApiB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIGEgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5IHBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGlzIGlzIHdoZXJlIEkgaGF2ZSB0byBwYXVzZSBhbmQgY29uc2lkZXIgLSBpcyBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgIHRoZSAqZXhhY3QqIGZ1bmN0aW9uIHRoYXQgbmVlZHMgdG8gYmUgbW9kaWZpZWQ/IElmIHNvLCB3aGF0IGFyZSBteSBvcHRpb25zPyBJcyB0aGVyZSBhIG5vbi1zdGF0aWMgYWx0ZXJuYXRpdmUgSSBjYW4gdXNlIGhlcmU/IEkgbmVlZCB0byBleHBsb3JlIHdoYXQgdGhlIGFsdGVybmF0aXZlIG1ldGhvZHMgYXJlIGhlcmUuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayBgbXQ3OTI1X21hY19saW5rX2Jzc19hZGRgLiBNYXliZSB0aGF0IGZ1bmN0aW9uIGlzIHRoZSBwcmVmZXJyZWQgbWV0aG9kIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9tYWNfbGlua19ic3NfYWRkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0zNjY9c3RhdGljIGludCBtdDc5MjVfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTM3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzozNzg6c3RhdGljIGludCBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTM3OS1cdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmxpbmtfY29uZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9NDU1PW10NzkyNV9hZGRfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy00NjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6NDcwOlx0cmV0ID0gbXQ3OTI1X21hY19saW5rX2Jzc19hZGQoZGV2LCBcdTAwMjZ2aWYtXHUwMDNlYnNzX2NvbmYsIFx1MDAyNm12aWYtXHUwMDNlc3RhLmRlZmxpbmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTQ3MS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTIyMDk9bXQ3OTI1X2NoYW5nZV92aWZfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTIyODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjI4MzpcdFx0ZXJyID0gbXQ3OTI1X21hY19saW5rX2Jzc19hZGQoZGV2LCBsaW5rX2NvbmYsIG1saW5rKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yMjg0LVx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yMzAzLVx0XHRcdFx0XHQgICBcdTAwMjZtdmlmLVx1MDAzZXN0YS5kZWZsaW5rKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoyMzA0Olx0XHRlcnIgPSBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZChkZXYsIFx1MDAyNnZpZi1cdTAwM2Vic3NfY29uZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yMzA1LVx0XHRcdFx0XHQgICAgICBcdTAwMjZtdmlmLVx1MDAzZXN0YS5kZWZsaW5rKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDQ6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ3MjgKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgZmFtaWxpYXIgd2l0aCBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBkcml2ZXIgZGV2ZWxvcG1lbnQ6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogU3RhdGljIENvbnRleHQgYW5kIEZ1bmN0aW9uIFVzYWdlKioKCkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIG9ic2VydmF0aW9uIHBvaW50cyBvdXQgYSBrZXkgYXNwZWN0OiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHN0YXRpYyBlbGVtZW50cyBpbiB0aGlzIHBhcnRpY3VsYXIgc2NlbmFyaW8uIE15IGltbWVkaWF0ZSBmb2xsb3ctdXAgcXVlc3Rpb24gaXMsIGFyZSB3ZSAqZXhjbHVzaXZlbHkqIGRlYWxpbmcgd2l0aCBzdGF0aWMgZnVuY3Rpb25zLCBvciBhcmUgdGhlcmUgYW55IG5vbi1zdGF0aWMgYWx0ZXJuYXRpdmVzIHRvIGNvbnNpZGVyPyBUaGlzIGlzIGNyaXRpY2FsIGluIHVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIG9mIHRoZSBwcm9ibGVtLgoKVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgYG10NzkyNV9vcHNgIHN0cnVjdHVyZS4gTXkgcHJpbWFyeSBmb2N1cyBpcyB0byBkZXRlcm1pbmUgaG93IGl0JiMzOTtzIGJlaW5nICp1dGlsaXplZCouIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGtub3cgaWYgaXQmIzM5O3MgZXhwb3J0ZWQsIGFuZCB0aGVyZWZvcmUgcG9zc2libHkgYWNjZXNzaWJsZSBvdXRzaWRlIG9mIGl0cyBpbnRlbmRlZCBzY29wZSwgb3IgdXNlZCBpbiBgaW5pdC5jYC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBpbml0aWFsaXphdGlvbiBhbmQgYWNjZXNzIG1ldGhvZHMgb2YgdGhlIGNvZGUuIFRoaXMgd2lsbCBoZWxwIG1lIG5hcnJvdyBkb3duIHBvdGVudGlhbCBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNV9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTI3MjI9c3RhdGljIHZvaWQgbXQ3OTI1X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjczMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoyNzMxOmNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzkyNV9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjczMi1cdC50eCA9IG10NzkyeF90eCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjgwNC19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjI4MDU6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjgwNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaD0yNjM9c3RhdGljIGlubGluZSB1OCBtdDc5MjdfYmFuZF9pZHgoZW51bSBubDgwMjExX2JhbmQgYmFuZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0yNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaDoyNzU6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzkyNV9vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0yNzYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9NTI4PXN0YXRpYyBpbnQgbXQ3OTI1X3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy02MDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYzo2MDE6XHRvcHMgPSBtdDc5MnhfZ2V0X21hYzgwMjExX29wcyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgXHUwMDI2bXQ3OTI1X29wcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTYwMi1cdFx0XHRcdCAgICAgICh2b2lkICopaWQtXHUwMDNlZHJpdmVyX2RhdGEsIFx1MDAyNmZlYXR1cmVzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxOTE6XHRvcHMgPSBtdDc5MnhfZ2V0X21hYzgwMjExX29wcyhcdTAwMjZ1c2JfaW50Zi1cdTAwM2VkZXYsIFx1MDAyNm10NzkyNV9vcHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xOTItXHRcdFx0XHQgICAgICAodm9pZCAqKWlkLVx1MDAzZWRyaXZlcl9pbmZvLCBcdTAwMjZmZWF0dXJlcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODU3CgkJCQkJCQlvdXRwdXQ6IDE0MgoJCQkJCQkJdGhvdWdodHM6IDcyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgIGlzIHRoZSBmb2N1cyBoZXJlLiBJdCYjMzk7cyB1c2VkIGluIGJvdGggYHVzYi5jYCBhbmQgYHBjaS5jYCwgd2hpY2ggdGVsbHMgbWUgaXQmIzM5O3MgZXhwb3NlZCB0aHJvdWdoIGBtdDc5MjVfb3BzYCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuIFNpbmNlIGl0JiMzOTtzIGEgcG9pbnRlciwgbm8gaW5saW5pbmcsIHdoaWNoIGlzIGdvb2QgZm9yIGZ1enppbmcuIFdlIGNhbiB0YXJnZXQgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBkaXJlY3RseS4KClRoZSBuZXh0IHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBmdW5jdGlvbiBiZSByZWFjaGVkIHdpdGhvdXQgcmVhbCBoYXJkd2FyZT8gWWVzLCB0aHJvdWdoIHRoZSBgbWFjODAyMTFgIGRyaXZlciBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgd2hlbiB0aGUgZGV2aWNlIGlzIHByb2JlZC4gRm9yIHRoZSBVU0IgY2FzZSwgd2UgY2FuIHVzZSBgZHVtbXlfaGNkYCB0byBwcm9iZSBgbXQ3OTI1dWAuIE5vdywgbGV0JiMzOTtzIHNlZSBpZiBgTVQ3OTI1VWAgaXMgZW5hYmxlZCBpbiBzeXprYWxsZXIuIFRoZSBhbnN3ZXIgaXMgeWVzLCBzbyBJIG5lZWQgdG8gcmV0dXJuIGBFbmFibGVDb25maWdzOiBbJiMzNDtNVDc5MjVVJiMzNDtdYC4KCkkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMuIENoZWNraW5nIGBNVDc5MjVVYCBkZXBlbmRlbmNpZXMsIGl0IGxvb2tzIGxpa2UgaXQgZGVwZW5kcyBvbiBgTUFDODAyMTFgIGFuZCBgVVNCYC4gRGlnZ2luZyBmdXJ0aGVyLCBgTVQ3OTI1X0NPTU1PTmAgaXMgc2VsZWN0ZWQgYnkgYE1UNzkyNVVgLCBhbmQgYE1UNzkyeF9VU0JgIGlzIGFsc28gc2VsZWN0ZWQgYnkgYE1UNzkyNVVgLCBzbyBgTVQ3OTI1VWAgaXMgaW5kZWVkIHN1ZmZpY2llbnQuCgpJJiMzOTt2ZSBkb3VibGUtY2hlY2tlZCwgYW5kIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgaXMgdGhlIG9ubHkgZnVuY3Rpb24gbW9kaWZpZWQuIFRoZSBwYXRjaCByZXN0b3JlcyB0aGUgbGVnYWN5IEJTUy4gVGhpcyBwYXRjaCBmaXhlcyBhIGJ1ZyB3aXRoIGZpcm13YXJlIGFuZCBpdCBzZWVtcyB0byBiZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLiAqKldvcnRoRnV6emluZz10cnVlKiogaXQgaXMuCgpMZXQmIzM5O3Mgc3VtbWFyaXplIHRoZSBuZWNlc3NhcnkgY29uZmlncyBhZ2FpbjogYE1UNzkyNVVgLCBgTUFDODAyMTFgLCBhbmQgYFVTQmAuCgpJJiMzOTtsbCBhbHNvIGNoZWNrIGlmIGBNVDc5MjVVYCByZXF1aXJlcyBmaXJtd2FyZS4gSWYgaXQgZG9lcywgc3l6a2FsbGVyJiMzOTtzIGZhbGxiYWNrIGZpcm13YXJlIGxvYWRpbmcgbWlnaHQgaGFuZGxlIGl0LCBvciBwcm9iaW5nIG1pZ2h0IGZhaWwuIEJ1dCB3ZSB3YW50IHRvIGZ1enogdGhpcyBjb2RlIGluIGFueSBjYXNlLiBMb29raW5nIGF0IHRoZSBvdGhlciBkcml2ZXIgdmFyaWFudHMsIGBNVDc5MjVFYCBpcyBQQ0llLCB3aGljaCBJIGtub3cgaXMgbW9yZSBjaGFsbGVuZ2luZyB0byBmdXp6IHJlbGlhYmx5IGluIFFFTVUgY29tcGFyZWQgdG8gVVNCLCBldmVuIHdpdGggc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIuIFVTQiBpcyBkZWZpbml0ZWx5IHRoZSBiZXR0ZXIgcGF0aC4KCkxldCYjMzk7cyByZS1leGFtaW5lIHRoZSBjb2RlIGluIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2A6CgpgYGBjCglpZiAob2xkX2xpbmtzICZhbXA7JmFtcDsgIW5ld19saW5rcykgewoJCW10NzkyeF9tYWNfbGlua19ic3NfcmVtb3ZlKGRldiwgJmFtcDttdmlmLSZndDtic3NfY29uZiwKCQkJCQkgICAmYW1wO212aWYtJmd0O3N0YS5kZWZsaW5rKTsKCQllcnIgPSBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZChkZXYsICZhbXA7dmlmLSZndDtic3NfY29uZiwKCQkJCQkgICAgICAmYW1wO212aWYtJmd0O3N0YS5kZWZsaW5rKTsKCQlpZiAoZXJyICZsdDsgMCkgewoJCQltdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpOwoJCQlyZXR1cm4gZXJyOwoJCX0KCX0KYGBgCgpZZXAsIHRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgYG1hYzgwMjExYCBkcml2ZXIuCgpTbyB0aGUgKipmb2N1cyBzeW1ib2wgaXMgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCoqLCBhbmQgdGhlIHJlcXVpcmVkIGNvbmZpZ3MgYXJlIGBNVDc5MjVVYC4gVGltZSB0byBzZXQgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1X2NoYW5nZV92aWZfbGlua3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBpbiB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB0byByZXN0b3JlIHRoZSBsZWdhY3kgQlNTIHdoZW4gbGlua3MgYXJlIHJlbW92ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjODAyMTEgZHJpdmVyIG9wZXJhdGlvbnMuIFRoZSBkcml2ZXIgaGFzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKGR1bW15X2hjZCkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVVJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1X2NoYW5nZV92aWZfbGlua3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBpbiB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB0byByZXN0b3JlIHRoZSBsZWdhY3kgQlNTIHdoZW4gbGlua3MgYXJlIHJlbW92ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjODAyMTEgZHJpdmVyIG9wZXJhdGlvbnMuIFRoZSBkcml2ZXIgaGFzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKGR1bW15X2hjZCkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNDo0OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgY2hhbmdpbmcgVklGIGxpbmtzIGluIHRoZSBtdDc5MjUgZHJpdmVyIGJ5IGFkZGluZyBhIGNvbmRpdGlvbiB0byByZW1vdmUgYW5kIHJlLWFkZCBhIEJTUyBsaW5rIHdoZW4gdHJhbnNpdGlvbmluZyBmcm9tIGhhdmluZyB2YWxpZCBsaW5rcyB0byBubyB2YWxpZCBsaW5rcy4gVGhpcyBpcyBhIHN0YXRlIG1hY2hpbmUgYW5kIGZpcm13YXJlIHN5bmNocm9uaXphdGlvbiBmaXguIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZC4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgaW52b2x2ZSB1c2UtYWZ0ZXItZnJlZSwgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgb3IgbG9naWMgZXJyb3JzLCB3aGljaCBhcmUgd2VsbC1jb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTA4ZWRmOWIxZWVmMzQwYTljNTUwOGIyODA0OTI5NDk1OTQyMDlkZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDI2IDA0OjQ4OjE4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jCmluZGV4IDg0YjU1ZjAwOGIzZDMuLmM3Y2VkMmVmZDRkN2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMKQEAgLTIyOTQsNiAmIzQzOzIyOTQsMjEgQEAgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsCiAKIAltdmlmLSZndDt2YWxpZF9saW5rcyA9IG5ld19saW5rczsKIAomIzQzOwkvKiBUaGUgZmlybXdhcmUgd291bGQga2VlcCB0aGUgTUxEIEJTUyBhbmQgREVWIGVudHJ5OiB0aGUgcmVtb3ZhbAomIzQzOwkgKiBsb29wIHNraXBzIHRoZSBkZWZsaW5rIGFuZCB0aGUgaHdlaWdodDE2KCkgZmFsbGJhY2sgYWJvdmUgcmVhZHMKJiM0MzsJICogdGhlIHN0YWxlIHByZS11cGRhdGUgdmFsaWRfbGlua3MuIFJlc3RvcmUgdGhlIGxlZ2FjeSBCU1MuCiYjNDM7CSAqLwomIzQzOwlpZiAob2xkX2xpbmtzICZhbXA7JmFtcDsgIW5ld19saW5rcykgewomIzQzOwkJbXQ3OTJ4X21hY19saW5rX2Jzc19yZW1vdmUoZGV2LCAmYW1wO212aWYtJmd0O2Jzc19jb25mLAomIzQzOwkJCQkJICAgJmFtcDttdmlmLSZndDtzdGEuZGVmbGluayk7CiYjNDM7CQllcnIgPSBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZChkZXYsICZhbXA7dmlmLSZndDtic3NfY29uZiwKJiM0MzsJCQkJCSAgICAgICZhbXA7bXZpZi0mZ3Q7c3RhLmRlZmxpbmspOwomIzQzOwkJaWYgKGVyciAmbHQ7IDApIHsKJiM0MzsJCQltdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpOwomIzQzOwkJCXJldHVybiBlcnI7CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKIAltdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpOwogCiAJcmV0dXJuIDA7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNDo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjE2CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMjU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1UNzkyNSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2Agd2l0aGluIHRoZSBNVDc5MjUgZHJpdmVyLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZGluZyBhIGNvbmRpdGlvbmFsIGNoZWNrOiBgaWYgKG9sZF9saW5rcyAmYW1wOyZhbXA7ICFuZXdfbGlua3MpYC4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBNQUMgbGluayBCU1MgcmVtb3ZhbCBhbmQgYWRkaXRpb24uIEl0JiMzOTtzIGNhbGxpbmcgYG10NzkyeF9tYWNfbGlua19ic3NfcmVtb3ZlYCBhbmQgYG10NzkyNV9tYWNfbGlua19ic3NfYWRkYCBiYXNlZCBvbiB0aGlzIGNoZWNrLiBNeSBpbml0aWFsIGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgdW5pbml0aWFsaXplZCBtZW1vcnkuIExldCYjMzk7cyBzZWUuLi4gYG9sZF9saW5rc2AgYW5kIGBuZXdfbGlua3NgIHNlZW0gdG8gYmUgaW50ZWdlcnMsIGxpa2VseSBgdTE2YCBiaXRtYXNrcy4gYG12aWYtJmd0O2Jzc19jb25mYCBhbmQgYHZpZi0mZ3Q7YnNzX2NvbmZgIGFyZSBwb2ludGVycywgYXMgaXMgYG12aWYtJmd0O3N0YS5kZWZsaW5rYC4KCkFscmlnaHQsIEkgZG9uJiMzOTt0IHNlZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9uIGhlcmUsIGFuZCBkZWZpbml0ZWx5IG5vIGRpcmVjdCBgY29weV90b191c2VyYCBjYWxscyB0aGF0IHdvdWxkIGJlIGFuIG9idmlvdXMgc291cmNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlLiBJdCBkb2VzbiYjMzk7dCBsb29rIGxpa2UgYW55IHVuaW5pdGlhbGl6ZWQgZGF0YSBpcyBiZWluZyByZWFkIGVpdGhlci4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0aGF0IHRoaXMgaXMgcHVyZWx5IGEgbG9naWNhbCBjaGFuZ2UsIHByb2JhYmx5IGZpeGluZyBhIHN0YXRlIG1hY2hpbmUgb3Igc3luY2hyb25pemF0aW9uIGlzc3VlIHdpdGggdGhlIGZpcm13YXJlLCB3aGljaCBpcyBhIGZhaXJseSBjb21tb24gYXJlYSBmb3IgcGF0Y2hlcyBsaWtlIHRoaXMuCgpHaXZlbiB0aGlzLCBJIGRvbiYjMzk7dCBpbW1lZGlhdGVseSBzZWUgYW55IG9idmlvdXMgS01TQU4gaXNzdWVzLiBLQVNBTiB3b3VsZCBiZSB0aGUgbW9yZSBsaWtlbHkgdG9vbCB0byBjYXRjaCBhbnkgVXNlLUFmdGVyLUZyZWUgb3IgT3V0LW9mLUJvdW5kcyBpc3N1ZXMgKmlmKiB0aGVyZSB3ZXJlIGFueS4gVGhvdWdoLCBpdCBuZXZlciBodXJ0cyB0byBkb3VibGUtY2hlY2sgdGhlc2UgdGhpbmdzLiBMZXQgbWUganVzdCB0YWtlIGFub3RoZXIgcXVpY2sgbG9vayBhdCB0aGUgY29kZSB0byBiZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcgb2J2aW91cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDQ6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMjgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzIyODA6XHRcdFx0cmN1X2Fzc2lnbl9wb2ludGVyKG12aWYtXHUwMDNlbGlua19jb25mW2xpbmtfaWRdLCBtY29uZik7XG4yMjgxOlx0XHRcdHJjdV9hc3NpZ25fcG9pbnRlcihtdmlmLVx1MDAzZXN0YS5saW5rW2xpbmtfaWRdLCBtbGluayk7XG4yMjgyOlx0XG4yMjgzOlx0XHRcdGVyciA9IG10NzkyNV9tYWNfbGlua19ic3NfYWRkKGRldiwgbGlua19jb25mLCBtbGluayk7XG4yMjg0Olx0XHRcdGlmIChlcnIgXHUwMDNjIDApXG4yMjg1Olx0XHRcdFx0Z290byBmcmVlO1xuMjI4NjpcdFxuMjI4NzpcdFx0XHRpZiAobWNvbmYgIT0gXHUwMDI2bXZpZi1cdTAwM2Vic3NfY29uZikge1xuMjI4ODpcdFx0XHRcdGVyciA9IG10NzkyNV9zZXRfbWxvX3JvYyhwaHksIFx1MDAyNm12aWYtXHUwMDNlYnNzX2NvbmYsXG4yMjg5Olx0XHRcdFx0XHRcdFx0IHZpZi1cdTAwM2VhY3RpdmVfbGlua3MpO1xuMjI5MDpcdFx0XHRcdGlmIChlcnIgXHUwMDNjIDApXG4yMjkxOlx0XHRcdFx0XHRnb3RvIGZyZWU7XG4yMjkyOlx0XHRcdH1cbjIyOTM6XHRcdH1cbjIyOTQ6XHRcbjIyOTU6XHRcdG12aWYtXHUwMDNldmFsaWRfbGlua3MgPSBuZXdfbGlua3M7XG4yMjk2Olx0XG4yMjk3Olx0XHQvKiBUaGUgZmlybXdhcmUgd291bGQga2VlcCB0aGUgTUxEIEJTUyBhbmQgREVWIGVudHJ5OiB0aGUgcmVtb3ZhbFxuMjI5ODpcdFx0ICogbG9vcCBza2lwcyB0aGUgZGVmbGluayBhbmQgdGhlIGh3ZWlnaHQxNigpIGZhbGxiYWNrIGFib3ZlIHJlYWRzXG4yMjk5Olx0XHQgKiB0aGUgc3RhbGUgcHJlLXVwZGF0ZSB2YWxpZF9saW5rcy4gUmVzdG9yZSB0aGUgbGVnYWN5IEJTUy5cbjIzMDA6XHRcdCAqL1xuMjMwMTpcdFx0aWYgKG9sZF9saW5rcyBcdTAwMjZcdTAwMjYgIW5ld19saW5rcykge1xuMjMwMjpcdFx0XHRtdDc5MnhfbWFjX2xpbmtfYnNzX3JlbW92ZShkZXYsIFx1MDAyNm12aWYtXHUwMDNlYnNzX2NvbmYsXG4yMzAzOlx0XHRcdFx0XHRcdCAgIFx1MDAyNm12aWYtXHUwMDNlc3RhLmRlZmxpbmspO1xuMjMwNDpcdFx0XHRlcnIgPSBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZChkZXYsIFx1MDAyNnZpZi1cdTAwM2Vic3NfY29uZixcbjIzMDU6XHRcdFx0XHRcdFx0ICAgICAgXHUwMDI2bXZpZi1cdTAwM2VzdGEuZGVmbGluayk7XG4yMzA2Olx0XHRcdGlmIChlcnIgXHUwMDNjIDApIHtcbjIzMDc6XHRcdFx0XHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuMjMwODpcdFx0XHRcdHJldHVybiBlcnI7XG4yMzA5Olx0XHRcdH1cbjIzMTA6XHRcdH1cbjIzMTE6XHRcbjIzMTI6XHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4yMzEzOlx0XG4yMzE0Olx0XHRyZXR1cm4gMDtcbjIzMTU6XHRcbjIzMTY6XHRmcmVlOlxuMjMxNzpcdFx0Zm9yX2VhY2hfc2V0X2JpdChsaW5rX2lkLCBcdTAwMjZhZGQsIElFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LUykge1xuMjMxODpcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIobXZpZi1cdTAwM2VsaW5rX2NvbmZbbGlua19pZF0sIE5VTEwpO1xuMjMxOTpcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIobXZpZi1cdTAwM2VzdGEubGlua1tsaW5rX2lkXSwgTlVMTCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA0OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NzIKCQkJCQkJCW91dHB1dDogMTY1CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqUGF0Y2ggUmV2aWV3IGFuZCBTdGF0ZSBNYWNoaW5lIExvZ2ljKioKCkFscmlnaHQsIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgaXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkLiBUaGUgbWFpbiBmdW5jdGlvbiBpcyB0byBoYW5kbGUgdGhlIHJlbW92YWwgYW5kIGFkZGl0aW9uIG9mIEJTUyBsaW5rcyBiYXNlZCBvbiBjaGFuZ2VzIGluIHRoZSBsaW5rIHN0YXRlLCBzcGVjaWZpY2FsbHkgd2hlbiB0aGUgYG9sZF9saW5rc2AgYXJlIHByZXNlbnQgYnV0IHRoZSBgbmV3X2xpbmtzYCBhcmUgbm90LiBUaGlzIGlzIGRlZmluaXRlbHkgYSBzdGF0ZSBtYWNoaW5lIGNvcnJlY3Rpb24sIHdoaWNoIGlzIHdoYXQgSSBzdXNwZWN0ZWQgZ2l2ZW4gdGhlIGRlc2NyaXB0aW9uLiBOb3RoaW5nIGluIHRoaXMgY29kZSB0b3VjaGVzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB3aGljaCBpcyBhIHJlbGllZiDigJMgYWx3YXlzIGEgZ29vZCB0aGluZyB0byB2ZXJpZnkuIEdpdmVuIHRoYXQsIEkmIzM5O20gY29uZmlkZW50IHRoZXJlJiMzOTtzIG5vIG5lZWQgdG8gZW5hYmxlIGFueSBleHRyYSBkZWJ1Z2dpbmcgb3IgaGFyZGVuaW5nLCBzbyBJJiMzOTttIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgLiBUaGlzIGxvb2tzIGNsZWFuLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGNoYW5naW5nIFZJRiBsaW5rcyBpbiB0aGUgbXQ3OTI1IGRyaXZlciBieSBhZGRpbmcgYSBjb25kaXRpb24gdG8gcmVtb3ZlIGFuZCByZS1hZGQgYSBCU1MgbGluayB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBoYXZpbmcgdmFsaWQgbGlua3MgdG8gbm8gdmFsaWQgbGlua3MuIFRoaXMgaXMgYSBzdGF0ZSBtYWNoaW5lIGFuZCBmaXJtd2FyZSBzeW5jaHJvbml6YXRpb24gZml4LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGludm9sdmUgdXNlLWFmdGVyLWZyZWUsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIG9yIGxvZ2ljIGVycm9ycywgd2hpY2ggYXJlIHdlbGwtY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGNoYW5naW5nIFZJRiBsaW5rcyBpbiB0aGUgbXQ3OTI1IGRyaXZlciBieSBhZGRpbmcgYSBjb25kaXRpb24gdG8gcmVtb3ZlIGFuZCByZS1hZGQgYSBCU1MgbGluayB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBoYXZpbmcgdmFsaWQgbGlua3MgdG8gbm8gdmFsaWQgbGlua3MuIFRoaXMgaXMgYSBzdGF0ZSBtYWNoaW5lIGFuZCBmaXJtd2FyZSBzeW5jaHJvbml6YXRpb24gZml4LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGludm9sdmUgdXNlLWFmdGVyLWZyZWUsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIG9yIGxvZ2ljIGVycm9ycywgd2hpY2ggYXJlIHdlbGwtY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ4OjE5LjU5NTk1OTA0N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNjA2OTc5MDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBjaGFuZ2luZyBWSUYgbGlua3MgaW4gdGhlIG10NzkyNSBkcml2ZXIgYnkgYWRkaW5nIGEgY29uZGl0aW9uIHRvIHJlbW92ZSBhbmQgcmUtYWRkIGEgQlNTIGxpbmsgd2hlbiB0cmFuc2l0aW9uaW5nIGZyb20gaGF2aW5nIHZhbGlkIGxpbmtzIHRvIG5vIHZhbGlkIGxpbmtzLiBUaGlzIGlzIGEgc3RhdGUgbWFjaGluZSBhbmQgZmlybXdhcmUgc3luY2hyb25pemF0aW9uIGZpeC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSByZWFkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBpbnZvbHZlIHVzZS1hZnRlci1mcmVlLCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCBvciBsb2dpYyBlcnJvcnMsIHdoaWNoIGFyZSB3ZWxsLWNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIG5lY2Vzc2l0YXRlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgaW4gdGhlIE1lZGlhVGVrIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIgdG8gcmVzdG9yZSB0aGUgbGVnYWN5IEJTUyB3aGVuIGxpbmtzIGFyZSByZW1vdmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1hYzgwMjExIGRyaXZlciBvcGVyYXRpb25zLiBUaGUgZHJpdmVyIGhhcyBhIFVTQiB2YXJpYW50IChNVDc5MjVVKSB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uIChkdW1teV9oY2QpIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDQ6NDg6MTkuNTk1OTYzMDE3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTg1NjcwNTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOTA4ZWRmOWIxZWVmMzQwYTljNTUwOGIyODA0OTI5NDk1OTQyMDlkZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAyNiAwNDo0ODoxOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcXG5pbmRleCA4NGI1NWYwMDhiM2QzLi5jN2NlZDJlZmQ0ZDdjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uY1xcbkBAIC0yMjk0LDYgKzIyOTQsMjEgQEAgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuIFxcbiBcXHRtdmlmLVxcdTAwM2V2YWxpZF9saW5rcyA9IG5ld19saW5rcztcXG4gXFxuK1xcdC8qIFRoZSBmaXJtd2FyZSB3b3VsZCBrZWVwIHRoZSBNTEQgQlNTIGFuZCBERVYgZW50cnk6IHRoZSByZW1vdmFsXFxuK1xcdCAqIGxvb3Agc2tpcHMgdGhlIGRlZmxpbmsgYW5kIHRoZSBod2VpZ2h0MTYoKSBmYWxsYmFjayBhYm92ZSByZWFkc1xcbitcXHQgKiB0aGUgc3RhbGUgcHJlLXVwZGF0ZSB2YWxpZF9saW5rcy4gUmVzdG9yZSB0aGUgbGVnYWN5IEJTUy5cXG4rXFx0ICovXFxuK1xcdGlmIChvbGRfbGlua3MgXFx1MDAyNlxcdTAwMjYgIW5ld19saW5rcykge1xcbitcXHRcXHRtdDc5MnhfbWFjX2xpbmtfYnNzX3JlbW92ZShkZXYsIFxcdTAwMjZtdmlmLVxcdTAwM2Vic3NfY29uZixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNm12aWYtXFx1MDAzZXN0YS5kZWZsaW5rKTtcXG4rXFx0XFx0ZXJyID0gbXQ3OTI1X21hY19saW5rX2Jzc19hZGQoZGV2LCBcXHUwMDI2dmlmLVxcdTAwM2Vic3NfY29uZixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNm12aWYtXFx1MDAzZXN0YS5kZWZsaW5rKTtcXG4rXFx0XFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4rXFx0XFx0XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4rXFx0XFx0XFx0cmV0dXJuIGVycjtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbiBcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ4OjIwLjc4MjIwNzA4N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ4NzEzODAzMjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgaW4gdGhlIE1lZGlhVGVrIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIgdG8gcmVzdG9yZSB0aGUgbGVnYWN5IEJTUyB3aGVuIGxpbmtzIGFyZSByZW1vdmVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG1hYzgwMjExIGRyaXZlciBvcGVyYXRpb25zLiBUaGUgZHJpdmVyIGhhcyBhIFVTQiB2YXJpYW50IChNVDc5MjVVKSB3aGljaCBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uIChkdW1teV9oY2QpIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTA4ZWRmOWIxZWVmMzQwYTljNTUwOGIyODA0OTI5NDk1OTQyMDlkZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDA0OjQ4OjE4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXG5pbmRleCA4NGI1NWYwMDhiM2QzLi5jN2NlZDJlZmQ0ZDdjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcbkBAIC0yMjk0LDYgKzIyOTQsMjEgQEAgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXG4gXHRtdmlmLVx1MDAzZXZhbGlkX2xpbmtzID0gbmV3X2xpbmtzO1xuIFxuK1x0LyogVGhlIGZpcm13YXJlIHdvdWxkIGtlZXAgdGhlIE1MRCBCU1MgYW5kIERFViBlbnRyeTogdGhlIHJlbW92YWxcbitcdCAqIGxvb3Agc2tpcHMgdGhlIGRlZmxpbmsgYW5kIHRoZSBod2VpZ2h0MTYoKSBmYWxsYmFjayBhYm92ZSByZWFkc1xuK1x0ICogdGhlIHN0YWxlIHByZS11cGRhdGUgdmFsaWRfbGlua3MuIFJlc3RvcmUgdGhlIGxlZ2FjeSBCU1MuXG4rXHQgKi9cbitcdGlmIChvbGRfbGlua3MgXHUwMDI2XHUwMDI2ICFuZXdfbGlua3MpIHtcbitcdFx0bXQ3OTJ4X21hY19saW5rX2Jzc19yZW1vdmUoZGV2LCBcdTAwMjZtdmlmLVx1MDAzZWJzc19jb25mLFxuK1x0XHRcdFx0XHQgICBcdTAwMjZtdmlmLVx1MDAzZXN0YS5kZWZsaW5rKTtcbitcdFx0ZXJyID0gbXQ3OTI1X21hY19saW5rX2Jzc19hZGQoZGV2LCBcdTAwMjZ2aWYtXHUwMDNlYnNzX2NvbmYsXG4rXHRcdFx0XHRcdCAgICAgIFx1MDAyNm12aWYtXHUwMDNlc3RhLmRlZmxpbmspO1xuK1x0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4rXHRcdFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbitcdFx0XHRyZXR1cm4gZXJyO1xuK1x0XHR9XG4rXHR9XG4rXG4gXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuIFxuIFx0cmV0dXJuIDA7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNDo0ODoyMC43ODIyMDgyNjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjI3MzU1NDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggZm9yIHRoZSBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgIGZ1bmN0aW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jYC4gVGhpcyBwbGFjZXMgaXQgZmlybWx5IHdpdGhpbiB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciwgd2hpY2ggSSdtIGZhbWlsaWFyIHdpdGguIEJ1dCBhIHRob3VnaHQgaW1tZWRpYXRlbHkgcG9wcyB1cDogY2FuIEkgKnRlc3QqIHRoaXMgaW4gUUVNVT8gVGhlc2UgTVQ3NiBkcml2ZXJzIGFyZSAqdHlwaWNhbGx5KiB0YXJnZXRlZCBhdCBwaHlzaWNhbCBoYXJkd2FyZSDigJMgUENJZSBvciBVU0IgZGV2aWNlcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBldmVuIGEgVVNCIHZhcmlhbnQgb2YgdGhlIE1UNzkyNS4gVGltZSB0byBmaXJlIHVwIGBncmVwYCBhbmQgc2VhcmNoIHdpdGhpbiBLY29uZmlnLCBvciBhdCBsZWFzdCBhIHF1aWNrIHNjYW4gdGhyb3VnaCB0aGUgZHJpdmVyIGZpbGVzLCB0byBzZWUgaWYgdGhlcmUncyBhbnkgaW5kaWNhdGlvbiBvZiBhIFVTQiBzdXBwb3J0IHBhdGguIFdpdGhvdXQgdGhhdCwgdGhpcyBwYXRjaCBpcyBnb2luZyB0byBiZSBzaWduaWZpY2FudGx5IG1vcmUgY3VtYmVyc29tZSB0byBldmFsdWF0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIxOSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ4OjI1LjAwOTU2NzQyNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDMzODUyMDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDA5NyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTUwPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWc6NTE6c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9NYWtlZmlsZT01MT1vYmotJChDT05GSUdfTVQ3OTk2RSkgKz0gbXQ3OTk2L1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvTWFrZWZpbGU6NTI6b2JqLSQoQ09ORklHX01UNzkyNV9DT01NT04pICs9IG10NzkyNS9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaD0xODA9c3RhdGljIGlubGluZSBib29sIGlzX2Nvbm5hYzMoc3RydWN0IG10NzZfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMTg0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWMuaDoxODU6c3RhdGljIGlubGluZSBib29sIGlzX210NzkyNShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjLmgtMTg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmM9NTQ9aW50IG10NzZfY29ubmFjX21jdV9pbml0X2Rvd25sb2FkKHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgYWRkciwgdTMyIGxlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtNjktXFx0ICAgIChpc19jb25uYWMyKGRldikgXFx1MDAyNlxcdTAwMjYgYWRkciA9PSAweDkwMDAwMCkgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZfY29ubmFjX21jdS5jOjcwOlxcdCAgICAoKGlzX210NzkyNShkZXYpIHx8IGlzX210NzkyNyhkZXYpKSBcXHUwMDI2XFx1MDAyNiAoYWRkciA9PSAweDkwMDAwMCB8fCBhZGRyID09IDB4ZTAwMDI4MDApKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3Nl9jb25uYWNfbWN1LmMtNzEtXFx0ICAgIChpc19tdDc5MjgoZGV2KSBcXHUwMDI2XFx1MDAyNiAoYWRkciA9PSAweDkwMDAwMCB8fCBhZGRyID09IDB4ZTAwMDIwMDApKSB8fFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGUtMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19NVDc5MjVfQ09NTU9OKSArPSBtdDc5MjUtY29tbW9uLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19NVDc5MjVFKSArPSBtdDc5MjVlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19NVDc5MjVVKSArPSBtdDc5MjV1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZS02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjc6bXQ3OTI1LWNvbW1vbi15IDo9IG1hYy5vIG1jdS5vIHJlZ2QubyBtYWluLm8gaW5pdC5vIGRlYnVnZnMubyBuYW4ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjg6bXQ3OTI1LWNvbW1vbi0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSArPSB0ZXN0bW9kZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGU6OTptdDc5MjVlLXkgOj0gcGNpLm8gcGNpX21hYy5vIHBjaV9tY3Uub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlOjEwOm10NzkyNXUteSA6PSB1c2Iub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjQ6I2luY2x1ZGUgXFxcIm10NzkyNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy01LSNpbmNsdWRlIFxcXCJtY3UuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz03PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6ODptdDc5MjVfcmVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy05LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMy1cXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNDpcXHRtdDc5MjVfbWN1X3JlZ3ZhbChkZXYsIGRldi1cXHUwMDNlbXQ3Ni5kZWJ1Z2ZzX3JlZywgXFx1MDAyNnJlZ3ZhbCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1LVxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMTptdDc5MjVfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3LVxcdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OlxcdHJldCA9IG10NzkyNV9tY3VfcmVndmFsKGRldiwgZGV2LVxcdTAwM2VtdDc2LmRlYnVnZnNfcmVnLCBcXHUwMDI2cmVndmFsLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI5LVxcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjM2OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3OTI1X3JlZ19nZXQsIG10NzkyNV9yZWdfc2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0zNy1cXHRcXHRcXHQgXFxcIjB4JTA4bGx4XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Mzg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozOTptdDc5MjVfZndfZGVidWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy00NS1cXHRkZXYtXFx1MDAzZWZ3X2RlYnVnID0gKHU4KXZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NDY6XFx0bXQ3OTI1X21jdV9md19sb2dfMl9ob3N0KGRldiwgZGV2LVxcdTAwM2Vmd19kZWJ1Zyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTUzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NTQ6bXQ3OTI1X2Z3X2RlYnVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo2MzpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19md19kZWJ1ZywgbXQ3OTI1X2Z3X2RlYnVnX2dldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6NjQ6XFx0XFx0XFx0IG10NzkyNV9md19kZWJ1Z19zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtNjUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9Njg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Njk6bXQ3OTI1X3NlcV9wdXRzX2FycmF5KHN0cnVjdCBzZXFfZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqc3RyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy03MC1cXHRcXHQgICAgICBzOCB2YWxbXVsyXSwgaW50IGxlbiwgdTggYmFuZF9pZHgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjgzOiNkZWZpbmUgbXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KHByZWZpeCwgcmF0ZSwgaWR4KVxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtODQtKHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjg1OlxcdG10NzkyNV9zZXFfcHV0c19hcnJheShzLCAjcHJlZml4IFxcXCIgKHRtYWMpXFxcIixcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTg2LVxcdFxcdFxcdCAgICAgIHR4cHdyLVxcdTAwM2VyYXRlLFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz05MT1zdGF0aWMgaW5saW5lIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6OTI6bXQ3OTI1X2VodF90eHB3cihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBtdDc5MjVfdHhwd3IgKnR4cHdyLCB1OCBiYW5kX2lkeClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTk3LVxcdFxcdCAgIFxcXCJtY3MxMlxcXCIsIFxcXCJtY3MxM1xcXCIsIFxcXCJtY3MxNFxcXCIsIFxcXCJtY3MxNVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzo5ODpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjYsIGVodDI2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjk5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ1MiwgZWh0NTIsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTAwOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQxMDYsIGVodDEwNiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDE6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDI0MiwgZWh0MjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwMjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUNDg0LCBlaHQ0ODQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMDQ6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NiwgZWh0OTk2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDIsIGVodDk5NngyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDQsIGVodDk5Nng0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwNzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfNTIsIGVodDI2XzUyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEwODpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUMjZfMTA2LCBlaHQyNl8xMDYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTA5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShFSFQ0ODRfMjQyLCBlaHQ0ODRfMjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2XzQ4NCwgZWh0OTk2XzQ4NCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTE6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5Nl80ODRfMjQyLCBlaHQ5OTZfNDg0XzI0MiwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTI6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEVIVDk5NngyXzQ4NCwgZWh0OTk2eDJfNDg0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExMzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDMsIGVodDk5NngzLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjExNDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoRUhUOTk2eDNfNDg0LCBlaHQ5OTZ4M180ODQsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTE1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0xMTc9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxMTg6bXQ3OTI1X3R4cHdyKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTE5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTIwLVxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cXHUwMDNlcHJpdmF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjEyMTpcXHRzdHJ1Y3QgbXQ3OTI1X3R4cHdyICp0eHB3ciA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEyMi1cXHR1OCBiYW5kX2lkeCA9IGRldi1cXHUwMDNlbXBoeS5iYW5kX2lkeDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xMzAtXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTMxOlxcdHJldCA9IG10NzkyNV9nZXRfdHhwd3JfaW5mbyhkZXYsIGJhbmRfaWR4LCB0eHB3cik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzMi1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTEzOC1cXHRcXHQgICBcXFwiIFxcXCIsIFxcXCIxbVxcXCIsIFxcXCIybVxcXCIsIFxcXCI1bVxcXCIsIFxcXCIxMW1cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTM5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShDQ0ssIGNjaywgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQzLVxcdFxcdCAgIFxcXCI0OG1cXFwiLCBcXFwiNTRtXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE0NDpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoT0ZETSwgb2ZkbSwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTQ4LVxcdFxcdCAgIFxcXCJtY3M2XFxcIiwgXFxcIm1jczdcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTQ5OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIVDIwLCBodDIwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNTMtXFx0XFx0ICAgXFxcIm1jczZcXFwiLCBcXFwibWNzN1xcXCIsIFxcXCJtY3MzMlxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNTQ6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhUNDAsIGh0NDAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTU1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE1OC1cXHRcXHQgICBcXFwibWNzNlxcXCIsIFxcXCJtY3M3XFxcIiwgXFxcIm1jczhcXFwiLCBcXFwibWNzOVxcXCIsIFxcXCJtY3MxMFxcXCIsIFxcXCJtY3MxMVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNTk6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDIwLCB2aHQyMCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjA6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KFZIVDQwLCB2aHQ0MCwgYmFuZF9pZHgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0xNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2MjpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUODAsIHZodDgwLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2MzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoVkhUMTYwLCB2aHQxNjAsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoxNjU6XFx0bXQ3OTI1X3ByaW50X3R4cHdyX2VudHJ5KEhFMjYsIGhlMjYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTY2OlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTUyLCBoZTUyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2NzpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUxMDYsIGhlMTA2LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2ODpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEUyNDIsIGhlMjQyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE2OTpcXHRtdDc5MjVfcHJpbnRfdHhwd3JfZW50cnkoSEU0ODQsIGhlNDg0LCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTcxOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NiwgaGU5OTYsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTcyOlxcdG10NzkyNV9wcmludF90eHB3cl9lbnRyeShIRTk5NngyLCBoZTk5NngyLCBiYW5kX2lkeCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MTc0OlxcdG10NzkyNV9laHRfdHhwd3IocywgdHhwd3IsIGJhbmRfaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMTc1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTE4MT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjE4MjptdDc5MjVfcG1fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTE4My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjA1LVxcdHBtLVxcdTAwM2VlbmFibGVfdXNlciA9IHZhbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjA2OlxcdG10NzkyNV9zZXRfcnVudGltZV9wbShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yMDctXFx0bXQ3Nl9jb25uYWNfcG93ZXJfc2F2ZV9zY2hlZChcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LCBwbSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjE0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjE1Om10NzkyNV9wbV9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIxNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMjQ6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG0sIG10NzkyNV9wbV9nZXQsIG10NzkyNV9wbV9zZXQsIFxcXCIlbGxkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYz0yMjY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyMjc6bXQ3OTI1X2RlZXBfc2xlZXBfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTIyOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjQyLVxcdHBtLVxcdTAwM2Vkc19lbmFibGUgPSBlbmFibGUgXFx1MDAyNlxcdTAwMjYgIW1vbml0b3I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI0MzpcXHRtdDc5MjVfbWN1X3NldF9kZWVwX3NsZWVwKGRldiwgcG0tXFx1MDAzZWRzX2VuYWJsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI0NC1vdXQ6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjUwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjUxOm10NzkyNV9kZWVwX3NsZWVwX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI2MDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19kcywgbXQ3OTI1X2RlZXBfc2xlZXBfZ2V0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNjE6XFx0XFx0XFx0IG10NzkyNV9kZWVwX3NsZWVwX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI2Mz1ERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbV9pZGxlX3RpbWVvdXQsIG10NzkyeF9wbV9pZGxlX3RpbWVvdXRfZ2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6MjY2OnN0YXRpYyBpbnQgbXQ3OTI1X2NoaXBfcmVzZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNzgtXFx0XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjc5OlxcdFxcdHJldCA9IG10NzkyNV9tY3VfY2hpcF9jb25maWcoZGV2LCBcXFwiYXNzZXJ0XFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI4MC1cXHRcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjg3OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3Jlc2V0LCBOVUxMLCBtdDc5MjVfY2hpcF9yZXNldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jOjI4OTppbnQgbXQ3OTI1X2luaXRfZGVidWdmcyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yOTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMwNC1cXHRkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LVxcdTAwM2VtdDc2LmRldiwgXFxcInR4cG93ZXJfc2t1XFxcIiwgZGlyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzozMDU6XFx0XFx0XFx0XFx0ICAgIG10NzkyNV90eHB3cik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTMwNi1cXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFxcXCJ0eF9zdGF0c1xcXCIsIDA0MDAsIGRpciwgZGV2LCBcXHUwMDI2bXQ3OTJ4X3R4X3N0YXRzX2ZvcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Zpcm13YXJlLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjk6I2luY2x1ZGUgXFxcIm10NzkyNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMC0jaW5jbHVkZSBcXFwicmVnZC5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxNDpzdGF0aWMgc3NpemVfdCBtdDc5MjVfdGhlcm1hbF90ZW1wX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNS1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNC1cXHRcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShtZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjU6XFx0XFx0dGVtcGVyYXR1cmUgPSBtdDc5MjVfbWN1X2dldF90ZW1wZXJhdHVyZShwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNi1cXHRcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShtZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zNi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjM3OnN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFJfUk8odGVtcDFfaW5wdXQsIG10NzkyNV90aGVybWFsX3RlbXAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Mzk6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKm10NzkyNV9od21vbl9hdHRyc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy00MC1cXHRcXHUwMDI2c2Vuc29yX2Rldl9hdHRyX3RlbXAxX2lucHV0LmRldl9hdHRyLmF0dHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNDItfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NDM6QVRUUklCVVRFX0dST1VQUyhtdDc5MjVfaHdtb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy00NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NDU6c3RhdGljIGludCBtdDc5MjVfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy01My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NTQ6XFx0bmFtZSA9IGRldm1fa2FzcHJpbnRmKFxcdTAwMjZ3aXBoeS1cXHUwMDNlZGV2LCBHRlBfS0VSTkVMLCBcXFwibXQ3OTI1XyVzXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNTUtXFx0XFx0XFx0ICAgICAgd2lwaHlfbmFtZSh3aXBoeSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTU5LVxcdGh3bW9uID0gZGV2bV9od21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9ncm91cHMoXFx1MDAyNndpcGh5LVxcdTAwM2VkZXYsIG5hbWUsIHBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NjA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIG10NzkyNV9od21vbl9ncm91cHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy02MS1cXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGh3bW9uKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy02My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6NjQ6c3RhdGljIHZvaWQgbXQ3OTI1X21hY19pbml0X2Jhc2ljX3JhdGVzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy03My1cXHRcXHQgICAgICAgRklFTERfUFJFUChNVF9UWF9SQVRFX0lEWCwgcmF0ZSBcXHUwMDI2IEdFTk1BU0soNywgMCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo3NDpcXHRcXHRtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKGRldiwgaWR4LCByYXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtNzUtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo3ODppbnQgbXQ3OTI1X21hY19pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTc5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy04Ni1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTVQ3OTJ4X1dUQkxfU0laRTsgaSsrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzo4NzpcXHRcXHRtdDc5MjVfbWFjX3d0YmxfdXBkYXRlKGRldiwgaSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtODgtXFx0XFx0XFx0XFx0ICAgICAgIE1UX1dUQkxfVVBEQVRFX0FETV9DT1VOVF9DTEVBUik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtOTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjkyOlxcdG10NzkyNV9tYWNfaW5pdF9iYXNpY19yYXRlcyhkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy05My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy05Ny19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjk4OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tYWNfaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMDA6c3RhdGljIGludCBfX210NzkyNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEwMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMTI6XFx0cmV0ID0gbXQ3OTI1X21jdV9zZXRfZWVwcm9tKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTExMy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTExNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MTE2OlxcdHJldCA9IG10NzkyNV9tYWNfaW5pdChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMTctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMjAtXFx0aWYgKGlzX210NzkyNyhcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxMjE6XFx0XFx0cmV0ID0gbXQ3OTI1X21jdV9zZXRfZGJkYyhcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LCB0cnVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTIyLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjEzMzpzdGF0aWMgaW50IG10NzkyNV9pbml0X2hhcmR3YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTEzNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxNDU6XFx0XFx0cmV0ID0gX19tdDc5MjVfaW5pdF9oYXJkd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xNDYtXFx0XFx0aWYgKCFyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoxNjM6c3RhdGljIGludCBtdDc5MjVfaW5pdF9uYW5fY2FwKHN0cnVjdCBtdDc2X2RldiAqbWRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE5MDpzdGF0aWMgdm9pZCBtdDc5MjVfaW5pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMTkxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xOTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjE5NjpcXHRyZXQgPSBtdDc5MjVfaW5pdF9oYXJkd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0xOTctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDAtXFx0bXQ3Nl9zZXRfc3RyZWFtX2NhcHMoXFx1MDAyNmRldi1cXHUwMDNlbXBoeSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIwMTpcXHRtdDc5MjVfc2V0X3N0cmVhbV9oZV9laHRfY2FwcyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMDItXFx0bXQ3OTJ4X2NvbmZpZ19tYWNfYWRkcl9saXN0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjA0OlxcdHJldCA9IG10NzkyNV9pbml0X21sb19jYXBzKFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIwNS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMTA6XFx0ZGV2LVxcdTAwM2VtdDc2LmluaXRfd2lwaHkgPSBtdDc5MjVfaW5pdF9uYW5fY2FwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyMTk6XFx0cmV0ID0gbXQ3OTI1X2luaXRfZGVidWdmcyhkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMjAtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTIyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjI1OlxcdHJldCA9IG10NzkyNV90aGVybWFsX2luaXQoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjI2LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjIzMTpcXHRyZXQgPSBtdDc5MjVfbWN1X3NldF90aGVybWFsX3Byb3RlY3QoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjMyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI0MDpcXHRtdDc5MjVfbWN1X3NldF9kZWVwX3NsZWVwKGRldiwgZGV2LVxcdTAwM2VwbS5kc19lbmFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNDEtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI0MzppbnQgbXQ3OTI1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNDQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI1My1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VwbS5wc193b3JrLCBtdDc5MnhfcG1fcG93ZXJfc2F2ZV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjU0OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrLCBtdDc5MjVfbWxvX3BtX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNTUtXFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBtLndha2Vfd29yaywgbXQ3OTJ4X3BtX3dha2Vfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjYxLVxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZW1waHkubWFjX3dvcmssIG10NzkyeF9tYWNfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI2MjpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHkuc2Nhbl93b3JrLCBtdDc5MjVfc2Nhbl93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjYzOlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZWNvcmVkdW1wLndvcmssIG10NzkyNV9jb3JlZHVtcF93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjY0LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNjU6XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZWlwdjZfbnNfd29yaywgbXQ3OTI1X3NldF9pcHY2X25zX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNjYtXFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VpcHY2X25zX2xpc3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI3MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjcxOlxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VyZXNldF93b3JrLCBtdDc5MjVfbWFjX3Jlc2V0X3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzoyNzI6XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZWluaXRfd29yaywgbXQ3OTI1X2luaXRfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6Mjc0OlxcdElOSVRfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VwaHkucm9jX3dvcmssIG10NzkyNV9yb2Nfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI3NS1cXHR0aW1lcl9zZXR1cChcXHUwMDI2ZGV2LVxcdTAwM2VwaHkucm9jX3RpbWVyLCBtdDc5Mnhfcm9jX3RpbWVyLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjMwMjpcXHRody1cXHUwMDNld2lwaHktXFx1MDAzZXJlZ19ub3RpZmllciA9IG10NzkyNV9yZWdkX25vdGlmaWVyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zMDMtXFx0ZGV2LVxcdTAwM2VtcGh5LnNiYW5kXzJnLnNiYW5kLmh0X2NhcC5jYXAgfD1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0zMjktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYzozMzA6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3JlZ2lzdGVyX2RldmljZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02LSNpbmNsdWRlIFxcdTAwM2NsaW51eC90aW1la2VlcGluZy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjc6I2luY2x1ZGUgXFxcIm10NzkyNS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTgtI2luY2x1ZGUgXFxcIi4uL2RtYS5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTM6Ym9vbCBtdDc5MjVfbWFjX3d0YmxfdXBkYXRlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIGludCBpZHgsIHUzMiBtYXNrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjI5OnN0YXRpYyB2b2lkIG10NzkyNV9tYWNfc3RhX3BvbGwoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0zMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy02NS1cXHRcXHRpZHggPSBtbGluay1cXHUwMDNld2NpZC5pZHg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6NjY6XFx0XFx0YWRkciA9IG10NzkyNV9tYWNfd3RibF9sbWFjX2FkZHIoZGV2LCBpZHgsIE1UX1dUQkxfQUMwX0NUVF9PRkZTRVQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTY3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQtXFx0XFx0aWYgKGNsZWFyKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODU6XFx0XFx0XFx0bXQ3OTI1X21hY193dGJsX3VwZGF0ZShkZXYsIGlkeCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04Ni1cXHRcXHRcXHRcXHRcXHQgICAgICAgTVRfV1RCTF9VUERBVEVfQURNX0NPVU5UX0NMRUFSKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzA6XFx0XFx0YWRkciA9IG10NzkyNV9tYWNfd3RibF9sbWFjX2FkZHIoZGV2LCBpZHgsIDYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzMS1cXHRcXHR2YWwgPSBtdDc2X3JyKGRldiwgYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTMyLVxcdFxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IFJBVEVfSU5GT19GTEFHU19FSFRfTUNTKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTMzOlxcdFxcdFxcdGFkZHIgPSBtdDc5MjVfbWFjX3d0YmxfbG1hY19hZGRyKGRldiwgaWR4LCA1KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzQtXFx0XFx0XFx0dmFsID0gbXQ3Nl9ycihkZXYsIGFkZHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ4LVxcdFxcdC8qIGdldCBzaWduYWwgc3RyZW5ndGggb2YgcmVzcCBmcmFtZXMgKENUUy9CQS9BQ0spICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ5OlxcdFxcdGFkZHIgPSBtdDc5MjVfbWFjX3d0YmxfbG1hY19hZGRyKGRldiwgaWR4LCAzNCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTUwLVxcdFxcdHZhbCA9IG10NzZfcnIoZGV2LCBhZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjQ6dm9pZCBtdDc5MjVfbWFjX3NldF9maXhlZF9yYXRlX3RhYmxlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTY1LVxcdFxcdFxcdFxcdCAgICAgdTggdGJsX2lkeCwgdTE2IHJhdGVfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTgyLS8qIFRoZSBIVyBkb2VzIG5vdCB0cmFuc2xhdGUgdGhlIG1hYyBoZWFkZXIgdG8gODAyLjMgZm9yIG1lc2ggcG9pbnQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxODM6c3RhdGljIGludCBtdDc5MjVfcmV2ZXJzZV9mcmFnMF9oZHJfdHJhbnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IGhkcl9nYXApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTg0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTI2Mj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MjYzOm10NzkyNV9tYWNfZmlsbF9yeF9yYXRlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMjY0LVxcdFxcdFxcdHN0cnVjdCBtdDc2X3J4X3N0YXR1cyAqc3RhdHVzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MzcyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzozNzM6bXQ3OTI1X21hY19maWxsX3J4KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMzc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTU1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo1NTM6XFx0XFx0cmV0ID0gbXQ3OTI1X21hY19maWxsX3J4X3JhdGUoZGV2LCBzdGF0dXMsIHNiYW5kLCByeHYsIFxcdTAwMjZtb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy01NTQtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy01NjYtXFx0aWYgKGhkcl90cmFucyBcXHUwMDI2XFx1MDAyNiBpZWVlODAyMTFfaGFzX21vcmVmcmFncyhmYykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo1Njc6XFx0XFx0aWYgKG10NzkyNV9yZXZlcnNlX2ZyYWcwX2hkcl90cmFucyhza2IsIGhkcl9nYXApKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTU2OC1cXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTY0MD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjY0MTptdDc5MjVfbWFjX3dyaXRlX3R4d2lfODAyMyhfX2xlMzIgKnR4d2ksIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjQyLVxcdFxcdFxcdCAgIHN0cnVjdCBtdDc2X3djaWQgKndjaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz02NzU9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo2NzY6bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNjc3LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9NzQ2PXZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo3NDc6bXQ3OTI1X21hY193cml0ZV90eHdpKHN0cnVjdCBtdDc2X2RldiAqZGV2LCBfX2xlMzIgKnR4d2ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtNzQ4LVxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy04MzktXFx0aWYgKGlzXzgwMjMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODQwOlxcdFxcdG10NzkyNV9tYWNfd3JpdGVfdHh3aV84MDIzKHR4d2ksIHNrYiwgd2NpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODQxLVxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzo4NDI6XFx0XFx0bXQ3OTI1X21hY193cml0ZV90eHdpXzgwMjExKGRldiwgdHh3aSwgc2tiLCBrZXkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg0My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg2Ni19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6ODY3OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9tYWNfd3JpdGVfdHh3aSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtODY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjg2OTpzdGF0aWMgdm9pZCBtdDc5MjVfdHhfY2hlY2tfYWdncihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTg3MC1cXHRcXHRcXHRcXHQgc3RydWN0IG10NzZfd2NpZCAqd2NpZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jPTkyMz1zdGF0aWMgYm9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjkyNDptdDc5MjVfbWFjX2FkZF90eHNfc2tiKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBtdDc2X3djaWQgKndjaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtOTI1LVxcdFxcdCAgICAgICBpbnQgcGlkLCBfX2xlMzIgKnR4c19kYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MTE5Mj12b2lkIG10NzkyOF9tYWNfYWRkX3R4c19tc2coc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTIyOTp2b2lkIG10NzkyNV9tYWNfYWRkX3R4cyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyMzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTI2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMjYzOlxcdG10NzkyNV9tYWNfYWRkX3R4c19za2IoZGV2LCB3Y2lkLCBwaWQsIHR4c19kYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjY0LVxcdGlmICghd2NpZC1cXHUwMDNlc3RhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTI3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMjczOnZvaWQgbXQ3OTI1X3R4d2lfZnJlZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl90eHdpX2NhY2hlICp0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyNzQtXFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyODctXFx0XFx0aWYgKGxpa2VseSh0LVxcdTAwM2Vza2ItXFx1MDAzZXByb3RvY29sICE9IGNwdV90b19iZTE2KEVUSF9QX1BBRSkpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEyODg6XFx0XFx0XFx0bXQ3OTI1X3R4X2NoZWNrX2FnZ3Ioc3RhLCB0LVxcdTAwM2Vza2IsIHdjaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEyODktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMjk5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxMzAwOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV90eHdpX2ZyZWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MTMwMj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEzMDM6bXQ3OTI1X21hY190eF9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTMwNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEzNzA6XFx0XFx0XFx0bXQ3OTI1X3R4d2lfZnJlZShkZXYsIHR4d2ksIHN0YSwgd2NpZCwgXFx1MDAyNmZyZWVfbGlzdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTM3MS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEzNzQ6XFx0bXQ3OTI1X21hY19zdGFfcG9sbChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzNzUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xMzg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjEzODc6Ym9vbCBtdDc5MjVfcnhfY2hlY2soc3RydWN0IG10NzZfZGV2ICptZGV2LCB2b2lkICpkYXRhLCBpbnQgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTEzODgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQwNi1cXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQwNzpcXHRcXHRtdDc5MjVfbWFjX3R4X2ZyZWUoZGV2LCBkYXRhLCBsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0MDgtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQxMC1cXHRcXHRmb3IgKHJ4ZCArPSA0OyByeGQgKyAxMiBcXHUwMDNjPSBlbmQ7IHJ4ZCArPSAxMilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDExOlxcdFxcdFxcdG10NzkyNV9tYWNfYWRkX3R4cyhkZXYsIHJ4ZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQxMi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDE2LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDE3OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyNV9yeF9jaGVjayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDE5OnZvaWQgbXQ3OTI1X3F1ZXVlX3J4X3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDIwLVxcdFxcdFxcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgKmluZm8pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDQ2LVxcdFxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNDQ3OlxcdFxcdG10NzkyNV9tYWNfdHhfZnJlZShkZXYsIHNrYi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NDgtXFx0XFx0bmFwaV9jb25zdW1lX3NrYihza2IsIDEpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1MC1cXHRjYXNlIFBLVF9UWVBFX1JYX0VWRU5UOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0NTE6XFx0XFx0bXQ3OTI1X21jdV9yeF9ldmVudChkZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ1Mi1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NTQtXFx0XFx0Zm9yIChyeGQgKz0gMjsgcnhkICsgOCBcXHUwMDNjPSBlbmQ7IHJ4ZCArPSA4KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0NTU6XFx0XFx0XFx0bXQ3OTI1X21hY19hZGRfdHhzKGRldiwgcnhkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDU2LVxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NTktXFx0Y2FzZSBQS1RfVFlQRV9OT1JNQUw6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ2MDpcXHRcXHRpZiAoIW10NzkyNV9tYWNfZmlsbF9yeChkZXYsIHNrYikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYy0xNDYxLVxcdFxcdFxcdG10NzZfcngoXFx1MDAyNmRldi1cXHUwMDNlbXQ3NiwgcSwgc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NjktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE0NzA6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTI1X3F1ZXVlX3J4X3NrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTQ3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNDcyPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTQ3MzptdDc5MjVfdmlmX2Nvbm5lY3RfaXRlcih2b2lkICpwcml2LCB1OCAqbWFjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE0NzQtXFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDQ6NDg6MjUuNDEyOTU2NjkxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkxNjM0MDk2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNVDc5MjUgRHJpdmVyIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBgbXQ3OTI1YCBkcml2ZXIuIFJpZ2h0LCBpdCdzIGdvdCBib3RoIGBtdDc5MjVlLm9gLCB0aGUgUENJZSB2ZXJzaW9uLCBhbmQgYG10NzkyNXUub2AsIHdoaWNoIGlzIFVTQi4gV2FpdCBhIG1pbnV0ZS4uLiAqeWVzKiwgYG10NzkyNXUteSA6PSB1c2Iub2AgY29uZmlybXMgdGhlcmUncyBhIFVTQiBkcml2ZXIgZm9yIHRoaXMgTVQ3OTI1IGNoaXBzZXQuIEV4Y2VsbGVudCEgVGhpcyBvcGVucyB1cCBzb21lIGludGVyZXN0aW5nIGZ1enppbmcgcG9zc2liaWxpdGllcy4gU2luY2UgaXQncyBVU0IsIEkgY2FuIGxldmVyYWdlIGR1bW15X2hjZCBhbmQgc3l6a2FsbGVyJ3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIOKAkyB0aGF0J3MgYSBrZXkgYWR2YW50YWdlLlxuXG5Ob3csIGxldCdzIHNlZS4uLiB3aGF0J3MgYSBnb29kIHRhcmdldCBmdW5jdGlvbiB0byBleGFtaW5lIGZvciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzPyBJJ20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgYnkgY2hlY2tpbmcgaWYgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBpcyByZWFjaGFibGUuIExldCBtZSBxdWlja2x5IGNvbmZpcm0gd2hlcmUgdGhhdCdzIGRlZmluZWQ7IHllcCwgaXQncyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jYC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gdHJhY2UgdGhlIGZ1bmN0aW9uJ3MgdXNhZ2UsIHVuZGVyc3RhbmQgaG93IGl0IGdldHMgY2FsbGVkIGFuZCB1bmRlciB3aGF0IGNpcmN1bXN0YW5jZXMuIFRoYXQncyB3aGVyZSB0aGUgaW50ZXJlc3Rpbmcgc3R1ZmYgdXN1YWxseSBsaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTUxNywiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNDo0ODozMC4zMjkyOTk0OThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2NjExNjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X2NoYW5nZV92aWZfbGlua3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yMjA4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjIwOTptdDc5MjVfY2hhbmdlX3ZpZl9saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjIxMC1cXHRcXHRcXHR1MTYgb2xkX2xpbmtzLCB1MTYgbmV3X2xpbmtzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTI3MzE9Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3OTI1X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNzkwLVxcdC5saW5rX2luZm9fY2hhbmdlZCA9IG10NzkyNV9saW5rX2luZm9fY2hhbmdlZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6Mjc5MTpcXHQuY2hhbmdlX3ZpZl9saW5rcyA9IG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNzkyLVxcdC5jaGFuZ2Vfc3RhX2xpbmtzID0gbXQ3OTI1X2NoYW5nZV9zdGFfbGlua3MsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ4OjMwLjM3Mjk2ODEyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQzOTg0NDE4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1UNzkyNSBEcml2ZXIncyBMaW5rIENoYW5nZSBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGBtdDc5MjVfb3BzYCBzdHJ1Y3R1cmUgYW5kIEkgc2VlIHRoZSBgLmNoYW5nZV92aWZfbGlua3NgIGZ1bmN0aW9uIGFzc2lnbmVkLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgb3BlcmF0aW5nIHdpdGhpbiB0aGUgbWFjODAyMTEgZnJhbWV3b3JrLCB3aGljaCBpcyBzdGFuZGFyZCBwcm9jZWR1cmUuIFNpbmNlIHdlIGFyZSB0YWxraW5nIGFib3V0IGEgVVNCIGRyaXZlciwgaXQgKnNob3VsZCogYmUgYXR0YWNoYWJsZSB2aWEgVVNCIGVtdWxhdGlvbiwgYSBjb21tb24gYXBwcm9hY2ggZm9yIHRlc3RpbmcgdGhlc2Uga2luZHMgb2YgdGhpbmdzLlxuXG5CdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBpcyB0aGUgTVQ3OTI1IFVTQiBkcml2ZXIgYWN0dWFsbHkgZW5hYmxlZCBpbiBzeXprYWxsZXIncyBjb25maWd1cmF0aW9uPyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIgZG93biB0aGlzIHJhYmJpdCBob2xlLiBMZXQgbWUgZ28gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgYE1UNzkyNVVgLiBUaGF0J3Mgd2hlcmUgdGhlIGFuc3dlciB3aWxsIGJlLiBHb3R0YSBtYWtlIHN1cmUgd2UncmUgZXZlbiB0ZXN0aW5nIHRoZSByaWdodCBwYXRoIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzc1LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ4OjM0LjgxMjgxNDk0N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzQ2MjQzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVQ3OTI1VVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZz03PWNvbmZpZyBNVDc5MjVFXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L0tjb25maWc6MTk6Y29uZmlnIE1UNzkyNVVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjVVIChVU0IpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ4OjM0Ljg1NjI3OTE1OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMTkzMTQ0NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKldvcmtpbmcgd2l0aCBNVDc5MjVVIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgKk1UNzkyNVUqIGlzIHRoZSBjb25maWd1cmF0aW9uIHdlJ3JlIGdvaW5nIHdpdGgsIHllcC4gQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gYmVmb3JlIHdlIGdvIGFueSBmdXJ0aGVyLCBsZXQncyBqdXN0IGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mICpNVDc5MjVVKi4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB3ZSBoYXZlbid0IG92ZXJsb29rZWQgYW55IGNyaXRpY2FsIHVwc3RyZWFtIG9yIGRvd25zdHJlYW0gY29tcG9uZW50cyB0aGF0IHJlbHkgb24gb3IgaW1wYWN0IHRoaXMgcGFydGljdWxhciBzZXR1cC4gSXQncyB0b28gZWFzeSB0byBnZXQgY2F1Z2h0IG91dCBieSB1bmV4cGVjdGVkIGludGVyYWN0aW9ucyBsYXRlciBvbi4gQSBxdWljayByZXZpZXcgb2YgdGhlIGRlcGVuZGVuY2llcyBub3cgaXMgYWx3YXlzIHRpbWUgd2VsbCBzcGVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4NTgsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNDo0ODozOC4wNzU1OTU4MzRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIE1UNzkyNV9DT01NT05cXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRzZWxlY3QgTVQ3OTJ4X0xJQlxcbiAgIDU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAgNjpcXHRcXG4gICA3OlxcdGNvbmZpZyBNVDc5MjVFXFxuICAgODpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFxcXCJcXG4gICA5OlxcdFxcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXFxuICAxMDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFBDSWUgZGV2aWNlcyxcXG4gIDE0OlxcdFxcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXFxuICAxNTpcXHRcXHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTVQ3OTI1VVxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFxcXCJcXG4gIDIxOlxcdFxcdHNlbGVjdCBNVDc5MnhfVVNCXFxuICAyMjpcXHRcXHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxcbiAgMjM6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMjQ6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDI1OlxcdFxcdGhlbHBcXG4gIDI2OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBVU0IgZGV2aWNlcyxcXG4gIDI3OlxcdFxcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXFxuICAyODpcXHRcXHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNDo0ODozOC4wNzU2NzYyMTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTExMDE5Njc1MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBkZXBlbmRlbmNpZXMganVtcCBvdXQ6IGBNQUM4MDIxMWAgYW5kIGBVU0JgLiAgVGhhdCBtZWFucyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBpcyBsaWtlbHkgYE1UNzkyNVVgLiBUaGUgY29yZSBmdW5jdGlvbiB0aGF0J3MgYmVlbiBtb2RpZmllZCBpcyBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgLiAgTGV0J3MgcmUtZXhhbWluZSB0aGF0IGNvZGUgYmxvY2ssIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGFkZGVkIGxvZ2ljIHRoYXQgaGFuZGxlcyB0aGUgbGVnYWN5IEJTUyByZXN0b3JlLlxuXG5gYGBjXG5AQCAtMjI5NCw2ICsyMjk0LDIxIEBAIG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuIFxuIFx0bXZpZi1cdTAwM2V2YWxpZF9saW5rcyA9IG5ld19saW5rcztcbiBcbitcdC8qIFRoZSBmaXJtd2FyZSB3b3VsZCBrZWVwIHRoZSBNTEQgQlNTIGFuZCBERVYgZW50cnk6IHRoZSByZW1vdmFsXG4rXHQgKiBsb29wIHNraXBzIHRoZSBkZWZsaW5rIGFuZCB0aGUgaHdlaWdodDE2KCkgZmFsbGJhY2sgYWJvdmUgcmVhZHNcbitcdCAqIHRoZSBzdGFsZSBwcmUtdXBkYXRlIHZhbGlkX2xpbmtzLiBSZXN0b3JlIHRoZSBsZWdhY3kgQlNTLlxuK1x0ICovXG4rXHRpZiAob2xkX2xpbmtzIFx1MDAyNlx1MDAyNiAhbmV3X2xpbmtzKSB7XG4rXHRcdG10NzkyeF9tYWNfbGlua19ic3NfcmVtb3ZlKGRldiwgXHUwMDI2bXZpZi1cdTAwM2Vic3NfY29uZixcbitcdFx0XHRcdFx0ICAgXHUwMDI2bXZpZi1cdTAwM2VzdGEuZGVmbGluayk7XG4rXHRcdGVyciA9IG10NzkyNV9tYWNfbGlua19ic3NfYWRkKGRldiwgXHUwMDI2dmlmLVx1MDAzZWJzc19jb25mLFxuK1x0XHRcdFx0XHQgICAgICBcdTAwMjZtdmlmLVx1MDAzZXN0YS5kZWZsaW5rKTtcbitcdFx0aWYgKGVyciBcdTAwM2MgMCkge1xuK1x0XHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4rXHRcdFx0cmV0dXJuIGVycjtcbitcdFx0fVxuK1x0fVxuK1xuIFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbiBcbiBcdHJldHVybiAwO1xuYGBgXG5cblRoaXMgaXMgY2xlYXJseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgLiBOb3csIGEgY3J1Y2lhbCBxdWVzdGlvbiBhcmlzZXM6IGlzIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgZXZlbiByZWFjaGFibGU/ICBJIGtub3cgdGhhdCBgbWFjODAyMTFgIGNhbGxzIHRoaXMgd2hlbiB2aXJ0dWFsIGludGVyZmFjZSAodmlmKSBsaW5rcyBjaGFuZ2UsIHdoaWNoIGlzIHR5cGljYWxseSB0cmlnZ2VyZWQgdmlhIG5ldGxpbmsuIEJ1dCBkb2VzIGZpcm13YXJlIG5lZWQgdG8gYmUgbG9hZGVkIGZvciB0aGlzIGNvZGUgcGF0aCB0byBiZSByZWFjaGVkPyBXaXRoIFVTQiBkcml2ZXJzIGluIGBtYWM4MDIxMWAsIGZpcm13YXJlIHVzdWFsbHkgKmlzKiByZXF1aXJlZCBmb3IgcHJvcGVyIGluaXRpYWxpemF0aW9uLiBJZiBmaXJtd2FyZSBpc24ndCBhdmFpbGFibGUsIHRoZSBkcml2ZXIgbWlnaHQgZmFpbCB0byBwcm9iZS5cblxuSGVyZSdzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcgaW4gdGhlIGNvbnRleHQgb2YgZnV6emluZyB3aXRoIHN5emthbGxlci4gIFN5emthbGxlciBjYW4gc29tZXRpbWVzIGJ5cGFzcyBmaXJtd2FyZSByZXF1aXJlbWVudHMuIEl0IGNvdWxkIG1vY2sgdGhlIGZpcm13YXJlLCBvciB0aGUgZHJpdmVyIG1pZ2h0IG5vdCAqc3RyaWN0bHkqIG5lZWQgaXQgdG8gcmVnaXN0ZXIgdGhlIGBtYWM4MDIxMWAgZGV2aWNlLiBXZSBuZWVkIHRvIGFzY2VydGFpbiBpZiBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgIGlzIHJlYWNoYWJsZSB3aXRob3V0IGZpcm13YXJlLCBvciB3aGV0aGVyIHN5emthbGxlcidzIHNldHVwIGFsbG93cyBpdC5cblxuU3l6a2FsbGVyIGdlbmVyYWxseSB1c2VzIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCBmb3IgVVNCIGRyaXZlcnMsIGl0IHVzZXMgYGR1bW15X2hjZGAgYW5kIGluamVjdHMgZGVzY3JpcHRvcnMuIElmIHRoZSBkcml2ZXIgKmRvZXMqIG5lZWQgZmlybXdhcmUsIHN5emthbGxlciBoYXMgYSBmYWxsYmFjayBtZWNoYW5pc20gdG8gc3VwcGx5IGR1bW15IGZpcm13YXJlIHZpYSB0aGUgZmlybXdhcmUgbG9hZGVyLlxuXG5MZXQncyBhbHNvIGV2YWx1YXRlIGBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZGAgYW5kIGBtdDc5MnhfbWFjX2xpbmtfYnNzX3JlbW92ZWAgYXMgcG90ZW50aWFsIGZvY3VzIHN5bWJvbHMuIFdoaWxlIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgaXMgdGhlIGNlbnRyYWwgbW9kaWZpZWQgZnVuY3Rpb24sIHRob3NlIHJlbGF0ZWQgZnVuY3Rpb25zIGluIHRoZSBwYXRjaCBtaWdodCBiZSBpbnRlcmVzdGluZyB0b28uIENoZWNraW5nIGJhY2ssIGl0IGxvb2tzIGxpa2UgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBpcyBkZWNsYXJlZCBzdGF0aWMuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoZSBjb2RlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTU1NCwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ4OjQ5LjE3NzY0NjY3MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwMjAwNzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X2NoYW5nZV92aWZfbGlua3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yMjA4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjIwOTptdDc5MjVfY2hhbmdlX3ZpZl9saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjIxMC1cXHRcXHRcXHR1MTYgb2xkX2xpbmtzLCB1MTYgbmV3X2xpbmtzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTI3MzE9Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3OTI1X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNzkwLVxcdC5saW5rX2luZm9fY2hhbmdlZCA9IG10NzkyNV9saW5rX2luZm9fY2hhbmdlZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6Mjc5MTpcXHQuY2hhbmdlX3ZpZl9saW5rcyA9IG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNzkyLVxcdC5jaGFuZ2Vfc3RhX2xpbmtzID0gbXQ3OTI1X2NoYW5nZV9zdGFfbGlua3MsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ4OjQ5LjIyMzY2ODc4M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTExNzI2NTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbnNpZGVyaW5nIHRoZSBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBmdW5jdGlvbi4gVGhlIGNvZGUgc2F5cyBpdCdzIHN0YXRpYywgd2hpY2ggdXN1YWxseSBtZWFucyB0aGUgY29tcGlsZXIgbWlnaHQgaW5saW5lIGl0LCBtYWtpbmcgaXRzIHN5bWJvbCBhZGRyZXNzIGFtYmlndW91cy4gSG93ZXZlciwgc2luY2UgaXQncyBiZWluZyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIGlubGluaW5nIGlzIHVubGlrZWx5LiBTbywgdGhlIHN0YXRpYyBkZWNsYXJhdGlvbiBpcyBhIGJpdCByZWR1bmRhbnQgYnV0IGxpa2VseSBoYXJtbGVzcywgYWx0aG91Z2ggaXQncyBiZXR0ZXIgdG8gZW5zdXJlIGl0J3MgcHJvdmlkZWQgaWYgaXQgaXMgKm5vdCogaW5saW5lZC5cblxuSGFuZyBvbiBhIHNlY29uZOKApiB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIGEgcHJlZmVyZW5jZSBmb3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5IHBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGlzIGlzIHdoZXJlIEkgaGF2ZSB0byBwYXVzZSBhbmQgY29uc2lkZXIgLSBpcyBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgIHRoZSAqZXhhY3QqIGZ1bmN0aW9uIHRoYXQgbmVlZHMgdG8gYmUgbW9kaWZpZWQ/IElmIHNvLCB3aGF0IGFyZSBteSBvcHRpb25zPyBJcyB0aGVyZSBhIG5vbi1zdGF0aWMgYWx0ZXJuYXRpdmUgSSBjYW4gdXNlIGhlcmU/IEkgbmVlZCB0byBleHBsb3JlIHdoYXQgdGhlIGFsdGVybmF0aXZlIG1ldGhvZHMgYXJlIGhlcmUuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgYG10NzkyNV9tYWNfbGlua19ic3NfYWRkYC4gTWF5YmUgdGhhdCBmdW5jdGlvbiBpcyB0aGUgcHJlZmVycmVkIG1ldGhvZCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzU1NiwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNDo0ODo1NC4xMzUzOTcyMTlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NDU2MTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyNV9tYWNfbGlua19ic3NfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MzY2PXN0YXRpYyBpbnQgbXQ3OTI1X3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTM3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6Mzc4OnN0YXRpYyBpbnQgbXQ3OTI1X21hY19saW5rX2Jzc19hZGQoc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMzc5LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmxpbmtfY29uZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz00NTU9bXQ3OTI1X2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtNDY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzo0NzA6XFx0cmV0ID0gbXQ3OTI1X21hY19saW5rX2Jzc19hZGQoZGV2LCBcXHUwMDI2dmlmLVxcdTAwM2Vic3NfY29uZiwgXFx1MDAyNm12aWYtXFx1MDAzZXN0YS5kZWZsaW5rKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtNDcxLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTIyMDk9bXQ3OTI1X2NoYW5nZV92aWZfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjI4Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjI4MzpcXHRcXHRlcnIgPSBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZChkZXYsIGxpbmtfY29uZiwgbWxpbmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yMjg0LVxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTIzMDMtXFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNm12aWYtXFx1MDAzZXN0YS5kZWZsaW5rKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjMwNDpcXHRcXHRlcnIgPSBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZChkZXYsIFxcdTAwMjZ2aWYtXFx1MDAzZWJzc19jb25mLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yMzA1LVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZtdmlmLVxcdTAwM2VzdGEuZGVmbGluayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ4OjU0LjE4Mzg1NzUxMVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjMzOTI4MDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGggZW1iZWRkZWQgc3lzdGVtcyBhbmQgZHJpdmVyIGRldmVsb3BtZW50OlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogU3RhdGljIENvbnRleHQgYW5kIEZ1bmN0aW9uIFVzYWdlKipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgb2JzZXJ2YXRpb24gcG9pbnRzIG91dCBhIGtleSBhc3BlY3Q6IHdlJ3JlIGRlYWxpbmcgd2l0aCBzdGF0aWMgZWxlbWVudHMgaW4gdGhpcyBwYXJ0aWN1bGFyIHNjZW5hcmlvLiBNeSBpbW1lZGlhdGUgZm9sbG93LXVwIHF1ZXN0aW9uIGlzLCBhcmUgd2UgKmV4Y2x1c2l2ZWx5KiBkZWFsaW5nIHdpdGggc3RhdGljIGZ1bmN0aW9ucywgb3IgYXJlIHRoZXJlIGFueSBub24tc3RhdGljIGFsdGVybmF0aXZlcyB0byBjb25zaWRlcj8gVGhpcyBpcyBjcml0aWNhbCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBzY29wZSBvZiB0aGUgcHJvYmxlbS5cblxuVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgYG10NzkyNV9vcHNgIHN0cnVjdHVyZS4gTXkgcHJpbWFyeSBmb2N1cyBpcyB0byBkZXRlcm1pbmUgaG93IGl0J3MgYmVpbmcgKnV0aWxpemVkKi4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8ga25vdyBpZiBpdCdzIGV4cG9ydGVkLCBhbmQgdGhlcmVmb3JlIHBvc3NpYmx5IGFjY2Vzc2libGUgb3V0c2lkZSBvZiBpdHMgaW50ZW5kZWQgc2NvcGUsIG9yIHVzZWQgaW4gYGluaXQuY2AuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gYW5kIGFjY2VzcyBtZXRob2RzIG9mIHRoZSBjb2RlLiBUaGlzIHdpbGwgaGVscCBtZSBuYXJyb3cgZG93biBwb3RlbnRpYWwgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDcyOCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ4OjU3LjgxNzc5NjEzNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2NzE0MjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTI1X29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTI3MjI9c3RhdGljIHZvaWQgbXQ3OTI1X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0yNzMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoyNzMxOmNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIG10NzkyNV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI3MzItXFx0LnR4ID0gbXQ3OTJ4X3R4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI4MDQtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjgwNTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjVfb3BzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjgwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTI2Mz1zdGF0aWMgaW5saW5lIHU4IG10NzkyN19iYW5kX2lkeChlbnVtIG5sODAyMTFfYmFuZCBiYW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1LmgtMjc0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjI3NTpleHRlcm4gY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgbXQ3OTI1X29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0yNzYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYz01Mjg9c3RhdGljIGludCBtdDc5MjVfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNjAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjYwMTpcXHRvcHMgPSBtdDc5MnhfZ2V0X21hYzgwMjExX29wcyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXHUwMDI2bXQ3OTI1X29wcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy02MDItXFx0XFx0XFx0XFx0ICAgICAgKHZvaWQgKilpZC1cXHUwMDNlZHJpdmVyX2RhdGEsIFxcdTAwMjZmZWF0dXJlcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0xNTA9c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxOTE6XFx0b3BzID0gbXQ3OTJ4X2dldF9tYWM4MDIxMV9vcHMoXFx1MDAyNnVzYl9pbnRmLVxcdTAwM2VkZXYsIFxcdTAwMjZtdDc5MjVfb3BzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE5Mi1cXHRcXHRcXHRcXHQgICAgICAodm9pZCAqKWlkLVxcdTAwM2Vkcml2ZXJfaW5mbywgXFx1MDAyNmZlYXR1cmVzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDQ6NDg6NTcuODYxNDcyMTE2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNTUxNDE5Nzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgIEZ1bmN0aW9uKipcblxuT2theSwgc28gYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBpcyB0aGUgZm9jdXMgaGVyZS4gSXQncyB1c2VkIGluIGJvdGggYHVzYi5jYCBhbmQgYHBjaS5jYCwgd2hpY2ggdGVsbHMgbWUgaXQncyBleHBvc2VkIHRocm91Z2ggYG10NzkyNV9vcHNgIGFzIGEgZnVuY3Rpb24gcG9pbnRlci4gU2luY2UgaXQncyBhIHBvaW50ZXIsIG5vIGlubGluaW5nLCB3aGljaCBpcyBnb29kIGZvciBmdXp6aW5nLiBXZSBjYW4gdGFyZ2V0IGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2AgZGlyZWN0bHkuXG5cblRoZSBuZXh0IHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBmdW5jdGlvbiBiZSByZWFjaGVkIHdpdGhvdXQgcmVhbCBoYXJkd2FyZT8gWWVzLCB0aHJvdWdoIHRoZSBgbWFjODAyMTFgIGRyaXZlciBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgd2hlbiB0aGUgZGV2aWNlIGlzIHByb2JlZC4gRm9yIHRoZSBVU0IgY2FzZSwgd2UgY2FuIHVzZSBgZHVtbXlfaGNkYCB0byBwcm9iZSBgbXQ3OTI1dWAuIE5vdywgbGV0J3Mgc2VlIGlmIGBNVDc5MjVVYCBpcyBlbmFibGVkIGluIHN5emthbGxlci4gVGhlIGFuc3dlciBpcyB5ZXMsIHNvIEkgbmVlZCB0byByZXR1cm4gYEVuYWJsZUNvbmZpZ3M6IFtcIk1UNzkyNVVcIl1gLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zLiBDaGVja2luZyBgTVQ3OTI1VWAgZGVwZW5kZW5jaWVzLCBpdCBsb29rcyBsaWtlIGl0IGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAuIERpZ2dpbmcgZnVydGhlciwgYE1UNzkyNV9DT01NT05gIGlzIHNlbGVjdGVkIGJ5IGBNVDc5MjVVYCwgYW5kIGBNVDc5MnhfVVNCYCBpcyBhbHNvIHNlbGVjdGVkIGJ5IGBNVDc5MjVVYCwgc28gYE1UNzkyNVVgIGlzIGluZGVlZCBzdWZmaWNpZW50LlxuXG5JJ3ZlIGRvdWJsZS1jaGVja2VkLCBhbmQgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBpcyB0aGUgb25seSBmdW5jdGlvbiBtb2RpZmllZC4gVGhlIHBhdGNoIHJlc3RvcmVzIHRoZSBsZWdhY3kgQlNTLiBUaGlzIHBhdGNoIGZpeGVzIGEgYnVnIHdpdGggZmlybXdhcmUgYW5kIGl0IHNlZW1zIHRvIGJlIGEgZnVuY3Rpb25hbCBjaGFuZ2UuICoqV29ydGhGdXp6aW5nPXRydWUqKiBpdCBpcy5cblxuTGV0J3Mgc3VtbWFyaXplIHRoZSBuZWNlc3NhcnkgY29uZmlncyBhZ2FpbjogYE1UNzkyNVVgLCBgTUFDODAyMTFgLCBhbmQgYFVTQmAuXG5cbkknbGwgYWxzbyBjaGVjayBpZiBgTVQ3OTI1VWAgcmVxdWlyZXMgZmlybXdhcmUuIElmIGl0IGRvZXMsIHN5emthbGxlcidzIGZhbGxiYWNrIGZpcm13YXJlIGxvYWRpbmcgbWlnaHQgaGFuZGxlIGl0LCBvciBwcm9iaW5nIG1pZ2h0IGZhaWwuIEJ1dCB3ZSB3YW50IHRvIGZ1enogdGhpcyBjb2RlIGluIGFueSBjYXNlLiBMb29raW5nIGF0IHRoZSBvdGhlciBkcml2ZXIgdmFyaWFudHMsIGBNVDc5MjVFYCBpcyBQQ0llLCB3aGljaCBJIGtub3cgaXMgbW9yZSBjaGFsbGVuZ2luZyB0byBmdXp6IHJlbGlhYmx5IGluIFFFTVUgY29tcGFyZWQgdG8gVVNCLCBldmVuIHdpdGggc3l6a2FsbGVyJ3MgUENJIGZ1enplci4gVVNCIGlzIGRlZmluaXRlbHkgdGhlIGJldHRlciBwYXRoLlxuXG5MZXQncyByZS1leGFtaW5lIHRoZSBjb2RlIGluIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2A6XG5cbmBgYGNcblx0aWYgKG9sZF9saW5rcyBcdTAwMjZcdTAwMjYgIW5ld19saW5rcykge1xuXHRcdG10NzkyeF9tYWNfbGlua19ic3NfcmVtb3ZlKGRldiwgXHUwMDI2bXZpZi1cdTAwM2Vic3NfY29uZixcblx0XHRcdFx0XHQgICBcdTAwMjZtdmlmLVx1MDAzZXN0YS5kZWZsaW5rKTtcblx0XHRlcnIgPSBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZChkZXYsIFx1MDAyNnZpZi1cdTAwM2Vic3NfY29uZixcblx0XHRcdFx0XHQgICAgICBcdTAwMjZtdmlmLVx1MDAzZXN0YS5kZWZsaW5rKTtcblx0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG5cdFx0XHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuXHRcdFx0cmV0dXJuIGVycjtcblx0XHR9XG5cdH1cbmBgYFxuXG5ZZXAsIHRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgYG1hYzgwMjExYCBkcml2ZXIuXG5cblNvIHRoZSAqKmZvY3VzIHN5bWJvbCBpcyBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgKiosIGFuZCB0aGUgcmVxdWlyZWQgY29uZmlncyBhcmUgYE1UNzkyNVVgLiBUaW1lIHRvIHNldCB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4NTcsIk91dHB1dFRva2VucyI6MTQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA0OjQ5OjA5LjQxMjg5NDA1MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMTEzMTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVVXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1X2NoYW5nZV92aWZfbGlua3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3NgIGluIHRoZSBNZWRpYVRlayBNVDc5MjUgd2lyZWxlc3MgZHJpdmVyIHRvIHJlc3RvcmUgdGhlIGxlZ2FjeSBCU1Mgd2hlbiBsaW5rcyBhcmUgcmVtb3ZlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBtYWM4MDIxMSBkcml2ZXIgb3BlcmF0aW9ucy4gVGhlIGRyaXZlciBoYXMgYSBVU0IgdmFyaWFudCAoTVQ3OTI1VSkgd2hpY2ggY2FuIGJlIGZ1enplZCB2aWEgVVNCIGVtdWxhdGlvbiAoZHVtbXlfaGNkKSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTI1VVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzkyNV9jaGFuZ2VfdmlmX2xpbmtzYCBpbiB0aGUgTWVkaWFUZWsgTVQ3OTI1IHdpcmVsZXNzIGRyaXZlciB0byByZXN0b3JlIHRoZSBsZWdhY3kgQlNTIHdoZW4gbGlua3MgYXJlIHJlbW92ZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWFjODAyMTEgZHJpdmVyIG9wZXJhdGlvbnMuIFRoZSBkcml2ZXIgaGFzIGEgVVNCIHZhcmlhbnQgKE1UNzkyNVUpIHdoaWNoIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKGR1bW15X2hjZCkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNDo0OTowOS40OTYwMTQyMDVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzA2OTE1MTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDQ6NDk6MDkuNDk2NDgxNzk1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEwNzA2NDQ0NDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGNoYW5naW5nIFZJRiBsaW5rcyBpbiB0aGUgbXQ3OTI1IGRyaXZlciBieSBhZGRpbmcgYSBjb25kaXRpb24gdG8gcmVtb3ZlIGFuZCByZS1hZGQgYSBCU1MgbGluayB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBoYXZpbmcgdmFsaWQgbGlua3MgdG8gbm8gdmFsaWQgbGlua3MuIFRoaXMgaXMgYSBzdGF0ZSBtYWNoaW5lIGFuZCBmaXJtd2FyZSBzeW5jaHJvbml6YXRpb24gZml4LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGludm9sdmUgdXNlLWFmdGVyLWZyZWUsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIG9yIGxvZ2ljIGVycm9ycywgd2hpY2ggYXJlIHdlbGwtY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTA4ZWRmOWIxZWVmMzQwYTljNTUwOGIyODA0OTI5NDk1OTQyMDlkZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDA0OjQ4OjE4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXG5pbmRleCA4NGI1NWYwMDhiM2QzLi5jN2NlZDJlZmQ0ZDdjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcbkBAIC0yMjk0LDYgKzIyOTQsMjEgQEAgbXQ3OTI1X2NoYW5nZV92aWZfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4gXG4gXHRtdmlmLVx1MDAzZXZhbGlkX2xpbmtzID0gbmV3X2xpbmtzO1xuIFxuK1x0LyogVGhlIGZpcm13YXJlIHdvdWxkIGtlZXAgdGhlIE1MRCBCU1MgYW5kIERFViBlbnRyeTogdGhlIHJlbW92YWxcbitcdCAqIGxvb3Agc2tpcHMgdGhlIGRlZmxpbmsgYW5kIHRoZSBod2VpZ2h0MTYoKSBmYWxsYmFjayBhYm92ZSByZWFkc1xuK1x0ICogdGhlIHN0YWxlIHByZS11cGRhdGUgdmFsaWRfbGlua3MuIFJlc3RvcmUgdGhlIGxlZ2FjeSBCU1MuXG4rXHQgKi9cbitcdGlmIChvbGRfbGlua3MgXHUwMDI2XHUwMDI2ICFuZXdfbGlua3MpIHtcbitcdFx0bXQ3OTJ4X21hY19saW5rX2Jzc19yZW1vdmUoZGV2LCBcdTAwMjZtdmlmLVx1MDAzZWJzc19jb25mLFxuK1x0XHRcdFx0XHQgICBcdTAwMjZtdmlmLVx1MDAzZXN0YS5kZWZsaW5rKTtcbitcdFx0ZXJyID0gbXQ3OTI1X21hY19saW5rX2Jzc19hZGQoZGV2LCBcdTAwMjZ2aWYtXHUwMDNlYnNzX2NvbmYsXG4rXHRcdFx0XHRcdCAgICAgIFx1MDAyNm12aWYtXHUwMDNlc3RhLmRlZmxpbmspO1xuK1x0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4rXHRcdFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcbitcdFx0XHRyZXR1cm4gZXJyO1xuK1x0XHR9XG4rXHR9XG4rXG4gXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuIFxuIFx0cmV0dXJuIDA7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNDo0OTowOS40OTY0ODI2ODVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk4ODUwMzc1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNVDc5MjUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBtdDc5MjVfY2hhbmdlX3ZpZl9saW5rc2Agd2l0aGluIHRoZSBNVDc5MjUgZHJpdmVyLiBJdCBsb29rcyBsaWtlIGl0J3MgYWRkaW5nIGEgY29uZGl0aW9uYWwgY2hlY2s6IGBpZiAob2xkX2xpbmtzIFx1MDAyNlx1MDAyNiAhbmV3X2xpbmtzKWAuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgTUFDIGxpbmsgQlNTIHJlbW92YWwgYW5kIGFkZGl0aW9uLiBJdCdzIGNhbGxpbmcgYG10NzkyeF9tYWNfbGlua19ic3NfcmVtb3ZlYCBhbmQgYG10NzkyNV9tYWNfbGlua19ic3NfYWRkYCBiYXNlZCBvbiB0aGlzIGNoZWNrLiBNeSBpbml0aWFsIGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgdW5pbml0aWFsaXplZCBtZW1vcnkuIExldCdzIHNlZS4uLiBgb2xkX2xpbmtzYCBhbmQgYG5ld19saW5rc2Agc2VlbSB0byBiZSBpbnRlZ2VycywgbGlrZWx5IGB1MTZgIGJpdG1hc2tzLiBgbXZpZi1cdTAwM2Vic3NfY29uZmAgYW5kIGB2aWYtXHUwMDNlYnNzX2NvbmZgIGFyZSBwb2ludGVycywgYXMgaXMgYG12aWYtXHUwMDNlc3RhLmRlZmxpbmtgLlxuXG5BbHJpZ2h0LCBJIGRvbid0IHNlZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9uIGhlcmUsIGFuZCBkZWZpbml0ZWx5IG5vIGRpcmVjdCBgY29weV90b191c2VyYCBjYWxscyB0aGF0IHdvdWxkIGJlIGFuIG9idmlvdXMgc291cmNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlLiBJdCBkb2Vzbid0IGxvb2sgbGlrZSBhbnkgdW5pbml0aWFsaXplZCBkYXRhIGlzIGJlaW5nIHJlYWQgZWl0aGVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgdGhpcyBpcyBwdXJlbHkgYSBsb2dpY2FsIGNoYW5nZSwgcHJvYmFibHkgZml4aW5nIGEgc3RhdGUgbWFjaGluZSBvciBzeW5jaHJvbml6YXRpb24gaXNzdWUgd2l0aCB0aGUgZmlybXdhcmUsIHdoaWNoIGlzIGEgZmFpcmx5IGNvbW1vbiBhcmVhIGZvciBwYXRjaGVzIGxpa2UgdGhpcy5cblxuR2l2ZW4gdGhpcywgSSBkb24ndCBpbW1lZGlhdGVseSBzZWUgYW55IG9idmlvdXMgS01TQU4gaXNzdWVzLiBLQVNBTiB3b3VsZCBiZSB0aGUgbW9yZSBsaWtlbHkgdG9vbCB0byBjYXRjaCBhbnkgVXNlLUFmdGVyLUZyZWUgb3IgT3V0LW9mLUJvdW5kcyBpc3N1ZXMgKmlmKiB0aGVyZSB3ZXJlIGFueS4gVGhvdWdoLCBpdCBuZXZlciBodXJ0cyB0byBkb3VibGUtY2hlY2sgdGhlc2UgdGhpbmdzLiBMZXQgbWUganVzdCB0YWtlIGFub3RoZXIgcXVpY2sgbG9vayBhdCB0aGUgY29kZSB0byBiZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjE2LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDQ6NDk6MTUuNDg0OTg5NDU3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMTIyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjI4MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjI4MDpcXHRcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIobXZpZi1cXHUwMDNlbGlua19jb25mW2xpbmtfaWRdLCBtY29uZik7XFxuMjI4MTpcXHRcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIobXZpZi1cXHUwMDNlc3RhLmxpbmtbbGlua19pZF0sIG1saW5rKTtcXG4yMjgyOlxcdFxcbjIyODM6XFx0XFx0XFx0ZXJyID0gbXQ3OTI1X21hY19saW5rX2Jzc19hZGQoZGV2LCBsaW5rX2NvbmYsIG1saW5rKTtcXG4yMjg0OlxcdFxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbjIyODU6XFx0XFx0XFx0XFx0Z290byBmcmVlO1xcbjIyODY6XFx0XFxuMjI4NzpcXHRcXHRcXHRpZiAobWNvbmYgIT0gXFx1MDAyNm12aWYtXFx1MDAzZWJzc19jb25mKSB7XFxuMjI4ODpcXHRcXHRcXHRcXHRlcnIgPSBtdDc5MjVfc2V0X21sb19yb2MocGh5LCBcXHUwMDI2bXZpZi1cXHUwMDNlYnNzX2NvbmYsXFxuMjI4OTpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgdmlmLVxcdTAwM2VhY3RpdmVfbGlua3MpO1xcbjIyOTA6XFx0XFx0XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuMjI5MTpcXHRcXHRcXHRcXHRcXHRnb3RvIGZyZWU7XFxuMjI5MjpcXHRcXHRcXHR9XFxuMjI5MzpcXHRcXHR9XFxuMjI5NDpcXHRcXG4yMjk1OlxcdFxcdG12aWYtXFx1MDAzZXZhbGlkX2xpbmtzID0gbmV3X2xpbmtzO1xcbjIyOTY6XFx0XFxuMjI5NzpcXHRcXHQvKiBUaGUgZmlybXdhcmUgd291bGQga2VlcCB0aGUgTUxEIEJTUyBhbmQgREVWIGVudHJ5OiB0aGUgcmVtb3ZhbFxcbjIyOTg6XFx0XFx0ICogbG9vcCBza2lwcyB0aGUgZGVmbGluayBhbmQgdGhlIGh3ZWlnaHQxNigpIGZhbGxiYWNrIGFib3ZlIHJlYWRzXFxuMjI5OTpcXHRcXHQgKiB0aGUgc3RhbGUgcHJlLXVwZGF0ZSB2YWxpZF9saW5rcy4gUmVzdG9yZSB0aGUgbGVnYWN5IEJTUy5cXG4yMzAwOlxcdFxcdCAqL1xcbjIzMDE6XFx0XFx0aWYgKG9sZF9saW5rcyBcXHUwMDI2XFx1MDAyNiAhbmV3X2xpbmtzKSB7XFxuMjMwMjpcXHRcXHRcXHRtdDc5MnhfbWFjX2xpbmtfYnNzX3JlbW92ZShkZXYsIFxcdTAwMjZtdmlmLVxcdTAwM2Vic3NfY29uZixcXG4yMzAzOlxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZtdmlmLVxcdTAwM2VzdGEuZGVmbGluayk7XFxuMjMwNDpcXHRcXHRcXHRlcnIgPSBtdDc5MjVfbWFjX2xpbmtfYnNzX2FkZChkZXYsIFxcdTAwMjZ2aWYtXFx1MDAzZWJzc19jb25mLFxcbjIzMDU6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNm12aWYtXFx1MDAzZXN0YS5kZWZsaW5rKTtcXG4yMzA2OlxcdFxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKSB7XFxuMjMwNzpcXHRcXHRcXHRcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbjIzMDg6XFx0XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4yMzA5OlxcdFxcdFxcdH1cXG4yMzEwOlxcdFxcdH1cXG4yMzExOlxcdFxcbjIzMTI6XFx0XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4yMzEzOlxcdFxcbjIzMTQ6XFx0XFx0cmV0dXJuIDA7XFxuMjMxNTpcXHRcXG4yMzE2OlxcdGZyZWU6XFxuMjMxNzpcXHRcXHRmb3JfZWFjaF9zZXRfYml0KGxpbmtfaWQsIFxcdTAwMjZhZGQsIElFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LUykge1xcbjIzMTg6XFx0XFx0XFx0cmN1X2Fzc2lnbl9wb2ludGVyKG12aWYtXFx1MDAzZWxpbmtfY29uZltsaW5rX2lkXSwgTlVMTCk7XFxuMjMxOTpcXHRcXHRcXHRyY3VfYXNzaWduX3BvaW50ZXIobXZpZi1cXHUwMDNlc3RhLmxpbmtbbGlua19pZF0sIE5VTEwpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNDo0OToxNS40ODUyMjI0MzdaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcxNzY3NDY2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqUGF0Y2ggUmV2aWV3IGFuZCBTdGF0ZSBNYWNoaW5lIExvZ2ljKipcblxuQWxyaWdodCwgbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCBzZWVtcyBzdHJhaWdodGZvcndhcmQuIFRoZSBtYWluIGZ1bmN0aW9uIGlzIHRvIGhhbmRsZSB0aGUgcmVtb3ZhbCBhbmQgYWRkaXRpb24gb2YgQlNTIGxpbmtzIGJhc2VkIG9uIGNoYW5nZXMgaW4gdGhlIGxpbmsgc3RhdGUsIHNwZWNpZmljYWxseSB3aGVuIHRoZSBgb2xkX2xpbmtzYCBhcmUgcHJlc2VudCBidXQgdGhlIGBuZXdfbGlua3NgIGFyZSBub3QuIFRoaXMgaXMgZGVmaW5pdGVseSBhIHN0YXRlIG1hY2hpbmUgY29ycmVjdGlvbiwgd2hpY2ggaXMgd2hhdCBJIHN1c3BlY3RlZCBnaXZlbiB0aGUgZGVzY3JpcHRpb24uIE5vdGhpbmcgaW4gdGhpcyBjb2RlIHRvdWNoZXMgdW5pbml0aWFsaXplZCBtZW1vcnksIHdoaWNoIGlzIGEgcmVsaWVmIOKAkyBhbHdheXMgYSBnb29kIHRoaW5nIHRvIHZlcmlmeS4gR2l2ZW4gdGhhdCwgSSdtIGNvbmZpZGVudCB0aGVyZSdzIG5vIG5lZWQgdG8gZW5hYmxlIGFueSBleHRyYSBkZWJ1Z2dpbmcgb3IgaGFyZGVuaW5nLCBzbyBJJ20gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAuIFRoaXMgbG9va3MgY2xlYW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NzIsIk91dHB1dFRva2VucyI6MTY1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwNDo0OToyMC4yMDI4OTkwOTVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgY2hhbmdpbmcgVklGIGxpbmtzIGluIHRoZSBtdDc5MjUgZHJpdmVyIGJ5IGFkZGluZyBhIGNvbmRpdGlvbiB0byByZW1vdmUgYW5kIHJlLWFkZCBhIEJTUyBsaW5rIHdoZW4gdHJhbnNpdGlvbmluZyBmcm9tIGhhdmluZyB2YWxpZCBsaW5rcyB0byBubyB2YWxpZCBsaW5rcy4gVGhpcyBpcyBhIHN0YXRlIG1hY2hpbmUgYW5kIGZpcm13YXJlIHN5bmNocm9uaXphdGlvbiBmaXguIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZC4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgaW52b2x2ZSB1c2UtYWZ0ZXItZnJlZSwgb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgb3IgbG9naWMgZXJyb3JzLCB3aGljaCBhcmUgd2VsbC1jb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBLTVNBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGNoYW5naW5nIFZJRiBsaW5rcyBpbiB0aGUgbXQ3OTI1IGRyaXZlciBieSBhZGRpbmcgYSBjb25kaXRpb24gdG8gcmVtb3ZlIGFuZCByZS1hZGQgYSBCU1MgbGluayB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBoYXZpbmcgdmFsaWQgbGlua3MgdG8gbm8gdmFsaWQgbGlua3MuIFRoaXMgaXMgYSBzdGF0ZSBtYWNoaW5lIGFuZCBmaXJtd2FyZSBzeW5jaHJvbml6YXRpb24gZml4LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGludm9sdmUgdXNlLWFmdGVyLWZyZWUsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIG9yIGxvZ2ljIGVycm9ycywgd2hpY2ggYXJlIHdlbGwtY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowwk6tf[1] Phase: Succeeded StartedAt: 2026-08-26 04:49:31 +0000 UTC FinishedAt: 2026-08-26 04:49:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-26 04:49:31 +0000 UTC FinishedAt: 2026-08-26 04:49:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[2] Phase: Succeeded StartedAt: 2026-08-26 04:49:31 +0000 UTC FinishedAt: 2026-08-26 05:28:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-26 04:49:31 +0000 UTC FinishedAt: 2026-08-26 05:28:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-26 04:49:31 +0000 UTC FinishedAt: 2026-08-26 04:49:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-26 04:49:31 +0000 UTC FinishedAt: 2026-08-26 04:49:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6tf/series-workflowwk6tf-convert-artifact-555223548/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-26 04:49:41 +0000 UTC FinishedAt: 2026-08-26 05:05:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-26 04:49:41 +0000 UTC FinishedAt: 2026-08-26 05:05:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*6a85734f-610c-4a02-8f88-fb684d8a5d63,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6tf/series-workflowwk6tf-convert-artifact-555223548/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "5049b1ed-3db5-4194-b6b5-49545f5e0181", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6tf/series-workflowwk6tf-build-action-2747532586/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-26 04:49:41 +0000 UTC FinishedAt: 2026-08-26 05:05:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*6a85734f-610c-4a02-8f88-fb684d8a5d63,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6tf/series-workflowwk6tf-convert-artifact-555223548/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "5049b1ed-3db5-4194-b6b5-49545f5e0181", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6tf/series-workflowwk6tf-build-action-2747532586/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-26 05:05:26 +0000 UTC FinishedAt: 2026-08-26 05:05:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-26 05:05:26 +0000 UTC FinishedAt: 2026-08-26 05:05:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-26 05:05:26 +0000 UTC FinishedAt: 2026-08-26 05:05:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-26 05:05:26 +0000 UTC FinishedAt: 2026-08-26 05:05:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6tf/series-workflowwk6tf-convert-artifact-1320805179/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-26 05:05:36 +0000 UTC FinishedAt: 2026-08-26 05:07:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-26 05:05:36 +0000 UTC FinishedAt: 2026-08-26 05:07:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5049b1ed-3db5-4194-b6b5-49545f5e0181,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6tf/series-workflowwk6tf-build-action-2747532586/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-26 05:07:58 +0000 UTC FinishedAt: 2026-08-26 05:07:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-26 05:07:58 +0000 UTC FinishedAt: 2026-08-26 05:07:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-26 05:07:58 +0000 UTC FinishedAt: 2026-08-26 05:23:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-26 05:07:58 +0000 UTC FinishedAt: 2026-08-26 05:23:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*6a85734f-610c-4a02-8f88-fb684d8a5d63,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6tf/series-workflowwk6tf-convert-artifact-1320805179/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "1703d321-1c28-40c2-ab0e-dfa7033450d3", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6tf/series-workflowwk6tf-build-action-634543711/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-26 05:07:58 +0000 UTC FinishedAt: 2026-08-26 05:23:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*6a85734f-610c-4a02-8f88-fb684d8a5d63,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6tf/series-workflowwk6tf-convert-artifact-1320805179/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "1703d321-1c28-40c2-ab0e-dfa7033450d3", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6tf/series-workflowwk6tf-build-action-634543711/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-26 05:23:34 +0000 UTC FinishedAt: 2026-08-26 05:23:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-26 05:23:34 +0000 UTC FinishedAt: 2026-08-26 05:23:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-26 05:23:34 +0000 UTC FinishedAt: 2026-08-26 05:25:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-26 05:23:34 +0000 UTC FinishedAt: 2026-08-26 05:25:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1703d321-1c28-40c2-ab0e-dfa7033450d3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6tf/series-workflowwk6tf-build-action-634543711/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-26 05:25:47 +0000 UTC FinishedAt: 2026-08-26 05:28:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-26 05:25:47 +0000 UTC FinishedAt: 2026-08-26 05:28:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*5049b1ed-3db5-4194-b6b5-49545f5e0181,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1703d321-1c28-40c2-ab0e-dfa7033450d3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6tf/series-workflowwk6tf-build-action-2747532586/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6tf/series-workflowwk6tf-build-action-634543711/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-26 05:25:47 +0000 UTC FinishedAt: 2026-08-26 05:25:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-26 05:25:47 +0000 UTC FinishedAt: 2026-08-26 05:25:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6tf/series-workflowwk6tf-convert-artifact-2100333876/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-26 05:25:47 +0000 UTC FinishedAt: 2026-08-26 05:25:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-26 05:25:47 +0000 UTC FinishedAt: 2026-08-26 05:25:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-26 05:25:47 +0000 UTC FinishedAt: 2026-08-26 05:25:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-26 05:25:57 +0000 UTC FinishedAt: 2026-08-26 05:28:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk6tf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7925_change_vif_links"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U"],"series_id":"5e7c1420-e165-4d27-9822-ad5d2eabe54f","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-26 05:25:57 +0000 UTC FinishedAt: 2026-08-26 05:28:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5049b1ed-3db5-4194-b6b5-49545f5e0181,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1703d321-1c28-40c2-ab0e-dfa7033450d3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6tf/series-workflowwk6tf-build-action-2747532586/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6tf/series-workflowwk6tf-build-action-634543711/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk6tf/series-workflowwk6tf-convert-artifact-2100333876/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}