Name: series-workflowsdl6s Phase: Succeeded StartedAt: 2026-07-16 02:09:40 +0000 UTC FinishedAt: 2026-07-16 03:38:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[0] Phase: Succeeded StartedAt: 2026-07-16 02:09:40 +0000 UTC FinishedAt: 2026-07-16 02:28:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[0].run-triage Phase: Succeeded StartedAt: 2026-07-16 02:09:40 +0000 UTC FinishedAt: 2026-07-16 02:28:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB" ], "series_id": "e5b697ef-7121-4bf7-b451-dd892041b1d3" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mwifiex_search_oui_in_ie", "mwifiex_is_rsn_oui_present", "mwifiex_is_wpa_oui_present", "mwifiex_is_network_compatible", "mwifiex_check_network_compatibility" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcGFyc2luZyBSU04vV1BBIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB3aGVuIHRoZSBkcml2ZXIgcHJvY2Vzc2VzIHNjYW4gcmVzdWx0cyBvciBhc3NvY2lhdGlvbiByZXNwb25zZXMgY29udGFpbmluZyB0aGVzZSBJRXMuIFNpbmNlIGBtd2lmaWV4YCBoYXMgYSBVU0IgZHJpdmVyIChgbXdpZmlleF91c2JgKSwgaXQgY2FuIGJlIGZ1enplZCB2aWEgdGhlIFVTQiBzdWJzeXN0ZW0gKGUuZy4sIHVzaW5nIGR1bW15X2hjZC9yYXctZ2FkZ2V0KSBieSBlbXVsYXRpbmcgYSBNYXJ2ZWxsIFdpLUZpIFVTQiBkZXZpY2UgYW5kIHNlbmRpbmcgbWFsaWNpb3VzIHNjYW4vYXNzb2NpYXRpb24gcmVzcG9uc2VzLiBUaGVyZWZvcmUsIHRoaXMgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjI3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWNhYzFlZDIyYTlhNDI0ODlkNTkzZGY5MWU4MzRjNjM0ZjhjZTNmY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDE2IDAyOjI3OjE5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG5pbmRleCA5N2MwZWMzYjgyMmU3MC4uMzNlZjhhZjBhNWUxM2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG5AQCAtMTA0LDEyICYjNDM7MTA0LDIxIEBAIGhhc192ZW5kb3JfaGRyKHN0cnVjdCBpZWVlX3R5cGVzX3ZlbmRvcl9zcGVjaWZpYyAqaWUsIHU4IGtleSlcbiAgKiBhIGdpdmVuIG91aSBpbiBQVEsuXG4gICovXG4gc3RhdGljIHU4XG4tbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKHN0cnVjdCBpZV9ib2R5ICppZWJvZHksIHU4ICpvdWkpXG4mIzQzO213aWZpZXhfc2VhcmNoX291aV9pbl9pZShzdHJ1Y3QgaWVfYm9keSAqaWVib2R5LCB1OCAqb3VpLCBpbnQgaWVfbGVuKVxuIHtcbiYjNDM7XHRjb25zdCBzaXplX3QgcHRrX2JvZHlfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IGllX2JvZHksIHB0a19ib2R5KTtcbiBcdHU4IGNvdW50O1xuIFxuJiM0MztcdC8qIE5lZWQgZ3JwX2tleV9vdWlbNF0gJiM0MzsgcHRrX2NudFsyXSBiZWZvcmUgcmVhZGluZyB0aGUgT1VJIGNvdW50LiAqL1xuJiM0MztcdGlmIChpZV9sZW4gXHUwMDNjIChpbnQpcHRrX2JvZHlfb2Zmc2V0KVxuJiM0MztcdFx0cmV0dXJuIE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xuJiM0MztcbiBcdGNvdW50ID0gaWVib2R5LVx1MDAzZXB0a19jbnRbMF07XG4gXG4mIzQzO1x0LyogUmVqZWN0IGFuIE9VSSBjb3VudCB3aG9zZSBsaXN0IHdvdWxkIHJ1biBwYXN0IHRoZSBlbGVtZW50LiAqL1xuJiM0MztcdGlmIChwdGtfYm9keV9vZmZzZXQgJiM0MzsgY291bnQgKiBzaXplb2YoaWVib2R5LVx1MDAzZXB0a19ib2R5KSBcdTAwM2UgKHNpemVfdClpZV9sZW4pXG4mIzQzO1x0XHRyZXR1cm4gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XG4mIzQzO1xuIFx0LyogVGhlcmUgY291bGQgYmUgbXVsdGlwbGUgT1VJcyBmb3IgUFRLIGhlbmNlXG4gXHQgICAxKSBUYWtlIHRoZSBsZW5ndGguXG4gXHQgICAyKSBDaGVjayBhbGwgdGhlIE9VSXMgZm9yIEFFUy5cbkBAIC0xNDMsMTEgJiM0MzsxNTIsMTQgQEAgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnQoc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsIHUzMiBjaXBoZXIpXG4gXHR1OCByZXQgPSBNV0lGSUVYX09VSV9OT1RfUFJFU0VOVDtcbiBcbiBcdGlmIChoYXNfaWVlZV9oZHIoYnNzX2Rlc2MtXHUwMDNlYmNuX3Jzbl9pZSwgV0xBTl9FSURfUlNOKSkge1xuJiM0MztcdFx0aW50IGllX2xlbiA9IChpbnQpYnNzX2Rlc2MtXHUwMDNlYmNuX3Jzbl9pZS1cdTAwM2VpZWVlX2hkci5sZW4gLVxuJiM0MztcdFx0XHQgICAgIFJTTl9HVEtfT1VJX09GRlNFVDtcbiYjNDM7XG4gXHRcdGllYm9keSA9IChzdHJ1Y3QgaWVfYm9keSAqKVxuIFx0XHRcdCAoKCh1OCAqKSBic3NfZGVzYy1cdTAwM2ViY25fcnNuX2llLVx1MDAzZWRhdGEpICYjNDM7XG4gXHRcdFx0ICBSU05fR1RLX09VSV9PRkZTRVQpO1xuIFx0XHRvdWkgPSBcdTAwMjZtd2lmaWV4X3Jzbl9vdWlbY2lwaGVyXVswXTtcbi1cdFx0cmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpKTtcbiYjNDM7XHRcdHJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSwgaWVfbGVuKTtcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuQEAgLTE2OSwxMCAmIzQzOzE4MSwxNCBAQCBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudChzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYywgdTMyIGNpcGhlcilcbiBcdHU4IHJldCA9IE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xuIFxuIFx0aWYgKGhhc192ZW5kb3JfaGRyKGJzc19kZXNjLVx1MDAzZWJjbl93cGFfaWUsIFdMQU5fRUlEX1ZFTkRPUl9TUEVDSUZJQykpIHtcbiYjNDM7XHRcdGludCBpZV9sZW4gPSAoaW50KWJzc19kZXNjLVx1MDAzZWJjbl93cGFfaWUtXHUwMDNldmVuZF9oZHIubGVuIC1cbiYjNDM7XHRcdFx0ICAgICAoaW50KXNpemVvZihic3NfZGVzYy1cdTAwM2ViY25fd3BhX2llLVx1MDAzZXZlbmRfaGRyLm91aSkgLVxuJiM0MztcdFx0XHQgICAgIFdQQV9HVEtfT1VJX09GRlNFVDtcbiYjNDM7XG4gXHRcdGllYm9keSA9IChzdHJ1Y3QgaWVfYm9keSAqKSgodTggKilic3NfZGVzYy1cdTAwM2ViY25fd3BhX2llLVx1MDAzZWRhdGEgJiM0MztcbiBcdFx0XHRcdFx0ICAgIFdQQV9HVEtfT1VJX09GRlNFVCk7XG4gXHRcdG91aSA9IFx1MDAyNm13aWZpZXhfd3BhX291aVtjaXBoZXJdWzBdO1xuLVx0XHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWkpO1xuJiM0MztcdFx0cmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpLCBpZV9sZW4pO1xuIFx0XHRpZiAocmV0KVxuIFx0XHRcdHJldHVybiByZXQ7XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfc2VhcmNoX291aV9pbl9pZSYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZSYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwYXJzaW5nIFJTTi9XUEEgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgc2NhbiByZXN1bHRzIG9yIGFzc29jaWF0aW9uIHJlc3BvbnNlcyBjb250YWluaW5nIHRoZXNlIElFcy4gU2luY2UgYG13aWZpZXhgIGhhcyBhIFVTQiBkcml2ZXIgKGBtd2lmaWV4X3VzYmApLCBpdCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIHN1YnN5c3RlbSAoZS5nLiwgdXNpbmcgZHVtbXlfaGNkL3Jhdy1nYWRnZXQpIGJ5IGVtdWxhdGluZyBhIE1hcnZlbGwgV2ktRmkgVVNCIGRldmljZSBhbmQgc2VuZGluZyBtYWxpY2lvdXMgc2Nhbi9hc3NvY2lhdGlvbiByZXNwb25zZXMuIFRoZXJlZm9yZSwgdGhpcyBmdW5jdGlvbmFsIGNoYW5nZSBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFjYWMxZWQyMmE5YTQyNDg5ZDU5M2RmOTFlODM0YzYzNGY4Y2UzZmMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAxNiAwMjoyNzoxOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jCmluZGV4IDk3YzBlYzNiODIyZTcwLi4zM2VmOGFmMGE1ZTEzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jCkBAIC0xMDQsMTIgJiM0MzsxMDQsMjEgQEAgaGFzX3ZlbmRvcl9oZHIoc3RydWN0IGllZWVfdHlwZXNfdmVuZG9yX3NwZWNpZmljICppZSwgdTgga2V5KQogICogYSBnaXZlbiBvdWkgaW4gUFRLLgogICovCiBzdGF0aWMgdTgKLW13aWZpZXhfc2VhcmNoX291aV9pbl9pZShzdHJ1Y3QgaWVfYm9keSAqaWVib2R5LCB1OCAqb3VpKQomIzQzO213aWZpZXhfc2VhcmNoX291aV9pbl9pZShzdHJ1Y3QgaWVfYm9keSAqaWVib2R5LCB1OCAqb3VpLCBpbnQgaWVfbGVuKQogewomIzQzOwljb25zdCBzaXplX3QgcHRrX2JvZHlfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IGllX2JvZHksIHB0a19ib2R5KTsKIAl1OCBjb3VudDsKIAomIzQzOwkvKiBOZWVkIGdycF9rZXlfb3VpWzRdICYjNDM7IHB0a19jbnRbMl0gYmVmb3JlIHJlYWRpbmcgdGhlIE9VSSBjb3VudC4gKi8KJiM0MzsJaWYgKGllX2xlbiAmbHQ7IChpbnQpcHRrX2JvZHlfb2Zmc2V0KQomIzQzOwkJcmV0dXJuIE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UOwomIzQzOwogCWNvdW50ID0gaWVib2R5LSZndDtwdGtfY250WzBdOwogCiYjNDM7CS8qIFJlamVjdCBhbiBPVUkgY291bnQgd2hvc2UgbGlzdCB3b3VsZCBydW4gcGFzdCB0aGUgZWxlbWVudC4gKi8KJiM0MzsJaWYgKHB0a19ib2R5X29mZnNldCAmIzQzOyBjb3VudCAqIHNpemVvZihpZWJvZHktJmd0O3B0a19ib2R5KSAmZ3Q7IChzaXplX3QpaWVfbGVuKQomIzQzOwkJcmV0dXJuIE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UOwomIzQzOwogCS8qIFRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIE9VSXMgZm9yIFBUSyBoZW5jZQogCSAgIDEpIFRha2UgdGhlIGxlbmd0aC4KIAkgICAyKSBDaGVjayBhbGwgdGhlIE9VSXMgZm9yIEFFUy4KQEAgLTE0MywxMSAmIzQzOzE1MiwxNCBAQCBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudChzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYywgdTMyIGNpcGhlcikKIAl1OCByZXQgPSBNV0lGSUVYX09VSV9OT1RfUFJFU0VOVDsKIAogCWlmIChoYXNfaWVlZV9oZHIoYnNzX2Rlc2MtJmd0O2Jjbl9yc25faWUsIFdMQU5fRUlEX1JTTikpIHsKJiM0MzsJCWludCBpZV9sZW4gPSAoaW50KWJzc19kZXNjLSZndDtiY25fcnNuX2llLSZndDtpZWVlX2hkci5sZW4gLQomIzQzOwkJCSAgICAgUlNOX0dUS19PVUlfT0ZGU0VUOwomIzQzOwogCQlpZWJvZHkgPSAoc3RydWN0IGllX2JvZHkgKikKIAkJCSAoKCh1OCAqKSBic3NfZGVzYy0mZ3Q7YmNuX3Jzbl9pZS0mZ3Q7ZGF0YSkgJiM0MzsKIAkJCSAgUlNOX0dUS19PVUlfT0ZGU0VUKTsKIAkJb3VpID0gJmFtcDttd2lmaWV4X3Jzbl9vdWlbY2lwaGVyXVswXTsKLQkJcmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpKTsKJiM0MzsJCXJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSwgaWVfbGVuKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAJfQpAQCAtMTY5LDEwICYjNDM7MTgxLDE0IEBAIG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50KHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgY2lwaGVyKQogCXU4IHJldCA9IE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UOwogCiAJaWYgKGhhc192ZW5kb3JfaGRyKGJzc19kZXNjLSZndDtiY25fd3BhX2llLCBXTEFOX0VJRF9WRU5ET1JfU1BFQ0lGSUMpKSB7CiYjNDM7CQlpbnQgaWVfbGVuID0gKGludClic3NfZGVzYy0mZ3Q7YmNuX3dwYV9pZS0mZ3Q7dmVuZF9oZHIubGVuIC0KJiM0MzsJCQkgICAgIChpbnQpc2l6ZW9mKGJzc19kZXNjLSZndDtiY25fd3BhX2llLSZndDt2ZW5kX2hkci5vdWkpIC0KJiM0MzsJCQkgICAgIFdQQV9HVEtfT1VJX09GRlNFVDsKJiM0MzsKIAkJaWVib2R5ID0gKHN0cnVjdCBpZV9ib2R5ICopKCh1OCAqKWJzc19kZXNjLSZndDtiY25fd3BhX2llLSZndDtkYXRhICYjNDM7CiAJCQkJCSAgICBXUEFfR1RLX09VSV9PRkZTRVQpOwogCQlvdWkgPSAmYW1wO213aWZpZXhfd3BhX291aVtjaXBoZXJdWzBdOwotCQlyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWkpOwomIzQzOwkJcmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpLCBpZV9sZW4pOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NjUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lGaSBEcml2ZXIgU2VjdXJpdHkgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBtd2lmaWV4YCDigJMgc3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY2AuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgYWRkZWQgc29tZSBib3VuZHMgY2hlY2tpbmcgd2l0aGluIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIHRvIHByZXZlbnQgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZHMuIFNtYXJ0IG1vdmUsIHByb3RlY3RpbmcgYWdhaW5zdCBidWZmZXIgb3ZlcmZsb3dzIGlzIGFsd2F5cyBhIGdvb2QgdGhpbmcsIGVzcGVjaWFsbHkgaW4gbmV0d29ya2luZyBjb2RlLiBUaGUgcGF0Y2ggc2VlbXMgc3RyYWlnaHRmb3J3YXJkOiBgaWVfbGVuYCBpcyBiZWluZyBwYXNzZWQgZG93biBmcm9tIGBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudGAgYW5kIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAsIHdoaWNoIGlzIHRoZSBjb3JyZWN0IHdheSB0byBlbnN1cmUgd2UgZG9uJiMzOTt0IHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBJRSAoSW5mb3JtYXRpb24gRWxlbWVudCkuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGlzIHRoaXMgZXZlbiAqcmVhY2hhYmxlKj8gSXMgdGhpcyBhIHBhcnQgb2YgdGhlIGNvZGUgdGhhdCYjMzk7cyBldmVuIHdvcnRoIHdvcnJ5aW5nIGFib3V0PyBUaGUgZHJpdmVyIGlzIGBtd2lmaWV4YCwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgYSBNYXJ2ZWxsIHdpcmVsZXNzIGRyaXZlci4gVHlwaWNhbGx5LCBmdXp6aW5nIHdvdWxkIGJlIHRoZSBtZXRob2QgdG8gdGVzdCB0aGUgc2VjdXJpdHkgb2YgYSBkcml2ZXIuIElzIGl0IGZ1enphYmxlPyBXZSBoYXZlIGBtYWM4MDIxMV9od3NpbWAgZm9yIHNvZnR3YXJlIGVtdWxhdGVkIHdpcmVsZXNzLCBidXQgYG13aWZpZXhgIGlzIGhhcmR3YXJlLXNwZWNpZmljLCB3aGljaCBtZWFucyBmdXp6aW5nIGlzIGdvaW5nIHRvIGJlIGRpZmZpY3VsdC4KCldhaXQsIGhvbGQgb24uLi4gY2FuIHdlIGZ1enogYG13aWZpZXhgIGF0IGFsbD8gSGFyZHdhcmUgZHJpdmVycyBhcmVuJiMzOTt0IHVzdWFsbHkgZWFzeSB0byBmdXp6IGRpcmVjdGx5LiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHlvdSBuZWVkIGFuIGludGVyZmFjZSB0byBpbnRlcmFjdCB3aXRoLCBsaWtlIFVTQiBvciBTRElPLCB0aGF0IHlvdSBjYW4gZW11bGF0ZSBvciBjb250cm9sLiBTbywgdGhlIGtleSBpcyB3aGV0aGVyIGBtd2lmaWV4YCBzdXBwb3J0cyBlaXRoZXIgb2YgdGhvc2UuIE5lZWQgdG8gY2hlY2sgaWYgaXQgaGFzIGEgVVNCIGludGVyZmFjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3VzYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9Mzc9Y29uZmlnIE1XSUZJRVhfVVNCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctNDUtXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzo0NjpcdCAgbXdpZmlleF91c2IuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlPTQyPW9iai0kKENPTkZJR19NV0lGSUVYX1BDSUUpICYjNDM7PSBtd2lmaWV4X3BjaWUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlOjQ0Om13aWZpZXhfdXNiLXkgJiM0Mzs9IHVzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX01XSUZJRVhfVVNCKSAmIzQzOz0gbXdpZmlleF91c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlLTQ2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oPTkwPWVudW0gS0VZX1RZUEVfSUQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oLTEyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oOjEyMzplbnVtIG13aWZpZXhfdXNiX2VwIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oLTEyNC1cdE1XSUZJRVhfVVNCX0VQX0NNRF9FVkVOVCA9IDEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD01NT1lbnVtIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyMy0gKiBEbyBub3QgY2hlY2sgZm9yIGRhdGFfcmVjZWl2ZWQgZm9yIFVTQiwgYXMgZGF0YV9yZWNlaXZlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMjQ6ICogaXMgaGFuZGxlZCBpbiBtd2lmaWV4X3VzYl9yZWN2IGZvciBVU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTI1LSAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xMz1zdGF0aWMgY29uc3Qgc3RydWN0IG13aWZpZXhfaWZfb3BzIHVzYl9vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU6c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG13aWZpZXhfdXNiX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTYtXHQvKiA4NzY2ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjM5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBtd2lmaWV4X3VzYl90YWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NDE6c3RhdGljIGludCBtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKHN0cnVjdCB1cmJfY29udGV4dCAqY3R4LCBpbnQgc2l6ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ1LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjQ2OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVjdihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ3LVx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBlcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1MjpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9yeF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE4NzpcdFx0c3RhdHVzID0gbXdpZmlleF91c2JfcmVjdihhZGFwdGVyLCBza2IsIGNvbnRleHQtXHUwMDNlZXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE4OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTk2LVx0XHRcdCAqIHVyYiBmb3IgY21kX2VwIHdpbGwgYmUgcmUtc3VibWl0dGVkIGluIGNhbGxiYWNrXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTk3Olx0XHRcdCAqIG13aWZpZXhfdXNiX3JlY3ZfY29tcGxldGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xOTgtXHRcdFx0ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzMi1cdGlmIChjYXJkLVx1MDAzZXJ4X2NtZF9lcCA9PSBjb250ZXh0LVx1MDAzZWVwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MjMzOlx0XHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKGNvbnRleHQsIHNpemUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzNC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjM1LVx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2YWRhcHRlci1cdTAwM2VyeF9wZW5kaW5nKSBcdTAwM2M9IEhJR0hfUlhfUEVORElORykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjIzNjpcdFx0XHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKGNvbnRleHQsIHNpemUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzNy1cdFx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjI0NTpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl90eF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjQ2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjI4NTpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoc3RydWN0IHVyYl9jb250ZXh0ICpjdHgsIGludCBzaXplKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTI4Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMxNS1cdFx0XHRcdCB1c2JfcmN2aW50cGlwZShjYXJkLVx1MDAzZXVkZXYsIGN0eC1cdTAwM2VlcCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MzE2Olx0XHRcdFx0IGN0eC1cdTAwM2Vza2ItXHUwMDNlZGF0YSwgc2l6ZSwgbXdpZmlleF91c2JfcnhfY29tcGxldGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzE3LVx0XHRcdFx0ICh2b2lkICopY3R4LCBjYXJkLVx1MDAzZXJ4X2NtZF9pbnRlcnZhbCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMyMC1cdFx0XHRcdCAgdXNiX3JjdmJ1bGtwaXBlKGNhcmQtXHUwMDNldWRldiwgY3R4LVx1MDAzZWVwKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzozMjE6XHRcdFx0XHQgIGN0eC1cdTAwM2Vza2ItXHUwMDNlZGF0YSwgc2l6ZSwgbXdpZmlleF91c2JfcnhfY29tcGxldGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzIyLVx0XHRcdFx0ICAodm9pZCAqKWN0eCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzozNDU6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfZnJlZShzdHJ1Y3QgdXNiX2NhcmRfcmVjICpjYXJkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM4NC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzozODU6c3RhdGljIGludCBtd2lmaWV4X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zODYtXHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTUzMi0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo1MzM6c3RhdGljIGludCBtd2lmaWV4X3VzYl9zdXNwZW5kKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBwbV9tZXNzYWdlX3QgbWVzc2FnZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01MzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01OTktICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjAwOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYwMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYyNS1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTVdJRklFWF9SWF9EQVRBX1VSQjsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjI2Olx0XHRcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoXHUwMDI2Y2FyZC1cdTAwM2VyeF9kYXRhX2xpc3RbaV0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjI3LVx0XHRcdFx0XHRcdCAgTVdJRklFWF9SWF9EQVRBX0JVRl9TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjMxLVx0XHRpZiAoY2FyZC1cdTAwM2VyeF9jbWQuc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjYzMjpcdFx0XHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFx1MDAyNmNhcmQtXHUwMDNlcnhfY21kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYzMy1cdFx0XHRcdFx0XHQgIE1XSUZJRVhfUlhfQ01EX0JVRl9TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY0NTpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2Njk6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfY29yZWR1bXAoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY3MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2Nzg6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG13aWZpZXhfdXNiX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2Nzk6XHQubmFtZSA9IFwmIzM0O213aWZpZXhfdXNiXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4MDpcdC5wcm9iZSA9IG13aWZpZXhfdXNiX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4MTpcdC5kaXNjb25uZWN0ID0gbXdpZmlleF91c2JfZGlzY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODI6XHQuaWRfdGFibGUgPSBtd2lmaWV4X3VzYl90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODM6XHQuc3VzcGVuZCA9IG13aWZpZXhfdXNiX3N1c3BlbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Njg0Olx0LnJlc3VtZSA9IG13aWZpZXhfdXNiX3Jlc3VtZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02ODUtXHQuc29mdF91bmJpbmQgPSAxLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY4Ni1cdC5kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Njg3Olx0XHQuY29yZWR1bXAgPSBtd2lmaWV4X3VzYl9jb3JlZHVtcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02ODgtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz03MTQ9c3RhdGljIGludCBtd2lmaWV4X3JlYWRfZGF0YV9zeW5jKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsIHU4ICpwYnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy03MzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NzM0OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX3BvcnRfcmVzeW5jKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzM1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjc3NjpzdGF0aWMgYm9vbCBtd2lmaWV4X3VzYl9pc19wb3J0X3JlYWR5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzc3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjc4OTpzdGF0aWMgaW5saW5lIHU4IG13aWZpZXhfdXNiX2RhdGFfc2VudChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTc5MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo4MDE6c3RhdGljIGludCBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MDItXHRcdFx0XHRcdCAgc3RydWN0IHVzYl90eF9kYXRhX3BvcnQgKnBvcnQsIHU4IGVwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MTgtXHRcdFx0XHQgdXNiX3NuZGludHBpcGUoY2FyZC1cdTAwM2V1ZGV2LCBlcCksIHNrYl9zZW5kLVx1MDAzZWRhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODE5Olx0XHRcdFx0IHNrYl9zZW5kLVx1MDAzZWxlbiwgbXdpZmlleF91c2JfdHhfY29tcGxldGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODIwLVx0XHRcdFx0ICh2b2lkICopY29udGV4dCwgY2FyZC1cdTAwM2V0eF9jbWRfaW50ZXJ2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MjQtXHRcdFx0XHQgIHNrYl9zZW5kLVx1MDAzZWRhdGEsIHNrYl9zZW5kLVx1MDAzZWxlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo4MjU6XHRcdFx0XHQgIG13aWZpZXhfdXNiX3R4X2NvbXBsZXRlLCAodm9pZCAqKWNvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgyNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODM3LVx0XHRwb3J0LVx1MDAzZWJsb2NrX3N0YXR1cyA9IHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODM4Olx0XHRhZGFwdGVyLVx1MDAzZWRhdGFfc2VudCA9IG13aWZpZXhfdXNiX2RhdGFfc2VudChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MzktXHRcdHJldCA9IC1FTk9TUjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODYxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjg2MjpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3ByZXBhcmVfdHhfYWdncl9za2Ioc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04NjMtXHRcdFx0XHRcdCAgIHN0cnVjdCB1c2JfdHhfZGF0YV9wb3J0ICpwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy05NDYtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6OTQ3OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfYWdncl90eF9kYXRhKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IGVwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTk0OC1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDYyLVx0aWYgKGZfc2VuZF9hZ2dyX2J1Zikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEwNjM6XHRcdHJldCA9IG13aWZpZXhfdXNiX3ByZXBhcmVfdHhfYWdncl9za2IoYWRhcHRlciwgcG9ydCwgXHUwMDI2c2tiX3NlbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwNjQtXHRcdGlmICghcmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA2NS1cdFx0XHRjb250ZXh0ID0gXHUwMDI2cG9ydC1cdTAwM2V0eF9kYXRhX2xpc3RbcG9ydC1cdTAwM2V0eF9kYXRhX2l4JiM0MzsmIzQzO107XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTA2NjpcdFx0XHRyZXQgPSBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoYWRhcHRlciwgcG9ydCwgZXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA2Ny1cdFx0XHRcdFx0XHRcdCAgICAgY29udGV4dCwgc2tiX3NlbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDc5LVx0XHRcdFx0YWRhcHRlci1cdTAwM2VkYXRhX3NlbnQgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEwODA6XHRcdFx0XHRcdG13aWZpZXhfdXNiX2RhdGFfc2VudChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDgxLVx0XHRcdFx0Lyogbm8gYXZhaWxhYmxlIHVyYiwgcG9zdGNvcHkgcGFja2V0Ki9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA5NS1cdFx0Y29udGV4dCA9IFx1MDAyNnBvcnQtXHUwMDNldHhfZGF0YV9saXN0W3BvcnQtXHUwMDNldHhfZGF0YV9peCYjNDM7JiM0MztdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEwOTY6XHRcdHJldHVybiBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoYWRhcHRlciwgcG9ydCwgZXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA5Ny1cdFx0XHRcdFx0XHQgICAgICBjb250ZXh0LCBza2Jfc2VuZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTExOTpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl90eF9hZ2dyX3RtbyhzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTIwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTEyOS1cdHNwaW5fbG9ja19iaChcdTAwMjZwb3J0LVx1MDAzZXR4X2FnZ3JfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTEzMDpcdGVyciA9IG13aWZpZXhfdXNiX3ByZXBhcmVfdHhfYWdncl9za2IoYWRhcHRlciwgcG9ydCwgXHUwMDI2c2tiX3NlbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExMzEtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNDAtXHRcdGFkYXB0ZXItXHUwMDNlZGF0YV9zZW50ID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTQxOlx0XHRcdG13aWZpZXhfdXNiX2RhdGFfc2VudChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTQyLVx0XHRlcnIgPSAtMTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE0OS1cdHVyYl9jbnh0ID0gXHUwMDI2cG9ydC1cdTAwM2V0eF9kYXRhX2xpc3RbcG9ydC1cdTAwM2V0eF9kYXRhX2l4JiM0MzsmIzQzO107XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE1MDpcdGVyciA9IG13aWZpZXhfdXNiX2NvbnN0cnVjdF9zZW5kX3VyYihhZGFwdGVyLCBwb3J0LCBwb3J0LVx1MDAzZXR4X2RhdGFfZXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE1MS1cdFx0XHRcdFx0ICAgICB1cmJfY254dCwgc2tiX3NlbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTU5LS8qIFRoaXMgZnVuY3Rpb24gd3JpdGUgYSBjb21tYW5kL2RhdGEgcGFja2V0IHRvIGNhcmQuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE2MDpzdGF0aWMgaW50IG13aWZpZXhfdXNiX2hvc3RfdG9fY2FyZChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLCB1OCBlcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTYxLVx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExOTItXHRcdFx0XHRcdGFkYXB0ZXItXHUwMDNlZGF0YV9zZW50ID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTkzOlx0XHRcdFx0XHRcdG13aWZpZXhfdXNiX2RhdGFfc2VudChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTk0LVx0XHRcdFx0XHRyZXR1cm4gLUVCVVNZO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjA4LVx0XHRcdHNwaW5fbG9ja19iaChcdTAwMjZwb3J0LVx1MDAzZXR4X2FnZ3JfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTIwOTpcdFx0XHRyZXQgPSAgbXdpZmlleF91c2JfYWdncl90eF9kYXRhKGFkYXB0ZXIsIGVwLCBza2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIxMC1cdFx0XHRcdFx0XHRcdHR4X3BhcmFtLCBwb3J0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjE4Olx0cmV0dXJuIG13aWZpZXhfdXNiX2NvbnN0cnVjdF9zZW5kX3VyYihhZGFwdGVyLCBwb3J0LCBlcCwgY29udGV4dCwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjE5LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyMjE6c3RhdGljIGludCBtd2lmaWV4X3VzYl90eF9pbml0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIyMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyNTctXHRcdHRpbWVyX3NldHVwKFx1MDAyNnBvcnQtXHUwMDNldHhfYWdnci50aW1lcl9jbnh0LmhvbGRfdGltZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTI1ODpcdFx0XHQgICAgbXdpZmlleF91c2JfdHhfYWdncl90bW8sIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyNTktXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTI2NDpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3J4X2luaXQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjY1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjgwOlx0aWYgKG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoXHUwMDI2Y2FyZC1cdTAwM2VyeF9jbWQsIE1XSUZJRVhfUlhfQ01EX0JVRl9TSVpFKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjgxLVx0XHRyZXR1cm4gLTE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyODktXHRcdFx0cmV0dXJuIC0xO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyOTA6XHRcdGlmIChtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFx1MDAyNmNhcmQtXHUwMDNlcnhfZGF0YV9saXN0W2ldLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyOTEtXHRcdFx0XHRcdCAgICAgIE1XSUZJRVhfUlhfREFUQV9CVUZfU0laRSkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTEyOTk9c3RhdGljIGludCBtd2lmaWV4X3JlZ2lzdGVyX2RldihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEzMzg6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfY2xlYW51cF90eF9hZ2dyKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTMzOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTEzNTk9c3RhdGljIHZvaWQgbXdpZmlleF91bnJlZ2lzdGVyX2RldihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEzNjM6XHRtd2lmaWV4X3VzYl9mcmVlKGNhcmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEzNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTM2NTpcdG13aWZpZXhfdXNiX2NsZWFudXBfdHhfYWdncihhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzY2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xMzcwPXN0YXRpYyBpbnQgbXdpZmlleF9wcm9nX2Z3X3dfaGVscGVyKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTUwNzpzdGF0aWMgaW50IG13aWZpZXhfdXNiX2RubGRfZncoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTA4LVx0XHRcdHN0cnVjdCBtd2lmaWV4X2Z3X2ltYWdlICpmdylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTIzOlx0cmV0ID0gbXdpZmlleF91c2JfcnhfaW5pdChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTI0LVx0aWYgKCFyZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTUyNTpcdFx0cmV0ID0gbXdpZmlleF91c2JfdHhfaW5pdChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTI2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTMwPXN0YXRpYyB2b2lkIG13aWZpZXhfc3VibWl0X3J4X3VyYihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLCB1OCBlcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUzNi1cdCAgICAoIWF0b21pY19yZWFkKFx1MDAyNmNhcmQtXHUwMDNlcnhfY21kX3VyYl9wZW5kaW5nKSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTUzNzpcdFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcdTAwMjZjYXJkLVx1MDAzZXJ4X2NtZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTM4LVx0XHRcdFx0XHQgIE1XSUZJRVhfUlhfQ01EX0JVRl9TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTQzOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfY21kX2V2ZW50X2NvbXBsZXRlKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU0NC1cdFx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTUyPXN0YXRpYyBpbnQgbXdpZmlleF9wbV93YWtldXBfY2FyZChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1NjM6c3RhdGljIHZvaWQgbXdpZmlleF91c2Jfc3VibWl0X3JlbV9yeF91cmJzKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU2NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1NzItXHRcdGN0eCA9IFx1MDAyNmNhcmQtXHUwMDNlcnhfZGF0YV9saXN0W2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1NzM6XHRcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoY3R4LCBNV0lGSUVYX1JYX0RBVEFfQlVGX1NJWkUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1NzQtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTE1ODQ9c3RhdGljIGNvbnN0IHN0cnVjdCBtd2lmaWV4X2lmX29wcyB1c2Jfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTkwLVx0LyogVVNCIHNwZWNpZmljICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5MTpcdC5kbmxkX2Z3ID1cdFx0bXdpZmlleF91c2JfZG5sZF9mdyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTkyOlx0LmNtZHJzcF9jb21wbGV0ZSA9XHRtd2lmaWV4X3VzYl9jbWRfZXZlbnRfY29tcGxldGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5MzpcdC5ldmVudF9jb21wbGV0ZSA9XHRtd2lmaWV4X3VzYl9jbWRfZXZlbnRfY29tcGxldGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5NDpcdC5ob3N0X3RvX2NhcmQgPVx0XHRtd2lmaWV4X3VzYl9ob3N0X3RvX2NhcmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5NTpcdC5zdWJtaXRfcmVtX3J4X3VyYnMgPVx0bXdpZmlleF91c2Jfc3VibWl0X3JlbV9yeF91cmJzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTY6XHQubXVsdGlfcG9ydF9yZXN5bmMgPVx0bXdpZmlleF91c2JfcG9ydF9yZXN5bmMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5NzpcdC5pc19wb3J0X3JlYWR5ID1cdG13aWZpZXhfdXNiX2lzX3BvcnRfcmVhZHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU5OC19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1OTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTYwMDptb2R1bGVfdXNiX2RyaXZlcihtd2lmaWV4X3VzYl9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE2MDEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2NzkKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYG13aWZpZXhfdXNiYCBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG13aWZpZXhgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgbXdpZmlleF91c2JgIHBhcnQuIFRoYXQmIzM5O3MgdGhlIFVTQiBpbnRlcmZhY2UsIHJpZ2h0PyBBbmQgSSByZWNhbGwgdGhhdCBVU0IgZGV2aWNlcyBhcmUgcmlwZSBmb3IgZnV6emluZyB1c2luZyBpbnRlcmZhY2VzIGxpa2UgYGR1bW15X2hjZGAgb3IgYHJhdy1nYWRnZXRgLiBCdXQgd2FpdCwgYG13aWZpZXhfdXNiYCBpcyBhIFVTQiAqaG9zdCogZHJpdmVyLiBJdCAqZHJpdmVzKiBhIFVTQiBkZXZpY2UuIEFoYSEgU3l6a2FsbGVyIGhhcyBhIFVTQiBmdXp6ZXIgc3BlY2lmaWNhbGx5IGZvciBlbXVsYXRpbmcgVVNCIGRldmljZXMgdG8gdGFyZ2V0IGhvc3QgZHJpdmVycy4gVGhhdCBtZWFucyBgbXdpZmlleF91c2JgICppcyogZnV6emFibGUsIGdvb2QsIHRoYXQmIzM5O3Mgd2hhdCBJIHdhcyBob3BpbmcuCgpOb3csIGxldCYjMzk7cyBzZWUgaWYgdGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY2AgYXJlIGFjdHVhbGx5IHJlYWNoYWJsZS4gSSByZW1lbWJlciB0aGUgY2hhbmdlcyBmb2N1c2VkIGFyb3VuZCBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYC4gVGhhdCBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgYG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50YCBhbmQgYG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50YC4gQ29uc2lkZXJpbmcgdGhlIG5hbWVzLCB0aG9zZSBhcmUgdmVyeSBsaWtlbHkgY2FsbGVkIGR1cmluZyB0aGUgcHJvY2Vzc2luZyBvZiBzY2FuIHJlc3VsdHMgb3IsIHBlcmhhcHMsIGJlYWNvbnMuIFNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGVyZSBgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRgIGFuZCBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgIGFyZSBpbnZva2VkLiBUaGF0JiMzOTtsbCBiZSB0aGUga2V5IHRvIHRyaWdnZXJpbmcgdGhlIGNvZGUgaW4gcXVlc3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTQ3PXN0YXRpYyB1OFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNDg6bXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnQoc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsIHUzMiBjaXBoZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE0OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0zNDQ9bXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTQwOC1cdFx0XHQgICAgIGJzc19kZXNjLVx1MDAzZWJjbl9odF9jYXApIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzo0MDk6XHRcdFx0ICAgICFtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudChic3NfZGVzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtNDEwLVx0XHRcdFx0XHRcdFx0Q0lQSEVSX1NVSVRFX0NDTVApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTQxMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6NDEyOlx0XHRcdFx0aWYgKG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTQxMy1cdFx0XHRcdFx0XHQoYnNzX2Rlc2MsIENJUEhFUl9TVUlURV9US0lQKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNjM2CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQsIGFpbWVkIGF0IGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgV1BBIExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUsIGFuZCBJIHNlZSB0aGlzIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAgZnVuY3Rpb24uIEhtbSwgbGV0IG1lIHRoaW5rLi4uIHdoeSBhcmUgd2UgY2hlY2tpbmcgZm9yIHRoZSBXUEEgT1VJPyBXaGF0JiMzOTtzIHRoZSBjb250ZXh0IGhlcmU/IEFyZSB3ZSB2YWxpZGF0aW5nIGEgcmVjZWl2ZWQgZnJhbWUsIHBlcmhhcHM/IE9yIGFyZSB3ZSBpbiB0aGUgcHJvY2VzcyBvZiBnZW5lcmF0aW5nIGFuIGFzc29jaWF0aW9uIHJlcXVlc3Qgb3IgcmVzcG9uc2U/IEtub3dpbmcgdGhhdCB3aWxsIGdyZWF0bHkgaW5mb3JtIG15IGludGVycHJldGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24mIzM5O3MgcHVycG9zZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRhdGEgc3RydWN0dXJlcyBiZWluZyBwYXNzZWQgdG8gaXQuIElzIGl0IG9wZXJhdGluZyBvbiBhIHJhdyBmcmFtZSBidWZmZXIsIGEgcGFyc2VkIElFIChJbmZvcm1hdGlvbiBFbGVtZW50KSBsaXN0LCBvciBzb21lIG90aGVyIHJlcHJlc2VudGF0aW9uPyBBcmUgd2UgY29uY2VybmVkIHdpdGggYSBzcGVjaWZpYyBXUEEgdmVyc2lvbiwgbGlrZSBXUEExIG9yIFdQQTI/IFRoZSBkaWZmZXJlbmNlcyBpbiBob3cgdGhlIE9VSSBpcyBmb3JtYXR0ZWQgbWlnaHQgY2hhbmdlIG15IHVuZGVyc3RhbmRpbmcuIFRoaXMgaXMgbGlrZWx5IHZlcnkgcmVsZXZhbnQgdG8gc2VjdXJpdHkgY29uc2lkZXJhdGlvbnMgYW5kIGxpa2VseSBXUEEgbWlncmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfaXNfd3BhX291aV9wcmVzZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE3Nj1zdGF0aWMgdThcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTc3Om13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50KHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgY2lwaGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MzQ0PW13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0zODktXHRcdFx0ICAgICBic3NfZGVzYy1cdTAwM2ViY25faHRfY2FwKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MzkwOlx0XHRcdCAgICAhbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnQoYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTM5MS1cdFx0XHRcdFx0XHRcdCBDSVBIRVJfU1VJVEVfQ0NNUCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMzkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzozOTM6XHRcdFx0XHRpZiAobXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMzk0LVx0XHRcdFx0XHRcdChic3NfZGVzYywgQ0lQSEVSX1NVSVRFX1RLSVApKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIyNzMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZywgYW5kIHRhaWxvcmVkIGZvciBhIGZlbGxvdyBleHBlcnQ6CgoqKlRyYWNpbmcgdGhlIERlcGVuZGVuY3k6IG13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlKioKClJpZ2h0LCBzbyBJIHNlZSB0d28gZGlzdGluY3QgY2FsbHMgb3JpZ2luYXRpbmcgZnJvbSBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgLiBUaGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWc6IHdoYXQgaXMgdGhlIGNvbnRleHQgaGVyZT8gVW5kZXJzdGFuZGluZyB0aGUgZG93bnN0cmVhbSB1c2FnZSBpcyBjcml0aWNhbC4gQnV0IG1vcmUgaW1wb3J0YW50bHksIEkgbmVlZCB0byBrbm93IHRoZSBvcmlnaW4uIFdoZXJlIGlzIHRoYXQgZnVuY3Rpb24gZXZlbiAqY2FsbGVkKiBmcm9tPyBLbm93aW5nIGl0cyBjYWxsZXJzIHdpbGwgZ2l2ZSBtZSB0aGUgZGlyZWN0aW9uIEkgbmVlZC4gVGhpcyBpcyBhIGNvbW1vbiBkZWJ1Z2dpbmcgdGVjaG5pcXVlIHRvIHVuZGVyc3RhbmQgY29udHJvbCBhbmQgaW5mb3JtYXRpb24gZmxvdy4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB0cmFjaW5nIGJhY2ssIGxvb2tpbmcgZm9yIHRoZSBmdW5jdGlvbnMgb3IgbW9kdWxlcyB0aGF0IGRlcGVuZCBvbiBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgLCBwcm9iYWJseSB1c2luZyBhIGNyb3NzLXJlZmVyZW5jaW5nIHRvb2wuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBhcmNoaXRlY3R1cmUgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MzQzPXN0YXRpYyBzMzJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MzQ0Om13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTM0NS1cdFx0XHQgICAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYywgdTMyIG1vZGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNjE2PWludCBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTYyOC1cdFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BREhPQzpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTYyOTpcdFx0XHRyZXQgPSBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZShwcml2LCBic3NfZGVzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTYzMC1cdFx0XHRcdFx0XHRcdCAgICBwcml2LVx1MDAzZWJzc19tb2RlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4MDEKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRpdmluZyBEZWVwZXIgaW50byBOZXR3b3JrIENvbXBhdGliaWxpdHkqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHRoZSBjb3JlIG9mIHdpcmVsZXNzIG5ldHdvcmtpbmcgaGVyZS4gV2UmIzM5O3ZlIGdvdCB0aGlzIGFyY2hpdGVjdHVyZSwgYW5kIHdlJiMzOTtyZSBhZGRyZXNzaW5nIHRoZSBwb3RlbnRpYWwgZm9yIGhpY2N1cHMuIFdoYXQmIzM5O3MgdGhlIHNwZWNpZmljIGxvZ2ljIGZsb3cgYXJvdW5kIHRoZSBmdW5jdGlvbiBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgb3ZlcmFsbCBwcm9jZXNzLiBJcyBpdCBjaGVja2luZyBmb3IgcHJvdG9jb2wgdmVyc2lvbnMsIHNlY3VyaXR5IHByb3RvY29scywgc3VwcG9ydGVkIGZyZXF1ZW5jaWVzLCBvciBhbGwgb2YgdGhlIGFib3ZlPyBBbmQgd2hhdCBhcmUgdGhlIHNwZWNpZmljIGNyaXRlcmlhIGl0JiMzOTtzIGNvbXBhcmluZyBhZ2FpbnN0PyBJcyBpdCBqdXN0IHZlcmlmeWluZyB0aGUgYmVhY29uIGluZm9ybWF0aW9uPyBEb2VzIGl0IGRlbHZlIGludG8gcHJvYmluZyByZXNwb25zZXMsIHRvbz8gSSYjMzk7bSB3b25kZXJpbmcgaWYgdGhpcyBmdW5jdGlvbiBoYW5kbGVzIHNvbWUgb2YgdGhlIG1vcmUgY29tcGxleCBlZGdlIGNhc2VzIHRoYXQgSSYjMzk7dmUgYmVlbiB3cmVzdGxpbmcgd2l0aCByZWNlbnRseS4gSG93IGNvbXByZWhlbnNpdmUgaXMgdGhlIGNoZWNrPyBEb2VzIGl0IGZsYWcgZGV2aWF0aW9ucyBvciBpcyBpdCBtb3JlIG9mIGEgZ28vbm8tZ28/IE1vcmUgdG8gdGhlIHBvaW50LCBob3cgZG9lcyB0aGUgZnVuY3Rpb24mIzM5O3Mgb3V0cHV0IGFjdHVhbGx5IGFmZmVjdCB0aGUgYXNzb2NpYXRpb24gcHJvY2Vzcz8gRG9lcyBpdCBqdXN0IGxvZyBhbiBlcnJvciwgb3IgZG9lcyBpdCBhY3RpdmVseSBwcmV2ZW50IGEgY29ubmVjdGlvbj8gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdC4gSSYjMzk7bSBrZWVuIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgaW4gdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGUgZHJpdmVyIGFuZCB3aGV0aGVyIGl0IGlzIGJlaW5nIHVzZWQgaW4gdGhlIGJlc3Qgd2F5IGZvciB0aGUgY3VycmVudCBnZW5lcmF0aW9uIG9mIGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNTQxPWludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1NDItXHRcdFx0XHQgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2VudHJ5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTU0MzppbnQgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU0NC1cdFx0XHRcdFx0c3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTU5MT1pbnQgbXdpZmlleF9jbWRfODAyXzExX3NjYW4oc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2MTUtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE2MTY6aW50IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2MTctXHRcdFx0XHRcdHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTcwMz1zdGF0aWMgaW50IG13aWZpZXhfdXBkYXRlX2N1cnJfYnNzX3BhcmFtcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTcxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTcxODpcdHJldCA9IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHByaXYsIGJzc19kZXNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTcxOS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTMxOD1pbnQgbXdpZmlleF9ic3Nfc3RhcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgc3RydWN0IGNmZzgwMjExX2JzcyAqYnNzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0zNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MzYxOlx0XHRyZXQgPSBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eShwcml2LCBic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMzYyLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6NDA5Olx0XHRyZXQgPSBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eShwcml2LCBic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDEwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzg1NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyBhbmQgRnV6emluZyBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGlzIGZ1bmN0aW9uIGlzIHRyaWdnZXJlZCB3aGVuIHdlJiMzOTtyZSBlaXRoZXIgam9pbmluZyBhIEJTUyBvciB1cGRhdGluZyBjdXJyZW50IEJTUyBwYXJhbWV0ZXJzLiBOb3csIGhvdyBjYW4gd2UgYWN0dWFsbHkgKmdldCogdGhlcmU/IEFoYSEgSSBzZWUgaXQmIzM5O3MgcmVhY2hhYmxlIGlmIHdlIGNhbiBzb21laG93IGVtdWxhdGUgdGhlIG13aWZpZXggVVNCIGRldmljZSBhbmQgZmVlZCBpdCBlaXRoZXIgc2NhbiByZXN1bHRzIG9yIGJlYWNvbnMuCgpUaGUgbGlnaHRidWxiIGdvZXMgb247IHNwZWNpZmljYWxseSwgYG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50YCBhbmQgYG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50YCBwYXJzZSBgYnNzX2Rlc2MtJmd0O2Jjbl9yc25faWVgIGFuZCBgYnNzX2Rlc2MtJmd0O2Jjbl93cGFfaWVgLiBUaG9zZSwgaW4gdHVybiwgYXJlIGZpbGxlZCB3aXRoIGRhdGEgZnJvbSBzY2FuIHJlc3VsdHMgb3IgYmVhY29ucyBjb21pbmcgKmZyb20qIHRoZSBkZXZpY2UgaXRzZWxmLgoKU2luY2Ugc3l6a2FsbGVyIGNhbiBhbHJlYWR5IGZ1enogVVNCIGRldmljZXMsIHdlIGNhbiBsZXZlcmFnZSB0aGF0IHRvIHByb3ZpZGUgY29tcGxldGVseSBhcmJpdHJhcnkgZGF0YSB0aHJvdWdoIHRoZSBVU0IgZW5kcG9pbnRzLiBUaGUgZHJpdmVyIHdpbGwgaGFwcGlseSBpbnRlcnByZXQgdGhpcyBhcyBsZWdpdGltYXRlIHNjYW4gcmVzdWx0cyBvciBiZWFjb25zLiBUaGlzIG1lYW5zIHRoYXQgd2Ugc2hvdWxkIGRlZmluaXRlbHkgYmUgYWJsZSB0byB0cmlnZ2VyIHRoaXMgZnVuY3Rpb24sIGFuZCB0aGVyZWZvcmUsIGl0JiMzOTtzIGFic29sdXRlbHkgc29tZXRoaW5nIHdlIHNob3VsZCBwcmlvcml0aXplIGZvciBmdXp6aW5nLgoKQmVmb3JlIG1vdmluZyBmb3J3YXJkLCBsZXQgbWUganVzdCBkb3VibGUgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlIGRyaXZlciBpcyBgTVdJRklFWGAgYW5kLCBzcGVjaWZpY2FsbHksIGBNV0lGSUVYX1VTQmAsIHRoYXQmIzM5O3MgY29ycmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1XSUZJRVgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyOmNvbmZpZyBNV0lGSUVYXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MTI6Y29uZmlnIE1XSUZJRVhfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjYtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4MDYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgdGhlIE1XSUZJRVggRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyB0byBnZXQgc3l6a2FsbGVyIHdvcmtpbmcgb24gdGhlIGBNV0lGSUVYYCBkcml2ZXIsIGFuZCBpdCBsb29rcyBsaWtlIEkgbmVlZCB0byBuYXJyb3cgZG93biBteSB0YXJnZXQuIFRoZXJlJiMzOTtzIGEgZmV3IG9wdGlvbnM6IGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYE1XSUZJRVhfU0RJT2AsIGFuZCBgTVdJRklFWF9QQ0lFYC4gQnV0IHRoaW5raW5nIGFib3V0IGhvdyBzeXprYWxsZXIgd29ya3MsIGZ1enppbmcgVVNCIGlzIHVzdWFsbHkgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgcmlnaHQ/IFNvLCBgTVdJRklFWF9VU0JgIHNlZW1zIGxpa2UgdGhlIG1vc3QgcHJvbWlzaW5nIHBhdGguCgpMZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHBvdGVudGlhbCBjb25maWd1cmF0aW9ucyBvciByZWxhdGVkIG1vZHVsZXMgSSBzaG91bGQgYmUgYXdhcmUgb2YuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnkgYW5nbGVzIGhlcmUuCgpBaCwgSSBmb3VuZCB0aGUgdGFyZ2V0IGZpbGUuIExvb2tzIGxpa2UgdGhlIHByaW1hcnkgYXJlYSBvZiBpbnRlcmVzdCBpcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY2AuIE9rYXksIHRoYXQgY29uZmlybXMgaXQ6IGl0JiMzOTtzIHBhcnQgb2YgdGhlIGBtd2lmaWV4YCBtb2R1bGUuIEdvb2QsIEkgaGF2ZSBhIGNsZWFyIGRpcmVjdGlvbiBub3cuIFRoaXMgZ2l2ZXMgbWUgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgbXkgZnV6emluZyBlZmZvcnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY2FuLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9NYWtlZmlsZT0xNz1td2lmaWV4LXkgJiM0Mzs9IDExbl9yeHJlb3JkZXIub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlOjE4Om13aWZpZXgteSAmIzQzOz0gc2Nhbi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvTWFrZWZpbGUtMTktbXdpZmlleC15ICYjNDM7PSBqb2luLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0yNjU5PW13aWZpZXhfY2ZnODAyMTFfc2NhbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTI2NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoyNjczOlx0LyogQmxvY2sgc2NhbiByZXF1ZXN0IGlmIHNjYW4gb3BlcmF0aW9uIG9yIHNjYW4gY2xlYW51cCB3aGVuIGludGVyZmFjZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjY3NC1cdCAqIGlzIGRpc2FibGVkIGlzIGluIHByb2Nlc3Ncbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTc0Mz1td2lmaWV4X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy03NTItXHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgSU5GTyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6NzUzOlx0XHRcdCAgICBcJiMzNDthYm9ydGluZyBzY2FuIG9uIG5kb19zdG9wXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNzU0LVx0XHRjZmc4MDIxMV9zY2FuX2RvbmUocHJpdi1cdTAwM2VzY2FuX3JlcXVlc3QsIFx1MDAyNmluZm8pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNzYwLVx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIElORk8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjc2MTpcdFx0XHQgICAgXCYjMzQ7YWJvcnRpbmcgYmdzY2FuIG9uIG5kb19zdG9wXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNzYyLVx0XHRtd2lmaWV4X3N0b3BfYmdfc2Nhbihwcml2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE3NDM9bXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4ICoqYnNzX2luZm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNzg5Olx0LyogRmlyc3QgNSBmaWVsZHMgYXJlIGJzc2lkLCBSU1NJKGZvciBsZWdhY3kgc2NhbiBvbmx5KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTc5MC1cdCAqIHRpbWUgc3RhbXAsIGJlYWNvbiBpbnRlcnZhbCwgYW5kIGNhcGFiaWxpdHkgaW5mb3JtYXRpb25cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU4NTcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA0MDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgY29uZmlndXJhdGlvbnMuIFRob3NlIHNlZW0gbGlrZSB0aGUgcmVsZXZhbnQgZW50cnkgcG9pbnRzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBmdW5jdGlvbnMgYXJlIG1vc3QgbGlrZWx5IHRvIHlpZWxkIGludGVyZXN0aW5nIHJlc3VsdHMgd2hlbiBmdXp6ZWQuCgpSaWdodCwgdGhlIGtleSBtb2RpZmllZCBmdW5jdGlvbiBpcyBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYC4gTGV0JiMzOTtzIHNlZSBob3cgaXQmIzM5O3MgdXNlZC4gSXQmIzM5O3MgY2FsbGVkIGJ5IGBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudGAgYW5kIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAsIHdoaWNoIGFyZSwgaW4gdHVybiwgY2FsbGVkIGJ5IGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAuIFNvLCB0aGUgYXR0YWNrIHN1cmZhY2UgaXMgYG13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlYCwgd2hpY2ggaXMgdGhlIG1vc3QgY3JpdGljYWwgZnVuY3Rpb24uIEkgYWxzbyBuZWVkIHRvIGZvY3VzIG9uIGBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudGAgYW5kIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAsIGFuZCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgb3JpZ2luYWwgdnVsbmVyYWJpbGl0eSwgYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAuIFdhaXQsIHRoYXQmIzM5O3MgcmlnaHQsIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIGlzIHN0YXRpYy4gTm8gcHJvYmxlbSwgdGhhdCYjMzk7cyBmaW5lLiBTbyB0aGUgZmluYWwgbGlzdCBvZiBmdW5jdGlvbnMgdG8gZm9jdXMgb24gaXMgYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAsIGBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudGAsIGFuZCBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgLgoKSnVzdCB0byBiZSBjZXJ0YWluLCBsZXQgbWUgdmVyaWZ5IHRoYXQgYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgaXMgaW5kZWVkIHN0YXRpYy4gQWgsIHllcywgaXQgaXMsIGRlY2xhcmVkIGFzIGBzdGF0aWMgdTggbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKHN0cnVjdCBpZV9ib2R5ICppZWJvZHksIHU4ICpvdWksIGludCBpZV9sZW4pYC4KCk5vdywgbGV0JiMzOTtzIHNlZSBpZiBJIG5lZWQgdG8gdGFrZSBvdGhlciBjb25maWd1cmF0aW9ucyBpbnRvIGFjY291bnQuIEFoLCBgTVdJRklFWGAgZGVwZW5kcyBvbiBgTUFDODAyMTFgIGFuZCBgV0xBTmAuIEkgY2FuIGp1c3QgbGlzdCBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgYXMgdGhlIG92ZXJhbGwgY29uZmlndXJhdGlvbnMgdGhhdCBJIG5lZWQgdG8gYmUgY29uY2VybmVkIHdpdGguCgpJIHNob3VsZCBkb3VibGUtY2hlY2sgcmVhY2hhYmlsaXR5IGZyb20gdGhlIFVTQiBwYXRoLiBJIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgaXMgYWxzbyByZWFjaGFibGUgZnJvbSB0aGUgVVNCIHBhdGguIFRoZSBVU0IgZHJpdmVyIHJlY2VpdmVzIGRhdGEgdGhyb3VnaCBgbXdpZmlleF91c2JfcmVjdmAsIHdoaWNoIHRoZW4gY2FsbHMgYG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldGAsIG9yIHNpbWlsYXIuIFRoYXQgbWVhbnMgSSBjYW4gcmVhY2ggdGhvc2UgZnVuY3Rpb25zIHRocm91Z2ggdGhlIFVTQiBlbnRyeXBvaW50LiBHb29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3VzYl9yZWN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTU1PWVudW0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTIzLSAqIERvIG5vdCBjaGVjayBmb3IgZGF0YV9yZWNlaXZlZCBmb3IgVVNCLCBhcyBkYXRhX3JlY2VpdmVkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjEyNDogKiBpcyBoYW5kbGVkIGluIG13aWZpZXhfdXNiX3JlY3YgZm9yIFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMjUtICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTQxPXN0YXRpYyBpbnQgbXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihzdHJ1Y3QgdXJiX2NvbnRleHQgKmN0eCwgaW50IHNpemUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00NS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo0NjpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3JlY3Yoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00Ny1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggZXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTE1Mj1zdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9yeF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxODc6XHRcdHN0YXR1cyA9IG13aWZpZXhfdXNiX3JlY3YoYWRhcHRlciwgc2tiLCBjb250ZXh0LVx1MDAzZWVwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xODgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE5Ni1cdFx0XHQgKiB1cmIgZm9yIGNtZF9lcCB3aWxsIGJlIHJlLXN1Ym1pdHRlZCBpbiBjYWxsYmFja1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE5NzpcdFx0XHQgKiBtd2lmaWV4X3VzYl9yZWN2X2NvbXBsZXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTk4LVx0XHRcdCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzMzNQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIFVTQiBSZWNlaXZlIFBhdGgqKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgVVNCIHJlY2VpdmUgcGF0aCBmb3IgdGhpcyBNYXJ2ZWxsIFdpLUZpIGRyaXZlci4gVGhlIGBtd2lmaWV4X3VzYl9yZWN2YCBmdW5jdGlvbiBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCBpc24mIzM5O3QgaXQ/IFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBpbmNvbWluZyBkYXRhIHBhY2tldHMgZnJvbSB0aGUgVVNCIGludGVyZmFjZS4gVGhlIGNvcmUgcXVlc3Rpb24gaXM6IHdoYXQmIzM5O3MgdGhlIGltbWVkaWF0ZSBuZXh0IHN0ZXAgYWZ0ZXIgdGhlIGBza2JgIGlzIHJlY2VpdmVkPyBJcyB0aGUgZGF0YSBoYW5kbGVkIGRpcmVjdGx5IGJ5IGBtd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXRgIG9yIGBtd2lmaWV4X3Byb2Nlc3NfcnhfcGFja2V0YD8gS25vd2luZyB0aGF0IHF1aWNrbHkgdGVsbHMgbWUgd2hldGhlciBpdCYjMzk7cyBhbiBpbW1lZGlhdGUsIGhpZ2gtcHJpb3JpdHkgcHJvY2Vzc2luZyBzY2VuYXJpbyB2ZXJzdXMgc29tZXRoaW5nIHRoYXQgbWlnaHQgYmUgcHVzaGVkIGludG8gYSB0YXNrbGV0IG9yIHdvcmsgcXVldWUuIEl0JiMzOTtzIGEga2V5IGRpc3RpbmN0aW9uIHdoZW4gdGhpbmtpbmcgYWJvdXQgbGF0ZW5jeSBhbmQgb3ZlcmFsbCBzeXN0ZW0gcmVzcG9uc2l2ZW5lc3MuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgZXhhY3QgY29udHJvbCBmbG93IGhlcmUgdG8gdW5kZXJzdGFuZCBob3cgaW50ZXJydXB0cywgd29ya3F1ZXVlcywgYW5kIGRlZmVycmluZyBoYXBwZW4gaW4gdGhpcyBkcml2ZXIuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF91c2JfcmVjdiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9NDE9c3RhdGljIGludCBtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKHN0cnVjdCB1cmJfY29udGV4dCAqY3R4LCBpbnQgc2l6ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ1LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjQ2OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVjdihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ3LVx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBlcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTUyPXN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE4NzpcdFx0c3RhdHVzID0gbXdpZmlleF91c2JfcmVjdihhZGFwdGVyLCBza2IsIGNvbnRleHQtXHUwMDNlZXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE4OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTk2LVx0XHRcdCAqIHVyYiBmb3IgY21kX2VwIHdpbGwgYmUgcmUtc3VibWl0dGVkIGluIGNhbGxiYWNrXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTk3Olx0XHRcdCAqIG13aWZpZXhfdXNiX3JlY3ZfY29tcGxldGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xOTgtXHRcdFx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MDIzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgbXdpZmlleF91c2JfcmVjdmAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlLiBJJiMzOTttIGFzc3VtaW5nIGl0IGhhbmRsZXMgcmVjZWl2aW5nIGRhdGEgb3ZlciBVU0Igd2l0aGluIHRoZSBNYXJ2ZWxsIFdpLUZpIGRyaXZlciwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoYXQuIEl0JiMzOTtzIGxpa2VseSBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUgZm9yIG1hbmFnaW5nIGluY29taW5nIHBhY2tldHMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBlbnRyeSBwb2ludCBvZiB0aGUgVVNCIGRhdGEgcGF0aCwgdGhlIHR5cGljYWwgZmxvdyBpdCYjMzk7cyBpbnZvbHZlZCBpbiwgYW5kIHdoYXQgaGFwcGVucyBpbiB0aGUgZXZlbnQgb2YgZXJyb3JzLiBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCBieSBsb29raW5nIGF0IGl0cyBpbW1lZGlhdGUgY2FsbHMgYW5kIGNhbGxlZXMgdG8gZ2V0IGEgZmVlbCBmb3IgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBkcml2ZXIgc3RydWN0dXJlLiBVbmRlcnN0YW5kaW5nIHRoZSBkYXRhIHN0cnVjdHVyZXMgaXQgbWFuaXB1bGF0ZXMsIGVzcGVjaWFsbHkgdGhvc2UgcmVsYXRlZCB0byBVU0IgZW5kcG9pbnRzIGFuZCBwYWNrZXQgYnVmZmVycywgd2lsbCBiZSBrZXkuIEkgbmVlZCB0byBnZXQgdGhlIGJpZyBwaWN0dXJlIG9mIGl0cyBjb250ZXh0IHRvIHByb3Blcmx5IGdyYXNwIGl0cyBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA0NjpcdHN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVjdihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuICA0NzpcdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBlcClcbiAgNDg6XHR7XG4gIDQ5Olx0XHR1MzIgcmVjdl90eXBlO1xuICA1MDpcdFx0X19sZTMyIHRtcDtcbiAgNTE6XHRcdGludCByZXQ7XG4gIDUyOlx0XG4gIDUzOlx0XHRpZiAoYWRhcHRlci1cdTAwM2Voc19hY3RpdmF0ZWQpXG4gIDU0Olx0XHRcdG13aWZpZXhfcHJvY2Vzc19oc19jb25maWcoYWRhcHRlcik7XG4gIDU1Olx0XG4gIDU2Olx0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgSU5URl9IRUFERVJfTEVOKSB7XG4gIDU3Olx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuICA1ODpcdFx0XHRcdCAgICBcJiMzNDslczogaW52YWxpZCBza2ItXHUwMDNlbGVuXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4gIDU5Olx0XHRcdHJldHVybiAtMTtcbiAgNjA6XHRcdH1cbiAgNjE6XHRcbiAgNjI6XHRcdHN3aXRjaCAoZXApIHtcbiAgNjM6XHRcdGNhc2UgTVdJRklFWF9VU0JfRVBfQ01EX0VWRU5UOlxuICA2NDpcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFVkVOVCxcbiAgNjU6XHRcdFx0XHQgICAgXCYjMzQ7JXM6IEVQX0NNRF9FVkVOVFxcblwmIzM0OywgX19mdW5jX18pO1xuICA2NjpcdFx0XHRza2JfY29weV9mcm9tX2xpbmVhcl9kYXRhKHNrYiwgXHUwMDI2dG1wLCBJTlRGX0hFQURFUl9MRU4pO1xuICA2NzpcdFx0XHRyZWN2X3R5cGUgPSBsZTMyX3RvX2NwdSh0bXApO1xuICA2ODpcdFx0XHRza2JfcHVsbChza2IsIElOVEZfSEVBREVSX0xFTik7XG4gIDY5Olx0XG4gIDcwOlx0XHRcdHN3aXRjaCAocmVjdl90eXBlKSB7XG4gIDcxOlx0XHRcdGNhc2UgTVdJRklFWF9VU0JfVFlQRV9DTUQ6XG4gIDcyOlx0XHRcdFx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNlIE1XSUZJRVhfU0laRV9PRl9DTURfQlVGRkVSKSB7XG4gIDczOlx0XHRcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcbiAgNzQ6XHRcdFx0XHRcdFx0ICAgIFwmIzM0O0NNRDogc2tiLVx1MDAzZWxlbiB0b28gbGFyZ2VcXG5cJiMzNDspO1xuICA3NTpcdFx0XHRcdFx0cmV0ID0gLTE7XG4gIDc2Olx0XHRcdFx0XHRnb3RvIGV4aXRfcmVzdG9yZV9za2I7XG4gIDc3Olx0XHRcdFx0fSBlbHNlIGlmICghYWRhcHRlci1cdTAwM2VjdXJyX2NtZCkge1xuICA3ODpcdFx0XHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgV0FSTiwgXCYjMzQ7Q01EOiBubyBjdXJyX2NtZFxcblwmIzM0Oyk7XG4gIDc5Olx0XHRcdFx0XHRpZiAoYWRhcHRlci1cdTAwM2Vwc19zdGF0ZSA9PSBQU19TVEFURV9TTEVFUF9DRk0pIHtcbiAgODA6XHRcdFx0XHRcdFx0bXdpZmlleF9wcm9jZXNzX3NsZWVwX2NvbmZpcm1fcmVzcChcbiAgODE6XHRcdFx0XHRcdFx0XHRcdGFkYXB0ZXIsIHNrYi1cdTAwM2VkYXRhLFxuICA4MjpcdFx0XHRcdFx0XHRcdFx0c2tiLVx1MDAzZWxlbik7XG4gIDgzOlx0XHRcdFx0XHRcdHJldCA9IDA7XG4gIDg0Olx0XHRcdFx0XHRcdGdvdG8gZXhpdF9yZXN0b3JlX3NrYjtcbiAgODU6XHRcdFx0XHRcdH1cbiAgODY6XHRcdFx0XHRcdHJldCA9IC0xO1xuICA4NzpcdFx0XHRcdFx0Z290byBleGl0X3Jlc3RvcmVfc2tiO1xuICA4ODpcdFx0XHRcdH1cbiAgODk6XHRcbiAgOTA6XHRcdFx0XHRhZGFwdGVyLVx1MDAzZWN1cnJfY21kLVx1MDAzZXJlc3Bfc2tiID0gc2tiO1xuICA5MTpcdFx0XHRcdGFkYXB0ZXItXHUwMDNlY21kX3Jlc3BfcmVjZWl2ZWQgPSB0cnVlO1xuICA5MjpcdFx0XHRcdGJyZWFrO1xuICA5MzpcdFx0XHRjYXNlIE1XSUZJRVhfVVNCX1RZUEVfRVZFTlQ6XG4gIDk0Olx0XHRcdFx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIHNpemVvZih1MzIpKSB7XG4gIDk1Olx0XHRcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcbiAgOTY6XHRcdFx0XHRcdFx0ICAgIFwmIzM0O0VWRU5UOiBza2ItXHUwMDNlbGVuIHRvbyBzbWFsbFxcblwmIzM0Oyk7XG4gIDk3Olx0XHRcdFx0XHRyZXQgPSAtMTtcbiAgOTg6XHRcdFx0XHRcdGdvdG8gZXhpdF9yZXN0b3JlX3NrYjtcbiAgOTk6XHRcdFx0XHR9XG4gMTAwOlx0XHRcdFx0c2tiX2NvcHlfZnJvbV9saW5lYXJfZGF0YShza2IsIFx1MDAyNnRtcCwgc2l6ZW9mKHUzMikpO1xuIDEwMTpcdFx0XHRcdGFkYXB0ZXItXHUwMDNlZXZlbnRfY2F1c2UgPSBsZTMyX3RvX2NwdSh0bXApO1xuIDEwMjpcdFx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVWRU5ULFxuIDEwMzpcdFx0XHRcdFx0ICAgIFwmIzM0O2V2ZW50X2NhdXNlICUjeFxcblwmIzM0OywgYWRhcHRlci1cdTAwM2VldmVudF9jYXVzZSk7XG4gMTA0Olx0XG4gMTA1Olx0XHRcdFx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNlIE1BWF9FVkVOVF9TSVpFKSB7XG4gMTA2Olx0XHRcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcbiAxMDc6XHRcdFx0XHRcdFx0ICAgIFwmIzM0O0VWRU5UOiBldmVudCBib2R5IHRvbyBsYXJnZVxcblwmIzM0Oyk7XG4gMTA4Olx0XHRcdFx0XHRyZXQgPSAtMTtcbiAxMDk6XHRcdFx0XHRcdGdvdG8gZXhpdF9yZXN0b3JlX3NrYjtcbiAxMTA6XHRcdFx0XHR9XG4gMTExOlx0XG4gMTEyOlx0XHRcdFx0bWVtY3B5KGFkYXB0ZXItXHUwMDNlZXZlbnRfYm9keSwgc2tiLVx1MDAzZWRhdGEgJiM0MztcbiAxMTM6XHRcdFx0XHQgICAgICAgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOLCBza2ItXHUwMDNlbGVuKTtcbiAxMTQ6XHRcbiAxMTU6XHRcdFx0XHRhZGFwdGVyLVx1MDAzZWV2ZW50X3JlY2VpdmVkID0gdHJ1ZTtcbiAxMTY6XHRcdFx0XHRhZGFwdGVyLVx1MDAzZWV2ZW50X3NrYiA9IHNrYjtcbiAxMTc6XHRcdFx0XHRicmVhaztcbiAxMTg6XHRcdFx0ZGVmYXVsdDpcbiAxMTk6XHRcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcbiAxMjA6XHRcdFx0XHRcdCAgICBcJiMzNDt1bmtub3duIHJlY3ZfdHlwZSAlI3hcXG5cJiMzNDssIHJlY3ZfdHlwZSk7XG4gMTIxOlx0XHRcdFx0cmV0ID0gLTE7XG4gMTIyOlx0XHRcdFx0Z290byBleGl0X3Jlc3RvcmVfc2tiO1xuIDEyMzpcdFx0XHR9XG4gMTI0Olx0XHRcdGJyZWFrO1xuIDEyNTpcdFx0Y2FzZSBNV0lGSUVYX1VTQl9FUF9EQVRBOlxuIDEyNjpcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBEQVRBLCBcJiMzNDslczogRVBfREFUQVxcblwmIzM0OywgX19mdW5jX18pO1xuIDEyNzpcdFx0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2UgTVdJRklFWF9SWF9EQVRBX0JVRl9TSVpFKSB7XG4gMTI4Olx0XHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXG4gMTI5Olx0XHRcdFx0XHQgICAgXCYjMzQ7REFUQTogc2tiLVx1MDAzZWxlbiB0b28gbGFyZ2VcXG5cJiMzNDspO1xuIDEzMDpcdFx0XHRcdHJldHVybiAtMTtcbiAxMzE6XHRcdFx0fVxuIDEzMjpcdFxuIDEzMzpcdFx0XHRza2JfcXVldWVfdGFpbChcdTAwMjZhZGFwdGVyLVx1MDAzZXJ4X2RhdGFfcSwgc2tiKTtcbiAxMzQ6XHRcdFx0YWRhcHRlci1cdTAwM2VkYXRhX3JlY2VpdmVkID0gdHJ1ZTtcbiAxMzU6XHRcdFx0YXRvbWljX2luYyhcdTAwMjZhZGFwdGVyLVx1MDAzZXJ4X3BlbmRpbmcpO1xuIDEzNjpcdFx0XHRicmVhaztcbiAxMzc6XHRcdGRlZmF1bHQ6XG4gMTM4Olx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuIDEzOTpcdFx0XHRcdCAgICBcJiMzNDslczogdW5rbm93biBlbmRwb3J0ICUjeFxcblwmIzM0OywgX19mdW5jX18sIGVwKTtcbiAxNDA6XHRcdFx0cmV0dXJuIC0xO1xuIDE0MTpcdFx0fVxuIDE0MjpcdFxuIDE0MzpcdFx0cmV0dXJuIC1FSU5QUk9HUkVTUztcbiAxNDQ6XHRcbiAxNDU6XHRleGl0X3Jlc3RvcmVfc2tiOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTc1NAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLgoKKipEaXZpbmcgaW50byB0aGUgTWFydmVsbCBXaS1GaSBEcml2ZXImIzM5O3MgUmVjZWl2ZSBQYXRoKioKClJpZ2h0LCBzbyBJJiMzOTttIHRyeWluZyB0byB0cmFjZSB0aGUgcGF0aCB0aGUgTWFydmVsbCBXaS1GaSBkcml2ZXIgdGFrZXMgd2hlbiBpdCByZWNlaXZlcyBkYXRhLiBGcm9tIHdoYXQgSSBjYW4gc2VlLCBgbXdpZmlleF91c2JfcmVjdmAgc2VlbXMgdG8gYmUgdGhlIGluaXRpYWwgZW50cnkgcG9pbnQsIGhhbmRsaW5nIHRoZSBxdWV1aW5nIG9mIGJvdGggZXZlbnRzIGFuZCBjb21tYW5kcy4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgdGhlIFVTQiByZWNlaXZlIGZ1bmN0aW9uLCBzbyBpdCYjMzk7cyBnb3QgdG8gbWFuYWdlIHRoZSBpbmNvbWluZyBkYXRhIHN0cmVhbXMuIFRoZW4sIGBtd2lmaWV4X21haW5fcHJvY2Vzc2AgdGFrZXMgb3ZlciwgcHVsbGluZyB0aG9zZSBxdWV1ZWQgaXRlbXMgYW5kIHByb2Nlc3NpbmcgdGhlbS4gVGhpcyBpcyB0aGUgaGVhcnQgb2YgdGhlIHJlY2VpdmUgaGFuZGxpbmcuIEl0IGxvb2tzIGxpa2UgaXQgZGVsZWdhdGVzIHRvIHR3byBrZXkgZnVuY3Rpb25zOiBgbXdpZmlleF9wcm9jZXNzX2NtZHJlc3BgIGFuZCBgbXdpZmlleF9wcm9jZXNzX2V2ZW50YC4gT2J2aW91c2x5LCB0aGUgZXZlbnQgcHJvY2Vzc29yIHdpbGwgaGFuZGxlIGV2ZW50cywgYnV0IHRoZSBjb21tYW5kIHJlc3BvbnNlIHByb2Nlc3NvciwgYG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwYCBpcyBtb3JlIGludGVyZXN0aW5nIGluIG15IGN1cnJlbnQgZm9jdXMuIEkgc2VlIHRoYXQgYG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwYCBpcyByZXNwb25zaWJsZSBmb3IgZGVhbGluZyB3aXRoIGNvbW1hbmQgcmVzcG9uc2VzLCBhbmQsIGNydWNpYWxseSwgdGhhdCBpbmNsdWRlcyB0aGluZ3MgbGlrZSBzY2FuIHJlc3VsdHMuIEFoYSEgSSB0aGluayBJJiMzOTt2ZSBmb3VuZCB3aGVyZSBJIG5lZWQgdG8gbG9vay4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byBgbXdpZmlleF9wcm9jZXNzX2NtZHJlc3BgIHRvIGZpZ3VyZSBvdXQgdGhlIHNwZWNpZmljcyBvZiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHRob3NlIHNjYW4gcmVzdWx0cy4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfcHJvY2Vzc19jbWRyZXNwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmM9NzQxPWludCBtd2lmaWV4X2V4ZWNfbmV4dF9jbWQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtODAyLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jOjgwMzppbnQgbXdpZmlleF9wcm9jZXNzX2NtZHJlc3Aoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy04MDQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYz0xMDg1PW13aWZpZXhfY2FuY2VsX3BlbmRpbmdfaW9jdGwoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtMTA5My1cdFx0Lyogc2V0dGluZyBjdXJyX2NtZCB0byBOVUxMIGlzIHF1aXRlIGRhbmdlcm91cywgYmVjYXVzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jOjEwOTQ6XHRcdCAqIG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwIGNoZWNrcyBjdXJyX2NtZCB0byBiZSAhPSBOVUxMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtMTA5NS1cdFx0ICogYXQgdGhlIGJlZ2lubmluZyB0aGVuIHJlbGllcyBvbiBpdCBhbmQgZGVyZWZlcmVuY2VzXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0yNDg9aW50IG13aWZpZXhfbWFpbl9wcm9jZXNzKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0zNTYtXHRcdFx0YWRhcHRlci1cdTAwM2VjbWRfcmVzcF9yZWNlaXZlZCA9IGZhbHNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzozNTc6XHRcdFx0bXdpZmlleF9wcm9jZXNzX2NtZHJlc3AoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTM1OC1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTEwMD1pbnQgbXdpZmlleF9leGVjX25leHRfY21kKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMTAxOmludCBtd2lmaWV4X3Byb2Nlc3NfY21kcmVzcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTEwMi12b2lkIG13aWZpZXhfcHJvY2Vzc19hc3NvY19yZXNwKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTMxPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYzozMjptd2lmaWV4X3Byb2Nlc3NfY21kcmVzcF9lcnJvcihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMzMtXHRcdFx0ICAgICAgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM9MTIxMj1pbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUxNiBjbWRyZXNwX25vLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyMjAtXHRpZiAocmVzcC1cdTAwM2VyZXN1bHQgIT0gSG9zdENtZF9SRVNVTFRfT0spIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjEyMjE6XHRcdG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwX2Vycm9yKHByaXYsIHJlc3ApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTIyMi1cdFx0cmV0dXJuIC0xO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTAzMAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByb2Nlc3MsIGJyZWFraW5nIGl0IGRvd24gaW4gbXkgb3duIGhlYWQ6CgoqKkFuYWx5emluZyB0aGUgU2NhbiBDb21tYW5kIFJlc3BvbnNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIHN5c3RlbSBwcm9jZXNzZXMgYSByZXNwb25zZSB0byBhIHNjYW4gY29tbWFuZCwgc3BlY2lmaWNhbGx5LCB0aGUgYEhvc3RDbWRfQ01EXzgwMl8xMV9TQ0FOYCBjb21tYW5kLiBUaGUgZnVuY3Rpb24gYG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcGAgaXMgdGhlIG9uZSB0aGF0JiMzOTtzIGRlYWxpbmcgd2l0aCBpdC4gSSYjMzk7ZCBleHBlY3QgaXQgdG8gaGFuZGxlIHRoZSBpbml0aWFsIHBhcnNpbmcgYW5kIGFueSBjb21tYW5kLXNwZWNpZmljIGxvZ2ljIGZvciB0aGlzIHJlc3BvbnNlLiBDcnVjaWFsbHksIEkgc2VlIHRoYXQgaXQgY2FsbHMgYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYC4gVGhpcyBpcyBrZXkuIFRoZSBuYW1lIHRlbGxzIG1lIHRoYXQgdGhpcyBpcyB3aGVyZSB0aGUgKnJldHVybiogb3IsIHJhdGhlciwgcHJvY2Vzc2luZyBvZiB0aGUgc2NhbiByZXN1bHRzIGFjdHVhbGx5IGhhcHBlbnMuCgpUaGVyZWZvcmUsIGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAgaXMgcmVzcG9uc2libGUgZm9yIHRha2luZyB0aGUgcmF3IGRhdGEgZnJvbSB0aGUgc2NhbiBhbmQgdHVybmluZyBpdCBpbnRvIHNvbWV0aGluZyB1c2FibGUuIFRoaXMgbGlrZWx5IGludm9sdmVzIGRlY29kaW5nIHRoZSBmb3JtYXQgb2YgdGhlIHNjYW4gcmVzdWx0cywgb3JnYW5pemluZyB0aGUgZGF0YSwgYW5kIHBvc3NpYmx5IGFwcGx5aW5nIHNvbWUgZmlsdGVyaW5nIG9yIGVycm9yIGNoZWNraW5nLCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIHRoZSB3aG9sZSBwcm9jZXNzIGZvciBkZWFsaW5nIHdpdGggc2NhbiByZXNwb25zZXMuIFRoZSBpbnRlcmVzdGluZyBwb2ludHMsIG9mIGNvdXJzZSwgbGllIHdpdGhpbiB0aGUgYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYCBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9yZXRfODAyXzExX3NjYW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTE1Nz12b2lkIG13aWZpZXhfcXVldWVfc2Nhbl9jbWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTE1OC1cdFx0XHQgICAgc3RydWN0IGNtZF9jdHJsX25vZGUgKmNtZF9ub2RlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTE1OTppbnQgbXdpZmlleF9yZXRfODAyXzExX3NjYW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTE2MC1cdFx0XHQgICAgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTIzOT1pbnQgbXdpZmlleF9jbWRfODAyXzExX3NjYW5fZXh0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMjQxLVx0XHRcdFx0dm9pZCAqZGF0YV9idWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMjQyOmludCBtd2lmaWV4X3JldF84MDJfMTFfc2Nhbl9leHQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTI0My1cdFx0XHRcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTExMjc9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTEyODptd2lmaWV4X3JldF84MDJfMTFfc2Nhbl9nZXRfdGx2X3B0cnMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTEyOS1cdFx0XHRcdCAgICAgc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZGF0YSAqdGx2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MjA1NT12b2lkIG13aWZpZXhfY2FuY2VsX3NjYW4oc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIxMDEtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjIxMDI6aW50IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIxMDMtXHRcdFx0ICAgIHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjE3MS1cdCAgIFRMVnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MjE3MjpcdG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2dldF90bHZfcHRycyhhZGFwdGVyLCB0bHZfZGF0YSwgdGx2X2J1Zl9zaXplLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yMTczLVx0XHRcdFx0XHQgICAgIFRMVl9UWVBFX1RTRlRJTUVTVEFNUCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIxNzgtXHQgICBUTFZzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjIxNzk6XHRtd2lmaWV4X3JldF84MDJfMTFfc2Nhbl9nZXRfdGx2X3B0cnMoYWRhcHRlciwgdGx2X2RhdGEsIHRsdl9idWZfc2l6ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjE4MC1cdFx0XHRcdFx0ICAgICBUTFZfVFlQRV9DSEFOTkVMQkFORExJU1QsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0yNDg5PW13aWZpZXhfdXBkYXRlX2NoYW5fc3RhdGlzdGljcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjUzMS0vKiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgdGhlIGNvbW1hbmQgcmVzcG9uc2Ugb2YgZXh0ZW5kZWQgc2NhbiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoyNTMyOmludCBtd2lmaWV4X3JldF84MDJfMTFfc2Nhbl9leHQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjUzMy1cdFx0XHRcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTEyMTI9aW50IG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kcmVzcF9ubyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMjQzLVx0Y2FzZSBIb3N0Q21kX0NNRF84MDJfMTFfU0NBTjpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjEyNDQ6XHRcdHJldCA9IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuKHByaXYsIHJlc3ApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTI0NS1cdFx0YWRhcHRlci1cdTAwM2VjdXJyX2NtZC1cdTAwM2V3YWl0X3FfZW5hYmxlZCA9IGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyNDctXHRjYXNlIEhvc3RDbWRfQ01EXzgwMl8xMV9TQ0FOX0VYVDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjEyNDg6XHRcdHJldCA9IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2V4dChwcml2LCByZXNwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyNDktXHRcdGFkYXB0ZXItXHUwMDNlY3Vycl9jbWQtXHUwMDNld2FpdF9xX2VuYWJsZWQgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMjUxLVx0Y2FzZSBIb3N0Q21kX0NNRF84MDJfMTFfQkdfU0NBTl9RVUVSWTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjEyNTI6XHRcdHJldCA9IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuKHByaXYsIHJlc3ApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTI1My1cdFx0Y2ZnODAyMTFfc2NoZWRfc2Nhbl9yZXN1bHRzKHByaXYtXHUwMDNld2Rldi53aXBoeSwgMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyOTIxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNjc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYG13aWZpZXhgIERyaXZlciYjMzk7cyBTZWN1cml0eSBGb290cHJpbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgYW5hbHlzaXMgc3RhcnRzIHdpdGggaG93IHRoZSBzY2FuIHJlc3BvbnNlIGlzIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgZGF0YSBmbG93LiBUaGUgZnVuY3Rpb24gYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYCBwYXJzZXMgdGhlIHJlc3BvbnNlIGFuZCBldmVudHVhbGx5IGZ1bm5lbHMgaXQgdGhyb3VnaCBgbXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmYC4gVGhpcyBwb3B1bGF0ZXMgdGhlIGBic3NfZGVzY2Agc3RydWN0dXJlLCB0aGVuIGNhbGxzIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYC4KCk5vdywgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gSSBzZWUgdGhhdCBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgIGlzIGNhbGxlZCwgbm90IGRpcmVjdGx5LCBidXQgdGhyb3VnaCB0aGUgY2FsbCB0byBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLiBMb29raW5nIGF0IHRoZSBjYWxscyB0byBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgIHN1Z2dlc3RzIGEga2V5IHBhdGguIEkga25vdyB0aGF0IGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAgaXMgaW52b2tlZCBkdXJpbmcgYm90aCBuZXR3b3JrIGpvaW5zICh2aWEgYG13aWZpZXhfYnNzX3N0YXJ0YCBhbmQgYG13aWZpZXhfdXBkYXRlX2N1cnJfYnNzX3BhcmFtc2ApLgoKU28sIEkgY2FuIGNyYWZ0IGFuIGF0dGFjayBieSBzZW5kaW5nIGEgc2NhbiByZXNwb25zZSwgYW5kIHRoZW4gdHJpZ2dlcmluZyBhIGpvaW4gcmVxdWVzdCAodXNpbmcgbmw4MDIxMSkuIFRoaXMgd2lsbCBpbnZva2UgZWl0aGVyIGBtd2lmaWV4X2Jzc19zdGFydGAgb3IgYG13aWZpZXhfdXBkYXRlX2N1cnJfYnNzX3BhcmFtc2AgYW5kIHRyaWdnZXIgdGhpcyBjb21wYXRpYmlsaXR5IGNoZWNrLiBBbHNvLCBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCBpcyBhbHNvIGNhbGxlZCBmcm9tIGFzc29jaWF0aW9uIGFuZCBhZC1ob2Mgc3RhcnQuCgpUaGlua2luZyBhYm91dCBhbiBhc3NvY2lhdGlvbiByZXNwb25zZSwgaXQgZ2V0cyBldmVuIGJldHRlci4gV2hlbiBJIGVtdWxhdGUgYW4gYXNzb2NpYXRpb24gcmVzcG9uc2UsIEkga25vdyBJJiMzOTtsbCBoaXQgYG13aWZpZXhfcmV0XzgwMl8xMV9hc3NvY2lhdGVgLiBUaGlzLCBpbiB0dXJuLCBjYWxscyBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCwgd2hpY2ggdGhlbiB0cmlnZ2VycyBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLiBUaGlzIGV2ZW50dWFsbHkgY2FsbHMgYG13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlYCwgd2hpY2ggYnJhbmNoZXMgb3V0IHRvIGNhbGwgYG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50YCBhbmQgYG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50YC4gVGhlc2UsIHVsdGltYXRlbHksIGNhbGwgYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAuCgpUaGUgZGF0YSBmbG93IGlzIHByZXR0eSBjbGVhcmx5IGxhaWQgb3V0OiBgbXdpZmlleF91c2JfcmVjdmAgLSZndDsgYG13aWZpZXhfbWFpbl9wcm9jZXNzYCAtJmd0OyBgbXdpZmlleF9wcm9jZXNzX2NtZHJlc3BgIC0mZ3Q7IGBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2NtZHJlc3BgIC0mZ3Q7IGBtd2lmaWV4X3JldF84MDJfMTFfYXNzb2NpYXRlYCAtJmd0OyBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCAtJmd0OyBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgIC0mZ3Q7IGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAgLSZndDsgYG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50YCAvIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAgLSZndDsgYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAuCgpUaGlzIHBhdGggaXMgKmhpZ2hseSogcmVhY2hhYmxlIGFuZCByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBwYXJ0IG9mIHRoZSBkcml2ZXIuCgpNeSBmb2N1cyBpcyBwcmltYXJpbHkgb24gdGhlc2Ugc3ltYm9scywgd2hpY2ggaXMgd2hlcmUgYW55IHZ1bG5lcmFiaWxpdHkgaXMgbGlrZWx5IHRvIGJlIGV4cG9zZWQ6Ci0gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAKLSBgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRgCi0gYG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50YAotIGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAKLSBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgCgpGaW5hbGx5LCBjb25maWd1cmF0aW9uLXdpc2UsIEkgc2hvdWxkIGNoZWNrIHRoYXQgYE1XSUZJRVhgIGFuZCBgTVdJRklFWF9VU0JgIGFyZSBlbmFibGVkLiBJJiMzOTtsbCBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZmlsZSBpbiB0aGUgZHJpdmVyIGRpcmVjdG9yeSB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE1XSUZJRVhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gQ0ZHODAyMTFcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcbiAgIDc6XHRcdCAgODAyLjExbi9hYyBjaGlwc2V0cy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcbiAgMTA6XHRcdCAgbXdpZmlleC5cbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgTVdJRklFWF9TRElPXG4gIDEzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1wmIzM0O1xuICAxNDpcdFx0ZGVwZW5kcyBvbiBNV0lGSUVYIFx1MDAyNlx1MDAyNiBNTUNcbiAgMTU6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgMTY6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICAxOTpcdFx0ICA4Nzg2Lzg3ODcvODc5Ny84ODg3Lzg4OTcvODk3Ny84OTc4Lzg5ODcvODk5NyBjaGlwc2V0cyB3aXRoXG4gIDIwOlx0XHQgIFNESU8gaW50ZXJmYWNlLiBTRDg5NzggaXMgYWxzbyBrbm93biBhcyBOWFAgSVc0MTYuXG4gIDIxOlx0XG4gIDIyOlx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDIzOlx0XHQgIG13aWZpZXhfc2Rpby5cbiAgMjQ6XHRcbiAgMjU6XHRjb25maWcgTVdJRklFWF9QQ0lFXG4gIDI2Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XCYjMzQ7XG4gIDI3Olx0XHRkZXBlbmRzIG9uIE1XSUZJRVggXHUwMDI2XHUwMDI2IFBDSVxuICAyODpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAyOTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDMwOlx0XHRoZWxwXG4gIDMxOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXG4gIDMyOlx0XHQgIDg3NjYvODg5Ny84OTk3IGNoaXBzZXRzIHdpdGggUENJZSBpbnRlcmZhY2UuXG4gIDMzOlx0XG4gIDM0Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDM1Olx0XHQgIG13aWZpZXhfcGNpZS5cbiAgMzY6XHRcbiAgMzc6XHRjb25maWcgTVdJRklFWF9VU0JcbiAgMzg6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XCYjMzQ7XG4gIDM5Olx0XHRkZXBlbmRzIG9uIE1XSUZJRVggXHUwMDI2XHUwMDI2IFVTQlxuICA0MDpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICA0MTpcdFx0aGVscFxuICA0MjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICA0MzpcdFx0ICA4Nzk3Lzg5OTcgY2hpcHNldCB3aXRoIFVTQiBpbnRlcmZhY2UuXG4gIDQ0Olx0XG4gIDQ1Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDQ2Olx0XHQgIG13aWZpZXhfdXNiLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTE2MwoJCQkJCQkJb3V0cHV0OiAyNDUKCQkJCQkJCXRob3VnaHRzOiAyNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBtd2lmaWV4YCBEcml2ZXIgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgY29yZSBpc3N1ZSBpcyB0aGlzOiBhIHBhdGNoIGFkZHMgY3J1Y2lhbCBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYG13aWZpZXhgIGRyaXZlci4gVGhpcyBpcyBhIHRlbGwuIEkmIzM5O20gc2VlaW5nIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXR5IGJlaW5nIGFkZHJlc3NlZC4gVGhlIGZ1bmN0aW9uJiMzOTtzIHB1cnBvc2UgaXMgcGFyc2luZyBSU04vV1BBIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpLiBJdCYjMzk7cyB0cmlnZ2VyZWQgd2hlbiB0aGUgZHJpdmVyIHByb2Nlc3NlcyBzY2FuIHJlc3VsdHMgb3IgYXNzb2NpYXRpb24gcmVzcG9uc2VzLgoKTm93LCB0aGUgaW1wb3J0YW50IHBhcnQ6IHRoaXMgYG13aWZpZXhgIGRyaXZlciBhbHNvIGhhcyBhIFVTQiBjb21wb25lbnQsIGBtd2lmaWV4X3VzYmAuIFRoaXMgaXMgY3JpdGljYWwgYmVjYXVzZSBpdCBpbnRyb2R1Y2VzIGEgZGlyZWN0IGZ1enppbmcgdmVjdG9yLiBJIGNhbiBlbXVsYXRlIGEgTWFydmVsbCBXaS1GaSBVU0IgZGV2aWNlIHVzaW5nIHRoZSBVU0Igc3Vic3lzdGVtLCBlbXBsb3lpbmcgc29tZXRoaW5nIGxpa2UgYGR1bW15X2hjZGAgb3IgYHJhdy1nYWRnZXRgLiBUaGF0IGFsbG93cyBtZSB0byBjcmFmdCBhbmQgaW5qZWN0IG1hbGljaW91cyBzY2FuIG9yIGFzc29jaWF0aW9uIHJlc3BvbnNlcyBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoaXMgdnVsbmVyYWJsZSBmdW5jdGlvbi4gVGhlIFVTQiBwYXRoIGdpdmVzIG1lIHRoZSBjb250cm9sIEkgbmVlZCB0byByZWFjaCBpdC4KClRoZXJlZm9yZSwgdGhpcyBmdW5jdGlvbmFsIGNoYW5nZSBpcyByZWFjaGFibGUgYW5kIHZ1bG5lcmFibGUuIEl0ICptdXN0KiBiZSBmdXp6ZWQgcmlnb3JvdXNseS4gSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHM6IGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgLCBgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRgLCBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgLCBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgLCBhbmQgYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YC4gVGhleSBhcmUgYWxsIHBhcnQgb2YgdGhlIHJlbGV2YW50IGNvZGUgcGF0aC4KClRvIHJlY3JlYXRlIHRoZSBlbnZpcm9ubWVudCwgSSYjMzk7bGwgbmVlZCBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgZW5hYmxlZC4gV2l0aCB0aGF0IHNldHVwIGluIHBsYWNlLCBJIGNhbiBnZXQgdG8gd29yay4KClRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfc2VhcmNoX291aV9pbl9pZSYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZSYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwYXJzaW5nIFJTTi9XUEEgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgc2NhbiByZXN1bHRzIG9yIGFzc29jaWF0aW9uIHJlc3BvbnNlcyBjb250YWluaW5nIHRoZXNlIElFcy4gU2luY2UgYG13aWZpZXhgIGhhcyBhIFVTQiBkcml2ZXIgKGBtd2lmaWV4X3VzYmApLCBpdCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIHN1YnN5c3RlbSAoZS5nLiwgdXNpbmcgZHVtbXlfaGNkL3Jhdy1nYWRnZXQpIGJ5IGVtdWxhdGluZyBhIE1hcnZlbGwgV2ktRmkgVVNCIGRldmljZSBhbmQgc2VuZGluZyBtYWxpY2lvdXMgc2Nhbi9hc3NvY2lhdGlvbiByZXNwb25zZXMuIFRoZXJlZm9yZSwgdGhpcyBmdW5jdGlvbmFsIGNoYW5nZSBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcGFyc2luZyBSU04vV1BBIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB3aGVuIHRoZSBkcml2ZXIgcHJvY2Vzc2VzIHNjYW4gcmVzdWx0cyBvciBhc3NvY2lhdGlvbiByZXNwb25zZXMgY29udGFpbmluZyB0aGVzZSBJRXMuIFNpbmNlIGBtd2lmaWV4YCBoYXMgYSBVU0IgZHJpdmVyIChgbXdpZmlleF91c2JgKSwgaXQgY2FuIGJlIGZ1enplZCB2aWEgdGhlIFVTQiBzdWJzeXN0ZW0gKGUuZy4sIHVzaW5nIGR1bW15X2hjZC9yYXctZ2FkZ2V0KSBieSBlbXVsYXRpbmcgYSBNYXJ2ZWxsIFdpLUZpIFVTQiBkZXZpY2UgYW5kIHNlbmRpbmcgbWFsaWNpb3VzIHNjYW4vYXNzb2NpYXRpb24gcmVzcG9uc2VzLiBUaGVyZWZvcmUsIHRoaXMgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjc6MjAuNzY2OTM5MzQyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYxNTQ3NDE1MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVcIixcbiAgICBcIm13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50XCIsXG4gICAgXCJtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudFwiLFxuICAgIFwibXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVcIixcbiAgICBcIm13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcGFyc2luZyBSU04vV1BBIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB3aGVuIHRoZSBkcml2ZXIgcHJvY2Vzc2VzIHNjYW4gcmVzdWx0cyBvciBhc3NvY2lhdGlvbiByZXNwb25zZXMgY29udGFpbmluZyB0aGVzZSBJRXMuIFNpbmNlIGBtd2lmaWV4YCBoYXMgYSBVU0IgZHJpdmVyIChgbXdpZmlleF91c2JgKSwgaXQgY2FuIGJlIGZ1enplZCB2aWEgdGhlIFVTQiBzdWJzeXN0ZW0gKGUuZy4sIHVzaW5nIGR1bW15X2hjZC9yYXctZ2FkZ2V0KSBieSBlbXVsYXRpbmcgYSBNYXJ2ZWxsIFdpLUZpIFVTQiBkZXZpY2UgYW5kIHNlbmRpbmcgbWFsaWNpb3VzIHNjYW4vYXNzb2NpYXRpb24gcmVzcG9uc2VzLiBUaGVyZWZvcmUsIHRoaXMgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyNzoyMC43NjY5NDgxNDJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNTI1MDczMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGFjYWMxZWQyMmE5YTQyNDg5ZDU5M2RmOTFlODM0YzYzNGY4Y2UzZmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMTYgMDI6Mjc6MTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcXG5pbmRleCA5N2MwZWMzYjgyMmU3MC4uMzNlZjhhZjBhNWUxM2QgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcXG5AQCAtMTA0LDEyICsxMDQsMjEgQEAgaGFzX3ZlbmRvcl9oZHIoc3RydWN0IGllZWVfdHlwZXNfdmVuZG9yX3NwZWNpZmljICppZSwgdTgga2V5KVxcbiAgKiBhIGdpdmVuIG91aSBpbiBQVEsuXFxuICAqL1xcbiBzdGF0aWMgdThcXG4tbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKHN0cnVjdCBpZV9ib2R5ICppZWJvZHksIHU4ICpvdWkpXFxuK213aWZpZXhfc2VhcmNoX291aV9pbl9pZShzdHJ1Y3QgaWVfYm9keSAqaWVib2R5LCB1OCAqb3VpLCBpbnQgaWVfbGVuKVxcbiB7XFxuK1xcdGNvbnN0IHNpemVfdCBwdGtfYm9keV9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgaWVfYm9keSwgcHRrX2JvZHkpO1xcbiBcXHR1OCBjb3VudDtcXG4gXFxuK1xcdC8qIE5lZWQgZ3JwX2tleV9vdWlbNF0gKyBwdGtfY250WzJdIGJlZm9yZSByZWFkaW5nIHRoZSBPVUkgY291bnQuICovXFxuK1xcdGlmIChpZV9sZW4gXFx1MDAzYyAoaW50KXB0a19ib2R5X29mZnNldClcXG4rXFx0XFx0cmV0dXJuIE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xcbitcXG4gXFx0Y291bnQgPSBpZWJvZHktXFx1MDAzZXB0a19jbnRbMF07XFxuIFxcbitcXHQvKiBSZWplY3QgYW4gT1VJIGNvdW50IHdob3NlIGxpc3Qgd291bGQgcnVuIHBhc3QgdGhlIGVsZW1lbnQuICovXFxuK1xcdGlmIChwdGtfYm9keV9vZmZzZXQgKyBjb3VudCAqIHNpemVvZihpZWJvZHktXFx1MDAzZXB0a19ib2R5KSBcXHUwMDNlIChzaXplX3QpaWVfbGVuKVxcbitcXHRcXHRyZXR1cm4gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XFxuK1xcbiBcXHQvKiBUaGVyZSBjb3VsZCBiZSBtdWx0aXBsZSBPVUlzIGZvciBQVEsgaGVuY2VcXG4gXFx0ICAgMSkgVGFrZSB0aGUgbGVuZ3RoLlxcbiBcXHQgICAyKSBDaGVjayBhbGwgdGhlIE9VSXMgZm9yIEFFUy5cXG5AQCAtMTQzLDExICsxNTIsMTQgQEAgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnQoc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsIHUzMiBjaXBoZXIpXFxuIFxcdHU4IHJldCA9IE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xcbiBcXG4gXFx0aWYgKGhhc19pZWVlX2hkcihic3NfZGVzYy1cXHUwMDNlYmNuX3Jzbl9pZSwgV0xBTl9FSURfUlNOKSkge1xcbitcXHRcXHRpbnQgaWVfbGVuID0gKGludClic3NfZGVzYy1cXHUwMDNlYmNuX3Jzbl9pZS1cXHUwMDNlaWVlZV9oZHIubGVuIC1cXG4rXFx0XFx0XFx0ICAgICBSU05fR1RLX09VSV9PRkZTRVQ7XFxuK1xcbiBcXHRcXHRpZWJvZHkgPSAoc3RydWN0IGllX2JvZHkgKilcXG4gXFx0XFx0XFx0ICgoKHU4ICopIGJzc19kZXNjLVxcdTAwM2ViY25fcnNuX2llLVxcdTAwM2VkYXRhKSArXFxuIFxcdFxcdFxcdCAgUlNOX0dUS19PVUlfT0ZGU0VUKTtcXG4gXFx0XFx0b3VpID0gXFx1MDAyNm13aWZpZXhfcnNuX291aVtjaXBoZXJdWzBdO1xcbi1cXHRcXHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWkpO1xcbitcXHRcXHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWksIGllX2xlbik7XFxuIFxcdFxcdGlmIChyZXQpXFxuIFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG5AQCAtMTY5LDEwICsxODEsMTQgQEAgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnQoc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsIHUzMiBjaXBoZXIpXFxuIFxcdHU4IHJldCA9IE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xcbiBcXG4gXFx0aWYgKGhhc192ZW5kb3JfaGRyKGJzc19kZXNjLVxcdTAwM2ViY25fd3BhX2llLCBXTEFOX0VJRF9WRU5ET1JfU1BFQ0lGSUMpKSB7XFxuK1xcdFxcdGludCBpZV9sZW4gPSAoaW50KWJzc19kZXNjLVxcdTAwM2ViY25fd3BhX2llLVxcdTAwM2V2ZW5kX2hkci5sZW4gLVxcbitcXHRcXHRcXHQgICAgIChpbnQpc2l6ZW9mKGJzc19kZXNjLVxcdTAwM2ViY25fd3BhX2llLVxcdTAwM2V2ZW5kX2hkci5vdWkpIC1cXG4rXFx0XFx0XFx0ICAgICBXUEFfR1RLX09VSV9PRkZTRVQ7XFxuK1xcbiBcXHRcXHRpZWJvZHkgPSAoc3RydWN0IGllX2JvZHkgKikoKHU4ICopYnNzX2Rlc2MtXFx1MDAzZWJjbl93cGFfaWUtXFx1MDAzZWRhdGEgK1xcbiBcXHRcXHRcXHRcXHRcXHQgICAgV1BBX0dUS19PVUlfT0ZGU0VUKTtcXG4gXFx0XFx0b3VpID0gXFx1MDAyNm13aWZpZXhfd3BhX291aVtjaXBoZXJdWzBdO1xcbi1cXHRcXHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWkpO1xcbitcXHRcXHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWksIGllX2xlbik7XFxuIFxcdFxcdGlmIChyZXQpXFxuIFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjc6MjEuMDkzOTA1NTEzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTgyNzc2Njc5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNV0lGSUVYXCIsXG4gICAgXCJNV0lGSUVYX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm13aWZpZXhfc2VhcmNoX291aV9pbl9pZVwiLFxuICAgIFwibXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRcIixcbiAgICBcIm13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50XCIsXG4gICAgXCJtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZVwiLFxuICAgIFwibXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwYXJzaW5nIFJTTi9XUEEgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgc2NhbiByZXN1bHRzIG9yIGFzc29jaWF0aW9uIHJlc3BvbnNlcyBjb250YWluaW5nIHRoZXNlIElFcy4gU2luY2UgYG13aWZpZXhgIGhhcyBhIFVTQiBkcml2ZXIgKGBtd2lmaWV4X3VzYmApLCBpdCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIHN1YnN5c3RlbSAoZS5nLiwgdXNpbmcgZHVtbXlfaGNkL3Jhdy1nYWRnZXQpIGJ5IGVtdWxhdGluZyBhIE1hcnZlbGwgV2ktRmkgVVNCIGRldmljZSBhbmQgc2VuZGluZyBtYWxpY2lvdXMgc2Nhbi9hc3NvY2lhdGlvbiByZXNwb25zZXMuIFRoZXJlZm9yZSwgdGhpcyBmdW5jdGlvbmFsIGNoYW5nZSBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYWNhYzFlZDIyYTlhNDI0ODlkNTkzZGY5MWU4MzRjNjM0ZjhjZTNmY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDE2IDAyOjI3OjE5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcbmluZGV4IDk3YzBlYzNiODIyZTcwLi4zM2VmOGFmMGE1ZTEzZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcbkBAIC0xMDQsMTIgKzEwNCwyMSBAQCBoYXNfdmVuZG9yX2hkcihzdHJ1Y3QgaWVlZV90eXBlc192ZW5kb3Jfc3BlY2lmaWMgKmllLCB1OCBrZXkpXG4gICogYSBnaXZlbiBvdWkgaW4gUFRLLlxuICAqL1xuIHN0YXRpYyB1OFxuLW13aWZpZXhfc2VhcmNoX291aV9pbl9pZShzdHJ1Y3QgaWVfYm9keSAqaWVib2R5LCB1OCAqb3VpKVxuK213aWZpZXhfc2VhcmNoX291aV9pbl9pZShzdHJ1Y3QgaWVfYm9keSAqaWVib2R5LCB1OCAqb3VpLCBpbnQgaWVfbGVuKVxuIHtcbitcdGNvbnN0IHNpemVfdCBwdGtfYm9keV9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgaWVfYm9keSwgcHRrX2JvZHkpO1xuIFx0dTggY291bnQ7XG4gXG4rXHQvKiBOZWVkIGdycF9rZXlfb3VpWzRdICsgcHRrX2NudFsyXSBiZWZvcmUgcmVhZGluZyB0aGUgT1VJIGNvdW50LiAqL1xuK1x0aWYgKGllX2xlbiBcdTAwM2MgKGludClwdGtfYm9keV9vZmZzZXQpXG4rXHRcdHJldHVybiBNV0lGSUVYX09VSV9OT1RfUFJFU0VOVDtcbitcbiBcdGNvdW50ID0gaWVib2R5LVx1MDAzZXB0a19jbnRbMF07XG4gXG4rXHQvKiBSZWplY3QgYW4gT1VJIGNvdW50IHdob3NlIGxpc3Qgd291bGQgcnVuIHBhc3QgdGhlIGVsZW1lbnQuICovXG4rXHRpZiAocHRrX2JvZHlfb2Zmc2V0ICsgY291bnQgKiBzaXplb2YoaWVib2R5LVx1MDAzZXB0a19ib2R5KSBcdTAwM2UgKHNpemVfdClpZV9sZW4pXG4rXHRcdHJldHVybiBNV0lGSUVYX09VSV9OT1RfUFJFU0VOVDtcbitcbiBcdC8qIFRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIE9VSXMgZm9yIFBUSyBoZW5jZVxuIFx0ICAgMSkgVGFrZSB0aGUgbGVuZ3RoLlxuIFx0ICAgMikgQ2hlY2sgYWxsIHRoZSBPVUlzIGZvciBBRVMuXG5AQCAtMTQzLDExICsxNTIsMTQgQEAgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnQoc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsIHUzMiBjaXBoZXIpXG4gXHR1OCByZXQgPSBNV0lGSUVYX09VSV9OT1RfUFJFU0VOVDtcbiBcbiBcdGlmIChoYXNfaWVlZV9oZHIoYnNzX2Rlc2MtXHUwMDNlYmNuX3Jzbl9pZSwgV0xBTl9FSURfUlNOKSkge1xuK1x0XHRpbnQgaWVfbGVuID0gKGludClic3NfZGVzYy1cdTAwM2ViY25fcnNuX2llLVx1MDAzZWllZWVfaGRyLmxlbiAtXG4rXHRcdFx0ICAgICBSU05fR1RLX09VSV9PRkZTRVQ7XG4rXG4gXHRcdGllYm9keSA9IChzdHJ1Y3QgaWVfYm9keSAqKVxuIFx0XHRcdCAoKCh1OCAqKSBic3NfZGVzYy1cdTAwM2ViY25fcnNuX2llLVx1MDAzZWRhdGEpICtcbiBcdFx0XHQgIFJTTl9HVEtfT1VJX09GRlNFVCk7XG4gXHRcdG91aSA9IFx1MDAyNm13aWZpZXhfcnNuX291aVtjaXBoZXJdWzBdO1xuLVx0XHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWkpO1xuK1x0XHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWksIGllX2xlbik7XG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbkBAIC0xNjksMTAgKzE4MSwxNCBAQCBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudChzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYywgdTMyIGNpcGhlcilcbiBcdHU4IHJldCA9IE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xuIFxuIFx0aWYgKGhhc192ZW5kb3JfaGRyKGJzc19kZXNjLVx1MDAzZWJjbl93cGFfaWUsIFdMQU5fRUlEX1ZFTkRPUl9TUEVDSUZJQykpIHtcbitcdFx0aW50IGllX2xlbiA9IChpbnQpYnNzX2Rlc2MtXHUwMDNlYmNuX3dwYV9pZS1cdTAwM2V2ZW5kX2hkci5sZW4gLVxuK1x0XHRcdCAgICAgKGludClzaXplb2YoYnNzX2Rlc2MtXHUwMDNlYmNuX3dwYV9pZS1cdTAwM2V2ZW5kX2hkci5vdWkpIC1cbitcdFx0XHQgICAgIFdQQV9HVEtfT1VJX09GRlNFVDtcbitcbiBcdFx0aWVib2R5ID0gKHN0cnVjdCBpZV9ib2R5ICopKCh1OCAqKWJzc19kZXNjLVx1MDAzZWJjbl93cGFfaWUtXHUwMDNlZGF0YSArXG4gXHRcdFx0XHRcdCAgICBXUEFfR1RLX09VSV9PRkZTRVQpO1xuIFx0XHRvdWkgPSBcdTAwMjZtd2lmaWV4X3dwYV9vdWlbY2lwaGVyXVswXTtcbi1cdFx0cmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpKTtcbitcdFx0cmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpLCBpZV9sZW4pO1xuIFx0XHRpZiAocmV0KVxuIFx0XHRcdHJldHVybiByZXQ7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyNzoyMS4wOTM5MTE5NjNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjQxODMyNDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpRmkgRHJpdmVyIFNlY3VyaXR5IFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG13aWZpZXhgIOKAkyBzcGVjaWZpY2FsbHksIGl0J3MgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNgLiBJdCBsb29rcyBsaWtlIHRoZXkndmUgYWRkZWQgc29tZSBib3VuZHMgY2hlY2tpbmcgd2l0aGluIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIHRvIHByZXZlbnQgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZHMuIFNtYXJ0IG1vdmUsIHByb3RlY3RpbmcgYWdhaW5zdCBidWZmZXIgb3ZlcmZsb3dzIGlzIGFsd2F5cyBhIGdvb2QgdGhpbmcsIGVzcGVjaWFsbHkgaW4gbmV0d29ya2luZyBjb2RlLiBUaGUgcGF0Y2ggc2VlbXMgc3RyYWlnaHRmb3J3YXJkOiBgaWVfbGVuYCBpcyBiZWluZyBwYXNzZWQgZG93biBmcm9tIGBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudGAgYW5kIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAsIHdoaWNoIGlzIHRoZSBjb3JyZWN0IHdheSB0byBlbnN1cmUgd2UgZG9uJ3QgcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIElFIChJbmZvcm1hdGlvbiBFbGVtZW50KS5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBpcyB0aGlzIGV2ZW4gKnJlYWNoYWJsZSo/IElzIHRoaXMgYSBwYXJ0IG9mIHRoZSBjb2RlIHRoYXQncyBldmVuIHdvcnRoIHdvcnJ5aW5nIGFib3V0PyBUaGUgZHJpdmVyIGlzIGBtd2lmaWV4YCwgd2hpY2ggbWVhbnMgaXQncyBhIE1hcnZlbGwgd2lyZWxlc3MgZHJpdmVyLiBUeXBpY2FsbHksIGZ1enppbmcgd291bGQgYmUgdGhlIG1ldGhvZCB0byB0ZXN0IHRoZSBzZWN1cml0eSBvZiBhIGRyaXZlci4gSXMgaXQgZnV6emFibGU/IFdlIGhhdmUgYG1hYzgwMjExX2h3c2ltYCBmb3Igc29mdHdhcmUgZW11bGF0ZWQgd2lyZWxlc3MsIGJ1dCBgbXdpZmlleGAgaXMgaGFyZHdhcmUtc3BlY2lmaWMsIHdoaWNoIG1lYW5zIGZ1enppbmcgaXMgZ29pbmcgdG8gYmUgZGlmZmljdWx0LlxuXG5XYWl0LCBob2xkIG9uLi4uIGNhbiB3ZSBmdXp6IGBtd2lmaWV4YCBhdCBhbGw/IEhhcmR3YXJlIGRyaXZlcnMgYXJlbid0IHVzdWFsbHkgZWFzeSB0byBmdXp6IGRpcmVjdGx5LiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHlvdSBuZWVkIGFuIGludGVyZmFjZSB0byBpbnRlcmFjdCB3aXRoLCBsaWtlIFVTQiBvciBTRElPLCB0aGF0IHlvdSBjYW4gZW11bGF0ZSBvciBjb250cm9sLiBTbywgdGhlIGtleSBpcyB3aGV0aGVyIGBtd2lmaWV4YCBzdXBwb3J0cyBlaXRoZXIgb2YgdGhvc2UuIE5lZWQgdG8gY2hlY2sgaWYgaXQgaGFzIGEgVVNCIGludGVyZmFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY2NSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI3OjI2LjczNTc0NjM3MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODIyNTg5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3VzYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTM3PWNvbmZpZyBNV0lGSUVYX1VTQlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctNDUtXFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjQ2OlxcdCAgbXdpZmlleF91c2IuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvTWFrZWZpbGU9NDI9b2JqLSQoQ09ORklHX01XSUZJRVhfUENJRSkgKz0gbXdpZmlleF9wY2llLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvTWFrZWZpbGUtNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlOjQ0Om13aWZpZXhfdXNiLXkgKz0gdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX01XSUZJRVhfVVNCKSArPSBtd2lmaWV4X3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlLTQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2Z3Lmg9OTA9ZW51bSBLRVlfVFlQRV9JRCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZncuaC0xMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2Z3Lmg6MTIzOmVudW0gbXdpZmlleF91c2JfZXAge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oLTEyNC1cXHRNV0lGSUVYX1VTQl9FUF9DTURfRVZFTlQgPSAxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD01NT1lbnVtIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTIzLSAqIERvIG5vdCBjaGVjayBmb3IgZGF0YV9yZWNlaXZlZCBmb3IgVVNCLCBhcyBkYXRhX3JlY2VpdmVkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMjQ6ICogaXMgaGFuZGxlZCBpbiBtd2lmaWV4X3VzYl9yZWN2IGZvciBVU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyNS0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xMz1zdGF0aWMgY29uc3Qgc3RydWN0IG13aWZpZXhfaWZfb3BzIHVzYl9vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTpzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgbXdpZmlleF91c2JfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTYtXFx0LyogODc2NiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzozOTpNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgbXdpZmlleF91c2JfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NDE6c3RhdGljIGludCBtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKHN0cnVjdCB1cmJfY29udGV4dCAqY3R4LCBpbnQgc2l6ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ1LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo0NjpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3JlY3Yoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDctXFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsIHU4IGVwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTUyOnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE4NzpcXHRcXHRzdGF0dXMgPSBtd2lmaWV4X3VzYl9yZWN2KGFkYXB0ZXIsIHNrYiwgY29udGV4dC1cXHUwMDNlZXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xODgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTk2LVxcdFxcdFxcdCAqIHVyYiBmb3IgY21kX2VwIHdpbGwgYmUgcmUtc3VibWl0dGVkIGluIGNhbGxiYWNrXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE5NzpcXHRcXHRcXHQgKiBtd2lmaWV4X3VzYl9yZWN2X2NvbXBsZXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE5OC1cXHRcXHRcXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yMzItXFx0aWYgKGNhcmQtXFx1MDAzZXJ4X2NtZF9lcCA9PSBjb250ZXh0LVxcdTAwM2VlcCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoyMzM6XFx0XFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihjb250ZXh0LCBzaXplKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjM0LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzNS1cXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJ4X3BlbmRpbmcpIFxcdTAwM2M9IEhJR0hfUlhfUEVORElORykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoyMzY6XFx0XFx0XFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihjb250ZXh0LCBzaXplKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjM3LVxcdFxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoyNDU6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfdHhfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yNDYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTI4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Mjg1OnN0YXRpYyBpbnQgbXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihzdHJ1Y3QgdXJiX2NvbnRleHQgKmN0eCwgaW50IHNpemUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTI4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzE1LVxcdFxcdFxcdFxcdCB1c2JfcmN2aW50cGlwZShjYXJkLVxcdTAwM2V1ZGV2LCBjdHgtXFx1MDAzZWVwKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MzE2OlxcdFxcdFxcdFxcdCBjdHgtXFx1MDAzZXNrYi1cXHUwMDNlZGF0YSwgc2l6ZSwgbXdpZmlleF91c2JfcnhfY29tcGxldGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMxNy1cXHRcXHRcXHRcXHQgKHZvaWQgKiljdHgsIGNhcmQtXFx1MDAzZXJ4X2NtZF9pbnRlcnZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzIwLVxcdFxcdFxcdFxcdCAgdXNiX3JjdmJ1bGtwaXBlKGNhcmQtXFx1MDAzZXVkZXYsIGN0eC1cXHUwMDNlZXApLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzozMjE6XFx0XFx0XFx0XFx0ICBjdHgtXFx1MDAzZXNrYi1cXHUwMDNlZGF0YSwgc2l6ZSwgbXdpZmlleF91c2JfcnhfY29tcGxldGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMyMi1cXHRcXHRcXHRcXHQgICh2b2lkICopY3R4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjM0NTpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9mcmVlKHN0cnVjdCB1c2JfY2FyZF9yZWMgKmNhcmQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzg0LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzozODU6c3RhdGljIGludCBtd2lmaWV4X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzg2LVxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTUzMi0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NTMzOnN0YXRpYyBpbnQgbXdpZmlleF91c2Jfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTUzNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNTk5LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2MDA6c3RhdGljIGludCBtd2lmaWV4X3VzYl9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYwMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjI1LVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNV0lGSUVYX1JYX0RBVEFfVVJCOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjYyNjpcXHRcXHRcXHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFxcdTAwMjZjYXJkLVxcdTAwM2VyeF9kYXRhX2xpc3RbaV0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYyNy1cXHRcXHRcXHRcXHRcXHRcXHQgIE1XSUZJRVhfUlhfREFUQV9CVUZfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjMxLVxcdFxcdGlmIChjYXJkLVxcdTAwM2VyeF9jbWQuc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2MzI6XFx0XFx0XFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcXHUwMDI2Y2FyZC1cXHUwMDNlcnhfY21kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MzMtXFx0XFx0XFx0XFx0XFx0XFx0ICBNV0lGSUVYX1JYX0NNRF9CVUZfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2NDU6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY2OTpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9jb3JlZHVtcChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY3MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2Nzg6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG13aWZpZXhfdXNiX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Njc5OlxcdC5uYW1lID0gXFxcIm13aWZpZXhfdXNiXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjgwOlxcdC5wcm9iZSA9IG13aWZpZXhfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODE6XFx0LmRpc2Nvbm5lY3QgPSBtd2lmaWV4X3VzYl9kaXNjb25uZWN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODI6XFx0LmlkX3RhYmxlID0gbXdpZmlleF91c2JfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4MzpcXHQuc3VzcGVuZCA9IG13aWZpZXhfdXNiX3N1c3BlbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4NDpcXHQucmVzdW1lID0gbXdpZmlleF91c2JfcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02ODUtXFx0LnNvZnRfdW5iaW5kID0gMSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjg2LVxcdC5kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4NzpcXHRcXHQuY29yZWR1bXAgPSBtd2lmaWV4X3VzYl9jb3JlZHVtcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjg4LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9NzE0PXN0YXRpYyBpbnQgbXdpZmlleF9yZWFkX2RhdGFfc3luYyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLCB1OCAqcGJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy03MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjczNDpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9wb3J0X3Jlc3luYyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy03MzUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTc3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Nzc2OnN0YXRpYyBib29sIG13aWZpZXhfdXNiX2lzX3BvcnRfcmVhZHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzc3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy03ODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjc4OTpzdGF0aWMgaW5saW5lIHU4IG13aWZpZXhfdXNiX2RhdGFfc2VudChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy03OTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODAxOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgwMi1cXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCB1c2JfdHhfZGF0YV9wb3J0ICpwb3J0LCB1OCBlcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MTgtXFx0XFx0XFx0XFx0IHVzYl9zbmRpbnRwaXBlKGNhcmQtXFx1MDAzZXVkZXYsIGVwKSwgc2tiX3NlbmQtXFx1MDAzZWRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjgxOTpcXHRcXHRcXHRcXHQgc2tiX3NlbmQtXFx1MDAzZWxlbiwgbXdpZmlleF91c2JfdHhfY29tcGxldGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgyMC1cXHRcXHRcXHRcXHQgKHZvaWQgKiljb250ZXh0LCBjYXJkLVxcdTAwM2V0eF9jbWRfaW50ZXJ2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgyNC1cXHRcXHRcXHRcXHQgIHNrYl9zZW5kLVxcdTAwM2VkYXRhLCBza2Jfc2VuZC1cXHUwMDNlbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo4MjU6XFx0XFx0XFx0XFx0ICBtd2lmaWV4X3VzYl90eF9jb21wbGV0ZSwgKHZvaWQgKiljb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODI2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgzNy1cXHRcXHRwb3J0LVxcdTAwM2VibG9ja19zdGF0dXMgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo4Mzg6XFx0XFx0YWRhcHRlci1cXHUwMDNlZGF0YV9zZW50ID0gbXdpZmlleF91c2JfZGF0YV9zZW50KGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MzktXFx0XFx0cmV0ID0gLUVOT1NSO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTg2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODYyOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcHJlcGFyZV90eF9hZ2dyX3NrYihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04NjMtXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHVzYl90eF9kYXRhX3BvcnQgKnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtOTQ2LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo5NDc6c3RhdGljIGludCBtd2lmaWV4X3VzYl9hZ2dyX3R4X2RhdGEoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwgdTggZXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTk0OC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDYyLVxcdGlmIChmX3NlbmRfYWdncl9idWYpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTA2MzpcXHRcXHRyZXQgPSBtd2lmaWV4X3VzYl9wcmVwYXJlX3R4X2FnZ3Jfc2tiKGFkYXB0ZXIsIHBvcnQsIFxcdTAwMjZza2Jfc2VuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwNjQtXFx0XFx0aWYgKCFyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA2NS1cXHRcXHRcXHRjb250ZXh0ID0gXFx1MDAyNnBvcnQtXFx1MDAzZXR4X2RhdGFfbGlzdFtwb3J0LVxcdTAwM2V0eF9kYXRhX2l4KytdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMDY2OlxcdFxcdFxcdHJldCA9IG13aWZpZXhfdXNiX2NvbnN0cnVjdF9zZW5kX3VyYihhZGFwdGVyLCBwb3J0LCBlcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA2Ny1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGNvbnRleHQsIHNrYl9zZW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDc5LVxcdFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWRhdGFfc2VudCA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEwODA6XFx0XFx0XFx0XFx0XFx0bXdpZmlleF91c2JfZGF0YV9zZW50KGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDgxLVxcdFxcdFxcdFxcdC8qIG5vIGF2YWlsYWJsZSB1cmIsIHBvc3Rjb3B5IHBhY2tldCovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA5NS1cXHRcXHRjb250ZXh0ID0gXFx1MDAyNnBvcnQtXFx1MDAzZXR4X2RhdGFfbGlzdFtwb3J0LVxcdTAwM2V0eF9kYXRhX2l4KytdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMDk2OlxcdFxcdHJldHVybiBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoYWRhcHRlciwgcG9ydCwgZXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwOTctXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgY29udGV4dCwgc2tiX3NlbmQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExMTk6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfdHhfYWdncl90bW8oc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExMjktXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwb3J0LVxcdTAwM2V0eF9hZ2dyX2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTMwOlxcdGVyciA9IG13aWZpZXhfdXNiX3ByZXBhcmVfdHhfYWdncl9za2IoYWRhcHRlciwgcG9ydCwgXFx1MDAyNnNrYl9zZW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTEzMS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE0MC1cXHRcXHRhZGFwdGVyLVxcdTAwM2VkYXRhX3NlbnQgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTQxOlxcdFxcdFxcdG13aWZpZXhfdXNiX2RhdGFfc2VudChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE0Mi1cXHRcXHRlcnIgPSAtMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTQ5LVxcdHVyYl9jbnh0ID0gXFx1MDAyNnBvcnQtXFx1MDAzZXR4X2RhdGFfbGlzdFtwb3J0LVxcdTAwM2V0eF9kYXRhX2l4KytdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTUwOlxcdGVyciA9IG13aWZpZXhfdXNiX2NvbnN0cnVjdF9zZW5kX3VyYihhZGFwdGVyLCBwb3J0LCBwb3J0LVxcdTAwM2V0eF9kYXRhX2VwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTUxLVxcdFxcdFxcdFxcdFxcdCAgICAgdXJiX2NueHQsIHNrYl9zZW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTU5LS8qIFRoaXMgZnVuY3Rpb24gd3JpdGUgYSBjb21tYW5kL2RhdGEgcGFja2V0IHRvIGNhcmQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExNjA6c3RhdGljIGludCBtd2lmaWV4X3VzYl9ob3N0X3RvX2NhcmQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwgdTggZXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNjEtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE5Mi1cXHRcXHRcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VkYXRhX3NlbnQgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTkzOlxcdFxcdFxcdFxcdFxcdFxcdG13aWZpZXhfdXNiX2RhdGFfc2VudChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE5NC1cXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVCVVNZO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMDgtXFx0XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwb3J0LVxcdTAwM2V0eF9hZ2dyX2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjA5OlxcdFxcdFxcdHJldCA9ICBtd2lmaWV4X3VzYl9hZ2dyX3R4X2RhdGEoYWRhcHRlciwgZXAsIHNrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIxMC1cXHRcXHRcXHRcXHRcXHRcXHRcXHR0eF9wYXJhbSwgcG9ydCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTIxODpcXHRyZXR1cm4gbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKGFkYXB0ZXIsIHBvcnQsIGVwLCBjb250ZXh0LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjE5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTIyMTpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3R4X2luaXQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIyMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI1Ny1cXHRcXHR0aW1lcl9zZXR1cChcXHUwMDI2cG9ydC1cXHUwMDNldHhfYWdnci50aW1lcl9jbnh0LmhvbGRfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyNTg6XFx0XFx0XFx0ICAgIG13aWZpZXhfdXNiX3R4X2FnZ3JfdG1vLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI1OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTI2NDpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3J4X2luaXQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI2NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTI4MDpcXHRpZiAobXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcXHUwMDI2Y2FyZC1cXHUwMDNlcnhfY21kLCBNV0lGSUVYX1JYX0NNRF9CVUZfU0laRSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyODEtXFx0XFx0cmV0dXJuIC0xO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyODktXFx0XFx0XFx0cmV0dXJuIC0xO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjkwOlxcdFxcdGlmIChtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFxcdTAwMjZjYXJkLVxcdTAwM2VyeF9kYXRhX2xpc3RbaV0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyOTEtXFx0XFx0XFx0XFx0XFx0ICAgICAgTVdJRklFWF9SWF9EQVRBX0JVRl9TSVpFKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xMjk5PXN0YXRpYyBpbnQgbXdpZmlleF9yZWdpc3Rlcl9kZXYoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMzM4OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX2NsZWFudXBfdHhfYWdncihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xMzU5PXN0YXRpYyB2b2lkIG13aWZpZXhfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMzYzOlxcdG13aWZpZXhfdXNiX2ZyZWUoY2FyZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEzNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEzNjU6XFx0bXdpZmlleF91c2JfY2xlYW51cF90eF9hZ2dyKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzY2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTEzNzA9c3RhdGljIGludCBtd2lmaWV4X3Byb2dfZndfd19oZWxwZXIoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTA3OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfZG5sZF9mdyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTA4LVxcdFxcdFxcdHN0cnVjdCBtd2lmaWV4X2Z3X2ltYWdlICpmdylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTIzOlxcdHJldCA9IG13aWZpZXhfdXNiX3J4X2luaXQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MjQtXFx0aWYgKCFyZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1MjU6XFx0XFx0cmV0ID0gbXdpZmlleF91c2JfdHhfaW5pdChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTMwPXN0YXRpYyB2b2lkIG13aWZpZXhfc3VibWl0X3J4X3VyYihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLCB1OCBlcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTM2LVxcdCAgICAoIWF0b21pY19yZWFkKFxcdTAwMjZjYXJkLVxcdTAwM2VyeF9jbWRfdXJiX3BlbmRpbmcpKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTUzNzpcXHRcXHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFxcdTAwMjZjYXJkLVxcdTAwM2VyeF9jbWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MzgtXFx0XFx0XFx0XFx0XFx0ICBNV0lGSUVYX1JYX0NNRF9CVUZfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU0MzpzdGF0aWMgaW50IG13aWZpZXhfdXNiX2NtZF9ldmVudF9jb21wbGV0ZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTQ0LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTE1NTI9c3RhdGljIGludCBtd2lmaWV4X3BtX3dha2V1cF9jYXJkKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU2MzpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9zdWJtaXRfcmVtX3J4X3VyYnMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU2NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU3Mi1cXHRcXHRjdHggPSBcXHUwMDI2Y2FyZC1cXHUwMDNlcnhfZGF0YV9saXN0W2ldO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTczOlxcdFxcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoY3R4LCBNV0lGSUVYX1JYX0RBVEFfQlVGX1NJWkUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTc0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbXdpZmlleF9pZl9vcHMgdXNiX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTkwLVxcdC8qIFVTQiBzcGVjaWZpYyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTkxOlxcdC5kbmxkX2Z3ID1cXHRcXHRtd2lmaWV4X3VzYl9kbmxkX2Z3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTkyOlxcdC5jbWRyc3BfY29tcGxldGUgPVxcdG13aWZpZXhfdXNiX2NtZF9ldmVudF9jb21wbGV0ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5MzpcXHQuZXZlbnRfY29tcGxldGUgPVxcdG13aWZpZXhfdXNiX2NtZF9ldmVudF9jb21wbGV0ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5NDpcXHQuaG9zdF90b19jYXJkID1cXHRcXHRtd2lmaWV4X3VzYl9ob3N0X3RvX2NhcmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTU6XFx0LnN1Ym1pdF9yZW1fcnhfdXJicyA9XFx0bXdpZmlleF91c2Jfc3VibWl0X3JlbV9yeF91cmJzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTk2OlxcdC5tdWx0aV9wb3J0X3Jlc3luYyA9XFx0bXdpZmlleF91c2JfcG9ydF9yZXN5bmMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTc6XFx0LmlzX3BvcnRfcmVhZHkgPVxcdG13aWZpZXhfdXNiX2lzX3BvcnRfcmVhZHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1OTgtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTYwMDptb2R1bGVfdXNiX2RyaXZlcihtd2lmaWV4X3VzYl9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNjAxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyNzoyNi43OTM5Nzg5MzJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzcxNzAwMTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGBtd2lmaWV4X3VzYmAgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbXdpZmlleGAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBtd2lmaWV4X3VzYmAgcGFydC4gVGhhdCdzIHRoZSBVU0IgaW50ZXJmYWNlLCByaWdodD8gQW5kIEkgcmVjYWxsIHRoYXQgVVNCIGRldmljZXMgYXJlIHJpcGUgZm9yIGZ1enppbmcgdXNpbmcgaW50ZXJmYWNlcyBsaWtlIGBkdW1teV9oY2RgIG9yIGByYXctZ2FkZ2V0YC4gQnV0IHdhaXQsIGBtd2lmaWV4X3VzYmAgaXMgYSBVU0IgKmhvc3QqIGRyaXZlci4gSXQgKmRyaXZlcyogYSBVU0IgZGV2aWNlLiBBaGEhIFN5emthbGxlciBoYXMgYSBVU0IgZnV6emVyIHNwZWNpZmljYWxseSBmb3IgZW11bGF0aW5nIFVTQiBkZXZpY2VzIHRvIHRhcmdldCBob3N0IGRyaXZlcnMuIFRoYXQgbWVhbnMgYG13aWZpZXhfdXNiYCAqaXMqIGZ1enphYmxlLCBnb29kLCB0aGF0J3Mgd2hhdCBJIHdhcyBob3BpbmcuXG5cbk5vdywgbGV0J3Mgc2VlIGlmIHRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNgIGFyZSBhY3R1YWxseSByZWFjaGFibGUuIEkgcmVtZW1iZXIgdGhlIGNoYW5nZXMgZm9jdXNlZCBhcm91bmQgYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAuIFRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudGAgYW5kIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAuIENvbnNpZGVyaW5nIHRoZSBuYW1lcywgdGhvc2UgYXJlIHZlcnkgbGlrZWx5IGNhbGxlZCBkdXJpbmcgdGhlIHByb2Nlc3Npbmcgb2Ygc2NhbiByZXN1bHRzIG9yLCBwZXJoYXBzLCBiZWFjb25zLiBTbywgdGhlIG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hlcmUgYG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50YCBhbmQgYG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50YCBhcmUgaW52b2tlZC4gVGhhdCdsbCBiZSB0aGUga2V5IHRvIHRyaWdnZXJpbmcgdGhlIGNvZGUgaW4gcXVlc3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjc5LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI3OjMxLjU2NTY4MDM4OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzAwNzc3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTQ3PXN0YXRpYyB1OFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTQ4Om13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50KHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgY2lwaGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MzQ0PW13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTQwOC1cXHRcXHRcXHQgICAgIGJzc19kZXNjLVxcdTAwM2ViY25faHRfY2FwKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6NDA5OlxcdFxcdFxcdCAgICAhbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnQoYnNzX2Rlc2MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy00MTAtXFx0XFx0XFx0XFx0XFx0XFx0XFx0Q0lQSEVSX1NVSVRFX0NDTVApKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy00MTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzo0MTI6XFx0XFx0XFx0XFx0aWYgKG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy00MTMtXFx0XFx0XFx0XFx0XFx0XFx0KGJzc19kZXNjLCBDSVBIRVJfU1VJVEVfVEtJUCkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjc6MzEuNjI4NjkzNDI4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE4NjE0ODEwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkLCBhaW1lZCBhdCBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgV1BBIExhbmRzY2FwZSoqXG5cbkFscmlnaHQsIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBjb2RlLCBhbmQgSSBzZWUgdGhpcyBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgIGZ1bmN0aW9uLiBIbW0sIGxldCBtZSB0aGluay4uLiB3aHkgYXJlIHdlIGNoZWNraW5nIGZvciB0aGUgV1BBIE9VST8gV2hhdCdzIHRoZSBjb250ZXh0IGhlcmU/IEFyZSB3ZSB2YWxpZGF0aW5nIGEgcmVjZWl2ZWQgZnJhbWUsIHBlcmhhcHM/IE9yIGFyZSB3ZSBpbiB0aGUgcHJvY2VzcyBvZiBnZW5lcmF0aW5nIGFuIGFzc29jaWF0aW9uIHJlcXVlc3Qgb3IgcmVzcG9uc2U/IEtub3dpbmcgdGhhdCB3aWxsIGdyZWF0bHkgaW5mb3JtIG15IGludGVycHJldGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24ncyBwdXJwb3NlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIHBhc3NlZCB0byBpdC4gSXMgaXQgb3BlcmF0aW5nIG9uIGEgcmF3IGZyYW1lIGJ1ZmZlciwgYSBwYXJzZWQgSUUgKEluZm9ybWF0aW9uIEVsZW1lbnQpIGxpc3QsIG9yIHNvbWUgb3RoZXIgcmVwcmVzZW50YXRpb24/IEFyZSB3ZSBjb25jZXJuZWQgd2l0aCBhIHNwZWNpZmljIFdQQSB2ZXJzaW9uLCBsaWtlIFdQQTEgb3IgV1BBMj8gVGhlIGRpZmZlcmVuY2VzIGluIGhvdyB0aGUgT1VJIGlzIGZvcm1hdHRlZCBtaWdodCBjaGFuZ2UgbXkgdW5kZXJzdGFuZGluZy4gVGhpcyBpcyBsaWtlbHkgdmVyeSByZWxldmFudCB0byBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyBhbmQgbGlrZWx5IFdQQSBtaWdyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjM2LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjc6MzUuODE0ODQzMTMyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NTIxNjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNzY9c3RhdGljIHU4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNzc6bXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnQoc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsIHUzMiBjaXBoZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0zNDQ9bXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMzg5LVxcdFxcdFxcdCAgICAgYnNzX2Rlc2MtXFx1MDAzZWJjbl9odF9jYXApIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzozOTA6XFx0XFx0XFx0ICAgICFtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudChic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTM5MS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgQ0lQSEVSX1NVSVRFX0NDTVApKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0zOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzozOTM6XFx0XFx0XFx0XFx0aWYgKG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0zOTQtXFx0XFx0XFx0XFx0XFx0XFx0KGJzc19kZXNjLCBDSVBIRVJfU1VJVEVfVEtJUCkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjc6MzUuODkwMzY4NDUyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA4NTc5Nzk3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nLCBhbmQgdGFpbG9yZWQgZm9yIGEgZmVsbG93IGV4cGVydDpcblxuKipUcmFjaW5nIHRoZSBEZXBlbmRlbmN5OiBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZSoqXG5cblJpZ2h0LCBzbyBJIHNlZSB0d28gZGlzdGluY3QgY2FsbHMgb3JpZ2luYXRpbmcgZnJvbSBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgLiBUaGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWc6IHdoYXQgaXMgdGhlIGNvbnRleHQgaGVyZT8gVW5kZXJzdGFuZGluZyB0aGUgZG93bnN0cmVhbSB1c2FnZSBpcyBjcml0aWNhbC4gQnV0IG1vcmUgaW1wb3J0YW50bHksIEkgbmVlZCB0byBrbm93IHRoZSBvcmlnaW4uIFdoZXJlIGlzIHRoYXQgZnVuY3Rpb24gZXZlbiAqY2FsbGVkKiBmcm9tPyBLbm93aW5nIGl0cyBjYWxsZXJzIHdpbGwgZ2l2ZSBtZSB0aGUgZGlyZWN0aW9uIEkgbmVlZC4gVGhpcyBpcyBhIGNvbW1vbiBkZWJ1Z2dpbmcgdGVjaG5pcXVlIHRvIHVuZGVyc3RhbmQgY29udHJvbCBhbmQgaW5mb3JtYXRpb24gZmxvdy4gSSdtIGdvaW5nIHRvIHN0YXJ0IHRyYWNpbmcgYmFjaywgbG9va2luZyBmb3IgdGhlIGZ1bmN0aW9ucyBvciBtb2R1bGVzIHRoYXQgZGVwZW5kIG9uIGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAsIHByb2JhYmx5IHVzaW5nIGEgY3Jvc3MtcmVmZXJlbmNpbmcgdG9vbC4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgYXJjaGl0ZWN0dXJlIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjczLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjc6MzguOTc2MTY4NzgyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTE0NDE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MzQzPXN0YXRpYyBzMzJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjM0NDptd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMzQ1LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgbW9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTYxNj1pbnQgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTYyOC1cXHRcXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FESE9DOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTYyOTpcXHRcXHRcXHRyZXQgPSBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZShwcml2LCBic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2MzAtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHByaXYtXFx1MDAzZWJzc19tb2RlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjc6MzkuMDQ3MzI0NTQyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzE3MTE2NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGl2aW5nIERlZXBlciBpbnRvIE5ldHdvcmsgQ29tcGF0aWJpbGl0eSoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IHRoZSBjb3JlIG9mIHdpcmVsZXNzIG5ldHdvcmtpbmcgaGVyZS4gV2UndmUgZ290IHRoaXMgYXJjaGl0ZWN0dXJlLCBhbmQgd2UncmUgYWRkcmVzc2luZyB0aGUgcG90ZW50aWFsIGZvciBoaWNjdXBzLiBXaGF0J3MgdGhlIHNwZWNpZmljIGxvZ2ljIGZsb3cgYXJvdW5kIHRoZSBmdW5jdGlvbiBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgb3ZlcmFsbCBwcm9jZXNzLiBJcyBpdCBjaGVja2luZyBmb3IgcHJvdG9jb2wgdmVyc2lvbnMsIHNlY3VyaXR5IHByb3RvY29scywgc3VwcG9ydGVkIGZyZXF1ZW5jaWVzLCBvciBhbGwgb2YgdGhlIGFib3ZlPyBBbmQgd2hhdCBhcmUgdGhlIHNwZWNpZmljIGNyaXRlcmlhIGl0J3MgY29tcGFyaW5nIGFnYWluc3Q/IElzIGl0IGp1c3QgdmVyaWZ5aW5nIHRoZSBiZWFjb24gaW5mb3JtYXRpb24/IERvZXMgaXQgZGVsdmUgaW50byBwcm9iaW5nIHJlc3BvbnNlcywgdG9vPyBJJ20gd29uZGVyaW5nIGlmIHRoaXMgZnVuY3Rpb24gaGFuZGxlcyBzb21lIG9mIHRoZSBtb3JlIGNvbXBsZXggZWRnZSBjYXNlcyB0aGF0IEkndmUgYmVlbiB3cmVzdGxpbmcgd2l0aCByZWNlbnRseS4gSG93IGNvbXByZWhlbnNpdmUgaXMgdGhlIGNoZWNrPyBEb2VzIGl0IGZsYWcgZGV2aWF0aW9ucyBvciBpcyBpdCBtb3JlIG9mIGEgZ28vbm8tZ28/IE1vcmUgdG8gdGhlIHBvaW50LCBob3cgZG9lcyB0aGUgZnVuY3Rpb24ncyBvdXRwdXQgYWN0dWFsbHkgYWZmZWN0IHRoZSBhc3NvY2lhdGlvbiBwcm9jZXNzPyBEb2VzIGl0IGp1c3QgbG9nIGFuIGVycm9yLCBvciBkb2VzIGl0IGFjdGl2ZWx5IHByZXZlbnQgYSBjb25uZWN0aW9uPyBJIG5lZWQgdG8gY2xhcmlmeSB0aGF0LiBJJ20ga2VlbiB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGluIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIGRyaXZlciBhbmQgd2hldGhlciBpdCBpcyBiZWluZyB1c2VkIGluIHRoZSBiZXN0IHdheSBmb3IgdGhlIGN1cnJlbnQgZ2VuZXJhdGlvbiBvZiBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI4MDEsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyNzo0Mi4zNzkwMzc4OTNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MjUxMzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNTQxPWludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTQyLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZW50cnkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTU0MzppbnQgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1NDQtXFx0XFx0XFx0XFx0XFx0c3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNTkxPWludCBtd2lmaWV4X2NtZF84MDJfMTFfc2NhbihzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNjE1LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTYxNjppbnQgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2MTctXFx0XFx0XFx0XFx0XFx0c3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE3MDM9c3RhdGljIGludCBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTcxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE3MTg6XFx0cmV0ID0gbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkocHJpdiwgYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTcxOS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTMxOD1pbnQgbXdpZmlleF9ic3Nfc3RhcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgc3RydWN0IGNmZzgwMjExX2JzcyAqYnNzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTM2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MzYxOlxcdFxcdHJldCA9IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHByaXYsIGJzc19kZXNjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMzYyLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzo0MDk6XFx0XFx0cmV0ID0gbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkocHJpdiwgYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00MTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI3OjQyLjQzODI5NTIzM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjE4MjY4NTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIGFuZCBGdXp6aW5nIGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGlzIGZ1bmN0aW9uIGlzIHRyaWdnZXJlZCB3aGVuIHdlJ3JlIGVpdGhlciBqb2luaW5nIGEgQlNTIG9yIHVwZGF0aW5nIGN1cnJlbnQgQlNTIHBhcmFtZXRlcnMuIE5vdywgaG93IGNhbiB3ZSBhY3R1YWxseSAqZ2V0KiB0aGVyZT8gQWhhISBJIHNlZSBpdCdzIHJlYWNoYWJsZSBpZiB3ZSBjYW4gc29tZWhvdyBlbXVsYXRlIHRoZSBtd2lmaWV4IFVTQiBkZXZpY2UgYW5kIGZlZWQgaXQgZWl0aGVyIHNjYW4gcmVzdWx0cyBvciBiZWFjb25zLlxuXG5UaGUgbGlnaHRidWxiIGdvZXMgb247IHNwZWNpZmljYWxseSwgYG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50YCBhbmQgYG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50YCBwYXJzZSBgYnNzX2Rlc2MtXHUwMDNlYmNuX3Jzbl9pZWAgYW5kIGBic3NfZGVzYy1cdTAwM2ViY25fd3BhX2llYC4gVGhvc2UsIGluIHR1cm4sIGFyZSBmaWxsZWQgd2l0aCBkYXRhIGZyb20gc2NhbiByZXN1bHRzIG9yIGJlYWNvbnMgY29taW5nICpmcm9tKiB0aGUgZGV2aWNlIGl0c2VsZi5cblxuU2luY2Ugc3l6a2FsbGVyIGNhbiBhbHJlYWR5IGZ1enogVVNCIGRldmljZXMsIHdlIGNhbiBsZXZlcmFnZSB0aGF0IHRvIHByb3ZpZGUgY29tcGxldGVseSBhcmJpdHJhcnkgZGF0YSB0aHJvdWdoIHRoZSBVU0IgZW5kcG9pbnRzLiBUaGUgZHJpdmVyIHdpbGwgaGFwcGlseSBpbnRlcnByZXQgdGhpcyBhcyBsZWdpdGltYXRlIHNjYW4gcmVzdWx0cyBvciBiZWFjb25zLiBUaGlzIG1lYW5zIHRoYXQgd2Ugc2hvdWxkIGRlZmluaXRlbHkgYmUgYWJsZSB0byB0cmlnZ2VyIHRoaXMgZnVuY3Rpb24sIGFuZCB0aGVyZWZvcmUsIGl0J3MgYWJzb2x1dGVseSBzb21ldGhpbmcgd2Ugc2hvdWxkIHByaW9yaXRpemUgZm9yIGZ1enppbmcuXG5cbkJlZm9yZSBtb3ZpbmcgZm9yd2FyZCwgbGV0IG1lIGp1c3QgZG91YmxlIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoZSBkcml2ZXIgaXMgYE1XSUZJRVhgIGFuZCwgc3BlY2lmaWNhbGx5LCBgTVdJRklFWF9VU0JgLCB0aGF0J3MgY29ycmVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM4NTUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjc6NDcuMDU2NTcwNDk5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzU1OTgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVdJRklFWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyNzo0Ny4xMTQxMzczMzlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEzMTkxNTM3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciB0aGUgTVdJRklFWCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyB0byBnZXQgc3l6a2FsbGVyIHdvcmtpbmcgb24gdGhlIGBNV0lGSUVYYCBkcml2ZXIsIGFuZCBpdCBsb29rcyBsaWtlIEkgbmVlZCB0byBuYXJyb3cgZG93biBteSB0YXJnZXQuIFRoZXJlJ3MgYSBmZXcgb3B0aW9uczogYE1XSUZJRVhgLCBgTVdJRklFWF9VU0JgLCBgTVdJRklFWF9TRElPYCwgYW5kIGBNV0lGSUVYX1BDSUVgLiBCdXQgdGhpbmtpbmcgYWJvdXQgaG93IHN5emthbGxlciB3b3JrcywgZnV6emluZyBVU0IgaXMgdXN1YWxseSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCByaWdodD8gU28sIGBNV0lGSUVYX1VTQmAgc2VlbXMgbGlrZSB0aGUgbW9zdCBwcm9taXNpbmcgcGF0aC5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSB2ZXJpZnkgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBwb3RlbnRpYWwgY29uZmlndXJhdGlvbnMgb3IgcmVsYXRlZCBtb2R1bGVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnkgYW5nbGVzIGhlcmUuXG5cbkFoLCBJIGZvdW5kIHRoZSB0YXJnZXQgZmlsZS4gTG9va3MgbGlrZSB0aGUgcHJpbWFyeSBhcmVhIG9mIGludGVyZXN0IGlzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jYC4gT2theSwgdGhhdCBjb25maXJtcyBpdDogaXQncyBwYXJ0IG9mIHRoZSBgbXdpZmlleGAgbW9kdWxlLiBHb29kLCBJIGhhdmUgYSBjbGVhciBkaXJlY3Rpb24gbm93LiBUaGlzIGdpdmVzIG1lIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIG15IGZ1enppbmcgZWZmb3J0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4MDYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjc6NTEuMjQ2MDU0OTkzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDM5NDE2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY2FuLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvTWFrZWZpbGU9MTc9bXdpZmlleC15ICs9IDExbl9yeHJlb3JkZXIub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9NYWtlZmlsZToxODptd2lmaWV4LXkgKz0gc2Nhbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlLTE5LW13aWZpZXgteSArPSBqb2luLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTI2NTk9bXdpZmlleF9jZmc4MDIxMV9zY2FuKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yNjcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjI2NzM6XFx0LyogQmxvY2sgc2NhbiByZXF1ZXN0IGlmIHNjYW4gb3BlcmF0aW9uIG9yIHNjYW4gY2xlYW51cCB3aGVuIGludGVyZmFjZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTI2NzQtXFx0ICogaXMgZGlzYWJsZWQgaXMgaW4gcHJvY2Vzc1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz03NDM9bXdpZmlleF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy03NTItXFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgSU5GTyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjc1MzpcXHRcXHRcXHQgICAgXFxcImFib3J0aW5nIHNjYW4gb24gbmRvX3N0b3BcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNzU0LVxcdFxcdGNmZzgwMjExX3NjYW5fZG9uZShwcml2LVxcdTAwM2VzY2FuX3JlcXVlc3QsIFxcdTAwMjZpbmZvKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNzYwLVxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIElORk8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzo3NjE6XFx0XFx0XFx0ICAgIFxcXCJhYm9ydGluZyBiZ3NjYW4gb24gbmRvX3N0b3BcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNzYyLVxcdFxcdG13aWZpZXhfc3RvcF9iZ19zY2FuKHByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNzQzPW13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1ZihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCAqKmJzc19pbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTc4OTpcXHQvKiBGaXJzdCA1IGZpZWxkcyBhcmUgYnNzaWQsIFJTU0koZm9yIGxlZ2FjeSBzY2FuIG9ubHkpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTc5MC1cXHQgKiB0aW1lIHN0YW1wLCBiZWFjb24gaW50ZXJ2YWwsIGFuZCBjYXBhYmlsaXR5IGluZm9ybWF0aW9uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI3OjUxLjMwMDQ1NDM4M1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDc4OTA1OTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBjb25maWd1cmF0aW9ucy4gVGhvc2Ugc2VlbSBsaWtlIHRoZSByZWxldmFudCBlbnRyeSBwb2ludHMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9ucyBhcmUgbW9zdCBsaWtlbHkgdG8geWllbGQgaW50ZXJlc3RpbmcgcmVzdWx0cyB3aGVuIGZ1enplZC5cblxuUmlnaHQsIHRoZSBrZXkgbW9kaWZpZWQgZnVuY3Rpb24gaXMgYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAuIExldCdzIHNlZSBob3cgaXQncyB1c2VkLiBJdCdzIGNhbGxlZCBieSBgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRgIGFuZCBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgLCB3aGljaCBhcmUsIGluIHR1cm4sIGNhbGxlZCBieSBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgLiBTbywgdGhlIGF0dGFjayBzdXJmYWNlIGlzIGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAsIHdoaWNoIGlzIHRoZSBtb3N0IGNyaXRpY2FsIGZ1bmN0aW9uLiBJIGFsc28gbmVlZCB0byBmb2N1cyBvbiBgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRgIGFuZCBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgLCBhbmQgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIG9yaWdpbmFsIHZ1bG5lcmFiaWxpdHksIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgLiBXYWl0LCB0aGF0J3MgcmlnaHQsIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIGlzIHN0YXRpYy4gTm8gcHJvYmxlbSwgdGhhdCdzIGZpbmUuIFNvIHRoZSBmaW5hbCBsaXN0IG9mIGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBpcyBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCwgYG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50YCwgYW5kIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAuXG5cbkp1c3QgdG8gYmUgY2VydGFpbiwgbGV0IG1lIHZlcmlmeSB0aGF0IGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIGlzIGluZGVlZCBzdGF0aWMuIEFoLCB5ZXMsIGl0IGlzLCBkZWNsYXJlZCBhcyBgc3RhdGljIHU4IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShzdHJ1Y3QgaWVfYm9keSAqaWVib2R5LCB1OCAqb3VpLCBpbnQgaWVfbGVuKWAuXG5cbk5vdywgbGV0J3Mgc2VlIGlmIEkgbmVlZCB0byB0YWtlIG90aGVyIGNvbmZpZ3VyYXRpb25zIGludG8gYWNjb3VudC4gQWgsIGBNV0lGSUVYYCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBXTEFOYC4gSSBjYW4ganVzdCBsaXN0IGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBhcyB0aGUgb3ZlcmFsbCBjb25maWd1cmF0aW9ucyB0aGF0IEkgbmVlZCB0byBiZSBjb25jZXJuZWQgd2l0aC5cblxuSSBzaG91bGQgZG91YmxlLWNoZWNrIHJlYWNoYWJpbGl0eSBmcm9tIHRoZSBVU0IgcGF0aC4gSSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIGlzIGFsc28gcmVhY2hhYmxlIGZyb20gdGhlIFVTQiBwYXRoLiBUaGUgVVNCIGRyaXZlciByZWNlaXZlcyBkYXRhIHRocm91Z2ggYG13aWZpZXhfdXNiX3JlY3ZgLCB3aGljaCB0aGVuIGNhbGxzIGBtd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXRgLCBvciBzaW1pbGFyLiBUaGF0IG1lYW5zIEkgY2FuIHJlYWNoIHRob3NlIGZ1bmN0aW9ucyB0aHJvdWdoIHRoZSBVU0IgZW50cnlwb2ludC4gR29vZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU4NTcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjc6NTcuNzc5MzYyNTU0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjA3MDI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3VzYl9yZWN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD01NT1lbnVtIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTIzLSAqIERvIG5vdCBjaGVjayBmb3IgZGF0YV9yZWNlaXZlZCBmb3IgVVNCLCBhcyBkYXRhX3JlY2VpdmVkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMjQ6ICogaXMgaGFuZGxlZCBpbiBtd2lmaWV4X3VzYl9yZWN2IGZvciBVU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyNS0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz00MT1zdGF0aWMgaW50IG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoc3RydWN0IHVyYl9jb250ZXh0ICpjdHgsIGludCBzaXplKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00NS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NDY6c3RhdGljIGludCBtd2lmaWV4X3VzYl9yZWN2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ3LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBlcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTI9c3RhdGljIHZvaWQgbXdpZmlleF91c2JfcnhfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTg3OlxcdFxcdHN0YXR1cyA9IG13aWZpZXhfdXNiX3JlY3YoYWRhcHRlciwgc2tiLCBjb250ZXh0LVxcdTAwM2VlcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xOTYtXFx0XFx0XFx0ICogdXJiIGZvciBjbWRfZXAgd2lsbCBiZSByZS1zdWJtaXR0ZWQgaW4gY2FsbGJhY2tcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTk3OlxcdFxcdFxcdCAqIG13aWZpZXhfdXNiX3JlY3ZfY29tcGxldGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTk4LVxcdFxcdFxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyNzo1Ny44MzU0MzkzNTRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE3NTI4MTY3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBVU0IgUmVjZWl2ZSBQYXRoKipcblxuQWxyaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBVU0IgcmVjZWl2ZSBwYXRoIGZvciB0aGlzIE1hcnZlbGwgV2ktRmkgZHJpdmVyLiBUaGUgYG13aWZpZXhfdXNiX3JlY3ZgIGZ1bmN0aW9uIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIGlzbid0IGl0PyBUaGF0J3MgdGhlIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBpbmNvbWluZyBkYXRhIHBhY2tldHMgZnJvbSB0aGUgVVNCIGludGVyZmFjZS4gVGhlIGNvcmUgcXVlc3Rpb24gaXM6IHdoYXQncyB0aGUgaW1tZWRpYXRlIG5leHQgc3RlcCBhZnRlciB0aGUgYHNrYmAgaXMgcmVjZWl2ZWQ/IElzIHRoZSBkYXRhIGhhbmRsZWQgZGlyZWN0bHkgYnkgYG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldGAgb3IgYG13aWZpZXhfcHJvY2Vzc19yeF9wYWNrZXRgPyBLbm93aW5nIHRoYXQgcXVpY2tseSB0ZWxscyBtZSB3aGV0aGVyIGl0J3MgYW4gaW1tZWRpYXRlLCBoaWdoLXByaW9yaXR5IHByb2Nlc3Npbmcgc2NlbmFyaW8gdmVyc3VzIHNvbWV0aGluZyB0aGF0IG1pZ2h0IGJlIHB1c2hlZCBpbnRvIGEgdGFza2xldCBvciB3b3JrIHF1ZXVlLiBJdCdzIGEga2V5IGRpc3RpbmN0aW9uIHdoZW4gdGhpbmtpbmcgYWJvdXQgbGF0ZW5jeSBhbmQgb3ZlcmFsbCBzeXN0ZW0gcmVzcG9uc2l2ZW5lc3MuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgZXhhY3QgY29udHJvbCBmbG93IGhlcmUgdG8gdW5kZXJzdGFuZCBob3cgaW50ZXJydXB0cywgd29ya3F1ZXVlcywgYW5kIGRlZmVycmluZyBoYXBwZW4gaW4gdGhpcyBkcml2ZXIuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzMzNSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI4OjAxLjAxMDcyMzY3NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUzOTIyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF91c2JfcmVjdlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTQxPXN0YXRpYyBpbnQgbXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihzdHJ1Y3QgdXJiX2NvbnRleHQgKmN0eCwgaW50IHNpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ1LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo0NjpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3JlY3Yoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDctXFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsIHU4IGVwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTE1Mj1zdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9yeF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxODc6XFx0XFx0c3RhdHVzID0gbXdpZmlleF91c2JfcmVjdihhZGFwdGVyLCBza2IsIGNvbnRleHQtXFx1MDAzZWVwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE5Ni1cXHRcXHRcXHQgKiB1cmIgZm9yIGNtZF9lcCB3aWxsIGJlIHJlLXN1Ym1pdHRlZCBpbiBjYWxsYmFja1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxOTc6XFx0XFx0XFx0ICogbXdpZmlleF91c2JfcmVjdl9jb21wbGV0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xOTgtXFx0XFx0XFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI4OjAxLjA2NjEyNDI1NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzAwODUwODE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgbXdpZmlleF91c2JfcmVjdmAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlLiBJJ20gYXNzdW1pbmcgaXQgaGFuZGxlcyByZWNlaXZpbmcgZGF0YSBvdmVyIFVTQiB3aXRoaW4gdGhlIE1hcnZlbGwgV2ktRmkgZHJpdmVyLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gSXQncyBsaWtlbHkgYSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlIGZvciBtYW5hZ2luZyBpbmNvbWluZyBwYWNrZXRzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZW50cnkgcG9pbnQgb2YgdGhlIFVTQiBkYXRhIHBhdGgsIHRoZSB0eXBpY2FsIGZsb3cgaXQncyBpbnZvbHZlZCBpbiwgYW5kIHdoYXQgaGFwcGVucyBpbiB0aGUgZXZlbnQgb2YgZXJyb3JzLiBJJ2xsIHByb2JhYmx5IHN0YXJ0IGJ5IGxvb2tpbmcgYXQgaXRzIGltbWVkaWF0ZSBjYWxscyBhbmQgY2FsbGVlcyB0byBnZXQgYSBmZWVsIGZvciBob3cgaXQgZml0cyBpbnRvIHRoZSBvdmVyYWxsIGRyaXZlciBzdHJ1Y3R1cmUuIFVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgc3RydWN0dXJlcyBpdCBtYW5pcHVsYXRlcywgZXNwZWNpYWxseSB0aG9zZSByZWxhdGVkIHRvIFVTQiBlbmRwb2ludHMgYW5kIHBhY2tldCBidWZmZXJzLCB3aWxsIGJlIGtleS4gSSBuZWVkIHRvIGdldCB0aGUgYmlnIHBpY3R1cmUgb2YgaXRzIGNvbnRleHQgdG8gcHJvcGVybHkgZ3Jhc3AgaXRzIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODAyMywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI4OjAzLjc2Njk3NzY2NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDcwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ2LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA0NjpcXHRzdGF0aWMgaW50IG13aWZpZXhfdXNiX3JlY3Yoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gIDQ3OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBlcClcXG4gIDQ4OlxcdHtcXG4gIDQ5OlxcdFxcdHUzMiByZWN2X3R5cGU7XFxuICA1MDpcXHRcXHRfX2xlMzIgdG1wO1xcbiAgNTE6XFx0XFx0aW50IHJldDtcXG4gIDUyOlxcdFxcbiAgNTM6XFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZWhzX2FjdGl2YXRlZClcXG4gIDU0OlxcdFxcdFxcdG13aWZpZXhfcHJvY2Vzc19oc19jb25maWcoYWRhcHRlcik7XFxuICA1NTpcXHRcXG4gIDU2OlxcdFxcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIElOVEZfSEVBREVSX0xFTikge1xcbiAgNTc6XFx0XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXFxuICA1ODpcXHRcXHRcXHRcXHQgICAgXFxcIiVzOiBpbnZhbGlkIHNrYi1cXHUwMDNlbGVuXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuICA1OTpcXHRcXHRcXHRyZXR1cm4gLTE7XFxuICA2MDpcXHRcXHR9XFxuICA2MTpcXHRcXG4gIDYyOlxcdFxcdHN3aXRjaCAoZXApIHtcXG4gIDYzOlxcdFxcdGNhc2UgTVdJRklFWF9VU0JfRVBfQ01EX0VWRU5UOlxcbiAgNjQ6XFx0XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVZFTlQsXFxuICA2NTpcXHRcXHRcXHRcXHQgICAgXFxcIiVzOiBFUF9DTURfRVZFTlRcXFxcblxcXCIsIF9fZnVuY19fKTtcXG4gIDY2OlxcdFxcdFxcdHNrYl9jb3B5X2Zyb21fbGluZWFyX2RhdGEoc2tiLCBcXHUwMDI2dG1wLCBJTlRGX0hFQURFUl9MRU4pO1xcbiAgNjc6XFx0XFx0XFx0cmVjdl90eXBlID0gbGUzMl90b19jcHUodG1wKTtcXG4gIDY4OlxcdFxcdFxcdHNrYl9wdWxsKHNrYiwgSU5URl9IRUFERVJfTEVOKTtcXG4gIDY5OlxcdFxcbiAgNzA6XFx0XFx0XFx0c3dpdGNoIChyZWN2X3R5cGUpIHtcXG4gIDcxOlxcdFxcdFxcdGNhc2UgTVdJRklFWF9VU0JfVFlQRV9DTUQ6XFxuICA3MjpcXHRcXHRcXHRcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzZSBNV0lGSUVYX1NJWkVfT0ZfQ01EX0JVRkZFUikge1xcbiAgNzM6XFx0XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXFxuICA3NDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFxcIkNNRDogc2tiLVxcdTAwM2VsZW4gdG9vIGxhcmdlXFxcXG5cXFwiKTtcXG4gIDc1OlxcdFxcdFxcdFxcdFxcdHJldCA9IC0xO1xcbiAgNzY6XFx0XFx0XFx0XFx0XFx0Z290byBleGl0X3Jlc3RvcmVfc2tiO1xcbiAgNzc6XFx0XFx0XFx0XFx0fSBlbHNlIGlmICghYWRhcHRlci1cXHUwMDNlY3Vycl9jbWQpIHtcXG4gIDc4OlxcdFxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIFdBUk4sIFxcXCJDTUQ6IG5vIGN1cnJfY21kXFxcXG5cXFwiKTtcXG4gIDc5OlxcdFxcdFxcdFxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2Vwc19zdGF0ZSA9PSBQU19TVEFURV9TTEVFUF9DRk0pIHtcXG4gIDgwOlxcdFxcdFxcdFxcdFxcdFxcdG13aWZpZXhfcHJvY2Vzc19zbGVlcF9jb25maXJtX3Jlc3AoXFxuICA4MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRhZGFwdGVyLCBza2ItXFx1MDAzZWRhdGEsXFxuICA4MjpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRza2ItXFx1MDAzZWxlbik7XFxuICA4MzpcXHRcXHRcXHRcXHRcXHRcXHRyZXQgPSAwO1xcbiAgODQ6XFx0XFx0XFx0XFx0XFx0XFx0Z290byBleGl0X3Jlc3RvcmVfc2tiO1xcbiAgODU6XFx0XFx0XFx0XFx0XFx0fVxcbiAgODY6XFx0XFx0XFx0XFx0XFx0cmV0ID0gLTE7XFxuICA4NzpcXHRcXHRcXHRcXHRcXHRnb3RvIGV4aXRfcmVzdG9yZV9za2I7XFxuICA4ODpcXHRcXHRcXHRcXHR9XFxuICA4OTpcXHRcXG4gIDkwOlxcdFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWN1cnJfY21kLVxcdTAwM2VyZXNwX3NrYiA9IHNrYjtcXG4gIDkxOlxcdFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWNtZF9yZXNwX3JlY2VpdmVkID0gdHJ1ZTtcXG4gIDkyOlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAgOTM6XFx0XFx0XFx0Y2FzZSBNV0lGSUVYX1VTQl9UWVBFX0VWRU5UOlxcbiAgOTQ6XFx0XFx0XFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2Mgc2l6ZW9mKHUzMikpIHtcXG4gIDk1OlxcdFxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbiAgOTY6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJFVkVOVDogc2tiLVxcdTAwM2VsZW4gdG9vIHNtYWxsXFxcXG5cXFwiKTtcXG4gIDk3OlxcdFxcdFxcdFxcdFxcdHJldCA9IC0xO1xcbiAgOTg6XFx0XFx0XFx0XFx0XFx0Z290byBleGl0X3Jlc3RvcmVfc2tiO1xcbiAgOTk6XFx0XFx0XFx0XFx0fVxcbiAxMDA6XFx0XFx0XFx0XFx0c2tiX2NvcHlfZnJvbV9saW5lYXJfZGF0YShza2IsIFxcdTAwMjZ0bXAsIHNpemVvZih1MzIpKTtcXG4gMTAxOlxcdFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWV2ZW50X2NhdXNlID0gbGUzMl90b19jcHUodG1wKTtcXG4gMTAyOlxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVWRU5ULFxcbiAxMDM6XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJldmVudF9jYXVzZSAlI3hcXFxcblxcXCIsIGFkYXB0ZXItXFx1MDAzZWV2ZW50X2NhdXNlKTtcXG4gMTA0OlxcdFxcbiAxMDU6XFx0XFx0XFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2UgTUFYX0VWRU5UX1NJWkUpIHtcXG4gMTA2OlxcdFxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbiAxMDc6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJFVkVOVDogZXZlbnQgYm9keSB0b28gbGFyZ2VcXFxcblxcXCIpO1xcbiAxMDg6XFx0XFx0XFx0XFx0XFx0cmV0ID0gLTE7XFxuIDEwOTpcXHRcXHRcXHRcXHRcXHRnb3RvIGV4aXRfcmVzdG9yZV9za2I7XFxuIDExMDpcXHRcXHRcXHRcXHR9XFxuIDExMTpcXHRcXG4gMTEyOlxcdFxcdFxcdFxcdG1lbWNweShhZGFwdGVyLVxcdTAwM2VldmVudF9ib2R5LCBza2ItXFx1MDAzZWRhdGEgK1xcbiAxMTM6XFx0XFx0XFx0XFx0ICAgICAgIE1XSUZJRVhfRVZFTlRfSEVBREVSX0xFTiwgc2tiLVxcdTAwM2VsZW4pO1xcbiAxMTQ6XFx0XFxuIDExNTpcXHRcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VldmVudF9yZWNlaXZlZCA9IHRydWU7XFxuIDExNjpcXHRcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VldmVudF9za2IgPSBza2I7XFxuIDExNzpcXHRcXHRcXHRcXHRicmVhaztcXG4gMTE4OlxcdFxcdFxcdGRlZmF1bHQ6XFxuIDExOTpcXHRcXHRcXHRcXHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcXG4gMTIwOlxcdFxcdFxcdFxcdFxcdCAgICBcXFwidW5rbm93biByZWN2X3R5cGUgJSN4XFxcXG5cXFwiLCByZWN2X3R5cGUpO1xcbiAxMjE6XFx0XFx0XFx0XFx0cmV0ID0gLTE7XFxuIDEyMjpcXHRcXHRcXHRcXHRnb3RvIGV4aXRfcmVzdG9yZV9za2I7XFxuIDEyMzpcXHRcXHRcXHR9XFxuIDEyNDpcXHRcXHRcXHRicmVhaztcXG4gMTI1OlxcdFxcdGNhc2UgTVdJRklFWF9VU0JfRVBfREFUQTpcXG4gMTI2OlxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIERBVEEsIFxcXCIlczogRVBfREFUQVxcXFxuXFxcIiwgX19mdW5jX18pO1xcbiAxMjc6XFx0XFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2UgTVdJRklFWF9SWF9EQVRBX0JVRl9TSVpFKSB7XFxuIDEyODpcXHRcXHRcXHRcXHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcXG4gMTI5OlxcdFxcdFxcdFxcdFxcdCAgICBcXFwiREFUQTogc2tiLVxcdTAwM2VsZW4gdG9vIGxhcmdlXFxcXG5cXFwiKTtcXG4gMTMwOlxcdFxcdFxcdFxcdHJldHVybiAtMTtcXG4gMTMxOlxcdFxcdFxcdH1cXG4gMTMyOlxcdFxcbiAxMzM6XFx0XFx0XFx0c2tiX3F1ZXVlX3RhaWwoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJ4X2RhdGFfcSwgc2tiKTtcXG4gMTM0OlxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWRhdGFfcmVjZWl2ZWQgPSB0cnVlO1xcbiAxMzU6XFx0XFx0XFx0YXRvbWljX2luYyhcXHUwMDI2YWRhcHRlci1cXHUwMDNlcnhfcGVuZGluZyk7XFxuIDEzNjpcXHRcXHRcXHRicmVhaztcXG4gMTM3OlxcdFxcdGRlZmF1bHQ6XFxuIDEzODpcXHRcXHRcXHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcXG4gMTM5OlxcdFxcdFxcdFxcdCAgICBcXFwiJXM6IHVua25vd24gZW5kcG9ydCAlI3hcXFxcblxcXCIsIF9fZnVuY19fLCBlcCk7XFxuIDE0MDpcXHRcXHRcXHRyZXR1cm4gLTE7XFxuIDE0MTpcXHRcXHR9XFxuIDE0MjpcXHRcXG4gMTQzOlxcdFxcdHJldHVybiAtRUlOUFJPR1JFU1M7XFxuIDE0NDpcXHRcXG4gMTQ1OlxcdGV4aXRfcmVzdG9yZV9za2I6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI4OjAzLjc2NzEyNTk1NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTY3NzE1NjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNYXJ2ZWxsIFdpLUZpIERyaXZlcidzIFJlY2VpdmUgUGF0aCoqXG5cblJpZ2h0LCBzbyBJJ20gdHJ5aW5nIHRvIHRyYWNlIHRoZSBwYXRoIHRoZSBNYXJ2ZWxsIFdpLUZpIGRyaXZlciB0YWtlcyB3aGVuIGl0IHJlY2VpdmVzIGRhdGEuIEZyb20gd2hhdCBJIGNhbiBzZWUsIGBtd2lmaWV4X3VzYl9yZWN2YCBzZWVtcyB0byBiZSB0aGUgaW5pdGlhbCBlbnRyeSBwb2ludCwgaGFuZGxpbmcgdGhlIHF1ZXVpbmcgb2YgYm90aCBldmVudHMgYW5kIGNvbW1hbmRzLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIHRoZSBVU0IgcmVjZWl2ZSBmdW5jdGlvbiwgc28gaXQncyBnb3QgdG8gbWFuYWdlIHRoZSBpbmNvbWluZyBkYXRhIHN0cmVhbXMuIFRoZW4sIGBtd2lmaWV4X21haW5fcHJvY2Vzc2AgdGFrZXMgb3ZlciwgcHVsbGluZyB0aG9zZSBxdWV1ZWQgaXRlbXMgYW5kIHByb2Nlc3NpbmcgdGhlbS4gVGhpcyBpcyB0aGUgaGVhcnQgb2YgdGhlIHJlY2VpdmUgaGFuZGxpbmcuIEl0IGxvb2tzIGxpa2UgaXQgZGVsZWdhdGVzIHRvIHR3byBrZXkgZnVuY3Rpb25zOiBgbXdpZmlleF9wcm9jZXNzX2NtZHJlc3BgIGFuZCBgbXdpZmlleF9wcm9jZXNzX2V2ZW50YC4gT2J2aW91c2x5LCB0aGUgZXZlbnQgcHJvY2Vzc29yIHdpbGwgaGFuZGxlIGV2ZW50cywgYnV0IHRoZSBjb21tYW5kIHJlc3BvbnNlIHByb2Nlc3NvciwgYG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwYCBpcyBtb3JlIGludGVyZXN0aW5nIGluIG15IGN1cnJlbnQgZm9jdXMuIEkgc2VlIHRoYXQgYG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwYCBpcyByZXNwb25zaWJsZSBmb3IgZGVhbGluZyB3aXRoIGNvbW1hbmQgcmVzcG9uc2VzLCBhbmQsIGNydWNpYWxseSwgdGhhdCBpbmNsdWRlcyB0aGluZ3MgbGlrZSBzY2FuIHJlc3VsdHMuIEFoYSEgSSB0aGluayBJJ3ZlIGZvdW5kIHdoZXJlIEkgbmVlZCB0byBsb29rLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gYG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwYCB0byBmaWd1cmUgb3V0IHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyB0aG9zZSBzY2FuIHJlc3VsdHMuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTc1NCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjg6MDcuNzM0ODQ0MDU3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTA3OTc3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9wcm9jZXNzX2NtZHJlc3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmM9NzQxPWludCBtd2lmaWV4X2V4ZWNfbmV4dF9jbWQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy04MDItICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jOjgwMzppbnQgbXdpZmlleF9wcm9jZXNzX2NtZHJlc3Aoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtODA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYz0xMDg1PW13aWZpZXhfY2FuY2VsX3BlbmRpbmdfaW9jdGwoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy0xMDkzLVxcdFxcdC8qIHNldHRpbmcgY3Vycl9jbWQgdG8gTlVMTCBpcyBxdWl0ZSBkYW5nZXJvdXMsIGJlY2F1c2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmM6MTA5NDpcXHRcXHQgKiBtd2lmaWV4X3Byb2Nlc3NfY21kcmVzcCBjaGVja3MgY3Vycl9jbWQgdG8gYmUgIT0gTlVMTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy0xMDk1LVxcdFxcdCAqIGF0IHRoZSBiZWdpbm5pbmcgdGhlbiByZWxpZXMgb24gaXQgYW5kIGRlcmVmZXJlbmNlc1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0yNDg9aW50IG13aWZpZXhfbWFpbl9wcm9jZXNzKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTM1Ni1cXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VjbWRfcmVzcF9yZWNlaXZlZCA9IGZhbHNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6MzU3OlxcdFxcdFxcdG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMzU4LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTEwMD1pbnQgbXdpZmlleF9leGVjX25leHRfY21kKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTEwMTppbnQgbXdpZmlleF9wcm9jZXNzX2NtZHJlc3Aoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTAyLXZvaWQgbXdpZmlleF9wcm9jZXNzX2Fzc29jX3Jlc3Aoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYz0zMT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjMyOm13aWZpZXhfcHJvY2Vzc19jbWRyZXNwX2Vycm9yKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMzMtXFx0XFx0XFx0ICAgICAgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYz0xMjEyPWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2NtZHJlc3Aoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTE2IGNtZHJlc3Bfbm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMjIwLVxcdGlmIChyZXNwLVxcdTAwM2VyZXN1bHQgIT0gSG9zdENtZF9SRVNVTFRfT0spIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYzoxMjIxOlxcdFxcdG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwX2Vycm9yKHByaXYsIHJlc3ApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyMjItXFx0XFx0cmV0dXJuIC0xO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyODowNy44ODU2NDc5ODdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAxMDUyNDYyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByb2Nlc3MsIGJyZWFraW5nIGl0IGRvd24gaW4gbXkgb3duIGhlYWQ6XG5cbioqQW5hbHl6aW5nIHRoZSBTY2FuIENvbW1hbmQgUmVzcG9uc2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIHN5c3RlbSBwcm9jZXNzZXMgYSByZXNwb25zZSB0byBhIHNjYW4gY29tbWFuZCwgc3BlY2lmaWNhbGx5LCB0aGUgYEhvc3RDbWRfQ01EXzgwMl8xMV9TQ0FOYCBjb21tYW5kLiBUaGUgZnVuY3Rpb24gYG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcGAgaXMgdGhlIG9uZSB0aGF0J3MgZGVhbGluZyB3aXRoIGl0LiBJJ2QgZXhwZWN0IGl0IHRvIGhhbmRsZSB0aGUgaW5pdGlhbCBwYXJzaW5nIGFuZCBhbnkgY29tbWFuZC1zcGVjaWZpYyBsb2dpYyBmb3IgdGhpcyByZXNwb25zZS4gQ3J1Y2lhbGx5LCBJIHNlZSB0aGF0IGl0IGNhbGxzIGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAuIFRoaXMgaXMga2V5LiBUaGUgbmFtZSB0ZWxscyBtZSB0aGF0IHRoaXMgaXMgd2hlcmUgdGhlICpyZXR1cm4qIG9yLCByYXRoZXIsIHByb2Nlc3Npbmcgb2YgdGhlIHNjYW4gcmVzdWx0cyBhY3R1YWxseSBoYXBwZW5zLlxuXG5UaGVyZWZvcmUsIGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAgaXMgcmVzcG9uc2libGUgZm9yIHRha2luZyB0aGUgcmF3IGRhdGEgZnJvbSB0aGUgc2NhbiBhbmQgdHVybmluZyBpdCBpbnRvIHNvbWV0aGluZyB1c2FibGUuIFRoaXMgbGlrZWx5IGludm9sdmVzIGRlY29kaW5nIHRoZSBmb3JtYXQgb2YgdGhlIHNjYW4gcmVzdWx0cywgb3JnYW5pemluZyB0aGUgZGF0YSwgYW5kIHBvc3NpYmx5IGFwcGx5aW5nIHNvbWUgZmlsdGVyaW5nIG9yIGVycm9yIGNoZWNraW5nLCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uLiBUaGF0J3MgdGhlIGNvcmUgb2YgdGhlIHdob2xlIHByb2Nlc3MgZm9yIGRlYWxpbmcgd2l0aCBzY2FuIHJlc3BvbnNlcy4gVGhlIGludGVyZXN0aW5nIHBvaW50cywgb2YgY291cnNlLCBsaWUgd2l0aGluIHRoZSBgbXdpZmlleF9yZXRfODAyXzExX3NjYW5gIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTAzMCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI4OjExLjg5NjE3NTA5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODA3NjExMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3JldF84MDJfMTFfc2NhblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTE1Nz12b2lkIG13aWZpZXhfcXVldWVfc2Nhbl9jbWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTExNTgtXFx0XFx0XFx0ICAgIHN0cnVjdCBjbWRfY3RybF9ub2RlICpjbWRfbm9kZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMTU5OmludCBtd2lmaWV4X3JldF84MDJfMTFfc2NhbihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTE2MC1cXHRcXHRcXHQgICAgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMjM5PWludCBtd2lmaWV4X2NtZF84MDJfMTFfc2Nhbl9leHQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTI0MS1cXHRcXHRcXHRcXHR2b2lkICpkYXRhX2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMjQyOmludCBtd2lmaWV4X3JldF84MDJfMTFfc2Nhbl9leHQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyNDMtXFx0XFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xMTI3PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxMTI4Om13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2dldF90bHZfcHRycyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTEyOS1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2RhdGEgKnRsdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MjA1NT12b2lkIG13aWZpZXhfY2FuY2VsX3NjYW4oc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjEwMS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjIxMDI6aW50IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yMTAzLVxcdFxcdFxcdCAgICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjE3MS1cXHQgICBUTFZzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoyMTcyOlxcdG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2dldF90bHZfcHRycyhhZGFwdGVyLCB0bHZfZGF0YSwgdGx2X2J1Zl9zaXplLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjE3My1cXHRcXHRcXHRcXHRcXHQgICAgIFRMVl9UWVBFX1RTRlRJTUVTVEFNUCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjE3OC1cXHQgICBUTFZzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoyMTc5OlxcdG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2dldF90bHZfcHRycyhhZGFwdGVyLCB0bHZfZGF0YSwgdGx2X2J1Zl9zaXplLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjE4MC1cXHRcXHRcXHRcXHRcXHQgICAgIFRMVl9UWVBFX0NIQU5ORUxCQU5ETElTVCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MjQ4OT1td2lmaWV4X3VwZGF0ZV9jaGFuX3N0YXRpc3RpY3Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjUzMS0vKiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgdGhlIGNvbW1hbmQgcmVzcG9uc2Ugb2YgZXh0ZW5kZWQgc2NhbiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MjUzMjppbnQgbXdpZmlleF9yZXRfODAyXzExX3NjYW5fZXh0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yNTMzLVxcdFxcdFxcdFxcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM9MTIxMj1pbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUxNiBjbWRyZXNwX25vLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTI0My1cXHRjYXNlIEhvc3RDbWRfQ01EXzgwMl8xMV9TQ0FOOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjEyNDQ6XFx0XFx0cmV0ID0gbXdpZmlleF9yZXRfODAyXzExX3NjYW4ocHJpdiwgcmVzcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTI0NS1cXHRcXHRhZGFwdGVyLVxcdTAwM2VjdXJyX2NtZC1cXHUwMDNld2FpdF9xX2VuYWJsZWQgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyNDctXFx0Y2FzZSBIb3N0Q21kX0NNRF84MDJfMTFfU0NBTl9FWFQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM6MTI0ODpcXHRcXHRyZXQgPSBtd2lmaWV4X3JldF84MDJfMTFfc2Nhbl9leHQocHJpdiwgcmVzcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTI0OS1cXHRcXHRhZGFwdGVyLVxcdTAwM2VjdXJyX2NtZC1cXHUwMDNld2FpdF9xX2VuYWJsZWQgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyNTEtXFx0Y2FzZSBIb3N0Q21kX0NNRF84MDJfMTFfQkdfU0NBTl9RVUVSWTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYzoxMjUyOlxcdFxcdHJldCA9IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuKHByaXYsIHJlc3ApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyNTMtXFx0XFx0Y2ZnODAyMTFfc2NoZWRfc2Nhbl9yZXN1bHRzKHByaXYtXFx1MDAzZXdkZXYud2lwaHksIDApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyODoxMS45NTQyNTg4OTFaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODYyNDM1OTI5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBtd2lmaWV4YCBEcml2ZXIncyBTZWN1cml0eSBGb290cHJpbnQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGFuYWx5c2lzIHN0YXJ0cyB3aXRoIGhvdyB0aGUgc2NhbiByZXNwb25zZSBpcyBoYW5kbGVkLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgZGF0YSBmbG93LiBUaGUgZnVuY3Rpb24gYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYCBwYXJzZXMgdGhlIHJlc3BvbnNlIGFuZCBldmVudHVhbGx5IGZ1bm5lbHMgaXQgdGhyb3VnaCBgbXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmYC4gVGhpcyBwb3B1bGF0ZXMgdGhlIGBic3NfZGVzY2Agc3RydWN0dXJlLCB0aGVuIGNhbGxzIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYC5cblxuTm93LCB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBJIHNlZSB0aGF0IGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAgaXMgY2FsbGVkLCBub3QgZGlyZWN0bHksIGJ1dCB0aHJvdWdoIHRoZSBjYWxsIHRvIGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAuIExvb2tpbmcgYXQgdGhlIGNhbGxzIHRvIGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAgc3VnZ2VzdHMgYSBrZXkgcGF0aC4gSSBrbm93IHRoYXQgYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YCBpcyBpbnZva2VkIGR1cmluZyBib3RoIG5ldHdvcmsgam9pbnMgKHZpYSBgbXdpZmlleF9ic3Nfc3RhcnRgIGFuZCBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCkuXG5cblNvLCBJIGNhbiBjcmFmdCBhbiBhdHRhY2sgYnkgc2VuZGluZyBhIHNjYW4gcmVzcG9uc2UsIGFuZCB0aGVuIHRyaWdnZXJpbmcgYSBqb2luIHJlcXVlc3QgKHVzaW5nIG5sODAyMTEpLiBUaGlzIHdpbGwgaW52b2tlIGVpdGhlciBgbXdpZmlleF9ic3Nfc3RhcnRgIG9yIGBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXNgIGFuZCB0cmlnZ2VyIHRoaXMgY29tcGF0aWJpbGl0eSBjaGVjay4gQWxzbywgYG13aWZpZXhfdXBkYXRlX2N1cnJfYnNzX3BhcmFtc2AgaXMgYWxzbyBjYWxsZWQgZnJvbSBhc3NvY2lhdGlvbiBhbmQgYWQtaG9jIHN0YXJ0LlxuXG5UaGlua2luZyBhYm91dCBhbiBhc3NvY2lhdGlvbiByZXNwb25zZSwgaXQgZ2V0cyBldmVuIGJldHRlci4gV2hlbiBJIGVtdWxhdGUgYW4gYXNzb2NpYXRpb24gcmVzcG9uc2UsIEkga25vdyBJJ2xsIGhpdCBgbXdpZmlleF9yZXRfODAyXzExX2Fzc29jaWF0ZWAuIFRoaXMsIGluIHR1cm4sIGNhbGxzIGBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXNgLCB3aGljaCB0aGVuIHRyaWdnZXJzIGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAuIFRoaXMgZXZlbnR1YWxseSBjYWxscyBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgLCB3aGljaCBicmFuY2hlcyBvdXQgdG8gY2FsbCBgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRgIGFuZCBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgLiBUaGVzZSwgdWx0aW1hdGVseSwgY2FsbCBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYC5cblxuVGhlIGRhdGEgZmxvdyBpcyBwcmV0dHkgY2xlYXJseSBsYWlkIG91dDogYG13aWZpZXhfdXNiX3JlY3ZgIC1cdTAwM2UgYG13aWZpZXhfbWFpbl9wcm9jZXNzYCAtXHUwMDNlIGBtd2lmaWV4X3Byb2Nlc3NfY21kcmVzcGAgLVx1MDAzZSBgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwYCAtXHUwMDNlIGBtd2lmaWV4X3JldF84MDJfMTFfYXNzb2NpYXRlYCAtXHUwMDNlIGBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXNgIC1cdTAwM2UgYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YCAtXHUwMDNlIGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAgLVx1MDAzZSBgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRgIC8gYG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50YCAtXHUwMDNlIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgLlxuXG5UaGlzIHBhdGggaXMgKmhpZ2hseSogcmVhY2hhYmxlIGFuZCByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBwYXJ0IG9mIHRoZSBkcml2ZXIuXG5cbk15IGZvY3VzIGlzIHByaW1hcmlseSBvbiB0aGVzZSBzeW1ib2xzLCB3aGljaCBpcyB3aGVyZSBhbnkgdnVsbmVyYWJpbGl0eSBpcyBsaWtlbHkgdG8gYmUgZXhwb3NlZDpcbi0gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWBcbi0gYG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50YFxuLSBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgXG4tIGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWBcbi0gYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YFxuXG5GaW5hbGx5LCBjb25maWd1cmF0aW9uLXdpc2UsIEkgc2hvdWxkIGNoZWNrIHRoYXQgYE1XSUZJRVhgIGFuZCBgTVdJRklFWF9VU0JgIGFyZSBlbmFibGVkLiBJJ2xsIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmaWxlIGluIHRoZSBkcml2ZXIgZGlyZWN0b3J5IHRvIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyOTIxLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI4OjIwLjU3ODYyMDU4OVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1XSUZJRVhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgIDc6XFx0XFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAxMDpcXHRcXHQgIG13aWZpZXguXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBNV0lGSUVYX1NESU9cXG4gIDEzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1xcXCJcXG4gIDE0OlxcdFxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBNTUNcXG4gIDE1OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDE2OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMTk6XFx0XFx0ICA4Nzg2Lzg3ODcvODc5Ny84ODg3Lzg4OTcvODk3Ny84OTc4Lzg5ODcvODk5NyBjaGlwc2V0cyB3aXRoXFxuICAyMDpcXHRcXHQgIFNESU8gaW50ZXJmYWNlLiBTRDg5NzggaXMgYWxzbyBrbm93biBhcyBOWFAgSVc0MTYuXFxuICAyMTpcXHRcXG4gIDIyOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcXG4gIDIzOlxcdFxcdCAgbXdpZmlleF9zZGlvLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRjb25maWcgTVdJRklFWF9QQ0lFXFxuICAyNjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgUENJRSA4NzY2Lzg4OTcvODk5N1xcXCJcXG4gIDI3OlxcdFxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gIDI4OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDI5OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMzA6XFx0XFx0aGVscFxcbiAgMzE6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMzI6XFx0XFx0ICA4NzY2Lzg4OTcvODk5NyBjaGlwc2V0cyB3aXRoIFBDSWUgaW50ZXJmYWNlLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAzNTpcXHRcXHQgIG13aWZpZXhfcGNpZS5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0Y29uZmlnIE1XSUZJRVhfVVNCXFxuICAzODpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcXFwiXFxuICAzOTpcXHRcXHRkZXBlbmRzIG9uIE1XSUZJRVggXFx1MDAyNlxcdTAwMjYgVVNCXFxuICA0MDpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICA0MTpcXHRcXHRoZWxwXFxuICA0MjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXFxuICA0MzpcXHRcXHQgIDg3OTcvODk5NyBjaGlwc2V0IHdpdGggVVNCIGludGVyZmFjZS5cXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbiAgNDY6XFx0XFx0ICBtd2lmaWV4X3VzYi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjg6MjAuNTc4Njg0MjA5WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyNjQ1NjIwMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBtd2lmaWV4YCBEcml2ZXIgVnVsbmVyYWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGNvcmUgaXNzdWUgaXMgdGhpczogYSBwYXRjaCBhZGRzIGNydWNpYWwgYm91bmRzIGNoZWNraW5nIHRvIHRoZSBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCBmdW5jdGlvbiB3aXRoaW4gdGhlIGBtd2lmaWV4YCBkcml2ZXIuIFRoaXMgaXMgYSB0ZWxsLiBJJ20gc2VlaW5nIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXR5IGJlaW5nIGFkZHJlc3NlZC4gVGhlIGZ1bmN0aW9uJ3MgcHVycG9zZSBpcyBwYXJzaW5nIFJTTi9XUEEgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykuIEl0J3MgdHJpZ2dlcmVkIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgc2NhbiByZXN1bHRzIG9yIGFzc29jaWF0aW9uIHJlc3BvbnNlcy5cblxuTm93LCB0aGUgaW1wb3J0YW50IHBhcnQ6IHRoaXMgYG13aWZpZXhgIGRyaXZlciBhbHNvIGhhcyBhIFVTQiBjb21wb25lbnQsIGBtd2lmaWV4X3VzYmAuIFRoaXMgaXMgY3JpdGljYWwgYmVjYXVzZSBpdCBpbnRyb2R1Y2VzIGEgZGlyZWN0IGZ1enppbmcgdmVjdG9yLiBJIGNhbiBlbXVsYXRlIGEgTWFydmVsbCBXaS1GaSBVU0IgZGV2aWNlIHVzaW5nIHRoZSBVU0Igc3Vic3lzdGVtLCBlbXBsb3lpbmcgc29tZXRoaW5nIGxpa2UgYGR1bW15X2hjZGAgb3IgYHJhdy1nYWRnZXRgLiBUaGF0IGFsbG93cyBtZSB0byBjcmFmdCBhbmQgaW5qZWN0IG1hbGljaW91cyBzY2FuIG9yIGFzc29jaWF0aW9uIHJlc3BvbnNlcyBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoaXMgdnVsbmVyYWJsZSBmdW5jdGlvbi4gVGhlIFVTQiBwYXRoIGdpdmVzIG1lIHRoZSBjb250cm9sIEkgbmVlZCB0byByZWFjaCBpdC5cblxuVGhlcmVmb3JlLCB0aGlzIGZ1bmN0aW9uYWwgY2hhbmdlIGlzIHJlYWNoYWJsZSBhbmQgdnVsbmVyYWJsZS4gSXQgKm11c3QqIGJlIGZ1enplZCByaWdvcm91c2x5LiBJIG5lZWQgdG8gZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAsIGBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudGAsIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAsIGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAsIGFuZCBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLiBUaGV5IGFyZSBhbGwgcGFydCBvZiB0aGUgcmVsZXZhbnQgY29kZSBwYXRoLlxuXG5UbyByZWNyZWF0ZSB0aGUgZW52aXJvbm1lbnQsIEknbGwgbmVlZCBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgZW5hYmxlZC4gV2l0aCB0aGF0IHNldHVwIGluIHBsYWNlLCBJIGNhbiBnZXQgdG8gd29yay5cblxuVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MTYzLCJPdXRwdXRUb2tlbnMiOjI0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI4OjI2Ljg0MzI0ODA0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg0MTk5NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF9zZWFyY2hfb3VpX2luX2llXCIsXG4gICAgXCJtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudFwiLFxuICAgIFwibXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRcIixcbiAgICBcIm13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlXCIsXG4gICAgXCJtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHBhcnNpbmcgUlNOL1dQQSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKS4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgd2hlbiB0aGUgZHJpdmVyIHByb2Nlc3NlcyBzY2FuIHJlc3VsdHMgb3IgYXNzb2NpYXRpb24gcmVzcG9uc2VzIGNvbnRhaW5pbmcgdGhlc2UgSUVzLiBTaW5jZSBgbXdpZmlleGAgaGFzIGEgVVNCIGRyaXZlciAoYG13aWZpZXhfdXNiYCksIGl0IGNhbiBiZSBmdXp6ZWQgdmlhIHRoZSBVU0Igc3Vic3lzdGVtIChlLmcuLCB1c2luZyBkdW1teV9oY2QvcmF3LWdhZGdldCkgYnkgZW11bGF0aW5nIGEgTWFydmVsbCBXaS1GaSBVU0IgZGV2aWNlIGFuZCBzZW5kaW5nIG1hbGljaW91cyBzY2FuL2Fzc29jaWF0aW9uIHJlc3BvbnNlcy4gVGhlcmVmb3JlLCB0aGlzIGZ1bmN0aW9uYWwgY2hhbmdlIGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNV0lGSUVYXCIsXG4gICAgXCJNV0lGSUVYX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm13aWZpZXhfc2VhcmNoX291aV9pbl9pZVwiLFxuICAgIFwibXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRcIixcbiAgICBcIm13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50XCIsXG4gICAgXCJtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZVwiLFxuICAgIFwibXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwYXJzaW5nIFJTTi9XUEEgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgc2NhbiByZXN1bHRzIG9yIGFzc29jaWF0aW9uIHJlc3BvbnNlcyBjb250YWluaW5nIHRoZXNlIElFcy4gU2luY2UgYG13aWZpZXhgIGhhcyBhIFVTQiBkcml2ZXIgKGBtd2lmaWV4X3VzYmApLCBpdCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIHN1YnN5c3RlbSAoZS5nLiwgdXNpbmcgZHVtbXlfaGNkL3Jhdy1nYWRnZXQpIGJ5IGVtdWxhdGluZyBhIE1hcnZlbGwgV2ktRmkgVVNCIGRldmljZSBhbmQgc2VuZGluZyBtYWxpY2lvdXMgc2Nhbi9hc3NvY2lhdGlvbiByZXNwb25zZXMuIFRoZXJlZm9yZSwgdGhpcyBmdW5jdGlvbmFsIGNoYW5nZSBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsdl6s[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-16 02:09:40 +0000 UTC FinishedAt: 2026-07-16 02:28:29 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB" ], "series_id": "e5b697ef-7121-4bf7-b451-dd892041b1d3" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mwifiex_search_oui_in_ie", "mwifiex_is_rsn_oui_present", "mwifiex_is_wpa_oui_present", "mwifiex_is_network_compatible", "mwifiex_check_network_compatibility" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcGFyc2luZyBSU04vV1BBIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB3aGVuIHRoZSBkcml2ZXIgcHJvY2Vzc2VzIHNjYW4gcmVzdWx0cyBvciBhc3NvY2lhdGlvbiByZXNwb25zZXMgY29udGFpbmluZyB0aGVzZSBJRXMuIFNpbmNlIGBtd2lmaWV4YCBoYXMgYSBVU0IgZHJpdmVyIChgbXdpZmlleF91c2JgKSwgaXQgY2FuIGJlIGZ1enplZCB2aWEgdGhlIFVTQiBzdWJzeXN0ZW0gKGUuZy4sIHVzaW5nIGR1bW15X2hjZC9yYXctZ2FkZ2V0KSBieSBlbXVsYXRpbmcgYSBNYXJ2ZWxsIFdpLUZpIFVTQiBkZXZpY2UgYW5kIHNlbmRpbmcgbWFsaWNpb3VzIHNjYW4vYXNzb2NpYXRpb24gcmVzcG9uc2VzLiBUaGVyZWZvcmUsIHRoaXMgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjI3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWNhYzFlZDIyYTlhNDI0ODlkNTkzZGY5MWU4MzRjNjM0ZjhjZTNmY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDE2IDAyOjI3OjE5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG5pbmRleCA5N2MwZWMzYjgyMmU3MC4uMzNlZjhhZjBhNWUxM2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jXG5AQCAtMTA0LDEyICYjNDM7MTA0LDIxIEBAIGhhc192ZW5kb3JfaGRyKHN0cnVjdCBpZWVlX3R5cGVzX3ZlbmRvcl9zcGVjaWZpYyAqaWUsIHU4IGtleSlcbiAgKiBhIGdpdmVuIG91aSBpbiBQVEsuXG4gICovXG4gc3RhdGljIHU4XG4tbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKHN0cnVjdCBpZV9ib2R5ICppZWJvZHksIHU4ICpvdWkpXG4mIzQzO213aWZpZXhfc2VhcmNoX291aV9pbl9pZShzdHJ1Y3QgaWVfYm9keSAqaWVib2R5LCB1OCAqb3VpLCBpbnQgaWVfbGVuKVxuIHtcbiYjNDM7XHRjb25zdCBzaXplX3QgcHRrX2JvZHlfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IGllX2JvZHksIHB0a19ib2R5KTtcbiBcdHU4IGNvdW50O1xuIFxuJiM0MztcdC8qIE5lZWQgZ3JwX2tleV9vdWlbNF0gJiM0MzsgcHRrX2NudFsyXSBiZWZvcmUgcmVhZGluZyB0aGUgT1VJIGNvdW50LiAqL1xuJiM0MztcdGlmIChpZV9sZW4gXHUwMDNjIChpbnQpcHRrX2JvZHlfb2Zmc2V0KVxuJiM0MztcdFx0cmV0dXJuIE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xuJiM0MztcbiBcdGNvdW50ID0gaWVib2R5LVx1MDAzZXB0a19jbnRbMF07XG4gXG4mIzQzO1x0LyogUmVqZWN0IGFuIE9VSSBjb3VudCB3aG9zZSBsaXN0IHdvdWxkIHJ1biBwYXN0IHRoZSBlbGVtZW50LiAqL1xuJiM0MztcdGlmIChwdGtfYm9keV9vZmZzZXQgJiM0MzsgY291bnQgKiBzaXplb2YoaWVib2R5LVx1MDAzZXB0a19ib2R5KSBcdTAwM2UgKHNpemVfdClpZV9sZW4pXG4mIzQzO1x0XHRyZXR1cm4gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XG4mIzQzO1xuIFx0LyogVGhlcmUgY291bGQgYmUgbXVsdGlwbGUgT1VJcyBmb3IgUFRLIGhlbmNlXG4gXHQgICAxKSBUYWtlIHRoZSBsZW5ndGguXG4gXHQgICAyKSBDaGVjayBhbGwgdGhlIE9VSXMgZm9yIEFFUy5cbkBAIC0xNDMsMTEgJiM0MzsxNTIsMTQgQEAgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnQoc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsIHUzMiBjaXBoZXIpXG4gXHR1OCByZXQgPSBNV0lGSUVYX09VSV9OT1RfUFJFU0VOVDtcbiBcbiBcdGlmIChoYXNfaWVlZV9oZHIoYnNzX2Rlc2MtXHUwMDNlYmNuX3Jzbl9pZSwgV0xBTl9FSURfUlNOKSkge1xuJiM0MztcdFx0aW50IGllX2xlbiA9IChpbnQpYnNzX2Rlc2MtXHUwMDNlYmNuX3Jzbl9pZS1cdTAwM2VpZWVlX2hkci5sZW4gLVxuJiM0MztcdFx0XHQgICAgIFJTTl9HVEtfT1VJX09GRlNFVDtcbiYjNDM7XG4gXHRcdGllYm9keSA9IChzdHJ1Y3QgaWVfYm9keSAqKVxuIFx0XHRcdCAoKCh1OCAqKSBic3NfZGVzYy1cdTAwM2ViY25fcnNuX2llLVx1MDAzZWRhdGEpICYjNDM7XG4gXHRcdFx0ICBSU05fR1RLX09VSV9PRkZTRVQpO1xuIFx0XHRvdWkgPSBcdTAwMjZtd2lmaWV4X3Jzbl9vdWlbY2lwaGVyXVswXTtcbi1cdFx0cmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpKTtcbiYjNDM7XHRcdHJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSwgaWVfbGVuKTtcbiBcdFx0aWYgKHJldClcbiBcdFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuQEAgLTE2OSwxMCAmIzQzOzE4MSwxNCBAQCBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudChzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYywgdTMyIGNpcGhlcilcbiBcdHU4IHJldCA9IE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xuIFxuIFx0aWYgKGhhc192ZW5kb3JfaGRyKGJzc19kZXNjLVx1MDAzZWJjbl93cGFfaWUsIFdMQU5fRUlEX1ZFTkRPUl9TUEVDSUZJQykpIHtcbiYjNDM7XHRcdGludCBpZV9sZW4gPSAoaW50KWJzc19kZXNjLVx1MDAzZWJjbl93cGFfaWUtXHUwMDNldmVuZF9oZHIubGVuIC1cbiYjNDM7XHRcdFx0ICAgICAoaW50KXNpemVvZihic3NfZGVzYy1cdTAwM2ViY25fd3BhX2llLVx1MDAzZXZlbmRfaGRyLm91aSkgLVxuJiM0MztcdFx0XHQgICAgIFdQQV9HVEtfT1VJX09GRlNFVDtcbiYjNDM7XG4gXHRcdGllYm9keSA9IChzdHJ1Y3QgaWVfYm9keSAqKSgodTggKilic3NfZGVzYy1cdTAwM2ViY25fd3BhX2llLVx1MDAzZWRhdGEgJiM0MztcbiBcdFx0XHRcdFx0ICAgIFdQQV9HVEtfT1VJX09GRlNFVCk7XG4gXHRcdG91aSA9IFx1MDAyNm13aWZpZXhfd3BhX291aVtjaXBoZXJdWzBdO1xuLVx0XHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWkpO1xuJiM0MztcdFx0cmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpLCBpZV9sZW4pO1xuIFx0XHRpZiAocmV0KVxuIFx0XHRcdHJldHVybiByZXQ7XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfc2VhcmNoX291aV9pbl9pZSYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZSYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwYXJzaW5nIFJTTi9XUEEgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgc2NhbiByZXN1bHRzIG9yIGFzc29jaWF0aW9uIHJlc3BvbnNlcyBjb250YWluaW5nIHRoZXNlIElFcy4gU2luY2UgYG13aWZpZXhgIGhhcyBhIFVTQiBkcml2ZXIgKGBtd2lmaWV4X3VzYmApLCBpdCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIHN1YnN5c3RlbSAoZS5nLiwgdXNpbmcgZHVtbXlfaGNkL3Jhdy1nYWRnZXQpIGJ5IGVtdWxhdGluZyBhIE1hcnZlbGwgV2ktRmkgVVNCIGRldmljZSBhbmQgc2VuZGluZyBtYWxpY2lvdXMgc2Nhbi9hc3NvY2lhdGlvbiByZXNwb25zZXMuIFRoZXJlZm9yZSwgdGhpcyBmdW5jdGlvbmFsIGNoYW5nZSBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFjYWMxZWQyMmE5YTQyNDg5ZDU5M2RmOTFlODM0YzYzNGY4Y2UzZmMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAxNiAwMjoyNzoxOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jCmluZGV4IDk3YzBlYzNiODIyZTcwLi4zM2VmOGFmMGE1ZTEzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jCkBAIC0xMDQsMTIgJiM0MzsxMDQsMjEgQEAgaGFzX3ZlbmRvcl9oZHIoc3RydWN0IGllZWVfdHlwZXNfdmVuZG9yX3NwZWNpZmljICppZSwgdTgga2V5KQogICogYSBnaXZlbiBvdWkgaW4gUFRLLgogICovCiBzdGF0aWMgdTgKLW13aWZpZXhfc2VhcmNoX291aV9pbl9pZShzdHJ1Y3QgaWVfYm9keSAqaWVib2R5LCB1OCAqb3VpKQomIzQzO213aWZpZXhfc2VhcmNoX291aV9pbl9pZShzdHJ1Y3QgaWVfYm9keSAqaWVib2R5LCB1OCAqb3VpLCBpbnQgaWVfbGVuKQogewomIzQzOwljb25zdCBzaXplX3QgcHRrX2JvZHlfb2Zmc2V0ID0gb2Zmc2V0b2Yoc3RydWN0IGllX2JvZHksIHB0a19ib2R5KTsKIAl1OCBjb3VudDsKIAomIzQzOwkvKiBOZWVkIGdycF9rZXlfb3VpWzRdICYjNDM7IHB0a19jbnRbMl0gYmVmb3JlIHJlYWRpbmcgdGhlIE9VSSBjb3VudC4gKi8KJiM0MzsJaWYgKGllX2xlbiAmbHQ7IChpbnQpcHRrX2JvZHlfb2Zmc2V0KQomIzQzOwkJcmV0dXJuIE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UOwomIzQzOwogCWNvdW50ID0gaWVib2R5LSZndDtwdGtfY250WzBdOwogCiYjNDM7CS8qIFJlamVjdCBhbiBPVUkgY291bnQgd2hvc2UgbGlzdCB3b3VsZCBydW4gcGFzdCB0aGUgZWxlbWVudC4gKi8KJiM0MzsJaWYgKHB0a19ib2R5X29mZnNldCAmIzQzOyBjb3VudCAqIHNpemVvZihpZWJvZHktJmd0O3B0a19ib2R5KSAmZ3Q7IChzaXplX3QpaWVfbGVuKQomIzQzOwkJcmV0dXJuIE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UOwomIzQzOwogCS8qIFRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIE9VSXMgZm9yIFBUSyBoZW5jZQogCSAgIDEpIFRha2UgdGhlIGxlbmd0aC4KIAkgICAyKSBDaGVjayBhbGwgdGhlIE9VSXMgZm9yIEFFUy4KQEAgLTE0MywxMSAmIzQzOzE1MiwxNCBAQCBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudChzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYywgdTMyIGNpcGhlcikKIAl1OCByZXQgPSBNV0lGSUVYX09VSV9OT1RfUFJFU0VOVDsKIAogCWlmIChoYXNfaWVlZV9oZHIoYnNzX2Rlc2MtJmd0O2Jjbl9yc25faWUsIFdMQU5fRUlEX1JTTikpIHsKJiM0MzsJCWludCBpZV9sZW4gPSAoaW50KWJzc19kZXNjLSZndDtiY25fcnNuX2llLSZndDtpZWVlX2hkci5sZW4gLQomIzQzOwkJCSAgICAgUlNOX0dUS19PVUlfT0ZGU0VUOwomIzQzOwogCQlpZWJvZHkgPSAoc3RydWN0IGllX2JvZHkgKikKIAkJCSAoKCh1OCAqKSBic3NfZGVzYy0mZ3Q7YmNuX3Jzbl9pZS0mZ3Q7ZGF0YSkgJiM0MzsKIAkJCSAgUlNOX0dUS19PVUlfT0ZGU0VUKTsKIAkJb3VpID0gJmFtcDttd2lmaWV4X3Jzbl9vdWlbY2lwaGVyXVswXTsKLQkJcmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpKTsKJiM0MzsJCXJldCA9IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShpZWJvZHksIG91aSwgaWVfbGVuKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAJfQpAQCAtMTY5LDEwICYjNDM7MTgxLDE0IEBAIG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50KHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgY2lwaGVyKQogCXU4IHJldCA9IE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UOwogCiAJaWYgKGhhc192ZW5kb3JfaGRyKGJzc19kZXNjLSZndDtiY25fd3BhX2llLCBXTEFOX0VJRF9WRU5ET1JfU1BFQ0lGSUMpKSB7CiYjNDM7CQlpbnQgaWVfbGVuID0gKGludClic3NfZGVzYy0mZ3Q7YmNuX3dwYV9pZS0mZ3Q7dmVuZF9oZHIubGVuIC0KJiM0MzsJCQkgICAgIChpbnQpc2l6ZW9mKGJzc19kZXNjLSZndDtiY25fd3BhX2llLSZndDt2ZW5kX2hkci5vdWkpIC0KJiM0MzsJCQkgICAgIFdQQV9HVEtfT1VJX09GRlNFVDsKJiM0MzsKIAkJaWVib2R5ID0gKHN0cnVjdCBpZV9ib2R5ICopKCh1OCAqKWJzc19kZXNjLSZndDtiY25fd3BhX2llLSZndDtkYXRhICYjNDM7CiAJCQkJCSAgICBXUEFfR1RLX09VSV9PRkZTRVQpOwogCQlvdWkgPSAmYW1wO213aWZpZXhfd3BhX291aVtjaXBoZXJdWzBdOwotCQlyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWkpOwomIzQzOwkJcmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpLCBpZV9sZW4pOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NjUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lGaSBEcml2ZXIgU2VjdXJpdHkgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBtd2lmaWV4YCDigJMgc3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY2AuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgYWRkZWQgc29tZSBib3VuZHMgY2hlY2tpbmcgd2l0aGluIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIHRvIHByZXZlbnQgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZHMuIFNtYXJ0IG1vdmUsIHByb3RlY3RpbmcgYWdhaW5zdCBidWZmZXIgb3ZlcmZsb3dzIGlzIGFsd2F5cyBhIGdvb2QgdGhpbmcsIGVzcGVjaWFsbHkgaW4gbmV0d29ya2luZyBjb2RlLiBUaGUgcGF0Y2ggc2VlbXMgc3RyYWlnaHRmb3J3YXJkOiBgaWVfbGVuYCBpcyBiZWluZyBwYXNzZWQgZG93biBmcm9tIGBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudGAgYW5kIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAsIHdoaWNoIGlzIHRoZSBjb3JyZWN0IHdheSB0byBlbnN1cmUgd2UgZG9uJiMzOTt0IHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBJRSAoSW5mb3JtYXRpb24gRWxlbWVudCkuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGlzIHRoaXMgZXZlbiAqcmVhY2hhYmxlKj8gSXMgdGhpcyBhIHBhcnQgb2YgdGhlIGNvZGUgdGhhdCYjMzk7cyBldmVuIHdvcnRoIHdvcnJ5aW5nIGFib3V0PyBUaGUgZHJpdmVyIGlzIGBtd2lmaWV4YCwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgYSBNYXJ2ZWxsIHdpcmVsZXNzIGRyaXZlci4gVHlwaWNhbGx5LCBmdXp6aW5nIHdvdWxkIGJlIHRoZSBtZXRob2QgdG8gdGVzdCB0aGUgc2VjdXJpdHkgb2YgYSBkcml2ZXIuIElzIGl0IGZ1enphYmxlPyBXZSBoYXZlIGBtYWM4MDIxMV9od3NpbWAgZm9yIHNvZnR3YXJlIGVtdWxhdGVkIHdpcmVsZXNzLCBidXQgYG13aWZpZXhgIGlzIGhhcmR3YXJlLXNwZWNpZmljLCB3aGljaCBtZWFucyBmdXp6aW5nIGlzIGdvaW5nIHRvIGJlIGRpZmZpY3VsdC4KCldhaXQsIGhvbGQgb24uLi4gY2FuIHdlIGZ1enogYG13aWZpZXhgIGF0IGFsbD8gSGFyZHdhcmUgZHJpdmVycyBhcmVuJiMzOTt0IHVzdWFsbHkgZWFzeSB0byBmdXp6IGRpcmVjdGx5LiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHlvdSBuZWVkIGFuIGludGVyZmFjZSB0byBpbnRlcmFjdCB3aXRoLCBsaWtlIFVTQiBvciBTRElPLCB0aGF0IHlvdSBjYW4gZW11bGF0ZSBvciBjb250cm9sLiBTbywgdGhlIGtleSBpcyB3aGV0aGVyIGBtd2lmaWV4YCBzdXBwb3J0cyBlaXRoZXIgb2YgdGhvc2UuIE5lZWQgdG8gY2hlY2sgaWYgaXQgaGFzIGEgVVNCIGludGVyZmFjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3VzYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9Mzc9Y29uZmlnIE1XSUZJRVhfVVNCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctNDUtXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzo0NjpcdCAgbXdpZmlleF91c2IuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlPTQyPW9iai0kKENPTkZJR19NV0lGSUVYX1BDSUUpICYjNDM7PSBtd2lmaWV4X3BjaWUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlOjQ0Om13aWZpZXhfdXNiLXkgJiM0Mzs9IHVzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX01XSUZJRVhfVVNCKSAmIzQzOz0gbXdpZmlleF91c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlLTQ2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oPTkwPWVudW0gS0VZX1RZUEVfSUQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oLTEyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oOjEyMzplbnVtIG13aWZpZXhfdXNiX2VwIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oLTEyNC1cdE1XSUZJRVhfVVNCX0VQX0NNRF9FVkVOVCA9IDEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD01NT1lbnVtIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyMy0gKiBEbyBub3QgY2hlY2sgZm9yIGRhdGFfcmVjZWl2ZWQgZm9yIFVTQiwgYXMgZGF0YV9yZWNlaXZlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMjQ6ICogaXMgaGFuZGxlZCBpbiBtd2lmaWV4X3VzYl9yZWN2IGZvciBVU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTI1LSAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xMz1zdGF0aWMgY29uc3Qgc3RydWN0IG13aWZpZXhfaWZfb3BzIHVzYl9vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU6c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG13aWZpZXhfdXNiX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTYtXHQvKiA4NzY2ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjM5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBtd2lmaWV4X3VzYl90YWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NDE6c3RhdGljIGludCBtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKHN0cnVjdCB1cmJfY29udGV4dCAqY3R4LCBpbnQgc2l6ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ1LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjQ2OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVjdihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ3LVx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBlcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1MjpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9yeF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE4NzpcdFx0c3RhdHVzID0gbXdpZmlleF91c2JfcmVjdihhZGFwdGVyLCBza2IsIGNvbnRleHQtXHUwMDNlZXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE4OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTk2LVx0XHRcdCAqIHVyYiBmb3IgY21kX2VwIHdpbGwgYmUgcmUtc3VibWl0dGVkIGluIGNhbGxiYWNrXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTk3Olx0XHRcdCAqIG13aWZpZXhfdXNiX3JlY3ZfY29tcGxldGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xOTgtXHRcdFx0ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzMi1cdGlmIChjYXJkLVx1MDAzZXJ4X2NtZF9lcCA9PSBjb250ZXh0LVx1MDAzZWVwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MjMzOlx0XHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKGNvbnRleHQsIHNpemUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzNC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjM1LVx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2YWRhcHRlci1cdTAwM2VyeF9wZW5kaW5nKSBcdTAwM2M9IEhJR0hfUlhfUEVORElORykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjIzNjpcdFx0XHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKGNvbnRleHQsIHNpemUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzNy1cdFx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjI0NTpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl90eF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjQ2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjI4NTpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoc3RydWN0IHVyYl9jb250ZXh0ICpjdHgsIGludCBzaXplKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTI4Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMxNS1cdFx0XHRcdCB1c2JfcmN2aW50cGlwZShjYXJkLVx1MDAzZXVkZXYsIGN0eC1cdTAwM2VlcCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MzE2Olx0XHRcdFx0IGN0eC1cdTAwM2Vza2ItXHUwMDNlZGF0YSwgc2l6ZSwgbXdpZmlleF91c2JfcnhfY29tcGxldGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzE3LVx0XHRcdFx0ICh2b2lkICopY3R4LCBjYXJkLVx1MDAzZXJ4X2NtZF9pbnRlcnZhbCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMyMC1cdFx0XHRcdCAgdXNiX3JjdmJ1bGtwaXBlKGNhcmQtXHUwMDNldWRldiwgY3R4LVx1MDAzZWVwKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzozMjE6XHRcdFx0XHQgIGN0eC1cdTAwM2Vza2ItXHUwMDNlZGF0YSwgc2l6ZSwgbXdpZmlleF91c2JfcnhfY29tcGxldGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzIyLVx0XHRcdFx0ICAodm9pZCAqKWN0eCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzozNDU6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfZnJlZShzdHJ1Y3QgdXNiX2NhcmRfcmVjICpjYXJkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM4NC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzozODU6c3RhdGljIGludCBtd2lmaWV4X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zODYtXHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTUzMi0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo1MzM6c3RhdGljIGludCBtd2lmaWV4X3VzYl9zdXNwZW5kKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBwbV9tZXNzYWdlX3QgbWVzc2FnZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01MzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01OTktICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjAwOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYwMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYyNS1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTVdJRklFWF9SWF9EQVRBX1VSQjsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjI2Olx0XHRcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoXHUwMDI2Y2FyZC1cdTAwM2VyeF9kYXRhX2xpc3RbaV0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjI3LVx0XHRcdFx0XHRcdCAgTVdJRklFWF9SWF9EQVRBX0JVRl9TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjMxLVx0XHRpZiAoY2FyZC1cdTAwM2VyeF9jbWQuc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjYzMjpcdFx0XHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFx1MDAyNmNhcmQtXHUwMDNlcnhfY21kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYzMy1cdFx0XHRcdFx0XHQgIE1XSUZJRVhfUlhfQ01EX0JVRl9TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY0NTpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2Njk6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfY29yZWR1bXAoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY3MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2Nzg6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG13aWZpZXhfdXNiX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2Nzk6XHQubmFtZSA9IFwmIzM0O213aWZpZXhfdXNiXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4MDpcdC5wcm9iZSA9IG13aWZpZXhfdXNiX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4MTpcdC5kaXNjb25uZWN0ID0gbXdpZmlleF91c2JfZGlzY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODI6XHQuaWRfdGFibGUgPSBtd2lmaWV4X3VzYl90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODM6XHQuc3VzcGVuZCA9IG13aWZpZXhfdXNiX3N1c3BlbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Njg0Olx0LnJlc3VtZSA9IG13aWZpZXhfdXNiX3Jlc3VtZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02ODUtXHQuc29mdF91bmJpbmQgPSAxLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY4Ni1cdC5kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Njg3Olx0XHQuY29yZWR1bXAgPSBtd2lmaWV4X3VzYl9jb3JlZHVtcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02ODgtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz03MTQ9c3RhdGljIGludCBtd2lmaWV4X3JlYWRfZGF0YV9zeW5jKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsIHU4ICpwYnVmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy03MzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NzM0OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX3BvcnRfcmVzeW5jKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzM1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjc3NjpzdGF0aWMgYm9vbCBtd2lmaWV4X3VzYl9pc19wb3J0X3JlYWR5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzc3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjc4OTpzdGF0aWMgaW5saW5lIHU4IG13aWZpZXhfdXNiX2RhdGFfc2VudChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTc5MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgwMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo4MDE6c3RhdGljIGludCBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MDItXHRcdFx0XHRcdCAgc3RydWN0IHVzYl90eF9kYXRhX3BvcnQgKnBvcnQsIHU4IGVwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MTgtXHRcdFx0XHQgdXNiX3NuZGludHBpcGUoY2FyZC1cdTAwM2V1ZGV2LCBlcCksIHNrYl9zZW5kLVx1MDAzZWRhdGEsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODE5Olx0XHRcdFx0IHNrYl9zZW5kLVx1MDAzZWxlbiwgbXdpZmlleF91c2JfdHhfY29tcGxldGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODIwLVx0XHRcdFx0ICh2b2lkICopY29udGV4dCwgY2FyZC1cdTAwM2V0eF9jbWRfaW50ZXJ2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MjQtXHRcdFx0XHQgIHNrYl9zZW5kLVx1MDAzZWRhdGEsIHNrYl9zZW5kLVx1MDAzZWxlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo4MjU6XHRcdFx0XHQgIG13aWZpZXhfdXNiX3R4X2NvbXBsZXRlLCAodm9pZCAqKWNvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgyNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODM3LVx0XHRwb3J0LVx1MDAzZWJsb2NrX3N0YXR1cyA9IHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODM4Olx0XHRhZGFwdGVyLVx1MDAzZWRhdGFfc2VudCA9IG13aWZpZXhfdXNiX2RhdGFfc2VudChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MzktXHRcdHJldCA9IC1FTk9TUjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODYxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjg2MjpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3ByZXBhcmVfdHhfYWdncl9za2Ioc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04NjMtXHRcdFx0XHRcdCAgIHN0cnVjdCB1c2JfdHhfZGF0YV9wb3J0ICpwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy05NDYtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6OTQ3OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfYWdncl90eF9kYXRhKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IGVwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTk0OC1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDYyLVx0aWYgKGZfc2VuZF9hZ2dyX2J1Zikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEwNjM6XHRcdHJldCA9IG13aWZpZXhfdXNiX3ByZXBhcmVfdHhfYWdncl9za2IoYWRhcHRlciwgcG9ydCwgXHUwMDI2c2tiX3NlbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwNjQtXHRcdGlmICghcmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA2NS1cdFx0XHRjb250ZXh0ID0gXHUwMDI2cG9ydC1cdTAwM2V0eF9kYXRhX2xpc3RbcG9ydC1cdTAwM2V0eF9kYXRhX2l4JiM0MzsmIzQzO107XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTA2NjpcdFx0XHRyZXQgPSBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoYWRhcHRlciwgcG9ydCwgZXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA2Ny1cdFx0XHRcdFx0XHRcdCAgICAgY29udGV4dCwgc2tiX3NlbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDc5LVx0XHRcdFx0YWRhcHRlci1cdTAwM2VkYXRhX3NlbnQgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEwODA6XHRcdFx0XHRcdG13aWZpZXhfdXNiX2RhdGFfc2VudChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDgxLVx0XHRcdFx0Lyogbm8gYXZhaWxhYmxlIHVyYiwgcG9zdGNvcHkgcGFja2V0Ki9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA5NS1cdFx0Y29udGV4dCA9IFx1MDAyNnBvcnQtXHUwMDNldHhfZGF0YV9saXN0W3BvcnQtXHUwMDNldHhfZGF0YV9peCYjNDM7JiM0MztdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEwOTY6XHRcdHJldHVybiBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoYWRhcHRlciwgcG9ydCwgZXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA5Ny1cdFx0XHRcdFx0XHQgICAgICBjb250ZXh0LCBza2Jfc2VuZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTExOTpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl90eF9hZ2dyX3RtbyhzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTIwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTEyOS1cdHNwaW5fbG9ja19iaChcdTAwMjZwb3J0LVx1MDAzZXR4X2FnZ3JfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTEzMDpcdGVyciA9IG13aWZpZXhfdXNiX3ByZXBhcmVfdHhfYWdncl9za2IoYWRhcHRlciwgcG9ydCwgXHUwMDI2c2tiX3NlbmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExMzEtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNDAtXHRcdGFkYXB0ZXItXHUwMDNlZGF0YV9zZW50ID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTQxOlx0XHRcdG13aWZpZXhfdXNiX2RhdGFfc2VudChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTQyLVx0XHRlcnIgPSAtMTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE0OS1cdHVyYl9jbnh0ID0gXHUwMDI2cG9ydC1cdTAwM2V0eF9kYXRhX2xpc3RbcG9ydC1cdTAwM2V0eF9kYXRhX2l4JiM0MzsmIzQzO107XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE1MDpcdGVyciA9IG13aWZpZXhfdXNiX2NvbnN0cnVjdF9zZW5kX3VyYihhZGFwdGVyLCBwb3J0LCBwb3J0LVx1MDAzZXR4X2RhdGFfZXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE1MS1cdFx0XHRcdFx0ICAgICB1cmJfY254dCwgc2tiX3NlbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTU5LS8qIFRoaXMgZnVuY3Rpb24gd3JpdGUgYSBjb21tYW5kL2RhdGEgcGFja2V0IHRvIGNhcmQuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE2MDpzdGF0aWMgaW50IG13aWZpZXhfdXNiX2hvc3RfdG9fY2FyZChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLCB1OCBlcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTYxLVx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExOTItXHRcdFx0XHRcdGFkYXB0ZXItXHUwMDNlZGF0YV9zZW50ID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTkzOlx0XHRcdFx0XHRcdG13aWZpZXhfdXNiX2RhdGFfc2VudChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTk0LVx0XHRcdFx0XHRyZXR1cm4gLUVCVVNZO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjA4LVx0XHRcdHNwaW5fbG9ja19iaChcdTAwMjZwb3J0LVx1MDAzZXR4X2FnZ3JfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTIwOTpcdFx0XHRyZXQgPSAgbXdpZmlleF91c2JfYWdncl90eF9kYXRhKGFkYXB0ZXIsIGVwLCBza2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIxMC1cdFx0XHRcdFx0XHRcdHR4X3BhcmFtLCBwb3J0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjE4Olx0cmV0dXJuIG13aWZpZXhfdXNiX2NvbnN0cnVjdF9zZW5kX3VyYihhZGFwdGVyLCBwb3J0LCBlcCwgY29udGV4dCwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjE5LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyMjE6c3RhdGljIGludCBtd2lmaWV4X3VzYl90eF9pbml0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIyMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyNTctXHRcdHRpbWVyX3NldHVwKFx1MDAyNnBvcnQtXHUwMDNldHhfYWdnci50aW1lcl9jbnh0LmhvbGRfdGltZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTI1ODpcdFx0XHQgICAgbXdpZmlleF91c2JfdHhfYWdncl90bW8sIDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyNTktXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTI2NDpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3J4X2luaXQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjY1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjgwOlx0aWYgKG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoXHUwMDI2Y2FyZC1cdTAwM2VyeF9jbWQsIE1XSUZJRVhfUlhfQ01EX0JVRl9TSVpFKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjgxLVx0XHRyZXR1cm4gLTE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyODktXHRcdFx0cmV0dXJuIC0xO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyOTA6XHRcdGlmIChtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFx1MDAyNmNhcmQtXHUwMDNlcnhfZGF0YV9saXN0W2ldLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyOTEtXHRcdFx0XHRcdCAgICAgIE1XSUZJRVhfUlhfREFUQV9CVUZfU0laRSkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTEyOTk9c3RhdGljIGludCBtd2lmaWV4X3JlZ2lzdGVyX2RldihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEzMzg6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfY2xlYW51cF90eF9hZ2dyKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTMzOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTEzNTk9c3RhdGljIHZvaWQgbXdpZmlleF91bnJlZ2lzdGVyX2RldihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEzNjM6XHRtd2lmaWV4X3VzYl9mcmVlKGNhcmQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEzNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTM2NTpcdG13aWZpZXhfdXNiX2NsZWFudXBfdHhfYWdncihhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzY2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xMzcwPXN0YXRpYyBpbnQgbXdpZmlleF9wcm9nX2Z3X3dfaGVscGVyKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTUwNzpzdGF0aWMgaW50IG13aWZpZXhfdXNiX2RubGRfZncoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTA4LVx0XHRcdHN0cnVjdCBtd2lmaWV4X2Z3X2ltYWdlICpmdylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTIzOlx0cmV0ID0gbXdpZmlleF91c2JfcnhfaW5pdChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTI0LVx0aWYgKCFyZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTUyNTpcdFx0cmV0ID0gbXdpZmlleF91c2JfdHhfaW5pdChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTI2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTMwPXN0YXRpYyB2b2lkIG13aWZpZXhfc3VibWl0X3J4X3VyYihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLCB1OCBlcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUzNi1cdCAgICAoIWF0b21pY19yZWFkKFx1MDAyNmNhcmQtXHUwMDNlcnhfY21kX3VyYl9wZW5kaW5nKSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTUzNzpcdFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcdTAwMjZjYXJkLVx1MDAzZXJ4X2NtZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTM4LVx0XHRcdFx0XHQgIE1XSUZJRVhfUlhfQ01EX0JVRl9TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTQzOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfY21kX2V2ZW50X2NvbXBsZXRlKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU0NC1cdFx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTUyPXN0YXRpYyBpbnQgbXdpZmlleF9wbV93YWtldXBfY2FyZChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1NjM6c3RhdGljIHZvaWQgbXdpZmlleF91c2Jfc3VibWl0X3JlbV9yeF91cmJzKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU2NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1NzItXHRcdGN0eCA9IFx1MDAyNmNhcmQtXHUwMDNlcnhfZGF0YV9saXN0W2ldO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1NzM6XHRcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoY3R4LCBNV0lGSUVYX1JYX0RBVEFfQlVGX1NJWkUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1NzQtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTE1ODQ9c3RhdGljIGNvbnN0IHN0cnVjdCBtd2lmaWV4X2lmX29wcyB1c2Jfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTkwLVx0LyogVVNCIHNwZWNpZmljICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5MTpcdC5kbmxkX2Z3ID1cdFx0bXdpZmlleF91c2JfZG5sZF9mdyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTkyOlx0LmNtZHJzcF9jb21wbGV0ZSA9XHRtd2lmaWV4X3VzYl9jbWRfZXZlbnRfY29tcGxldGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5MzpcdC5ldmVudF9jb21wbGV0ZSA9XHRtd2lmaWV4X3VzYl9jbWRfZXZlbnRfY29tcGxldGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5NDpcdC5ob3N0X3RvX2NhcmQgPVx0XHRtd2lmaWV4X3VzYl9ob3N0X3RvX2NhcmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5NTpcdC5zdWJtaXRfcmVtX3J4X3VyYnMgPVx0bXdpZmlleF91c2Jfc3VibWl0X3JlbV9yeF91cmJzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTY6XHQubXVsdGlfcG9ydF9yZXN5bmMgPVx0bXdpZmlleF91c2JfcG9ydF9yZXN5bmMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5NzpcdC5pc19wb3J0X3JlYWR5ID1cdG13aWZpZXhfdXNiX2lzX3BvcnRfcmVhZHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU5OC19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1OTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTYwMDptb2R1bGVfdXNiX2RyaXZlcihtd2lmaWV4X3VzYl9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE2MDEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2NzkKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYG13aWZpZXhfdXNiYCBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG13aWZpZXhgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgbXdpZmlleF91c2JgIHBhcnQuIFRoYXQmIzM5O3MgdGhlIFVTQiBpbnRlcmZhY2UsIHJpZ2h0PyBBbmQgSSByZWNhbGwgdGhhdCBVU0IgZGV2aWNlcyBhcmUgcmlwZSBmb3IgZnV6emluZyB1c2luZyBpbnRlcmZhY2VzIGxpa2UgYGR1bW15X2hjZGAgb3IgYHJhdy1nYWRnZXRgLiBCdXQgd2FpdCwgYG13aWZpZXhfdXNiYCBpcyBhIFVTQiAqaG9zdCogZHJpdmVyLiBJdCAqZHJpdmVzKiBhIFVTQiBkZXZpY2UuIEFoYSEgU3l6a2FsbGVyIGhhcyBhIFVTQiBmdXp6ZXIgc3BlY2lmaWNhbGx5IGZvciBlbXVsYXRpbmcgVVNCIGRldmljZXMgdG8gdGFyZ2V0IGhvc3QgZHJpdmVycy4gVGhhdCBtZWFucyBgbXdpZmlleF91c2JgICppcyogZnV6emFibGUsIGdvb2QsIHRoYXQmIzM5O3Mgd2hhdCBJIHdhcyBob3BpbmcuCgpOb3csIGxldCYjMzk7cyBzZWUgaWYgdGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY2AgYXJlIGFjdHVhbGx5IHJlYWNoYWJsZS4gSSByZW1lbWJlciB0aGUgY2hhbmdlcyBmb2N1c2VkIGFyb3VuZCBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYC4gVGhhdCBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgYG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50YCBhbmQgYG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50YC4gQ29uc2lkZXJpbmcgdGhlIG5hbWVzLCB0aG9zZSBhcmUgdmVyeSBsaWtlbHkgY2FsbGVkIGR1cmluZyB0aGUgcHJvY2Vzc2luZyBvZiBzY2FuIHJlc3VsdHMgb3IsIHBlcmhhcHMsIGJlYWNvbnMuIFNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGVyZSBgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRgIGFuZCBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgIGFyZSBpbnZva2VkLiBUaGF0JiMzOTtsbCBiZSB0aGUga2V5IHRvIHRyaWdnZXJpbmcgdGhlIGNvZGUgaW4gcXVlc3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTQ3PXN0YXRpYyB1OFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNDg6bXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnQoc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsIHUzMiBjaXBoZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE0OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0zNDQ9bXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTQwOC1cdFx0XHQgICAgIGJzc19kZXNjLVx1MDAzZWJjbl9odF9jYXApIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzo0MDk6XHRcdFx0ICAgICFtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudChic3NfZGVzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtNDEwLVx0XHRcdFx0XHRcdFx0Q0lQSEVSX1NVSVRFX0NDTVApKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTQxMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6NDEyOlx0XHRcdFx0aWYgKG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTQxMy1cdFx0XHRcdFx0XHQoYnNzX2Rlc2MsIENJUEhFUl9TVUlURV9US0lQKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNjM2CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQsIGFpbWVkIGF0IGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgV1BBIExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUsIGFuZCBJIHNlZSB0aGlzIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAgZnVuY3Rpb24uIEhtbSwgbGV0IG1lIHRoaW5rLi4uIHdoeSBhcmUgd2UgY2hlY2tpbmcgZm9yIHRoZSBXUEEgT1VJPyBXaGF0JiMzOTtzIHRoZSBjb250ZXh0IGhlcmU/IEFyZSB3ZSB2YWxpZGF0aW5nIGEgcmVjZWl2ZWQgZnJhbWUsIHBlcmhhcHM/IE9yIGFyZSB3ZSBpbiB0aGUgcHJvY2VzcyBvZiBnZW5lcmF0aW5nIGFuIGFzc29jaWF0aW9uIHJlcXVlc3Qgb3IgcmVzcG9uc2U/IEtub3dpbmcgdGhhdCB3aWxsIGdyZWF0bHkgaW5mb3JtIG15IGludGVycHJldGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24mIzM5O3MgcHVycG9zZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRhdGEgc3RydWN0dXJlcyBiZWluZyBwYXNzZWQgdG8gaXQuIElzIGl0IG9wZXJhdGluZyBvbiBhIHJhdyBmcmFtZSBidWZmZXIsIGEgcGFyc2VkIElFIChJbmZvcm1hdGlvbiBFbGVtZW50KSBsaXN0LCBvciBzb21lIG90aGVyIHJlcHJlc2VudGF0aW9uPyBBcmUgd2UgY29uY2VybmVkIHdpdGggYSBzcGVjaWZpYyBXUEEgdmVyc2lvbiwgbGlrZSBXUEExIG9yIFdQQTI/IFRoZSBkaWZmZXJlbmNlcyBpbiBob3cgdGhlIE9VSSBpcyBmb3JtYXR0ZWQgbWlnaHQgY2hhbmdlIG15IHVuZGVyc3RhbmRpbmcuIFRoaXMgaXMgbGlrZWx5IHZlcnkgcmVsZXZhbnQgdG8gc2VjdXJpdHkgY29uc2lkZXJhdGlvbnMgYW5kIGxpa2VseSBXUEEgbWlncmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfaXNfd3BhX291aV9wcmVzZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE3Nj1zdGF0aWMgdThcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTc3Om13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50KHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgY2lwaGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MzQ0PW13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0zODktXHRcdFx0ICAgICBic3NfZGVzYy1cdTAwM2ViY25faHRfY2FwKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MzkwOlx0XHRcdCAgICAhbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnQoYnNzX2Rlc2MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTM5MS1cdFx0XHRcdFx0XHRcdCBDSVBIRVJfU1VJVEVfQ0NNUCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMzkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzozOTM6XHRcdFx0XHRpZiAobXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMzk0LVx0XHRcdFx0XHRcdChic3NfZGVzYywgQ0lQSEVSX1NVSVRFX1RLSVApKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIyNzMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZywgYW5kIHRhaWxvcmVkIGZvciBhIGZlbGxvdyBleHBlcnQ6CgoqKlRyYWNpbmcgdGhlIERlcGVuZGVuY3k6IG13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlKioKClJpZ2h0LCBzbyBJIHNlZSB0d28gZGlzdGluY3QgY2FsbHMgb3JpZ2luYXRpbmcgZnJvbSBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgLiBUaGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWc6IHdoYXQgaXMgdGhlIGNvbnRleHQgaGVyZT8gVW5kZXJzdGFuZGluZyB0aGUgZG93bnN0cmVhbSB1c2FnZSBpcyBjcml0aWNhbC4gQnV0IG1vcmUgaW1wb3J0YW50bHksIEkgbmVlZCB0byBrbm93IHRoZSBvcmlnaW4uIFdoZXJlIGlzIHRoYXQgZnVuY3Rpb24gZXZlbiAqY2FsbGVkKiBmcm9tPyBLbm93aW5nIGl0cyBjYWxsZXJzIHdpbGwgZ2l2ZSBtZSB0aGUgZGlyZWN0aW9uIEkgbmVlZC4gVGhpcyBpcyBhIGNvbW1vbiBkZWJ1Z2dpbmcgdGVjaG5pcXVlIHRvIHVuZGVyc3RhbmQgY29udHJvbCBhbmQgaW5mb3JtYXRpb24gZmxvdy4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB0cmFjaW5nIGJhY2ssIGxvb2tpbmcgZm9yIHRoZSBmdW5jdGlvbnMgb3IgbW9kdWxlcyB0aGF0IGRlcGVuZCBvbiBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgLCBwcm9iYWJseSB1c2luZyBhIGNyb3NzLXJlZmVyZW5jaW5nIHRvb2wuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBhcmNoaXRlY3R1cmUgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MzQzPXN0YXRpYyBzMzJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MzQ0Om13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTM0NS1cdFx0XHQgICAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYywgdTMyIG1vZGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNjE2PWludCBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTYyOC1cdFx0Y2FzZSBOTDgwMjExX0lGVFlQRV9BREhPQzpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTYyOTpcdFx0XHRyZXQgPSBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZShwcml2LCBic3NfZGVzYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTYzMC1cdFx0XHRcdFx0XHRcdCAgICBwcml2LVx1MDAzZWJzc19tb2RlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4MDEKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRpdmluZyBEZWVwZXIgaW50byBOZXR3b3JrIENvbXBhdGliaWxpdHkqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHRoZSBjb3JlIG9mIHdpcmVsZXNzIG5ldHdvcmtpbmcgaGVyZS4gV2UmIzM5O3ZlIGdvdCB0aGlzIGFyY2hpdGVjdHVyZSwgYW5kIHdlJiMzOTtyZSBhZGRyZXNzaW5nIHRoZSBwb3RlbnRpYWwgZm9yIGhpY2N1cHMuIFdoYXQmIzM5O3MgdGhlIHNwZWNpZmljIGxvZ2ljIGZsb3cgYXJvdW5kIHRoZSBmdW5jdGlvbiBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgb3ZlcmFsbCBwcm9jZXNzLiBJcyBpdCBjaGVja2luZyBmb3IgcHJvdG9jb2wgdmVyc2lvbnMsIHNlY3VyaXR5IHByb3RvY29scywgc3VwcG9ydGVkIGZyZXF1ZW5jaWVzLCBvciBhbGwgb2YgdGhlIGFib3ZlPyBBbmQgd2hhdCBhcmUgdGhlIHNwZWNpZmljIGNyaXRlcmlhIGl0JiMzOTtzIGNvbXBhcmluZyBhZ2FpbnN0PyBJcyBpdCBqdXN0IHZlcmlmeWluZyB0aGUgYmVhY29uIGluZm9ybWF0aW9uPyBEb2VzIGl0IGRlbHZlIGludG8gcHJvYmluZyByZXNwb25zZXMsIHRvbz8gSSYjMzk7bSB3b25kZXJpbmcgaWYgdGhpcyBmdW5jdGlvbiBoYW5kbGVzIHNvbWUgb2YgdGhlIG1vcmUgY29tcGxleCBlZGdlIGNhc2VzIHRoYXQgSSYjMzk7dmUgYmVlbiB3cmVzdGxpbmcgd2l0aCByZWNlbnRseS4gSG93IGNvbXByZWhlbnNpdmUgaXMgdGhlIGNoZWNrPyBEb2VzIGl0IGZsYWcgZGV2aWF0aW9ucyBvciBpcyBpdCBtb3JlIG9mIGEgZ28vbm8tZ28/IE1vcmUgdG8gdGhlIHBvaW50LCBob3cgZG9lcyB0aGUgZnVuY3Rpb24mIzM5O3Mgb3V0cHV0IGFjdHVhbGx5IGFmZmVjdCB0aGUgYXNzb2NpYXRpb24gcHJvY2Vzcz8gRG9lcyBpdCBqdXN0IGxvZyBhbiBlcnJvciwgb3IgZG9lcyBpdCBhY3RpdmVseSBwcmV2ZW50IGEgY29ubmVjdGlvbj8gSSBuZWVkIHRvIGNsYXJpZnkgdGhhdC4gSSYjMzk7bSBrZWVuIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgaW4gdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGUgZHJpdmVyIGFuZCB3aGV0aGVyIGl0IGlzIGJlaW5nIHVzZWQgaW4gdGhlIGJlc3Qgd2F5IGZvciB0aGUgY3VycmVudCBnZW5lcmF0aW9uIG9mIGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNTQxPWludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1NDItXHRcdFx0XHQgICAgc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2VudHJ5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTU0MzppbnQgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU0NC1cdFx0XHRcdFx0c3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTU5MT1pbnQgbXdpZmlleF9jbWRfODAyXzExX3NjYW4oc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKmNtZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2MTUtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE2MTY6aW50IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2MTctXHRcdFx0XHRcdHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTcwMz1zdGF0aWMgaW50IG13aWZpZXhfdXBkYXRlX2N1cnJfYnNzX3BhcmFtcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTcxNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTcxODpcdHJldCA9IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHByaXYsIGJzc19kZXNjKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTcxOS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTMxOD1pbnQgbXdpZmlleF9ic3Nfc3RhcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgc3RydWN0IGNmZzgwMjExX2JzcyAqYnNzLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0zNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MzYxOlx0XHRyZXQgPSBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eShwcml2LCBic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMzYyLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00MDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6NDA5Olx0XHRyZXQgPSBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eShwcml2LCBic3NfZGVzYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDEwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzg1NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyBhbmQgRnV6emluZyBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGlzIGZ1bmN0aW9uIGlzIHRyaWdnZXJlZCB3aGVuIHdlJiMzOTtyZSBlaXRoZXIgam9pbmluZyBhIEJTUyBvciB1cGRhdGluZyBjdXJyZW50IEJTUyBwYXJhbWV0ZXJzLiBOb3csIGhvdyBjYW4gd2UgYWN0dWFsbHkgKmdldCogdGhlcmU/IEFoYSEgSSBzZWUgaXQmIzM5O3MgcmVhY2hhYmxlIGlmIHdlIGNhbiBzb21laG93IGVtdWxhdGUgdGhlIG13aWZpZXggVVNCIGRldmljZSBhbmQgZmVlZCBpdCBlaXRoZXIgc2NhbiByZXN1bHRzIG9yIGJlYWNvbnMuCgpUaGUgbGlnaHRidWxiIGdvZXMgb247IHNwZWNpZmljYWxseSwgYG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50YCBhbmQgYG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50YCBwYXJzZSBgYnNzX2Rlc2MtJmd0O2Jjbl9yc25faWVgIGFuZCBgYnNzX2Rlc2MtJmd0O2Jjbl93cGFfaWVgLiBUaG9zZSwgaW4gdHVybiwgYXJlIGZpbGxlZCB3aXRoIGRhdGEgZnJvbSBzY2FuIHJlc3VsdHMgb3IgYmVhY29ucyBjb21pbmcgKmZyb20qIHRoZSBkZXZpY2UgaXRzZWxmLgoKU2luY2Ugc3l6a2FsbGVyIGNhbiBhbHJlYWR5IGZ1enogVVNCIGRldmljZXMsIHdlIGNhbiBsZXZlcmFnZSB0aGF0IHRvIHByb3ZpZGUgY29tcGxldGVseSBhcmJpdHJhcnkgZGF0YSB0aHJvdWdoIHRoZSBVU0IgZW5kcG9pbnRzLiBUaGUgZHJpdmVyIHdpbGwgaGFwcGlseSBpbnRlcnByZXQgdGhpcyBhcyBsZWdpdGltYXRlIHNjYW4gcmVzdWx0cyBvciBiZWFjb25zLiBUaGlzIG1lYW5zIHRoYXQgd2Ugc2hvdWxkIGRlZmluaXRlbHkgYmUgYWJsZSB0byB0cmlnZ2VyIHRoaXMgZnVuY3Rpb24sIGFuZCB0aGVyZWZvcmUsIGl0JiMzOTtzIGFic29sdXRlbHkgc29tZXRoaW5nIHdlIHNob3VsZCBwcmlvcml0aXplIGZvciBmdXp6aW5nLgoKQmVmb3JlIG1vdmluZyBmb3J3YXJkLCBsZXQgbWUganVzdCBkb3VibGUgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlIGRyaXZlciBpcyBgTVdJRklFWGAgYW5kLCBzcGVjaWZpY2FsbHksIGBNV0lGSUVYX1VTQmAsIHRoYXQmIzM5O3MgY29ycmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1XSUZJRVgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyOmNvbmZpZyBNV0lGSUVYXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MTI6Y29uZmlnIE1XSUZJRVhfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjYtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzozNzpjb25maWcgTVdJRklFWF9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM4LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4MDYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgdGhlIE1XSUZJRVggRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyB0byBnZXQgc3l6a2FsbGVyIHdvcmtpbmcgb24gdGhlIGBNV0lGSUVYYCBkcml2ZXIsIGFuZCBpdCBsb29rcyBsaWtlIEkgbmVlZCB0byBuYXJyb3cgZG93biBteSB0YXJnZXQuIFRoZXJlJiMzOTtzIGEgZmV3IG9wdGlvbnM6IGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYE1XSUZJRVhfU0RJT2AsIGFuZCBgTVdJRklFWF9QQ0lFYC4gQnV0IHRoaW5raW5nIGFib3V0IGhvdyBzeXprYWxsZXIgd29ya3MsIGZ1enppbmcgVVNCIGlzIHVzdWFsbHkgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgcmlnaHQ/IFNvLCBgTVdJRklFWF9VU0JgIHNlZW1zIGxpa2UgdGhlIG1vc3QgcHJvbWlzaW5nIHBhdGguCgpMZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHBvdGVudGlhbCBjb25maWd1cmF0aW9ucyBvciByZWxhdGVkIG1vZHVsZXMgSSBzaG91bGQgYmUgYXdhcmUgb2YuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnkgYW5nbGVzIGhlcmUuCgpBaCwgSSBmb3VuZCB0aGUgdGFyZ2V0IGZpbGUuIExvb2tzIGxpa2UgdGhlIHByaW1hcnkgYXJlYSBvZiBpbnRlcmVzdCBpcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY2AuIE9rYXksIHRoYXQgY29uZmlybXMgaXQ6IGl0JiMzOTtzIHBhcnQgb2YgdGhlIGBtd2lmaWV4YCBtb2R1bGUuIEdvb2QsIEkgaGF2ZSBhIGNsZWFyIGRpcmVjdGlvbiBub3cuIFRoaXMgZ2l2ZXMgbWUgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgbXkgZnV6emluZyBlZmZvcnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY2FuLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9NYWtlZmlsZT0xNz1td2lmaWV4LXkgJiM0Mzs9IDExbl9yeHJlb3JkZXIub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlOjE4Om13aWZpZXgteSAmIzQzOz0gc2Nhbi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvTWFrZWZpbGUtMTktbXdpZmlleC15ICYjNDM7PSBqb2luLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYz0yNjU5PW13aWZpZXhfY2ZnODAyMTFfc2NhbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTI2NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYzoyNjczOlx0LyogQmxvY2sgc2NhbiByZXF1ZXN0IGlmIHNjYW4gb3BlcmF0aW9uIG9yIHNjYW4gY2xlYW51cCB3aGVuIGludGVyZmFjZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtMjY3NC1cdCAqIGlzIGRpc2FibGVkIGlzIGluIHByb2Nlc3Ncbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jPTc0Mz1td2lmaWV4X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy03NTItXHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgSU5GTyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6NzUzOlx0XHRcdCAgICBcJiMzNDthYm9ydGluZyBzY2FuIG9uIG5kb19zdG9wXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNzU0LVx0XHRjZmc4MDIxMV9zY2FuX2RvbmUocHJpdi1cdTAwM2VzY2FuX3JlcXVlc3QsIFx1MDAyNmluZm8pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNzYwLVx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIElORk8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjc2MTpcdFx0XHQgICAgXCYjMzQ7YWJvcnRpbmcgYmdzY2FuIG9uIG5kb19zdG9wXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNzYyLVx0XHRtd2lmaWV4X3N0b3BfYmdfc2Nhbihwcml2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE3NDM9bXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHU4ICoqYnNzX2luZm8sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNzg5Olx0LyogRmlyc3QgNSBmaWVsZHMgYXJlIGJzc2lkLCBSU1NJKGZvciBsZWdhY3kgc2NhbiBvbmx5KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTc5MC1cdCAqIHRpbWUgc3RhbXAsIGJlYWNvbiBpbnRlcnZhbCwgYW5kIGNhcGFiaWxpdHkgaW5mb3JtYXRpb25cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU4NTcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA0MDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgY29uZmlndXJhdGlvbnMuIFRob3NlIHNlZW0gbGlrZSB0aGUgcmVsZXZhbnQgZW50cnkgcG9pbnRzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBmdW5jdGlvbnMgYXJlIG1vc3QgbGlrZWx5IHRvIHlpZWxkIGludGVyZXN0aW5nIHJlc3VsdHMgd2hlbiBmdXp6ZWQuCgpSaWdodCwgdGhlIGtleSBtb2RpZmllZCBmdW5jdGlvbiBpcyBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYC4gTGV0JiMzOTtzIHNlZSBob3cgaXQmIzM5O3MgdXNlZC4gSXQmIzM5O3MgY2FsbGVkIGJ5IGBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudGAgYW5kIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAsIHdoaWNoIGFyZSwgaW4gdHVybiwgY2FsbGVkIGJ5IGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAuIFNvLCB0aGUgYXR0YWNrIHN1cmZhY2UgaXMgYG13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlYCwgd2hpY2ggaXMgdGhlIG1vc3QgY3JpdGljYWwgZnVuY3Rpb24uIEkgYWxzbyBuZWVkIHRvIGZvY3VzIG9uIGBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudGAgYW5kIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAsIGFuZCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgb3JpZ2luYWwgdnVsbmVyYWJpbGl0eSwgYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAuIFdhaXQsIHRoYXQmIzM5O3MgcmlnaHQsIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIGlzIHN0YXRpYy4gTm8gcHJvYmxlbSwgdGhhdCYjMzk7cyBmaW5lLiBTbyB0aGUgZmluYWwgbGlzdCBvZiBmdW5jdGlvbnMgdG8gZm9jdXMgb24gaXMgYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAsIGBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudGAsIGFuZCBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgLgoKSnVzdCB0byBiZSBjZXJ0YWluLCBsZXQgbWUgdmVyaWZ5IHRoYXQgYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgaXMgaW5kZWVkIHN0YXRpYy4gQWgsIHllcywgaXQgaXMsIGRlY2xhcmVkIGFzIGBzdGF0aWMgdTggbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKHN0cnVjdCBpZV9ib2R5ICppZWJvZHksIHU4ICpvdWksIGludCBpZV9sZW4pYC4KCk5vdywgbGV0JiMzOTtzIHNlZSBpZiBJIG5lZWQgdG8gdGFrZSBvdGhlciBjb25maWd1cmF0aW9ucyBpbnRvIGFjY291bnQuIEFoLCBgTVdJRklFWGAgZGVwZW5kcyBvbiBgTUFDODAyMTFgIGFuZCBgV0xBTmAuIEkgY2FuIGp1c3QgbGlzdCBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgYXMgdGhlIG92ZXJhbGwgY29uZmlndXJhdGlvbnMgdGhhdCBJIG5lZWQgdG8gYmUgY29uY2VybmVkIHdpdGguCgpJIHNob3VsZCBkb3VibGUtY2hlY2sgcmVhY2hhYmlsaXR5IGZyb20gdGhlIFVTQiBwYXRoLiBJIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgaXMgYWxzbyByZWFjaGFibGUgZnJvbSB0aGUgVVNCIHBhdGguIFRoZSBVU0IgZHJpdmVyIHJlY2VpdmVzIGRhdGEgdGhyb3VnaCBgbXdpZmlleF91c2JfcmVjdmAsIHdoaWNoIHRoZW4gY2FsbHMgYG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldGAsIG9yIHNpbWlsYXIuIFRoYXQgbWVhbnMgSSBjYW4gcmVhY2ggdGhvc2UgZnVuY3Rpb25zIHRocm91Z2ggdGhlIFVTQiBlbnRyeXBvaW50LiBHb29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3VzYl9yZWN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oPTU1PWVudW0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTIzLSAqIERvIG5vdCBjaGVjayBmb3IgZGF0YV9yZWNlaXZlZCBmb3IgVVNCLCBhcyBkYXRhX3JlY2VpdmVkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oOjEyNDogKiBpcyBoYW5kbGVkIGluIG13aWZpZXhfdXNiX3JlY3YgZm9yIFVTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMjUtICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTQxPXN0YXRpYyBpbnQgbXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihzdHJ1Y3QgdXJiX2NvbnRleHQgKmN0eCwgaW50IHNpemUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00NS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo0NjpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3JlY3Yoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00Ny1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggZXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTE1Mj1zdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9yeF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxODc6XHRcdHN0YXR1cyA9IG13aWZpZXhfdXNiX3JlY3YoYWRhcHRlciwgc2tiLCBjb250ZXh0LVx1MDAzZWVwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xODgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE5Ni1cdFx0XHQgKiB1cmIgZm9yIGNtZF9lcCB3aWxsIGJlIHJlLXN1Ym1pdHRlZCBpbiBjYWxsYmFja1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE5NzpcdFx0XHQgKiBtd2lmaWV4X3VzYl9yZWN2X2NvbXBsZXRlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTk4LVx0XHRcdCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzMzNQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIFVTQiBSZWNlaXZlIFBhdGgqKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgVVNCIHJlY2VpdmUgcGF0aCBmb3IgdGhpcyBNYXJ2ZWxsIFdpLUZpIGRyaXZlci4gVGhlIGBtd2lmaWV4X3VzYl9yZWN2YCBmdW5jdGlvbiBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCBpc24mIzM5O3QgaXQ/IFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBpbmNvbWluZyBkYXRhIHBhY2tldHMgZnJvbSB0aGUgVVNCIGludGVyZmFjZS4gVGhlIGNvcmUgcXVlc3Rpb24gaXM6IHdoYXQmIzM5O3MgdGhlIGltbWVkaWF0ZSBuZXh0IHN0ZXAgYWZ0ZXIgdGhlIGBza2JgIGlzIHJlY2VpdmVkPyBJcyB0aGUgZGF0YSBoYW5kbGVkIGRpcmVjdGx5IGJ5IGBtd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXRgIG9yIGBtd2lmaWV4X3Byb2Nlc3NfcnhfcGFja2V0YD8gS25vd2luZyB0aGF0IHF1aWNrbHkgdGVsbHMgbWUgd2hldGhlciBpdCYjMzk7cyBhbiBpbW1lZGlhdGUsIGhpZ2gtcHJpb3JpdHkgcHJvY2Vzc2luZyBzY2VuYXJpbyB2ZXJzdXMgc29tZXRoaW5nIHRoYXQgbWlnaHQgYmUgcHVzaGVkIGludG8gYSB0YXNrbGV0IG9yIHdvcmsgcXVldWUuIEl0JiMzOTtzIGEga2V5IGRpc3RpbmN0aW9uIHdoZW4gdGhpbmtpbmcgYWJvdXQgbGF0ZW5jeSBhbmQgb3ZlcmFsbCBzeXN0ZW0gcmVzcG9uc2l2ZW5lc3MuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgZXhhY3QgY29udHJvbCBmbG93IGhlcmUgdG8gdW5kZXJzdGFuZCBob3cgaW50ZXJydXB0cywgd29ya3F1ZXVlcywgYW5kIGRlZmVycmluZyBoYXBwZW4gaW4gdGhpcyBkcml2ZXIuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF91c2JfcmVjdiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9NDE9c3RhdGljIGludCBtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKHN0cnVjdCB1cmJfY29udGV4dCAqY3R4LCBpbnQgc2l6ZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ1LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjQ2OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVjdihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ3LVx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBlcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTUyPXN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE4NzpcdFx0c3RhdHVzID0gbXdpZmlleF91c2JfcmVjdihhZGFwdGVyLCBza2IsIGNvbnRleHQtXHUwMDNlZXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE4OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTk2LVx0XHRcdCAqIHVyYiBmb3IgY21kX2VwIHdpbGwgYmUgcmUtc3VibWl0dGVkIGluIGNhbGxiYWNrXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTk3Olx0XHRcdCAqIG13aWZpZXhfdXNiX3JlY3ZfY29tcGxldGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xOTgtXHRcdFx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MDIzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgbXdpZmlleF91c2JfcmVjdmAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlLiBJJiMzOTttIGFzc3VtaW5nIGl0IGhhbmRsZXMgcmVjZWl2aW5nIGRhdGEgb3ZlciBVU0Igd2l0aGluIHRoZSBNYXJ2ZWxsIFdpLUZpIGRyaXZlciwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoYXQuIEl0JiMzOTtzIGxpa2VseSBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUgZm9yIG1hbmFnaW5nIGluY29taW5nIHBhY2tldHMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBlbnRyeSBwb2ludCBvZiB0aGUgVVNCIGRhdGEgcGF0aCwgdGhlIHR5cGljYWwgZmxvdyBpdCYjMzk7cyBpbnZvbHZlZCBpbiwgYW5kIHdoYXQgaGFwcGVucyBpbiB0aGUgZXZlbnQgb2YgZXJyb3JzLiBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCBieSBsb29raW5nIGF0IGl0cyBpbW1lZGlhdGUgY2FsbHMgYW5kIGNhbGxlZXMgdG8gZ2V0IGEgZmVlbCBmb3IgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBkcml2ZXIgc3RydWN0dXJlLiBVbmRlcnN0YW5kaW5nIHRoZSBkYXRhIHN0cnVjdHVyZXMgaXQgbWFuaXB1bGF0ZXMsIGVzcGVjaWFsbHkgdGhvc2UgcmVsYXRlZCB0byBVU0IgZW5kcG9pbnRzIGFuZCBwYWNrZXQgYnVmZmVycywgd2lsbCBiZSBrZXkuIEkgbmVlZCB0byBnZXQgdGhlIGJpZyBwaWN0dXJlIG9mIGl0cyBjb250ZXh0IHRvIHByb3Blcmx5IGdyYXNwIGl0cyBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA0NjpcdHN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVjdihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuICA0NzpcdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBlcClcbiAgNDg6XHR7XG4gIDQ5Olx0XHR1MzIgcmVjdl90eXBlO1xuICA1MDpcdFx0X19sZTMyIHRtcDtcbiAgNTE6XHRcdGludCByZXQ7XG4gIDUyOlx0XG4gIDUzOlx0XHRpZiAoYWRhcHRlci1cdTAwM2Voc19hY3RpdmF0ZWQpXG4gIDU0Olx0XHRcdG13aWZpZXhfcHJvY2Vzc19oc19jb25maWcoYWRhcHRlcik7XG4gIDU1Olx0XG4gIDU2Olx0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgSU5URl9IRUFERVJfTEVOKSB7XG4gIDU3Olx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuICA1ODpcdFx0XHRcdCAgICBcJiMzNDslczogaW52YWxpZCBza2ItXHUwMDNlbGVuXFxuXCYjMzQ7LCBfX2Z1bmNfXyk7XG4gIDU5Olx0XHRcdHJldHVybiAtMTtcbiAgNjA6XHRcdH1cbiAgNjE6XHRcbiAgNjI6XHRcdHN3aXRjaCAoZXApIHtcbiAgNjM6XHRcdGNhc2UgTVdJRklFWF9VU0JfRVBfQ01EX0VWRU5UOlxuICA2NDpcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFVkVOVCxcbiAgNjU6XHRcdFx0XHQgICAgXCYjMzQ7JXM6IEVQX0NNRF9FVkVOVFxcblwmIzM0OywgX19mdW5jX18pO1xuICA2NjpcdFx0XHRza2JfY29weV9mcm9tX2xpbmVhcl9kYXRhKHNrYiwgXHUwMDI2dG1wLCBJTlRGX0hFQURFUl9MRU4pO1xuICA2NzpcdFx0XHRyZWN2X3R5cGUgPSBsZTMyX3RvX2NwdSh0bXApO1xuICA2ODpcdFx0XHRza2JfcHVsbChza2IsIElOVEZfSEVBREVSX0xFTik7XG4gIDY5Olx0XG4gIDcwOlx0XHRcdHN3aXRjaCAocmVjdl90eXBlKSB7XG4gIDcxOlx0XHRcdGNhc2UgTVdJRklFWF9VU0JfVFlQRV9DTUQ6XG4gIDcyOlx0XHRcdFx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNlIE1XSUZJRVhfU0laRV9PRl9DTURfQlVGRkVSKSB7XG4gIDczOlx0XHRcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcbiAgNzQ6XHRcdFx0XHRcdFx0ICAgIFwmIzM0O0NNRDogc2tiLVx1MDAzZWxlbiB0b28gbGFyZ2VcXG5cJiMzNDspO1xuICA3NTpcdFx0XHRcdFx0cmV0ID0gLTE7XG4gIDc2Olx0XHRcdFx0XHRnb3RvIGV4aXRfcmVzdG9yZV9za2I7XG4gIDc3Olx0XHRcdFx0fSBlbHNlIGlmICghYWRhcHRlci1cdTAwM2VjdXJyX2NtZCkge1xuICA3ODpcdFx0XHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgV0FSTiwgXCYjMzQ7Q01EOiBubyBjdXJyX2NtZFxcblwmIzM0Oyk7XG4gIDc5Olx0XHRcdFx0XHRpZiAoYWRhcHRlci1cdTAwM2Vwc19zdGF0ZSA9PSBQU19TVEFURV9TTEVFUF9DRk0pIHtcbiAgODA6XHRcdFx0XHRcdFx0bXdpZmlleF9wcm9jZXNzX3NsZWVwX2NvbmZpcm1fcmVzcChcbiAgODE6XHRcdFx0XHRcdFx0XHRcdGFkYXB0ZXIsIHNrYi1cdTAwM2VkYXRhLFxuICA4MjpcdFx0XHRcdFx0XHRcdFx0c2tiLVx1MDAzZWxlbik7XG4gIDgzOlx0XHRcdFx0XHRcdHJldCA9IDA7XG4gIDg0Olx0XHRcdFx0XHRcdGdvdG8gZXhpdF9yZXN0b3JlX3NrYjtcbiAgODU6XHRcdFx0XHRcdH1cbiAgODY6XHRcdFx0XHRcdHJldCA9IC0xO1xuICA4NzpcdFx0XHRcdFx0Z290byBleGl0X3Jlc3RvcmVfc2tiO1xuICA4ODpcdFx0XHRcdH1cbiAgODk6XHRcbiAgOTA6XHRcdFx0XHRhZGFwdGVyLVx1MDAzZWN1cnJfY21kLVx1MDAzZXJlc3Bfc2tiID0gc2tiO1xuICA5MTpcdFx0XHRcdGFkYXB0ZXItXHUwMDNlY21kX3Jlc3BfcmVjZWl2ZWQgPSB0cnVlO1xuICA5MjpcdFx0XHRcdGJyZWFrO1xuICA5MzpcdFx0XHRjYXNlIE1XSUZJRVhfVVNCX1RZUEVfRVZFTlQ6XG4gIDk0Olx0XHRcdFx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIHNpemVvZih1MzIpKSB7XG4gIDk1Olx0XHRcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcbiAgOTY6XHRcdFx0XHRcdFx0ICAgIFwmIzM0O0VWRU5UOiBza2ItXHUwMDNlbGVuIHRvbyBzbWFsbFxcblwmIzM0Oyk7XG4gIDk3Olx0XHRcdFx0XHRyZXQgPSAtMTtcbiAgOTg6XHRcdFx0XHRcdGdvdG8gZXhpdF9yZXN0b3JlX3NrYjtcbiAgOTk6XHRcdFx0XHR9XG4gMTAwOlx0XHRcdFx0c2tiX2NvcHlfZnJvbV9saW5lYXJfZGF0YShza2IsIFx1MDAyNnRtcCwgc2l6ZW9mKHUzMikpO1xuIDEwMTpcdFx0XHRcdGFkYXB0ZXItXHUwMDNlZXZlbnRfY2F1c2UgPSBsZTMyX3RvX2NwdSh0bXApO1xuIDEwMjpcdFx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVWRU5ULFxuIDEwMzpcdFx0XHRcdFx0ICAgIFwmIzM0O2V2ZW50X2NhdXNlICUjeFxcblwmIzM0OywgYWRhcHRlci1cdTAwM2VldmVudF9jYXVzZSk7XG4gMTA0Olx0XG4gMTA1Olx0XHRcdFx0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNlIE1BWF9FVkVOVF9TSVpFKSB7XG4gMTA2Olx0XHRcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcbiAxMDc6XHRcdFx0XHRcdFx0ICAgIFwmIzM0O0VWRU5UOiBldmVudCBib2R5IHRvbyBsYXJnZVxcblwmIzM0Oyk7XG4gMTA4Olx0XHRcdFx0XHRyZXQgPSAtMTtcbiAxMDk6XHRcdFx0XHRcdGdvdG8gZXhpdF9yZXN0b3JlX3NrYjtcbiAxMTA6XHRcdFx0XHR9XG4gMTExOlx0XG4gMTEyOlx0XHRcdFx0bWVtY3B5KGFkYXB0ZXItXHUwMDNlZXZlbnRfYm9keSwgc2tiLVx1MDAzZWRhdGEgJiM0MztcbiAxMTM6XHRcdFx0XHQgICAgICAgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOLCBza2ItXHUwMDNlbGVuKTtcbiAxMTQ6XHRcbiAxMTU6XHRcdFx0XHRhZGFwdGVyLVx1MDAzZWV2ZW50X3JlY2VpdmVkID0gdHJ1ZTtcbiAxMTY6XHRcdFx0XHRhZGFwdGVyLVx1MDAzZWV2ZW50X3NrYiA9IHNrYjtcbiAxMTc6XHRcdFx0XHRicmVhaztcbiAxMTg6XHRcdFx0ZGVmYXVsdDpcbiAxMTk6XHRcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcbiAxMjA6XHRcdFx0XHRcdCAgICBcJiMzNDt1bmtub3duIHJlY3ZfdHlwZSAlI3hcXG5cJiMzNDssIHJlY3ZfdHlwZSk7XG4gMTIxOlx0XHRcdFx0cmV0ID0gLTE7XG4gMTIyOlx0XHRcdFx0Z290byBleGl0X3Jlc3RvcmVfc2tiO1xuIDEyMzpcdFx0XHR9XG4gMTI0Olx0XHRcdGJyZWFrO1xuIDEyNTpcdFx0Y2FzZSBNV0lGSUVYX1VTQl9FUF9EQVRBOlxuIDEyNjpcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBEQVRBLCBcJiMzNDslczogRVBfREFUQVxcblwmIzM0OywgX19mdW5jX18pO1xuIDEyNzpcdFx0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2UgTVdJRklFWF9SWF9EQVRBX0JVRl9TSVpFKSB7XG4gMTI4Olx0XHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXG4gMTI5Olx0XHRcdFx0XHQgICAgXCYjMzQ7REFUQTogc2tiLVx1MDAzZWxlbiB0b28gbGFyZ2VcXG5cJiMzNDspO1xuIDEzMDpcdFx0XHRcdHJldHVybiAtMTtcbiAxMzE6XHRcdFx0fVxuIDEzMjpcdFxuIDEzMzpcdFx0XHRza2JfcXVldWVfdGFpbChcdTAwMjZhZGFwdGVyLVx1MDAzZXJ4X2RhdGFfcSwgc2tiKTtcbiAxMzQ6XHRcdFx0YWRhcHRlci1cdTAwM2VkYXRhX3JlY2VpdmVkID0gdHJ1ZTtcbiAxMzU6XHRcdFx0YXRvbWljX2luYyhcdTAwMjZhZGFwdGVyLVx1MDAzZXJ4X3BlbmRpbmcpO1xuIDEzNjpcdFx0XHRicmVhaztcbiAxMzc6XHRcdGRlZmF1bHQ6XG4gMTM4Olx0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuIDEzOTpcdFx0XHRcdCAgICBcJiMzNDslczogdW5rbm93biBlbmRwb3J0ICUjeFxcblwmIzM0OywgX19mdW5jX18sIGVwKTtcbiAxNDA6XHRcdFx0cmV0dXJuIC0xO1xuIDE0MTpcdFx0fVxuIDE0MjpcdFxuIDE0MzpcdFx0cmV0dXJuIC1FSU5QUk9HUkVTUztcbiAxNDQ6XHRcbiAxNDU6XHRleGl0X3Jlc3RvcmVfc2tiOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTc1NAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLgoKKipEaXZpbmcgaW50byB0aGUgTWFydmVsbCBXaS1GaSBEcml2ZXImIzM5O3MgUmVjZWl2ZSBQYXRoKioKClJpZ2h0LCBzbyBJJiMzOTttIHRyeWluZyB0byB0cmFjZSB0aGUgcGF0aCB0aGUgTWFydmVsbCBXaS1GaSBkcml2ZXIgdGFrZXMgd2hlbiBpdCByZWNlaXZlcyBkYXRhLiBGcm9tIHdoYXQgSSBjYW4gc2VlLCBgbXdpZmlleF91c2JfcmVjdmAgc2VlbXMgdG8gYmUgdGhlIGluaXRpYWwgZW50cnkgcG9pbnQsIGhhbmRsaW5nIHRoZSBxdWV1aW5nIG9mIGJvdGggZXZlbnRzIGFuZCBjb21tYW5kcy4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgdGhlIFVTQiByZWNlaXZlIGZ1bmN0aW9uLCBzbyBpdCYjMzk7cyBnb3QgdG8gbWFuYWdlIHRoZSBpbmNvbWluZyBkYXRhIHN0cmVhbXMuIFRoZW4sIGBtd2lmaWV4X21haW5fcHJvY2Vzc2AgdGFrZXMgb3ZlciwgcHVsbGluZyB0aG9zZSBxdWV1ZWQgaXRlbXMgYW5kIHByb2Nlc3NpbmcgdGhlbS4gVGhpcyBpcyB0aGUgaGVhcnQgb2YgdGhlIHJlY2VpdmUgaGFuZGxpbmcuIEl0IGxvb2tzIGxpa2UgaXQgZGVsZWdhdGVzIHRvIHR3byBrZXkgZnVuY3Rpb25zOiBgbXdpZmlleF9wcm9jZXNzX2NtZHJlc3BgIGFuZCBgbXdpZmlleF9wcm9jZXNzX2V2ZW50YC4gT2J2aW91c2x5LCB0aGUgZXZlbnQgcHJvY2Vzc29yIHdpbGwgaGFuZGxlIGV2ZW50cywgYnV0IHRoZSBjb21tYW5kIHJlc3BvbnNlIHByb2Nlc3NvciwgYG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwYCBpcyBtb3JlIGludGVyZXN0aW5nIGluIG15IGN1cnJlbnQgZm9jdXMuIEkgc2VlIHRoYXQgYG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwYCBpcyByZXNwb25zaWJsZSBmb3IgZGVhbGluZyB3aXRoIGNvbW1hbmQgcmVzcG9uc2VzLCBhbmQsIGNydWNpYWxseSwgdGhhdCBpbmNsdWRlcyB0aGluZ3MgbGlrZSBzY2FuIHJlc3VsdHMuIEFoYSEgSSB0aGluayBJJiMzOTt2ZSBmb3VuZCB3aGVyZSBJIG5lZWQgdG8gbG9vay4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byBgbXdpZmlleF9wcm9jZXNzX2NtZHJlc3BgIHRvIGZpZ3VyZSBvdXQgdGhlIHNwZWNpZmljcyBvZiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIHRob3NlIHNjYW4gcmVzdWx0cy4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfcHJvY2Vzc19jbWRyZXNwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmM9NzQxPWludCBtd2lmaWV4X2V4ZWNfbmV4dF9jbWQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtODAyLSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jOjgwMzppbnQgbXdpZmlleF9wcm9jZXNzX2NtZHJlc3Aoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy04MDQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYz0xMDg1PW13aWZpZXhfY2FuY2VsX3BlbmRpbmdfaW9jdGwoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtMTA5My1cdFx0Lyogc2V0dGluZyBjdXJyX2NtZCB0byBOVUxMIGlzIHF1aXRlIGRhbmdlcm91cywgYmVjYXVzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jOjEwOTQ6XHRcdCAqIG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwIGNoZWNrcyBjdXJyX2NtZCB0byBiZSAhPSBOVUxMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtMTA5NS1cdFx0ICogYXQgdGhlIGJlZ2lubmluZyB0aGVuIHJlbGllcyBvbiBpdCBhbmQgZGVyZWZlcmVuY2VzXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0yNDg9aW50IG13aWZpZXhfbWFpbl9wcm9jZXNzKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy0zNTYtXHRcdFx0YWRhcHRlci1cdTAwM2VjbWRfcmVzcF9yZWNlaXZlZCA9IGZhbHNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzozNTc6XHRcdFx0bXdpZmlleF9wcm9jZXNzX2NtZHJlc3AoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTM1OC1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTEwMD1pbnQgbXdpZmlleF9leGVjX25leHRfY21kKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMTAxOmludCBtd2lmaWV4X3Byb2Nlc3NfY21kcmVzcChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTEwMi12b2lkIG13aWZpZXhfcHJvY2Vzc19hc3NvY19yZXNwKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTMxPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYzozMjptd2lmaWV4X3Byb2Nlc3NfY21kcmVzcF9lcnJvcihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMzMtXHRcdFx0ICAgICAgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM9MTIxMj1pbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUxNiBjbWRyZXNwX25vLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyMjAtXHRpZiAocmVzcC1cdTAwM2VyZXN1bHQgIT0gSG9zdENtZF9SRVNVTFRfT0spIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjEyMjE6XHRcdG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwX2Vycm9yKHByaXYsIHJlc3ApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTIyMi1cdFx0cmV0dXJuIC0xO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTAzMAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByb2Nlc3MsIGJyZWFraW5nIGl0IGRvd24gaW4gbXkgb3duIGhlYWQ6CgoqKkFuYWx5emluZyB0aGUgU2NhbiBDb21tYW5kIFJlc3BvbnNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIHN5c3RlbSBwcm9jZXNzZXMgYSByZXNwb25zZSB0byBhIHNjYW4gY29tbWFuZCwgc3BlY2lmaWNhbGx5LCB0aGUgYEhvc3RDbWRfQ01EXzgwMl8xMV9TQ0FOYCBjb21tYW5kLiBUaGUgZnVuY3Rpb24gYG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcGAgaXMgdGhlIG9uZSB0aGF0JiMzOTtzIGRlYWxpbmcgd2l0aCBpdC4gSSYjMzk7ZCBleHBlY3QgaXQgdG8gaGFuZGxlIHRoZSBpbml0aWFsIHBhcnNpbmcgYW5kIGFueSBjb21tYW5kLXNwZWNpZmljIGxvZ2ljIGZvciB0aGlzIHJlc3BvbnNlLiBDcnVjaWFsbHksIEkgc2VlIHRoYXQgaXQgY2FsbHMgYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYC4gVGhpcyBpcyBrZXkuIFRoZSBuYW1lIHRlbGxzIG1lIHRoYXQgdGhpcyBpcyB3aGVyZSB0aGUgKnJldHVybiogb3IsIHJhdGhlciwgcHJvY2Vzc2luZyBvZiB0aGUgc2NhbiByZXN1bHRzIGFjdHVhbGx5IGhhcHBlbnMuCgpUaGVyZWZvcmUsIGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAgaXMgcmVzcG9uc2libGUgZm9yIHRha2luZyB0aGUgcmF3IGRhdGEgZnJvbSB0aGUgc2NhbiBhbmQgdHVybmluZyBpdCBpbnRvIHNvbWV0aGluZyB1c2FibGUuIFRoaXMgbGlrZWx5IGludm9sdmVzIGRlY29kaW5nIHRoZSBmb3JtYXQgb2YgdGhlIHNjYW4gcmVzdWx0cywgb3JnYW5pemluZyB0aGUgZGF0YSwgYW5kIHBvc3NpYmx5IGFwcGx5aW5nIHNvbWUgZmlsdGVyaW5nIG9yIGVycm9yIGNoZWNraW5nLCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIHRoZSB3aG9sZSBwcm9jZXNzIGZvciBkZWFsaW5nIHdpdGggc2NhbiByZXNwb25zZXMuIFRoZSBpbnRlcmVzdGluZyBwb2ludHMsIG9mIGNvdXJzZSwgbGllIHdpdGhpbiB0aGUgYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYCBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDI6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9yZXRfODAyXzExX3NjYW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTE1Nz12b2lkIG13aWZpZXhfcXVldWVfc2Nhbl9jbWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTE1OC1cdFx0XHQgICAgc3RydWN0IGNtZF9jdHJsX25vZGUgKmNtZF9ub2RlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTE1OTppbnQgbXdpZmlleF9yZXRfODAyXzExX3NjYW4oc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTE2MC1cdFx0XHQgICAgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTIzOT1pbnQgbXdpZmlleF9jbWRfODAyXzExX3NjYW5fZXh0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMjQxLVx0XHRcdFx0dm9pZCAqZGF0YV9idWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMjQyOmludCBtd2lmaWV4X3JldF84MDJfMTFfc2Nhbl9leHQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTI0My1cdFx0XHRcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTExMjc9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTEyODptd2lmaWV4X3JldF84MDJfMTFfc2Nhbl9nZXRfdGx2X3B0cnMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTEyOS1cdFx0XHRcdCAgICAgc3RydWN0IG13aWZpZXhfaWVfdHlwZXNfZGF0YSAqdGx2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MjA1NT12b2lkIG13aWZpZXhfY2FuY2VsX3NjYW4oc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIxMDEtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjIxMDI6aW50IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIxMDMtXHRcdFx0ICAgIHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjE3MS1cdCAgIFRMVnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MjE3MjpcdG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2dldF90bHZfcHRycyhhZGFwdGVyLCB0bHZfZGF0YSwgdGx2X2J1Zl9zaXplLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yMTczLVx0XHRcdFx0XHQgICAgIFRMVl9UWVBFX1RTRlRJTUVTVEFNUCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTIxNzgtXHQgICBUTFZzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjIxNzk6XHRtd2lmaWV4X3JldF84MDJfMTFfc2Nhbl9nZXRfdGx2X3B0cnMoYWRhcHRlciwgdGx2X2RhdGEsIHRsdl9idWZfc2l6ZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjE4MC1cdFx0XHRcdFx0ICAgICBUTFZfVFlQRV9DSEFOTkVMQkFORExJU1QsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0yNDg5PW13aWZpZXhfdXBkYXRlX2NoYW5fc3RhdGlzdGljcyhzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjUzMS0vKiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgdGhlIGNvbW1hbmQgcmVzcG9uc2Ugb2YgZXh0ZW5kZWQgc2NhbiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoyNTMyOmludCBtd2lmaWV4X3JldF84MDJfMTFfc2Nhbl9leHQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjUzMy1cdFx0XHRcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jPTEyMTI9aW50IG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1MTYgY21kcmVzcF9ubyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMjQzLVx0Y2FzZSBIb3N0Q21kX0NNRF84MDJfMTFfU0NBTjpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjEyNDQ6XHRcdHJldCA9IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuKHByaXYsIHJlc3ApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTI0NS1cdFx0YWRhcHRlci1cdTAwM2VjdXJyX2NtZC1cdTAwM2V3YWl0X3FfZW5hYmxlZCA9IGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyNDctXHRjYXNlIEhvc3RDbWRfQ01EXzgwMl8xMV9TQ0FOX0VYVDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjEyNDg6XHRcdHJldCA9IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2V4dChwcml2LCByZXNwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyNDktXHRcdGFkYXB0ZXItXHUwMDNlY3Vycl9jbWQtXHUwMDNld2FpdF9xX2VuYWJsZWQgPSBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMjUxLVx0Y2FzZSBIb3N0Q21kX0NNRF84MDJfMTFfQkdfU0NBTl9RVUVSWTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjEyNTI6XHRcdHJldCA9IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuKHByaXYsIHJlc3ApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTI1My1cdFx0Y2ZnODAyMTFfc2NoZWRfc2Nhbl9yZXN1bHRzKHByaXYtXHUwMDNld2Rldi53aXBoeSwgMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAyOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyOTIxCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNjc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYG13aWZpZXhgIERyaXZlciYjMzk7cyBTZWN1cml0eSBGb290cHJpbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgYW5hbHlzaXMgc3RhcnRzIHdpdGggaG93IHRoZSBzY2FuIHJlc3BvbnNlIGlzIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgZGF0YSBmbG93LiBUaGUgZnVuY3Rpb24gYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYCBwYXJzZXMgdGhlIHJlc3BvbnNlIGFuZCBldmVudHVhbGx5IGZ1bm5lbHMgaXQgdGhyb3VnaCBgbXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmYC4gVGhpcyBwb3B1bGF0ZXMgdGhlIGBic3NfZGVzY2Agc3RydWN0dXJlLCB0aGVuIGNhbGxzIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYC4KCk5vdywgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gSSBzZWUgdGhhdCBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgIGlzIGNhbGxlZCwgbm90IGRpcmVjdGx5LCBidXQgdGhyb3VnaCB0aGUgY2FsbCB0byBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLiBMb29raW5nIGF0IHRoZSBjYWxscyB0byBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgIHN1Z2dlc3RzIGEga2V5IHBhdGguIEkga25vdyB0aGF0IGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAgaXMgaW52b2tlZCBkdXJpbmcgYm90aCBuZXR3b3JrIGpvaW5zICh2aWEgYG13aWZpZXhfYnNzX3N0YXJ0YCBhbmQgYG13aWZpZXhfdXBkYXRlX2N1cnJfYnNzX3BhcmFtc2ApLgoKU28sIEkgY2FuIGNyYWZ0IGFuIGF0dGFjayBieSBzZW5kaW5nIGEgc2NhbiByZXNwb25zZSwgYW5kIHRoZW4gdHJpZ2dlcmluZyBhIGpvaW4gcmVxdWVzdCAodXNpbmcgbmw4MDIxMSkuIFRoaXMgd2lsbCBpbnZva2UgZWl0aGVyIGBtd2lmaWV4X2Jzc19zdGFydGAgb3IgYG13aWZpZXhfdXBkYXRlX2N1cnJfYnNzX3BhcmFtc2AgYW5kIHRyaWdnZXIgdGhpcyBjb21wYXRpYmlsaXR5IGNoZWNrLiBBbHNvLCBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCBpcyBhbHNvIGNhbGxlZCBmcm9tIGFzc29jaWF0aW9uIGFuZCBhZC1ob2Mgc3RhcnQuCgpUaGlua2luZyBhYm91dCBhbiBhc3NvY2lhdGlvbiByZXNwb25zZSwgaXQgZ2V0cyBldmVuIGJldHRlci4gV2hlbiBJIGVtdWxhdGUgYW4gYXNzb2NpYXRpb24gcmVzcG9uc2UsIEkga25vdyBJJiMzOTtsbCBoaXQgYG13aWZpZXhfcmV0XzgwMl8xMV9hc3NvY2lhdGVgLiBUaGlzLCBpbiB0dXJuLCBjYWxscyBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCwgd2hpY2ggdGhlbiB0cmlnZ2VycyBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLiBUaGlzIGV2ZW50dWFsbHkgY2FsbHMgYG13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlYCwgd2hpY2ggYnJhbmNoZXMgb3V0IHRvIGNhbGwgYG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50YCBhbmQgYG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50YC4gVGhlc2UsIHVsdGltYXRlbHksIGNhbGwgYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAuCgpUaGUgZGF0YSBmbG93IGlzIHByZXR0eSBjbGVhcmx5IGxhaWQgb3V0OiBgbXdpZmlleF91c2JfcmVjdmAgLSZndDsgYG13aWZpZXhfbWFpbl9wcm9jZXNzYCAtJmd0OyBgbXdpZmlleF9wcm9jZXNzX2NtZHJlc3BgIC0mZ3Q7IGBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2NtZHJlc3BgIC0mZ3Q7IGBtd2lmaWV4X3JldF84MDJfMTFfYXNzb2NpYXRlYCAtJmd0OyBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCAtJmd0OyBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgIC0mZ3Q7IGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAgLSZndDsgYG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50YCAvIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAgLSZndDsgYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAuCgpUaGlzIHBhdGggaXMgKmhpZ2hseSogcmVhY2hhYmxlIGFuZCByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBwYXJ0IG9mIHRoZSBkcml2ZXIuCgpNeSBmb2N1cyBpcyBwcmltYXJpbHkgb24gdGhlc2Ugc3ltYm9scywgd2hpY2ggaXMgd2hlcmUgYW55IHZ1bG5lcmFiaWxpdHkgaXMgbGlrZWx5IHRvIGJlIGV4cG9zZWQ6Ci0gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAKLSBgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRgCi0gYG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50YAotIGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAKLSBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgCgpGaW5hbGx5LCBjb25maWd1cmF0aW9uLXdpc2UsIEkgc2hvdWxkIGNoZWNrIHRoYXQgYE1XSUZJRVhgIGFuZCBgTVdJRklFWF9VU0JgIGFyZSBlbmFibGVkLiBJJiMzOTtsbCBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZmlsZSBpbiB0aGUgZHJpdmVyIGRpcmVjdG9yeSB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE1XSUZJRVhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gQ0ZHODAyMTFcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uIE1hcnZlbGxcbiAgIDc6XHRcdCAgODAyLjExbi9hYyBjaGlwc2V0cy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcbiAgMTA6XHRcdCAgbXdpZmlleC5cbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgTVdJRklFWF9TRElPXG4gIDEzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1wmIzM0O1xuICAxNDpcdFx0ZGVwZW5kcyBvbiBNV0lGSUVYIFx1MDAyNlx1MDAyNiBNTUNcbiAgMTU6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgMTY6XHRcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICAxOTpcdFx0ICA4Nzg2Lzg3ODcvODc5Ny84ODg3Lzg4OTcvODk3Ny84OTc4Lzg5ODcvODk5NyBjaGlwc2V0cyB3aXRoXG4gIDIwOlx0XHQgIFNESU8gaW50ZXJmYWNlLiBTRDg5NzggaXMgYWxzbyBrbm93biBhcyBOWFAgSVc0MTYuXG4gIDIxOlx0XG4gIDIyOlx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDIzOlx0XHQgIG13aWZpZXhfc2Rpby5cbiAgMjQ6XHRcbiAgMjU6XHRjb25maWcgTVdJRklFWF9QQ0lFXG4gIDI2Olx0XHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XCYjMzQ7XG4gIDI3Olx0XHRkZXBlbmRzIG9uIE1XSUZJRVggXHUwMDI2XHUwMDI2IFBDSVxuICAyODpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAyOTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDMwOlx0XHRoZWxwXG4gIDMxOlx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXG4gIDMyOlx0XHQgIDg3NjYvODg5Ny84OTk3IGNoaXBzZXRzIHdpdGggUENJZSBpbnRlcmZhY2UuXG4gIDMzOlx0XG4gIDM0Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDM1Olx0XHQgIG13aWZpZXhfcGNpZS5cbiAgMzY6XHRcbiAgMzc6XHRjb25maWcgTVdJRklFWF9VU0JcbiAgMzg6XHRcdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XCYjMzQ7XG4gIDM5Olx0XHRkZXBlbmRzIG9uIE1XSUZJRVggXHUwMDI2XHUwMDI2IFVTQlxuICA0MDpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICA0MTpcdFx0aGVscFxuICA0MjpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxuICA0MzpcdFx0ICA4Nzk3Lzg5OTcgY2hpcHNldCB3aXRoIFVTQiBpbnRlcmZhY2UuXG4gIDQ0Olx0XG4gIDQ1Olx0XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG4gIDQ2Olx0XHQgIG13aWZpZXhfdXNiLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTE2MwoJCQkJCQkJb3V0cHV0OiAyNDUKCQkJCQkJCXRob3VnaHRzOiAyNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBtd2lmaWV4YCBEcml2ZXIgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgY29yZSBpc3N1ZSBpcyB0aGlzOiBhIHBhdGNoIGFkZHMgY3J1Y2lhbCBib3VuZHMgY2hlY2tpbmcgdG8gdGhlIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYG13aWZpZXhgIGRyaXZlci4gVGhpcyBpcyBhIHRlbGwuIEkmIzM5O20gc2VlaW5nIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXR5IGJlaW5nIGFkZHJlc3NlZC4gVGhlIGZ1bmN0aW9uJiMzOTtzIHB1cnBvc2UgaXMgcGFyc2luZyBSU04vV1BBIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpLiBJdCYjMzk7cyB0cmlnZ2VyZWQgd2hlbiB0aGUgZHJpdmVyIHByb2Nlc3NlcyBzY2FuIHJlc3VsdHMgb3IgYXNzb2NpYXRpb24gcmVzcG9uc2VzLgoKTm93LCB0aGUgaW1wb3J0YW50IHBhcnQ6IHRoaXMgYG13aWZpZXhgIGRyaXZlciBhbHNvIGhhcyBhIFVTQiBjb21wb25lbnQsIGBtd2lmaWV4X3VzYmAuIFRoaXMgaXMgY3JpdGljYWwgYmVjYXVzZSBpdCBpbnRyb2R1Y2VzIGEgZGlyZWN0IGZ1enppbmcgdmVjdG9yLiBJIGNhbiBlbXVsYXRlIGEgTWFydmVsbCBXaS1GaSBVU0IgZGV2aWNlIHVzaW5nIHRoZSBVU0Igc3Vic3lzdGVtLCBlbXBsb3lpbmcgc29tZXRoaW5nIGxpa2UgYGR1bW15X2hjZGAgb3IgYHJhdy1nYWRnZXRgLiBUaGF0IGFsbG93cyBtZSB0byBjcmFmdCBhbmQgaW5qZWN0IG1hbGljaW91cyBzY2FuIG9yIGFzc29jaWF0aW9uIHJlc3BvbnNlcyBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoaXMgdnVsbmVyYWJsZSBmdW5jdGlvbi4gVGhlIFVTQiBwYXRoIGdpdmVzIG1lIHRoZSBjb250cm9sIEkgbmVlZCB0byByZWFjaCBpdC4KClRoZXJlZm9yZSwgdGhpcyBmdW5jdGlvbmFsIGNoYW5nZSBpcyByZWFjaGFibGUgYW5kIHZ1bG5lcmFibGUuIEl0ICptdXN0KiBiZSBmdXp6ZWQgcmlnb3JvdXNseS4gSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHM6IGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgLCBgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRgLCBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgLCBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgLCBhbmQgYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YC4gVGhleSBhcmUgYWxsIHBhcnQgb2YgdGhlIHJlbGV2YW50IGNvZGUgcGF0aC4KClRvIHJlY3JlYXRlIHRoZSBlbnZpcm9ubWVudCwgSSYjMzk7bGwgbmVlZCBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgZW5hYmxlZC4gV2l0aCB0aGF0IHNldHVwIGluIHBsYWNlLCBJIGNhbiBnZXQgdG8gd29yay4KClRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfc2VhcmNoX291aV9pbl9pZSYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudCYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZSYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwYXJzaW5nIFJTTi9XUEEgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgc2NhbiByZXN1bHRzIG9yIGFzc29jaWF0aW9uIHJlc3BvbnNlcyBjb250YWluaW5nIHRoZXNlIElFcy4gU2luY2UgYG13aWZpZXhgIGhhcyBhIFVTQiBkcml2ZXIgKGBtd2lmaWV4X3VzYmApLCBpdCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIHN1YnN5c3RlbSAoZS5nLiwgdXNpbmcgZHVtbXlfaGNkL3Jhdy1nYWRnZXQpIGJ5IGVtdWxhdGluZyBhIE1hcnZlbGwgV2ktRmkgVVNCIGRldmljZSBhbmQgc2VuZGluZyBtYWxpY2lvdXMgc2Nhbi9hc3NvY2lhdGlvbiByZXNwb25zZXMuIFRoZXJlZm9yZSwgdGhpcyBmdW5jdGlvbmFsIGNoYW5nZSBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnQmIzM0OywKICAgICYjMzQ7bXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcGFyc2luZyBSU04vV1BBIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB3aGVuIHRoZSBkcml2ZXIgcHJvY2Vzc2VzIHNjYW4gcmVzdWx0cyBvciBhc3NvY2lhdGlvbiByZXNwb25zZXMgY29udGFpbmluZyB0aGVzZSBJRXMuIFNpbmNlIGBtd2lmaWV4YCBoYXMgYSBVU0IgZHJpdmVyIChgbXdpZmlleF91c2JgKSwgaXQgY2FuIGJlIGZ1enplZCB2aWEgdGhlIFVTQiBzdWJzeXN0ZW0gKGUuZy4sIHVzaW5nIGR1bW15X2hjZC9yYXctZ2FkZ2V0KSBieSBlbXVsYXRpbmcgYSBNYXJ2ZWxsIFdpLUZpIFVTQiBkZXZpY2UgYW5kIHNlbmRpbmcgbWFsaWNpb3VzIHNjYW4vYXNzb2NpYXRpb24gcmVzcG9uc2VzLiBUaGVyZWZvcmUsIHRoaXMgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjc6MjAuNzY2OTM5MzQyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYxNTQ3NDE1MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVcIixcbiAgICBcIm13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50XCIsXG4gICAgXCJtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudFwiLFxuICAgIFwibXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVcIixcbiAgICBcIm13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIHdoZW4gcGFyc2luZyBSU04vV1BBIEluZm9ybWF0aW9uIEVsZW1lbnRzIChJRXMpLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB3aGVuIHRoZSBkcml2ZXIgcHJvY2Vzc2VzIHNjYW4gcmVzdWx0cyBvciBhc3NvY2lhdGlvbiByZXNwb25zZXMgY29udGFpbmluZyB0aGVzZSBJRXMuIFNpbmNlIGBtd2lmaWV4YCBoYXMgYSBVU0IgZHJpdmVyIChgbXdpZmlleF91c2JgKSwgaXQgY2FuIGJlIGZ1enplZCB2aWEgdGhlIFVTQiBzdWJzeXN0ZW0gKGUuZy4sIHVzaW5nIGR1bW15X2hjZC9yYXctZ2FkZ2V0KSBieSBlbXVsYXRpbmcgYSBNYXJ2ZWxsIFdpLUZpIFVTQiBkZXZpY2UgYW5kIHNlbmRpbmcgbWFsaWNpb3VzIHNjYW4vYXNzb2NpYXRpb24gcmVzcG9uc2VzLiBUaGVyZWZvcmUsIHRoaXMgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyNzoyMC43NjY5NDgxNDJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNTI1MDczMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGFjYWMxZWQyMmE5YTQyNDg5ZDU5M2RmOTFlODM0YzYzNGY4Y2UzZmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMTYgMDI6Mjc6MTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcXG5pbmRleCA5N2MwZWMzYjgyMmU3MC4uMzNlZjhhZjBhNWUxM2QgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcXG5AQCAtMTA0LDEyICsxMDQsMjEgQEAgaGFzX3ZlbmRvcl9oZHIoc3RydWN0IGllZWVfdHlwZXNfdmVuZG9yX3NwZWNpZmljICppZSwgdTgga2V5KVxcbiAgKiBhIGdpdmVuIG91aSBpbiBQVEsuXFxuICAqL1xcbiBzdGF0aWMgdThcXG4tbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKHN0cnVjdCBpZV9ib2R5ICppZWJvZHksIHU4ICpvdWkpXFxuK213aWZpZXhfc2VhcmNoX291aV9pbl9pZShzdHJ1Y3QgaWVfYm9keSAqaWVib2R5LCB1OCAqb3VpLCBpbnQgaWVfbGVuKVxcbiB7XFxuK1xcdGNvbnN0IHNpemVfdCBwdGtfYm9keV9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgaWVfYm9keSwgcHRrX2JvZHkpO1xcbiBcXHR1OCBjb3VudDtcXG4gXFxuK1xcdC8qIE5lZWQgZ3JwX2tleV9vdWlbNF0gKyBwdGtfY250WzJdIGJlZm9yZSByZWFkaW5nIHRoZSBPVUkgY291bnQuICovXFxuK1xcdGlmIChpZV9sZW4gXFx1MDAzYyAoaW50KXB0a19ib2R5X29mZnNldClcXG4rXFx0XFx0cmV0dXJuIE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xcbitcXG4gXFx0Y291bnQgPSBpZWJvZHktXFx1MDAzZXB0a19jbnRbMF07XFxuIFxcbitcXHQvKiBSZWplY3QgYW4gT1VJIGNvdW50IHdob3NlIGxpc3Qgd291bGQgcnVuIHBhc3QgdGhlIGVsZW1lbnQuICovXFxuK1xcdGlmIChwdGtfYm9keV9vZmZzZXQgKyBjb3VudCAqIHNpemVvZihpZWJvZHktXFx1MDAzZXB0a19ib2R5KSBcXHUwMDNlIChzaXplX3QpaWVfbGVuKVxcbitcXHRcXHRyZXR1cm4gTVdJRklFWF9PVUlfTk9UX1BSRVNFTlQ7XFxuK1xcbiBcXHQvKiBUaGVyZSBjb3VsZCBiZSBtdWx0aXBsZSBPVUlzIGZvciBQVEsgaGVuY2VcXG4gXFx0ICAgMSkgVGFrZSB0aGUgbGVuZ3RoLlxcbiBcXHQgICAyKSBDaGVjayBhbGwgdGhlIE9VSXMgZm9yIEFFUy5cXG5AQCAtMTQzLDExICsxNTIsMTQgQEAgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnQoc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsIHUzMiBjaXBoZXIpXFxuIFxcdHU4IHJldCA9IE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xcbiBcXG4gXFx0aWYgKGhhc19pZWVlX2hkcihic3NfZGVzYy1cXHUwMDNlYmNuX3Jzbl9pZSwgV0xBTl9FSURfUlNOKSkge1xcbitcXHRcXHRpbnQgaWVfbGVuID0gKGludClic3NfZGVzYy1cXHUwMDNlYmNuX3Jzbl9pZS1cXHUwMDNlaWVlZV9oZHIubGVuIC1cXG4rXFx0XFx0XFx0ICAgICBSU05fR1RLX09VSV9PRkZTRVQ7XFxuK1xcbiBcXHRcXHRpZWJvZHkgPSAoc3RydWN0IGllX2JvZHkgKilcXG4gXFx0XFx0XFx0ICgoKHU4ICopIGJzc19kZXNjLVxcdTAwM2ViY25fcnNuX2llLVxcdTAwM2VkYXRhKSArXFxuIFxcdFxcdFxcdCAgUlNOX0dUS19PVUlfT0ZGU0VUKTtcXG4gXFx0XFx0b3VpID0gXFx1MDAyNm13aWZpZXhfcnNuX291aVtjaXBoZXJdWzBdO1xcbi1cXHRcXHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWkpO1xcbitcXHRcXHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWksIGllX2xlbik7XFxuIFxcdFxcdGlmIChyZXQpXFxuIFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG5AQCAtMTY5LDEwICsxODEsMTQgQEAgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnQoc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsIHUzMiBjaXBoZXIpXFxuIFxcdHU4IHJldCA9IE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xcbiBcXG4gXFx0aWYgKGhhc192ZW5kb3JfaGRyKGJzc19kZXNjLVxcdTAwM2ViY25fd3BhX2llLCBXTEFOX0VJRF9WRU5ET1JfU1BFQ0lGSUMpKSB7XFxuK1xcdFxcdGludCBpZV9sZW4gPSAoaW50KWJzc19kZXNjLVxcdTAwM2ViY25fd3BhX2llLVxcdTAwM2V2ZW5kX2hkci5sZW4gLVxcbitcXHRcXHRcXHQgICAgIChpbnQpc2l6ZW9mKGJzc19kZXNjLVxcdTAwM2ViY25fd3BhX2llLVxcdTAwM2V2ZW5kX2hkci5vdWkpIC1cXG4rXFx0XFx0XFx0ICAgICBXUEFfR1RLX09VSV9PRkZTRVQ7XFxuK1xcbiBcXHRcXHRpZWJvZHkgPSAoc3RydWN0IGllX2JvZHkgKikoKHU4ICopYnNzX2Rlc2MtXFx1MDAzZWJjbl93cGFfaWUtXFx1MDAzZWRhdGEgK1xcbiBcXHRcXHRcXHRcXHRcXHQgICAgV1BBX0dUS19PVUlfT0ZGU0VUKTtcXG4gXFx0XFx0b3VpID0gXFx1MDAyNm13aWZpZXhfd3BhX291aVtjaXBoZXJdWzBdO1xcbi1cXHRcXHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWkpO1xcbitcXHRcXHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWksIGllX2xlbik7XFxuIFxcdFxcdGlmIChyZXQpXFxuIFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjc6MjEuMDkzOTA1NTEzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTgyNzc2Njc5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNV0lGSUVYXCIsXG4gICAgXCJNV0lGSUVYX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm13aWZpZXhfc2VhcmNoX291aV9pbl9pZVwiLFxuICAgIFwibXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRcIixcbiAgICBcIm13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50XCIsXG4gICAgXCJtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZVwiLFxuICAgIFwibXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwYXJzaW5nIFJTTi9XUEEgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgc2NhbiByZXN1bHRzIG9yIGFzc29jaWF0aW9uIHJlc3BvbnNlcyBjb250YWluaW5nIHRoZXNlIElFcy4gU2luY2UgYG13aWZpZXhgIGhhcyBhIFVTQiBkcml2ZXIgKGBtd2lmaWV4X3VzYmApLCBpdCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIHN1YnN5c3RlbSAoZS5nLiwgdXNpbmcgZHVtbXlfaGNkL3Jhdy1nYWRnZXQpIGJ5IGVtdWxhdGluZyBhIE1hcnZlbGwgV2ktRmkgVVNCIGRldmljZSBhbmQgc2VuZGluZyBtYWxpY2lvdXMgc2Nhbi9hc3NvY2lhdGlvbiByZXNwb25zZXMuIFRoZXJlZm9yZSwgdGhpcyBmdW5jdGlvbmFsIGNoYW5nZSBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYWNhYzFlZDIyYTlhNDI0ODlkNTkzZGY5MWU4MzRjNjM0ZjhjZTNmY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDE2IDAyOjI3OjE5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcbmluZGV4IDk3YzBlYzNiODIyZTcwLi4zM2VmOGFmMGE1ZTEzZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNcbkBAIC0xMDQsMTIgKzEwNCwyMSBAQCBoYXNfdmVuZG9yX2hkcihzdHJ1Y3QgaWVlZV90eXBlc192ZW5kb3Jfc3BlY2lmaWMgKmllLCB1OCBrZXkpXG4gICogYSBnaXZlbiBvdWkgaW4gUFRLLlxuICAqL1xuIHN0YXRpYyB1OFxuLW13aWZpZXhfc2VhcmNoX291aV9pbl9pZShzdHJ1Y3QgaWVfYm9keSAqaWVib2R5LCB1OCAqb3VpKVxuK213aWZpZXhfc2VhcmNoX291aV9pbl9pZShzdHJ1Y3QgaWVfYm9keSAqaWVib2R5LCB1OCAqb3VpLCBpbnQgaWVfbGVuKVxuIHtcbitcdGNvbnN0IHNpemVfdCBwdGtfYm9keV9vZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgaWVfYm9keSwgcHRrX2JvZHkpO1xuIFx0dTggY291bnQ7XG4gXG4rXHQvKiBOZWVkIGdycF9rZXlfb3VpWzRdICsgcHRrX2NudFsyXSBiZWZvcmUgcmVhZGluZyB0aGUgT1VJIGNvdW50LiAqL1xuK1x0aWYgKGllX2xlbiBcdTAwM2MgKGludClwdGtfYm9keV9vZmZzZXQpXG4rXHRcdHJldHVybiBNV0lGSUVYX09VSV9OT1RfUFJFU0VOVDtcbitcbiBcdGNvdW50ID0gaWVib2R5LVx1MDAzZXB0a19jbnRbMF07XG4gXG4rXHQvKiBSZWplY3QgYW4gT1VJIGNvdW50IHdob3NlIGxpc3Qgd291bGQgcnVuIHBhc3QgdGhlIGVsZW1lbnQuICovXG4rXHRpZiAocHRrX2JvZHlfb2Zmc2V0ICsgY291bnQgKiBzaXplb2YoaWVib2R5LVx1MDAzZXB0a19ib2R5KSBcdTAwM2UgKHNpemVfdClpZV9sZW4pXG4rXHRcdHJldHVybiBNV0lGSUVYX09VSV9OT1RfUFJFU0VOVDtcbitcbiBcdC8qIFRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIE9VSXMgZm9yIFBUSyBoZW5jZVxuIFx0ICAgMSkgVGFrZSB0aGUgbGVuZ3RoLlxuIFx0ICAgMikgQ2hlY2sgYWxsIHRoZSBPVUlzIGZvciBBRVMuXG5AQCAtMTQzLDExICsxNTIsMTQgQEAgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnQoc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsIHUzMiBjaXBoZXIpXG4gXHR1OCByZXQgPSBNV0lGSUVYX09VSV9OT1RfUFJFU0VOVDtcbiBcbiBcdGlmIChoYXNfaWVlZV9oZHIoYnNzX2Rlc2MtXHUwMDNlYmNuX3Jzbl9pZSwgV0xBTl9FSURfUlNOKSkge1xuK1x0XHRpbnQgaWVfbGVuID0gKGludClic3NfZGVzYy1cdTAwM2ViY25fcnNuX2llLVx1MDAzZWllZWVfaGRyLmxlbiAtXG4rXHRcdFx0ICAgICBSU05fR1RLX09VSV9PRkZTRVQ7XG4rXG4gXHRcdGllYm9keSA9IChzdHJ1Y3QgaWVfYm9keSAqKVxuIFx0XHRcdCAoKCh1OCAqKSBic3NfZGVzYy1cdTAwM2ViY25fcnNuX2llLVx1MDAzZWRhdGEpICtcbiBcdFx0XHQgIFJTTl9HVEtfT1VJX09GRlNFVCk7XG4gXHRcdG91aSA9IFx1MDAyNm13aWZpZXhfcnNuX291aVtjaXBoZXJdWzBdO1xuLVx0XHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWkpO1xuK1x0XHRyZXQgPSBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWUoaWVib2R5LCBvdWksIGllX2xlbik7XG4gXHRcdGlmIChyZXQpXG4gXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbkBAIC0xNjksMTAgKzE4MSwxNCBAQCBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudChzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZGVzYywgdTMyIGNpcGhlcilcbiBcdHU4IHJldCA9IE1XSUZJRVhfT1VJX05PVF9QUkVTRU5UO1xuIFxuIFx0aWYgKGhhc192ZW5kb3JfaGRyKGJzc19kZXNjLVx1MDAzZWJjbl93cGFfaWUsIFdMQU5fRUlEX1ZFTkRPUl9TUEVDSUZJQykpIHtcbitcdFx0aW50IGllX2xlbiA9IChpbnQpYnNzX2Rlc2MtXHUwMDNlYmNuX3dwYV9pZS1cdTAwM2V2ZW5kX2hkci5sZW4gLVxuK1x0XHRcdCAgICAgKGludClzaXplb2YoYnNzX2Rlc2MtXHUwMDNlYmNuX3dwYV9pZS1cdTAwM2V2ZW5kX2hkci5vdWkpIC1cbitcdFx0XHQgICAgIFdQQV9HVEtfT1VJX09GRlNFVDtcbitcbiBcdFx0aWVib2R5ID0gKHN0cnVjdCBpZV9ib2R5ICopKCh1OCAqKWJzc19kZXNjLVx1MDAzZWJjbl93cGFfaWUtXHUwMDNlZGF0YSArXG4gXHRcdFx0XHRcdCAgICBXUEFfR1RLX09VSV9PRkZTRVQpO1xuIFx0XHRvdWkgPSBcdTAwMjZtd2lmaWV4X3dwYV9vdWlbY2lwaGVyXVswXTtcbi1cdFx0cmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpKTtcbitcdFx0cmV0ID0gbXdpZmlleF9zZWFyY2hfb3VpX2luX2llKGllYm9keSwgb3VpLCBpZV9sZW4pO1xuIFx0XHRpZiAocmV0KVxuIFx0XHRcdHJldHVybiByZXQ7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyNzoyMS4wOTM5MTE5NjNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjQxODMyNDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpRmkgRHJpdmVyIFNlY3VyaXR5IFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG13aWZpZXhgIOKAkyBzcGVjaWZpY2FsbHksIGl0J3MgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNgLiBJdCBsb29rcyBsaWtlIHRoZXkndmUgYWRkZWQgc29tZSBib3VuZHMgY2hlY2tpbmcgd2l0aGluIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIHRvIHByZXZlbnQgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgcmVhZHMuIFNtYXJ0IG1vdmUsIHByb3RlY3RpbmcgYWdhaW5zdCBidWZmZXIgb3ZlcmZsb3dzIGlzIGFsd2F5cyBhIGdvb2QgdGhpbmcsIGVzcGVjaWFsbHkgaW4gbmV0d29ya2luZyBjb2RlLiBUaGUgcGF0Y2ggc2VlbXMgc3RyYWlnaHRmb3J3YXJkOiBgaWVfbGVuYCBpcyBiZWluZyBwYXNzZWQgZG93biBmcm9tIGBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudGAgYW5kIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAsIHdoaWNoIGlzIHRoZSBjb3JyZWN0IHdheSB0byBlbnN1cmUgd2UgZG9uJ3QgcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIElFIChJbmZvcm1hdGlvbiBFbGVtZW50KS5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBpcyB0aGlzIGV2ZW4gKnJlYWNoYWJsZSo/IElzIHRoaXMgYSBwYXJ0IG9mIHRoZSBjb2RlIHRoYXQncyBldmVuIHdvcnRoIHdvcnJ5aW5nIGFib3V0PyBUaGUgZHJpdmVyIGlzIGBtd2lmaWV4YCwgd2hpY2ggbWVhbnMgaXQncyBhIE1hcnZlbGwgd2lyZWxlc3MgZHJpdmVyLiBUeXBpY2FsbHksIGZ1enppbmcgd291bGQgYmUgdGhlIG1ldGhvZCB0byB0ZXN0IHRoZSBzZWN1cml0eSBvZiBhIGRyaXZlci4gSXMgaXQgZnV6emFibGU/IFdlIGhhdmUgYG1hYzgwMjExX2h3c2ltYCBmb3Igc29mdHdhcmUgZW11bGF0ZWQgd2lyZWxlc3MsIGJ1dCBgbXdpZmlleGAgaXMgaGFyZHdhcmUtc3BlY2lmaWMsIHdoaWNoIG1lYW5zIGZ1enppbmcgaXMgZ29pbmcgdG8gYmUgZGlmZmljdWx0LlxuXG5XYWl0LCBob2xkIG9uLi4uIGNhbiB3ZSBmdXp6IGBtd2lmaWV4YCBhdCBhbGw/IEhhcmR3YXJlIGRyaXZlcnMgYXJlbid0IHVzdWFsbHkgZWFzeSB0byBmdXp6IGRpcmVjdGx5LiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHlvdSBuZWVkIGFuIGludGVyZmFjZSB0byBpbnRlcmFjdCB3aXRoLCBsaWtlIFVTQiBvciBTRElPLCB0aGF0IHlvdSBjYW4gZW11bGF0ZSBvciBjb250cm9sLiBTbywgdGhlIGtleSBpcyB3aGV0aGVyIGBtd2lmaWV4YCBzdXBwb3J0cyBlaXRoZXIgb2YgdGhvc2UuIE5lZWQgdG8gY2hlY2sgaWYgaXQgaGFzIGEgVVNCIGludGVyZmFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY2NSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI3OjI2LjczNTc0NjM3MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODIyNTg5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3VzYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTM3PWNvbmZpZyBNV0lGSUVYX1VTQlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctNDUtXFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjQ2OlxcdCAgbXdpZmlleF91c2IuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvTWFrZWZpbGU9NDI9b2JqLSQoQ09ORklHX01XSUZJRVhfUENJRSkgKz0gbXdpZmlleF9wY2llLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvTWFrZWZpbGUtNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlOjQ0Om13aWZpZXhfdXNiLXkgKz0gdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX01XSUZJRVhfVVNCKSArPSBtd2lmaWV4X3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlLTQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2Z3Lmg9OTA9ZW51bSBLRVlfVFlQRV9JRCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZncuaC0xMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2Z3Lmg6MTIzOmVudW0gbXdpZmlleF91c2JfZXAge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oLTEyNC1cXHRNV0lGSUVYX1VTQl9FUF9DTURfRVZFTlQgPSAxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD01NT1lbnVtIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTIzLSAqIERvIG5vdCBjaGVjayBmb3IgZGF0YV9yZWNlaXZlZCBmb3IgVVNCLCBhcyBkYXRhX3JlY2VpdmVkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMjQ6ICogaXMgaGFuZGxlZCBpbiBtd2lmaWV4X3VzYl9yZWN2IGZvciBVU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyNS0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xMz1zdGF0aWMgY29uc3Qgc3RydWN0IG13aWZpZXhfaWZfb3BzIHVzYl9vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTpzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgbXdpZmlleF91c2JfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTYtXFx0LyogODc2NiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzozOTpNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgbXdpZmlleF91c2JfdGFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NDE6c3RhdGljIGludCBtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKHN0cnVjdCB1cmJfY29udGV4dCAqY3R4LCBpbnQgc2l6ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ1LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo0NjpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3JlY3Yoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDctXFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsIHU4IGVwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTUyOnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE4NzpcXHRcXHRzdGF0dXMgPSBtd2lmaWV4X3VzYl9yZWN2KGFkYXB0ZXIsIHNrYiwgY29udGV4dC1cXHUwMDNlZXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xODgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTk2LVxcdFxcdFxcdCAqIHVyYiBmb3IgY21kX2VwIHdpbGwgYmUgcmUtc3VibWl0dGVkIGluIGNhbGxiYWNrXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE5NzpcXHRcXHRcXHQgKiBtd2lmaWV4X3VzYl9yZWN2X2NvbXBsZXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE5OC1cXHRcXHRcXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yMzItXFx0aWYgKGNhcmQtXFx1MDAzZXJ4X2NtZF9lcCA9PSBjb250ZXh0LVxcdTAwM2VlcCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoyMzM6XFx0XFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihjb250ZXh0LCBzaXplKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjM0LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzNS1cXHRcXHRpZiAoYXRvbWljX3JlYWQoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJ4X3BlbmRpbmcpIFxcdTAwM2M9IEhJR0hfUlhfUEVORElORykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoyMzY6XFx0XFx0XFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihjb250ZXh0LCBzaXplKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjM3LVxcdFxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoyNDU6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfdHhfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yNDYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTI4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Mjg1OnN0YXRpYyBpbnQgbXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihzdHJ1Y3QgdXJiX2NvbnRleHQgKmN0eCwgaW50IHNpemUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTI4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzE1LVxcdFxcdFxcdFxcdCB1c2JfcmN2aW50cGlwZShjYXJkLVxcdTAwM2V1ZGV2LCBjdHgtXFx1MDAzZWVwKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MzE2OlxcdFxcdFxcdFxcdCBjdHgtXFx1MDAzZXNrYi1cXHUwMDNlZGF0YSwgc2l6ZSwgbXdpZmlleF91c2JfcnhfY29tcGxldGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMxNy1cXHRcXHRcXHRcXHQgKHZvaWQgKiljdHgsIGNhcmQtXFx1MDAzZXJ4X2NtZF9pbnRlcnZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzIwLVxcdFxcdFxcdFxcdCAgdXNiX3JjdmJ1bGtwaXBlKGNhcmQtXFx1MDAzZXVkZXYsIGN0eC1cXHUwMDNlZXApLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzozMjE6XFx0XFx0XFx0XFx0ICBjdHgtXFx1MDAzZXNrYi1cXHUwMDNlZGF0YSwgc2l6ZSwgbXdpZmlleF91c2JfcnhfY29tcGxldGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMyMi1cXHRcXHRcXHRcXHQgICh2b2lkICopY3R4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjM0NTpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9mcmVlKHN0cnVjdCB1c2JfY2FyZF9yZWMgKmNhcmQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzg0LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzozODU6c3RhdGljIGludCBtd2lmaWV4X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzg2LVxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTUzMi0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NTMzOnN0YXRpYyBpbnQgbXdpZmlleF91c2Jfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTUzNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNTk5LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2MDA6c3RhdGljIGludCBtd2lmaWV4X3VzYl9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYwMS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjI1LVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBNV0lGSUVYX1JYX0RBVEFfVVJCOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjYyNjpcXHRcXHRcXHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFxcdTAwMjZjYXJkLVxcdTAwM2VyeF9kYXRhX2xpc3RbaV0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYyNy1cXHRcXHRcXHRcXHRcXHRcXHQgIE1XSUZJRVhfUlhfREFUQV9CVUZfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjMxLVxcdFxcdGlmIChjYXJkLVxcdTAwM2VyeF9jbWQuc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2MzI6XFx0XFx0XFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcXHUwMDI2Y2FyZC1cXHUwMDNlcnhfY21kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MzMtXFx0XFx0XFx0XFx0XFx0XFx0ICBNV0lGSUVYX1JYX0NNRF9CVUZfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjQ0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2NDU6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY2OTpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9jb3JlZHVtcChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY3MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2Nzg6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG13aWZpZXhfdXNiX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Njc5OlxcdC5uYW1lID0gXFxcIm13aWZpZXhfdXNiXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjgwOlxcdC5wcm9iZSA9IG13aWZpZXhfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODE6XFx0LmRpc2Nvbm5lY3QgPSBtd2lmaWV4X3VzYl9kaXNjb25uZWN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODI6XFx0LmlkX3RhYmxlID0gbXdpZmlleF91c2JfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4MzpcXHQuc3VzcGVuZCA9IG13aWZpZXhfdXNiX3N1c3BlbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4NDpcXHQucmVzdW1lID0gbXdpZmlleF91c2JfcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02ODUtXFx0LnNvZnRfdW5iaW5kID0gMSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjg2LVxcdC5kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4NzpcXHRcXHQuY29yZWR1bXAgPSBtd2lmaWV4X3VzYl9jb3JlZHVtcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjg4LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9NzE0PXN0YXRpYyBpbnQgbXdpZmlleF9yZWFkX2RhdGFfc3luYyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLCB1OCAqcGJ1ZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy03MzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjczNDpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9wb3J0X3Jlc3luYyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy03MzUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTc3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Nzc2OnN0YXRpYyBib29sIG13aWZpZXhfdXNiX2lzX3BvcnRfcmVhZHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzc3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy03ODgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjc4OTpzdGF0aWMgaW5saW5lIHU4IG13aWZpZXhfdXNiX2RhdGFfc2VudChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy03OTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgwMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODAxOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgwMi1cXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCB1c2JfdHhfZGF0YV9wb3J0ICpwb3J0LCB1OCBlcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MTgtXFx0XFx0XFx0XFx0IHVzYl9zbmRpbnRwaXBlKGNhcmQtXFx1MDAzZXVkZXYsIGVwKSwgc2tiX3NlbmQtXFx1MDAzZWRhdGEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjgxOTpcXHRcXHRcXHRcXHQgc2tiX3NlbmQtXFx1MDAzZWxlbiwgbXdpZmlleF91c2JfdHhfY29tcGxldGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgyMC1cXHRcXHRcXHRcXHQgKHZvaWQgKiljb250ZXh0LCBjYXJkLVxcdTAwM2V0eF9jbWRfaW50ZXJ2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgyNC1cXHRcXHRcXHRcXHQgIHNrYl9zZW5kLVxcdTAwM2VkYXRhLCBza2Jfc2VuZC1cXHUwMDNlbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo4MjU6XFx0XFx0XFx0XFx0ICBtd2lmaWV4X3VzYl90eF9jb21wbGV0ZSwgKHZvaWQgKiljb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODI2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgzNy1cXHRcXHRwb3J0LVxcdTAwM2VibG9ja19zdGF0dXMgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo4Mzg6XFx0XFx0YWRhcHRlci1cXHUwMDNlZGF0YV9zZW50ID0gbXdpZmlleF91c2JfZGF0YV9zZW50KGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MzktXFx0XFx0cmV0ID0gLUVOT1NSO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTg2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODYyOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcHJlcGFyZV90eF9hZ2dyX3NrYihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04NjMtXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHVzYl90eF9kYXRhX3BvcnQgKnBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtOTQ2LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo5NDc6c3RhdGljIGludCBtd2lmaWV4X3VzYl9hZ2dyX3R4X2RhdGEoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwgdTggZXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTk0OC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDYyLVxcdGlmIChmX3NlbmRfYWdncl9idWYpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTA2MzpcXHRcXHRyZXQgPSBtd2lmaWV4X3VzYl9wcmVwYXJlX3R4X2FnZ3Jfc2tiKGFkYXB0ZXIsIHBvcnQsIFxcdTAwMjZza2Jfc2VuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwNjQtXFx0XFx0aWYgKCFyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA2NS1cXHRcXHRcXHRjb250ZXh0ID0gXFx1MDAyNnBvcnQtXFx1MDAzZXR4X2RhdGFfbGlzdFtwb3J0LVxcdTAwM2V0eF9kYXRhX2l4KytdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMDY2OlxcdFxcdFxcdHJldCA9IG13aWZpZXhfdXNiX2NvbnN0cnVjdF9zZW5kX3VyYihhZGFwdGVyLCBwb3J0LCBlcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA2Ny1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGNvbnRleHQsIHNrYl9zZW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDc5LVxcdFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWRhdGFfc2VudCA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEwODA6XFx0XFx0XFx0XFx0XFx0bXdpZmlleF91c2JfZGF0YV9zZW50KGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDgxLVxcdFxcdFxcdFxcdC8qIG5vIGF2YWlsYWJsZSB1cmIsIHBvc3Rjb3B5IHBhY2tldCovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA5NS1cXHRcXHRjb250ZXh0ID0gXFx1MDAyNnBvcnQtXFx1MDAzZXR4X2RhdGFfbGlzdFtwb3J0LVxcdTAwM2V0eF9kYXRhX2l4KytdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMDk2OlxcdFxcdHJldHVybiBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoYWRhcHRlciwgcG9ydCwgZXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwOTctXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgY29udGV4dCwgc2tiX3NlbmQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExMTk6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfdHhfYWdncl90bW8oc3RydWN0IHRpbWVyX2xpc3QgKnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExMjktXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwb3J0LVxcdTAwM2V0eF9hZ2dyX2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTMwOlxcdGVyciA9IG13aWZpZXhfdXNiX3ByZXBhcmVfdHhfYWdncl9za2IoYWRhcHRlciwgcG9ydCwgXFx1MDAyNnNrYl9zZW5kKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTEzMS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE0MC1cXHRcXHRhZGFwdGVyLVxcdTAwM2VkYXRhX3NlbnQgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTQxOlxcdFxcdFxcdG13aWZpZXhfdXNiX2RhdGFfc2VudChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE0Mi1cXHRcXHRlcnIgPSAtMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTQ5LVxcdHVyYl9jbnh0ID0gXFx1MDAyNnBvcnQtXFx1MDAzZXR4X2RhdGFfbGlzdFtwb3J0LVxcdTAwM2V0eF9kYXRhX2l4KytdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTUwOlxcdGVyciA9IG13aWZpZXhfdXNiX2NvbnN0cnVjdF9zZW5kX3VyYihhZGFwdGVyLCBwb3J0LCBwb3J0LVxcdTAwM2V0eF9kYXRhX2VwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTUxLVxcdFxcdFxcdFxcdFxcdCAgICAgdXJiX2NueHQsIHNrYl9zZW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTU5LS8qIFRoaXMgZnVuY3Rpb24gd3JpdGUgYSBjb21tYW5kL2RhdGEgcGFja2V0IHRvIGNhcmQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExNjA6c3RhdGljIGludCBtd2lmaWV4X3VzYl9ob3N0X3RvX2NhcmQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwgdTggZXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNjEtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE5Mi1cXHRcXHRcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VkYXRhX3NlbnQgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTkzOlxcdFxcdFxcdFxcdFxcdFxcdG13aWZpZXhfdXNiX2RhdGFfc2VudChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE5NC1cXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVCVVNZO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMDgtXFx0XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwb3J0LVxcdTAwM2V0eF9hZ2dyX2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjA5OlxcdFxcdFxcdHJldCA9ICBtd2lmaWV4X3VzYl9hZ2dyX3R4X2RhdGEoYWRhcHRlciwgZXAsIHNrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIxMC1cXHRcXHRcXHRcXHRcXHRcXHRcXHR0eF9wYXJhbSwgcG9ydCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTIxODpcXHRyZXR1cm4gbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKGFkYXB0ZXIsIHBvcnQsIGVwLCBjb250ZXh0LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjE5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTIyMTpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3R4X2luaXQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIyMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI1Ny1cXHRcXHR0aW1lcl9zZXR1cChcXHUwMDI2cG9ydC1cXHUwMDNldHhfYWdnci50aW1lcl9jbnh0LmhvbGRfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyNTg6XFx0XFx0XFx0ICAgIG13aWZpZXhfdXNiX3R4X2FnZ3JfdG1vLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI1OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTI2NDpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3J4X2luaXQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI2NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTI4MDpcXHRpZiAobXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcXHUwMDI2Y2FyZC1cXHUwMDNlcnhfY21kLCBNV0lGSUVYX1JYX0NNRF9CVUZfU0laRSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyODEtXFx0XFx0cmV0dXJuIC0xO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyODktXFx0XFx0XFx0cmV0dXJuIC0xO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjkwOlxcdFxcdGlmIChtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFxcdTAwMjZjYXJkLVxcdTAwM2VyeF9kYXRhX2xpc3RbaV0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyOTEtXFx0XFx0XFx0XFx0XFx0ICAgICAgTVdJRklFWF9SWF9EQVRBX0JVRl9TSVpFKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xMjk5PXN0YXRpYyBpbnQgbXdpZmlleF9yZWdpc3Rlcl9kZXYoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMzM4OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX2NsZWFudXBfdHhfYWdncihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xMzU5PXN0YXRpYyB2b2lkIG13aWZpZXhfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMzYzOlxcdG13aWZpZXhfdXNiX2ZyZWUoY2FyZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEzNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEzNjU6XFx0bXdpZmlleF91c2JfY2xlYW51cF90eF9hZ2dyKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzY2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTEzNzA9c3RhdGljIGludCBtd2lmaWV4X3Byb2dfZndfd19oZWxwZXIoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTA3OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfZG5sZF9mdyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTA4LVxcdFxcdFxcdHN0cnVjdCBtd2lmaWV4X2Z3X2ltYWdlICpmdylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTIzOlxcdHJldCA9IG13aWZpZXhfdXNiX3J4X2luaXQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MjQtXFx0aWYgKCFyZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1MjU6XFx0XFx0cmV0ID0gbXdpZmlleF91c2JfdHhfaW5pdChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTMwPXN0YXRpYyB2b2lkIG13aWZpZXhfc3VibWl0X3J4X3VyYihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLCB1OCBlcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTM2LVxcdCAgICAoIWF0b21pY19yZWFkKFxcdTAwMjZjYXJkLVxcdTAwM2VyeF9jbWRfdXJiX3BlbmRpbmcpKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTUzNzpcXHRcXHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFxcdTAwMjZjYXJkLVxcdTAwM2VyeF9jbWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MzgtXFx0XFx0XFx0XFx0XFx0ICBNV0lGSUVYX1JYX0NNRF9CVUZfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU0MzpzdGF0aWMgaW50IG13aWZpZXhfdXNiX2NtZF9ldmVudF9jb21wbGV0ZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTQ0LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTE1NTI9c3RhdGljIGludCBtd2lmaWV4X3BtX3dha2V1cF9jYXJkKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU2MzpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9zdWJtaXRfcmVtX3J4X3VyYnMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU2NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU3Mi1cXHRcXHRjdHggPSBcXHUwMDI2Y2FyZC1cXHUwMDNlcnhfZGF0YV9saXN0W2ldO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTczOlxcdFxcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoY3R4LCBNV0lGSUVYX1JYX0RBVEFfQlVGX1NJWkUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTc0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbXdpZmlleF9pZl9vcHMgdXNiX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTkwLVxcdC8qIFVTQiBzcGVjaWZpYyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTkxOlxcdC5kbmxkX2Z3ID1cXHRcXHRtd2lmaWV4X3VzYl9kbmxkX2Z3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTkyOlxcdC5jbWRyc3BfY29tcGxldGUgPVxcdG13aWZpZXhfdXNiX2NtZF9ldmVudF9jb21wbGV0ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5MzpcXHQuZXZlbnRfY29tcGxldGUgPVxcdG13aWZpZXhfdXNiX2NtZF9ldmVudF9jb21wbGV0ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5NDpcXHQuaG9zdF90b19jYXJkID1cXHRcXHRtd2lmaWV4X3VzYl9ob3N0X3RvX2NhcmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTU6XFx0LnN1Ym1pdF9yZW1fcnhfdXJicyA9XFx0bXdpZmlleF91c2Jfc3VibWl0X3JlbV9yeF91cmJzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTk2OlxcdC5tdWx0aV9wb3J0X3Jlc3luYyA9XFx0bXdpZmlleF91c2JfcG9ydF9yZXN5bmMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTc6XFx0LmlzX3BvcnRfcmVhZHkgPVxcdG13aWZpZXhfdXNiX2lzX3BvcnRfcmVhZHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1OTgtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTYwMDptb2R1bGVfdXNiX2RyaXZlcihtd2lmaWV4X3VzYl9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNjAxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyNzoyNi43OTM5Nzg5MzJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzcxNzAwMTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIGBtd2lmaWV4X3VzYmAgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbXdpZmlleGAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBtd2lmaWV4X3VzYmAgcGFydC4gVGhhdCdzIHRoZSBVU0IgaW50ZXJmYWNlLCByaWdodD8gQW5kIEkgcmVjYWxsIHRoYXQgVVNCIGRldmljZXMgYXJlIHJpcGUgZm9yIGZ1enppbmcgdXNpbmcgaW50ZXJmYWNlcyBsaWtlIGBkdW1teV9oY2RgIG9yIGByYXctZ2FkZ2V0YC4gQnV0IHdhaXQsIGBtd2lmaWV4X3VzYmAgaXMgYSBVU0IgKmhvc3QqIGRyaXZlci4gSXQgKmRyaXZlcyogYSBVU0IgZGV2aWNlLiBBaGEhIFN5emthbGxlciBoYXMgYSBVU0IgZnV6emVyIHNwZWNpZmljYWxseSBmb3IgZW11bGF0aW5nIFVTQiBkZXZpY2VzIHRvIHRhcmdldCBob3N0IGRyaXZlcnMuIFRoYXQgbWVhbnMgYG13aWZpZXhfdXNiYCAqaXMqIGZ1enphYmxlLCBnb29kLCB0aGF0J3Mgd2hhdCBJIHdhcyBob3BpbmcuXG5cbk5vdywgbGV0J3Mgc2VlIGlmIHRoZSBjb2RlIG1vZGlmaWNhdGlvbnMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmNgIGFyZSBhY3R1YWxseSByZWFjaGFibGUuIEkgcmVtZW1iZXIgdGhlIGNoYW5nZXMgZm9jdXNlZCBhcm91bmQgYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAuIFRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudGAgYW5kIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAuIENvbnNpZGVyaW5nIHRoZSBuYW1lcywgdGhvc2UgYXJlIHZlcnkgbGlrZWx5IGNhbGxlZCBkdXJpbmcgdGhlIHByb2Nlc3Npbmcgb2Ygc2NhbiByZXN1bHRzIG9yLCBwZXJoYXBzLCBiZWFjb25zLiBTbywgdGhlIG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hlcmUgYG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50YCBhbmQgYG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50YCBhcmUgaW52b2tlZC4gVGhhdCdsbCBiZSB0aGUga2V5IHRvIHRyaWdnZXJpbmcgdGhlIGNvZGUgaW4gcXVlc3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjc5LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI3OjMxLjU2NTY4MDM4OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzAwNzc3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTQ3PXN0YXRpYyB1OFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTQ4Om13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50KHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgY2lwaGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MzQ0PW13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTQwOC1cXHRcXHRcXHQgICAgIGJzc19kZXNjLVxcdTAwM2ViY25faHRfY2FwKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6NDA5OlxcdFxcdFxcdCAgICAhbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnQoYnNzX2Rlc2MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy00MTAtXFx0XFx0XFx0XFx0XFx0XFx0XFx0Q0lQSEVSX1NVSVRFX0NDTVApKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy00MTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzo0MTI6XFx0XFx0XFx0XFx0aWYgKG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy00MTMtXFx0XFx0XFx0XFx0XFx0XFx0KGJzc19kZXNjLCBDSVBIRVJfU1VJVEVfVEtJUCkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjc6MzEuNjI4NjkzNDI4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE4NjE0ODEwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkLCBhaW1lZCBhdCBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgV1BBIExhbmRzY2FwZSoqXG5cbkFscmlnaHQsIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBjb2RlLCBhbmQgSSBzZWUgdGhpcyBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgIGZ1bmN0aW9uLiBIbW0sIGxldCBtZSB0aGluay4uLiB3aHkgYXJlIHdlIGNoZWNraW5nIGZvciB0aGUgV1BBIE9VST8gV2hhdCdzIHRoZSBjb250ZXh0IGhlcmU/IEFyZSB3ZSB2YWxpZGF0aW5nIGEgcmVjZWl2ZWQgZnJhbWUsIHBlcmhhcHM/IE9yIGFyZSB3ZSBpbiB0aGUgcHJvY2VzcyBvZiBnZW5lcmF0aW5nIGFuIGFzc29jaWF0aW9uIHJlcXVlc3Qgb3IgcmVzcG9uc2U/IEtub3dpbmcgdGhhdCB3aWxsIGdyZWF0bHkgaW5mb3JtIG15IGludGVycHJldGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24ncyBwdXJwb3NlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIHBhc3NlZCB0byBpdC4gSXMgaXQgb3BlcmF0aW5nIG9uIGEgcmF3IGZyYW1lIGJ1ZmZlciwgYSBwYXJzZWQgSUUgKEluZm9ybWF0aW9uIEVsZW1lbnQpIGxpc3QsIG9yIHNvbWUgb3RoZXIgcmVwcmVzZW50YXRpb24/IEFyZSB3ZSBjb25jZXJuZWQgd2l0aCBhIHNwZWNpZmljIFdQQSB2ZXJzaW9uLCBsaWtlIFdQQTEgb3IgV1BBMj8gVGhlIGRpZmZlcmVuY2VzIGluIGhvdyB0aGUgT1VJIGlzIGZvcm1hdHRlZCBtaWdodCBjaGFuZ2UgbXkgdW5kZXJzdGFuZGluZy4gVGhpcyBpcyBsaWtlbHkgdmVyeSByZWxldmFudCB0byBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyBhbmQgbGlrZWx5IFdQQSBtaWdyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjM2LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjc6MzUuODE0ODQzMTMyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NTIxNjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNzY9c3RhdGljIHU4XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxNzc6bXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnQoc3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MsIHUzMiBjaXBoZXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0zNDQ9bXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMzg5LVxcdFxcdFxcdCAgICAgYnNzX2Rlc2MtXFx1MDAzZWJjbl9odF9jYXApIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzozOTA6XFx0XFx0XFx0ICAgICFtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudChic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTM5MS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgQ0lQSEVSX1NVSVRFX0NDTVApKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0zOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzozOTM6XFx0XFx0XFx0XFx0aWYgKG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0zOTQtXFx0XFx0XFx0XFx0XFx0XFx0KGJzc19kZXNjLCBDSVBIRVJfU1VJVEVfVEtJUCkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjc6MzUuODkwMzY4NDUyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA4NTc5Nzk3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nLCBhbmQgdGFpbG9yZWQgZm9yIGEgZmVsbG93IGV4cGVydDpcblxuKipUcmFjaW5nIHRoZSBEZXBlbmRlbmN5OiBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZSoqXG5cblJpZ2h0LCBzbyBJIHNlZSB0d28gZGlzdGluY3QgY2FsbHMgb3JpZ2luYXRpbmcgZnJvbSBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgLiBUaGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWc6IHdoYXQgaXMgdGhlIGNvbnRleHQgaGVyZT8gVW5kZXJzdGFuZGluZyB0aGUgZG93bnN0cmVhbSB1c2FnZSBpcyBjcml0aWNhbC4gQnV0IG1vcmUgaW1wb3J0YW50bHksIEkgbmVlZCB0byBrbm93IHRoZSBvcmlnaW4uIFdoZXJlIGlzIHRoYXQgZnVuY3Rpb24gZXZlbiAqY2FsbGVkKiBmcm9tPyBLbm93aW5nIGl0cyBjYWxsZXJzIHdpbGwgZ2l2ZSBtZSB0aGUgZGlyZWN0aW9uIEkgbmVlZC4gVGhpcyBpcyBhIGNvbW1vbiBkZWJ1Z2dpbmcgdGVjaG5pcXVlIHRvIHVuZGVyc3RhbmQgY29udHJvbCBhbmQgaW5mb3JtYXRpb24gZmxvdy4gSSdtIGdvaW5nIHRvIHN0YXJ0IHRyYWNpbmcgYmFjaywgbG9va2luZyBmb3IgdGhlIGZ1bmN0aW9ucyBvciBtb2R1bGVzIHRoYXQgZGVwZW5kIG9uIGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAsIHByb2JhYmx5IHVzaW5nIGEgY3Jvc3MtcmVmZXJlbmNpbmcgdG9vbC4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgYXJjaGl0ZWN0dXJlIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjczLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjc6MzguOTc2MTY4NzgyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTE0NDE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MzQzPXN0YXRpYyBzMzJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjM0NDptd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMzQ1LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBtd2lmaWV4X2Jzc2Rlc2NyaXB0b3IgKmJzc19kZXNjLCB1MzIgbW9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MTYxNj1pbnQgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTYyOC1cXHRcXHRjYXNlIE5MODAyMTFfSUZUWVBFX0FESE9DOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTYyOTpcXHRcXHRcXHRyZXQgPSBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZShwcml2LCBic3NfZGVzYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2MzAtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHByaXYtXFx1MDAzZWJzc19tb2RlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjc6MzkuMDQ3MzI0NTQyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzE3MTE2NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGl2aW5nIERlZXBlciBpbnRvIE5ldHdvcmsgQ29tcGF0aWJpbGl0eSoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IHRoZSBjb3JlIG9mIHdpcmVsZXNzIG5ldHdvcmtpbmcgaGVyZS4gV2UndmUgZ290IHRoaXMgYXJjaGl0ZWN0dXJlLCBhbmQgd2UncmUgYWRkcmVzc2luZyB0aGUgcG90ZW50aWFsIGZvciBoaWNjdXBzLiBXaGF0J3MgdGhlIHNwZWNpZmljIGxvZ2ljIGZsb3cgYXJvdW5kIHRoZSBmdW5jdGlvbiBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgb3ZlcmFsbCBwcm9jZXNzLiBJcyBpdCBjaGVja2luZyBmb3IgcHJvdG9jb2wgdmVyc2lvbnMsIHNlY3VyaXR5IHByb3RvY29scywgc3VwcG9ydGVkIGZyZXF1ZW5jaWVzLCBvciBhbGwgb2YgdGhlIGFib3ZlPyBBbmQgd2hhdCBhcmUgdGhlIHNwZWNpZmljIGNyaXRlcmlhIGl0J3MgY29tcGFyaW5nIGFnYWluc3Q/IElzIGl0IGp1c3QgdmVyaWZ5aW5nIHRoZSBiZWFjb24gaW5mb3JtYXRpb24/IERvZXMgaXQgZGVsdmUgaW50byBwcm9iaW5nIHJlc3BvbnNlcywgdG9vPyBJJ20gd29uZGVyaW5nIGlmIHRoaXMgZnVuY3Rpb24gaGFuZGxlcyBzb21lIG9mIHRoZSBtb3JlIGNvbXBsZXggZWRnZSBjYXNlcyB0aGF0IEkndmUgYmVlbiB3cmVzdGxpbmcgd2l0aCByZWNlbnRseS4gSG93IGNvbXByZWhlbnNpdmUgaXMgdGhlIGNoZWNrPyBEb2VzIGl0IGZsYWcgZGV2aWF0aW9ucyBvciBpcyBpdCBtb3JlIG9mIGEgZ28vbm8tZ28/IE1vcmUgdG8gdGhlIHBvaW50LCBob3cgZG9lcyB0aGUgZnVuY3Rpb24ncyBvdXRwdXQgYWN0dWFsbHkgYWZmZWN0IHRoZSBhc3NvY2lhdGlvbiBwcm9jZXNzPyBEb2VzIGl0IGp1c3QgbG9nIGFuIGVycm9yLCBvciBkb2VzIGl0IGFjdGl2ZWx5IHByZXZlbnQgYSBjb25uZWN0aW9uPyBJIG5lZWQgdG8gY2xhcmlmeSB0aGF0LiBJJ20ga2VlbiB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGluIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgdGhlIGRyaXZlciBhbmQgd2hldGhlciBpdCBpcyBiZWluZyB1c2VkIGluIHRoZSBiZXN0IHdheSBmb3IgdGhlIGN1cnJlbnQgZ2VuZXJhdGlvbiBvZiBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI4MDEsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyNzo0Mi4zNzkwMzc4OTNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MjUxMzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNTQxPWludCBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTQyLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbXdpZmlleF9ic3NkZXNjcmlwdG9yICpic3NfZW50cnkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTU0MzppbnQgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1NDQtXFx0XFx0XFx0XFx0XFx0c3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNTkxPWludCBtd2lmaWV4X2NtZF84MDJfMTFfc2NhbihzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqY21kLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNjE1LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTYxNjppbnQgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jLTE2MTctXFx0XFx0XFx0XFx0XFx0c3RydWN0IG13aWZpZXhfYnNzZGVzY3JpcHRvciAqYnNzX2Rlc2MpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jPTE3MDM9c3RhdGljIGludCBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXMoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTcxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjE3MTg6XFx0cmV0ID0gbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkocHJpdiwgYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTcxOS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTMxOD1pbnQgbXdpZmlleF9ic3Nfc3RhcnQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgc3RydWN0IGNmZzgwMjExX2JzcyAqYnNzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTM2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MzYxOlxcdFxcdHJldCA9IG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5KHByaXYsIGJzc19kZXNjKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMzYyLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtNDA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzo0MDk6XFx0XFx0cmV0ID0gbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHkocHJpdiwgYnNzX2Rlc2MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy00MTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI3OjQyLjQzODI5NTIzM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjE4MjY4NTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIGFuZCBGdXp6aW5nIGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGlzIGZ1bmN0aW9uIGlzIHRyaWdnZXJlZCB3aGVuIHdlJ3JlIGVpdGhlciBqb2luaW5nIGEgQlNTIG9yIHVwZGF0aW5nIGN1cnJlbnQgQlNTIHBhcmFtZXRlcnMuIE5vdywgaG93IGNhbiB3ZSBhY3R1YWxseSAqZ2V0KiB0aGVyZT8gQWhhISBJIHNlZSBpdCdzIHJlYWNoYWJsZSBpZiB3ZSBjYW4gc29tZWhvdyBlbXVsYXRlIHRoZSBtd2lmaWV4IFVTQiBkZXZpY2UgYW5kIGZlZWQgaXQgZWl0aGVyIHNjYW4gcmVzdWx0cyBvciBiZWFjb25zLlxuXG5UaGUgbGlnaHRidWxiIGdvZXMgb247IHNwZWNpZmljYWxseSwgYG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50YCBhbmQgYG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50YCBwYXJzZSBgYnNzX2Rlc2MtXHUwMDNlYmNuX3Jzbl9pZWAgYW5kIGBic3NfZGVzYy1cdTAwM2ViY25fd3BhX2llYC4gVGhvc2UsIGluIHR1cm4sIGFyZSBmaWxsZWQgd2l0aCBkYXRhIGZyb20gc2NhbiByZXN1bHRzIG9yIGJlYWNvbnMgY29taW5nICpmcm9tKiB0aGUgZGV2aWNlIGl0c2VsZi5cblxuU2luY2Ugc3l6a2FsbGVyIGNhbiBhbHJlYWR5IGZ1enogVVNCIGRldmljZXMsIHdlIGNhbiBsZXZlcmFnZSB0aGF0IHRvIHByb3ZpZGUgY29tcGxldGVseSBhcmJpdHJhcnkgZGF0YSB0aHJvdWdoIHRoZSBVU0IgZW5kcG9pbnRzLiBUaGUgZHJpdmVyIHdpbGwgaGFwcGlseSBpbnRlcnByZXQgdGhpcyBhcyBsZWdpdGltYXRlIHNjYW4gcmVzdWx0cyBvciBiZWFjb25zLiBUaGlzIG1lYW5zIHRoYXQgd2Ugc2hvdWxkIGRlZmluaXRlbHkgYmUgYWJsZSB0byB0cmlnZ2VyIHRoaXMgZnVuY3Rpb24sIGFuZCB0aGVyZWZvcmUsIGl0J3MgYWJzb2x1dGVseSBzb21ldGhpbmcgd2Ugc2hvdWxkIHByaW9yaXRpemUgZm9yIGZ1enppbmcuXG5cbkJlZm9yZSBtb3ZpbmcgZm9yd2FyZCwgbGV0IG1lIGp1c3QgZG91YmxlIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoZSBkcml2ZXIgaXMgYE1XSUZJRVhgIGFuZCwgc3BlY2lmaWNhbGx5LCBgTVdJRklFWF9VU0JgLCB0aGF0J3MgY29ycmVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM4NTUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjc6NDcuMDU2NTcwNDk5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzU1OTgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVdJRklFWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyNzo0Ny4xMTQxMzczMzlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEzMTkxNTM3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciB0aGUgTVdJRklFWCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyB0byBnZXQgc3l6a2FsbGVyIHdvcmtpbmcgb24gdGhlIGBNV0lGSUVYYCBkcml2ZXIsIGFuZCBpdCBsb29rcyBsaWtlIEkgbmVlZCB0byBuYXJyb3cgZG93biBteSB0YXJnZXQuIFRoZXJlJ3MgYSBmZXcgb3B0aW9uczogYE1XSUZJRVhgLCBgTVdJRklFWF9VU0JgLCBgTVdJRklFWF9TRElPYCwgYW5kIGBNV0lGSUVYX1BDSUVgLiBCdXQgdGhpbmtpbmcgYWJvdXQgaG93IHN5emthbGxlciB3b3JrcywgZnV6emluZyBVU0IgaXMgdXN1YWxseSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCByaWdodD8gU28sIGBNV0lGSUVYX1VTQmAgc2VlbXMgbGlrZSB0aGUgbW9zdCBwcm9taXNpbmcgcGF0aC5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSB2ZXJpZnkgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBwb3RlbnRpYWwgY29uZmlndXJhdGlvbnMgb3IgcmVsYXRlZCBtb2R1bGVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnkgYW5nbGVzIGhlcmUuXG5cbkFoLCBJIGZvdW5kIHRoZSB0YXJnZXQgZmlsZS4gTG9va3MgbGlrZSB0aGUgcHJpbWFyeSBhcmVhIG9mIGludGVyZXN0IGlzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jYC4gT2theSwgdGhhdCBjb25maXJtcyBpdDogaXQncyBwYXJ0IG9mIHRoZSBgbXdpZmlleGAgbW9kdWxlLiBHb29kLCBJIGhhdmUgYSBjbGVhciBkaXJlY3Rpb24gbm93LiBUaGlzIGdpdmVzIG1lIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIG15IGZ1enppbmcgZWZmb3J0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4MDYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjc6NTEuMjQ2MDU0OTkzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDM5NDE2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY2FuLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvTWFrZWZpbGU9MTc9bXdpZmlleC15ICs9IDExbl9yeHJlb3JkZXIub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9NYWtlZmlsZToxODptd2lmaWV4LXkgKz0gc2Nhbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlLTE5LW13aWZpZXgteSArPSBqb2luLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jPTI2NTk9bXdpZmlleF9jZmc4MDIxMV9zY2FuKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy0yNjcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjI2NzM6XFx0LyogQmxvY2sgc2NhbiByZXF1ZXN0IGlmIHNjYW4gb3BlcmF0aW9uIG9yIHNjYW4gY2xlYW51cCB3aGVuIGludGVyZmFjZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jLTI2NzQtXFx0ICogaXMgZGlzYWJsZWQgaXMgaW4gcHJvY2Vzc1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz03NDM9bXdpZmlleF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYy03NTItXFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgSU5GTyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jOjc1MzpcXHRcXHRcXHQgICAgXFxcImFib3J0aW5nIHNjYW4gb24gbmRvX3N0b3BcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNzU0LVxcdFxcdGNmZzgwMjExX3NjYW5fZG9uZShwcml2LVxcdTAwM2VzY2FuX3JlcXVlc3QsIFxcdTAwMjZpbmZvKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNzYwLVxcdFxcdG13aWZpZXhfZGJnKHByaXYtXFx1MDAzZWFkYXB0ZXIsIElORk8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYzo3NjE6XFx0XFx0XFx0ICAgIFxcXCJhYm9ydGluZyBiZ3NjYW4gb24gbmRvX3N0b3BcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtNzYyLVxcdFxcdG13aWZpZXhfc3RvcF9iZ19zY2FuKHByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xNzQzPW13aWZpZXhfcGFyc2Vfc2luZ2xlX3Jlc3BvbnNlX2J1ZihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCB1OCAqKmJzc19pbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0xNzg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MTc4OTpcXHQvKiBGaXJzdCA1IGZpZWxkcyBhcmUgYnNzaWQsIFJTU0koZm9yIGxlZ2FjeSBzY2FuIG9ubHkpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTc5MC1cXHQgKiB0aW1lIHN0YW1wLCBiZWFjb24gaW50ZXJ2YWwsIGFuZCBjYXBhYmlsaXR5IGluZm9ybWF0aW9uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI3OjUxLjMwMDQ1NDM4M1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDc4OTA1OTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBjb25maWd1cmF0aW9ucy4gVGhvc2Ugc2VlbSBsaWtlIHRoZSByZWxldmFudCBlbnRyeSBwb2ludHMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9ucyBhcmUgbW9zdCBsaWtlbHkgdG8geWllbGQgaW50ZXJlc3RpbmcgcmVzdWx0cyB3aGVuIGZ1enplZC5cblxuUmlnaHQsIHRoZSBrZXkgbW9kaWZpZWQgZnVuY3Rpb24gaXMgYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAuIExldCdzIHNlZSBob3cgaXQncyB1c2VkLiBJdCdzIGNhbGxlZCBieSBgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRgIGFuZCBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgLCB3aGljaCBhcmUsIGluIHR1cm4sIGNhbGxlZCBieSBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgLiBTbywgdGhlIGF0dGFjayBzdXJmYWNlIGlzIGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAsIHdoaWNoIGlzIHRoZSBtb3N0IGNyaXRpY2FsIGZ1bmN0aW9uLiBJIGFsc28gbmVlZCB0byBmb2N1cyBvbiBgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRgIGFuZCBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgLCBhbmQgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIG9yaWdpbmFsIHZ1bG5lcmFiaWxpdHksIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgLiBXYWl0LCB0aGF0J3MgcmlnaHQsIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIGlzIHN0YXRpYy4gTm8gcHJvYmxlbSwgdGhhdCdzIGZpbmUuIFNvIHRoZSBmaW5hbCBsaXN0IG9mIGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBpcyBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCwgYG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50YCwgYW5kIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAuXG5cbkp1c3QgdG8gYmUgY2VydGFpbiwgbGV0IG1lIHZlcmlmeSB0aGF0IGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIGlzIGluZGVlZCBzdGF0aWMuIEFoLCB5ZXMsIGl0IGlzLCBkZWNsYXJlZCBhcyBgc3RhdGljIHU4IG13aWZpZXhfc2VhcmNoX291aV9pbl9pZShzdHJ1Y3QgaWVfYm9keSAqaWVib2R5LCB1OCAqb3VpLCBpbnQgaWVfbGVuKWAuXG5cbk5vdywgbGV0J3Mgc2VlIGlmIEkgbmVlZCB0byB0YWtlIG90aGVyIGNvbmZpZ3VyYXRpb25zIGludG8gYWNjb3VudC4gQWgsIGBNV0lGSUVYYCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBXTEFOYC4gSSBjYW4ganVzdCBsaXN0IGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBhcyB0aGUgb3ZlcmFsbCBjb25maWd1cmF0aW9ucyB0aGF0IEkgbmVlZCB0byBiZSBjb25jZXJuZWQgd2l0aC5cblxuSSBzaG91bGQgZG91YmxlLWNoZWNrIHJlYWNoYWJpbGl0eSBmcm9tIHRoZSBVU0IgcGF0aC4gSSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIGlzIGFsc28gcmVhY2hhYmxlIGZyb20gdGhlIFVTQiBwYXRoLiBUaGUgVVNCIGRyaXZlciByZWNlaXZlcyBkYXRhIHRocm91Z2ggYG13aWZpZXhfdXNiX3JlY3ZgLCB3aGljaCB0aGVuIGNhbGxzIGBtd2lmaWV4X2hhbmRsZV9yeF9wYWNrZXRgLCBvciBzaW1pbGFyLiBUaGF0IG1lYW5zIEkgY2FuIHJlYWNoIHRob3NlIGZ1bmN0aW9ucyB0aHJvdWdoIHRoZSBVU0IgZW50cnlwb2ludC4gR29vZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU4NTcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjc6NTcuNzc5MzYyNTU0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjA3MDI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3VzYl9yZWN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD01NT1lbnVtIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTIzLSAqIERvIG5vdCBjaGVjayBmb3IgZGF0YV9yZWNlaXZlZCBmb3IgVVNCLCBhcyBkYXRhX3JlY2VpdmVkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMjQ6ICogaXMgaGFuZGxlZCBpbiBtd2lmaWV4X3VzYl9yZWN2IGZvciBVU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyNS0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz00MT1zdGF0aWMgaW50IG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoc3RydWN0IHVyYl9jb250ZXh0ICpjdHgsIGludCBzaXplKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00NS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NDY6c3RhdGljIGludCBtd2lmaWV4X3VzYl9yZWN2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ3LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBlcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTI9c3RhdGljIHZvaWQgbXdpZmlleF91c2JfcnhfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE4Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTg3OlxcdFxcdHN0YXR1cyA9IG13aWZpZXhfdXNiX3JlY3YoYWRhcHRlciwgc2tiLCBjb250ZXh0LVxcdTAwM2VlcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xOTYtXFx0XFx0XFx0ICogdXJiIGZvciBjbWRfZXAgd2lsbCBiZSByZS1zdWJtaXR0ZWQgaW4gY2FsbGJhY2tcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTk3OlxcdFxcdFxcdCAqIG13aWZpZXhfdXNiX3JlY3ZfY29tcGxldGVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTk4LVxcdFxcdFxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyNzo1Ny44MzU0MzkzNTRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE3NTI4MTY3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBVU0IgUmVjZWl2ZSBQYXRoKipcblxuQWxyaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBVU0IgcmVjZWl2ZSBwYXRoIGZvciB0aGlzIE1hcnZlbGwgV2ktRmkgZHJpdmVyLiBUaGUgYG13aWZpZXhfdXNiX3JlY3ZgIGZ1bmN0aW9uIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIGlzbid0IGl0PyBUaGF0J3MgdGhlIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBpbmNvbWluZyBkYXRhIHBhY2tldHMgZnJvbSB0aGUgVVNCIGludGVyZmFjZS4gVGhlIGNvcmUgcXVlc3Rpb24gaXM6IHdoYXQncyB0aGUgaW1tZWRpYXRlIG5leHQgc3RlcCBhZnRlciB0aGUgYHNrYmAgaXMgcmVjZWl2ZWQ/IElzIHRoZSBkYXRhIGhhbmRsZWQgZGlyZWN0bHkgYnkgYG13aWZpZXhfaGFuZGxlX3J4X3BhY2tldGAgb3IgYG13aWZpZXhfcHJvY2Vzc19yeF9wYWNrZXRgPyBLbm93aW5nIHRoYXQgcXVpY2tseSB0ZWxscyBtZSB3aGV0aGVyIGl0J3MgYW4gaW1tZWRpYXRlLCBoaWdoLXByaW9yaXR5IHByb2Nlc3Npbmcgc2NlbmFyaW8gdmVyc3VzIHNvbWV0aGluZyB0aGF0IG1pZ2h0IGJlIHB1c2hlZCBpbnRvIGEgdGFza2xldCBvciB3b3JrIHF1ZXVlLiBJdCdzIGEga2V5IGRpc3RpbmN0aW9uIHdoZW4gdGhpbmtpbmcgYWJvdXQgbGF0ZW5jeSBhbmQgb3ZlcmFsbCBzeXN0ZW0gcmVzcG9uc2l2ZW5lc3MuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgZXhhY3QgY29udHJvbCBmbG93IGhlcmUgdG8gdW5kZXJzdGFuZCBob3cgaW50ZXJydXB0cywgd29ya3F1ZXVlcywgYW5kIGRlZmVycmluZyBoYXBwZW4gaW4gdGhpcyBkcml2ZXIuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzMzNSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI4OjAxLjAxMDcyMzY3NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUzOTIyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF91c2JfcmVjdlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTQxPXN0YXRpYyBpbnQgbXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihzdHJ1Y3QgdXJiX2NvbnRleHQgKmN0eCwgaW50IHNpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ1LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo0NjpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3JlY3Yoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDctXFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsIHU4IGVwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTE1Mj1zdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9yeF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxODc6XFx0XFx0c3RhdHVzID0gbXdpZmlleF91c2JfcmVjdihhZGFwdGVyLCBza2IsIGNvbnRleHQtXFx1MDAzZWVwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE5Ni1cXHRcXHRcXHQgKiB1cmIgZm9yIGNtZF9lcCB3aWxsIGJlIHJlLXN1Ym1pdHRlZCBpbiBjYWxsYmFja1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxOTc6XFx0XFx0XFx0ICogbXdpZmlleF91c2JfcmVjdl9jb21wbGV0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xOTgtXFx0XFx0XFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI4OjAxLjA2NjEyNDI1NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzAwODUwODE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgbXdpZmlleF91c2JfcmVjdmAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlLiBJJ20gYXNzdW1pbmcgaXQgaGFuZGxlcyByZWNlaXZpbmcgZGF0YSBvdmVyIFVTQiB3aXRoaW4gdGhlIE1hcnZlbGwgV2ktRmkgZHJpdmVyLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gSXQncyBsaWtlbHkgYSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlIGZvciBtYW5hZ2luZyBpbmNvbWluZyBwYWNrZXRzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZW50cnkgcG9pbnQgb2YgdGhlIFVTQiBkYXRhIHBhdGgsIHRoZSB0eXBpY2FsIGZsb3cgaXQncyBpbnZvbHZlZCBpbiwgYW5kIHdoYXQgaGFwcGVucyBpbiB0aGUgZXZlbnQgb2YgZXJyb3JzLiBJJ2xsIHByb2JhYmx5IHN0YXJ0IGJ5IGxvb2tpbmcgYXQgaXRzIGltbWVkaWF0ZSBjYWxscyBhbmQgY2FsbGVlcyB0byBnZXQgYSBmZWVsIGZvciBob3cgaXQgZml0cyBpbnRvIHRoZSBvdmVyYWxsIGRyaXZlciBzdHJ1Y3R1cmUuIFVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgc3RydWN0dXJlcyBpdCBtYW5pcHVsYXRlcywgZXNwZWNpYWxseSB0aG9zZSByZWxhdGVkIHRvIFVTQiBlbmRwb2ludHMgYW5kIHBhY2tldCBidWZmZXJzLCB3aWxsIGJlIGtleS4gSSBuZWVkIHRvIGdldCB0aGUgYmlnIHBpY3R1cmUgb2YgaXRzIGNvbnRleHQgdG8gcHJvcGVybHkgZ3Jhc3AgaXRzIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODAyMywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI4OjAzLjc2Njk3NzY2NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDcwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ2LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA0NjpcXHRzdGF0aWMgaW50IG13aWZpZXhfdXNiX3JlY3Yoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4gIDQ3OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBlcClcXG4gIDQ4OlxcdHtcXG4gIDQ5OlxcdFxcdHUzMiByZWN2X3R5cGU7XFxuICA1MDpcXHRcXHRfX2xlMzIgdG1wO1xcbiAgNTE6XFx0XFx0aW50IHJldDtcXG4gIDUyOlxcdFxcbiAgNTM6XFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZWhzX2FjdGl2YXRlZClcXG4gIDU0OlxcdFxcdFxcdG13aWZpZXhfcHJvY2Vzc19oc19jb25maWcoYWRhcHRlcik7XFxuICA1NTpcXHRcXG4gIDU2OlxcdFxcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIElOVEZfSEVBREVSX0xFTikge1xcbiAgNTc6XFx0XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXFxuICA1ODpcXHRcXHRcXHRcXHQgICAgXFxcIiVzOiBpbnZhbGlkIHNrYi1cXHUwMDNlbGVuXFxcXG5cXFwiLCBfX2Z1bmNfXyk7XFxuICA1OTpcXHRcXHRcXHRyZXR1cm4gLTE7XFxuICA2MDpcXHRcXHR9XFxuICA2MTpcXHRcXG4gIDYyOlxcdFxcdHN3aXRjaCAoZXApIHtcXG4gIDYzOlxcdFxcdGNhc2UgTVdJRklFWF9VU0JfRVBfQ01EX0VWRU5UOlxcbiAgNjQ6XFx0XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVZFTlQsXFxuICA2NTpcXHRcXHRcXHRcXHQgICAgXFxcIiVzOiBFUF9DTURfRVZFTlRcXFxcblxcXCIsIF9fZnVuY19fKTtcXG4gIDY2OlxcdFxcdFxcdHNrYl9jb3B5X2Zyb21fbGluZWFyX2RhdGEoc2tiLCBcXHUwMDI2dG1wLCBJTlRGX0hFQURFUl9MRU4pO1xcbiAgNjc6XFx0XFx0XFx0cmVjdl90eXBlID0gbGUzMl90b19jcHUodG1wKTtcXG4gIDY4OlxcdFxcdFxcdHNrYl9wdWxsKHNrYiwgSU5URl9IRUFERVJfTEVOKTtcXG4gIDY5OlxcdFxcbiAgNzA6XFx0XFx0XFx0c3dpdGNoIChyZWN2X3R5cGUpIHtcXG4gIDcxOlxcdFxcdFxcdGNhc2UgTVdJRklFWF9VU0JfVFlQRV9DTUQ6XFxuICA3MjpcXHRcXHRcXHRcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzZSBNV0lGSUVYX1NJWkVfT0ZfQ01EX0JVRkZFUikge1xcbiAgNzM6XFx0XFx0XFx0XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXFxuICA3NDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgXFxcIkNNRDogc2tiLVxcdTAwM2VsZW4gdG9vIGxhcmdlXFxcXG5cXFwiKTtcXG4gIDc1OlxcdFxcdFxcdFxcdFxcdHJldCA9IC0xO1xcbiAgNzY6XFx0XFx0XFx0XFx0XFx0Z290byBleGl0X3Jlc3RvcmVfc2tiO1xcbiAgNzc6XFx0XFx0XFx0XFx0fSBlbHNlIGlmICghYWRhcHRlci1cXHUwMDNlY3Vycl9jbWQpIHtcXG4gIDc4OlxcdFxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIFdBUk4sIFxcXCJDTUQ6IG5vIGN1cnJfY21kXFxcXG5cXFwiKTtcXG4gIDc5OlxcdFxcdFxcdFxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2Vwc19zdGF0ZSA9PSBQU19TVEFURV9TTEVFUF9DRk0pIHtcXG4gIDgwOlxcdFxcdFxcdFxcdFxcdFxcdG13aWZpZXhfcHJvY2Vzc19zbGVlcF9jb25maXJtX3Jlc3AoXFxuICA4MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRhZGFwdGVyLCBza2ItXFx1MDAzZWRhdGEsXFxuICA4MjpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRza2ItXFx1MDAzZWxlbik7XFxuICA4MzpcXHRcXHRcXHRcXHRcXHRcXHRyZXQgPSAwO1xcbiAgODQ6XFx0XFx0XFx0XFx0XFx0XFx0Z290byBleGl0X3Jlc3RvcmVfc2tiO1xcbiAgODU6XFx0XFx0XFx0XFx0XFx0fVxcbiAgODY6XFx0XFx0XFx0XFx0XFx0cmV0ID0gLTE7XFxuICA4NzpcXHRcXHRcXHRcXHRcXHRnb3RvIGV4aXRfcmVzdG9yZV9za2I7XFxuICA4ODpcXHRcXHRcXHRcXHR9XFxuICA4OTpcXHRcXG4gIDkwOlxcdFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWN1cnJfY21kLVxcdTAwM2VyZXNwX3NrYiA9IHNrYjtcXG4gIDkxOlxcdFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWNtZF9yZXNwX3JlY2VpdmVkID0gdHJ1ZTtcXG4gIDkyOlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAgOTM6XFx0XFx0XFx0Y2FzZSBNV0lGSUVYX1VTQl9UWVBFX0VWRU5UOlxcbiAgOTQ6XFx0XFx0XFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2Mgc2l6ZW9mKHUzMikpIHtcXG4gIDk1OlxcdFxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbiAgOTY6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJFVkVOVDogc2tiLVxcdTAwM2VsZW4gdG9vIHNtYWxsXFxcXG5cXFwiKTtcXG4gIDk3OlxcdFxcdFxcdFxcdFxcdHJldCA9IC0xO1xcbiAgOTg6XFx0XFx0XFx0XFx0XFx0Z290byBleGl0X3Jlc3RvcmVfc2tiO1xcbiAgOTk6XFx0XFx0XFx0XFx0fVxcbiAxMDA6XFx0XFx0XFx0XFx0c2tiX2NvcHlfZnJvbV9saW5lYXJfZGF0YShza2IsIFxcdTAwMjZ0bXAsIHNpemVvZih1MzIpKTtcXG4gMTAxOlxcdFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWV2ZW50X2NhdXNlID0gbGUzMl90b19jcHUodG1wKTtcXG4gMTAyOlxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVWRU5ULFxcbiAxMDM6XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJldmVudF9jYXVzZSAlI3hcXFxcblxcXCIsIGFkYXB0ZXItXFx1MDAzZWV2ZW50X2NhdXNlKTtcXG4gMTA0OlxcdFxcbiAxMDU6XFx0XFx0XFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2UgTUFYX0VWRU5UX1NJWkUpIHtcXG4gMTA2OlxcdFxcdFxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxcbiAxMDc6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJFVkVOVDogZXZlbnQgYm9keSB0b28gbGFyZ2VcXFxcblxcXCIpO1xcbiAxMDg6XFx0XFx0XFx0XFx0XFx0cmV0ID0gLTE7XFxuIDEwOTpcXHRcXHRcXHRcXHRcXHRnb3RvIGV4aXRfcmVzdG9yZV9za2I7XFxuIDExMDpcXHRcXHRcXHRcXHR9XFxuIDExMTpcXHRcXG4gMTEyOlxcdFxcdFxcdFxcdG1lbWNweShhZGFwdGVyLVxcdTAwM2VldmVudF9ib2R5LCBza2ItXFx1MDAzZWRhdGEgK1xcbiAxMTM6XFx0XFx0XFx0XFx0ICAgICAgIE1XSUZJRVhfRVZFTlRfSEVBREVSX0xFTiwgc2tiLVxcdTAwM2VsZW4pO1xcbiAxMTQ6XFx0XFxuIDExNTpcXHRcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VldmVudF9yZWNlaXZlZCA9IHRydWU7XFxuIDExNjpcXHRcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VldmVudF9za2IgPSBza2I7XFxuIDExNzpcXHRcXHRcXHRcXHRicmVhaztcXG4gMTE4OlxcdFxcdFxcdGRlZmF1bHQ6XFxuIDExOTpcXHRcXHRcXHRcXHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcXG4gMTIwOlxcdFxcdFxcdFxcdFxcdCAgICBcXFwidW5rbm93biByZWN2X3R5cGUgJSN4XFxcXG5cXFwiLCByZWN2X3R5cGUpO1xcbiAxMjE6XFx0XFx0XFx0XFx0cmV0ID0gLTE7XFxuIDEyMjpcXHRcXHRcXHRcXHRnb3RvIGV4aXRfcmVzdG9yZV9za2I7XFxuIDEyMzpcXHRcXHRcXHR9XFxuIDEyNDpcXHRcXHRcXHRicmVhaztcXG4gMTI1OlxcdFxcdGNhc2UgTVdJRklFWF9VU0JfRVBfREFUQTpcXG4gMTI2OlxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIERBVEEsIFxcXCIlczogRVBfREFUQVxcXFxuXFxcIiwgX19mdW5jX18pO1xcbiAxMjc6XFx0XFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2UgTVdJRklFWF9SWF9EQVRBX0JVRl9TSVpFKSB7XFxuIDEyODpcXHRcXHRcXHRcXHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcXG4gMTI5OlxcdFxcdFxcdFxcdFxcdCAgICBcXFwiREFUQTogc2tiLVxcdTAwM2VsZW4gdG9vIGxhcmdlXFxcXG5cXFwiKTtcXG4gMTMwOlxcdFxcdFxcdFxcdHJldHVybiAtMTtcXG4gMTMxOlxcdFxcdFxcdH1cXG4gMTMyOlxcdFxcbiAxMzM6XFx0XFx0XFx0c2tiX3F1ZXVlX3RhaWwoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJ4X2RhdGFfcSwgc2tiKTtcXG4gMTM0OlxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWRhdGFfcmVjZWl2ZWQgPSB0cnVlO1xcbiAxMzU6XFx0XFx0XFx0YXRvbWljX2luYyhcXHUwMDI2YWRhcHRlci1cXHUwMDNlcnhfcGVuZGluZyk7XFxuIDEzNjpcXHRcXHRcXHRicmVhaztcXG4gMTM3OlxcdFxcdGRlZmF1bHQ6XFxuIDEzODpcXHRcXHRcXHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUixcXG4gMTM5OlxcdFxcdFxcdFxcdCAgICBcXFwiJXM6IHVua25vd24gZW5kcG9ydCAlI3hcXFxcblxcXCIsIF9fZnVuY19fLCBlcCk7XFxuIDE0MDpcXHRcXHRcXHRyZXR1cm4gLTE7XFxuIDE0MTpcXHRcXHR9XFxuIDE0MjpcXHRcXG4gMTQzOlxcdFxcdHJldHVybiAtRUlOUFJPR1JFU1M7XFxuIDE0NDpcXHRcXG4gMTQ1OlxcdGV4aXRfcmVzdG9yZV9za2I6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI4OjAzLjc2NzEyNTk1NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTY3NzE1NjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNYXJ2ZWxsIFdpLUZpIERyaXZlcidzIFJlY2VpdmUgUGF0aCoqXG5cblJpZ2h0LCBzbyBJJ20gdHJ5aW5nIHRvIHRyYWNlIHRoZSBwYXRoIHRoZSBNYXJ2ZWxsIFdpLUZpIGRyaXZlciB0YWtlcyB3aGVuIGl0IHJlY2VpdmVzIGRhdGEuIEZyb20gd2hhdCBJIGNhbiBzZWUsIGBtd2lmaWV4X3VzYl9yZWN2YCBzZWVtcyB0byBiZSB0aGUgaW5pdGlhbCBlbnRyeSBwb2ludCwgaGFuZGxpbmcgdGhlIHF1ZXVpbmcgb2YgYm90aCBldmVudHMgYW5kIGNvbW1hbmRzLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIHRoZSBVU0IgcmVjZWl2ZSBmdW5jdGlvbiwgc28gaXQncyBnb3QgdG8gbWFuYWdlIHRoZSBpbmNvbWluZyBkYXRhIHN0cmVhbXMuIFRoZW4sIGBtd2lmaWV4X21haW5fcHJvY2Vzc2AgdGFrZXMgb3ZlciwgcHVsbGluZyB0aG9zZSBxdWV1ZWQgaXRlbXMgYW5kIHByb2Nlc3NpbmcgdGhlbS4gVGhpcyBpcyB0aGUgaGVhcnQgb2YgdGhlIHJlY2VpdmUgaGFuZGxpbmcuIEl0IGxvb2tzIGxpa2UgaXQgZGVsZWdhdGVzIHRvIHR3byBrZXkgZnVuY3Rpb25zOiBgbXdpZmlleF9wcm9jZXNzX2NtZHJlc3BgIGFuZCBgbXdpZmlleF9wcm9jZXNzX2V2ZW50YC4gT2J2aW91c2x5LCB0aGUgZXZlbnQgcHJvY2Vzc29yIHdpbGwgaGFuZGxlIGV2ZW50cywgYnV0IHRoZSBjb21tYW5kIHJlc3BvbnNlIHByb2Nlc3NvciwgYG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwYCBpcyBtb3JlIGludGVyZXN0aW5nIGluIG15IGN1cnJlbnQgZm9jdXMuIEkgc2VlIHRoYXQgYG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwYCBpcyByZXNwb25zaWJsZSBmb3IgZGVhbGluZyB3aXRoIGNvbW1hbmQgcmVzcG9uc2VzLCBhbmQsIGNydWNpYWxseSwgdGhhdCBpbmNsdWRlcyB0aGluZ3MgbGlrZSBzY2FuIHJlc3VsdHMuIEFoYSEgSSB0aGluayBJJ3ZlIGZvdW5kIHdoZXJlIEkgbmVlZCB0byBsb29rLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gYG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwYCB0byBmaWd1cmUgb3V0IHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyB0aG9zZSBzY2FuIHJlc3VsdHMuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTc1NCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjg6MDcuNzM0ODQ0MDU3WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTA3OTc3ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9wcm9jZXNzX2NtZHJlc3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmM9NzQxPWludCBtd2lmaWV4X2V4ZWNfbmV4dF9jbWQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy04MDItICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NtZGV2dC5jOjgwMzppbnQgbXdpZmlleF9wcm9jZXNzX2NtZHJlc3Aoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmMtODA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYz0xMDg1PW13aWZpZXhfY2FuY2VsX3BlbmRpbmdfaW9jdGwoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy0xMDkzLVxcdFxcdC8qIHNldHRpbmcgY3Vycl9jbWQgdG8gTlVMTCBpcyBxdWl0ZSBkYW5nZXJvdXMsIGJlY2F1c2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY21kZXZ0LmM6MTA5NDpcXHRcXHQgKiBtd2lmaWV4X3Byb2Nlc3NfY21kcmVzcCBjaGVja3MgY3Vycl9jbWQgdG8gYmUgIT0gTlVMTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jbWRldnQuYy0xMDk1LVxcdFxcdCAqIGF0IHRoZSBiZWdpbm5pbmcgdGhlbiByZWxpZXMgb24gaXQgYW5kIGRlcmVmZXJlbmNlc1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uYz0yNDg9aW50IG13aWZpZXhfbWFpbl9wcm9jZXNzKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5jLTM1Ni1cXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VjbWRfcmVzcF9yZWNlaXZlZCA9IGZhbHNlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmM6MzU3OlxcdFxcdFxcdG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmMtMzU4LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTEwMD1pbnQgbXdpZmlleF9leGVjX25leHRfY21kKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTEwMTppbnQgbXdpZmlleF9wcm9jZXNzX2NtZHJlc3Aoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xMTAyLXZvaWQgbXdpZmlleF9wcm9jZXNzX2Fzc29jX3Jlc3Aoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYz0zMT1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjMyOm13aWZpZXhfcHJvY2Vzc19jbWRyZXNwX2Vycm9yKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMzMtXFx0XFx0XFx0ICAgICAgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYz0xMjEyPWludCBtd2lmaWV4X3Byb2Nlc3Nfc3RhX2NtZHJlc3Aoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiwgdTE2IGNtZHJlc3Bfbm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYy0xMjIwLVxcdGlmIChyZXNwLVxcdTAwM2VyZXN1bHQgIT0gSG9zdENtZF9SRVNVTFRfT0spIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYzoxMjIxOlxcdFxcdG13aWZpZXhfcHJvY2Vzc19jbWRyZXNwX2Vycm9yKHByaXYsIHJlc3ApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyMjItXFx0XFx0cmV0dXJuIC0xO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyODowNy44ODU2NDc5ODdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAxMDUyNDYyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByb2Nlc3MsIGJyZWFraW5nIGl0IGRvd24gaW4gbXkgb3duIGhlYWQ6XG5cbioqQW5hbHl6aW5nIHRoZSBTY2FuIENvbW1hbmQgUmVzcG9uc2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIHN5c3RlbSBwcm9jZXNzZXMgYSByZXNwb25zZSB0byBhIHNjYW4gY29tbWFuZCwgc3BlY2lmaWNhbGx5LCB0aGUgYEhvc3RDbWRfQ01EXzgwMl8xMV9TQ0FOYCBjb21tYW5kLiBUaGUgZnVuY3Rpb24gYG13aWZpZXhfcHJvY2Vzc19zdGFfY21kcmVzcGAgaXMgdGhlIG9uZSB0aGF0J3MgZGVhbGluZyB3aXRoIGl0LiBJJ2QgZXhwZWN0IGl0IHRvIGhhbmRsZSB0aGUgaW5pdGlhbCBwYXJzaW5nIGFuZCBhbnkgY29tbWFuZC1zcGVjaWZpYyBsb2dpYyBmb3IgdGhpcyByZXNwb25zZS4gQ3J1Y2lhbGx5LCBJIHNlZSB0aGF0IGl0IGNhbGxzIGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAuIFRoaXMgaXMga2V5LiBUaGUgbmFtZSB0ZWxscyBtZSB0aGF0IHRoaXMgaXMgd2hlcmUgdGhlICpyZXR1cm4qIG9yLCByYXRoZXIsIHByb2Nlc3Npbmcgb2YgdGhlIHNjYW4gcmVzdWx0cyBhY3R1YWxseSBoYXBwZW5zLlxuXG5UaGVyZWZvcmUsIGBtd2lmaWV4X3JldF84MDJfMTFfc2NhbmAgaXMgcmVzcG9uc2libGUgZm9yIHRha2luZyB0aGUgcmF3IGRhdGEgZnJvbSB0aGUgc2NhbiBhbmQgdHVybmluZyBpdCBpbnRvIHNvbWV0aGluZyB1c2FibGUuIFRoaXMgbGlrZWx5IGludm9sdmVzIGRlY29kaW5nIHRoZSBmb3JtYXQgb2YgdGhlIHNjYW4gcmVzdWx0cywgb3JnYW5pemluZyB0aGUgZGF0YSwgYW5kIHBvc3NpYmx5IGFwcGx5aW5nIHNvbWUgZmlsdGVyaW5nIG9yIGVycm9yIGNoZWNraW5nLCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uLiBUaGF0J3MgdGhlIGNvcmUgb2YgdGhlIHdob2xlIHByb2Nlc3MgZm9yIGRlYWxpbmcgd2l0aCBzY2FuIHJlc3BvbnNlcy4gVGhlIGludGVyZXN0aW5nIHBvaW50cywgb2YgY291cnNlLCBsaWUgd2l0aGluIHRoZSBgbXdpZmlleF9yZXRfODAyXzExX3NjYW5gIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTAzMCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI4OjExLjg5NjE3NTA5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODA3NjExMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3JldF84MDJfMTFfc2NhblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTE1Nz12b2lkIG13aWZpZXhfcXVldWVfc2Nhbl9jbWQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTExNTgtXFx0XFx0XFx0ICAgIHN0cnVjdCBjbWRfY3RybF9ub2RlICpjbWRfbm9kZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMTU5OmludCBtd2lmaWV4X3JldF84MDJfMTFfc2NhbihzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTE2MC1cXHRcXHRcXHQgICAgc3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xMjM5PWludCBtd2lmaWV4X2NtZF84MDJfMTFfc2Nhbl9leHQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTI0MS1cXHRcXHRcXHRcXHR2b2lkICpkYXRhX2J1Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMjQyOmludCBtd2lmaWV4X3JldF84MDJfMTFfc2Nhbl9leHQoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyNDMtXFx0XFx0XFx0XFx0c3RydWN0IGhvc3RfY21kX2RzX2NvbW1hbmQgKnJlc3ApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYz0xMTI3PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoxMTI4Om13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2dldF90bHZfcHRycyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMTEyOS1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBtd2lmaWV4X2llX3R5cGVzX2RhdGEgKnRsdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MjA1NT12b2lkIG13aWZpZXhfY2FuY2VsX3NjYW4oc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjEwMS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Nhbi5jOjIxMDI6aW50IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yMTAzLVxcdFxcdFxcdCAgICBzdHJ1Y3QgaG9zdF9jbWRfZHNfY29tbWFuZCAqcmVzcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjE3MS1cXHQgICBUTFZzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoyMTcyOlxcdG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2dldF90bHZfcHRycyhhZGFwdGVyLCB0bHZfZGF0YSwgdGx2X2J1Zl9zaXplLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjE3My1cXHRcXHRcXHRcXHRcXHQgICAgIFRMVl9UWVBFX1RTRlRJTUVTVEFNUCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjE3OC1cXHQgICBUTFZzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYzoyMTc5OlxcdG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuX2dldF90bHZfcHRycyhhZGFwdGVyLCB0bHZfZGF0YSwgdGx2X2J1Zl9zaXplLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjE4MC1cXHRcXHRcXHRcXHRcXHQgICAgIFRMVl9UWVBFX0NIQU5ORUxCQU5ETElTVCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM9MjQ4OT1td2lmaWV4X3VwZGF0ZV9jaGFuX3N0YXRpc3RpY3Moc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmMtMjUzMS0vKiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgdGhlIGNvbW1hbmQgcmVzcG9uc2Ugb2YgZXh0ZW5kZWQgc2NhbiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zY2FuLmM6MjUzMjppbnQgbXdpZmlleF9yZXRfODAyXzExX3NjYW5fZXh0KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NjYW4uYy0yNTMzLVxcdFxcdFxcdFxcdHN0cnVjdCBob3N0X2NtZF9kc19jb21tYW5kICpyZXNwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM9MTIxMj1pbnQgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIHUxNiBjbWRyZXNwX25vLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTI0My1cXHRjYXNlIEhvc3RDbWRfQ01EXzgwMl8xMV9TQ0FOOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jOjEyNDQ6XFx0XFx0cmV0ID0gbXdpZmlleF9yZXRfODAyXzExX3NjYW4ocHJpdiwgcmVzcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTI0NS1cXHRcXHRhZGFwdGVyLVxcdTAwM2VjdXJyX2NtZC1cXHUwMDNld2FpdF9xX2VuYWJsZWQgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyNDctXFx0Y2FzZSBIb3N0Q21kX0NNRF84MDJfMTFfU0NBTl9FWFQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmM6MTI0ODpcXHRcXHRyZXQgPSBtd2lmaWV4X3JldF84MDJfMTFfc2Nhbl9leHQocHJpdiwgcmVzcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9jbWRyZXNwLmMtMTI0OS1cXHRcXHRhZGFwdGVyLVxcdTAwM2VjdXJyX2NtZC1cXHUwMDNld2FpdF9xX2VuYWJsZWQgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyNTEtXFx0Y2FzZSBIb3N0Q21kX0NNRF84MDJfMTFfQkdfU0NBTl9RVUVSWTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2NtZHJlc3AuYzoxMjUyOlxcdFxcdHJldCA9IG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuKHByaXYsIHJlc3ApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfY21kcmVzcC5jLTEyNTMtXFx0XFx0Y2ZnODAyMTFfc2NoZWRfc2Nhbl9yZXN1bHRzKHByaXYtXFx1MDAzZXdkZXYud2lwaHksIDApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMjoyODoxMS45NTQyNTg4OTFaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODYyNDM1OTI5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBtd2lmaWV4YCBEcml2ZXIncyBTZWN1cml0eSBGb290cHJpbnQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGFuYWx5c2lzIHN0YXJ0cyB3aXRoIGhvdyB0aGUgc2NhbiByZXNwb25zZSBpcyBoYW5kbGVkLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgZGF0YSBmbG93LiBUaGUgZnVuY3Rpb24gYG13aWZpZXhfcmV0XzgwMl8xMV9zY2FuYCBwYXJzZXMgdGhlIHJlc3BvbnNlIGFuZCBldmVudHVhbGx5IGZ1bm5lbHMgaXQgdGhyb3VnaCBgbXdpZmlleF9wYXJzZV9zaW5nbGVfcmVzcG9uc2VfYnVmYC4gVGhpcyBwb3B1bGF0ZXMgdGhlIGBic3NfZGVzY2Agc3RydWN0dXJlLCB0aGVuIGNhbGxzIGBtd2lmaWV4X3VwZGF0ZV9ic3NfZGVzY193aXRoX2llYC5cblxuTm93LCB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBJIHNlZSB0aGF0IGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAgaXMgY2FsbGVkLCBub3QgZGlyZWN0bHksIGJ1dCB0aHJvdWdoIHRoZSBjYWxsIHRvIGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAuIExvb2tpbmcgYXQgdGhlIGNhbGxzIHRvIGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAgc3VnZ2VzdHMgYSBrZXkgcGF0aC4gSSBrbm93IHRoYXQgYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YCBpcyBpbnZva2VkIGR1cmluZyBib3RoIG5ldHdvcmsgam9pbnMgKHZpYSBgbXdpZmlleF9ic3Nfc3RhcnRgIGFuZCBgbXdpZmlleF91cGRhdGVfY3Vycl9ic3NfcGFyYW1zYCkuXG5cblNvLCBJIGNhbiBjcmFmdCBhbiBhdHRhY2sgYnkgc2VuZGluZyBhIHNjYW4gcmVzcG9uc2UsIGFuZCB0aGVuIHRyaWdnZXJpbmcgYSBqb2luIHJlcXVlc3QgKHVzaW5nIG5sODAyMTEpLiBUaGlzIHdpbGwgaW52b2tlIGVpdGhlciBgbXdpZmlleF9ic3Nfc3RhcnRgIG9yIGBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXNgIGFuZCB0cmlnZ2VyIHRoaXMgY29tcGF0aWJpbGl0eSBjaGVjay4gQWxzbywgYG13aWZpZXhfdXBkYXRlX2N1cnJfYnNzX3BhcmFtc2AgaXMgYWxzbyBjYWxsZWQgZnJvbSBhc3NvY2lhdGlvbiBhbmQgYWQtaG9jIHN0YXJ0LlxuXG5UaGlua2luZyBhYm91dCBhbiBhc3NvY2lhdGlvbiByZXNwb25zZSwgaXQgZ2V0cyBldmVuIGJldHRlci4gV2hlbiBJIGVtdWxhdGUgYW4gYXNzb2NpYXRpb24gcmVzcG9uc2UsIEkga25vdyBJJ2xsIGhpdCBgbXdpZmlleF9yZXRfODAyXzExX2Fzc29jaWF0ZWAuIFRoaXMsIGluIHR1cm4sIGNhbGxzIGBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXNgLCB3aGljaCB0aGVuIHRyaWdnZXJzIGBtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eWAuIFRoaXMgZXZlbnR1YWxseSBjYWxscyBgbXdpZmlleF9pc19uZXR3b3JrX2NvbXBhdGlibGVgLCB3aGljaCBicmFuY2hlcyBvdXQgdG8gY2FsbCBgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRgIGFuZCBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgLiBUaGVzZSwgdWx0aW1hdGVseSwgY2FsbCBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYC5cblxuVGhlIGRhdGEgZmxvdyBpcyBwcmV0dHkgY2xlYXJseSBsYWlkIG91dDogYG13aWZpZXhfdXNiX3JlY3ZgIC1cdTAwM2UgYG13aWZpZXhfbWFpbl9wcm9jZXNzYCAtXHUwMDNlIGBtd2lmaWV4X3Byb2Nlc3NfY21kcmVzcGAgLVx1MDAzZSBgbXdpZmlleF9wcm9jZXNzX3N0YV9jbWRyZXNwYCAtXHUwMDNlIGBtd2lmaWV4X3JldF84MDJfMTFfYXNzb2NpYXRlYCAtXHUwMDNlIGBtd2lmaWV4X3VwZGF0ZV9jdXJyX2Jzc19wYXJhbXNgIC1cdTAwM2UgYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YCAtXHUwMDNlIGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAgLVx1MDAzZSBgbXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRgIC8gYG13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50YCAtXHUwMDNlIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgLlxuXG5UaGlzIHBhdGggaXMgKmhpZ2hseSogcmVhY2hhYmxlIGFuZCByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBwYXJ0IG9mIHRoZSBkcml2ZXIuXG5cbk15IGZvY3VzIGlzIHByaW1hcmlseSBvbiB0aGVzZSBzeW1ib2xzLCB3aGljaCBpcyB3aGVyZSBhbnkgdnVsbmVyYWJpbGl0eSBpcyBsaWtlbHkgdG8gYmUgZXhwb3NlZDpcbi0gYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWBcbi0gYG13aWZpZXhfaXNfcnNuX291aV9wcmVzZW50YFxuLSBgbXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRgXG4tIGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWBcbi0gYG13aWZpZXhfY2hlY2tfbmV0d29ya19jb21wYXRpYmlsaXR5YFxuXG5GaW5hbGx5LCBjb25maWd1cmF0aW9uLXdpc2UsIEkgc2hvdWxkIGNoZWNrIHRoYXQgYE1XSUZJRVhgIGFuZCBgTVdJRklFWF9VU0JgIGFyZSBlbmFibGVkLiBJJ2xsIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBmaWxlIGluIHRoZSBkcml2ZXIgZGlyZWN0b3J5IHRvIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyOTIxLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI4OjIwLjU3ODYyMDU4OVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIE1XSUZJRVhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgIDc6XFx0XFx0ICA4MDIuMTFuL2FjIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAxMDpcXHRcXHQgIG13aWZpZXguXFxuICAxMTpcXHRcXG4gIDEyOlxcdGNvbmZpZyBNV0lGSUVYX1NESU9cXG4gIDEzOlxcdFxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBTRDg3ODYvU0Q4Nzg3L1NEODc5Ny9TRDg4ODcvU0Q4ODk3L1NEODk3Ny9TRDg5NzgvU0Q4OTg3L1NEODk5N1xcXCJcXG4gIDE0OlxcdFxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBNTUNcXG4gIDE1OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDE2OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMTk6XFx0XFx0ICA4Nzg2Lzg3ODcvODc5Ny84ODg3Lzg4OTcvODk3Ny84OTc4Lzg5ODcvODk5NyBjaGlwc2V0cyB3aXRoXFxuICAyMDpcXHRcXHQgIFNESU8gaW50ZXJmYWNlLiBTRDg5NzggaXMgYWxzbyBrbm93biBhcyBOWFAgSVc0MTYuXFxuICAyMTpcXHRcXG4gIDIyOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBpdCBhcyBhIG1vZHVsZSwgaXQgd2lsbCBiZSBjYWxsZWRcXG4gIDIzOlxcdFxcdCAgbXdpZmlleF9zZGlvLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRjb25maWcgTVdJRklFWF9QQ0lFXFxuICAyNjpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgUENJRSA4NzY2Lzg4OTcvODk5N1xcXCJcXG4gIDI3OlxcdFxcdGRlcGVuZHMgb24gTVdJRklFWCBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gIDI4OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gIDI5OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgMzA6XFx0XFx0aGVscFxcbiAgMzE6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb24gTWFydmVsbFxcbiAgMzI6XFx0XFx0ICA4NzY2Lzg4OTcvODk5NyBjaGlwc2V0cyB3aXRoIFBDSWUgaW50ZXJmYWNlLlxcbiAgMzM6XFx0XFxuICAzNDpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuICAzNTpcXHRcXHQgIG13aWZpZXhfcGNpZS5cXG4gIDM2OlxcdFxcbiAgMzc6XFx0Y29uZmlnIE1XSUZJRVhfVVNCXFxuICAzODpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBXaUZpLUV4IERyaXZlciBmb3IgVVNCODc2Ni84Nzk3Lzg5OTdcXFwiXFxuICAzOTpcXHRcXHRkZXBlbmRzIG9uIE1XSUZJRVggXFx1MDAyNlxcdTAwMjYgVVNCXFxuICA0MDpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICA0MTpcXHRcXHRoZWxwXFxuICA0MjpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvbiBNYXJ2ZWxsXFxuICA0MzpcXHRcXHQgIDg3OTcvODk5NyBjaGlwc2V0IHdpdGggVVNCIGludGVyZmFjZS5cXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbiAgNDY6XFx0XFx0ICBtd2lmaWV4X3VzYi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDI6Mjg6MjAuNTc4Njg0MjA5WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyNjQ1NjIwMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBtd2lmaWV4YCBEcml2ZXIgVnVsbmVyYWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGNvcmUgaXNzdWUgaXMgdGhpczogYSBwYXRjaCBhZGRzIGNydWNpYWwgYm91bmRzIGNoZWNraW5nIHRvIHRoZSBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCBmdW5jdGlvbiB3aXRoaW4gdGhlIGBtd2lmaWV4YCBkcml2ZXIuIFRoaXMgaXMgYSB0ZWxsLiBJJ20gc2VlaW5nIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXR5IGJlaW5nIGFkZHJlc3NlZC4gVGhlIGZ1bmN0aW9uJ3MgcHVycG9zZSBpcyBwYXJzaW5nIFJTTi9XUEEgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykuIEl0J3MgdHJpZ2dlcmVkIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgc2NhbiByZXN1bHRzIG9yIGFzc29jaWF0aW9uIHJlc3BvbnNlcy5cblxuTm93LCB0aGUgaW1wb3J0YW50IHBhcnQ6IHRoaXMgYG13aWZpZXhgIGRyaXZlciBhbHNvIGhhcyBhIFVTQiBjb21wb25lbnQsIGBtd2lmaWV4X3VzYmAuIFRoaXMgaXMgY3JpdGljYWwgYmVjYXVzZSBpdCBpbnRyb2R1Y2VzIGEgZGlyZWN0IGZ1enppbmcgdmVjdG9yLiBJIGNhbiBlbXVsYXRlIGEgTWFydmVsbCBXaS1GaSBVU0IgZGV2aWNlIHVzaW5nIHRoZSBVU0Igc3Vic3lzdGVtLCBlbXBsb3lpbmcgc29tZXRoaW5nIGxpa2UgYGR1bW15X2hjZGAgb3IgYHJhdy1nYWRnZXRgLiBUaGF0IGFsbG93cyBtZSB0byBjcmFmdCBhbmQgaW5qZWN0IG1hbGljaW91cyBzY2FuIG9yIGFzc29jaWF0aW9uIHJlc3BvbnNlcyBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIHRoaXMgdnVsbmVyYWJsZSBmdW5jdGlvbi4gVGhlIFVTQiBwYXRoIGdpdmVzIG1lIHRoZSBjb250cm9sIEkgbmVlZCB0byByZWFjaCBpdC5cblxuVGhlcmVmb3JlLCB0aGlzIGZ1bmN0aW9uYWwgY2hhbmdlIGlzIHJlYWNoYWJsZSBhbmQgdnVsbmVyYWJsZS4gSXQgKm11c3QqIGJlIGZ1enplZCByaWdvcm91c2x5LiBJIG5lZWQgdG8gZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYG13aWZpZXhfc2VhcmNoX291aV9pbl9pZWAsIGBtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudGAsIGBtd2lmaWV4X2lzX3dwYV9vdWlfcHJlc2VudGAsIGBtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZWAsIGFuZCBgbXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlgLiBUaGV5IGFyZSBhbGwgcGFydCBvZiB0aGUgcmVsZXZhbnQgY29kZSBwYXRoLlxuXG5UbyByZWNyZWF0ZSB0aGUgZW52aXJvbm1lbnQsIEknbGwgbmVlZCBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgZW5hYmxlZC4gV2l0aCB0aGF0IHNldHVwIGluIHBsYWNlLCBJIGNhbiBnZXQgdG8gd29yay5cblxuVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MTYzLCJPdXRwdXRUb2tlbnMiOjI0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAyOjI4OjI2Ljg0MzI0ODA0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg0MTk5NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF9zZWFyY2hfb3VpX2luX2llXCIsXG4gICAgXCJtd2lmaWV4X2lzX3Jzbl9vdWlfcHJlc2VudFwiLFxuICAgIFwibXdpZmlleF9pc193cGFfb3VpX3ByZXNlbnRcIixcbiAgICBcIm13aWZpZXhfaXNfbmV0d29ya19jb21wYXRpYmxlXCIsXG4gICAgXCJtd2lmaWV4X2NoZWNrX25ldHdvcmtfY29tcGF0aWJpbGl0eVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGBtd2lmaWV4X3NlYXJjaF9vdWlfaW5faWVgIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyB3aGVuIHBhcnNpbmcgUlNOL1dQQSBJbmZvcm1hdGlvbiBFbGVtZW50cyAoSUVzKS4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgd2hlbiB0aGUgZHJpdmVyIHByb2Nlc3NlcyBzY2FuIHJlc3VsdHMgb3IgYXNzb2NpYXRpb24gcmVzcG9uc2VzIGNvbnRhaW5pbmcgdGhlc2UgSUVzLiBTaW5jZSBgbXdpZmlleGAgaGFzIGEgVVNCIGRyaXZlciAoYG13aWZpZXhfdXNiYCksIGl0IGNhbiBiZSBmdXp6ZWQgdmlhIHRoZSBVU0Igc3Vic3lzdGVtIChlLmcuLCB1c2luZyBkdW1teV9oY2QvcmF3LWdhZGdldCkgYnkgZW11bGF0aW5nIGEgTWFydmVsbCBXaS1GaSBVU0IgZGV2aWNlIGFuZCBzZW5kaW5nIG1hbGljaW91cyBzY2FuL2Fzc29jaWF0aW9uIHJlc3BvbnNlcy4gVGhlcmVmb3JlLCB0aGlzIGZ1bmN0aW9uYWwgY2hhbmdlIGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNV0lGSUVYXCIsXG4gICAgXCJNV0lGSUVYX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm13aWZpZXhfc2VhcmNoX291aV9pbl9pZVwiLFxuICAgIFwibXdpZmlleF9pc19yc25fb3VpX3ByZXNlbnRcIixcbiAgICBcIm13aWZpZXhfaXNfd3BhX291aV9wcmVzZW50XCIsXG4gICAgXCJtd2lmaWV4X2lzX25ldHdvcmtfY29tcGF0aWJsZVwiLFxuICAgIFwibXdpZmlleF9jaGVja19uZXR3b3JrX2NvbXBhdGliaWxpdHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBgbXdpZmlleF9zZWFyY2hfb3VpX2luX2llYCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiBwYXJzaW5nIFJTTi9XUEEgSW5mb3JtYXRpb24gRWxlbWVudHMgKElFcykuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgc2NhbiByZXN1bHRzIG9yIGFzc29jaWF0aW9uIHJlc3BvbnNlcyBjb250YWluaW5nIHRoZXNlIElFcy4gU2luY2UgYG13aWZpZXhgIGhhcyBhIFVTQiBkcml2ZXIgKGBtd2lmaWV4X3VzYmApLCBpdCBjYW4gYmUgZnV6emVkIHZpYSB0aGUgVVNCIHN1YnN5c3RlbSAoZS5nLiwgdXNpbmcgZHVtbXlfaGNkL3Jhdy1nYWRnZXQpIGJ5IGVtdWxhdGluZyBhIE1hcnZlbGwgV2ktRmkgVVNCIGRldmljZSBhbmQgc2VuZGluZyBtYWxpY2lvdXMgc2Nhbi9hc3NvY2lhdGlvbiByZXNwb25zZXMuIFRoZXJlZm9yZSwgdGhpcyBmdW5jdGlvbmFsIGNoYW5nZSBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsdl6s[1] Phase: Succeeded StartedAt: 2026-07-16 02:28:38 +0000 UTC FinishedAt: 2026-07-16 02:28:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-16 02:28:38 +0000 UTC FinishedAt: 2026-07-16 02:28:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[2] Phase: Succeeded StartedAt: 2026-07-16 02:28:38 +0000 UTC FinishedAt: 2026-07-16 03:38:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-16 02:28:38 +0000 UTC FinishedAt: 2026-07-16 03:38:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-16 02:28:38 +0000 UTC FinishedAt: 2026-07-16 02:28:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-16 02:28:38 +0000 UTC FinishedAt: 2026-07-16 02:28:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowsdl6s/series-workflowsdl6s-convert-artifact-3406150902/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-16 02:28:49 +0000 UTC FinishedAt: 2026-07-16 02:56:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-16 02:28:49 +0000 UTC FinishedAt: 2026-07-16 02:56:31 +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:*4d9c43ee-9a9b-4eff-97a9-514376d79c09,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-workflowsdl6s/series-workflowsdl6s-convert-artifact-3406150902/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": "7c19b85b-c67c-46ce-8fb8-f8c95e5196ed", "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-workflowsdl6s/series-workflowsdl6s-build-action-4268480524/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-16 02:28:49 +0000 UTC FinishedAt: 2026-07-16 02:56:21 +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:*4d9c43ee-9a9b-4eff-97a9-514376d79c09,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-workflowsdl6s/series-workflowsdl6s-convert-artifact-3406150902/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": "7c19b85b-c67c-46ce-8fb8-f8c95e5196ed", "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-workflowsdl6s/series-workflowsdl6s-build-action-4268480524/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-16 02:56:31 +0000 UTC FinishedAt: 2026-07-16 02:56:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-16 02:56:31 +0000 UTC FinishedAt: 2026-07-16 02:56:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-16 02:56:31 +0000 UTC FinishedAt: 2026-07-16 02:56:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-16 02:56:31 +0000 UTC FinishedAt: 2026-07-16 02:56:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowsdl6s/series-workflowsdl6s-convert-artifact-2719319177/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-16 02:56:41 +0000 UTC FinishedAt: 2026-07-16 02:59:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-16 02:56:41 +0000 UTC FinishedAt: 2026-07-16 02:59:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7c19b85b-c67c-46ce-8fb8-f8c95e5196ed,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-workflowsdl6s/series-workflowsdl6s-build-action-4268480524/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-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-16 02:59:15 +0000 UTC FinishedAt: 2026-07-16 02:59:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-16 02:59:15 +0000 UTC FinishedAt: 2026-07-16 02:59:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-16 02:59:15 +0000 UTC FinishedAt: 2026-07-16 03:34:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-16 02:59:15 +0000 UTC FinishedAt: 2026-07-16 03:34:51 +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:*4d9c43ee-9a9b-4eff-97a9-514376d79c09,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-workflowsdl6s/series-workflowsdl6s-convert-artifact-2719319177/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": "7db618c4-8601-4a54-96a6-4f199926591e", "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-workflowsdl6s/series-workflowsdl6s-build-action-4158817893/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-16 02:59:15 +0000 UTC FinishedAt: 2026-07-16 03:34:30 +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:*4d9c43ee-9a9b-4eff-97a9-514376d79c09,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-workflowsdl6s/series-workflowsdl6s-convert-artifact-2719319177/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": "7db618c4-8601-4a54-96a6-4f199926591e", "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-workflowsdl6s/series-workflowsdl6s-build-action-4158817893/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-16 03:34:51 +0000 UTC FinishedAt: 2026-07-16 03:34:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-16 03:34:51 +0000 UTC FinishedAt: 2026-07-16 03:34:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-16 03:34:51 +0000 UTC FinishedAt: 2026-07-16 03:36:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-16 03:34:51 +0000 UTC FinishedAt: 2026-07-16 03:36:47 +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:*7db618c4-8601-4a54-96a6-4f199926591e,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-workflowsdl6s/series-workflowsdl6s-build-action-4158817893/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-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-16 03:36:57 +0000 UTC FinishedAt: 2026-07-16 03:38:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-16 03:36:57 +0000 UTC FinishedAt: 2026-07-16 03:38:27 +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":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"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:*7c19b85b-c67c-46ce-8fb8-f8c95e5196ed,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7db618c4-8601-4a54-96a6-4f199926591e,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-workflowsdl6s/series-workflowsdl6s-build-action-4268480524/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-workflowsdl6s/series-workflowsdl6s-build-action-4158817893/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-16 03:36:57 +0000 UTC FinishedAt: 2026-07-16 03:37:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-16 03:36:57 +0000 UTC FinishedAt: 2026-07-16 03:37:06 +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":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"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-workflowsdl6s/series-workflowsdl6s-convert-artifact-2189392094/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-16 03:36:57 +0000 UTC FinishedAt: 2026-07-16 03:36:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-16 03:36:57 +0000 UTC FinishedAt: 2026-07-16 03:36:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-16 03:36:57 +0000 UTC FinishedAt: 2026-07-16 03:36:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-16 03:37:18 +0000 UTC FinishedAt: 2026-07-16 03:38:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdl6s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_search_oui_in_ie","mwifiex_is_rsn_oui_present","mwifiex_is_wpa_oui_present","mwifiex_is_network_compatible","mwifiex_check_network_compatibility"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"e5b697ef-7121-4bf7-b451-dd892041b1d3","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-16 03:37:18 +0000 UTC FinishedAt: 2026-07-16 03:38:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7c19b85b-c67c-46ce-8fb8-f8c95e5196ed,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7db618c4-8601-4a54-96a6-4f199926591e,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-workflowsdl6s/series-workflowsdl6s-build-action-4268480524/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-workflowsdl6s/series-workflowsdl6s-build-action-4158817893/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-workflowsdl6s/series-workflowsdl6s-convert-artifact-2189392094/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,}