Name: series-workflowmnrnv Phase: Succeeded StartedAt: 2026-07-31 08:19:58 +0000 UTC FinishedAt: 2026-07-31 12:26:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[0] Phase: Succeeded StartedAt: 2026-07-31 08:19:58 +0000 UTC FinishedAt: 2026-07-31 08:23:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 08:19:58 +0000 UTC FinishedAt: 2026-07-31 08:23:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_CXACRU", "USB_ATM", "ATM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_CXACRU", "USB_ATM", "ATM" ], "series_id": "814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "cxacru_cm", "cxacru_heavy_init", "cxacru_atm_start", "cxacru_bind", "adsl_state_store", "adsl_config_store", "cxacru_poll_status" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9DWEFDUlUmIzM0OywKICAgICYjMzQ7VVNCX0FUTSYjMzQ7LAogICAgJiMzNDtBVE0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjeGFjcnVfY20mIzM0OywKICAgICYjMzQ7Y3hhY3J1X2hlYXZ5X2luaXQmIzM0OywKICAgICYjMzQ7Y3hhY3J1X2F0bV9zdGFydCYjMzQ7LAogICAgJiMzNDtjeGFjcnVfYmluZCYjMzQ7LAogICAgJiMzNDthZHNsX3N0YXRlX3N0b3JlJiMzNDssCiAgICAmIzM0O2Fkc2xfY29uZmlnX3N0b3JlJiMzNDssCiAgICAmIzM0O2N4YWNydV9wb2xsX3N0YXR1cyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdXNiX2tpbGxfdXJiIGNhbGwgaW4gdGhlIGVycm9yIHBhdGggb2YgY3hhY3J1X2NtIHRvIHByb3Blcmx5IGNsZWFuIHVwIHRoZSByZWNlaXZlIFVSQiBvbiBmYWlsdXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBVU0IgQVRNIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBVU0IgZGV2aWNlIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGYwNTJmNzNmNmE1OTlhNTFiYWU1ZjMyOWYwYjc0ZWJlN2I2OTBmZDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAwODoyMToyOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMgYi9kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmNcbmluZGV4IGYxOTAwYzU2N2JhNDEuLjQyOWFjMjBhODk5OWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2F0bS9jeGFjcnUuY1xuQEAgLTcwMCw2ICYjNDM7NzAwLDggQEAgc3RhdGljIGludCBjeGFjcnVfY20oc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSwgZW51bSBjeGFjcnVfY21fcmVxdWVzdCBjbSxcbiBcdHJldCA9IG9mZmQ7XG4gXHR1c2JfZGJnKGluc3RhbmNlLVx1MDAzZXVzYmF0bSwgXCYjMzQ7Y20gJSN4XFxuXCYjMzQ7LCBjbSk7XG4gZmFpbDpcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0dXNiX2tpbGxfdXJiKGluc3RhbmNlLVx1MDAzZXJjdl91cmIpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmluc3RhbmNlLVx1MDAzZWNtX3NlcmlhbGl6ZSk7XG4gZXJyOlxuIFx0cmV0dXJuIHJldDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX0NYQUNSVSYjMzQ7LAogICAgJiMzNDtVU0JfQVRNJiMzNDssCiAgICAmIzM0O0FUTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2N4YWNydV9jbSYjMzQ7LAogICAgJiMzNDtjeGFjcnVfaGVhdnlfaW5pdCYjMzQ7LAogICAgJiMzNDtjeGFjcnVfYXRtX3N0YXJ0JiMzNDssCiAgICAmIzM0O2N4YWNydV9iaW5kJiMzNDssCiAgICAmIzM0O2Fkc2xfc3RhdGVfc3RvcmUmIzM0OywKICAgICYjMzQ7YWRzbF9jb25maWdfc3RvcmUmIzM0OywKICAgICYjMzQ7Y3hhY3J1X3BvbGxfc3RhdHVzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSB1c2Jfa2lsbF91cmIgY2FsbCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBjeGFjcnVfY20gdG8gcHJvcGVybHkgY2xlYW4gdXAgdGhlIHJlY2VpdmUgVVJCIG9uIGZhaWx1cmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBBVE0gZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFVTQiBkZXZpY2UgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjA1MmY3M2Y2YTU5OWE1MWJhZTVmMzI5ZjBiNzRlYmU3YjY5MGZkNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDA4OjIxOjI5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvYXRtL2N4YWNydS5jIGIvZHJpdmVycy91c2IvYXRtL2N4YWNydS5jCmluZGV4IGYxOTAwYzU2N2JhNDEuLjQyOWFjMjBhODk5OWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMKQEAgLTcwMCw2ICYjNDM7NzAwLDggQEAgc3RhdGljIGludCBjeGFjcnVfY20oc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSwgZW51bSBjeGFjcnVfY21fcmVxdWVzdCBjbSwKIAlyZXQgPSBvZmZkOwogCXVzYl9kYmcoaW5zdGFuY2UtJmd0O3VzYmF0bSwgJiMzNDtjbSAlI3hcbiYjMzQ7LCBjbSk7CiBmYWlsOgomIzQzOwlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCXVzYl9raWxsX3VyYihpbnN0YW5jZS0mZ3Q7cmN2X3VyYik7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7aW5zdGFuY2UtJmd0O2NtX3NlcmlhbGl6ZSk7CiBlcnI6CiAJcmV0dXJuIHJldDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1NQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFVTQiBBVE0gRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgYmVlbiBhcHBsaWVkIHRvIGBkcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmNgLiBUaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBzZWVtcyB0byBiZSB0aGUgaW5jbHVzaW9uIG9mIGB1c2Jfa2lsbF91cmIoaW5zdGFuY2UtJmd0O3Jjdl91cmIpO2Agd2l0aGluIHRoZSBgZmFpbDpgIHBhdGggb2YgdGhlIGBjeGFjcnVfY20oKWAgZnVuY3Rpb24uIFRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uLCBhbmQgdGhhdCYjMzk7cyBzb21ldGhpbmcgSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQuCgpNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gc2NydXRpbml6ZSB0aGUgYGN4YWNydV9jbWAgZnVuY3Rpb24gaXRzZWxmLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UsIGl0cyBsb2dpYywgYW5kIG1vc3QgaW1wb3J0YW50bHksIHdoeSB0aGlzIG5ldyBsaW5lIGlzIGJlaW5nIGFkZGVkIGluIHRoZSBmYWlsdXJlIGNhc2UuIFdoYXQgZG9lcyBgaW5zdGFuY2UtJmd0O3Jjdl91cmJgIHJlcHJlc2VudD8gV2hhdCBzdGF0ZSBpcyB0aGUgc3lzdGVtIGluIHdoZW4gYHJldCAmbHQ7IDBgIG9jY3Vycz8gV2hhdCYjMzk7cyB0aGUgaW50ZW5kZWQgZWZmZWN0IG9mIGtpbGxpbmcgdGhhdCB1cmI/IFByZXZlbnRpbmcgYSByZXNvdXJjZSBsZWFrPyBIYW5kbGluZyBhbiBlcnJvciBjb25kaXRpb24/CgpCZXlvbmQgYGN4YWNydV9jbWAsIEkgYWxzbyBuZWVkIHRvIG1hcCBvdXQgd2hvIHRoZSBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gYXJlLiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGFuZCB3aXRoaW4gd2hhdCBjb250ZXh0cywgdG8gYXNzZXNzIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UgaW4gdGhlIGxhcmdlciBwaWN0dXJlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIHBhcnRpY3VsYXIgYWN0aW9uIHJlbGF0ZXMgdG8gdGhlIG92ZXJhbGwgVVNCIEFUTSBkcml2ZXIsIGFuZCBzcGVjaWZpY2FsbHksIHRoZSBDWEFDUlUgZnVuY3Rpb25hbGl0eS4gVGhpcyBwYXRjaCBjb3VsZCBhZGRyZXNzIGEgcmFjZSBjb25kaXRpb24sIGltcHJvdmUgZXJyb3IgaGFuZGxpbmcsIG9yIGVuaGFuY2UgcmVzb3VyY2UgbWFuYWdlbWVudC4gTXkgam9iIG5vdyBpcyB0byBkZXRlcm1pbmUgKmV4YWN0bHkqIHdoYXQgdGhpcyBwYXRjaCBpcyBkb2luZyBhbmQgd2hhdCBpdHMgaW1wbGljYXRpb25zIGFyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjeGFjcnVfY20mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTU5PWVudW0gY3hhY3J1X2Z3X3JlcXVlc3Qge1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MC0gKiBmaXJtd2FyZSBpcyBsb2FkZWQgICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzE6ZW51bSBjeGFjcnVfY21fcmVxdWVzdCB7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzItXHRDTV9SRVFVRVNUX1VOREVGSU5FRCA9IDB4ODAsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwOC0gKi9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDk6ZW51bSBjeGFjcnVfY21fZmxhc2gge1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMC1cdENNX0ZMQVNIX1JFQUQgPSAweGExLFxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTQtLyogcmVwbHkgY29kZXMgdG8gdGhlIGNvbW1hbmRzIGFib3ZlICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTE1OmVudW0gY3hhY3J1X2NtX3N0YXR1cyB7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE2LVx0Q01fU1RBVFVTX1VOREVGSU5FRCxcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9MTcwPXN0cnVjdCBjeGFjcnVfZGF0YSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE5Mi1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxOTM6c3RhdGljIGludCBjeGFjcnVfY20oc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSwgZW51bSBjeGFjcnVfY21fcmVxdWVzdCBjbSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xOTQtXHR1OCAqd2RhdGEsIGludCB3c2l6ZSwgdTggKnJkYXRhLCBpbnQgcnNpemUpO1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz0zMzI9c3RhdGljIHNzaXplX3QgYWRzbF9zdGF0ZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTM1Ni1cdGlmICghc3RyY21wKHN0cl9jbWQsIFwmIzM0O3N0b3BcJiMzNDspIHx8ICFzdHJjbXAoc3RyX2NtZCwgXCYjMzQ7cmVzdGFydFwmIzM0OykpIHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzozNTc6XHRcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVE9QLCBOVUxMLCAwLCBOVUxMLCAwKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zNTgtXHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzc2LVx0aWYgKCFzdHJjbXAoc3RyX2NtZCwgXCYjMzQ7c3RhcnRcJiMzNDspIHx8ICFzdHJjbXAoc3RyX2NtZCwgXCYjMzQ7cmVzdGFydFwmIzM0OykpIHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzozNzc6XHRcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVEFSVCwgTlVMTCwgMCwgTlVMTCwgMCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzc4LVx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTQzNT1zdGF0aWMgc3NpemVfdCBhZHNsX2NvbmZpZ19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTQ4MC1cdFx0XHRkYXRhWzBdID0gY3B1X3RvX2xlMzIobnVtKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo0ODE6XHRcdFx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfREFUQV9TRVQsXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNDgyLVx0XHRcdFx0KHU4ICopIGRhdGEsIDQgJiM0MzsgbnVtICogOCwgTlVMTCwgMCk7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTU5MD1zdGF0aWMgaW50IGN4YWNydV9zdGFydF93YWl0X3VyYihzdHJ1Y3QgdXJiICp1cmIsIHN0cnVjdCBjb21wbGV0aW9uICpkb25lLFxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy02MDctXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NjA4OnN0YXRpYyBpbnQgY3hhY3J1X2NtKHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UsIGVudW0gY3hhY3J1X2NtX3JlcXVlc3QgY20sXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNjA5LVx0XHQgICAgIHU4ICp3ZGF0YSwgaW50IHdzaXplLCB1OCAqcmRhdGEsIGludCByc2l6ZSlcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzA5LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjcxMDpzdGF0aWMgaW50IGN4YWNydV9jbV9nZXRfYXJyYXkoc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSwgZW51bSBjeGFjcnVfY21fcmVxdWVzdCBjbSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MTEtXHRcdFx0ICAgICAgIHUzMiAqZGF0YSwgaW50IHNpemUpXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyMy1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3MjQ6XHRyZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIGNtLCBOVUxMLCAwLCAodTggKikgYnVmLCBidWZsZW4pO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyNS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyNy1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3Mjg6XHQvKiBsZW4gXHUwMDNlIDAgXHUwMDI2XHUwMDI2IGxlbiAlIDQgPT0gMCBndWFyYW50ZWVkIGJ5IGN4YWNydV9jbSgpICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzI5LVx0bGVuID0gcmV0IC8gNDtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9NzYwPXN0YXRpYyBpbnQgY3hhY3J1X2NhcmRfc3RhdHVzKHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UpXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzYxLXtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3NjI6XHRpbnQgcmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfR0VUX1NUQVRVUywgTlVMTCwgMCwgTlVMTCwgMCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzYzLVxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz03NzE9c3RhdGljIGludCBjeGFjcnVfYXRtX3N0YXJ0KHN0cnVjdCB1c2JhdG1fZGF0YSAqdXNiYXRtX2luc3RhbmNlLFxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03ODEtXHQvKiBSZWFkIE1BQyBhZGRyZXNzICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzgyOlx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfR0VUX01BQ19BRERSRVNTLCBOVUxMLCAwLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc4My1cdFx0XHRhdG1fZGV2LVx1MDAzZWVzaSwgc2l6ZW9mKGF0bV9kZXYtXHUwMDNlZXNpKSk7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc5MC1cdG11dGV4X2xvY2soXHUwMDI2aW5zdGFuY2UtXHUwMDNlYWRzbF9zdGF0ZV9zZXJpYWxpemUpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjc5MTpcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVEFSVCwgTlVMTCwgMCwgTlVMTCwgMCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzkyLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9ODIwPXN0YXRpYyB2b2lkIGN4YWNydV9wb2xsX3N0YXR1cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTgyOS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo4MzA6XHRyZXQgPSBjeGFjcnVfY21fZ2V0X2FycmF5KGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfSU5GT19HRVQsIGJ1ZiwgQ1hJTkZfTUFYKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy04MzEtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTEwMDY9c3RhdGljIGludCBjeGFjcnVfaGVhdnlfaW5pdChzdHJ1Y3QgdXNiYXRtX2RhdGEgKnVzYmF0bV9pbnN0YW5jZSxcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTEwMS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTAyOlx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfR0VUX1NUQVRVUywgTlVMTCwgMCwgTlVMTCwgMCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTEwMy1cdGlmIChyZXQgXHUwMDNjIDApIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzU3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipEZWVwIERpdmUgaW50byB0aGUgVVNCIEFUTSBEcml2ZXIqKgoKQWxyaWdodCwgc28gdGhlIGBjeGFjcnVfY21gIG1vZHVsZS4uLiB0aGF0JiMzOTtzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgVVNCIEFUTSBkcml2ZXIgbGllcy4gSXQmIzM5O3MgY3J1Y2lhbCBiZWNhdXNlIGl0JiMzOTtzIHRoZSBmb3VuZGF0aW9uIGZvciBzZXZlcmFsIGtleSBmdW5jdGlvbnMuIEkgc2VlIGl0IGJlaW5nIGNhbGxlZCBmcm9tIGBjeGFjcnVfY21fZ2V0X2FycmF5YCwgYGN4YWNydV9jYXJkX3N0YXR1c2AsIGBjeGFjcnVfYXRtX3N0YXJ0YCwgYGN4YWNydV9oZWF2eV9pbml0YCwgYW5kIGV2ZW4gdGhlIHN0b3JhZ2UgZnVuY3Rpb25zIGZvciBEU0wgc3RhdGUgYW5kIGNvbmZpZ3VyYXRpb24sIGBhZHNsX3N0YXRlX3N0b3JlYCwgYW5kIGBhZHNsX2NvbmZpZ19zdG9yZWAuIFRoYXQgZ2l2ZXMgbWUgYSBkZWNlbnQgb3ZlcnZpZXcgb2YgaXRzIGltcG9ydGFuY2UuIEl0JiMzOTtzIGVzc2VudGlhbGx5IHRoZSBiYWNrYm9uZSBvZiBhbGwgaW50ZXJhY3Rpb25zIHdpdGggdGhlIEFUTSBoYXJkd2FyZSBvdmVyIHRoZSBVU0IgYnVzLgoKR2l2ZW4gdGhlIGNlbnRyYWxpdHkgb2YgdGhpcyBtb2R1bGUsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBjeGFjcnVgLiBJdCYjMzk7cyB0aGUgYmVzdCB3YXkgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaXMgY29uZmlndXJlZCwgaXRzIGRlcGVuZGVuY2llcywgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvcHRpb25zLiBLbm93aW5nIHRoZSBLY29uZmlnIG9wdGlvbnMgd2lsbCBnaXZlIG1lIHRoZSBpbmZvcm1hdGlvbiBJIG5lZWQgdG8gY29uZmlybSBob3cgdGhlIGRyaXZlciBpcyBjb25maWd1cmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2N4YWNydSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2F0bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2F0bS9LY29uZmlnPTMyPWNvbmZpZyBVU0JfQ1hBQ1JVXG4tLVxuZHJpdmVycy91c2IvYXRtL0tjb25maWctNDEtXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuZHJpdmVycy91c2IvYXRtL0tjb25maWc6NDI6XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBjeGFjcnUuXG5kcml2ZXJzL3VzYi9hdG0vS2NvbmZpZy00My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODExCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgc3VtbWFyaXplZCwgYXNzdW1pbmcgSSYjMzk7bSBhbHJlYWR5IHByZXR0eSBmYW1pbGlhciB3aXRoIEtjb25maWc6CgoqKkRlZXAgRGl2ZSBpbnRvIGBVU0JfQ1hBQ1JVYCBLY29uZmlnKioKCkFscmlnaHQsIGJlZm9yZSBJIG1ha2UgYW55IGFzc3VtcHRpb25zIG9yIGp1bXAgdG8gY29uY2x1c2lvbnMsIEkgbmVlZCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gcHVsbCB1cCB0aGUgY29tcGxldGUgS2NvbmZpZyBlbnRyeSBmb3IgYFVTQl9DWEFDUlVgLiBVbmRlcnN0YW5kaW5nIHRoZSBmdWxsIGNvbnRleHQsIGluY2x1ZGluZyBpdHMgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHNldHRpbmdzLCBoZWxwIHRleHQsIGFuZCBhbnkgZGVmaW5lZCB0cmlzdGF0ZSB2YWx1ZXMsIGlzIGNyaXRpY2FsLiBJIGNhbiYjMzk7dCByZWFsbHkgbWFrZSBhbiBpbmZvcm1lZCBkZWNpc2lvbiBvciBjb250cmlidXRlIG1lYW5pbmdmdWxseSB3aXRob3V0IHRoYXQgZm91bmRhdGlvbmFsIGtub3dsZWRnZS4gS25vd2luZyB0aGUgZnVsbCBlbnRyeSBhbGxvd3MgbWUgdG86CgoqICAgKipEZXRlcm1pbmUgaXRzIHB1cnBvc2U6KiogV2hhdCBpcyB0aGlzIGBVU0JfQ1hBQ1JVYCBvcHRpb24gaW50ZW5kZWQgdG8gZG8/IFdoYXQgZGV2aWNlIG9yIGZ1bmN0aW9uIGRvZXMgaXQgY29udHJvbD8KKiAgICoqVW5kZXJzdGFuZCBkZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBLY29uZmlnIHN5bWJvbHMgZG9lcyBpdCByZWx5IG9uPyBXaGljaCBvcHRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBiZWZvcmUgdGhpcyBvbmUgYmVjb21lcyBhdmFpbGFibGU/IEFyZSB0aGVyZSBhbnkgY29uZmxpY3RzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8KKiAgICoqRXZhbHVhdGUgRGVmYXVsdCBWYWx1ZXM6KiogQXJlIHRoZSBkZWZhdWx0IHNldHRpbmdzIGFwcHJvcHJpYXRlIGZvciB0aGUgdGFyZ2V0IGNvbmZpZ3VyYXRpb24/IERvIHRoZXkgYWxpZ24gd2l0aCB0aGUgZ2VuZXJhbCBkZXNpZ24gcGhpbG9zb3BoeSBvZiB0aGUgcHJvamVjdD8KKiAgICoqR3Jhc3AgdGhlIEhlbHAgVGV4dDoqKiBXaGF0IGFyZSB0aGUgaW50ZW5kZWQgdXNlIGNhc2VzIGZvciB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uPyBEb2VzIHRoZSBoZWxwIHRleHQgb2ZmZXIgZW5vdWdoIGNsYXJpdHkgb3IgZG9lcyBpdCBuZWVkIHRvIGJlIHVwZGF0ZWQ/CiogICAqKkFzc2VzcyB0cmlzdGF0ZSBsb2dpYzoqKiBJIG11c3QgdW5kZXJzdGFuZCBhbGwgdGhyZWUgc3RhdGVzICh5LCBuLCBtKSBhbmQgaG93IHRoYXQgYWZmZWN0cyBmdW5jdGlvbmFsaXR5LCBlc3BlY2lhbGx5IGlmIHRoaXMgaXMgYSBkcml2ZXIgb3IgaGFyZHdhcmUgc3VwcG9ydCBvcHRpb24uCgpFc3NlbnRpYWxseSwgSSBuZWVkIHRoZSByYXcgZGF0YS4gVGhpcyBLY29uZmlnIGVudHJ5IGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgYW55IGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiwgcG90ZW50aWFsIG1vZGlmaWNhdGlvbnMsIG9yIGRpc2N1c3Npb25zLiBObyBzaG9ydGN1dHMgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0NYQUNSVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2F0bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2F0bS9LY29uZmlnPTIwPWNvbmZpZyBVU0JfU1BFRURUT1VDSFxuLS1cbmRyaXZlcnMvdXNiL2F0bS9LY29uZmlnLTMxLVxuZHJpdmVycy91c2IvYXRtL0tjb25maWc6MzI6Y29uZmlnIFVTQl9DWEFDUlVcbmRyaXZlcnMvdXNiL2F0bS9LY29uZmlnLTMzLVx0dHJpc3RhdGUgXCYjMzQ7Q29uZXhhbnQgQWNjZXNzUnVubmVyIFVTQiBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI5NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIEtjb25maWcgRmlsZSAtIExpbmUgMzIqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgemVyb2luZyBpbiBvbiB0aGUgS2NvbmZpZyBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMzIuIFRoYXQmIzM5O3MgdXN1YWxseSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGEgcmVhc29uLCBhbmQgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGFyZWEgbGlrZWx5IHRvdWNoZXMgc29tZXRoaW5nIGludGVyZXN0aW5nLiBJdCBjb3VsZCBiZSBhIGNvcmUgbW9kdWxlIGRlZmluaXRpb24sIGEgZmVhdHVyZSBmbGFnLCBvciBwZXJoYXBzIGV2ZW4gYSBkZXBlbmRlbmN5IEkgbmVlZCB0byBmdWxseSBncmFzcCBiZWZvcmUgbW92aW5nIG9uLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgY2FyZWZ1bGx5IGF0IHRoZSBjb250ZXh0IGFyb3VuZCB0aGF0IGxpbmUsIHRyYWNlIGFueSByZWxldmFudCBzeW1ib2xzLCBhbmQgdW5kZXJzdGFuZCB3aGF0IHRoYXQgcGFydGljdWxhciBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBkb2luZyBhbmQgd2h5LiBJIGV4cGVjdCB0aGVyZSBpcyBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBteSBleHBlcnRpc2UgdG8gdW5kZXJzdGFuZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjU6XHRcdCAgbW9kZW0uICBJbiBvcmRlciB0byB1c2UgeW91ciBtb2RlbSB5b3Ugd2lsbCBuZWVkIHRvIGluc3RhbGwgdGhlIFxuICAyNjpcdFx0ICB0d28gcGFydHMgb2YgdGhlIGZpcm13YXJlLCBleHRyYWN0ZWQgYnkgdGhlIHVzZXIgc3BhY2UgdG9vbHM7IHNlZVxuICAyNzpcdFx0ICBcdTAwM2NodHRwOi8vd3d3LmxpbnV4LXVzYi5vcmcvU3BlZWRUb3VjaC9cdTAwM2UgZm9yIGRldGFpbHMuXG4gIDI4Olx0XG4gIDI5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuICAzMDpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc3BlZWR0Y2guXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIFVTQl9DWEFDUlVcbiAgMzM6XHRcdHRyaXN0YXRlIFwmIzM0O0NvbmV4YW50IEFjY2Vzc1J1bm5lciBVU0Igc3VwcG9ydFwmIzM0O1xuICAzNDpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAzNTpcdFx0aGVscFxuICAzNjpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSBoYXZlIGFuIEFEU0wgVVNCIG1vZGVtIGJhc2VkIG9uIHRoZSBDb25leGFudFxuICAzNzpcdFx0ICBBY2Nlc3NSdW5uZXIgY2hpcHNldC4gIEluIG9yZGVyIHRvIHVzZSB5b3VyIG1vZGVtIHlvdSB3aWxsIG5lZWQgdG9cbiAgMzg6XHRcdCAgaW5zdGFsbCB0aGUgZmlybXdhcmUsIGV4dHJhY3RlZCBieSB0aGUgdXNlciBzcGFjZSB0b29sczsgc2VlXG4gIDM5Olx0XHQgIFx1MDAzY2h0dHA6Ly9hY2Nlc3NydW5uZXIuc291cmNlZm9yZ2UubmV0L1x1MDAzZSBmb3IgZGV0YWlscy5cbiAgNDA6XHRcbiAgNDE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDQyOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBjeGFjcnUuXG4gIDQzOlx0XG4gIDQ0Olx0Y29uZmlnIFVTQl9VRUFHTEVBVE1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgzMAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBhIFVTQiBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kqKgoKQWxyaWdodCwgc28gdGhlIGNvbmZpZyBpbiBxdWVzdGlvbiBpcyBgVVNCX0NYQUNSVWAuIEkmIzM5O20gZ3Vlc3NpbmcgdGhhdCBkZXBlbmRzIG9uIGBVU0JfQVRNYC4gTGV0JiMzOTtzIGFzc3VtZSBgVVNCX0FUTWAgaXMgdGhlIHBhcmVudCwgc28gSSBzaG91bGQgcHJvYmFibHkgc3RhcnQgYnkgY2hlY2tpbmcgb3V0IHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUgaW4gYGRyaXZlcnMvdXNiL2F0bS9gLiBMZXQmIzM5O3MgZ2V0IHJpZ2h0IGludG8gYGRyaXZlcnMvdXNiL2F0bS9LY29uZmlnYCBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4gSSYjMzk7bGwgcmVhZCBpdCBmcm9tIHRoZSB0b3AgYW5kIHNlZSB3aGVyZSB0aGlzIHJhYmJpdCBob2xlIGxlYWRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2F0bS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIFVTQi9BVE0gRFNMIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudWNvbmZpZyBVU0JfQVRNXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgRFNMIG1vZGVtIHN1cHBvcnRcJiMzNDtcbiAgIDg6XHRcdGRlcGVuZHMgb24gQVRNXG4gICA5Olx0XHRzZWxlY3QgQ1JDMzJcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBjb25uZWN0IGEgVVNCIERpZ2l0YWwgU3Vic2NyaWJlciBMaW5lIChEU0wpXG4gIDEyOlx0XHQgIG1vZGVtIHRvIHlvdXIgY29tcHV0ZXImIzM5O3MgVVNCIHBvcnQuICBZb3Ugd2lsbCB0aGVuIG5lZWQgdG8gY2hvb3NlIHlvdXJcbiAgMTM6XHRcdCAgbW9kZW0gZnJvbSB0aGUgbGlzdCBiZWxvdy5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDE2Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB1c2JhdG0uXG4gIDE3Olx0XG4gIDE4Olx0aWYgVVNCX0FUTVxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBVU0JfU1BFRURUT1VDSFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Mjc2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgY3hhY3J1X2NtIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBVU0JfQ1hBQ1JVYCBkcml2ZXIsIGFuZCBJIHNlZSBpdHMgZGVwZW5kZW5jeSBjaGFpbjogaXQgcmVsaWVzIG9uIGBVU0JfQVRNYCwgd2hpY2gsIGluIHR1cm4sIGRlcGVuZHMgb24gYEFUTWAuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93IGZvciBjb250ZXh0LiBUaGUgcGF0Y2ggaXRzZWxmIGlzIGxvY2F0ZWQgd2l0aGluIGBjeGFjcnVfY21gLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIGJlIHJlbGlhYmx5IHRyaWdnZXJlZCBmb3IgdGVzdGluZz8gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIFVTQiBkcml2ZXIsIHRoZSBhbnN3ZXIgaXMgbW9zdCBsaWtlbHkgeWVzLiBTeXprYWxsZXImIzM5O3MgVVNCIGVtdWxhdGlvbiBjYXBhYmlsaXRpZXMgc2hvdWxkIGFsbG93IGl0IHRvIGJvdGggaW5pdGlhbGl6ZSB0aGUgVVNCIGRldmljZSBhbmQgdGhlbiBlc3RhYmxpc2ggY29tbXVuaWNhdGlvbiB3aXRoIHRoZSB0YXJnZXQgc3lzdGVtLgoKU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBgdXNiX2tpbGxfdXJiKGluc3RhbmNlLSZndDtyY3ZfdXJiKTtgIHdpdGhpbiB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiBgY3hhY3J1X2NtYC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHRvIGhvdyBlcnJvciBoYW5kbGluZyBvY2N1cnMuIFRoYXQmIzM5O3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGRlZXAgZGl2ZS4gQmVmb3JlIGFueXRoaW5nIGVsc2UsIEkgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgZnVuY3Rpb24gc2lnbmF0dXJlIG9mIGBjeGFjcnVfY21gLiBJIHdpbGwgYWxzbyBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBpdCYjMzk7cyBkZWNsYXJlZCBgc3RhdGljYC4gVGhhdCBpbmZvcm1hdGlvbiBtYXkgYmUgaW1wb3J0YW50IGxhdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjeGFjcnVfY20mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTU5PWVudW0gY3hhY3J1X2Z3X3JlcXVlc3Qge1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MC0gKiBmaXJtd2FyZSBpcyBsb2FkZWQgICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzE6ZW51bSBjeGFjcnVfY21fcmVxdWVzdCB7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzItXHRDTV9SRVFVRVNUX1VOREVGSU5FRCA9IDB4ODAsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwOC0gKi9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDk6ZW51bSBjeGFjcnVfY21fZmxhc2gge1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMC1cdENNX0ZMQVNIX1JFQUQgPSAweGExLFxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTQtLyogcmVwbHkgY29kZXMgdG8gdGhlIGNvbW1hbmRzIGFib3ZlICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTE1OmVudW0gY3hhY3J1X2NtX3N0YXR1cyB7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE2LVx0Q01fU1RBVFVTX1VOREVGSU5FRCxcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9MTcwPXN0cnVjdCBjeGFjcnVfZGF0YSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE5Mi1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxOTM6c3RhdGljIGludCBjeGFjcnVfY20oc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSwgZW51bSBjeGFjcnVfY21fcmVxdWVzdCBjbSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xOTQtXHR1OCAqd2RhdGEsIGludCB3c2l6ZSwgdTggKnJkYXRhLCBpbnQgcnNpemUpO1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz0zMzI9c3RhdGljIHNzaXplX3QgYWRzbF9zdGF0ZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTM1Ni1cdGlmICghc3RyY21wKHN0cl9jbWQsIFwmIzM0O3N0b3BcJiMzNDspIHx8ICFzdHJjbXAoc3RyX2NtZCwgXCYjMzQ7cmVzdGFydFwmIzM0OykpIHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzozNTc6XHRcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVE9QLCBOVUxMLCAwLCBOVUxMLCAwKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zNTgtXHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzc2LVx0aWYgKCFzdHJjbXAoc3RyX2NtZCwgXCYjMzQ7c3RhcnRcJiMzNDspIHx8ICFzdHJjbXAoc3RyX2NtZCwgXCYjMzQ7cmVzdGFydFwmIzM0OykpIHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzozNzc6XHRcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVEFSVCwgTlVMTCwgMCwgTlVMTCwgMCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzc4LVx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTQzNT1zdGF0aWMgc3NpemVfdCBhZHNsX2NvbmZpZ19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTQ4MC1cdFx0XHRkYXRhWzBdID0gY3B1X3RvX2xlMzIobnVtKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo0ODE6XHRcdFx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfREFUQV9TRVQsXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNDgyLVx0XHRcdFx0KHU4ICopIGRhdGEsIDQgJiM0MzsgbnVtICogOCwgTlVMTCwgMCk7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTU5MD1zdGF0aWMgaW50IGN4YWNydV9zdGFydF93YWl0X3VyYihzdHJ1Y3QgdXJiICp1cmIsIHN0cnVjdCBjb21wbGV0aW9uICpkb25lLFxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy02MDctXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NjA4OnN0YXRpYyBpbnQgY3hhY3J1X2NtKHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UsIGVudW0gY3hhY3J1X2NtX3JlcXVlc3QgY20sXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNjA5LVx0XHQgICAgIHU4ICp3ZGF0YSwgaW50IHdzaXplLCB1OCAqcmRhdGEsIGludCByc2l6ZSlcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzA5LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjcxMDpzdGF0aWMgaW50IGN4YWNydV9jbV9nZXRfYXJyYXkoc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSwgZW51bSBjeGFjcnVfY21fcmVxdWVzdCBjbSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MTEtXHRcdFx0ICAgICAgIHUzMiAqZGF0YSwgaW50IHNpemUpXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyMy1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3MjQ6XHRyZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIGNtLCBOVUxMLCAwLCAodTggKikgYnVmLCBidWZsZW4pO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyNS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyNy1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3Mjg6XHQvKiBsZW4gXHUwMDNlIDAgXHUwMDI2XHUwMDI2IGxlbiAlIDQgPT0gMCBndWFyYW50ZWVkIGJ5IGN4YWNydV9jbSgpICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzI5LVx0bGVuID0gcmV0IC8gNDtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9NzYwPXN0YXRpYyBpbnQgY3hhY3J1X2NhcmRfc3RhdHVzKHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UpXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzYxLXtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3NjI6XHRpbnQgcmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfR0VUX1NUQVRVUywgTlVMTCwgMCwgTlVMTCwgMCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzYzLVxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz03NzE9c3RhdGljIGludCBjeGFjcnVfYXRtX3N0YXJ0KHN0cnVjdCB1c2JhdG1fZGF0YSAqdXNiYXRtX2luc3RhbmNlLFxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03ODEtXHQvKiBSZWFkIE1BQyBhZGRyZXNzICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzgyOlx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfR0VUX01BQ19BRERSRVNTLCBOVUxMLCAwLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc4My1cdFx0XHRhdG1fZGV2LVx1MDAzZWVzaSwgc2l6ZW9mKGF0bV9kZXYtXHUwMDNlZXNpKSk7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc5MC1cdG11dGV4X2xvY2soXHUwMDI2aW5zdGFuY2UtXHUwMDNlYWRzbF9zdGF0ZV9zZXJpYWxpemUpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjc5MTpcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVEFSVCwgTlVMTCwgMCwgTlVMTCwgMCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzkyLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9ODIwPXN0YXRpYyB2b2lkIGN4YWNydV9wb2xsX3N0YXR1cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTgyOS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo4MzA6XHRyZXQgPSBjeGFjcnVfY21fZ2V0X2FycmF5KGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfSU5GT19HRVQsIGJ1ZiwgQ1hJTkZfTUFYKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy04MzEtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTEwMDY9c3RhdGljIGludCBjeGFjcnVfaGVhdnlfaW5pdChzdHJ1Y3QgdXNiYXRtX2RhdGEgKnVzYmF0bV9pbnN0YW5jZSxcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTEwMS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTAyOlx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfR0VUX1NUQVRVUywgTlVMTCwgMCwgTlVMTCwgMCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTEwMy1cdGlmIChyZXQgXHUwMDNjIDApIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODUzOAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKlRhcmdldGluZyB0aGUgRHluYW1pYyBFbGVtZW50cyoqCgpBbHJpZ2h0LCBgY3hhY3J1X2NtYCBpcyBhIGtub3duIHF1YW50aXR5LCBhIHN0YXRpYyBjb21wb25lbnQuIFRoZXJlZm9yZSwgaXQmIzM5O3Mgbm90IHRoZSBwcmltYXJ5IHNvdXJjZSBvZiB0aGUgdmFyaWFiaWxpdHkgb3IgaW50ZXJlc3RpbmcgYmVoYXZpb3IgSSYjMzk7bSBjaGFzaW5nLiBUaGUga2V5IGxpZXMgaW4gdW5kZXJzdGFuZGluZyBob3cgdGhpcyBzdGF0aWMgZWxlbWVudCBpbnRlcmFjdHMgd2l0aCB0aGUgZHluYW1pYyBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHRoZSBub24tc3RhdGljIGNvZGUgcGF0aHMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBwb2ludHMgd2hlcmUgZXhlY3V0aW9uICplbnRlcnMqIG9yIGNhbGxzIGludG8gb3IgdXNlcyBgY3hhY3J1X2NtYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBzdGF0aWMgY29tcG9uZW50IGlzIGludm9rZWQuIFRoYXQgbWVhbnMgSSBuZWVkIHRvIGxvb2sgZm9yIGZ1bmN0aW9ucyB0aGF0IGFyZSBleHBvcnRlZCBieSBvciBhY3QgYXMgY2FsbGJhY2sgcG9pbnRzIGZvciBgY3hhY3J1X2NtYC4gV2hlcmUgZG9lcyBpdCBwbHVnIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlPyBXaGljaCBvdGhlciBjb21wb25lbnRzIHJlbHkgb24gaXRzIHNlcnZpY2VzIG9yLCBjb252ZXJzZWx5LCB3aGljaCBjb21wb25lbnRzIGRvZXMgaXQgcmVseSBvbj8gVGhhdOKAmXMgd2hlcmUgdGhlIGludGVyZXN0aW5nIHN0dWZmIGlzIGxpa2VseSBoYXBwZW5pbmcuIExldCYjMzk7cyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgdGhlIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y3hhY3J1XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzMtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MzQ6c3RhdGljIGNvbnN0IGNoYXIgY3hhY3J1X2RyaXZlcl9uYW1lW10gPSBcJiMzNDtjeGFjcnVcJiMzNDs7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzUtXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTU4LSAqIGZpcm13YXJlIGlzIGxvYWRlZCAgKi9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo1OTplbnVtIGN4YWNydV9md19yZXF1ZXN0IHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy02MC1cdEZXX0NNRF9FUlIsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcwLSAqIGZpcm13YXJlIGlzIGxvYWRlZCAgKi9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3MTplbnVtIGN4YWNydV9jbV9yZXF1ZXN0IHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03Mi1cdENNX1JFUVVFU1RfVU5ERUZJTkVEID0gMHg4MCxcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA4LSAqL1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwOTplbnVtIGN4YWNydV9jbV9mbGFzaCB7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTEwLVx0Q01fRkxBU0hfUkVBRCA9IDB4YTEsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExNC0vKiByZXBseSBjb2RlcyB0byB0aGUgY29tbWFuZHMgYWJvdmUgKi9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTU6ZW51bSBjeGFjcnVfY21fc3RhdHVzIHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTYtXHRDTV9TVEFUVVNfVU5ERUZJTkVELFxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjYtLyogaW5kaWNlcyBpbnRvIENBUkRfSU5GT19HRVQgcmV0dXJuIGFycmF5ICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTI3OmVudW0gY3hhY3J1X2luZm9faWR4IHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjgtXHRDWElORl9ET1dOU1RSRUFNX1JBVEUsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE1Ni1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxNTc6ZW51bSBjeGFjcnVfcG9sbF9zdGF0ZSB7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTU4LVx0Q1hQT0xMX1NUT1BQSU5HLFxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xNjMtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTY0OnN0cnVjdCBjeGFjcnVfbW9kZW1fdHlwZSB7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTY1LVx0dTMyIHBsbF9mX2Nsaztcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTY5LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjE3MDpzdHJ1Y3QgY3hhY3J1X2RhdGEge1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE3MS1cdHN0cnVjdCB1c2JhdG1fZGF0YSAqdXNiYXRtO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE3Mi1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxNzM6XHRjb25zdCBzdHJ1Y3QgY3hhY3J1X21vZGVtX3R5cGUgKm1vZGVtX3R5cGU7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTc0LVxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xODAtXHRzdHJ1Y3QgbXV0ZXggcG9sbF9zdGF0ZV9zZXJpYWxpemU7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTgxOlx0ZW51bSBjeGFjcnVfcG9sbF9zdGF0ZSBwb2xsX3N0YXRlO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE4Mi1cbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTkyLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjE5MzpzdGF0aWMgaW50IGN4YWNydV9jbShzdHJ1Y3QgY3hhY3J1X2RhdGEgKmluc3RhbmNlLCBlbnVtIGN4YWNydV9jbV9yZXF1ZXN0IGNtLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE5NC1cdHU4ICp3ZGF0YSwgaW50IHdzaXplLCB1OCAqcmRhdGEsIGludCByc2l6ZSk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTk1OnN0YXRpYyB2b2lkIGN4YWNydV9wb2xsX3N0YXR1cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE5Ni1cbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9MjA4PXN0YXRpYyBzc2l6ZV90IF9uYW1lIyNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIFxcXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTIxMC17IFxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjExOlx0c3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSA9IHRvX3VzYmF0bV9kcml2ZXJfZGF0YShcXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTIxMi1cdFx0dG9fdXNiX2ludGVyZmFjZShkZXYpKTsgXFxcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMjE2LVxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjE3Olx0cmV0dXJuIGN4YWNydV9zeXNmc19zaG93YXR0cl8jI190eXBlKGluc3RhbmNlLVx1MDAzZWNhcmRfaW5mb1tfdmFsdWVdLCBidWYpOyBcXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTIxOC19IFxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9MjE5PUNYQUNSVV9fQVRUUl9JTklUKF9uYW1lKVxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yMzAtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjMxOnN0YXRpYyBzc2l6ZV90IGN4YWNydV9zeXNmc19zaG93YXR0cl91MzIodTMyIHZhbHVlLCBjaGFyICpidWYpXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMjMyLXtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMjM1LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjIzNjpzdGF0aWMgc3NpemVfdCBjeGFjcnVfc3lzZnNfc2hvd2F0dHJfczgoczggdmFsdWUsIGNoYXIgKmJ1ZilcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yMzcte1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yNDAtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjQxOnN0YXRpYyBzc2l6ZV90IGN4YWNydV9zeXNmc19zaG93YXR0cl9kQihzMTYgdmFsdWUsIGNoYXIgKmJ1ZilcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yNDIte1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yNTItXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjUzOnN0YXRpYyBzc2l6ZV90IGN4YWNydV9zeXNmc19zaG93YXR0cl9ib29sKHUzMiB2YWx1ZSwgY2hhciAqYnVmKVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTI1NC17XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTI2MS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoyNjI6c3RhdGljIHNzaXplX3QgY3hhY3J1X3N5c2ZzX3Nob3dhdHRyX0xJTksodTMyIHZhbHVlLCBjaGFyICpidWYpXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMjYzLXtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMjcwLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjI3MTpzdGF0aWMgc3NpemVfdCBjeGFjcnVfc3lzZnNfc2hvd2F0dHJfTElORSh1MzIgdmFsdWUsIGNoYXIgKmJ1ZilcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yNzIte1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yODEtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjgyOnN0YXRpYyBzc2l6ZV90IGN4YWNydV9zeXNmc19zaG93YXR0cl9NT0RVKHUzMiB2YWx1ZSwgY2hhciAqYnVmKVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTI4My17XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTMwMz1zdGF0aWMgc3NpemVfdCBtYWNfYWRkcmVzc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzA1LXtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzozMDY6XHRzdHJ1Y3QgY3hhY3J1X2RhdGEgKmluc3RhbmNlID0gdG9fdXNiYXRtX2RyaXZlcl9kYXRhKFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTMwNy1cdFx0XHR0b191c2JfaW50ZXJmYWNlKGRldikpO1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz0zMTU9c3RhdGljIHNzaXplX3QgYWRzbF9zdGF0ZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzE4LVx0c3RhdGljIGNoYXIgKnN0cltdID0geyBcJiMzNDtydW5uaW5nXCYjMzQ7LCBcJiMzNDtzdG9wcGVkXCYjMzQ7IH07XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MzE5Olx0c3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSA9IHRvX3VzYmF0bV9kcml2ZXJfZGF0YShcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zMjAtXHRcdFx0dG9fdXNiX2ludGVyZmFjZShkZXYpKTtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9MzMyPXN0YXRpYyBzc2l6ZV90IGFkc2xfc3RhdGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zMzQte1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjMzNTpcdHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UgPSB0b191c2JhdG1fZHJpdmVyX2RhdGEoXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzM2LVx0XHRcdHRvX3VzYl9pbnRlcmZhY2UoZGV2KSk7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTM1Ni1cdGlmICghc3RyY21wKHN0cl9jbWQsIFwmIzM0O3N0b3BcJiMzNDspIHx8ICFzdHJjbXAoc3RyX2NtZCwgXCYjMzQ7cmVzdGFydFwmIzM0OykpIHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzozNTc6XHRcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVE9QLCBOVUxMLCAwLCBOVUxMLCAwKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zNTgtXHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzc2LVx0aWYgKCFzdHJjbXAoc3RyX2NtZCwgXCYjMzQ7c3RhcnRcJiMzNDspIHx8ICFzdHJjbXAoc3RyX2NtZCwgXCYjMzQ7cmVzdGFydFwmIzM0OykpIHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzozNzc6XHRcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVEFSVCwgTlVMTCwgMCwgTlVMTCwgMCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzc4LVx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTQyNy1cdGlmIChwb2xsID09IENYUE9MTF9QT0xMSU5HKVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjQyODpcdFx0Y3hhY3J1X3BvbGxfc3RhdHVzKFx1MDAyNmluc3RhbmNlLVx1MDAzZXBvbGxfd29yay53b3JrKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy00MjktXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTQzNT1zdGF0aWMgc3NpemVfdCBhZHNsX2NvbmZpZ19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTQzNy17XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NDM4Olx0c3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSA9IHRvX3VzYmF0bV9kcml2ZXJfZGF0YShcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy00MzktXHRcdFx0dG9fdXNiX2ludGVyZmFjZShkZXYpKTtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNDgwLVx0XHRcdGRhdGFbMF0gPSBjcHVfdG9fbGUzMihudW0pO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjQ4MTpcdFx0XHRyZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0FSRF9EQVRBX1NFVCxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy00ODItXHRcdFx0XHQodTggKikgZGF0YSwgNCAmIzQzOyBudW0gKiA4LCBOVUxMLCAwKTtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9NTM5PUNYQUNSVV9BTExfRklMRVMoSU5JVCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTQwLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjU0MTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqY3hhY3J1X2F0dHJzW10gPSB7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTQyLVx0XHUwMDI2ZGV2X2F0dHJfYWRzbF9jb25maWcuYXR0cixcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9NTcwPUFUVFJJQlVURV9HUk9VUFMoY3hhY3J1KTtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTcyLS8qIHRoZSBmb2xsb3dpbmcgdGhyZWUgZnVuY3Rpb25zIGFyZSBzdG9sZW4gZnJvbSBkcml2ZXJzL3VzYi9jb3JlL21lc3NhZ2UuYyAqL1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjU3MzpzdGF0aWMgdm9pZCBjeGFjcnVfYmxvY2tpbmdfY29tcGxldGlvbihzdHJ1Y3QgdXJiICp1cmIpXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTc0LXtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTc3LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjU3ODpzdHJ1Y3QgY3hhY3J1X3RpbWVyIHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy01NzktXHRzdHJ1Y3QgdGltZXJfbGlzdCB0aW1lcjtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTgyLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjU4MzpzdGF0aWMgdm9pZCBjeGFjcnVfdGltZW91dF9raWxsKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTU4NC17XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NTg1Olx0c3RydWN0IGN4YWNydV90aW1lciAqdGltZXIgPSB0aW1lcl9jb250YWluZXJfb2YodGltZXIsIHQsIHRpbWVyKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy01ODYtXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTU4OS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo1OTA6c3RhdGljIGludCBjeGFjcnVfc3RhcnRfd2FpdF91cmIoc3RydWN0IHVyYiAqdXJiLCBzdHJ1Y3QgY29tcGxldGlvbiAqZG9uZSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy01OTEtXHRcdFx0XHQgaW50ICphY3R1YWxfbGVuZ3RoKVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTU5Mi17XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NTkzOlx0c3RydWN0IGN4YWNydV90aW1lciB0aW1lciA9IHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy01OTQtXHRcdC51cmIgPSB1cmIsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTU5Ni1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo1OTc6XHR0aW1lcl9zZXR1cF9vbl9zdGFjayhcdTAwMjZ0aW1lci50aW1lciwgY3hhY3J1X3RpbWVvdXRfa2lsbCwgMCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTk4LVx0bW9kX3RpbWVyKFx1MDAyNnRpbWVyLnRpbWVyLCBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoQ01EX1RJTUVPVVQpKTtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNjA3LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjYwODpzdGF0aWMgaW50IGN4YWNydV9jbShzdHJ1Y3QgY3hhY3J1X2RhdGEgKmluc3RhbmNlLCBlbnVtIGN4YWNydV9jbV9yZXF1ZXN0IGNtLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTYwOS1cdFx0ICAgICB1OCAqd2RhdGEsIGludCB3c2l6ZSwgdTggKnJkYXRhLCBpbnQgcnNpemUpXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTY1Ni1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo2NTc6XHRyZXQgPSBjeGFjcnVfc3RhcnRfd2FpdF91cmIoaW5zdGFuY2UtXHUwMDNlc25kX3VyYiwgXHUwMDI2aW5zdGFuY2UtXHUwMDNlc25kX2RvbmUsIE5VTEwpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTY1OC1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNjYzLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjY2NDpcdHJldCA9IGN4YWNydV9zdGFydF93YWl0X3VyYihpbnN0YW5jZS1cdTAwM2VyY3ZfdXJiLCBcdTAwMjZpbnN0YW5jZS1cdTAwM2VyY3ZfZG9uZSwgXHUwMDI2YWN0bGVuKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy02NjUtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcwOS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3MTA6c3RhdGljIGludCBjeGFjcnVfY21fZ2V0X2FycmF5KHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UsIGVudW0gY3hhY3J1X2NtX3JlcXVlc3QgY20sXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzExLVx0XHRcdCAgICAgICB1MzIgKmRhdGEsIGludCBzaXplKVxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MjMtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzI0Olx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBjbSwgTlVMTCwgMCwgKHU4ICopIGJ1ZiwgYnVmbGVuKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MjUtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MjctXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzI4Olx0LyogbGVuIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBsZW4gJSA0ID09IDAgZ3VhcmFudGVlZCBieSBjeGFjcnVfY20oKSAqL1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyOS1cdGxlbiA9IHJldCAvIDQ7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc1OS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3NjA6c3RhdGljIGludCBjeGFjcnVfY2FyZF9zdGF0dXMoc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSlcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03NjEte1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjc2MjpcdGludCByZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0FSRF9HRVRfU1RBVFVTLCBOVUxMLCAwLCBOVUxMLCAwKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03NjMtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzY0LVx0aWYgKHJldCBcdTAwM2MgMCkge1x0XHQvKiBmaXJtd2FyZSBub3QgbG9hZGVkICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzY1Olx0XHR1c2JfZGJnKGluc3RhbmNlLVx1MDAzZXVzYmF0bSwgXCYjMzQ7Y3hhY3J1X2Fkc2xfc3RhcnQ6IENBUkRfR0VUX1NUQVRVUyByZXR1cm5lZCAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03NjYtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc3MC1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3NzE6c3RhdGljIGludCBjeGFjcnVfYXRtX3N0YXJ0KHN0cnVjdCB1c2JhdG1fZGF0YSAqdXNiYXRtX2luc3RhbmNlLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc3Mi1cdFx0c3RydWN0IGF0bV9kZXYgKmF0bV9kZXYpXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzczLXtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3NzQ6XHRzdHJ1Y3QgY3hhY3J1X2RhdGEgKmluc3RhbmNlID0gdXNiYXRtX2luc3RhbmNlLVx1MDAzZWRyaXZlcl9kYXRhO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc3NS1cdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmID0gdXNiYXRtX2luc3RhbmNlLVx1MDAzZXVzYl9pbnRmO1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03ODEtXHQvKiBSZWFkIE1BQyBhZGRyZXNzICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzgyOlx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfR0VUX01BQ19BRERSRVNTLCBOVUxMLCAwLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc4My1cdFx0XHRhdG1fZGV2LVx1MDAzZWVzaSwgc2l6ZW9mKGF0bV9kZXYtXHUwMDNlZXNpKSk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzg0LVx0aWYgKHJldCBcdTAwM2MgMCkge1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjc4NTpcdFx0YXRtX2Vycih1c2JhdG1faW5zdGFuY2UsIFwmIzM0O2N4YWNydV9hdG1fc3RhcnQ6IENBUkRfR0VUX01BQ19BRERSRVNTIHJldHVybmVkICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc4Ni1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzkwLVx0bXV0ZXhfbG9jayhcdTAwMjZpbnN0YW5jZS1cdTAwM2VhZHNsX3N0YXRlX3NlcmlhbGl6ZSk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzkxOlx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NISVBfQURTTF9MSU5FX1NUQVJULCBOVUxMLCAwLCBOVUxMLCAwKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03OTItXHRpZiAocmV0IFx1MDAzYyAwKVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjc5MzpcdFx0YXRtX2Vycih1c2JhdG1faW5zdGFuY2UsIFwmIzM0O2N4YWNydV9hdG1fc3RhcnQ6IENISVBfQURTTF9MSU5FX1NUQVJUIHJldHVybmVkICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc5NC1cbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtODE1LVx0aWYgKHN0YXJ0X3BvbGxpbmcpXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6ODE2Olx0XHRjeGFjcnVfcG9sbF9zdGF0dXMoXHUwMDI2aW5zdGFuY2UtXHUwMDNlcG9sbF93b3JrLndvcmspO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTgxNy1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy04MTktXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6ODIwOnN0YXRpYyB2b2lkIGN4YWNydV9wb2xsX3N0YXR1cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtODIxLXtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo4MjI6XHRzdHJ1Y3QgY3hhY3J1X2RhdGEgKmluc3RhbmNlID1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo4MjM6XHRcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgY3hhY3J1X2RhdGEsIHBvbGxfd29yay53b3JrKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy04MjQtXHR1MzIgYnVmW0NYSU5GX01BWF0gPSB7fTtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtODI5LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjgzMDpcdHJldCA9IGN4YWNydV9jbV9nZXRfYXJyYXkoaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0FSRF9JTkZPX0dFVCwgYnVmLCBDWElORl9NQVgpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTgzMS1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtOTM2LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjkzNzpzdGF0aWMgaW50IGN4YWNydV9mdyhzdHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldiwgZW51bSBjeGFjcnVfZndfcmVxdWVzdCBmdyxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy05MzgtXHRcdCAgICAgdTggY29kZTEsIHU4IGNvZGUyLCB1MzIgYWRkciwgY29uc3QgdTggKmRhdGEsIGludCBzaXplKVxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy05ODUtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6OTg2OnN0YXRpYyBpbnQgY3hhY3J1X2ZpbmRfZmlybXdhcmUoc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy05ODctXHRcdFx0XHRjaGFyICpwaGFzZSwgY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZndfcClcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtOTkzLVx0c3ByaW50ZihidWYsIFwmIzM0O2N4YWNydS0lcy5iaW5cJiMzNDssIHBoYXNlKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo5OTQ6XHR1c2JfZGJnKHVzYmF0bSwgXCYjMzQ7Y3hhY3J1X2ZpbmRfZmlybXdhcmU6IGxvb2tpbmcgZm9yICVzXFxuXCYjMzQ7LCBidWYpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTk5NS1cbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTAwNS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDA2OnN0YXRpYyBpbnQgY3hhY3J1X2hlYXZ5X2luaXQoc3RydWN0IHVzYmF0bV9kYXRhICp1c2JhdG1faW5zdGFuY2UsXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTAwNy1cdFx0XHQgICAgIHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zilcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTAwOS1cdGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncsICpicDtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDEwOlx0c3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSA9IHVzYmF0bV9pbnN0YW5jZS1cdTAwM2Vkcml2ZXJfZGF0YTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMDExLVx0c3RydWN0IHVzYmF0bV9kYXRhICp1c2JhdG0gPSBpbnN0YW5jZS1cdTAwM2V1c2JhdG07XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwMTctXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTAxODpcdHJldCA9IGN4YWNydV9maW5kX2Zpcm13YXJlKGluc3RhbmNlLCBcJiMzNDtmd1wmIzM0OywgXHUwMDI2ZncpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwMTktXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwMjQtXHRpZiAoaW5zdGFuY2UtXHUwMDNlbW9kZW1fdHlwZS1cdTAwM2Vib290X3JvbV9wYXRjaCkge1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwMjU6XHRcdHJldCA9IGN4YWNydV9maW5kX2Zpcm13YXJlKGluc3RhbmNlLCBcJiMzNDticFwmIzM0OywgXHUwMDI2YnApO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwMjYtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTAzNC1cdHZhbCA9IGNwdV90b19sZTMyKGluc3RhbmNlLVx1MDAzZW1vZGVtX3R5cGUtXHUwMDNlcGxsX2ZfY2xrKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDM1Olx0cmV0ID0gY3hhY3J1X2Z3KHVzYl9kZXYsIEZXX1dSSVRFX01FTSwgMHgyLCAweDAsIFBMTEZDTEtfQUREUiwgKHU4ICopIFx1MDAyNnZhbCwgNCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTAzNi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA0Mi1cdHZhbCA9IGNwdV90b19sZTMyKGluc3RhbmNlLVx1MDAzZW1vZGVtX3R5cGUtXHUwMDNlcGxsX2JfY2xrKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDQzOlx0cmV0ID0gY3hhY3J1X2Z3KHVzYl9kZXYsIEZXX1dSSVRFX01FTSwgMHgyLCAweDAsIFBMTEJDTEtfQUREUiwgKHU4ICopIFx1MDAyNnZhbCwgNCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA0NC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA1MC1cdHZhbCA9IGNwdV90b19sZTMyKFNEUkFNX0VOQSk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTA1MTpcdHJldCA9IGN4YWNydV9mdyh1c2JfZGV2LCBGV19XUklURV9NRU0sIDB4MiwgMHgwLCBTRFJBTUVOX0FERFIsICh1OCAqKSBcdTAwMjZ2YWwsIDQpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwNTItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwNTgtXHR1c2JfaW5mbyh1c2JhdG0sIFwmIzM0O2xvYWRpbmcgZmlybXdhcmVcXG5cJiMzNDspO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwNTk6XHRyZXQgPSBjeGFjcnVfZncodXNiX2RldiwgRldfV1JJVEVfTUVNLCAweDIsIDB4MCwgRldfQUREUiwgZnctXHUwMDNlZGF0YSwgZnctXHUwMDNlc2l6ZSk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA2MC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA2Ny1cdFx0dXNiX2luZm8odXNiYXRtLCBcJiMzNDtsb2FkaW5nIGJvb3QgUk9NIHBhdGNoXFxuXCYjMzQ7KTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDY4Olx0XHRyZXQgPSBjeGFjcnVfZncodXNiX2RldiwgRldfV1JJVEVfTUVNLCAweDIsIDB4MCwgQlJfQUREUiwgYnAtXHUwMDNlZGF0YSwgYnAtXHUwMDNlc2l6ZSk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA2OS1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMDc1LVx0LyogU2lnbmF0dXJlICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTA3NjpcdHJldCA9IGN4YWNydV9mdyh1c2JfZGV2LCBGV19XUklURV9NRU0sIDB4MiwgMHgwLCBTSUdfQUREUiwgKHU4ICopIHNpZ25hdHVyZSwgNCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA3Ny1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA4NC1cdFx0dmFsID0gY3B1X3RvX2xlMzIoQlJfQUREUik7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTA4NTpcdFx0cmV0ID0gY3hhY3J1X2Z3KHVzYl9kZXYsIEZXX1dSSVRFX01FTSwgMHgyLCAweDAsIEJSX1NUQUNLX0FERFIsICh1OCAqKSBcdTAwMjZ2YWwsIDQpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwODYtXHR9IGVsc2Uge1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwODc6XHRcdHJldCA9IGN4YWNydV9mdyh1c2JfZGV2LCBGV19HT1RPX01FTSwgMHgwLCAweDAsIEZXX0FERFIsIE5VTEwsIDApO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwODgtXHR9XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMDEtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTEwMjpcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DQVJEX0dFVF9TVEFUVVMsIE5VTEwsIDAsIE5VTEwsIDApO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMDMtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMTItXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTExMzpcdHJldCA9IGN4YWNydV9jYXJkX3N0YXR1cyhpbnN0YW5jZSk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTExNC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMjEtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTEyMjpzdGF0aWMgaW50IGN4YWNydV9iaW5kKHN0cnVjdCB1c2JhdG1fZGF0YSAqdXNiYXRtX2luc3RhbmNlLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMjMtXHRcdCAgICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMjQte1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjExMjU6XHRzdHJ1Y3QgY3hhY3J1X2RhdGEgKmluc3RhbmNlO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMjYtXHRzdHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50Zik7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMzktXHRpbnN0YW5jZS1cdTAwM2V1c2JhdG0gPSB1c2JhdG1faW5zdGFuY2U7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTE0MDpcdGluc3RhbmNlLVx1MDAzZW1vZGVtX3R5cGUgPSAoc3RydWN0IGN4YWNydV9tb2RlbV90eXBlICopIGlkLVx1MDAzZWRyaXZlcl9pbmZvO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExNDEtXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExNTAtXHRpZiAoIWluc3RhbmNlLVx1MDAzZXJjdl9idWYpIHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTUxOlx0XHR1c2JfZGJnKHVzYmF0bV9pbnN0YW5jZSwgXCYjMzQ7Y3hhY3J1X2JpbmQ6IG5vIG1lbW9yeSBmb3IgcmN2X2J1ZlxcblwmIzM0Oyk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE1Mi1cdFx0cmV0ID0gLUVOT01FTTtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE1Ni1cdGlmICghaW5zdGFuY2UtXHUwMDNlc25kX2J1Zikge1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjExNTc6XHRcdHVzYl9kYmcodXNiYXRtX2luc3RhbmNlLCBcJiMzNDtjeGFjcnVfYmluZDogbm8gbWVtb3J5IGZvciBzbmRfYnVmXFxuXCYjMzQ7KTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTU4LVx0XHRyZXQgPSAtRU5PTUVNO1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTcyLVx0aWYgKCFjbWRfZXApIHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTczOlx0XHR1c2JfZGJnKHVzYmF0bV9pbnN0YW5jZSwgXCYjMzQ7Y3hhY3J1X2JpbmQ6IG5vIGNvbW1hbmQgZW5kcG9pbnRcXG5cJiMzNDspO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExNzQtXHRcdHJldCA9IC1FTk9ERVY7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExODMtXHRpZiAoIXJldCkge1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjExODQ6XHRcdHVzYl9lcnIodXNiYXRtX2luc3RhbmNlLCBcJiMzNDtjeGFjcnVfYmluZDogaW50ZXJmYWNlIGhhcyBpbmNvcnJlY3QgZW5kcG9pbnRzXFxuXCYjMzQ7KTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTg1LVx0XHRyZXQgPSAtRU5PREVWO1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTkzLVx0XHRcdGluc3RhbmNlLVx1MDAzZXJjdl9idWYsIFBBR0VfU0laRSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTk0Olx0XHRcdGN4YWNydV9ibG9ja2luZ19jb21wbGV0aW9uLCBcdTAwMjZpbnN0YW5jZS1cdTAwM2VyY3ZfZG9uZSwgMSk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE5NS1cbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE5OC1cdFx0XHRpbnN0YW5jZS1cdTAwM2VzbmRfYnVmLCBQQUdFX1NJWkUsXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTE5OTpcdFx0XHRjeGFjcnVfYmxvY2tpbmdfY29tcGxldGlvbiwgXHUwMDI2aW5zdGFuY2UtXHUwMDNlc25kX2RvbmUsIDQpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyMDAtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjAzLVx0XHRcdGluc3RhbmNlLVx1MDAzZXJjdl9idWYsIFBBR0VfU0laRSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjA0Olx0XHRcdGN4YWNydV9ibG9ja2luZ19jb21wbGV0aW9uLCBcdTAwMjZpbnN0YW5jZS1cdTAwM2VyY3ZfZG9uZSk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIwNS1cbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIwOC1cdFx0XHRpbnN0YW5jZS1cdTAwM2VzbmRfYnVmLCBQQUdFX1NJWkUsXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTIwOTpcdFx0XHRjeGFjcnVfYmxvY2tpbmdfY29tcGxldGlvbiwgXHUwMDI2aW5zdGFuY2UtXHUwMDNlc25kX2RvbmUpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyMTAtXHR9XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyMTMtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTIxNDpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmluc3RhbmNlLVx1MDAzZXBvbGxfd29yaywgY3hhY3J1X3BvbGxfc3RhdHVzKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjE1LVxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjE3LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyMTg6XHR1c2JhdG1faW5zdGFuY2UtXHUwMDNlZmxhZ3MgPSAoY3hhY3J1X2NhcmRfc3RhdHVzKGluc3RhbmNlKSA/IDAgOiBVRFNMX1NLSVBfSEVBVllfSU5JVCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIxOS1cbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIzMS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjMyOnN0YXRpYyB2b2lkIGN4YWNydV91bmJpbmQoc3RydWN0IHVzYmF0bV9kYXRhICp1c2JhdG1faW5zdGFuY2UsXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIzMy1cdFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIzNC17XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTIzNTpcdHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UgPSB1c2JhdG1faW5zdGFuY2UtXHUwMDNlZHJpdmVyX2RhdGE7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIzNi1cdGludCBpc19wb2xsaW5nID0gMTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjM3LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyMzg6XHR1c2JfZGJnKHVzYmF0bV9pbnN0YW5jZSwgXCYjMzQ7Y3hhY3J1X3VuYmluZCBlbnRlcmVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjM5LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyNDAtXHRpZiAoIWluc3RhbmNlKSB7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTI0MTpcdFx0dXNiX2RiZyh1c2JhdG1faW5zdGFuY2UsIFwmIzM0O2N4YWNydV91bmJpbmQ6IE5VTEwgaW5zdGFuY2UhXFxuXCYjMzQ7KTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjQyLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyNzItXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTI3MzpzdGF0aWMgY29uc3Qgc3RydWN0IGN4YWNydV9tb2RlbV90eXBlIGN4YWNydV9jYWZlID0ge1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyNzQtXHQucGxsX2ZfY2xrID0gMHgwMmQ4NzRkZixcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTI3OC1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjc5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgY3hhY3J1X21vZGVtX3R5cGUgY3hhY3J1X2NiMDAgPSB7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTI4MC1cdC5wbGxfZl9jbGsgPSAweDUsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyODQtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTI4NTpzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgY3hhY3J1X3VzYl9pZHNbXSA9IHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjg2LVx0eyAvKiBWID0gQ29uZXhhbnRcdFx0XHRQID0gQURTTCBtb2RlbSAoRXVwaHJhdGVzIHByb2plY3QpXHQqL1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyODc6XHRcdFVTQl9ERVZJQ0UoMHgwNTcyLCAweGNhZmUpLFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFx1MDAyNmN4YWNydV9jYWZlXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTI4OC1cdH0sXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTI4OS1cdHsgLyogViA9IENvbmV4YW50XHRcdFx0UCA9IEFEU0wgbW9kZW0gKEhhc2JhbmkgcHJvamVjdClcdCovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTI5MDpcdFx0VVNCX0RFVklDRSgweDA1NzIsIDB4Y2IwMCksXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXHUwMDI2Y3hhY3J1X2NiMDBcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjkxLVx0fSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjkyLVx0eyAvKiBWID0gQ29uZXhhbnRcdFx0XHRQID0gQURTTCBtb2RlbVx0XHRcdFx0Ki9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjkzOlx0XHRVU0JfREVWSUNFKDB4MDU3MiwgMHhjYjAxKSxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcdTAwMjZjeGFjcnVfY2IwMFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyOTQtXHR9LFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyOTUtXHR7IC8qIFYgPSBDb25leGFudFx0XHRcdFAgPSBBRFNMIG1vZGVtIChXZWxsIFBUSS04MDApICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTI5NjpcdFx0VVNCX0RFVklDRSgweDA1NzIsIDB4Y2IwMiksXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXHUwMDI2Y3hhY3J1X2NiMDBcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjk3LVx0fSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjk4LVx0eyAvKiBWID0gQ29uZXhhbnRcdFx0XHRQID0gQURTTCBtb2RlbVx0XHRcdFx0Ki9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjk5Olx0XHRVU0JfREVWSUNFKDB4MDU3MiwgMHhjYjA2KSxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcdTAwMjZjeGFjcnVfY2IwMFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMDAtXHR9LFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMDEtXHR7IC8qIFYgPSBDb25leGFudFx0XHRcdFAgPSBBRFNMIG1vZGVtIChaVEUgWlhEU0wgODUyKVx0XHQqL1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzMDI6XHRcdFVTQl9ERVZJQ0UoMHgwNTcyLCAweGNiMDcpLFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFx1MDAyNmN4YWNydV9jYjAwXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMwMy1cdH0sXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMwNC1cdHsgLyogViA9IE9saXRlY1x0XHRcdFx0UCA9IEFEU0wgbW9kZW0gdmVyc2lvbiAyXHRcdCovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTMwNTpcdFx0VVNCX0RFVklDRSgweDA4ZTMsIDB4MDEwMCksXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXHUwMDI2Y3hhY3J1X2NhZmVcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzA2LVx0fSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzA3LVx0eyAvKiBWID0gT2xpdGVjXHRcdFx0XHRQID0gQURTTCBtb2RlbSB2ZXJzaW9uIDNcdFx0Ki9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzA4Olx0XHRVU0JfREVWSUNFKDB4MDhlMywgMHgwMTAyKSxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcdTAwMjZjeGFjcnVfY2IwMFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMDktXHR9LFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMTAtXHR7IC8qIFYgPSBUcnVzdC9BbWlnbyBUZWNobm9sb2d5IENvLlx0UCA9IEFNWC1DQTg2VVx0XHRcdFx0Ki9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzExOlx0XHRVU0JfREVWSUNFKDB4MGViMCwgMHgzNDU3KSxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcdTAwMjZjeGFjcnVfY2FmZVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMTItXHR9LFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMTMtXHR7IC8qIFYgPSBab29tXHRcdFx0XHRQID0gNTUxMFx0XHRcdFx0Ki9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzE0Olx0XHRVU0JfREVWSUNFKDB4MTgwMywgMHg1NTEwKSxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcdTAwMjZjeGFjcnVfY2IwMFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMTUtXHR9LFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMTYtXHR7IC8qIFYgPSBEcmF5dGVrXHRcdFx0UCA9IFZpZ29yIDMxOFx0XHRcdFx0Ki9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzE3Olx0XHRVU0JfREVWSUNFKDB4MDY3NSwgMHgwMjAwKSxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcdTAwMjZjeGFjcnVfY2IwMFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMTgtXHR9LFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMTktXHR7IC8qIFYgPSBaeXhlbFx0XHRcdFx0UCA9IDYzMC1DMSBha2EgT01OSSBBRFNMIFVTQiAoQW5uZXggQSlcdCovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTMyMDpcdFx0VVNCX0RFVklDRSgweDA1ODYsIDB4MzMwYSksXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXHUwMDI2Y3hhY3J1X2NiMDBcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzIxLVx0fSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzIyLVx0eyAvKiBWID0gWnl4ZWxcdFx0XHRcdFAgPSA2MzAtQzMgYWthIE9NTkkgQURTTCBVU0IgKEFubmV4IEIpXHQqL1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzMjM6XHRcdFVTQl9ERVZJQ0UoMHgwNTg2LCAweDMzMGIpLFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFx1MDAyNmN4YWNydV9jYjAwXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMyNC1cdH0sXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMyNS1cdHsgLyogViA9IEFldGhyYVx0XHRcdFx0UCA9IFN0YXJtb2RlbSBVTTEwMjBcdFx0XHQqL1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzMjY6XHRcdFVTQl9ERVZJQ0UoMHgwNjU5LCAweDAwMjApLFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFx1MDAyNmN4YWNydV9jYjAwXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMyNy1cdH0sXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMyOC1cdHsgLyogViA9IEF6dGVjaCBTeXN0ZW1zXHRcdFx0UCA9ID8gQUtBIFBpcmVsbGkgQVVBLTAxMFx0XHQqL1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzMjk6XHRcdFVTQl9ERVZJQ0UoMHgwNTA5LCAweDA4MTIpLFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFx1MDAyNmN4YWNydV9jYjAwXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMzMC1cdH0sXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMzMS1cdHsgLyogViA9IE5ldG9waWFcdFx0XHRQID0gQ2F5bWFuIDMzNDEoQW5uZXggQSkvMzM1MShBbm5leCBCKVx0Ki9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzMyOlx0XHRVU0JfREVWSUNFKDB4MTAwZCwgMHhjYjAxKSxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcdTAwMjZjeGFjcnVfY2IwMFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMzMtXHR9LFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMzQtXHR7IC8qIFYgPSBOZXRvcGlhXHRcdFx0UCA9IENheW1hbiAzMzQyKEFubmV4IEEpLzMzNTIoQW5uZXggQilcdCovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTMzNTpcdFx0VVNCX0RFVklDRSgweDEwMGQsIDB4MzM0MiksXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXHUwMDI2Y3hhY3J1X2NiMDBcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzM2LVx0fSxcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMzOS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzQwOk1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBjeGFjcnVfdXNiX2lkcyk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTM0MS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzQyOnN0YXRpYyBzdHJ1Y3QgdXNiYXRtX2RyaXZlciBjeGFjcnVfZHJpdmVyID0ge1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzNDM6XHQuZHJpdmVyX25hbWVcdD0gY3hhY3J1X2RyaXZlcl9uYW1lLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzNDQ6XHQuYmluZFx0XHQ9IGN4YWNydV9iaW5kLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzNDU6XHQuaGVhdnlfaW5pdFx0PSBjeGFjcnVfaGVhdnlfaW5pdCxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzQ2Olx0LnVuYmluZFx0XHQ9IGN4YWNydV91bmJpbmQsXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTM0NzpcdC5hdG1fc3RhcnRcdD0gY3hhY3J1X2F0bV9zdGFydCxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzQ4LVx0LmJ1bGtfaW5cdD0gQ1hBQ1JVX0VQX0RBVEEsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzNTMtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTM1NDpzdGF0aWMgaW50IGN4YWNydV91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTM1NS1cdFx0Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzcxLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzNzI6XHRyZXR1cm4gdXNiYXRtX3VzYl9wcm9iZShpbnRmLCBpZCwgXHUwMDI2Y3hhY3J1X2RyaXZlcik7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTM3My19XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTM3NC1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzc1OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBjeGFjcnVfdXNiX2RyaXZlciA9IHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzc2Olx0Lm5hbWVcdFx0PSBjeGFjcnVfZHJpdmVyX25hbWUsXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTM3NzpcdC5wcm9iZVx0XHQ9IGN4YWNydV91c2JfcHJvYmUsXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTM3OC1cdC5kaXNjb25uZWN0XHQ9IHVzYmF0bV91c2JfZGlzY29ubmVjdCxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzc5Olx0LmlkX3RhYmxlXHQ9IGN4YWNydV91c2JfaWRzLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzODA6XHQuZGV2X2dyb3Vwc1x0PSBjeGFjcnVfZ3JvdXBzLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzODEtfTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzgyLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzODM6bW9kdWxlX3VzYl9kcml2ZXIoY3hhY3J1X3VzYl9kcml2ZXIpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzODQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDg2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogODMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGN4YWNydV9jbWAgUGF0Y2ggZm9yIEZ1enppbmcgRm9jdXMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gYGN4YWNydV9jbWAuIE15IHByaW1hcnkgZ29hbCBpcyB0byBpZGVudGlmeSB0aGUgbW9zdCBlZmZlY3RpdmUgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLCBnaXZlbiB0aGF0IHRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgdGhpcyBjb21wb25lbnQuCgpGaXJzdCwgSSBpZGVudGlmaWVkIHRoZSBlbnRyeSBwb2ludHM6IGBjeGFjcnVfYmluZGAsIGBjeGFjcnVfaGVhdnlfaW5pdGAsIGBjeGFjcnVfdW5iaW5kYCwgYGN4YWNydV9hdG1fc3RhcnRgLCBgY3hhY3J1X3VzYl9wcm9iZWAsIGBhZHNsX3N0YXRlX3N0b3JlYCwgYGFkc2xfY29uZmlnX3N0b3JlYCwgYW5kIGBjeGFjcnVfcG9sbF9zdGF0dXNgLiBUaGUgbGFzdCBvbmUgaXMgaW50ZXJlc3RpbmcgYXMgaXQgb3BlcmF0ZXMgdmlhIGEgd29ya3F1ZXVlLgoKVGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyBgY3hhY3J1X2NtYC4gTm93LCB3aGVyZSBkb2VzIGBjeGFjcnVfY21gIGdldCBjYWxsZWQ/IEl0JiMzOTtzIGNhbGxlZCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGJ5IGEgYnVuY2ggb2YgZnVuY3Rpb25zOiBgY3hhY3J1X2hlYXZ5X2luaXRgLCBgY3hhY3J1X2F0bV9zdGFydGAsIGBjeGFjcnVfY2FyZF9zdGF0dXNgICh3aGljaCBpcyBpdHNlbGYgY2FsbGVkIGJ5IGBjeGFjcnVfYmluZGAgYW5kIGBjeGFjcnVfaGVhdnlfaW5pdGApLCBgY3hhY3J1X3BvbGxfc3RhdHVzYCAodmlhIGBjeGFjcnVfY21fZ2V0X2FycmF5YCksIGBhZHNsX3N0YXRlX3N0b3JlYCwgYW5kIGBhZHNsX2NvbmZpZ19zdG9yZWAuCgpTbywgdGhlIGluaXRpYWwgbGlzdCBvZiBmb2N1cyBzeW1ib2xzIHNob3VsZCBpbmNsdWRlOiBgY3hhY3J1X2hlYXZ5X2luaXRgLCBgY3hhY3J1X2F0bV9zdGFydGAsIGBjeGFjcnVfYmluZGAsIGBhZHNsX3N0YXRlX3N0b3JlYCwgYGFkc2xfY29uZmlnX3N0b3JlYCwgYW5kIGBjeGFjcnVfcG9sbF9zdGF0dXNgLgoKTm93LCB0aGUgcXVlc3Rpb24gaXM6IGlzIGBjeGFjcnVfY21gIGlubGluZWQ/IEl0JiMzOTtzIHN0YXRpYywgd2hpY2ggaXMgYSBrZXkgY29uc2lkZXJhdGlvbi4gR2l2ZW4gaXRzIHNpemUgYW5kIG11bHRpcGxlIGNhbGwgc2l0ZXMsIGl0JiMzOTtzIGxpa2VseSAqbm90KiBpbmxpbmVkLiBIb3dldmVyLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gcHJvdmlkaW5nIGVmZmVjdGl2ZSBzeW1ib2xzIGZvciBmdXp6aW5nLiBTaW5jZSB0aGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBwcmlvcml0aXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLCBJIG5lZWQgdG8gZm9jdXMgb24gdGhvc2UgdGhhdCBjYWxsIGBjeGFjcnVfY21gIGFuZCBhcmUgdGhlbXNlbHZlcyBlbnRyeXBvaW50cywgb3IgY2FsbGJhY2tzLgoKQWgsIHllcy4gYGN4YWNydV9oZWF2eV9pbml0YCwgYGN4YWNydV9hdG1fc3RhcnRgLCBgY3hhY3J1X2JpbmRgLCBgYWRzbF9zdGF0ZV9zdG9yZWAsIGBhZHNsX2NvbmZpZ19zdG9yZWAsIGFuZCBgY3hhY3J1X3BvbGxfc3RhdHVzYCBhcmUgYWxsIHN0YXRpYy4gQnV0LCB0aGV5IGFyZSB1c2VkIGFzIGNhbGxiYWNrcyB3aXRoaW4gdGhlIGRyaXZlci4gU2ltaWxhcmx5LCBgY3hhY3J1X3VzYl9wcm9iZWAgaXMgYSBwcm9iZSBmdW5jdGlvbiwgd2hpY2gsIHdoaWxlIHN0YXRpYywgaXMgYWxzbyBhbiBlbnRyeSBwb2ludC4gVGhpcyBtYWtlcyB0aGVtIGdvb2QgY2FuZGlkYXRlcyBmb3IgZnV6emluZywgZXZlbiBpZiB0aGV5JiMzOTtyZSBzdGF0aWMsIGJlY2F1c2UgdGhleSBjYW4gc3RpbGwgYmUgcmVhY2hlZC4gU2luY2Ugc3l6a2FsbGVyIGNhbiByZWFjaCBzdGF0aWMgZnVuY3Rpb25zIGlmIHJlYWNoYWJsZSwgYnV0IGBGb2N1c1N5bWJvbHNgIHdhbnRzIGZ1bmN0aW9uIG5hbWVzLCB0aGlzIHNob3VsZCBiZSBmaW5lLgoKSG93ZXZlciwgc2luY2UgYGN4YWNydV9jbWAgaXRzZWxmIGlzIHRoZSBmb2N1cyBvZiB0aGUgcGF0Y2gsIGV2ZW4gaWYgaXQgaXMgc3RhdGljLCBpdCYjMzk7cyBzdGlsbCBhIGdvb2QgZm9jdXMgc3ltYm9sLgoKR2l2ZW4gdGhlIGluc3RydWN0aW9ucywgYW5kIHRvIGJlIHNhZmUsIEkmIzM5O20gZ29pbmcgdG8gaW5jbHVkZSBib3RoIGBjeGFjcnVfY21gIGFuZCB0aGUgY2FsbGJhY2sgZW50cnlwb2ludHM6IGBjeGFjcnVfaGVhdnlfaW5pdGAsIGBjeGFjcnVfYXRtX3N0YXJ0YCwgYGN4YWNydV9iaW5kYCwgYGFkc2xfc3RhdGVfc3RvcmVgLCBgYWRzbF9jb25maWdfc3RvcmVgLCBhbmQgYGN4YWNydV9wb2xsX3N0YXR1c2AuIFRoZXNlIHNlZW0gbGlrZSB0aGUgbW9zdCBlZmZlY3RpdmUgc3ltYm9scyBmb3IgZnV6emluZyB0aGlzIHNwZWNpZmljIHBhdGNoLgoKSSBhbHNvIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnIG9wdGlvbnMgdG8gZGV0ZXJtaW5lIGFueSBvdGhlciBkZXBlbmRlbmNpZXMuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBgVVNCX0NYQUNSVWAsIGBVU0JfQVRNYCwgYW5kIGBBVE1gIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVRNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2F0bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9hdG0vS2NvbmZpZy01LVxubmV0L2F0bS9LY29uZmlnOjY6Y29uZmlnIEFUTVxubmV0L2F0bS9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtBc3luY2hyb25vdXMgVHJhbnNmZXIgTW9kZSAoQVRNKVwmIzM0O1xuLS1cbm5ldC9hdG0vS2NvbmZpZy0yMS1cbm5ldC9hdG0vS2NvbmZpZzoyMjpjb25maWcgQVRNX0JSMjY4NFxubmV0L2F0bS9LY29uZmlnLTIzLVx0dHJpc3RhdGUgXCYjMzQ7UkZDMTQ4My8yNjg0IEJyaWRnZWQgcHJvdG9jb2xzXCYjMzQ7XG4tLVxubmV0L2F0bS9LY29uZmlnLTMwLVxubmV0L2F0bS9LY29uZmlnOjMxOmNvbmZpZyBBVE1fQlIyNjg0X0lQRklMVEVSXG5uZXQvYXRtL0tjb25maWctMzItXHRib29sIFwmIzM0O1Blci1WQyBJUCBmaWx0ZXIga2x1ZGdlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxODk4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGlzLCBjb25zaWRlcmluZyBJJiMzOTttIGRlZXAgaW4gdGhlIHdlZWRzIHdpdGggdGhpcyBzdHVmZjoKCioqQ29uZmlndXJhdGlvbiBEZWVwIERpdmU6IEFUTSBhbmQgVVNCKioKCk9rYXksIHNvIHdlJiMzOTtyZSB0YWxraW5nIEFUTSBjb25maWcgaGVyZS4gU3BlY2lmaWNhbGx5LCB0aGUgcm9vdCBvZiB0aGlzIGlzIGBBVE1gLiBUaGlzIG1lYW5zIEkgbmVlZCB0byBlbmFibGUgYSBmZXcga2V5IGNvbmZpZ3MgZm9yIHRoZSBBVE0gZnVuY3Rpb25hbGl0eSB0byBhY3R1YWxseSAqZG8qIGFueXRoaW5nLiBTZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBgVVNCX0NYQUNSVWAsIGBVU0JfQVRNYCwgYW5kIHRoZSBiYXNlIGBBVE1gIGl0c2VsZiBhcmUgdGhlIHBsYXllcnMuIE5vIHN1cnByaXNlcyB0aGVyZS4KCkJ1dCwgSSBhbHdheXMgZG91YmxlLWNoZWNrIHRoZXNlIHRoaW5ncy4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBgVVNCX0FUTWAgaXMgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuIFRoYXQgbWVhbnMgSSBuZWVkIHRvIGltbWVkaWF0ZWx5IGp1bXAgb3ZlciB0byB0aGUgYGRyaXZlcnMvdXNiL2F0bS9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGFueSBvdGhlciBvcHRpb25zIGFyb3VuZCBgVVNCX0FUTWAgYXJlIGNsZWFyLCBlc3BlY2lhbGx5IGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGludGVyYWN0aW9ucyBJIG1pZ2h0IG5vdCBiZSBpbW1lZGlhdGVseSBhd2FyZSBvZi4gR290dGEgbWFrZSBzdXJlIHdlIGhhdmUgYSBzb2xpZCwgc3RhYmxlIGJhc2UgZm9yIHRoZSBBVE0gb3ZlciBVU0IgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9BVE0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZy01LVxuZHJpdmVycy91c2IvYXRtL0tjb25maWc6NjptZW51Y29uZmlnIFVTQl9BVE1cbmRyaXZlcnMvdXNiL2F0bS9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtVU0IgRFNMIG1vZGVtIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIyNTYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIFVTQiBBVE0gYW5kIENYQUNSVSBEcml2ZXIgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gdGhlIGV4YWN0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIOKAkyBpdCYjMzk7cyBgbWVudWNvbmZpZyBVU0JfQVRNYCwgbm90IHNvbWV0aGluZyBlbHNlIEkgbWlnaHQgaGF2ZSBpbml0aWFsbHkgYXNzdW1lZC4gR29vZC4gVGhpcyBjbGFyaWZpZXMgdGhlIHNwZWNpZmljIHBhdGggd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4KCk5vdywgd2l0aCB0aGF0IGNvbmZpcm1lZCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCwgaWYgYW55LCBiZXR3ZWVuIGBVU0JfQVRNYCBhbmQgYFVTQl9DWEFDUlVgLiBBcmUgdGhleSByZWxhdGVkPyBJcyBvbmUgYSBwcmVyZXF1aXNpdGUgb3IgYSBkZXBlbmRlbmN5IG9mIHRoZSBvdGhlcj8gQXJlIHRoZXkgbXV0dWFsbHkgZXhjbHVzaXZlPyBUaGlzIG5lZWRzIGNsYXJpZmljYXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIEtjb25maWcgZmlsZXMsIG9yIHBvdGVudGlhbGx5IHRoZSBzb3VyY2UgY29kZSBpdHNlbGYsIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGV4cGxpY2l0IGRlcGVuZGVuY2llcyBkZWNsYXJlZCBvciBpbXBsaWNpdCByZWxhdGlvbnNoaXBzIHRoYXQgSSBjYW4gZGV0ZXJtaW5lLiBUaGUgZ29hbCBpcyBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoZXNlIHR3byBjb25maWd1cmF0aW9ucyBpbnRlcmFjdCB3aXRoaW4gdGhlIGJyb2FkZXIgVVNCIGFuZCBuZXR3b3JraW5nIGVjb3N5c3RlbS4gVGhpcyB3aWxsIGRpcmVjdGx5IGltcGFjdCBob3cgSSBhcHByb2FjaCBhbnkgY29uZmlndXJhdGlvbiBjaGFuZ2VzIG9yIHRyb3VibGVzaG9vdGluZyBzdGVwcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9DWEFDUlUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZz0yMD1jb25maWcgVVNCX1NQRUVEVE9VQ0hcbi0tXG5kcml2ZXJzL3VzYi9hdG0vS2NvbmZpZy0zMS1cbmRyaXZlcnMvdXNiL2F0bS9LY29uZmlnOjMyOmNvbmZpZyBVU0JfQ1hBQ1JVXG5kcml2ZXJzL3VzYi9hdG0vS2NvbmZpZy0zMy1cdHRyaXN0YXRlIFwmIzM0O0NvbmV4YW50IEFjY2Vzc1J1bm5lciBVU0Igc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjYxNQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6CgoqKkFuYWx5emluZyBGaXJtd2FyZSBMb2FkaW5nIGFuZCBJbmxpbmluZyoqCgpBbHJpZ2h0LCB0aGUgc3lzdGVtIGhhcyBjaG9zZW4gYEZXX0xPQURFUmAgYXMgdGhlIHJlc3BvbnNpYmxlIGNvbXBvbmVudCBmb3IgdGhpcyBvcGVyYXRpb24uIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgYGN4YWNydV9jbWAuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGUgYGN4YWNydV9jbWAgY29tcG9uZW50IGlzIGlubGluZWQuIElmIHNvLCB0aGF0JiMzOTtzIGdvaW5nIHRvIGFmZmVjdCB0aGUgb3ZlcmFsbCBsb2FkaW5nIHN0cmF0ZWd5IGFuZCBhbnkgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucy4gSSYjMzk7bSBmb2N1c2luZyBvbiBpdHMgc2l6ZSBiZWNhdXNlIGlubGluaW5nIGRlY2lzaW9ucyBvZnRlbiBoaW5nZSBvbiB0aGF0IGZhY3Rvci4gQSBzbWFsbGVyLCBpbmxpbmVkIG1vZHVsZSBvZmZlcnMgYWR2YW50YWdlcyBpbiB0ZXJtcyBvZiByZWR1Y2VkIG92ZXJoZWFkLCB3aGlsZSBhIGxhcmdlciBvbmUgY291bGQgYmVuZWZpdCBmcm9tIGJlaW5nIGxvYWRlZCBzZXBhcmF0ZWx5LiBJJiMzOTttIG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgdHlwaWNhbCB0aHJlc2hvbGRzIGFuZCBjb25kaXRpb25zIHRoYXQgd291bGQgdHJpZ2dlciBhbiBpbmxpbmluZyBjaG9pY2UgZm9yIHRoaXMgdHlwZSBvZiBjb21wb25lbnQuIEl04oCZcyBhbiBlc3NlbnRpYWwgcGFydCBvZiBkZXRlcm1pbmluZyBlZmZpY2llbmN5LCBmb3IgdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2MDA6XHRcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNnRpbWVyLnRpbWVyKTtcbiA2MDE6XHRcdHRpbWVyX2Rlc3Ryb3lfb25fc3RhY2soXHUwMDI2dGltZXIudGltZXIpO1xuIDYwMjpcdFxuIDYwMzpcdFx0aWYgKGFjdHVhbF9sZW5ndGgpXG4gNjA0Olx0XHRcdCphY3R1YWxfbGVuZ3RoID0gdXJiLVx1MDAzZWFjdHVhbF9sZW5ndGg7XG4gNjA1Olx0XHRyZXR1cm4gdXJiLVx1MDAzZXN0YXR1czsgLyogbXVzdCByZWFkIHN0YXR1cyBhZnRlciBjb21wbGV0aW9uICovXG4gNjA2Olx0fVxuIDYwNzpcdFxuIDYwODpcdHN0YXRpYyBpbnQgY3hhY3J1X2NtKHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UsIGVudW0gY3hhY3J1X2NtX3JlcXVlc3QgY20sXG4gNjA5Olx0XHRcdCAgICAgdTggKndkYXRhLCBpbnQgd3NpemUsIHU4ICpyZGF0YSwgaW50IHJzaXplKVxuIDYxMDpcdHtcbiA2MTE6XHRcdGludCByZXQsIGFjdGxlbjtcbiA2MTI6XHRcdGludCBvZmZiLCBvZmZkO1xuIDYxMzpcdFx0Y29uc3QgaW50IHN0cmlkZSA9IENNRF9QQUNLRVRfU0laRSAtIDQ7XG4gNjE0Olx0XHR1OCAqd2J1ZiA9IGluc3RhbmNlLVx1MDAzZXNuZF9idWY7XG4gNjE1Olx0XHR1OCAqcmJ1ZiA9IGluc3RhbmNlLVx1MDAzZXJjdl9idWY7XG4gNjE2Olx0XHRpbnQgd2J1ZmxlbiA9ICgod3NpemUgLSAxKSAvIHN0cmlkZSAmIzQzOyAxKSAqIENNRF9QQUNLRVRfU0laRTtcbiA2MTc6XHRcdGludCByYnVmbGVuID0gKChyc2l6ZSAtIDEpIC8gc3RyaWRlICYjNDM7IDEpICogQ01EX1BBQ0tFVF9TSVpFO1xuIDYxODpcdFxuIDYxOTpcdFx0aWYgKHdidWZsZW4gXHUwMDNlIFBBR0VfU0laRSB8fCByYnVmbGVuIFx1MDAzZSBQQUdFX1NJWkUpIHtcbiA2MjA6XHRcdFx0aWYgKHByaW50a19yYXRlbGltaXQoKSlcbiA2MjE6XHRcdFx0XHR1c2JfZXJyKGluc3RhbmNlLVx1MDAzZXVzYmF0bSwgXCYjMzQ7cmVxdWVzdGVkIHRyYW5zZmVyIHNpemUgdG9vIGxhcmdlICglZCwgJWQpXFxuXCYjMzQ7LFxuIDYyMjpcdFx0XHRcdFx0d2J1ZmxlbiwgcmJ1Zmxlbik7XG4gNjIzOlx0XHRcdHJldCA9IC1FTk9NRU07XG4gNjI0Olx0XHRcdGdvdG8gZXJyO1xuIDYyNTpcdFx0fVxuIDYyNjpcdFxuIDYyNzpcdFx0bXV0ZXhfbG9jayhcdTAwMjZpbnN0YW5jZS1cdTAwM2VjbV9zZXJpYWxpemUpO1xuIDYyODpcdFxuIDYyOTpcdFx0Lyogc3VibWl0IHJlYWRpbmcgdXJiIGJlZm9yZSB0aGUgd3JpdGluZyBvbmUgKi9cbiA2MzA6XHRcdGluaXRfY29tcGxldGlvbihcdTAwMjZpbnN0YW5jZS1cdTAwM2VyY3ZfZG9uZSk7XG4gNjMxOlx0XHRyZXQgPSB1c2Jfc3VibWl0X3VyYihpbnN0YW5jZS1cdTAwM2VyY3ZfdXJiLCBHRlBfS0VSTkVMKTtcbiA2MzI6XHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbiA2MzM6XHRcdFx0aWYgKHByaW50a19yYXRlbGltaXQoKSlcbiA2MzQ6XHRcdFx0XHR1c2JfZXJyKGluc3RhbmNlLVx1MDAzZXVzYmF0bSwgXCYjMzQ7c3VibWl0IG9mIHJlYWQgdXJiIGZvciBjbSAlI3ggZmFpbGVkICglZClcXG5cJiMzNDssXG4gNjM1Olx0XHRcdFx0XHRjbSwgcmV0KTtcbiA2MzY6XHRcdFx0Z290byBmYWlsO1xuIDYzNzpcdFx0fVxuIDYzODpcdFxuIDYzOTpcdFx0bWVtc2V0KHdidWYsIDAsIHdidWZsZW4pO1xuIDY0MDpcdFx0LyogaGFuZGxlIHdzaXplID09IDAgKi9cbiA2NDE6XHRcdHdidWZbMF0gPSBjbTtcbiA2NDI6XHRcdGZvciAob2ZmYiA9IG9mZmQgPSAwOyBvZmZkIFx1MDAzYyB3c2l6ZTsgb2ZmZCAmIzQzOz0gc3RyaWRlLCBvZmZiICYjNDM7PSBDTURfUEFDS0VUX1NJWkUpIHtcbiA2NDM6XHRcdFx0d2J1ZltvZmZiXSA9IGNtO1xuIDY0NDpcdFx0XHRtZW1jcHkod2J1ZiAmIzQzOyBvZmZiICYjNDM7IDQsIHdkYXRhICYjNDM7IG9mZmQsIG1pbl90KGludCwgc3RyaWRlLCB3c2l6ZSAtIG9mZmQpKTtcbiA2NDU6XHRcdH1cbiA2NDY6XHRcbiA2NDc6XHRcdGluc3RhbmNlLVx1MDAzZXNuZF91cmItXHUwMDNldHJhbnNmZXJfYnVmZmVyX2xlbmd0aCA9IHdidWZsZW47XG4gNjQ4Olx0XHRpbml0X2NvbXBsZXRpb24oXHUwMDI2aW5zdGFuY2UtXHUwMDNlc25kX2RvbmUpO1xuIDY0OTpcdFx0cmV0ID0gdXNiX3N1Ym1pdF91cmIoaW5zdGFuY2UtXHUwMDNlc25kX3VyYiwgR0ZQX0tFUk5FTCk7XG4gNjUwOlx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gNjUxOlx0XHRcdGlmIChwcmludGtfcmF0ZWxpbWl0KCkpXG4gNjUyOlx0XHRcdFx0dXNiX2VycihpbnN0YW5jZS1cdTAwM2V1c2JhdG0sIFwmIzM0O3N1Ym1pdCBvZiB3cml0ZSB1cmIgZm9yIGNtICUjeCBmYWlsZWQgKCVkKVxcblwmIzM0OyxcbiA2NTM6XHRcdFx0XHRcdGNtLCByZXQpO1xuIDY1NDpcdFx0XHRnb3RvIGZhaWw7XG4gNjU1Olx0XHR9XG4gNjU2Olx0XG4gNjU3Olx0XHRyZXQgPSBjeGFjcnVfc3RhcnRfd2FpdF91cmIoaW5zdGFuY2UtXHUwMDNlc25kX3VyYiwgXHUwMDI2aW5zdGFuY2UtXHUwMDNlc25kX2RvbmUsIE5VTEwpO1xuIDY1ODpcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIDY1OTpcdFx0XHRpZiAocHJpbnRrX3JhdGVsaW1pdCgpKVxuIDY2MDpcdFx0XHRcdHVzYl9lcnIoaW5zdGFuY2UtXHUwMDNldXNiYXRtLCBcJiMzNDtzZW5kIG9mIGNtICUjeCBmYWlsZWQgKCVkKVxcblwmIzM0OywgY20sIHJldCk7XG4gNjYxOlx0XHRcdGdvdG8gZmFpbDtcbiA2NjI6XHRcdH1cbiA2NjM6XHRcbiA2NjQ6XHRcdHJldCA9IGN4YWNydV9zdGFydF93YWl0X3VyYihpbnN0YW5jZS1cdTAwM2VyY3ZfdXJiLCBcdTAwMjZpbnN0YW5jZS1cdTAwM2VyY3ZfZG9uZSwgXHUwMDI2YWN0bGVuKTtcbiA2NjU6XHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbiA2NjY6XHRcdFx0aWYgKHByaW50a19yYXRlbGltaXQoKSlcbiA2Njc6XHRcdFx0XHR1c2JfZXJyKGluc3RhbmNlLVx1MDAzZXVzYmF0bSwgXCYjMzQ7cmVjZWl2ZSBvZiBjbSAlI3ggZmFpbGVkICglZClcXG5cJiMzNDssIGNtLCByZXQpO1xuIDY2ODpcdFx0XHRnb3RvIGZhaWw7XG4gNjY5Olx0XHR9XG4gNjcwOlx0XHRpZiAoYWN0bGVuICUgQ01EX1BBQ0tFVF9TSVpFIHx8ICFhY3RsZW4pIHtcbiA2NzE6XHRcdFx0aWYgKHByaW50a19yYXRlbGltaXQoKSlcbiA2NzI6XHRcdFx0XHR1c2JfZXJyKGluc3RhbmNlLVx1MDAzZXVzYmF0bSwgXCYjMzQ7aW52YWxpZCByZXNwb25zZSBsZW5ndGggdG8gY20gJSN4OiAlZFxcblwmIzM0OyxcbiA2NzM6XHRcdFx0XHRcdGNtLCBhY3RsZW4pO1xuIDY3NDpcdFx0XHRyZXQgPSAtRUlPO1xuIDY3NTpcdFx0XHRnb3RvIGZhaWw7XG4gNjc2Olx0XHR9XG4gNjc3Olx0XG4gNjc4Olx0XHQvKiBjaGVjayB0aGUgcmV0dXJuIHN0YXR1cyBhbmQgY29weSB0aGUgZGF0YSB0byB0aGUgb3V0cHV0IGJ1ZmZlciwgaWYgbmVlZGVkICovXG4gNjc5Olx0XHRmb3IgKG9mZmIgPSBvZmZkID0gMDsgb2ZmZCBcdTAwM2MgcnNpemUgXHUwMDI2XHUwMDI2IG9mZmIgXHUwMDNjIGFjdGxlbjsgb2ZmYiAmIzQzOz0gQ01EX1BBQ0tFVF9TSVpFKSB7XG4gNjgwOlx0XHRcdGlmIChyYnVmW29mZmJdICE9IGNtKSB7XG4gNjgxOlx0XHRcdFx0aWYgKHByaW50a19yYXRlbGltaXQoKSlcbiA2ODI6XHRcdFx0XHRcdHVzYl9lcnIoaW5zdGFuY2UtXHUwMDNldXNiYXRtLCBcJiMzNDt3cm9uZyBjbSAlI3ggaW4gcmVzcG9uc2UgdG8gY20gJSN4XFxuXCYjMzQ7LFxuIDY4MzpcdFx0XHRcdFx0XHRyYnVmW29mZmJdLCBjbSk7XG4gNjg0Olx0XHRcdFx0cmV0ID0gLUVJTztcbiA2ODU6XHRcdFx0XHRnb3RvIGZhaWw7XG4gNjg2Olx0XHRcdH1cbiA2ODc6XHRcdFx0aWYgKHJidWZbb2ZmYiAmIzQzOyAxXSAhPSBDTV9TVEFUVVNfU1VDQ0VTUykge1xuIDY4ODpcdFx0XHRcdGlmIChwcmludGtfcmF0ZWxpbWl0KCkpXG4gNjg5Olx0XHRcdFx0XHR1c2JfZXJyKGluc3RhbmNlLVx1MDAzZXVzYmF0bSwgXCYjMzQ7cmVzcG9uc2UgdG8gY20gJSN4IGZhaWxlZDogJSN4XFxuXCYjMzQ7LFxuIDY5MDpcdFx0XHRcdFx0XHRjbSwgcmJ1ZltvZmZiICYjNDM7IDFdKTtcbiA2OTE6XHRcdFx0XHRyZXQgPSAtRUlPO1xuIDY5MjpcdFx0XHRcdGdvdG8gZmFpbDtcbiA2OTM6XHRcdFx0fVxuIDY5NDpcdFx0XHRpZiAob2ZmZCBcdTAwM2U9IHJzaXplKVxuIDY5NTpcdFx0XHRcdGJyZWFrO1xuIDY5NjpcdFx0XHRtZW1jcHkocmRhdGEgJiM0Mzsgb2ZmZCwgcmJ1ZiAmIzQzOyBvZmZiICYjNDM7IDQsIG1pbl90KGludCwgc3RyaWRlLCByc2l6ZSAtIG9mZmQpKTtcbiA2OTc6XHRcdFx0b2ZmZCAmIzQzOz0gc3RyaWRlO1xuIDY5ODpcdFx0fVxuIDY5OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDU5OQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDMyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGN4YWNydV9jbSBGdW5jdGlvbiBhbmQgUmVsYXRlZCBFbnRyeSBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGN4YWNydV9jbWAgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBzdWJzdGFudGlhbCDigJMgcXVpdGUgbGFyZ2UsIGFuZCBpdCBjYWxscyBgY3hhY3J1X3N0YXJ0X3dhaXRfdXJiYCBtdWx0aXBsZSB0aW1lcy4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCYjMzk7cyAqZGVmaW5pdGVseSogbm90IGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBHaXZlbiB0aGUgaW5zdHJ1Y3Rpb25zLCB3aGljaCBwcmlvcml0aXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cywgb3ZlciBpbnRlcm5hbCwgaW5saW5lZCBmdW5jdGlvbnMsIEkgc2hvdWxkIGluY2x1ZGUgaXQgaW4gYEZvY3VzU3ltYm9sc2AuCgpCdXQgaG9sZCBvbiwgYGN4YWNydV9jbWAgKmlzKiBzdGF0aWMuIFRoaXMgcmFpc2VzIGEgZmxhZy4gSXQgbWlnaHQgbm90IGJlIGV4cG9ydGVkIGFzIGEgc3ltYm9sLiBIb3dldmVyLCBzaW5jZSBpdCYjMzk7cyBjb25maXJtZWQgYXMgbm90IGlubGluZWQsIFN5emthbGxlciAqY291bGQqIHBvdGVudGlhbGx5IGZ1enogaXQgaWYgdGhlIGRlYnVnIGluZm8gcHJvdmlkZXMgaXQuIFRvIGJlIG9uIHRoZSBzYWZlIHNpZGUsIGl0IHNlZW1zIGJlc3QgdG8gaW5jbHVkZSB0aGUgaW50ZW5kZWQgZW50cnlwb2ludHMgb2YgdGhlIHN5c3RlbS4KClRob3NlIGVudHJ5IHBvaW50cyBsb29rIGxpa2UgdGhleSBhcmU6CiogICBgY3hhY3J1X2hlYXZ5X2luaXRgCiogICBgY3hhY3J1X2F0bV9zdGFydGAKKiAgIGBjeGFjcnVfYmluZGAKKiAgIGBhZHNsX3N0YXRlX3N0b3JlYAoqICAgYGFkc2xfY29uZmlnX3N0b3JlYAoqICAgYGN4YWNydV9wb2xsX3N0YXR1c2AKCk5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIGFib3V0IHRoYXQgaW5saW5pbmcgZm9yIGBjeGFjcnVfY21gLiBJIG1lYW4sIGl0JiMzOTtzIGFib3V0IDEwMCBsaW5lcyBsb25nLiBObyB3YXkgdGhhdCYjMzk7cyBiZWVuIGlubGluZWQuIFllcCwgSSYjMzk7bSBjb25maWRlbnQuIEkmIzM5O2xsIGluY2x1ZGUgYGN4YWNydV9jbWAgYWxvbmcgd2l0aCBhbGwgdGhvc2UgZXhwbGljaXQgZW50cnkgcG9pbnRzLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgYWxzbyBkb3VibGUgY2hlY2sgZm9yIGFueSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE9rYXksIGxldCYjMzk7cyBzZWUsIGBVU0JfQ1hBQ1JVYCwgYFVTQl9BVE1gLCBhbmQgYEFUTWDigKYgV2FpdCwgYEFUTWAgbG9va3MgbGlrZSB0aGUgcGFyZW50IGNvbmZpZyBvZiBgVVNCX0FUTWAuIEkmIzM5O2QgYmV0dGVyIGNoZWNrIGBuZXQvYXRtL0tjb25maWdgIHRvIGNvbmZpcm0gdGhhdCByZWxhdGlvbnNoaXAgYW5kIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGltcG9ydGFudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFUTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9hdG0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYXRtL0tjb25maWctNS1cbm5ldC9hdG0vS2NvbmZpZzo2OmNvbmZpZyBBVE1cbm5ldC9hdG0vS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7QXN5bmNocm9ub3VzIFRyYW5zZmVyIE1vZGUgKEFUTSlcJiMzNDtcbi0tXG5uZXQvYXRtL0tjb25maWctMjEtXG5uZXQvYXRtL0tjb25maWc6MjI6Y29uZmlnIEFUTV9CUjI2ODRcbm5ldC9hdG0vS2NvbmZpZy0yMy1cdHRyaXN0YXRlIFwmIzM0O1JGQzE0ODMvMjY4NCBCcmlkZ2VkIHByb3RvY29sc1wmIzM0O1xuLS1cbm5ldC9hdG0vS2NvbmZpZy0zMC1cbm5ldC9hdG0vS2NvbmZpZzozMTpjb25maWcgQVRNX0JSMjY4NF9JUEZJTFRFUlxubmV0L2F0bS9LY29uZmlnLTMyLVx0Ym9vbCBcJiMzNDtQZXItVkMgSVAgZmlsdGVyIGtsdWRnZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTU1MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyBVU0IgQVRNIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgSSYjMzk7bSBhdCBhIHBvaW50IHdoZXJlIEkmIzM5O20gY29uc2lkZXJpbmcgdGhlIHBvdGVudGlhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBVU0IgQVRNIHN1cHBvcnQuIE15IHByaW1hcnkgY29uY2VybiBpcyBlbnN1cmluZyBJJiMzOTt2ZSB0aG9yb3VnaGx5IGV4aGF1c3RlZCBhbGwgcmVsZXZhbnQgc2V0dGluZ3MuIEl0JiMzOTtzIGNydWNpYWwgdG8gbGVhdmUgbm8gc3RvbmUgdW50dXJuZWQgaW4gdGhpcyBwaGFzZS4KClRoZXJlZm9yZSwgSSYjMzk7bSBoZWFkaW5nIGJhY2sgdG8gYGRyaXZlcnMvdXNiL2F0bS9LY29uZmlnYC4gSSBuZWVkIHRvIHJlLWV4YW1pbmUgdGhhdCBmaWxlIHdpdGggZnJlc2ggZXllcywgZG91YmxlLWNoZWNraW5nIGZvciBhbnkgb3Zlcmxvb2tlZCBjb25maWd1cmF0aW9uIG51YW5jZXMuIEkgd2FudCB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBwb3NzaWJpbGl0aWVzLCBkZXBlbmRlbmNpZXMsIG9yIHN1YnRsZXRpZXMgdGhhdCBtaWdodCBpbXBhY3QgdGhlIGZpbmFsIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gYmUgY2VydGFpbiBJIGhhdmUgY29uc2lkZXJlZCBhbGwgcG9zc2liaWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9BVE0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZy01LVxuZHJpdmVycy91c2IvYXRtL0tjb25maWc6NjptZW51Y29uZmlnIFVTQl9BVE1cbmRyaXZlcnMvdXNiL2F0bS9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtVU0IgRFNMIG1vZGVtIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU4MjcKCQkJCQkJCW91dHB1dDogMTYxCgkJCQkJCQl0aG91Z2h0czogMzc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFVTQiBBVE0gRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYFVTQl9BVE1gIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCB3aGljaCwgYXMgSSBzZWUgaXQsIHJlcXVpcmVzIGEgZmV3IGtleSBlbGVtZW50cy4gRmlyc3QsIEkgbmVlZCB0byBlbmFibGUgYFVTQl9DWEFDUlVgLCBgVVNCX0FUTWAsIGFuZCBgQVRNYCBpbiBgRW5hYmxlQ29uZmlnc2AuIFRoYXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkLCBpdCYjMzk7cyBhIG1lbnVjb25maWcgaXNzdWUuCgpOb3csIGxvb2tpbmcgYXQgdGhlIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgYGN4YWNydV9jbWAgZnVuY3Rpb24uLi4gYWgsIHllcywgSSBzZWUgdGhlIGZpeC4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIG1pc3NpbmcgYSBjYWxsIHRvIGB1c2Jfa2lsbF91cmJgIGluIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoLiBUaGlzIG1lYW5zIHRoYXQgaWYgYGN4YWNydV9jbWAgZmFpbGVkLCB0aGUgYHJjdl91cmJgIHdvdWxkbiYjMzk7dCBiZSBwcm9wZXJseSBjbGVhbmVkIHVwLCB3aGljaCBjb3VsZCBsZWFkIHRvIGEgdXNlLWFmdGVyLWZyZWUgc2l0dWF0aW9uIG9yLCBtb3JlIGNvbW1vbmx5LCBhIG1lbW9yeSBsZWFrLiBUaGlzIGlzIGEgY3JpdGljYWwgZnVuY3Rpb25hbCBjaGFuZ2UuICBJdCBkaXJlY3RseSBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4KCkdpdmVuIHRoYXQgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBBVE0gZHJpdmVyIHRoYXQgaXMgYWNjZXNzaWJsZSB0aHJvdWdoIGRldmljZSBlbXVsYXRpb24sIEkmIzM5O20gbWFya2luZyB0aGlzIGFzIGBXb3J0aEZ1enppbmc6IHRydWVgLiAgV2UgbmVlZCB0byB0ZXN0IHRoaXMgdGhvcm91Z2hseS4gSSYjMzk7bSBmb2N1c2luZyBteSBhdHRlbnRpb24gb24gZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBsaWtlIGBjeGFjcnVfY21gLCBgY3hhY3J1X2hlYXZ5X2luaXRgLCBgY3hhY3J1X2F0bV9zdGFydGAsIGBjeGFjcnVfYmluZGAsIGBhZHNsX3N0YXRlX3N0b3JlYCwgYW5kIGBhZHNsX2NvbmZpZ19zdG9yZWAsIGFuZCBgY3hhY3J1X3BvbGxfc3RhdHVzYCB0byBjcmVhdGUgZnV6emluZyB0YXJnZXRzLiBUaGlzIGhlbHBzIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgcmVncmVzc2lvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXRjaC4KCkVzc2VudGlhbGx5LCB0aGUgcGF0Y2ggcHJvdmlkZXMgYSBmaXggYnkgZW5zdXJpbmcgYHJjdl91cmJgIGlzIHByb3Blcmx5IGNsZWFuZWQgdXAgb24gZmFpbHVyZS4gVGhhdCYjMzk7cyBhIGdvb2QgdGhpbmcsIGFuZCB3ZSBuZWVkIHRvIHZlcmlmeSBpdHMgY29ycmVjdG5lc3MgYW5kIGVuc3VyZSBpdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBwcm9ibGVtcy4gIEkmIzM5O20gY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfQ1hBQ1JVJiMzNDssCiAgICAmIzM0O1VTQl9BVE0mIzM0OywKICAgICYjMzQ7QVRNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3hhY3J1X2NtJiMzNDssCiAgICAmIzM0O2N4YWNydV9oZWF2eV9pbml0JiMzNDssCiAgICAmIzM0O2N4YWNydV9hdG1fc3RhcnQmIzM0OywKICAgICYjMzQ7Y3hhY3J1X2JpbmQmIzM0OywKICAgICYjMzQ7YWRzbF9zdGF0ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDthZHNsX2NvbmZpZ19zdG9yZSYjMzQ7LAogICAgJiMzNDtjeGFjcnVfcG9sbF9zdGF0dXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHVzYl9raWxsX3VyYiBjYWxsIGluIHRoZSBlcnJvciBwYXRoIG9mIGN4YWNydV9jbSB0byBwcm9wZXJseSBjbGVhbiB1cCB0aGUgcmVjZWl2ZSBVUkIgb24gZmFpbHVyZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIEFUTSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGRldmljZSBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9DWEFDUlUmIzM0OywKICAgICYjMzQ7VVNCX0FUTSYjMzQ7LAogICAgJiMzNDtBVE0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjeGFjcnVfY20mIzM0OywKICAgICYjMzQ7Y3hhY3J1X2hlYXZ5X2luaXQmIzM0OywKICAgICYjMzQ7Y3hhY3J1X2F0bV9zdGFydCYjMzQ7LAogICAgJiMzNDtjeGFjcnVfYmluZCYjMzQ7LAogICAgJiMzNDthZHNsX3N0YXRlX3N0b3JlJiMzNDssCiAgICAmIzM0O2Fkc2xfY29uZmlnX3N0b3JlJiMzNDssCiAgICAmIzM0O2N4YWNydV9wb2xsX3N0YXR1cyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdXNiX2tpbGxfdXJiIGNhbGwgaW4gdGhlIGVycm9yIHBhdGggb2YgY3hhY3J1X2NtIHRvIHByb3Blcmx5IGNsZWFuIHVwIHRoZSByZWNlaXZlIFVSQiBvbiBmYWlsdXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBVU0IgQVRNIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBVU0IgZGV2aWNlIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIxOjMwLjQ2Mjc3MDA3NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NzQ5OTAxODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9DWEFDUlVcIixcbiAgICBcIlVTQl9BVE1cIixcbiAgICBcIkFUTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN4YWNydV9jbVwiLFxuICAgIFwiY3hhY3J1X2hlYXZ5X2luaXRcIixcbiAgICBcImN4YWNydV9hdG1fc3RhcnRcIixcbiAgICBcImN4YWNydV9iaW5kXCIsXG4gICAgXCJhZHNsX3N0YXRlX3N0b3JlXCIsXG4gICAgXCJhZHNsX2NvbmZpZ19zdG9yZVwiLFxuICAgIFwiY3hhY3J1X3BvbGxfc3RhdHVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHVzYl9raWxsX3VyYiBjYWxsIGluIHRoZSBlcnJvciBwYXRoIG9mIGN4YWNydV9jbSB0byBwcm9wZXJseSBjbGVhbiB1cCB0aGUgcmVjZWl2ZSBVUkIgb24gZmFpbHVyZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIEFUTSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGRldmljZSBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIxOjMwLjQ2Mjc3Nzk0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA3OTYwMjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjA1MmY3M2Y2YTU5OWE1MWJhZTVmMzI5ZjBiNzRlYmU3YjY5MGZkNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzMSAwODoyMToyOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMgYi9kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmNcXG5pbmRleCBmMTkwMGM1NjdiYTQxLi40MjlhYzIwYTg5OTlmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL2F0bS9jeGFjcnUuY1xcbisrKyBiL2RyaXZlcnMvdXNiL2F0bS9jeGFjcnUuY1xcbkBAIC03MDAsNiArNzAwLDggQEAgc3RhdGljIGludCBjeGFjcnVfY20oc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSwgZW51bSBjeGFjcnVfY21fcmVxdWVzdCBjbSxcXG4gXFx0cmV0ID0gb2ZmZDtcXG4gXFx0dXNiX2RiZyhpbnN0YW5jZS1cXHUwMDNldXNiYXRtLCBcXFwiY20gJSN4XFxcXG5cXFwiLCBjbSk7XFxuIGZhaWw6XFxuK1xcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHR1c2Jfa2lsbF91cmIoaW5zdGFuY2UtXFx1MDAzZXJjdl91cmIpO1xcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmluc3RhbmNlLVxcdTAwM2VjbV9zZXJpYWxpemUpO1xcbiBlcnI6XFxuIFxcdHJldHVybiByZXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIxOjMwLjc3MTM4MjE1N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc5NDQxMjgxMDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9DWEFDUlVcIixcbiAgICBcIlVTQl9BVE1cIixcbiAgICBcIkFUTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN4YWNydV9jbVwiLFxuICAgIFwiY3hhY3J1X2hlYXZ5X2luaXRcIixcbiAgICBcImN4YWNydV9hdG1fc3RhcnRcIixcbiAgICBcImN4YWNydV9iaW5kXCIsXG4gICAgXCJhZHNsX3N0YXRlX3N0b3JlXCIsXG4gICAgXCJhZHNsX2NvbmZpZ19zdG9yZVwiLFxuICAgIFwiY3hhY3J1X3BvbGxfc3RhdHVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHVzYl9raWxsX3VyYiBjYWxsIGluIHRoZSBlcnJvciBwYXRoIG9mIGN4YWNydV9jbSB0byBwcm9wZXJseSBjbGVhbiB1cCB0aGUgcmVjZWl2ZSBVUkIgb24gZmFpbHVyZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIEFUTSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGRldmljZSBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGYwNTJmNzNmNmE1OTlhNTFiYWU1ZjMyOWYwYjc0ZWJlN2I2OTBmZDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAwODoyMToyOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYyBiL2RyaXZlcnMvdXNiL2F0bS9jeGFjcnUuY1xuaW5kZXggZjE5MDBjNTY3YmE0MS4uNDI5YWMyMGE4OTk5ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2F0bS9jeGFjcnUuY1xuKysrIGIvZHJpdmVycy91c2IvYXRtL2N4YWNydS5jXG5AQCAtNzAwLDYgKzcwMCw4IEBAIHN0YXRpYyBpbnQgY3hhY3J1X2NtKHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UsIGVudW0gY3hhY3J1X2NtX3JlcXVlc3QgY20sXG4gXHRyZXQgPSBvZmZkO1xuIFx0dXNiX2RiZyhpbnN0YW5jZS1cdTAwM2V1c2JhdG0sIFwiY20gJSN4XFxuXCIsIGNtKTtcbiBmYWlsOlxuK1x0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0dXNiX2tpbGxfdXJiKGluc3RhbmNlLVx1MDAzZXJjdl91cmIpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmluc3RhbmNlLVx1MDAzZWNtX3NlcmlhbGl6ZSk7XG4gZXJyOlxuIFx0cmV0dXJuIHJldDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIxOjMwLjc3MTM4MzM4N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyOTA0NTc0OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVVNCIEFUTSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyBiZWVuIGFwcGxpZWQgdG8gYGRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuY2AuIFRoZSBjb3JlIG9mIHRoaXMgY2hhbmdlIHNlZW1zIHRvIGJlIHRoZSBpbmNsdXNpb24gb2YgYHVzYl9raWxsX3VyYihpbnN0YW5jZS1cdTAwM2VyY3ZfdXJiKTtgIHdpdGhpbiB0aGUgYGZhaWw6YCBwYXRoIG9mIHRoZSBgY3hhY3J1X2NtKClgIGZ1bmN0aW9uLiBUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiwgYW5kIHRoYXQncyBzb21ldGhpbmcgSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQuXG5cbk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBzY3J1dGluaXplIHRoZSBgY3hhY3J1X2NtYCBmdW5jdGlvbiBpdHNlbGYuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlLCBpdHMgbG9naWMsIGFuZCBtb3N0IGltcG9ydGFudGx5LCB3aHkgdGhpcyBuZXcgbGluZSBpcyBiZWluZyBhZGRlZCBpbiB0aGUgZmFpbHVyZSBjYXNlLiBXaGF0IGRvZXMgYGluc3RhbmNlLVx1MDAzZXJjdl91cmJgIHJlcHJlc2VudD8gV2hhdCBzdGF0ZSBpcyB0aGUgc3lzdGVtIGluIHdoZW4gYHJldCBcdTAwM2MgMGAgb2NjdXJzPyBXaGF0J3MgdGhlIGludGVuZGVkIGVmZmVjdCBvZiBraWxsaW5nIHRoYXQgdXJiPyBQcmV2ZW50aW5nIGEgcmVzb3VyY2UgbGVhaz8gSGFuZGxpbmcgYW4gZXJyb3IgY29uZGl0aW9uP1xuXG5CZXlvbmQgYGN4YWNydV9jbWAsIEkgYWxzbyBuZWVkIHRvIG1hcCBvdXQgd2hvIHRoZSBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gYXJlLiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGFuZCB3aXRoaW4gd2hhdCBjb250ZXh0cywgdG8gYXNzZXNzIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UgaW4gdGhlIGxhcmdlciBwaWN0dXJlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIHBhcnRpY3VsYXIgYWN0aW9uIHJlbGF0ZXMgdG8gdGhlIG92ZXJhbGwgVVNCIEFUTSBkcml2ZXIsIGFuZCBzcGVjaWZpY2FsbHksIHRoZSBDWEFDUlUgZnVuY3Rpb25hbGl0eS4gVGhpcyBwYXRjaCBjb3VsZCBhZGRyZXNzIGEgcmFjZSBjb25kaXRpb24sIGltcHJvdmUgZXJyb3IgaGFuZGxpbmcsIG9yIGVuaGFuY2UgcmVzb3VyY2UgbWFuYWdlbWVudC4gTXkgam9iIG5vdyBpcyB0byBkZXRlcm1pbmUgKmV4YWN0bHkqIHdoYXQgdGhpcyBwYXRjaCBpcyBkb2luZyBhbmQgd2hhdCBpdHMgaW1wbGljYXRpb25zIGFyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1NSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MjE6MzUuMDYxODQzODc0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNDI2OTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImN4YWNydV9jbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTU5PWVudW0gY3hhY3J1X2Z3X3JlcXVlc3Qge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcwLSAqIGZpcm13YXJlIGlzIGxvYWRlZCAgKi9cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzE6ZW51bSBjeGFjcnVfY21fcmVxdWVzdCB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyLVxcdENNX1JFUVVFU1RfVU5ERUZJTkVEID0gMHg4MCxcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMDgtICovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwOTplbnVtIGN4YWNydV9jbV9mbGFzaCB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMC1cXHRDTV9GTEFTSF9SRUFEID0gMHhhMSxcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTQtLyogcmVwbHkgY29kZXMgdG8gdGhlIGNvbW1hbmRzIGFib3ZlICovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjExNTplbnVtIGN4YWNydV9jbV9zdGF0dXMge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTYtXFx0Q01fU1RBVFVTX1VOREVGSU5FRCxcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz0xNzA9c3RydWN0IGN4YWNydV9kYXRhIHtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xOTItXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjE5MzpzdGF0aWMgaW50IGN4YWNydV9jbShzdHJ1Y3QgY3hhY3J1X2RhdGEgKmluc3RhbmNlLCBlbnVtIGN4YWNydV9jbV9yZXF1ZXN0IGNtLFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xOTQtXFx0dTggKndkYXRhLCBpbnQgd3NpemUsIHU4ICpyZGF0YSwgaW50IHJzaXplKTtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz0zMzI9c3RhdGljIHNzaXplX3QgYWRzbF9zdGF0ZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzU2LVxcdGlmICghc3RyY21wKHN0cl9jbWQsIFxcXCJzdG9wXFxcIikgfHwgIXN0cmNtcChzdHJfY21kLCBcXFwicmVzdGFydFxcXCIpKSB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjM1NzpcXHRcXHRyZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0hJUF9BRFNMX0xJTkVfU1RPUCwgTlVMTCwgMCwgTlVMTCwgMCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTM1OC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTM3Ni1cXHRpZiAoIXN0cmNtcChzdHJfY21kLCBcXFwic3RhcnRcXFwiKSB8fCAhc3RyY21wKHN0cl9jbWQsIFxcXCJyZXN0YXJ0XFxcIikpIHtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6Mzc3OlxcdFxcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVEFSVCwgTlVMTCwgMCwgTlVMTCwgMCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTM3OC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTQzNT1zdGF0aWMgc3NpemVfdCBhZHNsX2NvbmZpZ19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNDgwLVxcdFxcdFxcdGRhdGFbMF0gPSBjcHVfdG9fbGUzMihudW0pO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo0ODE6XFx0XFx0XFx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfREFUQV9TRVQsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTQ4Mi1cXHRcXHRcXHRcXHQodTggKikgZGF0YSwgNCArIG51bSAqIDgsIE5VTEwsIDApO1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTU5MD1zdGF0aWMgaW50IGN4YWNydV9zdGFydF93YWl0X3VyYihzdHJ1Y3QgdXJiICp1cmIsIHN0cnVjdCBjb21wbGV0aW9uICpkb25lLFxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTYwNy1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NjA4OnN0YXRpYyBpbnQgY3hhY3J1X2NtKHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UsIGVudW0gY3hhY3J1X2NtX3JlcXVlc3QgY20sXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTYwOS1cXHRcXHQgICAgIHU4ICp3ZGF0YSwgaW50IHdzaXplLCB1OCAqcmRhdGEsIGludCByc2l6ZSlcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MDktXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjcxMDpzdGF0aWMgaW50IGN4YWNydV9jbV9nZXRfYXJyYXkoc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSwgZW51bSBjeGFjcnVfY21fcmVxdWVzdCBjbSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzExLVxcdFxcdFxcdCAgICAgICB1MzIgKmRhdGEsIGludCBzaXplKVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyMy1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzI0OlxcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgY20sIE5VTEwsIDAsICh1OCAqKSBidWYsIGJ1Zmxlbik7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyNS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MjctXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjcyODpcXHQvKiBsZW4gXFx1MDAzZSAwIFxcdTAwMjZcXHUwMDI2IGxlbiAlIDQgPT0gMCBndWFyYW50ZWVkIGJ5IGN4YWNydV9jbSgpICovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyOS1cXHRsZW4gPSByZXQgLyA0O1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTc2MD1zdGF0aWMgaW50IGN4YWNydV9jYXJkX3N0YXR1cyhzdHJ1Y3QgY3hhY3J1X2RhdGEgKmluc3RhbmNlKVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03NjEte1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3NjI6XFx0aW50IHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DQVJEX0dFVF9TVEFUVVMsIE5VTEwsIDAsIE5VTEwsIDApO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03NjMtXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9NzcxPXN0YXRpYyBpbnQgY3hhY3J1X2F0bV9zdGFydChzdHJ1Y3QgdXNiYXRtX2RhdGEgKnVzYmF0bV9pbnN0YW5jZSxcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03ODEtXFx0LyogUmVhZCBNQUMgYWRkcmVzcyAqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3ODI6XFx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfR0VUX01BQ19BRERSRVNTLCBOVUxMLCAwLFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03ODMtXFx0XFx0XFx0YXRtX2Rldi1cXHUwMDNlZXNpLCBzaXplb2YoYXRtX2Rldi1cXHUwMDNlZXNpKSk7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzkwLVxcdG11dGV4X2xvY2soXFx1MDAyNmluc3RhbmNlLVxcdTAwM2VhZHNsX3N0YXRlX3NlcmlhbGl6ZSk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjc5MTpcXHRyZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0hJUF9BRFNMX0xJTkVfU1RBUlQsIE5VTEwsIDAsIE5VTEwsIDApO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03OTItXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9ODIwPXN0YXRpYyB2b2lkIGN4YWNydV9wb2xsX3N0YXR1cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtODI5LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo4MzA6XFx0cmV0ID0gY3hhY3J1X2NtX2dldF9hcnJheShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DQVJEX0lORk9fR0VULCBidWYsIENYSU5GX01BWCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTgzMS1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTEwMDY9c3RhdGljIGludCBjeGFjcnVfaGVhdnlfaW5pdChzdHJ1Y3QgdXNiYXRtX2RhdGEgKnVzYmF0bV9pbnN0YW5jZSxcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTAxLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTAyOlxcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DQVJEX0dFVF9TVEFUVVMsIE5VTEwsIDAsIE5VTEwsIDApO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTAzLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIxOjM1LjEwMzI3NzgyM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTI5OTMwOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmU6XG5cbioqRGVlcCBEaXZlIGludG8gdGhlIFVTQiBBVE0gRHJpdmVyKipcblxuQWxyaWdodCwgc28gdGhlIGBjeGFjcnVfY21gIG1vZHVsZS4uLiB0aGF0J3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBVU0IgQVRNIGRyaXZlciBsaWVzLiBJdCdzIGNydWNpYWwgYmVjYXVzZSBpdCdzIHRoZSBmb3VuZGF0aW9uIGZvciBzZXZlcmFsIGtleSBmdW5jdGlvbnMuIEkgc2VlIGl0IGJlaW5nIGNhbGxlZCBmcm9tIGBjeGFjcnVfY21fZ2V0X2FycmF5YCwgYGN4YWNydV9jYXJkX3N0YXR1c2AsIGBjeGFjcnVfYXRtX3N0YXJ0YCwgYGN4YWNydV9oZWF2eV9pbml0YCwgYW5kIGV2ZW4gdGhlIHN0b3JhZ2UgZnVuY3Rpb25zIGZvciBEU0wgc3RhdGUgYW5kIGNvbmZpZ3VyYXRpb24sIGBhZHNsX3N0YXRlX3N0b3JlYCwgYW5kIGBhZHNsX2NvbmZpZ19zdG9yZWAuIFRoYXQgZ2l2ZXMgbWUgYSBkZWNlbnQgb3ZlcnZpZXcgb2YgaXRzIGltcG9ydGFuY2UuIEl0J3MgZXNzZW50aWFsbHkgdGhlIGJhY2tib25lIG9mIGFsbCBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgQVRNIGhhcmR3YXJlIG92ZXIgdGhlIFVTQiBidXMuXG5cbkdpdmVuIHRoZSBjZW50cmFsaXR5IG9mIHRoaXMgbW9kdWxlLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciBgY3hhY3J1YC4gSXQncyB0aGUgYmVzdCB3YXkgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaXMgY29uZmlndXJlZCwgaXRzIGRlcGVuZGVuY2llcywgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvcHRpb25zLiBLbm93aW5nIHRoZSBLY29uZmlnIG9wdGlvbnMgd2lsbCBnaXZlIG1lIHRoZSBpbmZvcm1hdGlvbiBJIG5lZWQgdG8gY29uZmlybSBob3cgdGhlIGRyaXZlciBpcyBjb25maWd1cmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzU3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MjE6MzkuMjk2MjczMjMyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxOTYzMTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImN4YWNydVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZz0zMj1jb25maWcgVVNCX0NYQUNSVVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL0tjb25maWctNDEtXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG5kcml2ZXJzL3VzYi9hdG0vS2NvbmZpZzo0MjpcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBjeGFjcnUuXFxuZHJpdmVycy91c2IvYXRtL0tjb25maWctNDMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIxOjM5LjMzODI1NDM1MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNDc5MzM5NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIHN1bW1hcml6ZWQsIGFzc3VtaW5nIEknbSBhbHJlYWR5IHByZXR0eSBmYW1pbGlhciB3aXRoIEtjb25maWc6XG5cbioqRGVlcCBEaXZlIGludG8gYFVTQl9DWEFDUlVgIEtjb25maWcqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBtYWtlIGFueSBhc3N1bXB0aW9ucyBvciBqdW1wIHRvIGNvbmNsdXNpb25zLCBJIG5lZWQgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHB1bGwgdXAgdGhlIGNvbXBsZXRlIEtjb25maWcgZW50cnkgZm9yIGBVU0JfQ1hBQ1JVYC4gVW5kZXJzdGFuZGluZyB0aGUgZnVsbCBjb250ZXh0LCBpbmNsdWRpbmcgaXRzIGRlcGVuZGVuY2llcywgZGVmYXVsdCBzZXR0aW5ncywgaGVscCB0ZXh0LCBhbmQgYW55IGRlZmluZWQgdHJpc3RhdGUgdmFsdWVzLCBpcyBjcml0aWNhbC4gSSBjYW4ndCByZWFsbHkgbWFrZSBhbiBpbmZvcm1lZCBkZWNpc2lvbiBvciBjb250cmlidXRlIG1lYW5pbmdmdWxseSB3aXRob3V0IHRoYXQgZm91bmRhdGlvbmFsIGtub3dsZWRnZS4gS25vd2luZyB0aGUgZnVsbCBlbnRyeSBhbGxvd3MgbWUgdG86XG5cbiogICAqKkRldGVybWluZSBpdHMgcHVycG9zZToqKiBXaGF0IGlzIHRoaXMgYFVTQl9DWEFDUlVgIG9wdGlvbiBpbnRlbmRlZCB0byBkbz8gV2hhdCBkZXZpY2Ugb3IgZnVuY3Rpb24gZG9lcyBpdCBjb250cm9sP1xuKiAgICoqVW5kZXJzdGFuZCBkZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBLY29uZmlnIHN5bWJvbHMgZG9lcyBpdCByZWx5IG9uPyBXaGljaCBvcHRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBiZWZvcmUgdGhpcyBvbmUgYmVjb21lcyBhdmFpbGFibGU/IEFyZSB0aGVyZSBhbnkgY29uZmxpY3RzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj9cbiogICAqKkV2YWx1YXRlIERlZmF1bHQgVmFsdWVzOioqIEFyZSB0aGUgZGVmYXVsdCBzZXR0aW5ncyBhcHByb3ByaWF0ZSBmb3IgdGhlIHRhcmdldCBjb25maWd1cmF0aW9uPyBEbyB0aGV5IGFsaWduIHdpdGggdGhlIGdlbmVyYWwgZGVzaWduIHBoaWxvc29waHkgb2YgdGhlIHByb2plY3Q/XG4qICAgKipHcmFzcCB0aGUgSGVscCBUZXh0OioqIFdoYXQgYXJlIHRoZSBpbnRlbmRlZCB1c2UgY2FzZXMgZm9yIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24/IERvZXMgdGhlIGhlbHAgdGV4dCBvZmZlciBlbm91Z2ggY2xhcml0eSBvciBkb2VzIGl0IG5lZWQgdG8gYmUgdXBkYXRlZD9cbiogICAqKkFzc2VzcyB0cmlzdGF0ZSBsb2dpYzoqKiBJIG11c3QgdW5kZXJzdGFuZCBhbGwgdGhyZWUgc3RhdGVzICh5LCBuLCBtKSBhbmQgaG93IHRoYXQgYWZmZWN0cyBmdW5jdGlvbmFsaXR5LCBlc3BlY2lhbGx5IGlmIHRoaXMgaXMgYSBkcml2ZXIgb3IgaGFyZHdhcmUgc3VwcG9ydCBvcHRpb24uXG5cbkVzc2VudGlhbGx5LCBJIG5lZWQgdGhlIHJhdyBkYXRhLiBUaGlzIEtjb25maWcgZW50cnkgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBwb3RlbnRpYWwgbW9kaWZpY2F0aW9ucywgb3IgZGlzY3Vzc2lvbnMuIE5vIHNob3J0Y3V0cyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODExLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MjE6NDMuMzg2MTkwOTYzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNzU4MTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfQ1hBQ1JVXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2F0bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2F0bS9LY29uZmlnPTIwPWNvbmZpZyBVU0JfU1BFRURUT1VDSFxcbi0tXFxuZHJpdmVycy91c2IvYXRtL0tjb25maWctMzEtXFxuZHJpdmVycy91c2IvYXRtL0tjb25maWc6MzI6Y29uZmlnIFVTQl9DWEFDUlVcXG5kcml2ZXJzL3VzYi9hdG0vS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZSBcXFwiQ29uZXhhbnQgQWNjZXNzUnVubmVyIFVTQiBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMTo0My40Mjc5NTI0NzJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDI1MzYxNzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkncmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgS2NvbmZpZyBGaWxlIC0gTGluZSAzMioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgemVyb2luZyBpbiBvbiB0aGUgS2NvbmZpZyBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMzIuIFRoYXQncyB1c3VhbGx5IGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYSByZWFzb24sIGFuZCBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgYXJlYSBsaWtlbHkgdG91Y2hlcyBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIEl0IGNvdWxkIGJlIGEgY29yZSBtb2R1bGUgZGVmaW5pdGlvbiwgYSBmZWF0dXJlIGZsYWcsIG9yIHBlcmhhcHMgZXZlbiBhIGRlcGVuZGVuY3kgSSBuZWVkIHRvIGZ1bGx5IGdyYXNwIGJlZm9yZSBtb3Zpbmcgb24uIEknbGwgbmVlZCB0byBsb29rIGNhcmVmdWxseSBhdCB0aGUgY29udGV4dCBhcm91bmQgdGhhdCBsaW5lLCB0cmFjZSBhbnkgcmVsZXZhbnQgc3ltYm9scywgYW5kIHVuZGVyc3RhbmQgd2hhdCB0aGF0IHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgZG9pbmcgYW5kIHdoeS4gSSBleHBlY3QgdGhlcmUgaXMgc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMgbXkgZXhwZXJ0aXNlIHRvIHVuZGVyc3RhbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyOTUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMTo0Ni44NTMzMTYyNjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvYXRtL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjU6XFx0XFx0ICBtb2RlbS4gIEluIG9yZGVyIHRvIHVzZSB5b3VyIG1vZGVtIHlvdSB3aWxsIG5lZWQgdG8gaW5zdGFsbCB0aGUgXFxuICAyNjpcXHRcXHQgIHR3byBwYXJ0cyBvZiB0aGUgZmlybXdhcmUsIGV4dHJhY3RlZCBieSB0aGUgdXNlciBzcGFjZSB0b29sczsgc2VlXFxuICAyNzpcXHRcXHQgIFxcdTAwM2NodHRwOi8vd3d3LmxpbnV4LXVzYi5vcmcvU3BlZWRUb3VjaC9cXHUwMDNlIGZvciBkZXRhaWxzLlxcbiAgMjg6XFx0XFxuICAyOTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAgMzA6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc3BlZWR0Y2guXFxuICAzMTpcXHRcXG4gIDMyOlxcdGNvbmZpZyBVU0JfQ1hBQ1JVXFxuICAzMzpcXHRcXHR0cmlzdGF0ZSBcXFwiQ29uZXhhbnQgQWNjZXNzUnVubmVyIFVTQiBzdXBwb3J0XFxcIlxcbiAgMzQ6XFx0XFx0c2VsZWN0IEZXX0xPQURFUlxcbiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSBoYXZlIGFuIEFEU0wgVVNCIG1vZGVtIGJhc2VkIG9uIHRoZSBDb25leGFudFxcbiAgMzc6XFx0XFx0ICBBY2Nlc3NSdW5uZXIgY2hpcHNldC4gIEluIG9yZGVyIHRvIHVzZSB5b3VyIG1vZGVtIHlvdSB3aWxsIG5lZWQgdG9cXG4gIDM4OlxcdFxcdCAgaW5zdGFsbCB0aGUgZmlybXdhcmUsIGV4dHJhY3RlZCBieSB0aGUgdXNlciBzcGFjZSB0b29sczsgc2VlXFxuICAzOTpcXHRcXHQgIFxcdTAwM2NodHRwOi8vYWNjZXNzcnVubmVyLnNvdXJjZWZvcmdlLm5ldC9cXHUwMDNlIGZvciBkZXRhaWxzLlxcbiAgNDA6XFx0XFxuICA0MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAgNDI6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgY3hhY3J1LlxcbiAgNDM6XFx0XFxuICA0NDpcXHRjb25maWcgVVNCX1VFQUdMRUFUTVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMTo0Ni44NTMzOTAzODdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE0OTIyMzEzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIGEgVVNCIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSoqXG5cbkFscmlnaHQsIHNvIHRoZSBjb25maWcgaW4gcXVlc3Rpb24gaXMgYFVTQl9DWEFDUlVgLiBJJ20gZ3Vlc3NpbmcgdGhhdCBkZXBlbmRzIG9uIGBVU0JfQVRNYC4gTGV0J3MgYXNzdW1lIGBVU0JfQVRNYCBpcyB0aGUgcGFyZW50LCBzbyBJIHNob3VsZCBwcm9iYWJseSBzdGFydCBieSBjaGVja2luZyBvdXQgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSBpbiBgZHJpdmVycy91c2IvYXRtL2AuIExldCdzIGdldCByaWdodCBpbnRvIGBkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZ2AgYW5kIHNlZSB3aGF0J3Mgd2hhdC4gSSdsbCByZWFkIGl0IGZyb20gdGhlIHRvcCBhbmQgc2VlIHdoZXJlIHRoaXMgcmFiYml0IGhvbGUgbGVhZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MzAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIxOjUyLjAwMjYxNzIyNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzE1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvYXRtL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFVTQi9BVE0gRFNMIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0bWVudWNvbmZpZyBVU0JfQVRNXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIERTTCBtb2RlbSBzdXBwb3J0XFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBBVE1cXG4gICA5OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGNvbm5lY3QgYSBVU0IgRGlnaXRhbCBTdWJzY3JpYmVyIExpbmUgKERTTClcXG4gIDEyOlxcdFxcdCAgbW9kZW0gdG8geW91ciBjb21wdXRlcidzIFVTQiBwb3J0LiAgWW91IHdpbGwgdGhlbiBuZWVkIHRvIGNob29zZSB5b3VyXFxuICAxMzpcXHRcXHQgIG1vZGVtIGZyb20gdGhlIGxpc3QgYmVsb3cuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuICAxNjpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB1c2JhdG0uXFxuICAxNzpcXHRcXG4gIDE4OlxcdGlmIFVTQl9BVE1cXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIFVTQl9TUEVFRFRPVUNIXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIxOjUyLjAwMjc1MDQzNloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTY5Njk5NDIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgY3hhY3J1X2NtIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgVVNCX0NYQUNSVWAgZHJpdmVyLCBhbmQgSSBzZWUgaXRzIGRlcGVuZGVuY3kgY2hhaW46IGl0IHJlbGllcyBvbiBgVVNCX0FUTWAsIHdoaWNoLCBpbiB0dXJuLCBkZXBlbmRzIG9uIGBBVE1gLiBUaGF0J3MgZ29vZCB0byBrbm93IGZvciBjb250ZXh0LiBUaGUgcGF0Y2ggaXRzZWxmIGlzIGxvY2F0ZWQgd2l0aGluIGBjeGFjcnVfY21gLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIGJlIHJlbGlhYmx5IHRyaWdnZXJlZCBmb3IgdGVzdGluZz8gR2l2ZW4gdGhhdCBpdCdzIGEgVVNCIGRyaXZlciwgdGhlIGFuc3dlciBpcyBtb3N0IGxpa2VseSB5ZXMuIFN5emthbGxlcidzIFVTQiBlbXVsYXRpb24gY2FwYWJpbGl0aWVzIHNob3VsZCBhbGxvdyBpdCB0byBib3RoIGluaXRpYWxpemUgdGhlIFVTQiBkZXZpY2UgYW5kIHRoZW4gZXN0YWJsaXNoIGNvbW11bmljYXRpb24gd2l0aCB0aGUgdGFyZ2V0IHN5c3RlbS5cblxuU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBgdXNiX2tpbGxfdXJiKGluc3RhbmNlLVx1MDAzZXJjdl91cmIpO2Agd2l0aGluIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIGBjeGFjcnVfY21gLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjaGFuZ2UgdG8gaG93IGVycm9yIGhhbmRsaW5nIG9jY3Vycy4gVGhhdCdzIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBkZWVwIGRpdmUuIEJlZm9yZSBhbnl0aGluZyBlbHNlLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGV4YWN0IGZ1bmN0aW9uIHNpZ25hdHVyZSBvZiBgY3hhY3J1X2NtYC4gSSB3aWxsIGFsc28gY2hlY2sgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQncyBkZWNsYXJlZCBgc3RhdGljYC4gVGhhdCBpbmZvcm1hdGlvbiBtYXkgYmUgaW1wb3J0YW50IGxhdGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Mjc2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MjE6NTYuNTcyNDUyODE2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTg1MDAxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjeGFjcnVfY21cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvYXRtL2N4YWNydS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz01OT1lbnVtIGN4YWNydV9md19yZXF1ZXN0IHtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MC0gKiBmaXJtd2FyZSBpcyBsb2FkZWQgICovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjcxOmVudW0gY3hhY3J1X2NtX3JlcXVlc3Qge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03Mi1cXHRDTV9SRVFVRVNUX1VOREVGSU5FRCA9IDB4ODAsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA4LSAqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDk6ZW51bSBjeGFjcnVfY21fZmxhc2gge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTAtXFx0Q01fRkxBU0hfUkVBRCA9IDB4YTEsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE0LS8qIHJlcGx5IGNvZGVzIHRvIHRoZSBjb21tYW5kcyBhYm92ZSAqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTU6ZW51bSBjeGFjcnVfY21fc3RhdHVzIHtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE2LVxcdENNX1NUQVRVU19VTkRFRklORUQsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9MTcwPXN0cnVjdCBjeGFjcnVfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTkyLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxOTM6c3RhdGljIGludCBjeGFjcnVfY20oc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSwgZW51bSBjeGFjcnVfY21fcmVxdWVzdCBjbSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTk0LVxcdHU4ICp3ZGF0YSwgaW50IHdzaXplLCB1OCAqcmRhdGEsIGludCByc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9MzMyPXN0YXRpYyBzc2l6ZV90IGFkc2xfc3RhdGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTM1Ni1cXHRpZiAoIXN0cmNtcChzdHJfY21kLCBcXFwic3RvcFxcXCIpIHx8ICFzdHJjbXAoc3RyX2NtZCwgXFxcInJlc3RhcnRcXFwiKSkge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzozNTc6XFx0XFx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NISVBfQURTTF9MSU5FX1NUT1AsIE5VTEwsIDAsIE5VTEwsIDApO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zNTgtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zNzYtXFx0aWYgKCFzdHJjbXAoc3RyX2NtZCwgXFxcInN0YXJ0XFxcIikgfHwgIXN0cmNtcChzdHJfY21kLCBcXFwicmVzdGFydFxcXCIpKSB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjM3NzpcXHRcXHRyZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0hJUF9BRFNMX0xJTkVfU1RBUlQsIE5VTEwsIDAsIE5VTEwsIDApO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zNzgtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz00MzU9c3RhdGljIHNzaXplX3QgYWRzbF9jb25maWdfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTQ4MC1cXHRcXHRcXHRkYXRhWzBdID0gY3B1X3RvX2xlMzIobnVtKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NDgxOlxcdFxcdFxcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DQVJEX0RBVEFfU0VULFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy00ODItXFx0XFx0XFx0XFx0KHU4ICopIGRhdGEsIDQgKyBudW0gKiA4LCBOVUxMLCAwKTtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz01OTA9c3RhdGljIGludCBjeGFjcnVfc3RhcnRfd2FpdF91cmIoc3RydWN0IHVyYiAqdXJiLCBzdHJ1Y3QgY29tcGxldGlvbiAqZG9uZSxcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy02MDctXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjYwODpzdGF0aWMgaW50IGN4YWNydV9jbShzdHJ1Y3QgY3hhY3J1X2RhdGEgKmluc3RhbmNlLCBlbnVtIGN4YWNydV9jbV9yZXF1ZXN0IGNtLFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy02MDktXFx0XFx0ICAgICB1OCAqd2RhdGEsIGludCB3c2l6ZSwgdTggKnJkYXRhLCBpbnQgcnNpemUpXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzA5LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3MTA6c3RhdGljIGludCBjeGFjcnVfY21fZ2V0X2FycmF5KHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UsIGVudW0gY3hhY3J1X2NtX3JlcXVlc3QgY20sXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcxMS1cXHRcXHRcXHQgICAgICAgdTMyICpkYXRhLCBpbnQgc2l6ZSlcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MjMtXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjcyNDpcXHRyZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIGNtLCBOVUxMLCAwLCAodTggKikgYnVmLCBidWZsZW4pO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MjUtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzI3LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3Mjg6XFx0LyogbGVuIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBsZW4gJSA0ID09IDAgZ3VhcmFudGVlZCBieSBjeGFjcnVfY20oKSAqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MjktXFx0bGVuID0gcmV0IC8gNDtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz03NjA9c3RhdGljIGludCBjeGFjcnVfY2FyZF9zdGF0dXMoc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSlcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzYxLXtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzYyOlxcdGludCByZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0FSRF9HRVRfU1RBVFVTLCBOVUxMLCAwLCBOVUxMLCAwKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzYzLVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTc3MT1zdGF0aWMgaW50IGN4YWNydV9hdG1fc3RhcnQoc3RydWN0IHVzYmF0bV9kYXRhICp1c2JhdG1faW5zdGFuY2UsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzgxLVxcdC8qIFJlYWQgTUFDIGFkZHJlc3MgKi9cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzgyOlxcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DQVJEX0dFVF9NQUNfQUREUkVTUywgTlVMTCwgMCxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzgzLVxcdFxcdFxcdGF0bV9kZXYtXFx1MDAzZWVzaSwgc2l6ZW9mKGF0bV9kZXYtXFx1MDAzZWVzaSkpO1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc5MC1cXHRtdXRleF9sb2NrKFxcdTAwMjZpbnN0YW5jZS1cXHUwMDNlYWRzbF9zdGF0ZV9zZXJpYWxpemUpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3OTE6XFx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NISVBfQURTTF9MSU5FX1NUQVJULCBOVUxMLCAwLCBOVUxMLCAwKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzkyLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTgyMD1zdGF0aWMgdm9pZCBjeGFjcnVfcG9sbF9zdGF0dXMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTgyOS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6ODMwOlxcdHJldCA9IGN4YWNydV9jbV9nZXRfYXJyYXkoaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0FSRF9JTkZPX0dFVCwgYnVmLCBDWElORl9NQVgpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy04MzEtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz0xMDA2PXN0YXRpYyBpbnQgY3hhY3J1X2hlYXZ5X2luaXQoc3RydWN0IHVzYmF0bV9kYXRhICp1c2JhdG1faW5zdGFuY2UsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTEwMS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTEwMjpcXHRyZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0FSRF9HRVRfU1RBVFVTLCBOVUxMLCAwLCBOVUxMLCAwKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTEwMy1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMTo1Ni42MTIzMDcwMzZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc2ODEzNzQyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqVGFyZ2V0aW5nIHRoZSBEeW5hbWljIEVsZW1lbnRzKipcblxuQWxyaWdodCwgYGN4YWNydV9jbWAgaXMgYSBrbm93biBxdWFudGl0eSwgYSBzdGF0aWMgY29tcG9uZW50LiBUaGVyZWZvcmUsIGl0J3Mgbm90IHRoZSBwcmltYXJ5IHNvdXJjZSBvZiB0aGUgdmFyaWFiaWxpdHkgb3IgaW50ZXJlc3RpbmcgYmVoYXZpb3IgSSdtIGNoYXNpbmcuIFRoZSBrZXkgbGllcyBpbiB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIHN0YXRpYyBlbGVtZW50IGludGVyYWN0cyB3aXRoIHRoZSBkeW5hbWljIHBhcnRzIG9mIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhlIG5vbi1zdGF0aWMgY29kZSBwYXRocy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIHBvaW50cyB3aGVyZSBleGVjdXRpb24gKmVudGVycyogb3IgY2FsbHMgaW50byBvciB1c2VzIGBjeGFjcnVfY21gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlIHN0YXRpYyBjb21wb25lbnQgaXMgaW52b2tlZC4gVGhhdCBtZWFucyBJIG5lZWQgdG8gbG9vayBmb3IgZnVuY3Rpb25zIHRoYXQgYXJlIGV4cG9ydGVkIGJ5IG9yIGFjdCBhcyBjYWxsYmFjayBwb2ludHMgZm9yIGBjeGFjcnVfY21gLiBXaGVyZSBkb2VzIGl0IHBsdWcgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmU/IFdoaWNoIG90aGVyIGNvbXBvbmVudHMgcmVseSBvbiBpdHMgc2VydmljZXMgb3IsIGNvbnZlcnNlbHksIHdoaWNoIGNvbXBvbmVudHMgZG9lcyBpdCByZWx5IG9uPyBUaGF04oCZcyB3aGVyZSB0aGUgaW50ZXJlc3Rpbmcgc3R1ZmYgaXMgbGlrZWx5IGhhcHBlbmluZy4gTGV0J3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IHRoZSBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1MzgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMjowMC4zODA0NDY4NTRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNDM0ODk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImN4YWNydV9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvYXRtL2N4YWNydS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zMy1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MzQ6c3RhdGljIGNvbnN0IGNoYXIgY3hhY3J1X2RyaXZlcl9uYW1lW10gPSBcXFwiY3hhY3J1XFxcIjtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzUtXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTgtICogZmlybXdhcmUgaXMgbG9hZGVkICAqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo1OTplbnVtIGN4YWNydV9md19yZXF1ZXN0IHtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNjAtXFx0RldfQ01EX0VSUixcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MC0gKiBmaXJtd2FyZSBpcyBsb2FkZWQgICovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjcxOmVudW0gY3hhY3J1X2NtX3JlcXVlc3Qge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03Mi1cXHRDTV9SRVFVRVNUX1VOREVGSU5FRCA9IDB4ODAsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA4LSAqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDk6ZW51bSBjeGFjcnVfY21fZmxhc2gge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTAtXFx0Q01fRkxBU0hfUkVBRCA9IDB4YTEsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE0LS8qIHJlcGx5IGNvZGVzIHRvIHRoZSBjb21tYW5kcyBhYm92ZSAqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTU6ZW51bSBjeGFjcnVfY21fc3RhdHVzIHtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE2LVxcdENNX1NUQVRVU19VTkRFRklORUQsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTI2LS8qIGluZGljZXMgaW50byBDQVJEX0lORk9fR0VUIHJldHVybiBhcnJheSAqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjc6ZW51bSBjeGFjcnVfaW5mb19pZHgge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjgtXFx0Q1hJTkZfRE9XTlNUUkVBTV9SQVRFLFxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE1Ni1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTU3OmVudW0gY3hhY3J1X3BvbGxfc3RhdGUge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xNTgtXFx0Q1hQT0xMX1NUT1BQSU5HLFxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE2My1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTY0OnN0cnVjdCBjeGFjcnVfbW9kZW1fdHlwZSB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE2NS1cXHR1MzIgcGxsX2ZfY2xrO1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE2OS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTcwOnN0cnVjdCBjeGFjcnVfZGF0YSB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE3MS1cXHRzdHJ1Y3QgdXNiYXRtX2RhdGEgKnVzYmF0bTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTcyLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxNzM6XFx0Y29uc3Qgc3RydWN0IGN4YWNydV9tb2RlbV90eXBlICptb2RlbV90eXBlO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xNzQtXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTgwLVxcdHN0cnVjdCBtdXRleCBwb2xsX3N0YXRlX3NlcmlhbGl6ZTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTgxOlxcdGVudW0gY3hhY3J1X3BvbGxfc3RhdGUgcG9sbF9zdGF0ZTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTgyLVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE5Mi1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTkzOnN0YXRpYyBpbnQgY3hhY3J1X2NtKHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UsIGVudW0gY3hhY3J1X2NtX3JlcXVlc3QgY20sXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE5NC1cXHR1OCAqd2RhdGEsIGludCB3c2l6ZSwgdTggKnJkYXRhLCBpbnQgcnNpemUpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxOTU6c3RhdGljIHZvaWQgY3hhY3J1X3BvbGxfc3RhdHVzKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE5Ni1cXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz0yMDg9c3RhdGljIHNzaXplX3QgX25hbWUjI19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgXFxcXFxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTIxMC17IFxcXFxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjExOlxcdHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UgPSB0b191c2JhdG1fZHJpdmVyX2RhdGEoXFxcXFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yMTItXFx0XFx0dG9fdXNiX2ludGVyZmFjZShkZXYpKTsgXFxcXFxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTIxNi1cXFxcXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjIxNzpcXHRyZXR1cm4gY3hhY3J1X3N5c2ZzX3Nob3dhdHRyXyMjX3R5cGUoaW5zdGFuY2UtXFx1MDAzZWNhcmRfaW5mb1tfdmFsdWVdLCBidWYpOyBcXFxcXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTIxOC19IFxcXFxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9MjE5PUNYQUNSVV9fQVRUUl9JTklUKF9uYW1lKVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTIzMC1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjMxOnN0YXRpYyBzc2l6ZV90IGN4YWNydV9zeXNmc19zaG93YXR0cl91MzIodTMyIHZhbHVlLCBjaGFyICpidWYpXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTIzMi17XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMjM1LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoyMzY6c3RhdGljIHNzaXplX3QgY3hhY3J1X3N5c2ZzX3Nob3dhdHRyX3M4KHM4IHZhbHVlLCBjaGFyICpidWYpXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTIzNy17XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMjQwLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoyNDE6c3RhdGljIHNzaXplX3QgY3hhY3J1X3N5c2ZzX3Nob3dhdHRyX2RCKHMxNiB2YWx1ZSwgY2hhciAqYnVmKVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yNDIte1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTI1Mi1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjUzOnN0YXRpYyBzc2l6ZV90IGN4YWNydV9zeXNmc19zaG93YXR0cl9ib29sKHUzMiB2YWx1ZSwgY2hhciAqYnVmKVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yNTQte1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTI2MS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjYyOnN0YXRpYyBzc2l6ZV90IGN4YWNydV9zeXNmc19zaG93YXR0cl9MSU5LKHUzMiB2YWx1ZSwgY2hhciAqYnVmKVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yNjMte1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTI3MC1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjcxOnN0YXRpYyBzc2l6ZV90IGN4YWNydV9zeXNmc19zaG93YXR0cl9MSU5FKHUzMiB2YWx1ZSwgY2hhciAqYnVmKVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yNzIte1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTI4MS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjgyOnN0YXRpYyBzc2l6ZV90IGN4YWNydV9zeXNmc19zaG93YXR0cl9NT0RVKHUzMiB2YWx1ZSwgY2hhciAqYnVmKVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yODMte1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTMwMz1zdGF0aWMgc3NpemVfdCBtYWNfYWRkcmVzc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zMDUte1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzozMDY6XFx0c3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSA9IHRvX3VzYmF0bV9kcml2ZXJfZGF0YShcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzA3LVxcdFxcdFxcdHRvX3VzYl9pbnRlcmZhY2UoZGV2KSk7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9MzE1PXN0YXRpYyBzc2l6ZV90IGFkc2xfc3RhdGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzE4LVxcdHN0YXRpYyBjaGFyICpzdHJbXSA9IHsgXFxcInJ1bm5pbmdcXFwiLCBcXFwic3RvcHBlZFxcXCIgfTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MzE5OlxcdHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UgPSB0b191c2JhdG1fZHJpdmVyX2RhdGEoXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTMyMC1cXHRcXHRcXHR0b191c2JfaW50ZXJmYWNlKGRldikpO1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTMzMj1zdGF0aWMgc3NpemVfdCBhZHNsX3N0YXRlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zMzQte1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzozMzU6XFx0c3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSA9IHRvX3VzYmF0bV9kcml2ZXJfZGF0YShcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzM2LVxcdFxcdFxcdHRvX3VzYl9pbnRlcmZhY2UoZGV2KSk7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzU2LVxcdGlmICghc3RyY21wKHN0cl9jbWQsIFxcXCJzdG9wXFxcIikgfHwgIXN0cmNtcChzdHJfY21kLCBcXFwicmVzdGFydFxcXCIpKSB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjM1NzpcXHRcXHRyZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0hJUF9BRFNMX0xJTkVfU1RPUCwgTlVMTCwgMCwgTlVMTCwgMCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTM1OC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTM3Ni1cXHRpZiAoIXN0cmNtcChzdHJfY21kLCBcXFwic3RhcnRcXFwiKSB8fCAhc3RyY21wKHN0cl9jbWQsIFxcXCJyZXN0YXJ0XFxcIikpIHtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6Mzc3OlxcdFxcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVEFSVCwgTlVMTCwgMCwgTlVMTCwgMCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTM3OC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTQyNy1cXHRpZiAocG9sbCA9PSBDWFBPTExfUE9MTElORylcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NDI4OlxcdFxcdGN4YWNydV9wb2xsX3N0YXR1cyhcXHUwMDI2aW5zdGFuY2UtXFx1MDAzZXBvbGxfd29yay53b3JrKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNDI5LVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTQzNT1zdGF0aWMgc3NpemVfdCBhZHNsX2NvbmZpZ19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNDM3LXtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NDM4OlxcdHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UgPSB0b191c2JhdG1fZHJpdmVyX2RhdGEoXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTQzOS1cXHRcXHRcXHR0b191c2JfaW50ZXJmYWNlKGRldikpO1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTQ4MC1cXHRcXHRcXHRkYXRhWzBdID0gY3B1X3RvX2xlMzIobnVtKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NDgxOlxcdFxcdFxcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DQVJEX0RBVEFfU0VULFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy00ODItXFx0XFx0XFx0XFx0KHU4ICopIGRhdGEsIDQgKyBudW0gKiA4LCBOVUxMLCAwKTtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz01Mzk9Q1hBQ1JVX0FMTF9GSUxFUyhJTklUKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTQwLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo1NDE6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmN4YWNydV9hdHRyc1tdID0ge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy01NDItXFx0XFx1MDAyNmRldl9hdHRyX2Fkc2xfY29uZmlnLmF0dHIsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9NTcwPUFUVFJJQlVURV9HUk9VUFMoY3hhY3J1KTtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy01NzItLyogdGhlIGZvbGxvd2luZyB0aHJlZSBmdW5jdGlvbnMgYXJlIHN0b2xlbiBmcm9tIGRyaXZlcnMvdXNiL2NvcmUvbWVzc2FnZS5jICovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjU3MzpzdGF0aWMgdm9pZCBjeGFjcnVfYmxvY2tpbmdfY29tcGxldGlvbihzdHJ1Y3QgdXJiICp1cmIpXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTU3NC17XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTc3LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo1Nzg6c3RydWN0IGN4YWNydV90aW1lciB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTU3OS1cXHRzdHJ1Y3QgdGltZXJfbGlzdCB0aW1lcjtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy01ODItXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjU4MzpzdGF0aWMgdm9pZCBjeGFjcnVfdGltZW91dF9raWxsKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy01ODQte1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo1ODU6XFx0c3RydWN0IGN4YWNydV90aW1lciAqdGltZXIgPSB0aW1lcl9jb250YWluZXJfb2YodGltZXIsIHQsIHRpbWVyKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTg2LVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTU4OS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NTkwOnN0YXRpYyBpbnQgY3hhY3J1X3N0YXJ0X3dhaXRfdXJiKHN0cnVjdCB1cmIgKnVyYiwgc3RydWN0IGNvbXBsZXRpb24gKmRvbmUsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTU5MS1cXHRcXHRcXHRcXHQgaW50ICphY3R1YWxfbGVuZ3RoKVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy01OTIte1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo1OTM6XFx0c3RydWN0IGN4YWNydV90aW1lciB0aW1lciA9IHtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTk0LVxcdFxcdC51cmIgPSB1cmIsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTk2LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo1OTc6XFx0dGltZXJfc2V0dXBfb25fc3RhY2soXFx1MDAyNnRpbWVyLnRpbWVyLCBjeGFjcnVfdGltZW91dF9raWxsLCAwKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTk4LVxcdG1vZF90aW1lcihcXHUwMDI2dGltZXIudGltZXIsIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKENNRF9USU1FT1VUKSk7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNjA3LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo2MDg6c3RhdGljIGludCBjeGFjcnVfY20oc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSwgZW51bSBjeGFjcnVfY21fcmVxdWVzdCBjbSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNjA5LVxcdFxcdCAgICAgdTggKndkYXRhLCBpbnQgd3NpemUsIHU4ICpyZGF0YSwgaW50IHJzaXplKVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTY1Ni1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NjU3OlxcdHJldCA9IGN4YWNydV9zdGFydF93YWl0X3VyYihpbnN0YW5jZS1cXHUwMDNlc25kX3VyYiwgXFx1MDAyNmluc3RhbmNlLVxcdTAwM2VzbmRfZG9uZSwgTlVMTCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTY1OC1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTY2My1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NjY0OlxcdHJldCA9IGN4YWNydV9zdGFydF93YWl0X3VyYihpbnN0YW5jZS1cXHUwMDNlcmN2X3VyYiwgXFx1MDAyNmluc3RhbmNlLVxcdTAwM2VyY3ZfZG9uZSwgXFx1MDAyNmFjdGxlbik7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTY2NS1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcwOS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzEwOnN0YXRpYyBpbnQgY3hhY3J1X2NtX2dldF9hcnJheShzdHJ1Y3QgY3hhY3J1X2RhdGEgKmluc3RhbmNlLCBlbnVtIGN4YWNydV9jbV9yZXF1ZXN0IGNtLFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MTEtXFx0XFx0XFx0ICAgICAgIHUzMiAqZGF0YSwgaW50IHNpemUpXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzIzLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3MjQ6XFx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBjbSwgTlVMTCwgMCwgKHU4ICopIGJ1ZiwgYnVmbGVuKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzI1LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyNy1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzI4OlxcdC8qIGxlbiBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgbGVuICUgNCA9PSAwIGd1YXJhbnRlZWQgYnkgY3hhY3J1X2NtKCkgKi9cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzI5LVxcdGxlbiA9IHJldCAvIDQ7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzU5LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3NjA6c3RhdGljIGludCBjeGFjcnVfY2FyZF9zdGF0dXMoc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSlcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzYxLXtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzYyOlxcdGludCByZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0FSRF9HRVRfU1RBVFVTLCBOVUxMLCAwLCBOVUxMLCAwKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzYzLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03NjQtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXHRcXHQvKiBmaXJtd2FyZSBub3QgbG9hZGVkICovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjc2NTpcXHRcXHR1c2JfZGJnKGluc3RhbmNlLVxcdTAwM2V1c2JhdG0sIFxcXCJjeGFjcnVfYWRzbF9zdGFydDogQ0FSRF9HRVRfU1RBVFVTIHJldHVybmVkICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03NjYtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03NzAtXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjc3MTpzdGF0aWMgaW50IGN4YWNydV9hdG1fc3RhcnQoc3RydWN0IHVzYmF0bV9kYXRhICp1c2JhdG1faW5zdGFuY2UsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc3Mi1cXHRcXHRzdHJ1Y3QgYXRtX2RldiAqYXRtX2RldilcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzczLXtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6Nzc0OlxcdHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UgPSB1c2JhdG1faW5zdGFuY2UtXFx1MDAzZWRyaXZlcl9kYXRhO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03NzUtXFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYgPSB1c2JhdG1faW5zdGFuY2UtXFx1MDAzZXVzYl9pbnRmO1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc4MS1cXHQvKiBSZWFkIE1BQyBhZGRyZXNzICovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjc4MjpcXHRyZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0FSRF9HRVRfTUFDX0FERFJFU1MsIE5VTEwsIDAsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc4My1cXHRcXHRcXHRhdG1fZGV2LVxcdTAwM2Vlc2ksIHNpemVvZihhdG1fZGV2LVxcdTAwM2Vlc2kpKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzg0LVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjc4NTpcXHRcXHRhdG1fZXJyKHVzYmF0bV9pbnN0YW5jZSwgXFxcImN4YWNydV9hdG1fc3RhcnQ6IENBUkRfR0VUX01BQ19BRERSRVNTIHJldHVybmVkICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03ODYtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03OTAtXFx0bXV0ZXhfbG9jayhcXHUwMDI2aW5zdGFuY2UtXFx1MDAzZWFkc2xfc3RhdGVfc2VyaWFsaXplKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzkxOlxcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVEFSVCwgTlVMTCwgMCwgTlVMTCwgMCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc5Mi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzkzOlxcdFxcdGF0bV9lcnIodXNiYXRtX2luc3RhbmNlLCBcXFwiY3hhY3J1X2F0bV9zdGFydDogQ0hJUF9BRFNMX0xJTkVfU1RBUlQgcmV0dXJuZWQgJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc5NC1cXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy04MTUtXFx0aWYgKHN0YXJ0X3BvbGxpbmcpXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjgxNjpcXHRcXHRjeGFjcnVfcG9sbF9zdGF0dXMoXFx1MDAyNmluc3RhbmNlLVxcdTAwM2Vwb2xsX3dvcmsud29yayk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTgxNy1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy04MTktXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjgyMDpzdGF0aWMgdm9pZCBjeGFjcnVfcG9sbF9zdGF0dXMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy04MjEte1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo4MjI6XFx0c3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSA9XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjgyMzpcXHRcXHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IGN4YWNydV9kYXRhLCBwb2xsX3dvcmsud29yayk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTgyNC1cXHR1MzIgYnVmW0NYSU5GX01BWF0gPSB7fTtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy04MjktXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjgzMDpcXHRyZXQgPSBjeGFjcnVfY21fZ2V0X2FycmF5KGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfSU5GT19HRVQsIGJ1ZiwgQ1hJTkZfTUFYKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtODMxLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtOTM2LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo5Mzc6c3RhdGljIGludCBjeGFjcnVfZncoc3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXYsIGVudW0gY3hhY3J1X2Z3X3JlcXVlc3QgZncsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTkzOC1cXHRcXHQgICAgIHU4IGNvZGUxLCB1OCBjb2RlMiwgdTMyIGFkZHIsIGNvbnN0IHU4ICpkYXRhLCBpbnQgc2l6ZSlcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy05ODUtXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjk4NjpzdGF0aWMgaW50IGN4YWNydV9maW5kX2Zpcm13YXJlKHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTk4Ny1cXHRcXHRcXHRcXHRjaGFyICpwaGFzZSwgY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZndfcClcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy05OTMtXFx0c3ByaW50ZihidWYsIFxcXCJjeGFjcnUtJXMuYmluXFxcIiwgcGhhc2UpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo5OTQ6XFx0dXNiX2RiZyh1c2JhdG0sIFxcXCJjeGFjcnVfZmluZF9maXJtd2FyZTogbG9va2luZyBmb3IgJXNcXFxcblxcXCIsIGJ1Zik7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTk5NS1cXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMDA1LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDA2OnN0YXRpYyBpbnQgY3hhY3J1X2hlYXZ5X2luaXQoc3RydWN0IHVzYmF0bV9kYXRhICp1c2JhdG1faW5zdGFuY2UsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwMDctXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYpXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTAwOS1cXHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3LCAqYnA7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwMTA6XFx0c3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSA9IHVzYmF0bV9pbnN0YW5jZS1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwMTEtXFx0c3RydWN0IHVzYmF0bV9kYXRhICp1c2JhdG0gPSBpbnN0YW5jZS1cXHUwMDNldXNiYXRtO1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwMTctXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwMTg6XFx0cmV0ID0gY3hhY3J1X2ZpbmRfZmlybXdhcmUoaW5zdGFuY2UsIFxcXCJmd1xcXCIsIFxcdTAwMjZmdyk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwMTktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwMjQtXFx0aWYgKGluc3RhbmNlLVxcdTAwM2Vtb2RlbV90eXBlLVxcdTAwM2Vib290X3JvbV9wYXRjaCkge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDI1OlxcdFxcdHJldCA9IGN4YWNydV9maW5kX2Zpcm13YXJlKGluc3RhbmNlLCBcXFwiYnBcXFwiLCBcXHUwMDI2YnApO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMDI2LVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMDM0LVxcdHZhbCA9IGNwdV90b19sZTMyKGluc3RhbmNlLVxcdTAwM2Vtb2RlbV90eXBlLVxcdTAwM2VwbGxfZl9jbGspO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDM1OlxcdHJldCA9IGN4YWNydV9mdyh1c2JfZGV2LCBGV19XUklURV9NRU0sIDB4MiwgMHgwLCBQTExGQ0xLX0FERFIsICh1OCAqKSBcXHUwMDI2dmFsLCA0KTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTAzNi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA0Mi1cXHR2YWwgPSBjcHVfdG9fbGUzMihpbnN0YW5jZS1cXHUwMDNlbW9kZW1fdHlwZS1cXHUwMDNlcGxsX2JfY2xrKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTA0MzpcXHRyZXQgPSBjeGFjcnVfZncodXNiX2RldiwgRldfV1JJVEVfTUVNLCAweDIsIDB4MCwgUExMQkNMS19BRERSLCAodTggKikgXFx1MDAyNnZhbCwgNCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwNDQtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwNTAtXFx0dmFsID0gY3B1X3RvX2xlMzIoU0RSQU1fRU5BKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTA1MTpcXHRyZXQgPSBjeGFjcnVfZncodXNiX2RldiwgRldfV1JJVEVfTUVNLCAweDIsIDB4MCwgU0RSQU1FTl9BRERSLCAodTggKikgXFx1MDAyNnZhbCwgNCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwNTItXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwNTgtXFx0dXNiX2luZm8odXNiYXRtLCBcXFwibG9hZGluZyBmaXJtd2FyZVxcXFxuXFxcIik7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwNTk6XFx0cmV0ID0gY3hhY3J1X2Z3KHVzYl9kZXYsIEZXX1dSSVRFX01FTSwgMHgyLCAweDAsIEZXX0FERFIsIGZ3LVxcdTAwM2VkYXRhLCBmdy1cXHUwMDNlc2l6ZSk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwNjAtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwNjctXFx0XFx0dXNiX2luZm8odXNiYXRtLCBcXFwibG9hZGluZyBib290IFJPTSBwYXRjaFxcXFxuXFxcIik7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwNjg6XFx0XFx0cmV0ID0gY3hhY3J1X2Z3KHVzYl9kZXYsIEZXX1dSSVRFX01FTSwgMHgyLCAweDAsIEJSX0FERFIsIGJwLVxcdTAwM2VkYXRhLCBicC1cXHUwMDNlc2l6ZSk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwNjktXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwNzUtXFx0LyogU2lnbmF0dXJlICovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwNzY6XFx0cmV0ID0gY3hhY3J1X2Z3KHVzYl9kZXYsIEZXX1dSSVRFX01FTSwgMHgyLCAweDAsIFNJR19BRERSLCAodTggKikgc2lnbmF0dXJlLCA0KTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA3Ny1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA4NC1cXHRcXHR2YWwgPSBjcHVfdG9fbGUzMihCUl9BRERSKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTA4NTpcXHRcXHRyZXQgPSBjeGFjcnVfZncodXNiX2RldiwgRldfV1JJVEVfTUVNLCAweDIsIDB4MCwgQlJfU1RBQ0tfQUREUiwgKHU4ICopIFxcdTAwMjZ2YWwsIDQpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMDg2LVxcdH0gZWxzZSB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwODc6XFx0XFx0cmV0ID0gY3hhY3J1X2Z3KHVzYl9kZXYsIEZXX0dPVE9fTUVNLCAweDAsIDB4MCwgRldfQUREUiwgTlVMTCwgMCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwODgtXFx0fVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMDEtXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjExMDI6XFx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfR0VUX1NUQVRVUywgTlVMTCwgMCwgTlVMTCwgMCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMDMtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTEyLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTEzOlxcdHJldCA9IGN4YWNydV9jYXJkX3N0YXR1cyhpbnN0YW5jZSk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMTQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTIxLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTIyOnN0YXRpYyBpbnQgY3hhY3J1X2JpbmQoc3RydWN0IHVzYmF0bV9kYXRhICp1c2JhdG1faW5zdGFuY2UsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMjMtXFx0XFx0ICAgICAgIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMjQte1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTI1OlxcdHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2U7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMjYtXFx0c3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpO1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMzktXFx0aW5zdGFuY2UtXFx1MDAzZXVzYmF0bSA9IHVzYmF0bV9pbnN0YW5jZTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTE0MDpcXHRpbnN0YW5jZS1cXHUwMDNlbW9kZW1fdHlwZSA9IChzdHJ1Y3QgY3hhY3J1X21vZGVtX3R5cGUgKikgaWQtXFx1MDAzZWRyaXZlcl9pbmZvO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTQxLVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExNTAtXFx0aWYgKCFpbnN0YW5jZS1cXHUwMDNlcmN2X2J1Zikge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTUxOlxcdFxcdHVzYl9kYmcodXNiYXRtX2luc3RhbmNlLCBcXFwiY3hhY3J1X2JpbmQ6IG5vIG1lbW9yeSBmb3IgcmN2X2J1ZlxcXFxuXFxcIik7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExNTItXFx0XFx0cmV0ID0gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTU2LVxcdGlmICghaW5zdGFuY2UtXFx1MDAzZXNuZF9idWYpIHtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTE1NzpcXHRcXHR1c2JfZGJnKHVzYmF0bV9pbnN0YW5jZSwgXFxcImN4YWNydV9iaW5kOiBubyBtZW1vcnkgZm9yIHNuZF9idWZcXFxcblxcXCIpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTU4LVxcdFxcdHJldCA9IC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE3Mi1cXHRpZiAoIWNtZF9lcCkge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTczOlxcdFxcdHVzYl9kYmcodXNiYXRtX2luc3RhbmNlLCBcXFwiY3hhY3J1X2JpbmQ6IG5vIGNvbW1hbmQgZW5kcG9pbnRcXFxcblxcXCIpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTc0LVxcdFxcdHJldCA9IC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE4My1cXHRpZiAoIXJldCkge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTg0OlxcdFxcdHVzYl9lcnIodXNiYXRtX2luc3RhbmNlLCBcXFwiY3hhY3J1X2JpbmQ6IGludGVyZmFjZSBoYXMgaW5jb3JyZWN0IGVuZHBvaW50c1xcXFxuXFxcIik7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExODUtXFx0XFx0cmV0ID0gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTkzLVxcdFxcdFxcdGluc3RhbmNlLVxcdTAwM2VyY3ZfYnVmLCBQQUdFX1NJWkUsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjExOTQ6XFx0XFx0XFx0Y3hhY3J1X2Jsb2NraW5nX2NvbXBsZXRpb24sIFxcdTAwMjZpbnN0YW5jZS1cXHUwMDNlcmN2X2RvbmUsIDEpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTk1LVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExOTgtXFx0XFx0XFx0aW5zdGFuY2UtXFx1MDAzZXNuZF9idWYsIFBBR0VfU0laRSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTE5OTpcXHRcXHRcXHRjeGFjcnVfYmxvY2tpbmdfY29tcGxldGlvbiwgXFx1MDAyNmluc3RhbmNlLVxcdTAwM2VzbmRfZG9uZSwgNCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyMDAtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjAzLVxcdFxcdFxcdGluc3RhbmNlLVxcdTAwM2VyY3ZfYnVmLCBQQUdFX1NJWkUsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyMDQ6XFx0XFx0XFx0Y3hhY3J1X2Jsb2NraW5nX2NvbXBsZXRpb24sIFxcdTAwMjZpbnN0YW5jZS1cXHUwMDNlcmN2X2RvbmUpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjA1LVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyMDgtXFx0XFx0XFx0aW5zdGFuY2UtXFx1MDAzZXNuZF9idWYsIFBBR0VfU0laRSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTIwOTpcXHRcXHRcXHRjeGFjcnVfYmxvY2tpbmdfY29tcGxldGlvbiwgXFx1MDAyNmluc3RhbmNlLVxcdTAwM2VzbmRfZG9uZSk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyMTAtXFx0fVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyMTMtXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyMTQ6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmluc3RhbmNlLVxcdTAwM2Vwb2xsX3dvcmssIGN4YWNydV9wb2xsX3N0YXR1cyk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyMTUtXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIxNy1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTIxODpcXHR1c2JhdG1faW5zdGFuY2UtXFx1MDAzZWZsYWdzID0gKGN4YWNydV9jYXJkX3N0YXR1cyhpbnN0YW5jZSkgPyAwIDogVURTTF9TS0lQX0hFQVZZX0lOSVQpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjE5LVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyMzEtXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyMzI6c3RhdGljIHZvaWQgY3hhY3J1X3VuYmluZChzdHJ1Y3QgdXNiYXRtX2RhdGEgKnVzYmF0bV9pbnN0YW5jZSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIzMy1cXHRcXHRzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIzNC17XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyMzU6XFx0c3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSA9IHVzYmF0bV9pbnN0YW5jZS1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyMzYtXFx0aW50IGlzX3BvbGxpbmcgPSAxO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjM3LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjM4OlxcdHVzYl9kYmcodXNiYXRtX2luc3RhbmNlLCBcXFwiY3hhY3J1X3VuYmluZCBlbnRlcmVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIzOS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTI0MC1cXHRpZiAoIWluc3RhbmNlKSB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyNDE6XFx0XFx0dXNiX2RiZyh1c2JhdG1faW5zdGFuY2UsIFxcXCJjeGFjcnVfdW5iaW5kOiBOVUxMIGluc3RhbmNlIVxcXFxuXFxcIik7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyNDItXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyNzItXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyNzM6c3RhdGljIGNvbnN0IHN0cnVjdCBjeGFjcnVfbW9kZW1fdHlwZSBjeGFjcnVfY2FmZSA9IHtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTI3NC1cXHQucGxsX2ZfY2xrID0gMHgwMmQ4NzRkZixcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjc4LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjc5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgY3hhY3J1X21vZGVtX3R5cGUgY3hhY3J1X2NiMDAgPSB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyODAtXFx0LnBsbF9mX2NsayA9IDB4NSxcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjg0LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjg1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBjeGFjcnVfdXNiX2lkc1tdID0ge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjg2LVxcdHsgLyogViA9IENvbmV4YW50XFx0XFx0XFx0UCA9IEFEU0wgbW9kZW0gKEV1cGhyYXRlcyBwcm9qZWN0KVxcdCovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyODc6XFx0XFx0VVNCX0RFVklDRSgweDA1NzIsIDB4Y2FmZSksXFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFxcdTAwMjZjeGFjcnVfY2FmZVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjg4LVxcdH0sXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyODktXFx0eyAvKiBWID0gQ29uZXhhbnRcXHRcXHRcXHRQID0gQURTTCBtb2RlbSAoSGFzYmFuaSBwcm9qZWN0KVxcdCovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyOTA6XFx0XFx0VVNCX0RFVklDRSgweDA1NzIsIDB4Y2IwMCksXFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFxcdTAwMjZjeGFjcnVfY2IwMFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjkxLVxcdH0sXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyOTItXFx0eyAvKiBWID0gQ29uZXhhbnRcXHRcXHRcXHRQID0gQURTTCBtb2RlbVxcdFxcdFxcdFxcdCovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyOTM6XFx0XFx0VVNCX0RFVklDRSgweDA1NzIsIDB4Y2IwMSksXFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFxcdTAwMjZjeGFjcnVfY2IwMFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjk0LVxcdH0sXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyOTUtXFx0eyAvKiBWID0gQ29uZXhhbnRcXHRcXHRcXHRQID0gQURTTCBtb2RlbSAoV2VsbCBQVEktODAwKSAqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjk2OlxcdFxcdFVTQl9ERVZJQ0UoMHgwNTcyLCAweGNiMDIpLFxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcXHUwMDI2Y3hhY3J1X2NiMDBcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTI5Ny1cXHR9LFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjk4LVxcdHsgLyogViA9IENvbmV4YW50XFx0XFx0XFx0UCA9IEFEU0wgbW9kZW1cXHRcXHRcXHRcXHQqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjk5OlxcdFxcdFVTQl9ERVZJQ0UoMHgwNTcyLCAweGNiMDYpLFxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcXHUwMDI2Y3hhY3J1X2NiMDBcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMwMC1cXHR9LFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzAxLVxcdHsgLyogViA9IENvbmV4YW50XFx0XFx0XFx0UCA9IEFEU0wgbW9kZW0gKFpURSBaWERTTCA4NTIpXFx0XFx0Ki9cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTMwMjpcXHRcXHRVU0JfREVWSUNFKDB4MDU3MiwgMHhjYjA3KSxcXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXFx1MDAyNmN4YWNydV9jYjAwXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMDMtXFx0fSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMwNC1cXHR7IC8qIFYgPSBPbGl0ZWNcXHRcXHRcXHRcXHRQID0gQURTTCBtb2RlbSB2ZXJzaW9uIDJcXHRcXHQqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzA1OlxcdFxcdFVTQl9ERVZJQ0UoMHgwOGUzLCAweDAxMDApLFxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcXHUwMDI2Y3hhY3J1X2NhZmVcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMwNi1cXHR9LFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzA3LVxcdHsgLyogViA9IE9saXRlY1xcdFxcdFxcdFxcdFAgPSBBRFNMIG1vZGVtIHZlcnNpb24gM1xcdFxcdCovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzMDg6XFx0XFx0VVNCX0RFVklDRSgweDA4ZTMsIDB4MDEwMiksXFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFxcdTAwMjZjeGFjcnVfY2IwMFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzA5LVxcdH0sXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMTAtXFx0eyAvKiBWID0gVHJ1c3QvQW1pZ28gVGVjaG5vbG9neSBDby5cXHRQID0gQU1YLUNBODZVXFx0XFx0XFx0XFx0Ki9cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTMxMTpcXHRcXHRVU0JfREVWSUNFKDB4MGViMCwgMHgzNDU3KSxcXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXFx1MDAyNmN4YWNydV9jYWZlXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMTItXFx0fSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMxMy1cXHR7IC8qIFYgPSBab29tXFx0XFx0XFx0XFx0UCA9IDU1MTBcXHRcXHRcXHRcXHQqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzE0OlxcdFxcdFVTQl9ERVZJQ0UoMHgxODAzLCAweDU1MTApLFxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcXHUwMDI2Y3hhY3J1X2NiMDBcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMxNS1cXHR9LFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzE2LVxcdHsgLyogViA9IERyYXl0ZWtcXHRcXHRcXHRQID0gVmlnb3IgMzE4XFx0XFx0XFx0XFx0Ki9cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTMxNzpcXHRcXHRVU0JfREVWSUNFKDB4MDY3NSwgMHgwMjAwKSxcXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXFx1MDAyNmN4YWNydV9jYjAwXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMTgtXFx0fSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMxOS1cXHR7IC8qIFYgPSBaeXhlbFxcdFxcdFxcdFxcdFAgPSA2MzAtQzEgYWthIE9NTkkgQURTTCBVU0IgKEFubmV4IEEpXFx0Ki9cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTMyMDpcXHRcXHRVU0JfREVWSUNFKDB4MDU4NiwgMHgzMzBhKSxcXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXFx1MDAyNmN4YWNydV9jYjAwXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMjEtXFx0fSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMyMi1cXHR7IC8qIFYgPSBaeXhlbFxcdFxcdFxcdFxcdFAgPSA2MzAtQzMgYWthIE9NTkkgQURTTCBVU0IgKEFubmV4IEIpXFx0Ki9cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTMyMzpcXHRcXHRVU0JfREVWSUNFKDB4MDU4NiwgMHgzMzBiKSxcXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXFx1MDAyNmN4YWNydV9jYjAwXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMjQtXFx0fSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMyNS1cXHR7IC8qIFYgPSBBZXRocmFcXHRcXHRcXHRcXHRQID0gU3Rhcm1vZGVtIFVNMTAyMFxcdFxcdFxcdCovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzMjY6XFx0XFx0VVNCX0RFVklDRSgweDA2NTksIDB4MDAyMCksXFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFxcdTAwMjZjeGFjcnVfY2IwMFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzI3LVxcdH0sXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMjgtXFx0eyAvKiBWID0gQXp0ZWNoIFN5c3RlbXNcXHRcXHRcXHRQID0gPyBBS0EgUGlyZWxsaSBBVUEtMDEwXFx0XFx0Ki9cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTMyOTpcXHRcXHRVU0JfREVWSUNFKDB4MDUwOSwgMHgwODEyKSxcXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXFx1MDAyNmN4YWNydV9jYjAwXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMzAtXFx0fSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMzMS1cXHR7IC8qIFYgPSBOZXRvcGlhXFx0XFx0XFx0UCA9IENheW1hbiAzMzQxKEFubmV4IEEpLzMzNTEoQW5uZXggQilcXHQqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzMyOlxcdFxcdFVTQl9ERVZJQ0UoMHgxMDBkLCAweGNiMDEpLFxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcXHUwMDI2Y3hhY3J1X2NiMDBcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMzMy1cXHR9LFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzM0LVxcdHsgLyogViA9IE5ldG9waWFcXHRcXHRcXHRQID0gQ2F5bWFuIDMzNDIoQW5uZXggQSkvMzM1MihBbm5leCBCKVxcdCovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzMzU6XFx0XFx0VVNCX0RFVklDRSgweDEwMGQsIDB4MzM0MiksXFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFxcdTAwMjZjeGFjcnVfY2IwMFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzM2LVxcdH0sXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMzOS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTM0MDpNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgY3hhY3J1X3VzYl9pZHMpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzQxLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzQyOnN0YXRpYyBzdHJ1Y3QgdXNiYXRtX2RyaXZlciBjeGFjcnVfZHJpdmVyID0ge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzQzOlxcdC5kcml2ZXJfbmFtZVxcdD0gY3hhY3J1X2RyaXZlcl9uYW1lLFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzQ0OlxcdC5iaW5kXFx0XFx0PSBjeGFjcnVfYmluZCxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTM0NTpcXHQuaGVhdnlfaW5pdFxcdD0gY3hhY3J1X2hlYXZ5X2luaXQsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzNDY6XFx0LnVuYmluZFxcdFxcdD0gY3hhY3J1X3VuYmluZCxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTM0NzpcXHQuYXRtX3N0YXJ0XFx0PSBjeGFjcnVfYXRtX3N0YXJ0LFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzQ4LVxcdC5idWxrX2luXFx0PSBDWEFDUlVfRVBfREFUQSxcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzUzLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzU0OnN0YXRpYyBpbnQgY3hhY3J1X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTM1NS1cXHRcXHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTM3MS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTM3MjpcXHRyZXR1cm4gdXNiYXRtX3VzYl9wcm9iZShpbnRmLCBpZCwgXFx1MDAyNmN4YWNydV9kcml2ZXIpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzczLX1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTM3NC1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTM3NTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgY3hhY3J1X3VzYl9kcml2ZXIgPSB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzNzY6XFx0Lm5hbWVcXHRcXHQ9IGN4YWNydV9kcml2ZXJfbmFtZSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTM3NzpcXHQucHJvYmVcXHRcXHQ9IGN4YWNydV91c2JfcHJvYmUsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzNzgtXFx0LmRpc2Nvbm5lY3RcXHQ9IHVzYmF0bV91c2JfZGlzY29ubmVjdCxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTM3OTpcXHQuaWRfdGFibGVcXHQ9IGN4YWNydV91c2JfaWRzLFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzgwOlxcdC5kZXZfZ3JvdXBzXFx0PSBjeGFjcnVfZ3JvdXBzLFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzgxLX07XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzODItXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzODM6bW9kdWxlX3VzYl9kcml2ZXIoY3hhY3J1X3VzYl9kcml2ZXIpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzg0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMjowMC40MjI4ODYyNjNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI2ODIzNTUxNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgY3hhY3J1X2NtYCBQYXRjaCBmb3IgRnV6emluZyBGb2N1cyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gYGN4YWNydV9jbWAuIE15IHByaW1hcnkgZ29hbCBpcyB0byBpZGVudGlmeSB0aGUgbW9zdCBlZmZlY3RpdmUgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLCBnaXZlbiB0aGF0IHRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgdGhpcyBjb21wb25lbnQuXG5cbkZpcnN0LCBJIGlkZW50aWZpZWQgdGhlIGVudHJ5IHBvaW50czogYGN4YWNydV9iaW5kYCwgYGN4YWNydV9oZWF2eV9pbml0YCwgYGN4YWNydV91bmJpbmRgLCBgY3hhY3J1X2F0bV9zdGFydGAsIGBjeGFjcnVfdXNiX3Byb2JlYCwgYGFkc2xfc3RhdGVfc3RvcmVgLCBgYWRzbF9jb25maWdfc3RvcmVgLCBhbmQgYGN4YWNydV9wb2xsX3N0YXR1c2AuIFRoZSBsYXN0IG9uZSBpcyBpbnRlcmVzdGluZyBhcyBpdCBvcGVyYXRlcyB2aWEgYSB3b3JrcXVldWUuXG5cblRoZSBwYXRjaCBpdHNlbGYgbW9kaWZpZXMgYGN4YWNydV9jbWAuIE5vdywgd2hlcmUgZG9lcyBgY3hhY3J1X2NtYCBnZXQgY2FsbGVkPyBJdCdzIGNhbGxlZCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGJ5IGEgYnVuY2ggb2YgZnVuY3Rpb25zOiBgY3hhY3J1X2hlYXZ5X2luaXRgLCBgY3hhY3J1X2F0bV9zdGFydGAsIGBjeGFjcnVfY2FyZF9zdGF0dXNgICh3aGljaCBpcyBpdHNlbGYgY2FsbGVkIGJ5IGBjeGFjcnVfYmluZGAgYW5kIGBjeGFjcnVfaGVhdnlfaW5pdGApLCBgY3hhY3J1X3BvbGxfc3RhdHVzYCAodmlhIGBjeGFjcnVfY21fZ2V0X2FycmF5YCksIGBhZHNsX3N0YXRlX3N0b3JlYCwgYW5kIGBhZHNsX2NvbmZpZ19zdG9yZWAuXG5cblNvLCB0aGUgaW5pdGlhbCBsaXN0IG9mIGZvY3VzIHN5bWJvbHMgc2hvdWxkIGluY2x1ZGU6IGBjeGFjcnVfaGVhdnlfaW5pdGAsIGBjeGFjcnVfYXRtX3N0YXJ0YCwgYGN4YWNydV9iaW5kYCwgYGFkc2xfc3RhdGVfc3RvcmVgLCBgYWRzbF9jb25maWdfc3RvcmVgLCBhbmQgYGN4YWNydV9wb2xsX3N0YXR1c2AuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIGlzOiBpcyBgY3hhY3J1X2NtYCBpbmxpbmVkPyBJdCdzIHN0YXRpYywgd2hpY2ggaXMgYSBrZXkgY29uc2lkZXJhdGlvbi4gR2l2ZW4gaXRzIHNpemUgYW5kIG11bHRpcGxlIGNhbGwgc2l0ZXMsIGl0J3MgbGlrZWx5ICpub3QqIGlubGluZWQuIEhvd2V2ZXIsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBwcm92aWRpbmcgZWZmZWN0aXZlIHN5bWJvbHMgZm9yIGZ1enppbmcuIFNpbmNlIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHByaW9yaXRpemUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMsIEkgbmVlZCB0byBmb2N1cyBvbiB0aG9zZSB0aGF0IGNhbGwgYGN4YWNydV9jbWAgYW5kIGFyZSB0aGVtc2VsdmVzIGVudHJ5cG9pbnRzLCBvciBjYWxsYmFja3MuXG5cbkFoLCB5ZXMuIGBjeGFjcnVfaGVhdnlfaW5pdGAsIGBjeGFjcnVfYXRtX3N0YXJ0YCwgYGN4YWNydV9iaW5kYCwgYGFkc2xfc3RhdGVfc3RvcmVgLCBgYWRzbF9jb25maWdfc3RvcmVgLCBhbmQgYGN4YWNydV9wb2xsX3N0YXR1c2AgYXJlIGFsbCBzdGF0aWMuIEJ1dCwgdGhleSBhcmUgdXNlZCBhcyBjYWxsYmFja3Mgd2l0aGluIHRoZSBkcml2ZXIuIFNpbWlsYXJseSwgYGN4YWNydV91c2JfcHJvYmVgIGlzIGEgcHJvYmUgZnVuY3Rpb24sIHdoaWNoLCB3aGlsZSBzdGF0aWMsIGlzIGFsc28gYW4gZW50cnkgcG9pbnQuIFRoaXMgbWFrZXMgdGhlbSBnb29kIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcsIGV2ZW4gaWYgdGhleSdyZSBzdGF0aWMsIGJlY2F1c2UgdGhleSBjYW4gc3RpbGwgYmUgcmVhY2hlZC4gU2luY2Ugc3l6a2FsbGVyIGNhbiByZWFjaCBzdGF0aWMgZnVuY3Rpb25zIGlmIHJlYWNoYWJsZSwgYnV0IGBGb2N1c1N5bWJvbHNgIHdhbnRzIGZ1bmN0aW9uIG5hbWVzLCB0aGlzIHNob3VsZCBiZSBmaW5lLlxuXG5Ib3dldmVyLCBzaW5jZSBgY3hhY3J1X2NtYCBpdHNlbGYgaXMgdGhlIGZvY3VzIG9mIHRoZSBwYXRjaCwgZXZlbiBpZiBpdCBpcyBzdGF0aWMsIGl0J3Mgc3RpbGwgYSBnb29kIGZvY3VzIHN5bWJvbC5cblxuR2l2ZW4gdGhlIGluc3RydWN0aW9ucywgYW5kIHRvIGJlIHNhZmUsIEknbSBnb2luZyB0byBpbmNsdWRlIGJvdGggYGN4YWNydV9jbWAgYW5kIHRoZSBjYWxsYmFjayBlbnRyeXBvaW50czogYGN4YWNydV9oZWF2eV9pbml0YCwgYGN4YWNydV9hdG1fc3RhcnRgLCBgY3hhY3J1X2JpbmRgLCBgYWRzbF9zdGF0ZV9zdG9yZWAsIGBhZHNsX2NvbmZpZ19zdG9yZWAsIGFuZCBgY3hhY3J1X3BvbGxfc3RhdHVzYC4gVGhlc2Ugc2VlbSBsaWtlIHRoZSBtb3N0IGVmZmVjdGl2ZSBzeW1ib2xzIGZvciBmdXp6aW5nIHRoaXMgc3BlY2lmaWMgcGF0Y2guXG5cbkkgYWxzbyBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBvcHRpb25zIHRvIGRldGVybWluZSBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBgVVNCX0NYQUNSVWAsIGBVU0JfQVRNYCwgYW5kIGBBVE1gIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDA4NiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMjoxMy4xMDUyNDM3MjhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MzkzMzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBBVE1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2F0bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9hdG0vS2NvbmZpZy01LVxcbm5ldC9hdG0vS2NvbmZpZzo2OmNvbmZpZyBBVE1cXG5uZXQvYXRtL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiQXN5bmNocm9ub3VzIFRyYW5zZmVyIE1vZGUgKEFUTSlcXFwiXFxuLS1cXG5uZXQvYXRtL0tjb25maWctMjEtXFxubmV0L2F0bS9LY29uZmlnOjIyOmNvbmZpZyBBVE1fQlIyNjg0XFxubmV0L2F0bS9LY29uZmlnLTIzLVxcdHRyaXN0YXRlIFxcXCJSRkMxNDgzLzI2ODQgQnJpZGdlZCBwcm90b2NvbHNcXFwiXFxuLS1cXG5uZXQvYXRtL0tjb25maWctMzAtXFxubmV0L2F0bS9LY29uZmlnOjMxOmNvbmZpZyBBVE1fQlIyNjg0X0lQRklMVEVSXFxubmV0L2F0bS9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIlBlci1WQyBJUCBmaWx0ZXIga2x1ZGdlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMjoxMy4xNTQ2NDQ0MDdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0MjAwNTY1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhpcywgY29uc2lkZXJpbmcgSSdtIGRlZXAgaW4gdGhlIHdlZWRzIHdpdGggdGhpcyBzdHVmZjpcblxuKipDb25maWd1cmF0aW9uIERlZXAgRGl2ZTogQVRNIGFuZCBVU0IqKlxuXG5Pa2F5LCBzbyB3ZSdyZSB0YWxraW5nIEFUTSBjb25maWcgaGVyZS4gU3BlY2lmaWNhbGx5LCB0aGUgcm9vdCBvZiB0aGlzIGlzIGBBVE1gLiBUaGlzIG1lYW5zIEkgbmVlZCB0byBlbmFibGUgYSBmZXcga2V5IGNvbmZpZ3MgZm9yIHRoZSBBVE0gZnVuY3Rpb25hbGl0eSB0byBhY3R1YWxseSAqZG8qIGFueXRoaW5nLiBTZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBgVVNCX0NYQUNSVWAsIGBVU0JfQVRNYCwgYW5kIHRoZSBiYXNlIGBBVE1gIGl0c2VsZiBhcmUgdGhlIHBsYXllcnMuIE5vIHN1cnByaXNlcyB0aGVyZS5cblxuQnV0LCBJIGFsd2F5cyBkb3VibGUtY2hlY2sgdGhlc2UgdGhpbmdzLiBMZXQncyBjb25maXJtIHRoYXQgYFVTQl9BVE1gIGlzIGJlaGF2aW5nIGFzIGV4cGVjdGVkLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBpbW1lZGlhdGVseSBqdW1wIG92ZXIgdG8gdGhlIGBkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBhbnkgb3RoZXIgb3B0aW9ucyBhcm91bmQgYFVTQl9BVE1gIGFyZSBjbGVhciwgZXNwZWNpYWxseSBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgSSBtaWdodCBub3QgYmUgaW1tZWRpYXRlbHkgYXdhcmUgb2YuIEdvdHRhIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgc29saWQsIHN0YWJsZSBiYXNlIGZvciB0aGUgQVRNIG92ZXIgVVNCIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxODk4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MjI6MTYuNzk2NjUyOTU3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDIxNjYxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0FUTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZy01LVxcbmRyaXZlcnMvdXNiL2F0bS9LY29uZmlnOjY6bWVudWNvbmZpZyBVU0JfQVRNXFxuZHJpdmVycy91c2IvYXRtL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiVVNCIERTTCBtb2RlbSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMjoxNi44MzY4NzQxNDdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ5MTU4MzE4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBVU0IgQVRNIGFuZCBDWEFDUlUgRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gdGhlIGV4YWN0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIOKAkyBpdCdzIGBtZW51Y29uZmlnIFVTQl9BVE1gLCBub3Qgc29tZXRoaW5nIGVsc2UgSSBtaWdodCBoYXZlIGluaXRpYWxseSBhc3N1bWVkLiBHb29kLiBUaGlzIGNsYXJpZmllcyB0aGUgc3BlY2lmaWMgcGF0aCB3ZSdyZSBkZWFsaW5nIHdpdGguXG5cbk5vdywgd2l0aCB0aGF0IGNvbmZpcm1lZCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCwgaWYgYW55LCBiZXR3ZWVuIGBVU0JfQVRNYCBhbmQgYFVTQl9DWEFDUlVgLiBBcmUgdGhleSByZWxhdGVkPyBJcyBvbmUgYSBwcmVyZXF1aXNpdGUgb3IgYSBkZXBlbmRlbmN5IG9mIHRoZSBvdGhlcj8gQXJlIHRoZXkgbXV0dWFsbHkgZXhjbHVzaXZlPyBUaGlzIG5lZWRzIGNsYXJpZmljYXRpb24uIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgS2NvbmZpZyBmaWxlcywgb3IgcG90ZW50aWFsbHkgdGhlIHNvdXJjZSBjb2RlIGl0c2VsZiwgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZXhwbGljaXQgZGVwZW5kZW5jaWVzIGRlY2xhcmVkIG9yIGltcGxpY2l0IHJlbGF0aW9uc2hpcHMgdGhhdCBJIGNhbiBkZXRlcm1pbmUuIFRoZSBnb2FsIGlzIGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhlc2UgdHdvIGNvbmZpZ3VyYXRpb25zIGludGVyYWN0IHdpdGhpbiB0aGUgYnJvYWRlciBVU0IgYW5kIG5ldHdvcmtpbmcgZWNvc3lzdGVtLiBUaGlzIHdpbGwgZGlyZWN0bHkgaW1wYWN0IGhvdyBJIGFwcHJvYWNoIGFueSBjb25maWd1cmF0aW9uIGNoYW5nZXMgb3IgdHJvdWJsZXNob290aW5nIHN0ZXBzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjI1NiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIyOjIwLjMyODQ2MDAxMVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIwNjQ5OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9DWEFDUlVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvYXRtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvYXRtL0tjb25maWc9MjA9Y29uZmlnIFVTQl9TUEVFRFRPVUNIXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vS2NvbmZpZy0zMS1cXG5kcml2ZXJzL3VzYi9hdG0vS2NvbmZpZzozMjpjb25maWcgVVNCX0NYQUNSVVxcbmRyaXZlcnMvdXNiL2F0bS9LY29uZmlnLTMzLVxcdHRyaXN0YXRlIFxcXCJDb25leGFudCBBY2Nlc3NSdW5uZXIgVVNCIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIyOjIwLjM3MDUyODg4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMjI1NjgwOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKkFuYWx5emluZyBGaXJtd2FyZSBMb2FkaW5nIGFuZCBJbmxpbmluZyoqXG5cbkFscmlnaHQsIHRoZSBzeXN0ZW0gaGFzIGNob3NlbiBgRldfTE9BREVSYCBhcyB0aGUgcmVzcG9uc2libGUgY29tcG9uZW50IGZvciB0aGlzIG9wZXJhdGlvbi4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGNoYXJhY3RlcmlzdGljcyBvZiBgY3hhY3J1X2NtYC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBgY3hhY3J1X2NtYCBjb21wb25lbnQgaXMgaW5saW5lZC4gSWYgc28sIHRoYXQncyBnb2luZyB0byBhZmZlY3QgdGhlIG92ZXJhbGwgbG9hZGluZyBzdHJhdGVneSBhbmQgYW55IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMuIEknbSBmb2N1c2luZyBvbiBpdHMgc2l6ZSBiZWNhdXNlIGlubGluaW5nIGRlY2lzaW9ucyBvZnRlbiBoaW5nZSBvbiB0aGF0IGZhY3Rvci4gQSBzbWFsbGVyLCBpbmxpbmVkIG1vZHVsZSBvZmZlcnMgYWR2YW50YWdlcyBpbiB0ZXJtcyBvZiByZWR1Y2VkIG92ZXJoZWFkLCB3aGlsZSBhIGxhcmdlciBvbmUgY291bGQgYmVuZWZpdCBmcm9tIGJlaW5nIGxvYWRlZCBzZXBhcmF0ZWx5LiBJJ20gbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSB0eXBpY2FsIHRocmVzaG9sZHMgYW5kIGNvbmRpdGlvbnMgdGhhdCB3b3VsZCB0cmlnZ2VyIGFuIGlubGluaW5nIGNob2ljZSBmb3IgdGhpcyB0eXBlIG9mIGNvbXBvbmVudC4gSXTigJlzIGFuIGVzc2VudGlhbCBwYXJ0IG9mIGRldGVybWluaW5nIGVmZmljaWVuY3ksIGZvciB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjYxNSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIyOjI0LjM5MzA5OTE4M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODMxNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvYXRtL2N4YWNydS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2MDA6XFx0XFx0dGltZXJfZGVsZXRlX3N5bmMoXFx1MDAyNnRpbWVyLnRpbWVyKTtcXG4gNjAxOlxcdFxcdHRpbWVyX2Rlc3Ryb3lfb25fc3RhY2soXFx1MDAyNnRpbWVyLnRpbWVyKTtcXG4gNjAyOlxcdFxcbiA2MDM6XFx0XFx0aWYgKGFjdHVhbF9sZW5ndGgpXFxuIDYwNDpcXHRcXHRcXHQqYWN0dWFsX2xlbmd0aCA9IHVyYi1cXHUwMDNlYWN0dWFsX2xlbmd0aDtcXG4gNjA1OlxcdFxcdHJldHVybiB1cmItXFx1MDAzZXN0YXR1czsgLyogbXVzdCByZWFkIHN0YXR1cyBhZnRlciBjb21wbGV0aW9uICovXFxuIDYwNjpcXHR9XFxuIDYwNzpcXHRcXG4gNjA4OlxcdHN0YXRpYyBpbnQgY3hhY3J1X2NtKHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UsIGVudW0gY3hhY3J1X2NtX3JlcXVlc3QgY20sXFxuIDYwOTpcXHRcXHRcXHQgICAgIHU4ICp3ZGF0YSwgaW50IHdzaXplLCB1OCAqcmRhdGEsIGludCByc2l6ZSlcXG4gNjEwOlxcdHtcXG4gNjExOlxcdFxcdGludCByZXQsIGFjdGxlbjtcXG4gNjEyOlxcdFxcdGludCBvZmZiLCBvZmZkO1xcbiA2MTM6XFx0XFx0Y29uc3QgaW50IHN0cmlkZSA9IENNRF9QQUNLRVRfU0laRSAtIDQ7XFxuIDYxNDpcXHRcXHR1OCAqd2J1ZiA9IGluc3RhbmNlLVxcdTAwM2VzbmRfYnVmO1xcbiA2MTU6XFx0XFx0dTggKnJidWYgPSBpbnN0YW5jZS1cXHUwMDNlcmN2X2J1ZjtcXG4gNjE2OlxcdFxcdGludCB3YnVmbGVuID0gKCh3c2l6ZSAtIDEpIC8gc3RyaWRlICsgMSkgKiBDTURfUEFDS0VUX1NJWkU7XFxuIDYxNzpcXHRcXHRpbnQgcmJ1ZmxlbiA9ICgocnNpemUgLSAxKSAvIHN0cmlkZSArIDEpICogQ01EX1BBQ0tFVF9TSVpFO1xcbiA2MTg6XFx0XFxuIDYxOTpcXHRcXHRpZiAod2J1ZmxlbiBcXHUwMDNlIFBBR0VfU0laRSB8fCByYnVmbGVuIFxcdTAwM2UgUEFHRV9TSVpFKSB7XFxuIDYyMDpcXHRcXHRcXHRpZiAocHJpbnRrX3JhdGVsaW1pdCgpKVxcbiA2MjE6XFx0XFx0XFx0XFx0dXNiX2VycihpbnN0YW5jZS1cXHUwMDNldXNiYXRtLCBcXFwicmVxdWVzdGVkIHRyYW5zZmVyIHNpemUgdG9vIGxhcmdlICglZCwgJWQpXFxcXG5cXFwiLFxcbiA2MjI6XFx0XFx0XFx0XFx0XFx0d2J1ZmxlbiwgcmJ1Zmxlbik7XFxuIDYyMzpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiA2MjQ6XFx0XFx0XFx0Z290byBlcnI7XFxuIDYyNTpcXHRcXHR9XFxuIDYyNjpcXHRcXG4gNjI3OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmluc3RhbmNlLVxcdTAwM2VjbV9zZXJpYWxpemUpO1xcbiA2Mjg6XFx0XFxuIDYyOTpcXHRcXHQvKiBzdWJtaXQgcmVhZGluZyB1cmIgYmVmb3JlIHRoZSB3cml0aW5nIG9uZSAqL1xcbiA2MzA6XFx0XFx0aW5pdF9jb21wbGV0aW9uKFxcdTAwMjZpbnN0YW5jZS1cXHUwMDNlcmN2X2RvbmUpO1xcbiA2MzE6XFx0XFx0cmV0ID0gdXNiX3N1Ym1pdF91cmIoaW5zdGFuY2UtXFx1MDAzZXJjdl91cmIsIEdGUF9LRVJORUwpO1xcbiA2MzI6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gNjMzOlxcdFxcdFxcdGlmIChwcmludGtfcmF0ZWxpbWl0KCkpXFxuIDYzNDpcXHRcXHRcXHRcXHR1c2JfZXJyKGluc3RhbmNlLVxcdTAwM2V1c2JhdG0sIFxcXCJzdWJtaXQgb2YgcmVhZCB1cmIgZm9yIGNtICUjeCBmYWlsZWQgKCVkKVxcXFxuXFxcIixcXG4gNjM1OlxcdFxcdFxcdFxcdFxcdGNtLCByZXQpO1xcbiA2MzY6XFx0XFx0XFx0Z290byBmYWlsO1xcbiA2Mzc6XFx0XFx0fVxcbiA2Mzg6XFx0XFxuIDYzOTpcXHRcXHRtZW1zZXQod2J1ZiwgMCwgd2J1Zmxlbik7XFxuIDY0MDpcXHRcXHQvKiBoYW5kbGUgd3NpemUgPT0gMCAqL1xcbiA2NDE6XFx0XFx0d2J1ZlswXSA9IGNtO1xcbiA2NDI6XFx0XFx0Zm9yIChvZmZiID0gb2ZmZCA9IDA7IG9mZmQgXFx1MDAzYyB3c2l6ZTsgb2ZmZCArPSBzdHJpZGUsIG9mZmIgKz0gQ01EX1BBQ0tFVF9TSVpFKSB7XFxuIDY0MzpcXHRcXHRcXHR3YnVmW29mZmJdID0gY207XFxuIDY0NDpcXHRcXHRcXHRtZW1jcHkod2J1ZiArIG9mZmIgKyA0LCB3ZGF0YSArIG9mZmQsIG1pbl90KGludCwgc3RyaWRlLCB3c2l6ZSAtIG9mZmQpKTtcXG4gNjQ1OlxcdFxcdH1cXG4gNjQ2OlxcdFxcbiA2NDc6XFx0XFx0aW5zdGFuY2UtXFx1MDAzZXNuZF91cmItXFx1MDAzZXRyYW5zZmVyX2J1ZmZlcl9sZW5ndGggPSB3YnVmbGVuO1xcbiA2NDg6XFx0XFx0aW5pdF9jb21wbGV0aW9uKFxcdTAwMjZpbnN0YW5jZS1cXHUwMDNlc25kX2RvbmUpO1xcbiA2NDk6XFx0XFx0cmV0ID0gdXNiX3N1Ym1pdF91cmIoaW5zdGFuY2UtXFx1MDAzZXNuZF91cmIsIEdGUF9LRVJORUwpO1xcbiA2NTA6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gNjUxOlxcdFxcdFxcdGlmIChwcmludGtfcmF0ZWxpbWl0KCkpXFxuIDY1MjpcXHRcXHRcXHRcXHR1c2JfZXJyKGluc3RhbmNlLVxcdTAwM2V1c2JhdG0sIFxcXCJzdWJtaXQgb2Ygd3JpdGUgdXJiIGZvciBjbSAlI3ggZmFpbGVkICglZClcXFxcblxcXCIsXFxuIDY1MzpcXHRcXHRcXHRcXHRcXHRjbSwgcmV0KTtcXG4gNjU0OlxcdFxcdFxcdGdvdG8gZmFpbDtcXG4gNjU1OlxcdFxcdH1cXG4gNjU2OlxcdFxcbiA2NTc6XFx0XFx0cmV0ID0gY3hhY3J1X3N0YXJ0X3dhaXRfdXJiKGluc3RhbmNlLVxcdTAwM2VzbmRfdXJiLCBcXHUwMDI2aW5zdGFuY2UtXFx1MDAzZXNuZF9kb25lLCBOVUxMKTtcXG4gNjU4OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIDY1OTpcXHRcXHRcXHRpZiAocHJpbnRrX3JhdGVsaW1pdCgpKVxcbiA2NjA6XFx0XFx0XFx0XFx0dXNiX2VycihpbnN0YW5jZS1cXHUwMDNldXNiYXRtLCBcXFwic2VuZCBvZiBjbSAlI3ggZmFpbGVkICglZClcXFxcblxcXCIsIGNtLCByZXQpO1xcbiA2NjE6XFx0XFx0XFx0Z290byBmYWlsO1xcbiA2NjI6XFx0XFx0fVxcbiA2NjM6XFx0XFxuIDY2NDpcXHRcXHRyZXQgPSBjeGFjcnVfc3RhcnRfd2FpdF91cmIoaW5zdGFuY2UtXFx1MDAzZXJjdl91cmIsIFxcdTAwMjZpbnN0YW5jZS1cXHUwMDNlcmN2X2RvbmUsIFxcdTAwMjZhY3RsZW4pO1xcbiA2NjU6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gNjY2OlxcdFxcdFxcdGlmIChwcmludGtfcmF0ZWxpbWl0KCkpXFxuIDY2NzpcXHRcXHRcXHRcXHR1c2JfZXJyKGluc3RhbmNlLVxcdTAwM2V1c2JhdG0sIFxcXCJyZWNlaXZlIG9mIGNtICUjeCBmYWlsZWQgKCVkKVxcXFxuXFxcIiwgY20sIHJldCk7XFxuIDY2ODpcXHRcXHRcXHRnb3RvIGZhaWw7XFxuIDY2OTpcXHRcXHR9XFxuIDY3MDpcXHRcXHRpZiAoYWN0bGVuICUgQ01EX1BBQ0tFVF9TSVpFIHx8ICFhY3RsZW4pIHtcXG4gNjcxOlxcdFxcdFxcdGlmIChwcmludGtfcmF0ZWxpbWl0KCkpXFxuIDY3MjpcXHRcXHRcXHRcXHR1c2JfZXJyKGluc3RhbmNlLVxcdTAwM2V1c2JhdG0sIFxcXCJpbnZhbGlkIHJlc3BvbnNlIGxlbmd0aCB0byBjbSAlI3g6ICVkXFxcXG5cXFwiLFxcbiA2NzM6XFx0XFx0XFx0XFx0XFx0Y20sIGFjdGxlbik7XFxuIDY3NDpcXHRcXHRcXHRyZXQgPSAtRUlPO1xcbiA2NzU6XFx0XFx0XFx0Z290byBmYWlsO1xcbiA2NzY6XFx0XFx0fVxcbiA2Nzc6XFx0XFxuIDY3ODpcXHRcXHQvKiBjaGVjayB0aGUgcmV0dXJuIHN0YXR1cyBhbmQgY29weSB0aGUgZGF0YSB0byB0aGUgb3V0cHV0IGJ1ZmZlciwgaWYgbmVlZGVkICovXFxuIDY3OTpcXHRcXHRmb3IgKG9mZmIgPSBvZmZkID0gMDsgb2ZmZCBcXHUwMDNjIHJzaXplIFxcdTAwMjZcXHUwMDI2IG9mZmIgXFx1MDAzYyBhY3RsZW47IG9mZmIgKz0gQ01EX1BBQ0tFVF9TSVpFKSB7XFxuIDY4MDpcXHRcXHRcXHRpZiAocmJ1ZltvZmZiXSAhPSBjbSkge1xcbiA2ODE6XFx0XFx0XFx0XFx0aWYgKHByaW50a19yYXRlbGltaXQoKSlcXG4gNjgyOlxcdFxcdFxcdFxcdFxcdHVzYl9lcnIoaW5zdGFuY2UtXFx1MDAzZXVzYmF0bSwgXFxcIndyb25nIGNtICUjeCBpbiByZXNwb25zZSB0byBjbSAlI3hcXFxcblxcXCIsXFxuIDY4MzpcXHRcXHRcXHRcXHRcXHRcXHRyYnVmW29mZmJdLCBjbSk7XFxuIDY4NDpcXHRcXHRcXHRcXHRyZXQgPSAtRUlPO1xcbiA2ODU6XFx0XFx0XFx0XFx0Z290byBmYWlsO1xcbiA2ODY6XFx0XFx0XFx0fVxcbiA2ODc6XFx0XFx0XFx0aWYgKHJidWZbb2ZmYiArIDFdICE9IENNX1NUQVRVU19TVUNDRVNTKSB7XFxuIDY4ODpcXHRcXHRcXHRcXHRpZiAocHJpbnRrX3JhdGVsaW1pdCgpKVxcbiA2ODk6XFx0XFx0XFx0XFx0XFx0dXNiX2VycihpbnN0YW5jZS1cXHUwMDNldXNiYXRtLCBcXFwicmVzcG9uc2UgdG8gY20gJSN4IGZhaWxlZDogJSN4XFxcXG5cXFwiLFxcbiA2OTA6XFx0XFx0XFx0XFx0XFx0XFx0Y20sIHJidWZbb2ZmYiArIDFdKTtcXG4gNjkxOlxcdFxcdFxcdFxcdHJldCA9IC1FSU87XFxuIDY5MjpcXHRcXHRcXHRcXHRnb3RvIGZhaWw7XFxuIDY5MzpcXHRcXHRcXHR9XFxuIDY5NDpcXHRcXHRcXHRpZiAob2ZmZCBcXHUwMDNlPSByc2l6ZSlcXG4gNjk1OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiA2OTY6XFx0XFx0XFx0bWVtY3B5KHJkYXRhICsgb2ZmZCwgcmJ1ZiArIG9mZmIgKyA0LCBtaW5fdChpbnQsIHN0cmlkZSwgcnNpemUgLSBvZmZkKSk7XFxuIDY5NzpcXHRcXHRcXHRvZmZkICs9IHN0cmlkZTtcXG4gNjk4OlxcdFxcdH1cXG4gNjk5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMjoyNC4zOTMzODQ1MjNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI5MDUwMTYzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGN4YWNydV9jbSBGdW5jdGlvbiBhbmQgUmVsYXRlZCBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBjeGFjcnVfY21gIGZ1bmN0aW9uLCBhbmQgaXQncyBzdWJzdGFudGlhbCDigJMgcXVpdGUgbGFyZ2UsIGFuZCBpdCBjYWxscyBgY3hhY3J1X3N0YXJ0X3dhaXRfdXJiYCBtdWx0aXBsZSB0aW1lcy4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCdzICpkZWZpbml0ZWx5KiBub3QgaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIEdpdmVuIHRoZSBpbnN0cnVjdGlvbnMsIHdoaWNoIHByaW9yaXRpemUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLCBvdmVyIGludGVybmFsLCBpbmxpbmVkIGZ1bmN0aW9ucywgSSBzaG91bGQgaW5jbHVkZSBpdCBpbiBgRm9jdXNTeW1ib2xzYC5cblxuQnV0IGhvbGQgb24sIGBjeGFjcnVfY21gICppcyogc3RhdGljLiBUaGlzIHJhaXNlcyBhIGZsYWcuIEl0IG1pZ2h0IG5vdCBiZSBleHBvcnRlZCBhcyBhIHN5bWJvbC4gSG93ZXZlciwgc2luY2UgaXQncyBjb25maXJtZWQgYXMgbm90IGlubGluZWQsIFN5emthbGxlciAqY291bGQqIHBvdGVudGlhbGx5IGZ1enogaXQgaWYgdGhlIGRlYnVnIGluZm8gcHJvdmlkZXMgaXQuIFRvIGJlIG9uIHRoZSBzYWZlIHNpZGUsIGl0IHNlZW1zIGJlc3QgdG8gaW5jbHVkZSB0aGUgaW50ZW5kZWQgZW50cnlwb2ludHMgb2YgdGhlIHN5c3RlbS5cblxuVGhvc2UgZW50cnkgcG9pbnRzIGxvb2sgbGlrZSB0aGV5IGFyZTpcbiogICBgY3hhY3J1X2hlYXZ5X2luaXRgXG4qICAgYGN4YWNydV9hdG1fc3RhcnRgXG4qICAgYGN4YWNydV9iaW5kYFxuKiAgIGBhZHNsX3N0YXRlX3N0b3JlYFxuKiAgIGBhZHNsX2NvbmZpZ19zdG9yZWBcbiogICBgY3hhY3J1X3BvbGxfc3RhdHVzYFxuXG5Ob3csIGxldCdzIGp1c3QgbWFrZSBzdXJlIGFib3V0IHRoYXQgaW5saW5pbmcgZm9yIGBjeGFjcnVfY21gLiBJIG1lYW4sIGl0J3MgYWJvdXQgMTAwIGxpbmVzIGxvbmcuIE5vIHdheSB0aGF0J3MgYmVlbiBpbmxpbmVkLiBZZXAsIEknbSBjb25maWRlbnQuIEknbGwgaW5jbHVkZSBgY3hhY3J1X2NtYCBhbG9uZyB3aXRoIGFsbCB0aG9zZSBleHBsaWNpdCBlbnRyeSBwb2ludHMuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGFsc28gZG91YmxlIGNoZWNrIGZvciBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBPa2F5LCBsZXQncyBzZWUsIGBVU0JfQ1hBQ1JVYCwgYFVTQl9BVE1gLCBhbmQgYEFUTWDigKYgV2FpdCwgYEFUTWAgbG9va3MgbGlrZSB0aGUgcGFyZW50IGNvbmZpZyBvZiBgVVNCX0FUTWAuIEknZCBiZXR0ZXIgY2hlY2sgYG5ldC9hdG0vS2NvbmZpZ2AgdG8gY29uZmlybSB0aGF0IHJlbGF0aW9uc2hpcCBhbmQgbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBpbXBvcnRhbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NTk5LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MjI6MzMuNjgzODg5NTMxWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTY3NzI5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9hdG0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYXRtL0tjb25maWctNS1cXG5uZXQvYXRtL0tjb25maWc6Njpjb25maWcgQVRNXFxubmV0L2F0bS9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIkFzeW5jaHJvbm91cyBUcmFuc2ZlciBNb2RlIChBVE0pXFxcIlxcbi0tXFxubmV0L2F0bS9LY29uZmlnLTIxLVxcbm5ldC9hdG0vS2NvbmZpZzoyMjpjb25maWcgQVRNX0JSMjY4NFxcbm5ldC9hdG0vS2NvbmZpZy0yMy1cXHR0cmlzdGF0ZSBcXFwiUkZDMTQ4My8yNjg0IEJyaWRnZWQgcHJvdG9jb2xzXFxcIlxcbi0tXFxubmV0L2F0bS9LY29uZmlnLTMwLVxcbm5ldC9hdG0vS2NvbmZpZzozMTpjb25maWcgQVRNX0JSMjY4NF9JUEZJTFRFUlxcbm5ldC9hdG0vS2NvbmZpZy0zMi1cXHRib29sIFxcXCJQZXItVkMgSVAgZmlsdGVyIGtsdWRnZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MjI6MzMuNzI1NTcyNzJaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY2MDg4MzExNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIFVTQiBBVE0gQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIEknbSBhdCBhIHBvaW50IHdoZXJlIEknbSBjb25zaWRlcmluZyB0aGUgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIFVTQiBBVE0gc3VwcG9ydC4gTXkgcHJpbWFyeSBjb25jZXJuIGlzIGVuc3VyaW5nIEkndmUgdGhvcm91Z2hseSBleGhhdXN0ZWQgYWxsIHJlbGV2YW50IHNldHRpbmdzLiBJdCdzIGNydWNpYWwgdG8gbGVhdmUgbm8gc3RvbmUgdW50dXJuZWQgaW4gdGhpcyBwaGFzZS5cblxuVGhlcmVmb3JlLCBJJ20gaGVhZGluZyBiYWNrIHRvIGBkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZ2AuIEkgbmVlZCB0byByZS1leGFtaW5lIHRoYXQgZmlsZSB3aXRoIGZyZXNoIGV5ZXMsIGRvdWJsZS1jaGVja2luZyBmb3IgYW55IG92ZXJsb29rZWQgY29uZmlndXJhdGlvbiBudWFuY2VzLiBJIHdhbnQgdG8gbWFrZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBwb3NzaWJpbGl0aWVzLCBkZXBlbmRlbmNpZXMsIG9yIHN1YnRsZXRpZXMgdGhhdCBtaWdodCBpbXBhY3QgdGhlIGZpbmFsIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gYmUgY2VydGFpbiBJIGhhdmUgY29uc2lkZXJlZCBhbGwgcG9zc2liaWxpdGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU1NTMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMjozOS4zODY0NTc5MDdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDM1MDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfQVRNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2F0bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2F0bS9LY29uZmlnLTUtXFxuZHJpdmVycy91c2IvYXRtL0tjb25maWc6NjptZW51Y29uZmlnIFVTQl9BVE1cXG5kcml2ZXJzL3VzYi9hdG0vS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJVU0IgRFNMIG1vZGVtIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIyOjM5LjQzMTQ5ODg5NloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDcwMzM3NzQyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBVU0IgQVRNIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgVVNCX0FUTWAgY29uZmlndXJhdGlvbiBvcHRpb24sIHdoaWNoLCBhcyBJIHNlZSBpdCwgcmVxdWlyZXMgYSBmZXcga2V5IGVsZW1lbnRzLiBGaXJzdCwgSSBuZWVkIHRvIGVuYWJsZSBgVVNCX0NYQUNSVWAsIGBVU0JfQVRNYCwgYW5kIGBBVE1gIGluIGBFbmFibGVDb25maWdzYC4gVGhhdCdzIHN0cmFpZ2h0Zm9yd2FyZCwgaXQncyBhIG1lbnVjb25maWcgaXNzdWUuXG5cbk5vdywgbG9va2luZyBhdCB0aGUgY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBgY3hhY3J1X2NtYCBmdW5jdGlvbi4uLiBhaCwgeWVzLCBJIHNlZSB0aGUgZml4LiBUaGUgb3JpZ2luYWwgY29kZSB3YXMgbWlzc2luZyBhIGNhbGwgdG8gYHVzYl9raWxsX3VyYmAgaW4gdGhlIGVycm9yIGhhbmRsaW5nIHBhdGguIFRoaXMgbWVhbnMgdGhhdCBpZiBgY3hhY3J1X2NtYCBmYWlsZWQsIHRoZSBgcmN2X3VyYmAgd291bGRuJ3QgYmUgcHJvcGVybHkgY2xlYW5lZCB1cCwgd2hpY2ggY291bGQgbGVhZCB0byBhIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbiBvciwgbW9yZSBjb21tb25seSwgYSBtZW1vcnkgbGVhay4gVGhpcyBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uYWwgY2hhbmdlLiAgSXQgZGlyZWN0bHkgYWRkcmVzc2VzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuXG5cbkdpdmVuIHRoYXQgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIEFUTSBkcml2ZXIgdGhhdCBpcyBhY2Nlc3NpYmxlIHRocm91Z2ggZGV2aWNlIGVtdWxhdGlvbiwgSSdtIG1hcmtpbmcgdGhpcyBhcyBgV29ydGhGdXp6aW5nOiB0cnVlYC4gIFdlIG5lZWQgdG8gdGVzdCB0aGlzIHRob3JvdWdobHkuIEknbSBmb2N1c2luZyBteSBhdHRlbnRpb24gb24gZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBsaWtlIGBjeGFjcnVfY21gLCBgY3hhY3J1X2hlYXZ5X2luaXRgLCBgY3hhY3J1X2F0bV9zdGFydGAsIGBjeGFjcnVfYmluZGAsIGBhZHNsX3N0YXRlX3N0b3JlYCwgYW5kIGBhZHNsX2NvbmZpZ19zdG9yZWAsIGFuZCBgY3hhY3J1X3BvbGxfc3RhdHVzYCB0byBjcmVhdGUgZnV6emluZyB0YXJnZXRzLiBUaGlzIGhlbHBzIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgcmVncmVzc2lvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXRjaC5cblxuRXNzZW50aWFsbHksIHRoZSBwYXRjaCBwcm92aWRlcyBhIGZpeCBieSBlbnN1cmluZyBgcmN2X3VyYmAgaXMgcHJvcGVybHkgY2xlYW5lZCB1cCBvbiBmYWlsdXJlLiBUaGF0J3MgYSBnb29kIHRoaW5nLCBhbmQgd2UgbmVlZCB0byB2ZXJpZnkgaXRzIGNvcnJlY3RuZXNzIGFuZCBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBwcm9ibGVtcy4gIEknbSBjb25maWRlbnQgaW4gbXkgYXNzZXNzbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4MjcsIk91dHB1dFRva2VucyI6MTYxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIyOjUwLjEzNDg3ODQ3M1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NzgwOTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfQ1hBQ1JVXCIsXG4gICAgXCJVU0JfQVRNXCIsXG4gICAgXCJBVE1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjeGFjcnVfY21cIixcbiAgICBcImN4YWNydV9oZWF2eV9pbml0XCIsXG4gICAgXCJjeGFjcnVfYXRtX3N0YXJ0XCIsXG4gICAgXCJjeGFjcnVfYmluZFwiLFxuICAgIFwiYWRzbF9zdGF0ZV9zdG9yZVwiLFxuICAgIFwiYWRzbF9jb25maWdfc3RvcmVcIixcbiAgICBcImN4YWNydV9wb2xsX3N0YXR1c1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSB1c2Jfa2lsbF91cmIgY2FsbCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBjeGFjcnVfY20gdG8gcHJvcGVybHkgY2xlYW4gdXAgdGhlIHJlY2VpdmUgVVJCIG9uIGZhaWx1cmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBBVE0gZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFVTQiBkZXZpY2UgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9DWEFDUlVcIixcbiAgICBcIlVTQl9BVE1cIixcbiAgICBcIkFUTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN4YWNydV9jbVwiLFxuICAgIFwiY3hhY3J1X2hlYXZ5X2luaXRcIixcbiAgICBcImN4YWNydV9hdG1fc3RhcnRcIixcbiAgICBcImN4YWNydV9iaW5kXCIsXG4gICAgXCJhZHNsX3N0YXRlX3N0b3JlXCIsXG4gICAgXCJhZHNsX2NvbmZpZ19zdG9yZVwiLFxuICAgIFwiY3hhY3J1X3BvbGxfc3RhdHVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHVzYl9raWxsX3VyYiBjYWxsIGluIHRoZSBlcnJvciBwYXRoIG9mIGN4YWNydV9jbSB0byBwcm9wZXJseSBjbGVhbiB1cCB0aGUgcmVjZWl2ZSBVUkIgb24gZmFpbHVyZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIEFUTSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGRldmljZSBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowmnrnv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 08:19:58 +0000 UTC FinishedAt: 2026-07-31 08:22:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_CXACRU", "USB_ATM", "ATM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_CXACRU", "USB_ATM", "ATM" ], "series_id": "814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "cxacru_cm", "cxacru_heavy_init", "cxacru_atm_start", "cxacru_bind", "adsl_state_store", "adsl_config_store", "cxacru_poll_status" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9DWEFDUlUmIzM0OywKICAgICYjMzQ7VVNCX0FUTSYjMzQ7LAogICAgJiMzNDtBVE0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjeGFjcnVfY20mIzM0OywKICAgICYjMzQ7Y3hhY3J1X2hlYXZ5X2luaXQmIzM0OywKICAgICYjMzQ7Y3hhY3J1X2F0bV9zdGFydCYjMzQ7LAogICAgJiMzNDtjeGFjcnVfYmluZCYjMzQ7LAogICAgJiMzNDthZHNsX3N0YXRlX3N0b3JlJiMzNDssCiAgICAmIzM0O2Fkc2xfY29uZmlnX3N0b3JlJiMzNDssCiAgICAmIzM0O2N4YWNydV9wb2xsX3N0YXR1cyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdXNiX2tpbGxfdXJiIGNhbGwgaW4gdGhlIGVycm9yIHBhdGggb2YgY3hhY3J1X2NtIHRvIHByb3Blcmx5IGNsZWFuIHVwIHRoZSByZWNlaXZlIFVSQiBvbiBmYWlsdXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBVU0IgQVRNIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBVU0IgZGV2aWNlIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGYwNTJmNzNmNmE1OTlhNTFiYWU1ZjMyOWYwYjc0ZWJlN2I2OTBmZDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAwODoyMToyOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMgYi9kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmNcbmluZGV4IGYxOTAwYzU2N2JhNDEuLjQyOWFjMjBhODk5OWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2F0bS9jeGFjcnUuY1xuQEAgLTcwMCw2ICYjNDM7NzAwLDggQEAgc3RhdGljIGludCBjeGFjcnVfY20oc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSwgZW51bSBjeGFjcnVfY21fcmVxdWVzdCBjbSxcbiBcdHJldCA9IG9mZmQ7XG4gXHR1c2JfZGJnKGluc3RhbmNlLVx1MDAzZXVzYmF0bSwgXCYjMzQ7Y20gJSN4XFxuXCYjMzQ7LCBjbSk7XG4gZmFpbDpcbiYjNDM7XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0dXNiX2tpbGxfdXJiKGluc3RhbmNlLVx1MDAzZXJjdl91cmIpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmluc3RhbmNlLVx1MDAzZWNtX3NlcmlhbGl6ZSk7XG4gZXJyOlxuIFx0cmV0dXJuIHJldDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX0NYQUNSVSYjMzQ7LAogICAgJiMzNDtVU0JfQVRNJiMzNDssCiAgICAmIzM0O0FUTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2N4YWNydV9jbSYjMzQ7LAogICAgJiMzNDtjeGFjcnVfaGVhdnlfaW5pdCYjMzQ7LAogICAgJiMzNDtjeGFjcnVfYXRtX3N0YXJ0JiMzNDssCiAgICAmIzM0O2N4YWNydV9iaW5kJiMzNDssCiAgICAmIzM0O2Fkc2xfc3RhdGVfc3RvcmUmIzM0OywKICAgICYjMzQ7YWRzbF9jb25maWdfc3RvcmUmIzM0OywKICAgICYjMzQ7Y3hhY3J1X3BvbGxfc3RhdHVzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSB1c2Jfa2lsbF91cmIgY2FsbCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBjeGFjcnVfY20gdG8gcHJvcGVybHkgY2xlYW4gdXAgdGhlIHJlY2VpdmUgVVJCIG9uIGZhaWx1cmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBBVE0gZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFVTQiBkZXZpY2UgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjA1MmY3M2Y2YTU5OWE1MWJhZTVmMzI5ZjBiNzRlYmU3YjY5MGZkNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDA4OjIxOjI5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvYXRtL2N4YWNydS5jIGIvZHJpdmVycy91c2IvYXRtL2N4YWNydS5jCmluZGV4IGYxOTAwYzU2N2JhNDEuLjQyOWFjMjBhODk5OWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMKQEAgLTcwMCw2ICYjNDM7NzAwLDggQEAgc3RhdGljIGludCBjeGFjcnVfY20oc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSwgZW51bSBjeGFjcnVfY21fcmVxdWVzdCBjbSwKIAlyZXQgPSBvZmZkOwogCXVzYl9kYmcoaW5zdGFuY2UtJmd0O3VzYmF0bSwgJiMzNDtjbSAlI3hcbiYjMzQ7LCBjbSk7CiBmYWlsOgomIzQzOwlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCXVzYl9raWxsX3VyYihpbnN0YW5jZS0mZ3Q7cmN2X3VyYik7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7aW5zdGFuY2UtJmd0O2NtX3NlcmlhbGl6ZSk7CiBlcnI6CiAJcmV0dXJuIHJldDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1NQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFVTQiBBVE0gRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgYmVlbiBhcHBsaWVkIHRvIGBkcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmNgLiBUaGUgY29yZSBvZiB0aGlzIGNoYW5nZSBzZWVtcyB0byBiZSB0aGUgaW5jbHVzaW9uIG9mIGB1c2Jfa2lsbF91cmIoaW5zdGFuY2UtJmd0O3Jjdl91cmIpO2Agd2l0aGluIHRoZSBgZmFpbDpgIHBhdGggb2YgdGhlIGBjeGFjcnVfY20oKWAgZnVuY3Rpb24uIFRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uLCBhbmQgdGhhdCYjMzk7cyBzb21ldGhpbmcgSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQuCgpNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gc2NydXRpbml6ZSB0aGUgYGN4YWNydV9jbWAgZnVuY3Rpb24gaXRzZWxmLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UsIGl0cyBsb2dpYywgYW5kIG1vc3QgaW1wb3J0YW50bHksIHdoeSB0aGlzIG5ldyBsaW5lIGlzIGJlaW5nIGFkZGVkIGluIHRoZSBmYWlsdXJlIGNhc2UuIFdoYXQgZG9lcyBgaW5zdGFuY2UtJmd0O3Jjdl91cmJgIHJlcHJlc2VudD8gV2hhdCBzdGF0ZSBpcyB0aGUgc3lzdGVtIGluIHdoZW4gYHJldCAmbHQ7IDBgIG9jY3Vycz8gV2hhdCYjMzk7cyB0aGUgaW50ZW5kZWQgZWZmZWN0IG9mIGtpbGxpbmcgdGhhdCB1cmI/IFByZXZlbnRpbmcgYSByZXNvdXJjZSBsZWFrPyBIYW5kbGluZyBhbiBlcnJvciBjb25kaXRpb24/CgpCZXlvbmQgYGN4YWNydV9jbWAsIEkgYWxzbyBuZWVkIHRvIG1hcCBvdXQgd2hvIHRoZSBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gYXJlLiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGFuZCB3aXRoaW4gd2hhdCBjb250ZXh0cywgdG8gYXNzZXNzIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UgaW4gdGhlIGxhcmdlciBwaWN0dXJlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIHBhcnRpY3VsYXIgYWN0aW9uIHJlbGF0ZXMgdG8gdGhlIG92ZXJhbGwgVVNCIEFUTSBkcml2ZXIsIGFuZCBzcGVjaWZpY2FsbHksIHRoZSBDWEFDUlUgZnVuY3Rpb25hbGl0eS4gVGhpcyBwYXRjaCBjb3VsZCBhZGRyZXNzIGEgcmFjZSBjb25kaXRpb24sIGltcHJvdmUgZXJyb3IgaGFuZGxpbmcsIG9yIGVuaGFuY2UgcmVzb3VyY2UgbWFuYWdlbWVudC4gTXkgam9iIG5vdyBpcyB0byBkZXRlcm1pbmUgKmV4YWN0bHkqIHdoYXQgdGhpcyBwYXRjaCBpcyBkb2luZyBhbmQgd2hhdCBpdHMgaW1wbGljYXRpb25zIGFyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjeGFjcnVfY20mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTU5PWVudW0gY3hhY3J1X2Z3X3JlcXVlc3Qge1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MC0gKiBmaXJtd2FyZSBpcyBsb2FkZWQgICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzE6ZW51bSBjeGFjcnVfY21fcmVxdWVzdCB7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzItXHRDTV9SRVFVRVNUX1VOREVGSU5FRCA9IDB4ODAsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwOC0gKi9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDk6ZW51bSBjeGFjcnVfY21fZmxhc2gge1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMC1cdENNX0ZMQVNIX1JFQUQgPSAweGExLFxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTQtLyogcmVwbHkgY29kZXMgdG8gdGhlIGNvbW1hbmRzIGFib3ZlICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTE1OmVudW0gY3hhY3J1X2NtX3N0YXR1cyB7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE2LVx0Q01fU1RBVFVTX1VOREVGSU5FRCxcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9MTcwPXN0cnVjdCBjeGFjcnVfZGF0YSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE5Mi1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxOTM6c3RhdGljIGludCBjeGFjcnVfY20oc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSwgZW51bSBjeGFjcnVfY21fcmVxdWVzdCBjbSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xOTQtXHR1OCAqd2RhdGEsIGludCB3c2l6ZSwgdTggKnJkYXRhLCBpbnQgcnNpemUpO1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz0zMzI9c3RhdGljIHNzaXplX3QgYWRzbF9zdGF0ZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTM1Ni1cdGlmICghc3RyY21wKHN0cl9jbWQsIFwmIzM0O3N0b3BcJiMzNDspIHx8ICFzdHJjbXAoc3RyX2NtZCwgXCYjMzQ7cmVzdGFydFwmIzM0OykpIHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzozNTc6XHRcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVE9QLCBOVUxMLCAwLCBOVUxMLCAwKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zNTgtXHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzc2LVx0aWYgKCFzdHJjbXAoc3RyX2NtZCwgXCYjMzQ7c3RhcnRcJiMzNDspIHx8ICFzdHJjbXAoc3RyX2NtZCwgXCYjMzQ7cmVzdGFydFwmIzM0OykpIHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzozNzc6XHRcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVEFSVCwgTlVMTCwgMCwgTlVMTCwgMCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzc4LVx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTQzNT1zdGF0aWMgc3NpemVfdCBhZHNsX2NvbmZpZ19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTQ4MC1cdFx0XHRkYXRhWzBdID0gY3B1X3RvX2xlMzIobnVtKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo0ODE6XHRcdFx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfREFUQV9TRVQsXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNDgyLVx0XHRcdFx0KHU4ICopIGRhdGEsIDQgJiM0MzsgbnVtICogOCwgTlVMTCwgMCk7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTU5MD1zdGF0aWMgaW50IGN4YWNydV9zdGFydF93YWl0X3VyYihzdHJ1Y3QgdXJiICp1cmIsIHN0cnVjdCBjb21wbGV0aW9uICpkb25lLFxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy02MDctXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NjA4OnN0YXRpYyBpbnQgY3hhY3J1X2NtKHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UsIGVudW0gY3hhY3J1X2NtX3JlcXVlc3QgY20sXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNjA5LVx0XHQgICAgIHU4ICp3ZGF0YSwgaW50IHdzaXplLCB1OCAqcmRhdGEsIGludCByc2l6ZSlcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzA5LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjcxMDpzdGF0aWMgaW50IGN4YWNydV9jbV9nZXRfYXJyYXkoc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSwgZW51bSBjeGFjcnVfY21fcmVxdWVzdCBjbSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MTEtXHRcdFx0ICAgICAgIHUzMiAqZGF0YSwgaW50IHNpemUpXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyMy1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3MjQ6XHRyZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIGNtLCBOVUxMLCAwLCAodTggKikgYnVmLCBidWZsZW4pO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyNS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyNy1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3Mjg6XHQvKiBsZW4gXHUwMDNlIDAgXHUwMDI2XHUwMDI2IGxlbiAlIDQgPT0gMCBndWFyYW50ZWVkIGJ5IGN4YWNydV9jbSgpICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzI5LVx0bGVuID0gcmV0IC8gNDtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9NzYwPXN0YXRpYyBpbnQgY3hhY3J1X2NhcmRfc3RhdHVzKHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UpXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzYxLXtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3NjI6XHRpbnQgcmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfR0VUX1NUQVRVUywgTlVMTCwgMCwgTlVMTCwgMCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzYzLVxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz03NzE9c3RhdGljIGludCBjeGFjcnVfYXRtX3N0YXJ0KHN0cnVjdCB1c2JhdG1fZGF0YSAqdXNiYXRtX2luc3RhbmNlLFxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03ODEtXHQvKiBSZWFkIE1BQyBhZGRyZXNzICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzgyOlx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfR0VUX01BQ19BRERSRVNTLCBOVUxMLCAwLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc4My1cdFx0XHRhdG1fZGV2LVx1MDAzZWVzaSwgc2l6ZW9mKGF0bV9kZXYtXHUwMDNlZXNpKSk7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc5MC1cdG11dGV4X2xvY2soXHUwMDI2aW5zdGFuY2UtXHUwMDNlYWRzbF9zdGF0ZV9zZXJpYWxpemUpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjc5MTpcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVEFSVCwgTlVMTCwgMCwgTlVMTCwgMCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzkyLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9ODIwPXN0YXRpYyB2b2lkIGN4YWNydV9wb2xsX3N0YXR1cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTgyOS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo4MzA6XHRyZXQgPSBjeGFjcnVfY21fZ2V0X2FycmF5KGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfSU5GT19HRVQsIGJ1ZiwgQ1hJTkZfTUFYKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy04MzEtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTEwMDY9c3RhdGljIGludCBjeGFjcnVfaGVhdnlfaW5pdChzdHJ1Y3QgdXNiYXRtX2RhdGEgKnVzYmF0bV9pbnN0YW5jZSxcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTEwMS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTAyOlx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfR0VUX1NUQVRVUywgTlVMTCwgMCwgTlVMTCwgMCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTEwMy1cdGlmIChyZXQgXHUwMDNjIDApIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzU3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipEZWVwIERpdmUgaW50byB0aGUgVVNCIEFUTSBEcml2ZXIqKgoKQWxyaWdodCwgc28gdGhlIGBjeGFjcnVfY21gIG1vZHVsZS4uLiB0aGF0JiMzOTtzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgVVNCIEFUTSBkcml2ZXIgbGllcy4gSXQmIzM5O3MgY3J1Y2lhbCBiZWNhdXNlIGl0JiMzOTtzIHRoZSBmb3VuZGF0aW9uIGZvciBzZXZlcmFsIGtleSBmdW5jdGlvbnMuIEkgc2VlIGl0IGJlaW5nIGNhbGxlZCBmcm9tIGBjeGFjcnVfY21fZ2V0X2FycmF5YCwgYGN4YWNydV9jYXJkX3N0YXR1c2AsIGBjeGFjcnVfYXRtX3N0YXJ0YCwgYGN4YWNydV9oZWF2eV9pbml0YCwgYW5kIGV2ZW4gdGhlIHN0b3JhZ2UgZnVuY3Rpb25zIGZvciBEU0wgc3RhdGUgYW5kIGNvbmZpZ3VyYXRpb24sIGBhZHNsX3N0YXRlX3N0b3JlYCwgYW5kIGBhZHNsX2NvbmZpZ19zdG9yZWAuIFRoYXQgZ2l2ZXMgbWUgYSBkZWNlbnQgb3ZlcnZpZXcgb2YgaXRzIGltcG9ydGFuY2UuIEl0JiMzOTtzIGVzc2VudGlhbGx5IHRoZSBiYWNrYm9uZSBvZiBhbGwgaW50ZXJhY3Rpb25zIHdpdGggdGhlIEFUTSBoYXJkd2FyZSBvdmVyIHRoZSBVU0IgYnVzLgoKR2l2ZW4gdGhlIGNlbnRyYWxpdHkgb2YgdGhpcyBtb2R1bGUsIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBjeGFjcnVgLiBJdCYjMzk7cyB0aGUgYmVzdCB3YXkgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaXMgY29uZmlndXJlZCwgaXRzIGRlcGVuZGVuY2llcywgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvcHRpb25zLiBLbm93aW5nIHRoZSBLY29uZmlnIG9wdGlvbnMgd2lsbCBnaXZlIG1lIHRoZSBpbmZvcm1hdGlvbiBJIG5lZWQgdG8gY29uZmlybSBob3cgdGhlIGRyaXZlciBpcyBjb25maWd1cmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2N4YWNydSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2F0bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2F0bS9LY29uZmlnPTMyPWNvbmZpZyBVU0JfQ1hBQ1JVXG4tLVxuZHJpdmVycy91c2IvYXRtL0tjb25maWctNDEtXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuZHJpdmVycy91c2IvYXRtL0tjb25maWc6NDI6XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBjeGFjcnUuXG5kcml2ZXJzL3VzYi9hdG0vS2NvbmZpZy00My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODExCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgc3VtbWFyaXplZCwgYXNzdW1pbmcgSSYjMzk7bSBhbHJlYWR5IHByZXR0eSBmYW1pbGlhciB3aXRoIEtjb25maWc6CgoqKkRlZXAgRGl2ZSBpbnRvIGBVU0JfQ1hBQ1JVYCBLY29uZmlnKioKCkFscmlnaHQsIGJlZm9yZSBJIG1ha2UgYW55IGFzc3VtcHRpb25zIG9yIGp1bXAgdG8gY29uY2x1c2lvbnMsIEkgbmVlZCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gcHVsbCB1cCB0aGUgY29tcGxldGUgS2NvbmZpZyBlbnRyeSBmb3IgYFVTQl9DWEFDUlVgLiBVbmRlcnN0YW5kaW5nIHRoZSBmdWxsIGNvbnRleHQsIGluY2x1ZGluZyBpdHMgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHNldHRpbmdzLCBoZWxwIHRleHQsIGFuZCBhbnkgZGVmaW5lZCB0cmlzdGF0ZSB2YWx1ZXMsIGlzIGNyaXRpY2FsLiBJIGNhbiYjMzk7dCByZWFsbHkgbWFrZSBhbiBpbmZvcm1lZCBkZWNpc2lvbiBvciBjb250cmlidXRlIG1lYW5pbmdmdWxseSB3aXRob3V0IHRoYXQgZm91bmRhdGlvbmFsIGtub3dsZWRnZS4gS25vd2luZyB0aGUgZnVsbCBlbnRyeSBhbGxvd3MgbWUgdG86CgoqICAgKipEZXRlcm1pbmUgaXRzIHB1cnBvc2U6KiogV2hhdCBpcyB0aGlzIGBVU0JfQ1hBQ1JVYCBvcHRpb24gaW50ZW5kZWQgdG8gZG8/IFdoYXQgZGV2aWNlIG9yIGZ1bmN0aW9uIGRvZXMgaXQgY29udHJvbD8KKiAgICoqVW5kZXJzdGFuZCBkZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBLY29uZmlnIHN5bWJvbHMgZG9lcyBpdCByZWx5IG9uPyBXaGljaCBvcHRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBiZWZvcmUgdGhpcyBvbmUgYmVjb21lcyBhdmFpbGFibGU/IEFyZSB0aGVyZSBhbnkgY29uZmxpY3RzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8KKiAgICoqRXZhbHVhdGUgRGVmYXVsdCBWYWx1ZXM6KiogQXJlIHRoZSBkZWZhdWx0IHNldHRpbmdzIGFwcHJvcHJpYXRlIGZvciB0aGUgdGFyZ2V0IGNvbmZpZ3VyYXRpb24/IERvIHRoZXkgYWxpZ24gd2l0aCB0aGUgZ2VuZXJhbCBkZXNpZ24gcGhpbG9zb3BoeSBvZiB0aGUgcHJvamVjdD8KKiAgICoqR3Jhc3AgdGhlIEhlbHAgVGV4dDoqKiBXaGF0IGFyZSB0aGUgaW50ZW5kZWQgdXNlIGNhc2VzIGZvciB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uPyBEb2VzIHRoZSBoZWxwIHRleHQgb2ZmZXIgZW5vdWdoIGNsYXJpdHkgb3IgZG9lcyBpdCBuZWVkIHRvIGJlIHVwZGF0ZWQ/CiogICAqKkFzc2VzcyB0cmlzdGF0ZSBsb2dpYzoqKiBJIG11c3QgdW5kZXJzdGFuZCBhbGwgdGhyZWUgc3RhdGVzICh5LCBuLCBtKSBhbmQgaG93IHRoYXQgYWZmZWN0cyBmdW5jdGlvbmFsaXR5LCBlc3BlY2lhbGx5IGlmIHRoaXMgaXMgYSBkcml2ZXIgb3IgaGFyZHdhcmUgc3VwcG9ydCBvcHRpb24uCgpFc3NlbnRpYWxseSwgSSBuZWVkIHRoZSByYXcgZGF0YS4gVGhpcyBLY29uZmlnIGVudHJ5IGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgYW55IGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiwgcG90ZW50aWFsIG1vZGlmaWNhdGlvbnMsIG9yIGRpc2N1c3Npb25zLiBObyBzaG9ydGN1dHMgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0NYQUNSVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2F0bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2F0bS9LY29uZmlnPTIwPWNvbmZpZyBVU0JfU1BFRURUT1VDSFxuLS1cbmRyaXZlcnMvdXNiL2F0bS9LY29uZmlnLTMxLVxuZHJpdmVycy91c2IvYXRtL0tjb25maWc6MzI6Y29uZmlnIFVTQl9DWEFDUlVcbmRyaXZlcnMvdXNiL2F0bS9LY29uZmlnLTMzLVx0dHJpc3RhdGUgXCYjMzQ7Q29uZXhhbnQgQWNjZXNzUnVubmVyIFVTQiBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI5NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIEtjb25maWcgRmlsZSAtIExpbmUgMzIqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgemVyb2luZyBpbiBvbiB0aGUgS2NvbmZpZyBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMzIuIFRoYXQmIzM5O3MgdXN1YWxseSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGEgcmVhc29uLCBhbmQgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGFyZWEgbGlrZWx5IHRvdWNoZXMgc29tZXRoaW5nIGludGVyZXN0aW5nLiBJdCBjb3VsZCBiZSBhIGNvcmUgbW9kdWxlIGRlZmluaXRpb24sIGEgZmVhdHVyZSBmbGFnLCBvciBwZXJoYXBzIGV2ZW4gYSBkZXBlbmRlbmN5IEkgbmVlZCB0byBmdWxseSBncmFzcCBiZWZvcmUgbW92aW5nIG9uLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgY2FyZWZ1bGx5IGF0IHRoZSBjb250ZXh0IGFyb3VuZCB0aGF0IGxpbmUsIHRyYWNlIGFueSByZWxldmFudCBzeW1ib2xzLCBhbmQgdW5kZXJzdGFuZCB3aGF0IHRoYXQgcGFydGljdWxhciBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBkb2luZyBhbmQgd2h5LiBJIGV4cGVjdCB0aGVyZSBpcyBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBteSBleHBlcnRpc2UgdG8gdW5kZXJzdGFuZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjU6XHRcdCAgbW9kZW0uICBJbiBvcmRlciB0byB1c2UgeW91ciBtb2RlbSB5b3Ugd2lsbCBuZWVkIHRvIGluc3RhbGwgdGhlIFxuICAyNjpcdFx0ICB0d28gcGFydHMgb2YgdGhlIGZpcm13YXJlLCBleHRyYWN0ZWQgYnkgdGhlIHVzZXIgc3BhY2UgdG9vbHM7IHNlZVxuICAyNzpcdFx0ICBcdTAwM2NodHRwOi8vd3d3LmxpbnV4LXVzYi5vcmcvU3BlZWRUb3VjaC9cdTAwM2UgZm9yIGRldGFpbHMuXG4gIDI4Olx0XG4gIDI5Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuICAzMDpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc3BlZWR0Y2guXG4gIDMxOlx0XG4gIDMyOlx0Y29uZmlnIFVTQl9DWEFDUlVcbiAgMzM6XHRcdHRyaXN0YXRlIFwmIzM0O0NvbmV4YW50IEFjY2Vzc1J1bm5lciBVU0Igc3VwcG9ydFwmIzM0O1xuICAzNDpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICAzNTpcdFx0aGVscFxuICAzNjpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSBoYXZlIGFuIEFEU0wgVVNCIG1vZGVtIGJhc2VkIG9uIHRoZSBDb25leGFudFxuICAzNzpcdFx0ICBBY2Nlc3NSdW5uZXIgY2hpcHNldC4gIEluIG9yZGVyIHRvIHVzZSB5b3VyIG1vZGVtIHlvdSB3aWxsIG5lZWQgdG9cbiAgMzg6XHRcdCAgaW5zdGFsbCB0aGUgZmlybXdhcmUsIGV4dHJhY3RlZCBieSB0aGUgdXNlciBzcGFjZSB0b29sczsgc2VlXG4gIDM5Olx0XHQgIFx1MDAzY2h0dHA6Ly9hY2Nlc3NydW5uZXIuc291cmNlZm9yZ2UubmV0L1x1MDAzZSBmb3IgZGV0YWlscy5cbiAgNDA6XHRcbiAgNDE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDQyOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBjeGFjcnUuXG4gIDQzOlx0XG4gIDQ0Olx0Y29uZmlnIFVTQl9VRUFHTEVBVE1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgzMAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBhIFVTQiBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kqKgoKQWxyaWdodCwgc28gdGhlIGNvbmZpZyBpbiBxdWVzdGlvbiBpcyBgVVNCX0NYQUNSVWAuIEkmIzM5O20gZ3Vlc3NpbmcgdGhhdCBkZXBlbmRzIG9uIGBVU0JfQVRNYC4gTGV0JiMzOTtzIGFzc3VtZSBgVVNCX0FUTWAgaXMgdGhlIHBhcmVudCwgc28gSSBzaG91bGQgcHJvYmFibHkgc3RhcnQgYnkgY2hlY2tpbmcgb3V0IHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUgaW4gYGRyaXZlcnMvdXNiL2F0bS9gLiBMZXQmIzM5O3MgZ2V0IHJpZ2h0IGludG8gYGRyaXZlcnMvdXNiL2F0bS9LY29uZmlnYCBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4gSSYjMzk7bGwgcmVhZCBpdCBmcm9tIHRoZSB0b3AgYW5kIHNlZSB3aGVyZSB0aGlzIHJhYmJpdCBob2xlIGxlYWRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2F0bS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIFVTQi9BVE0gRFNMIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudWNvbmZpZyBVU0JfQVRNXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgRFNMIG1vZGVtIHN1cHBvcnRcJiMzNDtcbiAgIDg6XHRcdGRlcGVuZHMgb24gQVRNXG4gICA5Olx0XHRzZWxlY3QgQ1JDMzJcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBjb25uZWN0IGEgVVNCIERpZ2l0YWwgU3Vic2NyaWJlciBMaW5lIChEU0wpXG4gIDEyOlx0XHQgIG1vZGVtIHRvIHlvdXIgY29tcHV0ZXImIzM5O3MgVVNCIHBvcnQuICBZb3Ugd2lsbCB0aGVuIG5lZWQgdG8gY2hvb3NlIHlvdXJcbiAgMTM6XHRcdCAgbW9kZW0gZnJvbSB0aGUgbGlzdCBiZWxvdy5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gIDE2Olx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB1c2JhdG0uXG4gIDE3Olx0XG4gIDE4Olx0aWYgVVNCX0FUTVxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBVU0JfU1BFRURUT1VDSFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Mjc2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgY3hhY3J1X2NtIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBVU0JfQ1hBQ1JVYCBkcml2ZXIsIGFuZCBJIHNlZSBpdHMgZGVwZW5kZW5jeSBjaGFpbjogaXQgcmVsaWVzIG9uIGBVU0JfQVRNYCwgd2hpY2gsIGluIHR1cm4sIGRlcGVuZHMgb24gYEFUTWAuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93IGZvciBjb250ZXh0LiBUaGUgcGF0Y2ggaXRzZWxmIGlzIGxvY2F0ZWQgd2l0aGluIGBjeGFjcnVfY21gLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIGJlIHJlbGlhYmx5IHRyaWdnZXJlZCBmb3IgdGVzdGluZz8gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIFVTQiBkcml2ZXIsIHRoZSBhbnN3ZXIgaXMgbW9zdCBsaWtlbHkgeWVzLiBTeXprYWxsZXImIzM5O3MgVVNCIGVtdWxhdGlvbiBjYXBhYmlsaXRpZXMgc2hvdWxkIGFsbG93IGl0IHRvIGJvdGggaW5pdGlhbGl6ZSB0aGUgVVNCIGRldmljZSBhbmQgdGhlbiBlc3RhYmxpc2ggY29tbXVuaWNhdGlvbiB3aXRoIHRoZSB0YXJnZXQgc3lzdGVtLgoKU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBgdXNiX2tpbGxfdXJiKGluc3RhbmNlLSZndDtyY3ZfdXJiKTtgIHdpdGhpbiB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiBgY3hhY3J1X2NtYC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHRvIGhvdyBlcnJvciBoYW5kbGluZyBvY2N1cnMuIFRoYXQmIzM5O3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGRlZXAgZGl2ZS4gQmVmb3JlIGFueXRoaW5nIGVsc2UsIEkgbmVlZCB0byBjaGVjayB0aGUgZXhhY3QgZnVuY3Rpb24gc2lnbmF0dXJlIG9mIGBjeGFjcnVfY21gLiBJIHdpbGwgYWxzbyBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBpdCYjMzk7cyBkZWNsYXJlZCBgc3RhdGljYC4gVGhhdCBpbmZvcm1hdGlvbiBtYXkgYmUgaW1wb3J0YW50IGxhdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjeGFjcnVfY20mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTU5PWVudW0gY3hhY3J1X2Z3X3JlcXVlc3Qge1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MC0gKiBmaXJtd2FyZSBpcyBsb2FkZWQgICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzE6ZW51bSBjeGFjcnVfY21fcmVxdWVzdCB7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzItXHRDTV9SRVFVRVNUX1VOREVGSU5FRCA9IDB4ODAsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwOC0gKi9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDk6ZW51bSBjeGFjcnVfY21fZmxhc2gge1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMC1cdENNX0ZMQVNIX1JFQUQgPSAweGExLFxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTQtLyogcmVwbHkgY29kZXMgdG8gdGhlIGNvbW1hbmRzIGFib3ZlICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTE1OmVudW0gY3hhY3J1X2NtX3N0YXR1cyB7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE2LVx0Q01fU1RBVFVTX1VOREVGSU5FRCxcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9MTcwPXN0cnVjdCBjeGFjcnVfZGF0YSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE5Mi1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxOTM6c3RhdGljIGludCBjeGFjcnVfY20oc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSwgZW51bSBjeGFjcnVfY21fcmVxdWVzdCBjbSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xOTQtXHR1OCAqd2RhdGEsIGludCB3c2l6ZSwgdTggKnJkYXRhLCBpbnQgcnNpemUpO1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz0zMzI9c3RhdGljIHNzaXplX3QgYWRzbF9zdGF0ZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTM1Ni1cdGlmICghc3RyY21wKHN0cl9jbWQsIFwmIzM0O3N0b3BcJiMzNDspIHx8ICFzdHJjbXAoc3RyX2NtZCwgXCYjMzQ7cmVzdGFydFwmIzM0OykpIHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzozNTc6XHRcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVE9QLCBOVUxMLCAwLCBOVUxMLCAwKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zNTgtXHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzc2LVx0aWYgKCFzdHJjbXAoc3RyX2NtZCwgXCYjMzQ7c3RhcnRcJiMzNDspIHx8ICFzdHJjbXAoc3RyX2NtZCwgXCYjMzQ7cmVzdGFydFwmIzM0OykpIHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzozNzc6XHRcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVEFSVCwgTlVMTCwgMCwgTlVMTCwgMCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzc4LVx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTQzNT1zdGF0aWMgc3NpemVfdCBhZHNsX2NvbmZpZ19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTQ4MC1cdFx0XHRkYXRhWzBdID0gY3B1X3RvX2xlMzIobnVtKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo0ODE6XHRcdFx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfREFUQV9TRVQsXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNDgyLVx0XHRcdFx0KHU4ICopIGRhdGEsIDQgJiM0MzsgbnVtICogOCwgTlVMTCwgMCk7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTU5MD1zdGF0aWMgaW50IGN4YWNydV9zdGFydF93YWl0X3VyYihzdHJ1Y3QgdXJiICp1cmIsIHN0cnVjdCBjb21wbGV0aW9uICpkb25lLFxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy02MDctXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NjA4OnN0YXRpYyBpbnQgY3hhY3J1X2NtKHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UsIGVudW0gY3hhY3J1X2NtX3JlcXVlc3QgY20sXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNjA5LVx0XHQgICAgIHU4ICp3ZGF0YSwgaW50IHdzaXplLCB1OCAqcmRhdGEsIGludCByc2l6ZSlcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzA5LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjcxMDpzdGF0aWMgaW50IGN4YWNydV9jbV9nZXRfYXJyYXkoc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSwgZW51bSBjeGFjcnVfY21fcmVxdWVzdCBjbSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MTEtXHRcdFx0ICAgICAgIHUzMiAqZGF0YSwgaW50IHNpemUpXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyMy1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3MjQ6XHRyZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIGNtLCBOVUxMLCAwLCAodTggKikgYnVmLCBidWZsZW4pO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyNS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyNy1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3Mjg6XHQvKiBsZW4gXHUwMDNlIDAgXHUwMDI2XHUwMDI2IGxlbiAlIDQgPT0gMCBndWFyYW50ZWVkIGJ5IGN4YWNydV9jbSgpICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzI5LVx0bGVuID0gcmV0IC8gNDtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9NzYwPXN0YXRpYyBpbnQgY3hhY3J1X2NhcmRfc3RhdHVzKHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UpXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzYxLXtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3NjI6XHRpbnQgcmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfR0VUX1NUQVRVUywgTlVMTCwgMCwgTlVMTCwgMCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzYzLVxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz03NzE9c3RhdGljIGludCBjeGFjcnVfYXRtX3N0YXJ0KHN0cnVjdCB1c2JhdG1fZGF0YSAqdXNiYXRtX2luc3RhbmNlLFxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03ODEtXHQvKiBSZWFkIE1BQyBhZGRyZXNzICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzgyOlx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfR0VUX01BQ19BRERSRVNTLCBOVUxMLCAwLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc4My1cdFx0XHRhdG1fZGV2LVx1MDAzZWVzaSwgc2l6ZW9mKGF0bV9kZXYtXHUwMDNlZXNpKSk7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc5MC1cdG11dGV4X2xvY2soXHUwMDI2aW5zdGFuY2UtXHUwMDNlYWRzbF9zdGF0ZV9zZXJpYWxpemUpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjc5MTpcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVEFSVCwgTlVMTCwgMCwgTlVMTCwgMCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzkyLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9ODIwPXN0YXRpYyB2b2lkIGN4YWNydV9wb2xsX3N0YXR1cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTgyOS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo4MzA6XHRyZXQgPSBjeGFjcnVfY21fZ2V0X2FycmF5KGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfSU5GT19HRVQsIGJ1ZiwgQ1hJTkZfTUFYKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy04MzEtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTEwMDY9c3RhdGljIGludCBjeGFjcnVfaGVhdnlfaW5pdChzdHJ1Y3QgdXNiYXRtX2RhdGEgKnVzYmF0bV9pbnN0YW5jZSxcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTEwMS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTAyOlx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfR0VUX1NUQVRVUywgTlVMTCwgMCwgTlVMTCwgMCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTEwMy1cdGlmIChyZXQgXHUwMDNjIDApIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODUzOAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKlRhcmdldGluZyB0aGUgRHluYW1pYyBFbGVtZW50cyoqCgpBbHJpZ2h0LCBgY3hhY3J1X2NtYCBpcyBhIGtub3duIHF1YW50aXR5LCBhIHN0YXRpYyBjb21wb25lbnQuIFRoZXJlZm9yZSwgaXQmIzM5O3Mgbm90IHRoZSBwcmltYXJ5IHNvdXJjZSBvZiB0aGUgdmFyaWFiaWxpdHkgb3IgaW50ZXJlc3RpbmcgYmVoYXZpb3IgSSYjMzk7bSBjaGFzaW5nLiBUaGUga2V5IGxpZXMgaW4gdW5kZXJzdGFuZGluZyBob3cgdGhpcyBzdGF0aWMgZWxlbWVudCBpbnRlcmFjdHMgd2l0aCB0aGUgZHluYW1pYyBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHRoZSBub24tc3RhdGljIGNvZGUgcGF0aHMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBwb2ludHMgd2hlcmUgZXhlY3V0aW9uICplbnRlcnMqIG9yIGNhbGxzIGludG8gb3IgdXNlcyBgY3hhY3J1X2NtYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBzdGF0aWMgY29tcG9uZW50IGlzIGludm9rZWQuIFRoYXQgbWVhbnMgSSBuZWVkIHRvIGxvb2sgZm9yIGZ1bmN0aW9ucyB0aGF0IGFyZSBleHBvcnRlZCBieSBvciBhY3QgYXMgY2FsbGJhY2sgcG9pbnRzIGZvciBgY3hhY3J1X2NtYC4gV2hlcmUgZG9lcyBpdCBwbHVnIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlPyBXaGljaCBvdGhlciBjb21wb25lbnRzIHJlbHkgb24gaXRzIHNlcnZpY2VzIG9yLCBjb252ZXJzZWx5LCB3aGljaCBjb21wb25lbnRzIGRvZXMgaXQgcmVseSBvbj8gVGhhdOKAmXMgd2hlcmUgdGhlIGludGVyZXN0aW5nIHN0dWZmIGlzIGxpa2VseSBoYXBwZW5pbmcuIExldCYjMzk7cyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgdGhlIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y3hhY3J1XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzMtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MzQ6c3RhdGljIGNvbnN0IGNoYXIgY3hhY3J1X2RyaXZlcl9uYW1lW10gPSBcJiMzNDtjeGFjcnVcJiMzNDs7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzUtXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTU4LSAqIGZpcm13YXJlIGlzIGxvYWRlZCAgKi9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo1OTplbnVtIGN4YWNydV9md19yZXF1ZXN0IHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy02MC1cdEZXX0NNRF9FUlIsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcwLSAqIGZpcm13YXJlIGlzIGxvYWRlZCAgKi9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3MTplbnVtIGN4YWNydV9jbV9yZXF1ZXN0IHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03Mi1cdENNX1JFUVVFU1RfVU5ERUZJTkVEID0gMHg4MCxcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA4LSAqL1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwOTplbnVtIGN4YWNydV9jbV9mbGFzaCB7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTEwLVx0Q01fRkxBU0hfUkVBRCA9IDB4YTEsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExNC0vKiByZXBseSBjb2RlcyB0byB0aGUgY29tbWFuZHMgYWJvdmUgKi9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTU6ZW51bSBjeGFjcnVfY21fc3RhdHVzIHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTYtXHRDTV9TVEFUVVNfVU5ERUZJTkVELFxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjYtLyogaW5kaWNlcyBpbnRvIENBUkRfSU5GT19HRVQgcmV0dXJuIGFycmF5ICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTI3OmVudW0gY3hhY3J1X2luZm9faWR4IHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjgtXHRDWElORl9ET1dOU1RSRUFNX1JBVEUsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE1Ni1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxNTc6ZW51bSBjeGFjcnVfcG9sbF9zdGF0ZSB7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTU4LVx0Q1hQT0xMX1NUT1BQSU5HLFxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xNjMtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTY0OnN0cnVjdCBjeGFjcnVfbW9kZW1fdHlwZSB7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTY1LVx0dTMyIHBsbF9mX2Nsaztcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTY5LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjE3MDpzdHJ1Y3QgY3hhY3J1X2RhdGEge1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE3MS1cdHN0cnVjdCB1c2JhdG1fZGF0YSAqdXNiYXRtO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE3Mi1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxNzM6XHRjb25zdCBzdHJ1Y3QgY3hhY3J1X21vZGVtX3R5cGUgKm1vZGVtX3R5cGU7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTc0LVxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xODAtXHRzdHJ1Y3QgbXV0ZXggcG9sbF9zdGF0ZV9zZXJpYWxpemU7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTgxOlx0ZW51bSBjeGFjcnVfcG9sbF9zdGF0ZSBwb2xsX3N0YXRlO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE4Mi1cbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTkyLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjE5MzpzdGF0aWMgaW50IGN4YWNydV9jbShzdHJ1Y3QgY3hhY3J1X2RhdGEgKmluc3RhbmNlLCBlbnVtIGN4YWNydV9jbV9yZXF1ZXN0IGNtLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE5NC1cdHU4ICp3ZGF0YSwgaW50IHdzaXplLCB1OCAqcmRhdGEsIGludCByc2l6ZSk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTk1OnN0YXRpYyB2b2lkIGN4YWNydV9wb2xsX3N0YXR1cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE5Ni1cbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9MjA4PXN0YXRpYyBzc2l6ZV90IF9uYW1lIyNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIFxcXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTIxMC17IFxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjExOlx0c3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSA9IHRvX3VzYmF0bV9kcml2ZXJfZGF0YShcXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTIxMi1cdFx0dG9fdXNiX2ludGVyZmFjZShkZXYpKTsgXFxcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMjE2LVxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjE3Olx0cmV0dXJuIGN4YWNydV9zeXNmc19zaG93YXR0cl8jI190eXBlKGluc3RhbmNlLVx1MDAzZWNhcmRfaW5mb1tfdmFsdWVdLCBidWYpOyBcXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTIxOC19IFxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9MjE5PUNYQUNSVV9fQVRUUl9JTklUKF9uYW1lKVxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yMzAtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjMxOnN0YXRpYyBzc2l6ZV90IGN4YWNydV9zeXNmc19zaG93YXR0cl91MzIodTMyIHZhbHVlLCBjaGFyICpidWYpXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMjMyLXtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMjM1LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjIzNjpzdGF0aWMgc3NpemVfdCBjeGFjcnVfc3lzZnNfc2hvd2F0dHJfczgoczggdmFsdWUsIGNoYXIgKmJ1ZilcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yMzcte1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yNDAtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjQxOnN0YXRpYyBzc2l6ZV90IGN4YWNydV9zeXNmc19zaG93YXR0cl9kQihzMTYgdmFsdWUsIGNoYXIgKmJ1ZilcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yNDIte1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yNTItXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjUzOnN0YXRpYyBzc2l6ZV90IGN4YWNydV9zeXNmc19zaG93YXR0cl9ib29sKHUzMiB2YWx1ZSwgY2hhciAqYnVmKVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTI1NC17XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTI2MS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoyNjI6c3RhdGljIHNzaXplX3QgY3hhY3J1X3N5c2ZzX3Nob3dhdHRyX0xJTksodTMyIHZhbHVlLCBjaGFyICpidWYpXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMjYzLXtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMjcwLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjI3MTpzdGF0aWMgc3NpemVfdCBjeGFjcnVfc3lzZnNfc2hvd2F0dHJfTElORSh1MzIgdmFsdWUsIGNoYXIgKmJ1ZilcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yNzIte1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yODEtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjgyOnN0YXRpYyBzc2l6ZV90IGN4YWNydV9zeXNmc19zaG93YXR0cl9NT0RVKHUzMiB2YWx1ZSwgY2hhciAqYnVmKVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTI4My17XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTMwMz1zdGF0aWMgc3NpemVfdCBtYWNfYWRkcmVzc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzA1LXtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzozMDY6XHRzdHJ1Y3QgY3hhY3J1X2RhdGEgKmluc3RhbmNlID0gdG9fdXNiYXRtX2RyaXZlcl9kYXRhKFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTMwNy1cdFx0XHR0b191c2JfaW50ZXJmYWNlKGRldikpO1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz0zMTU9c3RhdGljIHNzaXplX3QgYWRzbF9zdGF0ZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzE4LVx0c3RhdGljIGNoYXIgKnN0cltdID0geyBcJiMzNDtydW5uaW5nXCYjMzQ7LCBcJiMzNDtzdG9wcGVkXCYjMzQ7IH07XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MzE5Olx0c3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSA9IHRvX3VzYmF0bV9kcml2ZXJfZGF0YShcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zMjAtXHRcdFx0dG9fdXNiX2ludGVyZmFjZShkZXYpKTtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9MzMyPXN0YXRpYyBzc2l6ZV90IGFkc2xfc3RhdGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zMzQte1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjMzNTpcdHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UgPSB0b191c2JhdG1fZHJpdmVyX2RhdGEoXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzM2LVx0XHRcdHRvX3VzYl9pbnRlcmZhY2UoZGV2KSk7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTM1Ni1cdGlmICghc3RyY21wKHN0cl9jbWQsIFwmIzM0O3N0b3BcJiMzNDspIHx8ICFzdHJjbXAoc3RyX2NtZCwgXCYjMzQ7cmVzdGFydFwmIzM0OykpIHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzozNTc6XHRcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVE9QLCBOVUxMLCAwLCBOVUxMLCAwKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zNTgtXHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzc2LVx0aWYgKCFzdHJjbXAoc3RyX2NtZCwgXCYjMzQ7c3RhcnRcJiMzNDspIHx8ICFzdHJjbXAoc3RyX2NtZCwgXCYjMzQ7cmVzdGFydFwmIzM0OykpIHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzozNzc6XHRcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVEFSVCwgTlVMTCwgMCwgTlVMTCwgMCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzc4LVx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTQyNy1cdGlmIChwb2xsID09IENYUE9MTF9QT0xMSU5HKVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjQyODpcdFx0Y3hhY3J1X3BvbGxfc3RhdHVzKFx1MDAyNmluc3RhbmNlLVx1MDAzZXBvbGxfd29yay53b3JrKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy00MjktXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTQzNT1zdGF0aWMgc3NpemVfdCBhZHNsX2NvbmZpZ19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTQzNy17XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NDM4Olx0c3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSA9IHRvX3VzYmF0bV9kcml2ZXJfZGF0YShcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy00MzktXHRcdFx0dG9fdXNiX2ludGVyZmFjZShkZXYpKTtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNDgwLVx0XHRcdGRhdGFbMF0gPSBjcHVfdG9fbGUzMihudW0pO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjQ4MTpcdFx0XHRyZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0FSRF9EQVRBX1NFVCxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy00ODItXHRcdFx0XHQodTggKikgZGF0YSwgNCAmIzQzOyBudW0gKiA4LCBOVUxMLCAwKTtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9NTM5PUNYQUNSVV9BTExfRklMRVMoSU5JVCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTQwLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjU0MTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqY3hhY3J1X2F0dHJzW10gPSB7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTQyLVx0XHUwMDI2ZGV2X2F0dHJfYWRzbF9jb25maWcuYXR0cixcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9NTcwPUFUVFJJQlVURV9HUk9VUFMoY3hhY3J1KTtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTcyLS8qIHRoZSBmb2xsb3dpbmcgdGhyZWUgZnVuY3Rpb25zIGFyZSBzdG9sZW4gZnJvbSBkcml2ZXJzL3VzYi9jb3JlL21lc3NhZ2UuYyAqL1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjU3MzpzdGF0aWMgdm9pZCBjeGFjcnVfYmxvY2tpbmdfY29tcGxldGlvbihzdHJ1Y3QgdXJiICp1cmIpXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTc0LXtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTc3LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjU3ODpzdHJ1Y3QgY3hhY3J1X3RpbWVyIHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy01NzktXHRzdHJ1Y3QgdGltZXJfbGlzdCB0aW1lcjtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTgyLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjU4MzpzdGF0aWMgdm9pZCBjeGFjcnVfdGltZW91dF9raWxsKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTU4NC17XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NTg1Olx0c3RydWN0IGN4YWNydV90aW1lciAqdGltZXIgPSB0aW1lcl9jb250YWluZXJfb2YodGltZXIsIHQsIHRpbWVyKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy01ODYtXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTU4OS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo1OTA6c3RhdGljIGludCBjeGFjcnVfc3RhcnRfd2FpdF91cmIoc3RydWN0IHVyYiAqdXJiLCBzdHJ1Y3QgY29tcGxldGlvbiAqZG9uZSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy01OTEtXHRcdFx0XHQgaW50ICphY3R1YWxfbGVuZ3RoKVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTU5Mi17XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NTkzOlx0c3RydWN0IGN4YWNydV90aW1lciB0aW1lciA9IHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy01OTQtXHRcdC51cmIgPSB1cmIsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTU5Ni1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo1OTc6XHR0aW1lcl9zZXR1cF9vbl9zdGFjayhcdTAwMjZ0aW1lci50aW1lciwgY3hhY3J1X3RpbWVvdXRfa2lsbCwgMCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTk4LVx0bW9kX3RpbWVyKFx1MDAyNnRpbWVyLnRpbWVyLCBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoQ01EX1RJTUVPVVQpKTtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNjA3LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjYwODpzdGF0aWMgaW50IGN4YWNydV9jbShzdHJ1Y3QgY3hhY3J1X2RhdGEgKmluc3RhbmNlLCBlbnVtIGN4YWNydV9jbV9yZXF1ZXN0IGNtLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTYwOS1cdFx0ICAgICB1OCAqd2RhdGEsIGludCB3c2l6ZSwgdTggKnJkYXRhLCBpbnQgcnNpemUpXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTY1Ni1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo2NTc6XHRyZXQgPSBjeGFjcnVfc3RhcnRfd2FpdF91cmIoaW5zdGFuY2UtXHUwMDNlc25kX3VyYiwgXHUwMDI2aW5zdGFuY2UtXHUwMDNlc25kX2RvbmUsIE5VTEwpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTY1OC1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNjYzLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjY2NDpcdHJldCA9IGN4YWNydV9zdGFydF93YWl0X3VyYihpbnN0YW5jZS1cdTAwM2VyY3ZfdXJiLCBcdTAwMjZpbnN0YW5jZS1cdTAwM2VyY3ZfZG9uZSwgXHUwMDI2YWN0bGVuKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy02NjUtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcwOS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3MTA6c3RhdGljIGludCBjeGFjcnVfY21fZ2V0X2FycmF5KHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UsIGVudW0gY3hhY3J1X2NtX3JlcXVlc3QgY20sXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzExLVx0XHRcdCAgICAgICB1MzIgKmRhdGEsIGludCBzaXplKVxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MjMtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzI0Olx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBjbSwgTlVMTCwgMCwgKHU4ICopIGJ1ZiwgYnVmbGVuKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MjUtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MjctXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzI4Olx0LyogbGVuIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBsZW4gJSA0ID09IDAgZ3VhcmFudGVlZCBieSBjeGFjcnVfY20oKSAqL1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyOS1cdGxlbiA9IHJldCAvIDQ7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc1OS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3NjA6c3RhdGljIGludCBjeGFjcnVfY2FyZF9zdGF0dXMoc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSlcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03NjEte1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjc2MjpcdGludCByZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0FSRF9HRVRfU1RBVFVTLCBOVUxMLCAwLCBOVUxMLCAwKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03NjMtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzY0LVx0aWYgKHJldCBcdTAwM2MgMCkge1x0XHQvKiBmaXJtd2FyZSBub3QgbG9hZGVkICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzY1Olx0XHR1c2JfZGJnKGluc3RhbmNlLVx1MDAzZXVzYmF0bSwgXCYjMzQ7Y3hhY3J1X2Fkc2xfc3RhcnQ6IENBUkRfR0VUX1NUQVRVUyByZXR1cm5lZCAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03NjYtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc3MC1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3NzE6c3RhdGljIGludCBjeGFjcnVfYXRtX3N0YXJ0KHN0cnVjdCB1c2JhdG1fZGF0YSAqdXNiYXRtX2luc3RhbmNlLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc3Mi1cdFx0c3RydWN0IGF0bV9kZXYgKmF0bV9kZXYpXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzczLXtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3NzQ6XHRzdHJ1Y3QgY3hhY3J1X2RhdGEgKmluc3RhbmNlID0gdXNiYXRtX2luc3RhbmNlLVx1MDAzZWRyaXZlcl9kYXRhO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc3NS1cdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmID0gdXNiYXRtX2luc3RhbmNlLVx1MDAzZXVzYl9pbnRmO1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03ODEtXHQvKiBSZWFkIE1BQyBhZGRyZXNzICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzgyOlx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfR0VUX01BQ19BRERSRVNTLCBOVUxMLCAwLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc4My1cdFx0XHRhdG1fZGV2LVx1MDAzZWVzaSwgc2l6ZW9mKGF0bV9kZXYtXHUwMDNlZXNpKSk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzg0LVx0aWYgKHJldCBcdTAwM2MgMCkge1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjc4NTpcdFx0YXRtX2Vycih1c2JhdG1faW5zdGFuY2UsIFwmIzM0O2N4YWNydV9hdG1fc3RhcnQ6IENBUkRfR0VUX01BQ19BRERSRVNTIHJldHVybmVkICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc4Ni1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzkwLVx0bXV0ZXhfbG9jayhcdTAwMjZpbnN0YW5jZS1cdTAwM2VhZHNsX3N0YXRlX3NlcmlhbGl6ZSk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzkxOlx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NISVBfQURTTF9MSU5FX1NUQVJULCBOVUxMLCAwLCBOVUxMLCAwKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03OTItXHRpZiAocmV0IFx1MDAzYyAwKVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjc5MzpcdFx0YXRtX2Vycih1c2JhdG1faW5zdGFuY2UsIFwmIzM0O2N4YWNydV9hdG1fc3RhcnQ6IENISVBfQURTTF9MSU5FX1NUQVJUIHJldHVybmVkICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc5NC1cbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtODE1LVx0aWYgKHN0YXJ0X3BvbGxpbmcpXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6ODE2Olx0XHRjeGFjcnVfcG9sbF9zdGF0dXMoXHUwMDI2aW5zdGFuY2UtXHUwMDNlcG9sbF93b3JrLndvcmspO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTgxNy1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy04MTktXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6ODIwOnN0YXRpYyB2b2lkIGN4YWNydV9wb2xsX3N0YXR1cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtODIxLXtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo4MjI6XHRzdHJ1Y3QgY3hhY3J1X2RhdGEgKmluc3RhbmNlID1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo4MjM6XHRcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgY3hhY3J1X2RhdGEsIHBvbGxfd29yay53b3JrKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy04MjQtXHR1MzIgYnVmW0NYSU5GX01BWF0gPSB7fTtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtODI5LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjgzMDpcdHJldCA9IGN4YWNydV9jbV9nZXRfYXJyYXkoaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0FSRF9JTkZPX0dFVCwgYnVmLCBDWElORl9NQVgpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTgzMS1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtOTM2LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjkzNzpzdGF0aWMgaW50IGN4YWNydV9mdyhzdHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldiwgZW51bSBjeGFjcnVfZndfcmVxdWVzdCBmdyxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy05MzgtXHRcdCAgICAgdTggY29kZTEsIHU4IGNvZGUyLCB1MzIgYWRkciwgY29uc3QgdTggKmRhdGEsIGludCBzaXplKVxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy05ODUtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6OTg2OnN0YXRpYyBpbnQgY3hhY3J1X2ZpbmRfZmlybXdhcmUoc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy05ODctXHRcdFx0XHRjaGFyICpwaGFzZSwgY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZndfcClcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtOTkzLVx0c3ByaW50ZihidWYsIFwmIzM0O2N4YWNydS0lcy5iaW5cJiMzNDssIHBoYXNlKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo5OTQ6XHR1c2JfZGJnKHVzYmF0bSwgXCYjMzQ7Y3hhY3J1X2ZpbmRfZmlybXdhcmU6IGxvb2tpbmcgZm9yICVzXFxuXCYjMzQ7LCBidWYpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTk5NS1cbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTAwNS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDA2OnN0YXRpYyBpbnQgY3hhY3J1X2hlYXZ5X2luaXQoc3RydWN0IHVzYmF0bV9kYXRhICp1c2JhdG1faW5zdGFuY2UsXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTAwNy1cdFx0XHQgICAgIHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50Zilcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTAwOS1cdGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncsICpicDtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDEwOlx0c3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSA9IHVzYmF0bV9pbnN0YW5jZS1cdTAwM2Vkcml2ZXJfZGF0YTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMDExLVx0c3RydWN0IHVzYmF0bV9kYXRhICp1c2JhdG0gPSBpbnN0YW5jZS1cdTAwM2V1c2JhdG07XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwMTctXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTAxODpcdHJldCA9IGN4YWNydV9maW5kX2Zpcm13YXJlKGluc3RhbmNlLCBcJiMzNDtmd1wmIzM0OywgXHUwMDI2ZncpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwMTktXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwMjQtXHRpZiAoaW5zdGFuY2UtXHUwMDNlbW9kZW1fdHlwZS1cdTAwM2Vib290X3JvbV9wYXRjaCkge1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwMjU6XHRcdHJldCA9IGN4YWNydV9maW5kX2Zpcm13YXJlKGluc3RhbmNlLCBcJiMzNDticFwmIzM0OywgXHUwMDI2YnApO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwMjYtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTAzNC1cdHZhbCA9IGNwdV90b19sZTMyKGluc3RhbmNlLVx1MDAzZW1vZGVtX3R5cGUtXHUwMDNlcGxsX2ZfY2xrKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDM1Olx0cmV0ID0gY3hhY3J1X2Z3KHVzYl9kZXYsIEZXX1dSSVRFX01FTSwgMHgyLCAweDAsIFBMTEZDTEtfQUREUiwgKHU4ICopIFx1MDAyNnZhbCwgNCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTAzNi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA0Mi1cdHZhbCA9IGNwdV90b19sZTMyKGluc3RhbmNlLVx1MDAzZW1vZGVtX3R5cGUtXHUwMDNlcGxsX2JfY2xrKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDQzOlx0cmV0ID0gY3hhY3J1X2Z3KHVzYl9kZXYsIEZXX1dSSVRFX01FTSwgMHgyLCAweDAsIFBMTEJDTEtfQUREUiwgKHU4ICopIFx1MDAyNnZhbCwgNCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA0NC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA1MC1cdHZhbCA9IGNwdV90b19sZTMyKFNEUkFNX0VOQSk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTA1MTpcdHJldCA9IGN4YWNydV9mdyh1c2JfZGV2LCBGV19XUklURV9NRU0sIDB4MiwgMHgwLCBTRFJBTUVOX0FERFIsICh1OCAqKSBcdTAwMjZ2YWwsIDQpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwNTItXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwNTgtXHR1c2JfaW5mbyh1c2JhdG0sIFwmIzM0O2xvYWRpbmcgZmlybXdhcmVcXG5cJiMzNDspO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwNTk6XHRyZXQgPSBjeGFjcnVfZncodXNiX2RldiwgRldfV1JJVEVfTUVNLCAweDIsIDB4MCwgRldfQUREUiwgZnctXHUwMDNlZGF0YSwgZnctXHUwMDNlc2l6ZSk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA2MC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA2Ny1cdFx0dXNiX2luZm8odXNiYXRtLCBcJiMzNDtsb2FkaW5nIGJvb3QgUk9NIHBhdGNoXFxuXCYjMzQ7KTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDY4Olx0XHRyZXQgPSBjeGFjcnVfZncodXNiX2RldiwgRldfV1JJVEVfTUVNLCAweDIsIDB4MCwgQlJfQUREUiwgYnAtXHUwMDNlZGF0YSwgYnAtXHUwMDNlc2l6ZSk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA2OS1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMDc1LVx0LyogU2lnbmF0dXJlICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTA3NjpcdHJldCA9IGN4YWNydV9mdyh1c2JfZGV2LCBGV19XUklURV9NRU0sIDB4MiwgMHgwLCBTSUdfQUREUiwgKHU4ICopIHNpZ25hdHVyZSwgNCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA3Ny1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA4NC1cdFx0dmFsID0gY3B1X3RvX2xlMzIoQlJfQUREUik7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTA4NTpcdFx0cmV0ID0gY3hhY3J1X2Z3KHVzYl9kZXYsIEZXX1dSSVRFX01FTSwgMHgyLCAweDAsIEJSX1NUQUNLX0FERFIsICh1OCAqKSBcdTAwMjZ2YWwsIDQpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwODYtXHR9IGVsc2Uge1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwODc6XHRcdHJldCA9IGN4YWNydV9mdyh1c2JfZGV2LCBGV19HT1RPX01FTSwgMHgwLCAweDAsIEZXX0FERFIsIE5VTEwsIDApO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwODgtXHR9XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMDEtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTEwMjpcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DQVJEX0dFVF9TVEFUVVMsIE5VTEwsIDAsIE5VTEwsIDApO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMDMtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMTItXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTExMzpcdHJldCA9IGN4YWNydV9jYXJkX3N0YXR1cyhpbnN0YW5jZSk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTExNC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMjEtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTEyMjpzdGF0aWMgaW50IGN4YWNydV9iaW5kKHN0cnVjdCB1c2JhdG1fZGF0YSAqdXNiYXRtX2luc3RhbmNlLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMjMtXHRcdCAgICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMjQte1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjExMjU6XHRzdHJ1Y3QgY3hhY3J1X2RhdGEgKmluc3RhbmNlO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMjYtXHRzdHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50Zik7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMzktXHRpbnN0YW5jZS1cdTAwM2V1c2JhdG0gPSB1c2JhdG1faW5zdGFuY2U7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTE0MDpcdGluc3RhbmNlLVx1MDAzZW1vZGVtX3R5cGUgPSAoc3RydWN0IGN4YWNydV9tb2RlbV90eXBlICopIGlkLVx1MDAzZWRyaXZlcl9pbmZvO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExNDEtXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExNTAtXHRpZiAoIWluc3RhbmNlLVx1MDAzZXJjdl9idWYpIHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTUxOlx0XHR1c2JfZGJnKHVzYmF0bV9pbnN0YW5jZSwgXCYjMzQ7Y3hhY3J1X2JpbmQ6IG5vIG1lbW9yeSBmb3IgcmN2X2J1ZlxcblwmIzM0Oyk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE1Mi1cdFx0cmV0ID0gLUVOT01FTTtcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE1Ni1cdGlmICghaW5zdGFuY2UtXHUwMDNlc25kX2J1Zikge1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjExNTc6XHRcdHVzYl9kYmcodXNiYXRtX2luc3RhbmNlLCBcJiMzNDtjeGFjcnVfYmluZDogbm8gbWVtb3J5IGZvciBzbmRfYnVmXFxuXCYjMzQ7KTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTU4LVx0XHRyZXQgPSAtRU5PTUVNO1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTcyLVx0aWYgKCFjbWRfZXApIHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTczOlx0XHR1c2JfZGJnKHVzYmF0bV9pbnN0YW5jZSwgXCYjMzQ7Y3hhY3J1X2JpbmQ6IG5vIGNvbW1hbmQgZW5kcG9pbnRcXG5cJiMzNDspO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExNzQtXHRcdHJldCA9IC1FTk9ERVY7XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExODMtXHRpZiAoIXJldCkge1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjExODQ6XHRcdHVzYl9lcnIodXNiYXRtX2luc3RhbmNlLCBcJiMzNDtjeGFjcnVfYmluZDogaW50ZXJmYWNlIGhhcyBpbmNvcnJlY3QgZW5kcG9pbnRzXFxuXCYjMzQ7KTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTg1LVx0XHRyZXQgPSAtRU5PREVWO1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTkzLVx0XHRcdGluc3RhbmNlLVx1MDAzZXJjdl9idWYsIFBBR0VfU0laRSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTk0Olx0XHRcdGN4YWNydV9ibG9ja2luZ19jb21wbGV0aW9uLCBcdTAwMjZpbnN0YW5jZS1cdTAwM2VyY3ZfZG9uZSwgMSk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE5NS1cbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE5OC1cdFx0XHRpbnN0YW5jZS1cdTAwM2VzbmRfYnVmLCBQQUdFX1NJWkUsXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTE5OTpcdFx0XHRjeGFjcnVfYmxvY2tpbmdfY29tcGxldGlvbiwgXHUwMDI2aW5zdGFuY2UtXHUwMDNlc25kX2RvbmUsIDQpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyMDAtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjAzLVx0XHRcdGluc3RhbmNlLVx1MDAzZXJjdl9idWYsIFBBR0VfU0laRSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjA0Olx0XHRcdGN4YWNydV9ibG9ja2luZ19jb21wbGV0aW9uLCBcdTAwMjZpbnN0YW5jZS1cdTAwM2VyY3ZfZG9uZSk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIwNS1cbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIwOC1cdFx0XHRpbnN0YW5jZS1cdTAwM2VzbmRfYnVmLCBQQUdFX1NJWkUsXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTIwOTpcdFx0XHRjeGFjcnVfYmxvY2tpbmdfY29tcGxldGlvbiwgXHUwMDI2aW5zdGFuY2UtXHUwMDNlc25kX2RvbmUpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyMTAtXHR9XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyMTMtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTIxNDpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmluc3RhbmNlLVx1MDAzZXBvbGxfd29yaywgY3hhY3J1X3BvbGxfc3RhdHVzKTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjE1LVxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjE3LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyMTg6XHR1c2JhdG1faW5zdGFuY2UtXHUwMDNlZmxhZ3MgPSAoY3hhY3J1X2NhcmRfc3RhdHVzKGluc3RhbmNlKSA/IDAgOiBVRFNMX1NLSVBfSEVBVllfSU5JVCk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIxOS1cbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIzMS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjMyOnN0YXRpYyB2b2lkIGN4YWNydV91bmJpbmQoc3RydWN0IHVzYmF0bV9kYXRhICp1c2JhdG1faW5zdGFuY2UsXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIzMy1cdFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIzNC17XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTIzNTpcdHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UgPSB1c2JhdG1faW5zdGFuY2UtXHUwMDNlZHJpdmVyX2RhdGE7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIzNi1cdGludCBpc19wb2xsaW5nID0gMTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjM3LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyMzg6XHR1c2JfZGJnKHVzYmF0bV9pbnN0YW5jZSwgXCYjMzQ7Y3hhY3J1X3VuYmluZCBlbnRlcmVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjM5LVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyNDAtXHRpZiAoIWluc3RhbmNlKSB7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTI0MTpcdFx0dXNiX2RiZyh1c2JhdG1faW5zdGFuY2UsIFwmIzM0O2N4YWNydV91bmJpbmQ6IE5VTEwgaW5zdGFuY2UhXFxuXCYjMzQ7KTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjQyLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyNzItXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTI3MzpzdGF0aWMgY29uc3Qgc3RydWN0IGN4YWNydV9tb2RlbV90eXBlIGN4YWNydV9jYWZlID0ge1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyNzQtXHQucGxsX2ZfY2xrID0gMHgwMmQ4NzRkZixcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTI3OC1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjc5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgY3hhY3J1X21vZGVtX3R5cGUgY3hhY3J1X2NiMDAgPSB7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTI4MC1cdC5wbGxfZl9jbGsgPSAweDUsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyODQtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTI4NTpzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgY3hhY3J1X3VzYl9pZHNbXSA9IHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjg2LVx0eyAvKiBWID0gQ29uZXhhbnRcdFx0XHRQID0gQURTTCBtb2RlbSAoRXVwaHJhdGVzIHByb2plY3QpXHQqL1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyODc6XHRcdFVTQl9ERVZJQ0UoMHgwNTcyLCAweGNhZmUpLFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFx1MDAyNmN4YWNydV9jYWZlXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTI4OC1cdH0sXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTI4OS1cdHsgLyogViA9IENvbmV4YW50XHRcdFx0UCA9IEFEU0wgbW9kZW0gKEhhc2JhbmkgcHJvamVjdClcdCovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTI5MDpcdFx0VVNCX0RFVklDRSgweDA1NzIsIDB4Y2IwMCksXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXHUwMDI2Y3hhY3J1X2NiMDBcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjkxLVx0fSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjkyLVx0eyAvKiBWID0gQ29uZXhhbnRcdFx0XHRQID0gQURTTCBtb2RlbVx0XHRcdFx0Ki9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjkzOlx0XHRVU0JfREVWSUNFKDB4MDU3MiwgMHhjYjAxKSxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcdTAwMjZjeGFjcnVfY2IwMFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyOTQtXHR9LFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyOTUtXHR7IC8qIFYgPSBDb25leGFudFx0XHRcdFAgPSBBRFNMIG1vZGVtIChXZWxsIFBUSS04MDApICovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTI5NjpcdFx0VVNCX0RFVklDRSgweDA1NzIsIDB4Y2IwMiksXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXHUwMDI2Y3hhY3J1X2NiMDBcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjk3LVx0fSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjk4LVx0eyAvKiBWID0gQ29uZXhhbnRcdFx0XHRQID0gQURTTCBtb2RlbVx0XHRcdFx0Ki9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjk5Olx0XHRVU0JfREVWSUNFKDB4MDU3MiwgMHhjYjA2KSxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcdTAwMjZjeGFjcnVfY2IwMFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMDAtXHR9LFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMDEtXHR7IC8qIFYgPSBDb25leGFudFx0XHRcdFAgPSBBRFNMIG1vZGVtIChaVEUgWlhEU0wgODUyKVx0XHQqL1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzMDI6XHRcdFVTQl9ERVZJQ0UoMHgwNTcyLCAweGNiMDcpLFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFx1MDAyNmN4YWNydV9jYjAwXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMwMy1cdH0sXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMwNC1cdHsgLyogViA9IE9saXRlY1x0XHRcdFx0UCA9IEFEU0wgbW9kZW0gdmVyc2lvbiAyXHRcdCovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTMwNTpcdFx0VVNCX0RFVklDRSgweDA4ZTMsIDB4MDEwMCksXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXHUwMDI2Y3hhY3J1X2NhZmVcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzA2LVx0fSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzA3LVx0eyAvKiBWID0gT2xpdGVjXHRcdFx0XHRQID0gQURTTCBtb2RlbSB2ZXJzaW9uIDNcdFx0Ki9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzA4Olx0XHRVU0JfREVWSUNFKDB4MDhlMywgMHgwMTAyKSxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcdTAwMjZjeGFjcnVfY2IwMFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMDktXHR9LFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMTAtXHR7IC8qIFYgPSBUcnVzdC9BbWlnbyBUZWNobm9sb2d5IENvLlx0UCA9IEFNWC1DQTg2VVx0XHRcdFx0Ki9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzExOlx0XHRVU0JfREVWSUNFKDB4MGViMCwgMHgzNDU3KSxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcdTAwMjZjeGFjcnVfY2FmZVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMTItXHR9LFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMTMtXHR7IC8qIFYgPSBab29tXHRcdFx0XHRQID0gNTUxMFx0XHRcdFx0Ki9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzE0Olx0XHRVU0JfREVWSUNFKDB4MTgwMywgMHg1NTEwKSxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcdTAwMjZjeGFjcnVfY2IwMFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMTUtXHR9LFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMTYtXHR7IC8qIFYgPSBEcmF5dGVrXHRcdFx0UCA9IFZpZ29yIDMxOFx0XHRcdFx0Ki9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzE3Olx0XHRVU0JfREVWSUNFKDB4MDY3NSwgMHgwMjAwKSxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcdTAwMjZjeGFjcnVfY2IwMFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMTgtXHR9LFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMTktXHR7IC8qIFYgPSBaeXhlbFx0XHRcdFx0UCA9IDYzMC1DMSBha2EgT01OSSBBRFNMIFVTQiAoQW5uZXggQSlcdCovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTMyMDpcdFx0VVNCX0RFVklDRSgweDA1ODYsIDB4MzMwYSksXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXHUwMDI2Y3hhY3J1X2NiMDBcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzIxLVx0fSxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzIyLVx0eyAvKiBWID0gWnl4ZWxcdFx0XHRcdFAgPSA2MzAtQzMgYWthIE9NTkkgQURTTCBVU0IgKEFubmV4IEIpXHQqL1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzMjM6XHRcdFVTQl9ERVZJQ0UoMHgwNTg2LCAweDMzMGIpLFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFx1MDAyNmN4YWNydV9jYjAwXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMyNC1cdH0sXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMyNS1cdHsgLyogViA9IEFldGhyYVx0XHRcdFx0UCA9IFN0YXJtb2RlbSBVTTEwMjBcdFx0XHQqL1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzMjY6XHRcdFVTQl9ERVZJQ0UoMHgwNjU5LCAweDAwMjApLFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFx1MDAyNmN4YWNydV9jYjAwXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMyNy1cdH0sXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMyOC1cdHsgLyogViA9IEF6dGVjaCBTeXN0ZW1zXHRcdFx0UCA9ID8gQUtBIFBpcmVsbGkgQVVBLTAxMFx0XHQqL1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzMjk6XHRcdFVTQl9ERVZJQ0UoMHgwNTA5LCAweDA4MTIpLFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFx1MDAyNmN4YWNydV9jYjAwXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMzMC1cdH0sXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMzMS1cdHsgLyogViA9IE5ldG9waWFcdFx0XHRQID0gQ2F5bWFuIDMzNDEoQW5uZXggQSkvMzM1MShBbm5leCBCKVx0Ki9cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzMyOlx0XHRVU0JfREVWSUNFKDB4MTAwZCwgMHhjYjAxKSxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcdTAwMjZjeGFjcnVfY2IwMFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMzMtXHR9LFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMzQtXHR7IC8qIFYgPSBOZXRvcGlhXHRcdFx0UCA9IENheW1hbiAzMzQyKEFubmV4IEEpLzMzNTIoQW5uZXggQilcdCovXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTMzNTpcdFx0VVNCX0RFVklDRSgweDEwMGQsIDB4MzM0MiksXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXHUwMDI2Y3hhY3J1X2NiMDBcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzM2LVx0fSxcbi0tXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMzOS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzQwOk1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBjeGFjcnVfdXNiX2lkcyk7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTM0MS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzQyOnN0YXRpYyBzdHJ1Y3QgdXNiYXRtX2RyaXZlciBjeGFjcnVfZHJpdmVyID0ge1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzNDM6XHQuZHJpdmVyX25hbWVcdD0gY3hhY3J1X2RyaXZlcl9uYW1lLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzNDQ6XHQuYmluZFx0XHQ9IGN4YWNydV9iaW5kLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzNDU6XHQuaGVhdnlfaW5pdFx0PSBjeGFjcnVfaGVhdnlfaW5pdCxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzQ2Olx0LnVuYmluZFx0XHQ9IGN4YWNydV91bmJpbmQsXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTM0NzpcdC5hdG1fc3RhcnRcdD0gY3hhY3J1X2F0bV9zdGFydCxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzQ4LVx0LmJ1bGtfaW5cdD0gQ1hBQ1JVX0VQX0RBVEEsXG4tLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzNTMtXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTM1NDpzdGF0aWMgaW50IGN4YWNydV91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTM1NS1cdFx0Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzcxLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzNzI6XHRyZXR1cm4gdXNiYXRtX3VzYl9wcm9iZShpbnRmLCBpZCwgXHUwMDI2Y3hhY3J1X2RyaXZlcik7XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTM3My19XG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTM3NC1cbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzc1OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBjeGFjcnVfdXNiX2RyaXZlciA9IHtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzc2Olx0Lm5hbWVcdFx0PSBjeGFjcnVfZHJpdmVyX25hbWUsXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTM3NzpcdC5wcm9iZVx0XHQ9IGN4YWNydV91c2JfcHJvYmUsXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTM3OC1cdC5kaXNjb25uZWN0XHQ9IHVzYmF0bV91c2JfZGlzY29ubmVjdCxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzc5Olx0LmlkX3RhYmxlXHQ9IGN4YWNydV91c2JfaWRzLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzODA6XHQuZGV2X2dyb3Vwc1x0PSBjeGFjcnVfZ3JvdXBzLFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzODEtfTtcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzgyLVxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzODM6bW9kdWxlX3VzYl9kcml2ZXIoY3hhY3J1X3VzYl9kcml2ZXIpO1xuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzODQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDg2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogODMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGN4YWNydV9jbWAgUGF0Y2ggZm9yIEZ1enppbmcgRm9jdXMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gYGN4YWNydV9jbWAuIE15IHByaW1hcnkgZ29hbCBpcyB0byBpZGVudGlmeSB0aGUgbW9zdCBlZmZlY3RpdmUgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLCBnaXZlbiB0aGF0IHRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgdGhpcyBjb21wb25lbnQuCgpGaXJzdCwgSSBpZGVudGlmaWVkIHRoZSBlbnRyeSBwb2ludHM6IGBjeGFjcnVfYmluZGAsIGBjeGFjcnVfaGVhdnlfaW5pdGAsIGBjeGFjcnVfdW5iaW5kYCwgYGN4YWNydV9hdG1fc3RhcnRgLCBgY3hhY3J1X3VzYl9wcm9iZWAsIGBhZHNsX3N0YXRlX3N0b3JlYCwgYGFkc2xfY29uZmlnX3N0b3JlYCwgYW5kIGBjeGFjcnVfcG9sbF9zdGF0dXNgLiBUaGUgbGFzdCBvbmUgaXMgaW50ZXJlc3RpbmcgYXMgaXQgb3BlcmF0ZXMgdmlhIGEgd29ya3F1ZXVlLgoKVGhlIHBhdGNoIGl0c2VsZiBtb2RpZmllcyBgY3hhY3J1X2NtYC4gTm93LCB3aGVyZSBkb2VzIGBjeGFjcnVfY21gIGdldCBjYWxsZWQ/IEl0JiMzOTtzIGNhbGxlZCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGJ5IGEgYnVuY2ggb2YgZnVuY3Rpb25zOiBgY3hhY3J1X2hlYXZ5X2luaXRgLCBgY3hhY3J1X2F0bV9zdGFydGAsIGBjeGFjcnVfY2FyZF9zdGF0dXNgICh3aGljaCBpcyBpdHNlbGYgY2FsbGVkIGJ5IGBjeGFjcnVfYmluZGAgYW5kIGBjeGFjcnVfaGVhdnlfaW5pdGApLCBgY3hhY3J1X3BvbGxfc3RhdHVzYCAodmlhIGBjeGFjcnVfY21fZ2V0X2FycmF5YCksIGBhZHNsX3N0YXRlX3N0b3JlYCwgYW5kIGBhZHNsX2NvbmZpZ19zdG9yZWAuCgpTbywgdGhlIGluaXRpYWwgbGlzdCBvZiBmb2N1cyBzeW1ib2xzIHNob3VsZCBpbmNsdWRlOiBgY3hhY3J1X2hlYXZ5X2luaXRgLCBgY3hhY3J1X2F0bV9zdGFydGAsIGBjeGFjcnVfYmluZGAsIGBhZHNsX3N0YXRlX3N0b3JlYCwgYGFkc2xfY29uZmlnX3N0b3JlYCwgYW5kIGBjeGFjcnVfcG9sbF9zdGF0dXNgLgoKTm93LCB0aGUgcXVlc3Rpb24gaXM6IGlzIGBjeGFjcnVfY21gIGlubGluZWQ/IEl0JiMzOTtzIHN0YXRpYywgd2hpY2ggaXMgYSBrZXkgY29uc2lkZXJhdGlvbi4gR2l2ZW4gaXRzIHNpemUgYW5kIG11bHRpcGxlIGNhbGwgc2l0ZXMsIGl0JiMzOTtzIGxpa2VseSAqbm90KiBpbmxpbmVkLiBIb3dldmVyLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gcHJvdmlkaW5nIGVmZmVjdGl2ZSBzeW1ib2xzIGZvciBmdXp6aW5nLiBTaW5jZSB0aGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBwcmlvcml0aXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLCBJIG5lZWQgdG8gZm9jdXMgb24gdGhvc2UgdGhhdCBjYWxsIGBjeGFjcnVfY21gIGFuZCBhcmUgdGhlbXNlbHZlcyBlbnRyeXBvaW50cywgb3IgY2FsbGJhY2tzLgoKQWgsIHllcy4gYGN4YWNydV9oZWF2eV9pbml0YCwgYGN4YWNydV9hdG1fc3RhcnRgLCBgY3hhY3J1X2JpbmRgLCBgYWRzbF9zdGF0ZV9zdG9yZWAsIGBhZHNsX2NvbmZpZ19zdG9yZWAsIGFuZCBgY3hhY3J1X3BvbGxfc3RhdHVzYCBhcmUgYWxsIHN0YXRpYy4gQnV0LCB0aGV5IGFyZSB1c2VkIGFzIGNhbGxiYWNrcyB3aXRoaW4gdGhlIGRyaXZlci4gU2ltaWxhcmx5LCBgY3hhY3J1X3VzYl9wcm9iZWAgaXMgYSBwcm9iZSBmdW5jdGlvbiwgd2hpY2gsIHdoaWxlIHN0YXRpYywgaXMgYWxzbyBhbiBlbnRyeSBwb2ludC4gVGhpcyBtYWtlcyB0aGVtIGdvb2QgY2FuZGlkYXRlcyBmb3IgZnV6emluZywgZXZlbiBpZiB0aGV5JiMzOTtyZSBzdGF0aWMsIGJlY2F1c2UgdGhleSBjYW4gc3RpbGwgYmUgcmVhY2hlZC4gU2luY2Ugc3l6a2FsbGVyIGNhbiByZWFjaCBzdGF0aWMgZnVuY3Rpb25zIGlmIHJlYWNoYWJsZSwgYnV0IGBGb2N1c1N5bWJvbHNgIHdhbnRzIGZ1bmN0aW9uIG5hbWVzLCB0aGlzIHNob3VsZCBiZSBmaW5lLgoKSG93ZXZlciwgc2luY2UgYGN4YWNydV9jbWAgaXRzZWxmIGlzIHRoZSBmb2N1cyBvZiB0aGUgcGF0Y2gsIGV2ZW4gaWYgaXQgaXMgc3RhdGljLCBpdCYjMzk7cyBzdGlsbCBhIGdvb2QgZm9jdXMgc3ltYm9sLgoKR2l2ZW4gdGhlIGluc3RydWN0aW9ucywgYW5kIHRvIGJlIHNhZmUsIEkmIzM5O20gZ29pbmcgdG8gaW5jbHVkZSBib3RoIGBjeGFjcnVfY21gIGFuZCB0aGUgY2FsbGJhY2sgZW50cnlwb2ludHM6IGBjeGFjcnVfaGVhdnlfaW5pdGAsIGBjeGFjcnVfYXRtX3N0YXJ0YCwgYGN4YWNydV9iaW5kYCwgYGFkc2xfc3RhdGVfc3RvcmVgLCBgYWRzbF9jb25maWdfc3RvcmVgLCBhbmQgYGN4YWNydV9wb2xsX3N0YXR1c2AuIFRoZXNlIHNlZW0gbGlrZSB0aGUgbW9zdCBlZmZlY3RpdmUgc3ltYm9scyBmb3IgZnV6emluZyB0aGlzIHNwZWNpZmljIHBhdGNoLgoKSSBhbHNvIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnIG9wdGlvbnMgdG8gZGV0ZXJtaW5lIGFueSBvdGhlciBkZXBlbmRlbmNpZXMuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBgVVNCX0NYQUNSVWAsIGBVU0JfQVRNYCwgYW5kIGBBVE1gIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVRNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2F0bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9hdG0vS2NvbmZpZy01LVxubmV0L2F0bS9LY29uZmlnOjY6Y29uZmlnIEFUTVxubmV0L2F0bS9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtBc3luY2hyb25vdXMgVHJhbnNmZXIgTW9kZSAoQVRNKVwmIzM0O1xuLS1cbm5ldC9hdG0vS2NvbmZpZy0yMS1cbm5ldC9hdG0vS2NvbmZpZzoyMjpjb25maWcgQVRNX0JSMjY4NFxubmV0L2F0bS9LY29uZmlnLTIzLVx0dHJpc3RhdGUgXCYjMzQ7UkZDMTQ4My8yNjg0IEJyaWRnZWQgcHJvdG9jb2xzXCYjMzQ7XG4tLVxubmV0L2F0bS9LY29uZmlnLTMwLVxubmV0L2F0bS9LY29uZmlnOjMxOmNvbmZpZyBBVE1fQlIyNjg0X0lQRklMVEVSXG5uZXQvYXRtL0tjb25maWctMzItXHRib29sIFwmIzM0O1Blci1WQyBJUCBmaWx0ZXIga2x1ZGdlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxODk4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGlzLCBjb25zaWRlcmluZyBJJiMzOTttIGRlZXAgaW4gdGhlIHdlZWRzIHdpdGggdGhpcyBzdHVmZjoKCioqQ29uZmlndXJhdGlvbiBEZWVwIERpdmU6IEFUTSBhbmQgVVNCKioKCk9rYXksIHNvIHdlJiMzOTtyZSB0YWxraW5nIEFUTSBjb25maWcgaGVyZS4gU3BlY2lmaWNhbGx5LCB0aGUgcm9vdCBvZiB0aGlzIGlzIGBBVE1gLiBUaGlzIG1lYW5zIEkgbmVlZCB0byBlbmFibGUgYSBmZXcga2V5IGNvbmZpZ3MgZm9yIHRoZSBBVE0gZnVuY3Rpb25hbGl0eSB0byBhY3R1YWxseSAqZG8qIGFueXRoaW5nLiBTZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBgVVNCX0NYQUNSVWAsIGBVU0JfQVRNYCwgYW5kIHRoZSBiYXNlIGBBVE1gIGl0c2VsZiBhcmUgdGhlIHBsYXllcnMuIE5vIHN1cnByaXNlcyB0aGVyZS4KCkJ1dCwgSSBhbHdheXMgZG91YmxlLWNoZWNrIHRoZXNlIHRoaW5ncy4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBgVVNCX0FUTWAgaXMgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuIFRoYXQgbWVhbnMgSSBuZWVkIHRvIGltbWVkaWF0ZWx5IGp1bXAgb3ZlciB0byB0aGUgYGRyaXZlcnMvdXNiL2F0bS9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGFueSBvdGhlciBvcHRpb25zIGFyb3VuZCBgVVNCX0FUTWAgYXJlIGNsZWFyLCBlc3BlY2lhbGx5IGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGludGVyYWN0aW9ucyBJIG1pZ2h0IG5vdCBiZSBpbW1lZGlhdGVseSBhd2FyZSBvZi4gR290dGEgbWFrZSBzdXJlIHdlIGhhdmUgYSBzb2xpZCwgc3RhYmxlIGJhc2UgZm9yIHRoZSBBVE0gb3ZlciBVU0IgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9BVE0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZy01LVxuZHJpdmVycy91c2IvYXRtL0tjb25maWc6NjptZW51Y29uZmlnIFVTQl9BVE1cbmRyaXZlcnMvdXNiL2F0bS9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtVU0IgRFNMIG1vZGVtIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIyNTYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIFVTQiBBVE0gYW5kIENYQUNSVSBEcml2ZXIgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gdGhlIGV4YWN0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIOKAkyBpdCYjMzk7cyBgbWVudWNvbmZpZyBVU0JfQVRNYCwgbm90IHNvbWV0aGluZyBlbHNlIEkgbWlnaHQgaGF2ZSBpbml0aWFsbHkgYXNzdW1lZC4gR29vZC4gVGhpcyBjbGFyaWZpZXMgdGhlIHNwZWNpZmljIHBhdGggd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4KCk5vdywgd2l0aCB0aGF0IGNvbmZpcm1lZCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCwgaWYgYW55LCBiZXR3ZWVuIGBVU0JfQVRNYCBhbmQgYFVTQl9DWEFDUlVgLiBBcmUgdGhleSByZWxhdGVkPyBJcyBvbmUgYSBwcmVyZXF1aXNpdGUgb3IgYSBkZXBlbmRlbmN5IG9mIHRoZSBvdGhlcj8gQXJlIHRoZXkgbXV0dWFsbHkgZXhjbHVzaXZlPyBUaGlzIG5lZWRzIGNsYXJpZmljYXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIEtjb25maWcgZmlsZXMsIG9yIHBvdGVudGlhbGx5IHRoZSBzb3VyY2UgY29kZSBpdHNlbGYsIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGV4cGxpY2l0IGRlcGVuZGVuY2llcyBkZWNsYXJlZCBvciBpbXBsaWNpdCByZWxhdGlvbnNoaXBzIHRoYXQgSSBjYW4gZGV0ZXJtaW5lLiBUaGUgZ29hbCBpcyBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoZXNlIHR3byBjb25maWd1cmF0aW9ucyBpbnRlcmFjdCB3aXRoaW4gdGhlIGJyb2FkZXIgVVNCIGFuZCBuZXR3b3JraW5nIGVjb3N5c3RlbS4gVGhpcyB3aWxsIGRpcmVjdGx5IGltcGFjdCBob3cgSSBhcHByb2FjaCBhbnkgY29uZmlndXJhdGlvbiBjaGFuZ2VzIG9yIHRyb3VibGVzaG9vdGluZyBzdGVwcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9DWEFDUlUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZz0yMD1jb25maWcgVVNCX1NQRUVEVE9VQ0hcbi0tXG5kcml2ZXJzL3VzYi9hdG0vS2NvbmZpZy0zMS1cbmRyaXZlcnMvdXNiL2F0bS9LY29uZmlnOjMyOmNvbmZpZyBVU0JfQ1hBQ1JVXG5kcml2ZXJzL3VzYi9hdG0vS2NvbmZpZy0zMy1cdHRyaXN0YXRlIFwmIzM0O0NvbmV4YW50IEFjY2Vzc1J1bm5lciBVU0Igc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjYxNQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6CgoqKkFuYWx5emluZyBGaXJtd2FyZSBMb2FkaW5nIGFuZCBJbmxpbmluZyoqCgpBbHJpZ2h0LCB0aGUgc3lzdGVtIGhhcyBjaG9zZW4gYEZXX0xPQURFUmAgYXMgdGhlIHJlc3BvbnNpYmxlIGNvbXBvbmVudCBmb3IgdGhpcyBvcGVyYXRpb24uIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgYGN4YWNydV9jbWAuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGUgYGN4YWNydV9jbWAgY29tcG9uZW50IGlzIGlubGluZWQuIElmIHNvLCB0aGF0JiMzOTtzIGdvaW5nIHRvIGFmZmVjdCB0aGUgb3ZlcmFsbCBsb2FkaW5nIHN0cmF0ZWd5IGFuZCBhbnkgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucy4gSSYjMzk7bSBmb2N1c2luZyBvbiBpdHMgc2l6ZSBiZWNhdXNlIGlubGluaW5nIGRlY2lzaW9ucyBvZnRlbiBoaW5nZSBvbiB0aGF0IGZhY3Rvci4gQSBzbWFsbGVyLCBpbmxpbmVkIG1vZHVsZSBvZmZlcnMgYWR2YW50YWdlcyBpbiB0ZXJtcyBvZiByZWR1Y2VkIG92ZXJoZWFkLCB3aGlsZSBhIGxhcmdlciBvbmUgY291bGQgYmVuZWZpdCBmcm9tIGJlaW5nIGxvYWRlZCBzZXBhcmF0ZWx5LiBJJiMzOTttIG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgdHlwaWNhbCB0aHJlc2hvbGRzIGFuZCBjb25kaXRpb25zIHRoYXQgd291bGQgdHJpZ2dlciBhbiBpbmxpbmluZyBjaG9pY2UgZm9yIHRoaXMgdHlwZSBvZiBjb21wb25lbnQuIEl04oCZcyBhbiBlc3NlbnRpYWwgcGFydCBvZiBkZXRlcm1pbmluZyBlZmZpY2llbmN5LCBmb3IgdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2MDA6XHRcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNnRpbWVyLnRpbWVyKTtcbiA2MDE6XHRcdHRpbWVyX2Rlc3Ryb3lfb25fc3RhY2soXHUwMDI2dGltZXIudGltZXIpO1xuIDYwMjpcdFxuIDYwMzpcdFx0aWYgKGFjdHVhbF9sZW5ndGgpXG4gNjA0Olx0XHRcdCphY3R1YWxfbGVuZ3RoID0gdXJiLVx1MDAzZWFjdHVhbF9sZW5ndGg7XG4gNjA1Olx0XHRyZXR1cm4gdXJiLVx1MDAzZXN0YXR1czsgLyogbXVzdCByZWFkIHN0YXR1cyBhZnRlciBjb21wbGV0aW9uICovXG4gNjA2Olx0fVxuIDYwNzpcdFxuIDYwODpcdHN0YXRpYyBpbnQgY3hhY3J1X2NtKHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UsIGVudW0gY3hhY3J1X2NtX3JlcXVlc3QgY20sXG4gNjA5Olx0XHRcdCAgICAgdTggKndkYXRhLCBpbnQgd3NpemUsIHU4ICpyZGF0YSwgaW50IHJzaXplKVxuIDYxMDpcdHtcbiA2MTE6XHRcdGludCByZXQsIGFjdGxlbjtcbiA2MTI6XHRcdGludCBvZmZiLCBvZmZkO1xuIDYxMzpcdFx0Y29uc3QgaW50IHN0cmlkZSA9IENNRF9QQUNLRVRfU0laRSAtIDQ7XG4gNjE0Olx0XHR1OCAqd2J1ZiA9IGluc3RhbmNlLVx1MDAzZXNuZF9idWY7XG4gNjE1Olx0XHR1OCAqcmJ1ZiA9IGluc3RhbmNlLVx1MDAzZXJjdl9idWY7XG4gNjE2Olx0XHRpbnQgd2J1ZmxlbiA9ICgod3NpemUgLSAxKSAvIHN0cmlkZSAmIzQzOyAxKSAqIENNRF9QQUNLRVRfU0laRTtcbiA2MTc6XHRcdGludCByYnVmbGVuID0gKChyc2l6ZSAtIDEpIC8gc3RyaWRlICYjNDM7IDEpICogQ01EX1BBQ0tFVF9TSVpFO1xuIDYxODpcdFxuIDYxOTpcdFx0aWYgKHdidWZsZW4gXHUwMDNlIFBBR0VfU0laRSB8fCByYnVmbGVuIFx1MDAzZSBQQUdFX1NJWkUpIHtcbiA2MjA6XHRcdFx0aWYgKHByaW50a19yYXRlbGltaXQoKSlcbiA2MjE6XHRcdFx0XHR1c2JfZXJyKGluc3RhbmNlLVx1MDAzZXVzYmF0bSwgXCYjMzQ7cmVxdWVzdGVkIHRyYW5zZmVyIHNpemUgdG9vIGxhcmdlICglZCwgJWQpXFxuXCYjMzQ7LFxuIDYyMjpcdFx0XHRcdFx0d2J1ZmxlbiwgcmJ1Zmxlbik7XG4gNjIzOlx0XHRcdHJldCA9IC1FTk9NRU07XG4gNjI0Olx0XHRcdGdvdG8gZXJyO1xuIDYyNTpcdFx0fVxuIDYyNjpcdFxuIDYyNzpcdFx0bXV0ZXhfbG9jayhcdTAwMjZpbnN0YW5jZS1cdTAwM2VjbV9zZXJpYWxpemUpO1xuIDYyODpcdFxuIDYyOTpcdFx0Lyogc3VibWl0IHJlYWRpbmcgdXJiIGJlZm9yZSB0aGUgd3JpdGluZyBvbmUgKi9cbiA2MzA6XHRcdGluaXRfY29tcGxldGlvbihcdTAwMjZpbnN0YW5jZS1cdTAwM2VyY3ZfZG9uZSk7XG4gNjMxOlx0XHRyZXQgPSB1c2Jfc3VibWl0X3VyYihpbnN0YW5jZS1cdTAwM2VyY3ZfdXJiLCBHRlBfS0VSTkVMKTtcbiA2MzI6XHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbiA2MzM6XHRcdFx0aWYgKHByaW50a19yYXRlbGltaXQoKSlcbiA2MzQ6XHRcdFx0XHR1c2JfZXJyKGluc3RhbmNlLVx1MDAzZXVzYmF0bSwgXCYjMzQ7c3VibWl0IG9mIHJlYWQgdXJiIGZvciBjbSAlI3ggZmFpbGVkICglZClcXG5cJiMzNDssXG4gNjM1Olx0XHRcdFx0XHRjbSwgcmV0KTtcbiA2MzY6XHRcdFx0Z290byBmYWlsO1xuIDYzNzpcdFx0fVxuIDYzODpcdFxuIDYzOTpcdFx0bWVtc2V0KHdidWYsIDAsIHdidWZsZW4pO1xuIDY0MDpcdFx0LyogaGFuZGxlIHdzaXplID09IDAgKi9cbiA2NDE6XHRcdHdidWZbMF0gPSBjbTtcbiA2NDI6XHRcdGZvciAob2ZmYiA9IG9mZmQgPSAwOyBvZmZkIFx1MDAzYyB3c2l6ZTsgb2ZmZCAmIzQzOz0gc3RyaWRlLCBvZmZiICYjNDM7PSBDTURfUEFDS0VUX1NJWkUpIHtcbiA2NDM6XHRcdFx0d2J1ZltvZmZiXSA9IGNtO1xuIDY0NDpcdFx0XHRtZW1jcHkod2J1ZiAmIzQzOyBvZmZiICYjNDM7IDQsIHdkYXRhICYjNDM7IG9mZmQsIG1pbl90KGludCwgc3RyaWRlLCB3c2l6ZSAtIG9mZmQpKTtcbiA2NDU6XHRcdH1cbiA2NDY6XHRcbiA2NDc6XHRcdGluc3RhbmNlLVx1MDAzZXNuZF91cmItXHUwMDNldHJhbnNmZXJfYnVmZmVyX2xlbmd0aCA9IHdidWZsZW47XG4gNjQ4Olx0XHRpbml0X2NvbXBsZXRpb24oXHUwMDI2aW5zdGFuY2UtXHUwMDNlc25kX2RvbmUpO1xuIDY0OTpcdFx0cmV0ID0gdXNiX3N1Ym1pdF91cmIoaW5zdGFuY2UtXHUwMDNlc25kX3VyYiwgR0ZQX0tFUk5FTCk7XG4gNjUwOlx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gNjUxOlx0XHRcdGlmIChwcmludGtfcmF0ZWxpbWl0KCkpXG4gNjUyOlx0XHRcdFx0dXNiX2VycihpbnN0YW5jZS1cdTAwM2V1c2JhdG0sIFwmIzM0O3N1Ym1pdCBvZiB3cml0ZSB1cmIgZm9yIGNtICUjeCBmYWlsZWQgKCVkKVxcblwmIzM0OyxcbiA2NTM6XHRcdFx0XHRcdGNtLCByZXQpO1xuIDY1NDpcdFx0XHRnb3RvIGZhaWw7XG4gNjU1Olx0XHR9XG4gNjU2Olx0XG4gNjU3Olx0XHRyZXQgPSBjeGFjcnVfc3RhcnRfd2FpdF91cmIoaW5zdGFuY2UtXHUwMDNlc25kX3VyYiwgXHUwMDI2aW5zdGFuY2UtXHUwMDNlc25kX2RvbmUsIE5VTEwpO1xuIDY1ODpcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIDY1OTpcdFx0XHRpZiAocHJpbnRrX3JhdGVsaW1pdCgpKVxuIDY2MDpcdFx0XHRcdHVzYl9lcnIoaW5zdGFuY2UtXHUwMDNldXNiYXRtLCBcJiMzNDtzZW5kIG9mIGNtICUjeCBmYWlsZWQgKCVkKVxcblwmIzM0OywgY20sIHJldCk7XG4gNjYxOlx0XHRcdGdvdG8gZmFpbDtcbiA2NjI6XHRcdH1cbiA2NjM6XHRcbiA2NjQ6XHRcdHJldCA9IGN4YWNydV9zdGFydF93YWl0X3VyYihpbnN0YW5jZS1cdTAwM2VyY3ZfdXJiLCBcdTAwMjZpbnN0YW5jZS1cdTAwM2VyY3ZfZG9uZSwgXHUwMDI2YWN0bGVuKTtcbiA2NjU6XHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbiA2NjY6XHRcdFx0aWYgKHByaW50a19yYXRlbGltaXQoKSlcbiA2Njc6XHRcdFx0XHR1c2JfZXJyKGluc3RhbmNlLVx1MDAzZXVzYmF0bSwgXCYjMzQ7cmVjZWl2ZSBvZiBjbSAlI3ggZmFpbGVkICglZClcXG5cJiMzNDssIGNtLCByZXQpO1xuIDY2ODpcdFx0XHRnb3RvIGZhaWw7XG4gNjY5Olx0XHR9XG4gNjcwOlx0XHRpZiAoYWN0bGVuICUgQ01EX1BBQ0tFVF9TSVpFIHx8ICFhY3RsZW4pIHtcbiA2NzE6XHRcdFx0aWYgKHByaW50a19yYXRlbGltaXQoKSlcbiA2NzI6XHRcdFx0XHR1c2JfZXJyKGluc3RhbmNlLVx1MDAzZXVzYmF0bSwgXCYjMzQ7aW52YWxpZCByZXNwb25zZSBsZW5ndGggdG8gY20gJSN4OiAlZFxcblwmIzM0OyxcbiA2NzM6XHRcdFx0XHRcdGNtLCBhY3RsZW4pO1xuIDY3NDpcdFx0XHRyZXQgPSAtRUlPO1xuIDY3NTpcdFx0XHRnb3RvIGZhaWw7XG4gNjc2Olx0XHR9XG4gNjc3Olx0XG4gNjc4Olx0XHQvKiBjaGVjayB0aGUgcmV0dXJuIHN0YXR1cyBhbmQgY29weSB0aGUgZGF0YSB0byB0aGUgb3V0cHV0IGJ1ZmZlciwgaWYgbmVlZGVkICovXG4gNjc5Olx0XHRmb3IgKG9mZmIgPSBvZmZkID0gMDsgb2ZmZCBcdTAwM2MgcnNpemUgXHUwMDI2XHUwMDI2IG9mZmIgXHUwMDNjIGFjdGxlbjsgb2ZmYiAmIzQzOz0gQ01EX1BBQ0tFVF9TSVpFKSB7XG4gNjgwOlx0XHRcdGlmIChyYnVmW29mZmJdICE9IGNtKSB7XG4gNjgxOlx0XHRcdFx0aWYgKHByaW50a19yYXRlbGltaXQoKSlcbiA2ODI6XHRcdFx0XHRcdHVzYl9lcnIoaW5zdGFuY2UtXHUwMDNldXNiYXRtLCBcJiMzNDt3cm9uZyBjbSAlI3ggaW4gcmVzcG9uc2UgdG8gY20gJSN4XFxuXCYjMzQ7LFxuIDY4MzpcdFx0XHRcdFx0XHRyYnVmW29mZmJdLCBjbSk7XG4gNjg0Olx0XHRcdFx0cmV0ID0gLUVJTztcbiA2ODU6XHRcdFx0XHRnb3RvIGZhaWw7XG4gNjg2Olx0XHRcdH1cbiA2ODc6XHRcdFx0aWYgKHJidWZbb2ZmYiAmIzQzOyAxXSAhPSBDTV9TVEFUVVNfU1VDQ0VTUykge1xuIDY4ODpcdFx0XHRcdGlmIChwcmludGtfcmF0ZWxpbWl0KCkpXG4gNjg5Olx0XHRcdFx0XHR1c2JfZXJyKGluc3RhbmNlLVx1MDAzZXVzYmF0bSwgXCYjMzQ7cmVzcG9uc2UgdG8gY20gJSN4IGZhaWxlZDogJSN4XFxuXCYjMzQ7LFxuIDY5MDpcdFx0XHRcdFx0XHRjbSwgcmJ1ZltvZmZiICYjNDM7IDFdKTtcbiA2OTE6XHRcdFx0XHRyZXQgPSAtRUlPO1xuIDY5MjpcdFx0XHRcdGdvdG8gZmFpbDtcbiA2OTM6XHRcdFx0fVxuIDY5NDpcdFx0XHRpZiAob2ZmZCBcdTAwM2U9IHJzaXplKVxuIDY5NTpcdFx0XHRcdGJyZWFrO1xuIDY5NjpcdFx0XHRtZW1jcHkocmRhdGEgJiM0Mzsgb2ZmZCwgcmJ1ZiAmIzQzOyBvZmZiICYjNDM7IDQsIG1pbl90KGludCwgc3RyaWRlLCByc2l6ZSAtIG9mZmQpKTtcbiA2OTc6XHRcdFx0b2ZmZCAmIzQzOz0gc3RyaWRlO1xuIDY5ODpcdFx0fVxuIDY5OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDU5OQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDMyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGN4YWNydV9jbSBGdW5jdGlvbiBhbmQgUmVsYXRlZCBFbnRyeSBQb2ludHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGN4YWNydV9jbWAgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBzdWJzdGFudGlhbCDigJMgcXVpdGUgbGFyZ2UsIGFuZCBpdCBjYWxscyBgY3hhY3J1X3N0YXJ0X3dhaXRfdXJiYCBtdWx0aXBsZSB0aW1lcy4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCYjMzk7cyAqZGVmaW5pdGVseSogbm90IGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBHaXZlbiB0aGUgaW5zdHJ1Y3Rpb25zLCB3aGljaCBwcmlvcml0aXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cywgb3ZlciBpbnRlcm5hbCwgaW5saW5lZCBmdW5jdGlvbnMsIEkgc2hvdWxkIGluY2x1ZGUgaXQgaW4gYEZvY3VzU3ltYm9sc2AuCgpCdXQgaG9sZCBvbiwgYGN4YWNydV9jbWAgKmlzKiBzdGF0aWMuIFRoaXMgcmFpc2VzIGEgZmxhZy4gSXQgbWlnaHQgbm90IGJlIGV4cG9ydGVkIGFzIGEgc3ltYm9sLiBIb3dldmVyLCBzaW5jZSBpdCYjMzk7cyBjb25maXJtZWQgYXMgbm90IGlubGluZWQsIFN5emthbGxlciAqY291bGQqIHBvdGVudGlhbGx5IGZ1enogaXQgaWYgdGhlIGRlYnVnIGluZm8gcHJvdmlkZXMgaXQuIFRvIGJlIG9uIHRoZSBzYWZlIHNpZGUsIGl0IHNlZW1zIGJlc3QgdG8gaW5jbHVkZSB0aGUgaW50ZW5kZWQgZW50cnlwb2ludHMgb2YgdGhlIHN5c3RlbS4KClRob3NlIGVudHJ5IHBvaW50cyBsb29rIGxpa2UgdGhleSBhcmU6CiogICBgY3hhY3J1X2hlYXZ5X2luaXRgCiogICBgY3hhY3J1X2F0bV9zdGFydGAKKiAgIGBjeGFjcnVfYmluZGAKKiAgIGBhZHNsX3N0YXRlX3N0b3JlYAoqICAgYGFkc2xfY29uZmlnX3N0b3JlYAoqICAgYGN4YWNydV9wb2xsX3N0YXR1c2AKCk5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIGFib3V0IHRoYXQgaW5saW5pbmcgZm9yIGBjeGFjcnVfY21gLiBJIG1lYW4sIGl0JiMzOTtzIGFib3V0IDEwMCBsaW5lcyBsb25nLiBObyB3YXkgdGhhdCYjMzk7cyBiZWVuIGlubGluZWQuIFllcCwgSSYjMzk7bSBjb25maWRlbnQuIEkmIzM5O2xsIGluY2x1ZGUgYGN4YWNydV9jbWAgYWxvbmcgd2l0aCBhbGwgdGhvc2UgZXhwbGljaXQgZW50cnkgcG9pbnRzLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgYWxzbyBkb3VibGUgY2hlY2sgZm9yIGFueSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE9rYXksIGxldCYjMzk7cyBzZWUsIGBVU0JfQ1hBQ1JVYCwgYFVTQl9BVE1gLCBhbmQgYEFUTWDigKYgV2FpdCwgYEFUTWAgbG9va3MgbGlrZSB0aGUgcGFyZW50IGNvbmZpZyBvZiBgVVNCX0FUTWAuIEkmIzM5O2QgYmV0dGVyIGNoZWNrIGBuZXQvYXRtL0tjb25maWdgIHRvIGNvbmZpcm0gdGhhdCByZWxhdGlvbnNoaXAgYW5kIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGltcG9ydGFudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFUTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9hdG0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYXRtL0tjb25maWctNS1cbm5ldC9hdG0vS2NvbmZpZzo2OmNvbmZpZyBBVE1cbm5ldC9hdG0vS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7QXN5bmNocm9ub3VzIFRyYW5zZmVyIE1vZGUgKEFUTSlcJiMzNDtcbi0tXG5uZXQvYXRtL0tjb25maWctMjEtXG5uZXQvYXRtL0tjb25maWc6MjI6Y29uZmlnIEFUTV9CUjI2ODRcbm5ldC9hdG0vS2NvbmZpZy0yMy1cdHRyaXN0YXRlIFwmIzM0O1JGQzE0ODMvMjY4NCBCcmlkZ2VkIHByb3RvY29sc1wmIzM0O1xuLS1cbm5ldC9hdG0vS2NvbmZpZy0zMC1cbm5ldC9hdG0vS2NvbmZpZzozMTpjb25maWcgQVRNX0JSMjY4NF9JUEZJTFRFUlxubmV0L2F0bS9LY29uZmlnLTMyLVx0Ym9vbCBcJiMzNDtQZXItVkMgSVAgZmlsdGVyIGtsdWRnZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTU1MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyBVU0IgQVRNIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgSSYjMzk7bSBhdCBhIHBvaW50IHdoZXJlIEkmIzM5O20gY29uc2lkZXJpbmcgdGhlIHBvdGVudGlhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBVU0IgQVRNIHN1cHBvcnQuIE15IHByaW1hcnkgY29uY2VybiBpcyBlbnN1cmluZyBJJiMzOTt2ZSB0aG9yb3VnaGx5IGV4aGF1c3RlZCBhbGwgcmVsZXZhbnQgc2V0dGluZ3MuIEl0JiMzOTtzIGNydWNpYWwgdG8gbGVhdmUgbm8gc3RvbmUgdW50dXJuZWQgaW4gdGhpcyBwaGFzZS4KClRoZXJlZm9yZSwgSSYjMzk7bSBoZWFkaW5nIGJhY2sgdG8gYGRyaXZlcnMvdXNiL2F0bS9LY29uZmlnYC4gSSBuZWVkIHRvIHJlLWV4YW1pbmUgdGhhdCBmaWxlIHdpdGggZnJlc2ggZXllcywgZG91YmxlLWNoZWNraW5nIGZvciBhbnkgb3Zlcmxvb2tlZCBjb25maWd1cmF0aW9uIG51YW5jZXMuIEkgd2FudCB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBwb3NzaWJpbGl0aWVzLCBkZXBlbmRlbmNpZXMsIG9yIHN1YnRsZXRpZXMgdGhhdCBtaWdodCBpbXBhY3QgdGhlIGZpbmFsIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gYmUgY2VydGFpbiBJIGhhdmUgY29uc2lkZXJlZCBhbGwgcG9zc2liaWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9BVE0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZy01LVxuZHJpdmVycy91c2IvYXRtL0tjb25maWc6NjptZW51Y29uZmlnIFVTQl9BVE1cbmRyaXZlcnMvdXNiL2F0bS9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtVU0IgRFNMIG1vZGVtIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU4MjcKCQkJCQkJCW91dHB1dDogMTYxCgkJCQkJCQl0aG91Z2h0czogMzc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFVTQiBBVE0gRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYFVTQl9BVE1gIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCB3aGljaCwgYXMgSSBzZWUgaXQsIHJlcXVpcmVzIGEgZmV3IGtleSBlbGVtZW50cy4gRmlyc3QsIEkgbmVlZCB0byBlbmFibGUgYFVTQl9DWEFDUlVgLCBgVVNCX0FUTWAsIGFuZCBgQVRNYCBpbiBgRW5hYmxlQ29uZmlnc2AuIFRoYXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkLCBpdCYjMzk7cyBhIG1lbnVjb25maWcgaXNzdWUuCgpOb3csIGxvb2tpbmcgYXQgdGhlIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgYGN4YWNydV9jbWAgZnVuY3Rpb24uLi4gYWgsIHllcywgSSBzZWUgdGhlIGZpeC4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIG1pc3NpbmcgYSBjYWxsIHRvIGB1c2Jfa2lsbF91cmJgIGluIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoLiBUaGlzIG1lYW5zIHRoYXQgaWYgYGN4YWNydV9jbWAgZmFpbGVkLCB0aGUgYHJjdl91cmJgIHdvdWxkbiYjMzk7dCBiZSBwcm9wZXJseSBjbGVhbmVkIHVwLCB3aGljaCBjb3VsZCBsZWFkIHRvIGEgdXNlLWFmdGVyLWZyZWUgc2l0dWF0aW9uIG9yLCBtb3JlIGNvbW1vbmx5LCBhIG1lbW9yeSBsZWFrLiBUaGlzIGlzIGEgY3JpdGljYWwgZnVuY3Rpb25hbCBjaGFuZ2UuICBJdCBkaXJlY3RseSBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4KCkdpdmVuIHRoYXQgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBBVE0gZHJpdmVyIHRoYXQgaXMgYWNjZXNzaWJsZSB0aHJvdWdoIGRldmljZSBlbXVsYXRpb24sIEkmIzM5O20gbWFya2luZyB0aGlzIGFzIGBXb3J0aEZ1enppbmc6IHRydWVgLiAgV2UgbmVlZCB0byB0ZXN0IHRoaXMgdGhvcm91Z2hseS4gSSYjMzk7bSBmb2N1c2luZyBteSBhdHRlbnRpb24gb24gZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBsaWtlIGBjeGFjcnVfY21gLCBgY3hhY3J1X2hlYXZ5X2luaXRgLCBgY3hhY3J1X2F0bV9zdGFydGAsIGBjeGFjcnVfYmluZGAsIGBhZHNsX3N0YXRlX3N0b3JlYCwgYW5kIGBhZHNsX2NvbmZpZ19zdG9yZWAsIGFuZCBgY3hhY3J1X3BvbGxfc3RhdHVzYCB0byBjcmVhdGUgZnV6emluZyB0YXJnZXRzLiBUaGlzIGhlbHBzIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgcmVncmVzc2lvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXRjaC4KCkVzc2VudGlhbGx5LCB0aGUgcGF0Y2ggcHJvdmlkZXMgYSBmaXggYnkgZW5zdXJpbmcgYHJjdl91cmJgIGlzIHByb3Blcmx5IGNsZWFuZWQgdXAgb24gZmFpbHVyZS4gVGhhdCYjMzk7cyBhIGdvb2QgdGhpbmcsIGFuZCB3ZSBuZWVkIHRvIHZlcmlmeSBpdHMgY29ycmVjdG5lc3MgYW5kIGVuc3VyZSBpdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBwcm9ibGVtcy4gIEkmIzM5O20gY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfQ1hBQ1JVJiMzNDssCiAgICAmIzM0O1VTQl9BVE0mIzM0OywKICAgICYjMzQ7QVRNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3hhY3J1X2NtJiMzNDssCiAgICAmIzM0O2N4YWNydV9oZWF2eV9pbml0JiMzNDssCiAgICAmIzM0O2N4YWNydV9hdG1fc3RhcnQmIzM0OywKICAgICYjMzQ7Y3hhY3J1X2JpbmQmIzM0OywKICAgICYjMzQ7YWRzbF9zdGF0ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDthZHNsX2NvbmZpZ19zdG9yZSYjMzQ7LAogICAgJiMzNDtjeGFjcnVfcG9sbF9zdGF0dXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHVzYl9raWxsX3VyYiBjYWxsIGluIHRoZSBlcnJvciBwYXRoIG9mIGN4YWNydV9jbSB0byBwcm9wZXJseSBjbGVhbiB1cCB0aGUgcmVjZWl2ZSBVUkIgb24gZmFpbHVyZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIEFUTSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGRldmljZSBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9DWEFDUlUmIzM0OywKICAgICYjMzQ7VVNCX0FUTSYjMzQ7LAogICAgJiMzNDtBVE0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjeGFjcnVfY20mIzM0OywKICAgICYjMzQ7Y3hhY3J1X2hlYXZ5X2luaXQmIzM0OywKICAgICYjMzQ7Y3hhY3J1X2F0bV9zdGFydCYjMzQ7LAogICAgJiMzNDtjeGFjcnVfYmluZCYjMzQ7LAogICAgJiMzNDthZHNsX3N0YXRlX3N0b3JlJiMzNDssCiAgICAmIzM0O2Fkc2xfY29uZmlnX3N0b3JlJiMzNDssCiAgICAmIzM0O2N4YWNydV9wb2xsX3N0YXR1cyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgdXNiX2tpbGxfdXJiIGNhbGwgaW4gdGhlIGVycm9yIHBhdGggb2YgY3hhY3J1X2NtIHRvIHByb3Blcmx5IGNsZWFuIHVwIHRoZSByZWNlaXZlIFVSQiBvbiBmYWlsdXJlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBVU0IgQVRNIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBVU0IgZGV2aWNlIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIxOjMwLjQ2Mjc3MDA3NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NzQ5OTAxODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9DWEFDUlVcIixcbiAgICBcIlVTQl9BVE1cIixcbiAgICBcIkFUTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN4YWNydV9jbVwiLFxuICAgIFwiY3hhY3J1X2hlYXZ5X2luaXRcIixcbiAgICBcImN4YWNydV9hdG1fc3RhcnRcIixcbiAgICBcImN4YWNydV9iaW5kXCIsXG4gICAgXCJhZHNsX3N0YXRlX3N0b3JlXCIsXG4gICAgXCJhZHNsX2NvbmZpZ19zdG9yZVwiLFxuICAgIFwiY3hhY3J1X3BvbGxfc3RhdHVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHVzYl9raWxsX3VyYiBjYWxsIGluIHRoZSBlcnJvciBwYXRoIG9mIGN4YWNydV9jbSB0byBwcm9wZXJseSBjbGVhbiB1cCB0aGUgcmVjZWl2ZSBVUkIgb24gZmFpbHVyZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIEFUTSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGRldmljZSBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIxOjMwLjQ2Mjc3Nzk0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA3OTYwMjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjA1MmY3M2Y2YTU5OWE1MWJhZTVmMzI5ZjBiNzRlYmU3YjY5MGZkNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzMSAwODoyMToyOSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMgYi9kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmNcXG5pbmRleCBmMTkwMGM1NjdiYTQxLi40MjlhYzIwYTg5OTlmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL2F0bS9jeGFjcnUuY1xcbisrKyBiL2RyaXZlcnMvdXNiL2F0bS9jeGFjcnUuY1xcbkBAIC03MDAsNiArNzAwLDggQEAgc3RhdGljIGludCBjeGFjcnVfY20oc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSwgZW51bSBjeGFjcnVfY21fcmVxdWVzdCBjbSxcXG4gXFx0cmV0ID0gb2ZmZDtcXG4gXFx0dXNiX2RiZyhpbnN0YW5jZS1cXHUwMDNldXNiYXRtLCBcXFwiY20gJSN4XFxcXG5cXFwiLCBjbSk7XFxuIGZhaWw6XFxuK1xcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHR1c2Jfa2lsbF91cmIoaW5zdGFuY2UtXFx1MDAzZXJjdl91cmIpO1xcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmluc3RhbmNlLVxcdTAwM2VjbV9zZXJpYWxpemUpO1xcbiBlcnI6XFxuIFxcdHJldHVybiByZXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIxOjMwLjc3MTM4MjE1N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc5NDQxMjgxMDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9DWEFDUlVcIixcbiAgICBcIlVTQl9BVE1cIixcbiAgICBcIkFUTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN4YWNydV9jbVwiLFxuICAgIFwiY3hhY3J1X2hlYXZ5X2luaXRcIixcbiAgICBcImN4YWNydV9hdG1fc3RhcnRcIixcbiAgICBcImN4YWNydV9iaW5kXCIsXG4gICAgXCJhZHNsX3N0YXRlX3N0b3JlXCIsXG4gICAgXCJhZHNsX2NvbmZpZ19zdG9yZVwiLFxuICAgIFwiY3hhY3J1X3BvbGxfc3RhdHVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHVzYl9raWxsX3VyYiBjYWxsIGluIHRoZSBlcnJvciBwYXRoIG9mIGN4YWNydV9jbSB0byBwcm9wZXJseSBjbGVhbiB1cCB0aGUgcmVjZWl2ZSBVUkIgb24gZmFpbHVyZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIEFUTSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGRldmljZSBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGYwNTJmNzNmNmE1OTlhNTFiYWU1ZjMyOWYwYjc0ZWJlN2I2OTBmZDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAwODoyMToyOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYyBiL2RyaXZlcnMvdXNiL2F0bS9jeGFjcnUuY1xuaW5kZXggZjE5MDBjNTY3YmE0MS4uNDI5YWMyMGE4OTk5ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2F0bS9jeGFjcnUuY1xuKysrIGIvZHJpdmVycy91c2IvYXRtL2N4YWNydS5jXG5AQCAtNzAwLDYgKzcwMCw4IEBAIHN0YXRpYyBpbnQgY3hhY3J1X2NtKHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UsIGVudW0gY3hhY3J1X2NtX3JlcXVlc3QgY20sXG4gXHRyZXQgPSBvZmZkO1xuIFx0dXNiX2RiZyhpbnN0YW5jZS1cdTAwM2V1c2JhdG0sIFwiY20gJSN4XFxuXCIsIGNtKTtcbiBmYWlsOlxuK1x0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0dXNiX2tpbGxfdXJiKGluc3RhbmNlLVx1MDAzZXJjdl91cmIpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmluc3RhbmNlLVx1MDAzZWNtX3NlcmlhbGl6ZSk7XG4gZXJyOlxuIFx0cmV0dXJuIHJldDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIxOjMwLjc3MTM4MzM4N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyOTA0NTc0OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVVNCIEFUTSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyBiZWVuIGFwcGxpZWQgdG8gYGRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuY2AuIFRoZSBjb3JlIG9mIHRoaXMgY2hhbmdlIHNlZW1zIHRvIGJlIHRoZSBpbmNsdXNpb24gb2YgYHVzYl9raWxsX3VyYihpbnN0YW5jZS1cdTAwM2VyY3ZfdXJiKTtgIHdpdGhpbiB0aGUgYGZhaWw6YCBwYXRoIG9mIHRoZSBgY3hhY3J1X2NtKClgIGZ1bmN0aW9uLiBUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiwgYW5kIHRoYXQncyBzb21ldGhpbmcgSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQuXG5cbk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBzY3J1dGluaXplIHRoZSBgY3hhY3J1X2NtYCBmdW5jdGlvbiBpdHNlbGYuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlLCBpdHMgbG9naWMsIGFuZCBtb3N0IGltcG9ydGFudGx5LCB3aHkgdGhpcyBuZXcgbGluZSBpcyBiZWluZyBhZGRlZCBpbiB0aGUgZmFpbHVyZSBjYXNlLiBXaGF0IGRvZXMgYGluc3RhbmNlLVx1MDAzZXJjdl91cmJgIHJlcHJlc2VudD8gV2hhdCBzdGF0ZSBpcyB0aGUgc3lzdGVtIGluIHdoZW4gYHJldCBcdTAwM2MgMGAgb2NjdXJzPyBXaGF0J3MgdGhlIGludGVuZGVkIGVmZmVjdCBvZiBraWxsaW5nIHRoYXQgdXJiPyBQcmV2ZW50aW5nIGEgcmVzb3VyY2UgbGVhaz8gSGFuZGxpbmcgYW4gZXJyb3IgY29uZGl0aW9uP1xuXG5CZXlvbmQgYGN4YWNydV9jbWAsIEkgYWxzbyBuZWVkIHRvIG1hcCBvdXQgd2hvIHRoZSBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24gYXJlLiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGFuZCB3aXRoaW4gd2hhdCBjb250ZXh0cywgdG8gYXNzZXNzIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UgaW4gdGhlIGxhcmdlciBwaWN0dXJlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIHBhcnRpY3VsYXIgYWN0aW9uIHJlbGF0ZXMgdG8gdGhlIG92ZXJhbGwgVVNCIEFUTSBkcml2ZXIsIGFuZCBzcGVjaWZpY2FsbHksIHRoZSBDWEFDUlUgZnVuY3Rpb25hbGl0eS4gVGhpcyBwYXRjaCBjb3VsZCBhZGRyZXNzIGEgcmFjZSBjb25kaXRpb24sIGltcHJvdmUgZXJyb3IgaGFuZGxpbmcsIG9yIGVuaGFuY2UgcmVzb3VyY2UgbWFuYWdlbWVudC4gTXkgam9iIG5vdyBpcyB0byBkZXRlcm1pbmUgKmV4YWN0bHkqIHdoYXQgdGhpcyBwYXRjaCBpcyBkb2luZyBhbmQgd2hhdCBpdHMgaW1wbGljYXRpb25zIGFyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1NSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MjE6MzUuMDYxODQzODc0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNDI2OTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImN4YWNydV9jbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTU5PWVudW0gY3hhY3J1X2Z3X3JlcXVlc3Qge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcwLSAqIGZpcm13YXJlIGlzIGxvYWRlZCAgKi9cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzE6ZW51bSBjeGFjcnVfY21fcmVxdWVzdCB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyLVxcdENNX1JFUVVFU1RfVU5ERUZJTkVEID0gMHg4MCxcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMDgtICovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwOTplbnVtIGN4YWNydV9jbV9mbGFzaCB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMC1cXHRDTV9GTEFTSF9SRUFEID0gMHhhMSxcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTQtLyogcmVwbHkgY29kZXMgdG8gdGhlIGNvbW1hbmRzIGFib3ZlICovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjExNTplbnVtIGN4YWNydV9jbV9zdGF0dXMge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTYtXFx0Q01fU1RBVFVTX1VOREVGSU5FRCxcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz0xNzA9c3RydWN0IGN4YWNydV9kYXRhIHtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xOTItXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjE5MzpzdGF0aWMgaW50IGN4YWNydV9jbShzdHJ1Y3QgY3hhY3J1X2RhdGEgKmluc3RhbmNlLCBlbnVtIGN4YWNydV9jbV9yZXF1ZXN0IGNtLFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xOTQtXFx0dTggKndkYXRhLCBpbnQgd3NpemUsIHU4ICpyZGF0YSwgaW50IHJzaXplKTtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz0zMzI9c3RhdGljIHNzaXplX3QgYWRzbF9zdGF0ZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzU2LVxcdGlmICghc3RyY21wKHN0cl9jbWQsIFxcXCJzdG9wXFxcIikgfHwgIXN0cmNtcChzdHJfY21kLCBcXFwicmVzdGFydFxcXCIpKSB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjM1NzpcXHRcXHRyZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0hJUF9BRFNMX0xJTkVfU1RPUCwgTlVMTCwgMCwgTlVMTCwgMCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTM1OC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTM3Ni1cXHRpZiAoIXN0cmNtcChzdHJfY21kLCBcXFwic3RhcnRcXFwiKSB8fCAhc3RyY21wKHN0cl9jbWQsIFxcXCJyZXN0YXJ0XFxcIikpIHtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6Mzc3OlxcdFxcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVEFSVCwgTlVMTCwgMCwgTlVMTCwgMCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTM3OC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTQzNT1zdGF0aWMgc3NpemVfdCBhZHNsX2NvbmZpZ19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNDgwLVxcdFxcdFxcdGRhdGFbMF0gPSBjcHVfdG9fbGUzMihudW0pO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo0ODE6XFx0XFx0XFx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfREFUQV9TRVQsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTQ4Mi1cXHRcXHRcXHRcXHQodTggKikgZGF0YSwgNCArIG51bSAqIDgsIE5VTEwsIDApO1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTU5MD1zdGF0aWMgaW50IGN4YWNydV9zdGFydF93YWl0X3VyYihzdHJ1Y3QgdXJiICp1cmIsIHN0cnVjdCBjb21wbGV0aW9uICpkb25lLFxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTYwNy1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NjA4OnN0YXRpYyBpbnQgY3hhY3J1X2NtKHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UsIGVudW0gY3hhY3J1X2NtX3JlcXVlc3QgY20sXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTYwOS1cXHRcXHQgICAgIHU4ICp3ZGF0YSwgaW50IHdzaXplLCB1OCAqcmRhdGEsIGludCByc2l6ZSlcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MDktXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjcxMDpzdGF0aWMgaW50IGN4YWNydV9jbV9nZXRfYXJyYXkoc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSwgZW51bSBjeGFjcnVfY21fcmVxdWVzdCBjbSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzExLVxcdFxcdFxcdCAgICAgICB1MzIgKmRhdGEsIGludCBzaXplKVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyMy1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzI0OlxcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgY20sIE5VTEwsIDAsICh1OCAqKSBidWYsIGJ1Zmxlbik7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyNS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MjctXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjcyODpcXHQvKiBsZW4gXFx1MDAzZSAwIFxcdTAwMjZcXHUwMDI2IGxlbiAlIDQgPT0gMCBndWFyYW50ZWVkIGJ5IGN4YWNydV9jbSgpICovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyOS1cXHRsZW4gPSByZXQgLyA0O1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTc2MD1zdGF0aWMgaW50IGN4YWNydV9jYXJkX3N0YXR1cyhzdHJ1Y3QgY3hhY3J1X2RhdGEgKmluc3RhbmNlKVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03NjEte1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3NjI6XFx0aW50IHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DQVJEX0dFVF9TVEFUVVMsIE5VTEwsIDAsIE5VTEwsIDApO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03NjMtXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9NzcxPXN0YXRpYyBpbnQgY3hhY3J1X2F0bV9zdGFydChzdHJ1Y3QgdXNiYXRtX2RhdGEgKnVzYmF0bV9pbnN0YW5jZSxcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03ODEtXFx0LyogUmVhZCBNQUMgYWRkcmVzcyAqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3ODI6XFx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfR0VUX01BQ19BRERSRVNTLCBOVUxMLCAwLFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03ODMtXFx0XFx0XFx0YXRtX2Rldi1cXHUwMDNlZXNpLCBzaXplb2YoYXRtX2Rldi1cXHUwMDNlZXNpKSk7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzkwLVxcdG11dGV4X2xvY2soXFx1MDAyNmluc3RhbmNlLVxcdTAwM2VhZHNsX3N0YXRlX3NlcmlhbGl6ZSk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjc5MTpcXHRyZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0hJUF9BRFNMX0xJTkVfU1RBUlQsIE5VTEwsIDAsIE5VTEwsIDApO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03OTItXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9ODIwPXN0YXRpYyB2b2lkIGN4YWNydV9wb2xsX3N0YXR1cyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtODI5LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo4MzA6XFx0cmV0ID0gY3hhY3J1X2NtX2dldF9hcnJheShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DQVJEX0lORk9fR0VULCBidWYsIENYSU5GX01BWCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTgzMS1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTEwMDY9c3RhdGljIGludCBjeGFjcnVfaGVhdnlfaW5pdChzdHJ1Y3QgdXNiYXRtX2RhdGEgKnVzYmF0bV9pbnN0YW5jZSxcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTAxLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTAyOlxcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DQVJEX0dFVF9TVEFUVVMsIE5VTEwsIDAsIE5VTEwsIDApO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTAzLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIxOjM1LjEwMzI3NzgyM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTI5OTMwOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmU6XG5cbioqRGVlcCBEaXZlIGludG8gdGhlIFVTQiBBVE0gRHJpdmVyKipcblxuQWxyaWdodCwgc28gdGhlIGBjeGFjcnVfY21gIG1vZHVsZS4uLiB0aGF0J3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBVU0IgQVRNIGRyaXZlciBsaWVzLiBJdCdzIGNydWNpYWwgYmVjYXVzZSBpdCdzIHRoZSBmb3VuZGF0aW9uIGZvciBzZXZlcmFsIGtleSBmdW5jdGlvbnMuIEkgc2VlIGl0IGJlaW5nIGNhbGxlZCBmcm9tIGBjeGFjcnVfY21fZ2V0X2FycmF5YCwgYGN4YWNydV9jYXJkX3N0YXR1c2AsIGBjeGFjcnVfYXRtX3N0YXJ0YCwgYGN4YWNydV9oZWF2eV9pbml0YCwgYW5kIGV2ZW4gdGhlIHN0b3JhZ2UgZnVuY3Rpb25zIGZvciBEU0wgc3RhdGUgYW5kIGNvbmZpZ3VyYXRpb24sIGBhZHNsX3N0YXRlX3N0b3JlYCwgYW5kIGBhZHNsX2NvbmZpZ19zdG9yZWAuIFRoYXQgZ2l2ZXMgbWUgYSBkZWNlbnQgb3ZlcnZpZXcgb2YgaXRzIGltcG9ydGFuY2UuIEl0J3MgZXNzZW50aWFsbHkgdGhlIGJhY2tib25lIG9mIGFsbCBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgQVRNIGhhcmR3YXJlIG92ZXIgdGhlIFVTQiBidXMuXG5cbkdpdmVuIHRoZSBjZW50cmFsaXR5IG9mIHRoaXMgbW9kdWxlLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciBgY3hhY3J1YC4gSXQncyB0aGUgYmVzdCB3YXkgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaXMgY29uZmlndXJlZCwgaXRzIGRlcGVuZGVuY2llcywgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvcHRpb25zLiBLbm93aW5nIHRoZSBLY29uZmlnIG9wdGlvbnMgd2lsbCBnaXZlIG1lIHRoZSBpbmZvcm1hdGlvbiBJIG5lZWQgdG8gY29uZmlybSBob3cgdGhlIGRyaXZlciBpcyBjb25maWd1cmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzU3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MjE6MzkuMjk2MjczMjMyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxOTYzMTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImN4YWNydVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZz0zMj1jb25maWcgVVNCX0NYQUNSVVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL0tjb25maWctNDEtXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG5kcml2ZXJzL3VzYi9hdG0vS2NvbmZpZzo0MjpcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBjeGFjcnUuXFxuZHJpdmVycy91c2IvYXRtL0tjb25maWctNDMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIxOjM5LjMzODI1NDM1MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNDc5MzM5NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIHN1bW1hcml6ZWQsIGFzc3VtaW5nIEknbSBhbHJlYWR5IHByZXR0eSBmYW1pbGlhciB3aXRoIEtjb25maWc6XG5cbioqRGVlcCBEaXZlIGludG8gYFVTQl9DWEFDUlVgIEtjb25maWcqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBtYWtlIGFueSBhc3N1bXB0aW9ucyBvciBqdW1wIHRvIGNvbmNsdXNpb25zLCBJIG5lZWQgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHB1bGwgdXAgdGhlIGNvbXBsZXRlIEtjb25maWcgZW50cnkgZm9yIGBVU0JfQ1hBQ1JVYC4gVW5kZXJzdGFuZGluZyB0aGUgZnVsbCBjb250ZXh0LCBpbmNsdWRpbmcgaXRzIGRlcGVuZGVuY2llcywgZGVmYXVsdCBzZXR0aW5ncywgaGVscCB0ZXh0LCBhbmQgYW55IGRlZmluZWQgdHJpc3RhdGUgdmFsdWVzLCBpcyBjcml0aWNhbC4gSSBjYW4ndCByZWFsbHkgbWFrZSBhbiBpbmZvcm1lZCBkZWNpc2lvbiBvciBjb250cmlidXRlIG1lYW5pbmdmdWxseSB3aXRob3V0IHRoYXQgZm91bmRhdGlvbmFsIGtub3dsZWRnZS4gS25vd2luZyB0aGUgZnVsbCBlbnRyeSBhbGxvd3MgbWUgdG86XG5cbiogICAqKkRldGVybWluZSBpdHMgcHVycG9zZToqKiBXaGF0IGlzIHRoaXMgYFVTQl9DWEFDUlVgIG9wdGlvbiBpbnRlbmRlZCB0byBkbz8gV2hhdCBkZXZpY2Ugb3IgZnVuY3Rpb24gZG9lcyBpdCBjb250cm9sP1xuKiAgICoqVW5kZXJzdGFuZCBkZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBLY29uZmlnIHN5bWJvbHMgZG9lcyBpdCByZWx5IG9uPyBXaGljaCBvcHRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBiZWZvcmUgdGhpcyBvbmUgYmVjb21lcyBhdmFpbGFibGU/IEFyZSB0aGVyZSBhbnkgY29uZmxpY3RzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj9cbiogICAqKkV2YWx1YXRlIERlZmF1bHQgVmFsdWVzOioqIEFyZSB0aGUgZGVmYXVsdCBzZXR0aW5ncyBhcHByb3ByaWF0ZSBmb3IgdGhlIHRhcmdldCBjb25maWd1cmF0aW9uPyBEbyB0aGV5IGFsaWduIHdpdGggdGhlIGdlbmVyYWwgZGVzaWduIHBoaWxvc29waHkgb2YgdGhlIHByb2plY3Q/XG4qICAgKipHcmFzcCB0aGUgSGVscCBUZXh0OioqIFdoYXQgYXJlIHRoZSBpbnRlbmRlZCB1c2UgY2FzZXMgZm9yIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24/IERvZXMgdGhlIGhlbHAgdGV4dCBvZmZlciBlbm91Z2ggY2xhcml0eSBvciBkb2VzIGl0IG5lZWQgdG8gYmUgdXBkYXRlZD9cbiogICAqKkFzc2VzcyB0cmlzdGF0ZSBsb2dpYzoqKiBJIG11c3QgdW5kZXJzdGFuZCBhbGwgdGhyZWUgc3RhdGVzICh5LCBuLCBtKSBhbmQgaG93IHRoYXQgYWZmZWN0cyBmdW5jdGlvbmFsaXR5LCBlc3BlY2lhbGx5IGlmIHRoaXMgaXMgYSBkcml2ZXIgb3IgaGFyZHdhcmUgc3VwcG9ydCBvcHRpb24uXG5cbkVzc2VudGlhbGx5LCBJIG5lZWQgdGhlIHJhdyBkYXRhLiBUaGlzIEtjb25maWcgZW50cnkgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBwb3RlbnRpYWwgbW9kaWZpY2F0aW9ucywgb3IgZGlzY3Vzc2lvbnMuIE5vIHNob3J0Y3V0cyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODExLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MjE6NDMuMzg2MTkwOTYzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNzU4MTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfQ1hBQ1JVXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2F0bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2F0bS9LY29uZmlnPTIwPWNvbmZpZyBVU0JfU1BFRURUT1VDSFxcbi0tXFxuZHJpdmVycy91c2IvYXRtL0tjb25maWctMzEtXFxuZHJpdmVycy91c2IvYXRtL0tjb25maWc6MzI6Y29uZmlnIFVTQl9DWEFDUlVcXG5kcml2ZXJzL3VzYi9hdG0vS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZSBcXFwiQ29uZXhhbnQgQWNjZXNzUnVubmVyIFVTQiBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMTo0My40Mjc5NTI0NzJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDI1MzYxNzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkncmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgS2NvbmZpZyBGaWxlIC0gTGluZSAzMioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgemVyb2luZyBpbiBvbiB0aGUgS2NvbmZpZyBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMzIuIFRoYXQncyB1c3VhbGx5IGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYSByZWFzb24sIGFuZCBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgYXJlYSBsaWtlbHkgdG91Y2hlcyBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIEl0IGNvdWxkIGJlIGEgY29yZSBtb2R1bGUgZGVmaW5pdGlvbiwgYSBmZWF0dXJlIGZsYWcsIG9yIHBlcmhhcHMgZXZlbiBhIGRlcGVuZGVuY3kgSSBuZWVkIHRvIGZ1bGx5IGdyYXNwIGJlZm9yZSBtb3Zpbmcgb24uIEknbGwgbmVlZCB0byBsb29rIGNhcmVmdWxseSBhdCB0aGUgY29udGV4dCBhcm91bmQgdGhhdCBsaW5lLCB0cmFjZSBhbnkgcmVsZXZhbnQgc3ltYm9scywgYW5kIHVuZGVyc3RhbmQgd2hhdCB0aGF0IHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgZG9pbmcgYW5kIHdoeS4gSSBleHBlY3QgdGhlcmUgaXMgc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMgbXkgZXhwZXJ0aXNlIHRvIHVuZGVyc3RhbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyOTUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMTo0Ni44NTMzMTYyNjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvYXRtL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjU6XFx0XFx0ICBtb2RlbS4gIEluIG9yZGVyIHRvIHVzZSB5b3VyIG1vZGVtIHlvdSB3aWxsIG5lZWQgdG8gaW5zdGFsbCB0aGUgXFxuICAyNjpcXHRcXHQgIHR3byBwYXJ0cyBvZiB0aGUgZmlybXdhcmUsIGV4dHJhY3RlZCBieSB0aGUgdXNlciBzcGFjZSB0b29sczsgc2VlXFxuICAyNzpcXHRcXHQgIFxcdTAwM2NodHRwOi8vd3d3LmxpbnV4LXVzYi5vcmcvU3BlZWRUb3VjaC9cXHUwMDNlIGZvciBkZXRhaWxzLlxcbiAgMjg6XFx0XFxuICAyOTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAgMzA6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc3BlZWR0Y2guXFxuICAzMTpcXHRcXG4gIDMyOlxcdGNvbmZpZyBVU0JfQ1hBQ1JVXFxuICAzMzpcXHRcXHR0cmlzdGF0ZSBcXFwiQ29uZXhhbnQgQWNjZXNzUnVubmVyIFVTQiBzdXBwb3J0XFxcIlxcbiAgMzQ6XFx0XFx0c2VsZWN0IEZXX0xPQURFUlxcbiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSBoYXZlIGFuIEFEU0wgVVNCIG1vZGVtIGJhc2VkIG9uIHRoZSBDb25leGFudFxcbiAgMzc6XFx0XFx0ICBBY2Nlc3NSdW5uZXIgY2hpcHNldC4gIEluIG9yZGVyIHRvIHVzZSB5b3VyIG1vZGVtIHlvdSB3aWxsIG5lZWQgdG9cXG4gIDM4OlxcdFxcdCAgaW5zdGFsbCB0aGUgZmlybXdhcmUsIGV4dHJhY3RlZCBieSB0aGUgdXNlciBzcGFjZSB0b29sczsgc2VlXFxuICAzOTpcXHRcXHQgIFxcdTAwM2NodHRwOi8vYWNjZXNzcnVubmVyLnNvdXJjZWZvcmdlLm5ldC9cXHUwMDNlIGZvciBkZXRhaWxzLlxcbiAgNDA6XFx0XFxuICA0MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAgNDI6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgY3hhY3J1LlxcbiAgNDM6XFx0XFxuICA0NDpcXHRjb25maWcgVVNCX1VFQUdMRUFUTVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMTo0Ni44NTMzOTAzODdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE0OTIyMzEzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIGEgVVNCIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSoqXG5cbkFscmlnaHQsIHNvIHRoZSBjb25maWcgaW4gcXVlc3Rpb24gaXMgYFVTQl9DWEFDUlVgLiBJJ20gZ3Vlc3NpbmcgdGhhdCBkZXBlbmRzIG9uIGBVU0JfQVRNYC4gTGV0J3MgYXNzdW1lIGBVU0JfQVRNYCBpcyB0aGUgcGFyZW50LCBzbyBJIHNob3VsZCBwcm9iYWJseSBzdGFydCBieSBjaGVja2luZyBvdXQgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSBpbiBgZHJpdmVycy91c2IvYXRtL2AuIExldCdzIGdldCByaWdodCBpbnRvIGBkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZ2AgYW5kIHNlZSB3aGF0J3Mgd2hhdC4gSSdsbCByZWFkIGl0IGZyb20gdGhlIHRvcCBhbmQgc2VlIHdoZXJlIHRoaXMgcmFiYml0IGhvbGUgbGVhZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MzAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIxOjUyLjAwMjYxNzIyNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzE1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvYXRtL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFVTQi9BVE0gRFNMIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0bWVudWNvbmZpZyBVU0JfQVRNXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIERTTCBtb2RlbSBzdXBwb3J0XFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBBVE1cXG4gICA5OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGNvbm5lY3QgYSBVU0IgRGlnaXRhbCBTdWJzY3JpYmVyIExpbmUgKERTTClcXG4gIDEyOlxcdFxcdCAgbW9kZW0gdG8geW91ciBjb21wdXRlcidzIFVTQiBwb3J0LiAgWW91IHdpbGwgdGhlbiBuZWVkIHRvIGNob29zZSB5b3VyXFxuICAxMzpcXHRcXHQgIG1vZGVtIGZyb20gdGhlIGxpc3QgYmVsb3cuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuICAxNjpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCB1c2JhdG0uXFxuICAxNzpcXHRcXG4gIDE4OlxcdGlmIFVTQl9BVE1cXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIFVTQl9TUEVFRFRPVUNIXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIxOjUyLjAwMjc1MDQzNloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTY5Njk5NDIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgY3hhY3J1X2NtIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgVVNCX0NYQUNSVWAgZHJpdmVyLCBhbmQgSSBzZWUgaXRzIGRlcGVuZGVuY3kgY2hhaW46IGl0IHJlbGllcyBvbiBgVVNCX0FUTWAsIHdoaWNoLCBpbiB0dXJuLCBkZXBlbmRzIG9uIGBBVE1gLiBUaGF0J3MgZ29vZCB0byBrbm93IGZvciBjb250ZXh0LiBUaGUgcGF0Y2ggaXRzZWxmIGlzIGxvY2F0ZWQgd2l0aGluIGBjeGFjcnVfY21gLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIGJlIHJlbGlhYmx5IHRyaWdnZXJlZCBmb3IgdGVzdGluZz8gR2l2ZW4gdGhhdCBpdCdzIGEgVVNCIGRyaXZlciwgdGhlIGFuc3dlciBpcyBtb3N0IGxpa2VseSB5ZXMuIFN5emthbGxlcidzIFVTQiBlbXVsYXRpb24gY2FwYWJpbGl0aWVzIHNob3VsZCBhbGxvdyBpdCB0byBib3RoIGluaXRpYWxpemUgdGhlIFVTQiBkZXZpY2UgYW5kIHRoZW4gZXN0YWJsaXNoIGNvbW11bmljYXRpb24gd2l0aCB0aGUgdGFyZ2V0IHN5c3RlbS5cblxuU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBgdXNiX2tpbGxfdXJiKGluc3RhbmNlLVx1MDAzZXJjdl91cmIpO2Agd2l0aGluIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIGBjeGFjcnVfY21gLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjaGFuZ2UgdG8gaG93IGVycm9yIGhhbmRsaW5nIG9jY3Vycy4gVGhhdCdzIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBkZWVwIGRpdmUuIEJlZm9yZSBhbnl0aGluZyBlbHNlLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGV4YWN0IGZ1bmN0aW9uIHNpZ25hdHVyZSBvZiBgY3hhY3J1X2NtYC4gSSB3aWxsIGFsc28gY2hlY2sgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQncyBkZWNsYXJlZCBgc3RhdGljYC4gVGhhdCBpbmZvcm1hdGlvbiBtYXkgYmUgaW1wb3J0YW50IGxhdGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Mjc2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MjE6NTYuNTcyNDUyODE2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTg1MDAxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjeGFjcnVfY21cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvYXRtL2N4YWNydS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz01OT1lbnVtIGN4YWNydV9md19yZXF1ZXN0IHtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MC0gKiBmaXJtd2FyZSBpcyBsb2FkZWQgICovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjcxOmVudW0gY3hhY3J1X2NtX3JlcXVlc3Qge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03Mi1cXHRDTV9SRVFVRVNUX1VOREVGSU5FRCA9IDB4ODAsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA4LSAqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDk6ZW51bSBjeGFjcnVfY21fZmxhc2gge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTAtXFx0Q01fRkxBU0hfUkVBRCA9IDB4YTEsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE0LS8qIHJlcGx5IGNvZGVzIHRvIHRoZSBjb21tYW5kcyBhYm92ZSAqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTU6ZW51bSBjeGFjcnVfY21fc3RhdHVzIHtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE2LVxcdENNX1NUQVRVU19VTkRFRklORUQsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9MTcwPXN0cnVjdCBjeGFjcnVfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTkyLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxOTM6c3RhdGljIGludCBjeGFjcnVfY20oc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSwgZW51bSBjeGFjcnVfY21fcmVxdWVzdCBjbSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTk0LVxcdHU4ICp3ZGF0YSwgaW50IHdzaXplLCB1OCAqcmRhdGEsIGludCByc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9MzMyPXN0YXRpYyBzc2l6ZV90IGFkc2xfc3RhdGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTM1Ni1cXHRpZiAoIXN0cmNtcChzdHJfY21kLCBcXFwic3RvcFxcXCIpIHx8ICFzdHJjbXAoc3RyX2NtZCwgXFxcInJlc3RhcnRcXFwiKSkge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzozNTc6XFx0XFx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NISVBfQURTTF9MSU5FX1NUT1AsIE5VTEwsIDAsIE5VTEwsIDApO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zNTgtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zNzYtXFx0aWYgKCFzdHJjbXAoc3RyX2NtZCwgXFxcInN0YXJ0XFxcIikgfHwgIXN0cmNtcChzdHJfY21kLCBcXFwicmVzdGFydFxcXCIpKSB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjM3NzpcXHRcXHRyZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0hJUF9BRFNMX0xJTkVfU1RBUlQsIE5VTEwsIDAsIE5VTEwsIDApO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zNzgtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz00MzU9c3RhdGljIHNzaXplX3QgYWRzbF9jb25maWdfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTQ4MC1cXHRcXHRcXHRkYXRhWzBdID0gY3B1X3RvX2xlMzIobnVtKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NDgxOlxcdFxcdFxcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DQVJEX0RBVEFfU0VULFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy00ODItXFx0XFx0XFx0XFx0KHU4ICopIGRhdGEsIDQgKyBudW0gKiA4LCBOVUxMLCAwKTtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz01OTA9c3RhdGljIGludCBjeGFjcnVfc3RhcnRfd2FpdF91cmIoc3RydWN0IHVyYiAqdXJiLCBzdHJ1Y3QgY29tcGxldGlvbiAqZG9uZSxcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy02MDctXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjYwODpzdGF0aWMgaW50IGN4YWNydV9jbShzdHJ1Y3QgY3hhY3J1X2RhdGEgKmluc3RhbmNlLCBlbnVtIGN4YWNydV9jbV9yZXF1ZXN0IGNtLFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy02MDktXFx0XFx0ICAgICB1OCAqd2RhdGEsIGludCB3c2l6ZSwgdTggKnJkYXRhLCBpbnQgcnNpemUpXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzA5LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3MTA6c3RhdGljIGludCBjeGFjcnVfY21fZ2V0X2FycmF5KHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UsIGVudW0gY3hhY3J1X2NtX3JlcXVlc3QgY20sXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcxMS1cXHRcXHRcXHQgICAgICAgdTMyICpkYXRhLCBpbnQgc2l6ZSlcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MjMtXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjcyNDpcXHRyZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIGNtLCBOVUxMLCAwLCAodTggKikgYnVmLCBidWZsZW4pO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MjUtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzI3LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3Mjg6XFx0LyogbGVuIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBsZW4gJSA0ID09IDAgZ3VhcmFudGVlZCBieSBjeGFjcnVfY20oKSAqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MjktXFx0bGVuID0gcmV0IC8gNDtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz03NjA9c3RhdGljIGludCBjeGFjcnVfY2FyZF9zdGF0dXMoc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSlcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzYxLXtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzYyOlxcdGludCByZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0FSRF9HRVRfU1RBVFVTLCBOVUxMLCAwLCBOVUxMLCAwKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzYzLVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTc3MT1zdGF0aWMgaW50IGN4YWNydV9hdG1fc3RhcnQoc3RydWN0IHVzYmF0bV9kYXRhICp1c2JhdG1faW5zdGFuY2UsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzgxLVxcdC8qIFJlYWQgTUFDIGFkZHJlc3MgKi9cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzgyOlxcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DQVJEX0dFVF9NQUNfQUREUkVTUywgTlVMTCwgMCxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzgzLVxcdFxcdFxcdGF0bV9kZXYtXFx1MDAzZWVzaSwgc2l6ZW9mKGF0bV9kZXYtXFx1MDAzZWVzaSkpO1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc5MC1cXHRtdXRleF9sb2NrKFxcdTAwMjZpbnN0YW5jZS1cXHUwMDNlYWRzbF9zdGF0ZV9zZXJpYWxpemUpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3OTE6XFx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NISVBfQURTTF9MSU5FX1NUQVJULCBOVUxMLCAwLCBOVUxMLCAwKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzkyLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTgyMD1zdGF0aWMgdm9pZCBjeGFjcnVfcG9sbF9zdGF0dXMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTgyOS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6ODMwOlxcdHJldCA9IGN4YWNydV9jbV9nZXRfYXJyYXkoaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0FSRF9JTkZPX0dFVCwgYnVmLCBDWElORl9NQVgpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy04MzEtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz0xMDA2PXN0YXRpYyBpbnQgY3hhY3J1X2hlYXZ5X2luaXQoc3RydWN0IHVzYmF0bV9kYXRhICp1c2JhdG1faW5zdGFuY2UsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTEwMS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTEwMjpcXHRyZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0FSRF9HRVRfU1RBVFVTLCBOVUxMLCAwLCBOVUxMLCAwKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTEwMy1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMTo1Ni42MTIzMDcwMzZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc2ODEzNzQyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqVGFyZ2V0aW5nIHRoZSBEeW5hbWljIEVsZW1lbnRzKipcblxuQWxyaWdodCwgYGN4YWNydV9jbWAgaXMgYSBrbm93biBxdWFudGl0eSwgYSBzdGF0aWMgY29tcG9uZW50LiBUaGVyZWZvcmUsIGl0J3Mgbm90IHRoZSBwcmltYXJ5IHNvdXJjZSBvZiB0aGUgdmFyaWFiaWxpdHkgb3IgaW50ZXJlc3RpbmcgYmVoYXZpb3IgSSdtIGNoYXNpbmcuIFRoZSBrZXkgbGllcyBpbiB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIHN0YXRpYyBlbGVtZW50IGludGVyYWN0cyB3aXRoIHRoZSBkeW5hbWljIHBhcnRzIG9mIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhlIG5vbi1zdGF0aWMgY29kZSBwYXRocy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIHBvaW50cyB3aGVyZSBleGVjdXRpb24gKmVudGVycyogb3IgY2FsbHMgaW50byBvciB1c2VzIGBjeGFjcnVfY21gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlIHN0YXRpYyBjb21wb25lbnQgaXMgaW52b2tlZC4gVGhhdCBtZWFucyBJIG5lZWQgdG8gbG9vayBmb3IgZnVuY3Rpb25zIHRoYXQgYXJlIGV4cG9ydGVkIGJ5IG9yIGFjdCBhcyBjYWxsYmFjayBwb2ludHMgZm9yIGBjeGFjcnVfY21gLiBXaGVyZSBkb2VzIGl0IHBsdWcgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmU/IFdoaWNoIG90aGVyIGNvbXBvbmVudHMgcmVseSBvbiBpdHMgc2VydmljZXMgb3IsIGNvbnZlcnNlbHksIHdoaWNoIGNvbXBvbmVudHMgZG9lcyBpdCByZWx5IG9uPyBUaGF04oCZcyB3aGVyZSB0aGUgaW50ZXJlc3Rpbmcgc3R1ZmYgaXMgbGlrZWx5IGhhcHBlbmluZy4gTGV0J3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IHRoZSBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1MzgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMjowMC4zODA0NDY4NTRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNDM0ODk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImN4YWNydV9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvYXRtL2N4YWNydS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zMy1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MzQ6c3RhdGljIGNvbnN0IGNoYXIgY3hhY3J1X2RyaXZlcl9uYW1lW10gPSBcXFwiY3hhY3J1XFxcIjtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzUtXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTgtICogZmlybXdhcmUgaXMgbG9hZGVkICAqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo1OTplbnVtIGN4YWNydV9md19yZXF1ZXN0IHtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNjAtXFx0RldfQ01EX0VSUixcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MC0gKiBmaXJtd2FyZSBpcyBsb2FkZWQgICovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjcxOmVudW0gY3hhY3J1X2NtX3JlcXVlc3Qge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03Mi1cXHRDTV9SRVFVRVNUX1VOREVGSU5FRCA9IDB4ODAsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA4LSAqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDk6ZW51bSBjeGFjcnVfY21fZmxhc2gge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTAtXFx0Q01fRkxBU0hfUkVBRCA9IDB4YTEsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE0LS8qIHJlcGx5IGNvZGVzIHRvIHRoZSBjb21tYW5kcyBhYm92ZSAqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTU6ZW51bSBjeGFjcnVfY21fc3RhdHVzIHtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE2LVxcdENNX1NUQVRVU19VTkRFRklORUQsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTI2LS8qIGluZGljZXMgaW50byBDQVJEX0lORk9fR0VUIHJldHVybiBhcnJheSAqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjc6ZW51bSBjeGFjcnVfaW5mb19pZHgge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjgtXFx0Q1hJTkZfRE9XTlNUUkVBTV9SQVRFLFxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE1Ni1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTU3OmVudW0gY3hhY3J1X3BvbGxfc3RhdGUge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xNTgtXFx0Q1hQT0xMX1NUT1BQSU5HLFxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE2My1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTY0OnN0cnVjdCBjeGFjcnVfbW9kZW1fdHlwZSB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE2NS1cXHR1MzIgcGxsX2ZfY2xrO1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE2OS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTcwOnN0cnVjdCBjeGFjcnVfZGF0YSB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE3MS1cXHRzdHJ1Y3QgdXNiYXRtX2RhdGEgKnVzYmF0bTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTcyLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxNzM6XFx0Y29uc3Qgc3RydWN0IGN4YWNydV9tb2RlbV90eXBlICptb2RlbV90eXBlO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xNzQtXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTgwLVxcdHN0cnVjdCBtdXRleCBwb2xsX3N0YXRlX3NlcmlhbGl6ZTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTgxOlxcdGVudW0gY3hhY3J1X3BvbGxfc3RhdGUgcG9sbF9zdGF0ZTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTgyLVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE5Mi1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTkzOnN0YXRpYyBpbnQgY3hhY3J1X2NtKHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UsIGVudW0gY3hhY3J1X2NtX3JlcXVlc3QgY20sXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE5NC1cXHR1OCAqd2RhdGEsIGludCB3c2l6ZSwgdTggKnJkYXRhLCBpbnQgcnNpemUpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxOTU6c3RhdGljIHZvaWQgY3hhY3J1X3BvbGxfc3RhdHVzKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTE5Ni1cXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz0yMDg9c3RhdGljIHNzaXplX3QgX25hbWUjI19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgXFxcXFxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTIxMC17IFxcXFxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjExOlxcdHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UgPSB0b191c2JhdG1fZHJpdmVyX2RhdGEoXFxcXFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yMTItXFx0XFx0dG9fdXNiX2ludGVyZmFjZShkZXYpKTsgXFxcXFxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTIxNi1cXFxcXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjIxNzpcXHRyZXR1cm4gY3hhY3J1X3N5c2ZzX3Nob3dhdHRyXyMjX3R5cGUoaW5zdGFuY2UtXFx1MDAzZWNhcmRfaW5mb1tfdmFsdWVdLCBidWYpOyBcXFxcXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTIxOC19IFxcXFxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9MjE5PUNYQUNSVV9fQVRUUl9JTklUKF9uYW1lKVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTIzMC1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjMxOnN0YXRpYyBzc2l6ZV90IGN4YWNydV9zeXNmc19zaG93YXR0cl91MzIodTMyIHZhbHVlLCBjaGFyICpidWYpXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTIzMi17XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMjM1LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoyMzY6c3RhdGljIHNzaXplX3QgY3hhY3J1X3N5c2ZzX3Nob3dhdHRyX3M4KHM4IHZhbHVlLCBjaGFyICpidWYpXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTIzNy17XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMjQwLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoyNDE6c3RhdGljIHNzaXplX3QgY3hhY3J1X3N5c2ZzX3Nob3dhdHRyX2RCKHMxNiB2YWx1ZSwgY2hhciAqYnVmKVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yNDIte1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTI1Mi1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjUzOnN0YXRpYyBzc2l6ZV90IGN4YWNydV9zeXNmc19zaG93YXR0cl9ib29sKHUzMiB2YWx1ZSwgY2hhciAqYnVmKVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yNTQte1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTI2MS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjYyOnN0YXRpYyBzc2l6ZV90IGN4YWNydV9zeXNmc19zaG93YXR0cl9MSU5LKHUzMiB2YWx1ZSwgY2hhciAqYnVmKVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yNjMte1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTI3MC1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjcxOnN0YXRpYyBzc2l6ZV90IGN4YWNydV9zeXNmc19zaG93YXR0cl9MSU5FKHUzMiB2YWx1ZSwgY2hhciAqYnVmKVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yNzIte1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTI4MS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MjgyOnN0YXRpYyBzc2l6ZV90IGN4YWNydV9zeXNmc19zaG93YXR0cl9NT0RVKHUzMiB2YWx1ZSwgY2hhciAqYnVmKVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0yODMte1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTMwMz1zdGF0aWMgc3NpemVfdCBtYWNfYWRkcmVzc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zMDUte1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzozMDY6XFx0c3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSA9IHRvX3VzYmF0bV9kcml2ZXJfZGF0YShcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzA3LVxcdFxcdFxcdHRvX3VzYl9pbnRlcmZhY2UoZGV2KSk7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9MzE1PXN0YXRpYyBzc2l6ZV90IGFkc2xfc3RhdGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzE4LVxcdHN0YXRpYyBjaGFyICpzdHJbXSA9IHsgXFxcInJ1bm5pbmdcXFwiLCBcXFwic3RvcHBlZFxcXCIgfTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MzE5OlxcdHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UgPSB0b191c2JhdG1fZHJpdmVyX2RhdGEoXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTMyMC1cXHRcXHRcXHR0b191c2JfaW50ZXJmYWNlKGRldikpO1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTMzMj1zdGF0aWMgc3NpemVfdCBhZHNsX3N0YXRlX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0zMzQte1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzozMzU6XFx0c3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSA9IHRvX3VzYmF0bV9kcml2ZXJfZGF0YShcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzM2LVxcdFxcdFxcdHRvX3VzYl9pbnRlcmZhY2UoZGV2KSk7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMzU2LVxcdGlmICghc3RyY21wKHN0cl9jbWQsIFxcXCJzdG9wXFxcIikgfHwgIXN0cmNtcChzdHJfY21kLCBcXFwicmVzdGFydFxcXCIpKSB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjM1NzpcXHRcXHRyZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0hJUF9BRFNMX0xJTkVfU1RPUCwgTlVMTCwgMCwgTlVMTCwgMCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTM1OC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTM3Ni1cXHRpZiAoIXN0cmNtcChzdHJfY21kLCBcXFwic3RhcnRcXFwiKSB8fCAhc3RyY21wKHN0cl9jbWQsIFxcXCJyZXN0YXJ0XFxcIikpIHtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6Mzc3OlxcdFxcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVEFSVCwgTlVMTCwgMCwgTlVMTCwgMCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTM3OC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTQyNy1cXHRpZiAocG9sbCA9PSBDWFBPTExfUE9MTElORylcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NDI4OlxcdFxcdGN4YWNydV9wb2xsX3N0YXR1cyhcXHUwMDI2aW5zdGFuY2UtXFx1MDAzZXBvbGxfd29yay53b3JrKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNDI5LVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jPTQzNT1zdGF0aWMgc3NpemVfdCBhZHNsX2NvbmZpZ19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNDM3LXtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NDM4OlxcdHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UgPSB0b191c2JhdG1fZHJpdmVyX2RhdGEoXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTQzOS1cXHRcXHRcXHR0b191c2JfaW50ZXJmYWNlKGRldikpO1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTQ4MC1cXHRcXHRcXHRkYXRhWzBdID0gY3B1X3RvX2xlMzIobnVtKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NDgxOlxcdFxcdFxcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DQVJEX0RBVEFfU0VULFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy00ODItXFx0XFx0XFx0XFx0KHU4ICopIGRhdGEsIDQgKyBudW0gKiA4LCBOVUxMLCAwKTtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYz01Mzk9Q1hBQ1JVX0FMTF9GSUxFUyhJTklUKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTQwLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo1NDE6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmN4YWNydV9hdHRyc1tdID0ge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy01NDItXFx0XFx1MDAyNmRldl9hdHRyX2Fkc2xfY29uZmlnLmF0dHIsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM9NTcwPUFUVFJJQlVURV9HUk9VUFMoY3hhY3J1KTtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy01NzItLyogdGhlIGZvbGxvd2luZyB0aHJlZSBmdW5jdGlvbnMgYXJlIHN0b2xlbiBmcm9tIGRyaXZlcnMvdXNiL2NvcmUvbWVzc2FnZS5jICovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjU3MzpzdGF0aWMgdm9pZCBjeGFjcnVfYmxvY2tpbmdfY29tcGxldGlvbihzdHJ1Y3QgdXJiICp1cmIpXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTU3NC17XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTc3LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo1Nzg6c3RydWN0IGN4YWNydV90aW1lciB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTU3OS1cXHRzdHJ1Y3QgdGltZXJfbGlzdCB0aW1lcjtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy01ODItXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjU4MzpzdGF0aWMgdm9pZCBjeGFjcnVfdGltZW91dF9raWxsKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy01ODQte1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo1ODU6XFx0c3RydWN0IGN4YWNydV90aW1lciAqdGltZXIgPSB0aW1lcl9jb250YWluZXJfb2YodGltZXIsIHQsIHRpbWVyKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTg2LVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTU4OS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NTkwOnN0YXRpYyBpbnQgY3hhY3J1X3N0YXJ0X3dhaXRfdXJiKHN0cnVjdCB1cmIgKnVyYiwgc3RydWN0IGNvbXBsZXRpb24gKmRvbmUsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTU5MS1cXHRcXHRcXHRcXHQgaW50ICphY3R1YWxfbGVuZ3RoKVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy01OTIte1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo1OTM6XFx0c3RydWN0IGN4YWNydV90aW1lciB0aW1lciA9IHtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTk0LVxcdFxcdC51cmIgPSB1cmIsXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTk2LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo1OTc6XFx0dGltZXJfc2V0dXBfb25fc3RhY2soXFx1MDAyNnRpbWVyLnRpbWVyLCBjeGFjcnVfdGltZW91dF9raWxsLCAwKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNTk4LVxcdG1vZF90aW1lcihcXHUwMDI2dGltZXIudGltZXIsIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKENNRF9USU1FT1VUKSk7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNjA3LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo2MDg6c3RhdGljIGludCBjeGFjcnVfY20oc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSwgZW51bSBjeGFjcnVfY21fcmVxdWVzdCBjbSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNjA5LVxcdFxcdCAgICAgdTggKndkYXRhLCBpbnQgd3NpemUsIHU4ICpyZGF0YSwgaW50IHJzaXplKVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTY1Ni1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NjU3OlxcdHJldCA9IGN4YWNydV9zdGFydF93YWl0X3VyYihpbnN0YW5jZS1cXHUwMDNlc25kX3VyYiwgXFx1MDAyNmluc3RhbmNlLVxcdTAwM2VzbmRfZG9uZSwgTlVMTCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTY1OC1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTY2My1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NjY0OlxcdHJldCA9IGN4YWNydV9zdGFydF93YWl0X3VyYihpbnN0YW5jZS1cXHUwMDNlcmN2X3VyYiwgXFx1MDAyNmluc3RhbmNlLVxcdTAwM2VyY3ZfZG9uZSwgXFx1MDAyNmFjdGxlbik7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTY2NS1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcwOS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzEwOnN0YXRpYyBpbnQgY3hhY3J1X2NtX2dldF9hcnJheShzdHJ1Y3QgY3hhY3J1X2RhdGEgKmluc3RhbmNlLCBlbnVtIGN4YWNydV9jbV9yZXF1ZXN0IGNtLFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03MTEtXFx0XFx0XFx0ICAgICAgIHUzMiAqZGF0YSwgaW50IHNpemUpXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzIzLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3MjQ6XFx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBjbSwgTlVMTCwgMCwgKHU4ICopIGJ1ZiwgYnVmbGVuKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzI1LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTcyNy1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzI4OlxcdC8qIGxlbiBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgbGVuICUgNCA9PSAwIGd1YXJhbnRlZWQgYnkgY3hhY3J1X2NtKCkgKi9cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzI5LVxcdGxlbiA9IHJldCAvIDQ7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzU5LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo3NjA6c3RhdGljIGludCBjeGFjcnVfY2FyZF9zdGF0dXMoc3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSlcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzYxLXtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzYyOlxcdGludCByZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0FSRF9HRVRfU1RBVFVTLCBOVUxMLCAwLCBOVUxMLCAwKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzYzLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03NjQtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXHRcXHQvKiBmaXJtd2FyZSBub3QgbG9hZGVkICovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjc2NTpcXHRcXHR1c2JfZGJnKGluc3RhbmNlLVxcdTAwM2V1c2JhdG0sIFxcXCJjeGFjcnVfYWRzbF9zdGFydDogQ0FSRF9HRVRfU1RBVFVTIHJldHVybmVkICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03NjYtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03NzAtXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjc3MTpzdGF0aWMgaW50IGN4YWNydV9hdG1fc3RhcnQoc3RydWN0IHVzYmF0bV9kYXRhICp1c2JhdG1faW5zdGFuY2UsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc3Mi1cXHRcXHRzdHJ1Y3QgYXRtX2RldiAqYXRtX2RldilcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzczLXtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6Nzc0OlxcdHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UgPSB1c2JhdG1faW5zdGFuY2UtXFx1MDAzZWRyaXZlcl9kYXRhO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03NzUtXFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYgPSB1c2JhdG1faW5zdGFuY2UtXFx1MDAzZXVzYl9pbnRmO1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc4MS1cXHQvKiBSZWFkIE1BQyBhZGRyZXNzICovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjc4MjpcXHRyZXQgPSBjeGFjcnVfY20oaW5zdGFuY2UsIENNX1JFUVVFU1RfQ0FSRF9HRVRfTUFDX0FERFJFU1MsIE5VTEwsIDAsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc4My1cXHRcXHRcXHRhdG1fZGV2LVxcdTAwM2Vlc2ksIHNpemVvZihhdG1fZGV2LVxcdTAwM2Vlc2kpKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtNzg0LVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjc4NTpcXHRcXHRhdG1fZXJyKHVzYmF0bV9pbnN0YW5jZSwgXFxcImN4YWNydV9hdG1fc3RhcnQ6IENBUkRfR0VUX01BQ19BRERSRVNTIHJldHVybmVkICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03ODYtXFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy03OTAtXFx0bXV0ZXhfbG9jayhcXHUwMDI2aW5zdGFuY2UtXFx1MDAzZWFkc2xfc3RhdGVfc2VyaWFsaXplKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzkxOlxcdHJldCA9IGN4YWNydV9jbShpbnN0YW5jZSwgQ01fUkVRVUVTVF9DSElQX0FEU0xfTElORV9TVEFSVCwgTlVMTCwgMCwgTlVMTCwgMCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc5Mi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6NzkzOlxcdFxcdGF0bV9lcnIodXNiYXRtX2luc3RhbmNlLCBcXFwiY3hhY3J1X2F0bV9zdGFydDogQ0hJUF9BRFNMX0xJTkVfU1RBUlQgcmV0dXJuZWQgJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTc5NC1cXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy04MTUtXFx0aWYgKHN0YXJ0X3BvbGxpbmcpXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjgxNjpcXHRcXHRjeGFjcnVfcG9sbF9zdGF0dXMoXFx1MDAyNmluc3RhbmNlLVxcdTAwM2Vwb2xsX3dvcmsud29yayk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTgxNy1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy04MTktXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjgyMDpzdGF0aWMgdm9pZCBjeGFjcnVfcG9sbF9zdGF0dXMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy04MjEte1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo4MjI6XFx0c3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSA9XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjgyMzpcXHRcXHRjb250YWluZXJfb2Yod29yaywgc3RydWN0IGN4YWNydV9kYXRhLCBwb2xsX3dvcmsud29yayk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTgyNC1cXHR1MzIgYnVmW0NYSU5GX01BWF0gPSB7fTtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy04MjktXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjgzMDpcXHRyZXQgPSBjeGFjcnVfY21fZ2V0X2FycmF5KGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfSU5GT19HRVQsIGJ1ZiwgQ1hJTkZfTUFYKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtODMxLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtOTM2LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo5Mzc6c3RhdGljIGludCBjeGFjcnVfZncoc3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXYsIGVudW0gY3hhY3J1X2Z3X3JlcXVlc3QgZncsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTkzOC1cXHRcXHQgICAgIHU4IGNvZGUxLCB1OCBjb2RlMiwgdTMyIGFkZHIsIGNvbnN0IHU4ICpkYXRhLCBpbnQgc2l6ZSlcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy05ODUtXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjk4NjpzdGF0aWMgaW50IGN4YWNydV9maW5kX2Zpcm13YXJlKHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTk4Ny1cXHRcXHRcXHRcXHRjaGFyICpwaGFzZSwgY29uc3Qgc3RydWN0IGZpcm13YXJlICoqZndfcClcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy05OTMtXFx0c3ByaW50ZihidWYsIFxcXCJjeGFjcnUtJXMuYmluXFxcIiwgcGhhc2UpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzo5OTQ6XFx0dXNiX2RiZyh1c2JhdG0sIFxcXCJjeGFjcnVfZmluZF9maXJtd2FyZTogbG9va2luZyBmb3IgJXNcXFxcblxcXCIsIGJ1Zik7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTk5NS1cXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMDA1LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDA2OnN0YXRpYyBpbnQgY3hhY3J1X2hlYXZ5X2luaXQoc3RydWN0IHVzYmF0bV9kYXRhICp1c2JhdG1faW5zdGFuY2UsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwMDctXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYpXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTAwOS1cXHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3LCAqYnA7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwMTA6XFx0c3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSA9IHVzYmF0bV9pbnN0YW5jZS1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwMTEtXFx0c3RydWN0IHVzYmF0bV9kYXRhICp1c2JhdG0gPSBpbnN0YW5jZS1cXHUwMDNldXNiYXRtO1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwMTctXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwMTg6XFx0cmV0ID0gY3hhY3J1X2ZpbmRfZmlybXdhcmUoaW5zdGFuY2UsIFxcXCJmd1xcXCIsIFxcdTAwMjZmdyk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwMTktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwMjQtXFx0aWYgKGluc3RhbmNlLVxcdTAwM2Vtb2RlbV90eXBlLVxcdTAwM2Vib290X3JvbV9wYXRjaCkge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDI1OlxcdFxcdHJldCA9IGN4YWNydV9maW5kX2Zpcm13YXJlKGluc3RhbmNlLCBcXFwiYnBcXFwiLCBcXHUwMDI2YnApO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMDI2LVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMDM0LVxcdHZhbCA9IGNwdV90b19sZTMyKGluc3RhbmNlLVxcdTAwM2Vtb2RlbV90eXBlLVxcdTAwM2VwbGxfZl9jbGspO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMDM1OlxcdHJldCA9IGN4YWNydV9mdyh1c2JfZGV2LCBGV19XUklURV9NRU0sIDB4MiwgMHgwLCBQTExGQ0xLX0FERFIsICh1OCAqKSBcXHUwMDI2dmFsLCA0KTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTAzNi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA0Mi1cXHR2YWwgPSBjcHVfdG9fbGUzMihpbnN0YW5jZS1cXHUwMDNlbW9kZW1fdHlwZS1cXHUwMDNlcGxsX2JfY2xrKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTA0MzpcXHRyZXQgPSBjeGFjcnVfZncodXNiX2RldiwgRldfV1JJVEVfTUVNLCAweDIsIDB4MCwgUExMQkNMS19BRERSLCAodTggKikgXFx1MDAyNnZhbCwgNCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwNDQtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwNTAtXFx0dmFsID0gY3B1X3RvX2xlMzIoU0RSQU1fRU5BKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTA1MTpcXHRyZXQgPSBjeGFjcnVfZncodXNiX2RldiwgRldfV1JJVEVfTUVNLCAweDIsIDB4MCwgU0RSQU1FTl9BRERSLCAodTggKikgXFx1MDAyNnZhbCwgNCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwNTItXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwNTgtXFx0dXNiX2luZm8odXNiYXRtLCBcXFwibG9hZGluZyBmaXJtd2FyZVxcXFxuXFxcIik7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwNTk6XFx0cmV0ID0gY3hhY3J1X2Z3KHVzYl9kZXYsIEZXX1dSSVRFX01FTSwgMHgyLCAweDAsIEZXX0FERFIsIGZ3LVxcdTAwM2VkYXRhLCBmdy1cXHUwMDNlc2l6ZSk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwNjAtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwNjctXFx0XFx0dXNiX2luZm8odXNiYXRtLCBcXFwibG9hZGluZyBib290IFJPTSBwYXRjaFxcXFxuXFxcIik7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwNjg6XFx0XFx0cmV0ID0gY3hhY3J1X2Z3KHVzYl9kZXYsIEZXX1dSSVRFX01FTSwgMHgyLCAweDAsIEJSX0FERFIsIGJwLVxcdTAwM2VkYXRhLCBicC1cXHUwMDNlc2l6ZSk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwNjktXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwNzUtXFx0LyogU2lnbmF0dXJlICovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwNzY6XFx0cmV0ID0gY3hhY3J1X2Z3KHVzYl9kZXYsIEZXX1dSSVRFX01FTSwgMHgyLCAweDAsIFNJR19BRERSLCAodTggKikgc2lnbmF0dXJlLCA0KTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA3Ny1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTA4NC1cXHRcXHR2YWwgPSBjcHVfdG9fbGUzMihCUl9BRERSKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTA4NTpcXHRcXHRyZXQgPSBjeGFjcnVfZncodXNiX2RldiwgRldfV1JJVEVfTUVNLCAweDIsIDB4MCwgQlJfU1RBQ0tfQUREUiwgKHU4ICopIFxcdTAwMjZ2YWwsIDQpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMDg2LVxcdH0gZWxzZSB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEwODc6XFx0XFx0cmV0ID0gY3hhY3J1X2Z3KHVzYl9kZXYsIEZXX0dPVE9fTUVNLCAweDAsIDB4MCwgRldfQUREUiwgTlVMTCwgMCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEwODgtXFx0fVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMDEtXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjExMDI6XFx0cmV0ID0gY3hhY3J1X2NtKGluc3RhbmNlLCBDTV9SRVFVRVNUX0NBUkRfR0VUX1NUQVRVUywgTlVMTCwgMCwgTlVMTCwgMCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMDMtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTEyLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTEzOlxcdHJldCA9IGN4YWNydV9jYXJkX3N0YXR1cyhpbnN0YW5jZSk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMTQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTIxLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTIyOnN0YXRpYyBpbnQgY3hhY3J1X2JpbmQoc3RydWN0IHVzYmF0bV9kYXRhICp1c2JhdG1faW5zdGFuY2UsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMjMtXFx0XFx0ICAgICAgIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMjQte1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTI1OlxcdHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2U7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMjYtXFx0c3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpO1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExMzktXFx0aW5zdGFuY2UtXFx1MDAzZXVzYmF0bSA9IHVzYmF0bV9pbnN0YW5jZTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTE0MDpcXHRpbnN0YW5jZS1cXHUwMDNlbW9kZW1fdHlwZSA9IChzdHJ1Y3QgY3hhY3J1X21vZGVtX3R5cGUgKikgaWQtXFx1MDAzZWRyaXZlcl9pbmZvO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTQxLVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExNTAtXFx0aWYgKCFpbnN0YW5jZS1cXHUwMDNlcmN2X2J1Zikge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTUxOlxcdFxcdHVzYl9kYmcodXNiYXRtX2luc3RhbmNlLCBcXFwiY3hhY3J1X2JpbmQ6IG5vIG1lbW9yeSBmb3IgcmN2X2J1ZlxcXFxuXFxcIik7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExNTItXFx0XFx0cmV0ID0gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTU2LVxcdGlmICghaW5zdGFuY2UtXFx1MDAzZXNuZF9idWYpIHtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTE1NzpcXHRcXHR1c2JfZGJnKHVzYmF0bV9pbnN0YW5jZSwgXFxcImN4YWNydV9iaW5kOiBubyBtZW1vcnkgZm9yIHNuZF9idWZcXFxcblxcXCIpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTU4LVxcdFxcdHJldCA9IC1FTk9NRU07XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE3Mi1cXHRpZiAoIWNtZF9lcCkge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTczOlxcdFxcdHVzYl9kYmcodXNiYXRtX2luc3RhbmNlLCBcXFwiY3hhY3J1X2JpbmQ6IG5vIGNvbW1hbmQgZW5kcG9pbnRcXFxcblxcXCIpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTc0LVxcdFxcdHJldCA9IC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTE4My1cXHRpZiAoIXJldCkge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMTg0OlxcdFxcdHVzYl9lcnIodXNiYXRtX2luc3RhbmNlLCBcXFwiY3hhY3J1X2JpbmQ6IGludGVyZmFjZSBoYXMgaW5jb3JyZWN0IGVuZHBvaW50c1xcXFxuXFxcIik7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExODUtXFx0XFx0cmV0ID0gLUVOT0RFVjtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTkzLVxcdFxcdFxcdGluc3RhbmNlLVxcdTAwM2VyY3ZfYnVmLCBQQUdFX1NJWkUsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjExOTQ6XFx0XFx0XFx0Y3hhY3J1X2Jsb2NraW5nX2NvbXBsZXRpb24sIFxcdTAwMjZpbnN0YW5jZS1cXHUwMDNlcmN2X2RvbmUsIDEpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMTk1LVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTExOTgtXFx0XFx0XFx0aW5zdGFuY2UtXFx1MDAzZXNuZF9idWYsIFBBR0VfU0laRSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTE5OTpcXHRcXHRcXHRjeGFjcnVfYmxvY2tpbmdfY29tcGxldGlvbiwgXFx1MDAyNmluc3RhbmNlLVxcdTAwM2VzbmRfZG9uZSwgNCk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyMDAtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjAzLVxcdFxcdFxcdGluc3RhbmNlLVxcdTAwM2VyY3ZfYnVmLCBQQUdFX1NJWkUsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyMDQ6XFx0XFx0XFx0Y3hhY3J1X2Jsb2NraW5nX2NvbXBsZXRpb24sIFxcdTAwMjZpbnN0YW5jZS1cXHUwMDNlcmN2X2RvbmUpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjA1LVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyMDgtXFx0XFx0XFx0aW5zdGFuY2UtXFx1MDAzZXNuZF9idWYsIFBBR0VfU0laRSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTIwOTpcXHRcXHRcXHRjeGFjcnVfYmxvY2tpbmdfY29tcGxldGlvbiwgXFx1MDAyNmluc3RhbmNlLVxcdTAwM2VzbmRfZG9uZSk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyMTAtXFx0fVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyMTMtXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyMTQ6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmluc3RhbmNlLVxcdTAwM2Vwb2xsX3dvcmssIGN4YWNydV9wb2xsX3N0YXR1cyk7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyMTUtXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIxNy1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTIxODpcXHR1c2JhdG1faW5zdGFuY2UtXFx1MDAzZWZsYWdzID0gKGN4YWNydV9jYXJkX3N0YXR1cyhpbnN0YW5jZSkgPyAwIDogVURTTF9TS0lQX0hFQVZZX0lOSVQpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjE5LVxcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyMzEtXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyMzI6c3RhdGljIHZvaWQgY3hhY3J1X3VuYmluZChzdHJ1Y3QgdXNiYXRtX2RhdGEgKnVzYmF0bV9pbnN0YW5jZSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIzMy1cXHRcXHRzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIzNC17XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyMzU6XFx0c3RydWN0IGN4YWNydV9kYXRhICppbnN0YW5jZSA9IHVzYmF0bV9pbnN0YW5jZS1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyMzYtXFx0aW50IGlzX3BvbGxpbmcgPSAxO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjM3LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjM4OlxcdHVzYl9kYmcodXNiYXRtX2luc3RhbmNlLCBcXFwiY3hhY3J1X3VuYmluZCBlbnRlcmVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTIzOS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTI0MC1cXHRpZiAoIWluc3RhbmNlKSB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyNDE6XFx0XFx0dXNiX2RiZyh1c2JhdG1faW5zdGFuY2UsIFxcXCJjeGFjcnVfdW5iaW5kOiBOVUxMIGluc3RhbmNlIVxcXFxuXFxcIik7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyNDItXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyNzItXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyNzM6c3RhdGljIGNvbnN0IHN0cnVjdCBjeGFjcnVfbW9kZW1fdHlwZSBjeGFjcnVfY2FmZSA9IHtcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTI3NC1cXHQucGxsX2ZfY2xrID0gMHgwMmQ4NzRkZixcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjc4LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjc5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgY3hhY3J1X21vZGVtX3R5cGUgY3hhY3J1X2NiMDAgPSB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyODAtXFx0LnBsbF9mX2NsayA9IDB4NSxcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjg0LVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjg1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBjeGFjcnVfdXNiX2lkc1tdID0ge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjg2LVxcdHsgLyogViA9IENvbmV4YW50XFx0XFx0XFx0UCA9IEFEU0wgbW9kZW0gKEV1cGhyYXRlcyBwcm9qZWN0KVxcdCovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyODc6XFx0XFx0VVNCX0RFVklDRSgweDA1NzIsIDB4Y2FmZSksXFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFxcdTAwMjZjeGFjcnVfY2FmZVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjg4LVxcdH0sXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyODktXFx0eyAvKiBWID0gQ29uZXhhbnRcXHRcXHRcXHRQID0gQURTTCBtb2RlbSAoSGFzYmFuaSBwcm9qZWN0KVxcdCovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyOTA6XFx0XFx0VVNCX0RFVklDRSgweDA1NzIsIDB4Y2IwMCksXFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFxcdTAwMjZjeGFjcnVfY2IwMFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjkxLVxcdH0sXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyOTItXFx0eyAvKiBWID0gQ29uZXhhbnRcXHRcXHRcXHRQID0gQURTTCBtb2RlbVxcdFxcdFxcdFxcdCovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEyOTM6XFx0XFx0VVNCX0RFVklDRSgweDA1NzIsIDB4Y2IwMSksXFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFxcdTAwMjZjeGFjcnVfY2IwMFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjk0LVxcdH0sXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEyOTUtXFx0eyAvKiBWID0gQ29uZXhhbnRcXHRcXHRcXHRQID0gQURTTCBtb2RlbSAoV2VsbCBQVEktODAwKSAqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjk2OlxcdFxcdFVTQl9ERVZJQ0UoMHgwNTcyLCAweGNiMDIpLFxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcXHUwMDI2Y3hhY3J1X2NiMDBcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTI5Ny1cXHR9LFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMjk4LVxcdHsgLyogViA9IENvbmV4YW50XFx0XFx0XFx0UCA9IEFEU0wgbW9kZW1cXHRcXHRcXHRcXHQqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMjk5OlxcdFxcdFVTQl9ERVZJQ0UoMHgwNTcyLCAweGNiMDYpLFxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcXHUwMDI2Y3hhY3J1X2NiMDBcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMwMC1cXHR9LFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzAxLVxcdHsgLyogViA9IENvbmV4YW50XFx0XFx0XFx0UCA9IEFEU0wgbW9kZW0gKFpURSBaWERTTCA4NTIpXFx0XFx0Ki9cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTMwMjpcXHRcXHRVU0JfREVWSUNFKDB4MDU3MiwgMHhjYjA3KSxcXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXFx1MDAyNmN4YWNydV9jYjAwXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMDMtXFx0fSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMwNC1cXHR7IC8qIFYgPSBPbGl0ZWNcXHRcXHRcXHRcXHRQID0gQURTTCBtb2RlbSB2ZXJzaW9uIDJcXHRcXHQqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzA1OlxcdFxcdFVTQl9ERVZJQ0UoMHgwOGUzLCAweDAxMDApLFxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcXHUwMDI2Y3hhY3J1X2NhZmVcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMwNi1cXHR9LFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzA3LVxcdHsgLyogViA9IE9saXRlY1xcdFxcdFxcdFxcdFAgPSBBRFNMIG1vZGVtIHZlcnNpb24gM1xcdFxcdCovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzMDg6XFx0XFx0VVNCX0RFVklDRSgweDA4ZTMsIDB4MDEwMiksXFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFxcdTAwMjZjeGFjcnVfY2IwMFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzA5LVxcdH0sXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMTAtXFx0eyAvKiBWID0gVHJ1c3QvQW1pZ28gVGVjaG5vbG9neSBDby5cXHRQID0gQU1YLUNBODZVXFx0XFx0XFx0XFx0Ki9cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTMxMTpcXHRcXHRVU0JfREVWSUNFKDB4MGViMCwgMHgzNDU3KSxcXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXFx1MDAyNmN4YWNydV9jYWZlXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMTItXFx0fSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMxMy1cXHR7IC8qIFYgPSBab29tXFx0XFx0XFx0XFx0UCA9IDU1MTBcXHRcXHRcXHRcXHQqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzE0OlxcdFxcdFVTQl9ERVZJQ0UoMHgxODAzLCAweDU1MTApLFxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcXHUwMDI2Y3hhY3J1X2NiMDBcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMxNS1cXHR9LFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzE2LVxcdHsgLyogViA9IERyYXl0ZWtcXHRcXHRcXHRQID0gVmlnb3IgMzE4XFx0XFx0XFx0XFx0Ki9cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTMxNzpcXHRcXHRVU0JfREVWSUNFKDB4MDY3NSwgMHgwMjAwKSxcXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXFx1MDAyNmN4YWNydV9jYjAwXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMTgtXFx0fSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMxOS1cXHR7IC8qIFYgPSBaeXhlbFxcdFxcdFxcdFxcdFAgPSA2MzAtQzEgYWthIE9NTkkgQURTTCBVU0IgKEFubmV4IEEpXFx0Ki9cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTMyMDpcXHRcXHRVU0JfREVWSUNFKDB4MDU4NiwgMHgzMzBhKSxcXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXFx1MDAyNmN4YWNydV9jYjAwXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMjEtXFx0fSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMyMi1cXHR7IC8qIFYgPSBaeXhlbFxcdFxcdFxcdFxcdFAgPSA2MzAtQzMgYWthIE9NTkkgQURTTCBVU0IgKEFubmV4IEIpXFx0Ki9cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTMyMzpcXHRcXHRVU0JfREVWSUNFKDB4MDU4NiwgMHgzMzBiKSxcXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXFx1MDAyNmN4YWNydV9jYjAwXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMjQtXFx0fSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMyNS1cXHR7IC8qIFYgPSBBZXRocmFcXHRcXHRcXHRcXHRQID0gU3Rhcm1vZGVtIFVNMTAyMFxcdFxcdFxcdCovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzMjY6XFx0XFx0VVNCX0RFVklDRSgweDA2NTksIDB4MDAyMCksXFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFxcdTAwMjZjeGFjcnVfY2IwMFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzI3LVxcdH0sXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMjgtXFx0eyAvKiBWID0gQXp0ZWNoIFN5c3RlbXNcXHRcXHRcXHRQID0gPyBBS0EgUGlyZWxsaSBBVUEtMDEwXFx0XFx0Ki9cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTMyOTpcXHRcXHRVU0JfREVWSUNFKDB4MDUwOSwgMHgwODEyKSxcXHQuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgXFx1MDAyNmN4YWNydV9jYjAwXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzMzAtXFx0fSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMzMS1cXHR7IC8qIFYgPSBOZXRvcGlhXFx0XFx0XFx0UCA9IENheW1hbiAzMzQxKEFubmV4IEEpLzMzNTEoQW5uZXggQilcXHQqL1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzMyOlxcdFxcdFVTQl9ERVZJQ0UoMHgxMDBkLCAweGNiMDEpLFxcdC5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSBcXHUwMDI2Y3hhY3J1X2NiMDBcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMzMy1cXHR9LFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzM0LVxcdHsgLyogViA9IE5ldG9waWFcXHRcXHRcXHRQID0gQ2F5bWFuIDMzNDIoQW5uZXggQSkvMzM1MihBbm5leCBCKVxcdCovXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzMzU6XFx0XFx0VVNCX0RFVklDRSgweDEwMGQsIDB4MzM0MiksXFx0LmRyaXZlcl9pbmZvID0gKHVuc2lnbmVkIGxvbmcpIFxcdTAwMjZjeGFjcnVfY2IwMFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzM2LVxcdH0sXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTMzOS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTM0MDpNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgY3hhY3J1X3VzYl9pZHMpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzQxLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzQyOnN0YXRpYyBzdHJ1Y3QgdXNiYXRtX2RyaXZlciBjeGFjcnVfZHJpdmVyID0ge1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzQzOlxcdC5kcml2ZXJfbmFtZVxcdD0gY3hhY3J1X2RyaXZlcl9uYW1lLFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzQ0OlxcdC5iaW5kXFx0XFx0PSBjeGFjcnVfYmluZCxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTM0NTpcXHQuaGVhdnlfaW5pdFxcdD0gY3hhY3J1X2hlYXZ5X2luaXQsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzNDY6XFx0LnVuYmluZFxcdFxcdD0gY3hhY3J1X3VuYmluZCxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTM0NzpcXHQuYXRtX3N0YXJ0XFx0PSBjeGFjcnVfYXRtX3N0YXJ0LFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzQ4LVxcdC5idWxrX2luXFx0PSBDWEFDUlVfRVBfREFUQSxcXG4tLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzUzLVxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzU0OnN0YXRpYyBpbnQgY3hhY3J1X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTM1NS1cXHRcXHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTM3MS1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTM3MjpcXHRyZXR1cm4gdXNiYXRtX3VzYl9wcm9iZShpbnRmLCBpZCwgXFx1MDAyNmN4YWNydV9kcml2ZXIpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzczLX1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmMtMTM3NC1cXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTM3NTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgY3hhY3J1X3VzYl9kcml2ZXIgPSB7XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzNzY6XFx0Lm5hbWVcXHRcXHQ9IGN4YWNydV9kcml2ZXJfbmFtZSxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTM3NzpcXHQucHJvYmVcXHRcXHQ9IGN4YWNydV91c2JfcHJvYmUsXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzNzgtXFx0LmRpc2Nvbm5lY3RcXHQ9IHVzYmF0bV91c2JfZGlzY29ubmVjdCxcXG5kcml2ZXJzL3VzYi9hdG0vY3hhY3J1LmM6MTM3OTpcXHQuaWRfdGFibGVcXHQ9IGN4YWNydV91c2JfaWRzLFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYzoxMzgwOlxcdC5kZXZfZ3JvdXBzXFx0PSBjeGFjcnVfZ3JvdXBzLFxcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzgxLX07XFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jLTEzODItXFxuZHJpdmVycy91c2IvYXRtL2N4YWNydS5jOjEzODM6bW9kdWxlX3VzYl9kcml2ZXIoY3hhY3J1X3VzYl9kcml2ZXIpO1xcbmRyaXZlcnMvdXNiL2F0bS9jeGFjcnUuYy0xMzg0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMjowMC40MjI4ODYyNjNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI2ODIzNTUxNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgY3hhY3J1X2NtYCBQYXRjaCBmb3IgRnV6emluZyBGb2N1cyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gYGN4YWNydV9jbWAuIE15IHByaW1hcnkgZ29hbCBpcyB0byBpZGVudGlmeSB0aGUgbW9zdCBlZmZlY3RpdmUgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLCBnaXZlbiB0aGF0IHRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgdGhpcyBjb21wb25lbnQuXG5cbkZpcnN0LCBJIGlkZW50aWZpZWQgdGhlIGVudHJ5IHBvaW50czogYGN4YWNydV9iaW5kYCwgYGN4YWNydV9oZWF2eV9pbml0YCwgYGN4YWNydV91bmJpbmRgLCBgY3hhY3J1X2F0bV9zdGFydGAsIGBjeGFjcnVfdXNiX3Byb2JlYCwgYGFkc2xfc3RhdGVfc3RvcmVgLCBgYWRzbF9jb25maWdfc3RvcmVgLCBhbmQgYGN4YWNydV9wb2xsX3N0YXR1c2AuIFRoZSBsYXN0IG9uZSBpcyBpbnRlcmVzdGluZyBhcyBpdCBvcGVyYXRlcyB2aWEgYSB3b3JrcXVldWUuXG5cblRoZSBwYXRjaCBpdHNlbGYgbW9kaWZpZXMgYGN4YWNydV9jbWAuIE5vdywgd2hlcmUgZG9lcyBgY3hhY3J1X2NtYCBnZXQgY2FsbGVkPyBJdCdzIGNhbGxlZCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGJ5IGEgYnVuY2ggb2YgZnVuY3Rpb25zOiBgY3hhY3J1X2hlYXZ5X2luaXRgLCBgY3hhY3J1X2F0bV9zdGFydGAsIGBjeGFjcnVfY2FyZF9zdGF0dXNgICh3aGljaCBpcyBpdHNlbGYgY2FsbGVkIGJ5IGBjeGFjcnVfYmluZGAgYW5kIGBjeGFjcnVfaGVhdnlfaW5pdGApLCBgY3hhY3J1X3BvbGxfc3RhdHVzYCAodmlhIGBjeGFjcnVfY21fZ2V0X2FycmF5YCksIGBhZHNsX3N0YXRlX3N0b3JlYCwgYW5kIGBhZHNsX2NvbmZpZ19zdG9yZWAuXG5cblNvLCB0aGUgaW5pdGlhbCBsaXN0IG9mIGZvY3VzIHN5bWJvbHMgc2hvdWxkIGluY2x1ZGU6IGBjeGFjcnVfaGVhdnlfaW5pdGAsIGBjeGFjcnVfYXRtX3N0YXJ0YCwgYGN4YWNydV9iaW5kYCwgYGFkc2xfc3RhdGVfc3RvcmVgLCBgYWRzbF9jb25maWdfc3RvcmVgLCBhbmQgYGN4YWNydV9wb2xsX3N0YXR1c2AuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIGlzOiBpcyBgY3hhY3J1X2NtYCBpbmxpbmVkPyBJdCdzIHN0YXRpYywgd2hpY2ggaXMgYSBrZXkgY29uc2lkZXJhdGlvbi4gR2l2ZW4gaXRzIHNpemUgYW5kIG11bHRpcGxlIGNhbGwgc2l0ZXMsIGl0J3MgbGlrZWx5ICpub3QqIGlubGluZWQuIEhvd2V2ZXIsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBwcm92aWRpbmcgZWZmZWN0aXZlIHN5bWJvbHMgZm9yIGZ1enppbmcuIFNpbmNlIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHByaW9yaXRpemUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMsIEkgbmVlZCB0byBmb2N1cyBvbiB0aG9zZSB0aGF0IGNhbGwgYGN4YWNydV9jbWAgYW5kIGFyZSB0aGVtc2VsdmVzIGVudHJ5cG9pbnRzLCBvciBjYWxsYmFja3MuXG5cbkFoLCB5ZXMuIGBjeGFjcnVfaGVhdnlfaW5pdGAsIGBjeGFjcnVfYXRtX3N0YXJ0YCwgYGN4YWNydV9iaW5kYCwgYGFkc2xfc3RhdGVfc3RvcmVgLCBgYWRzbF9jb25maWdfc3RvcmVgLCBhbmQgYGN4YWNydV9wb2xsX3N0YXR1c2AgYXJlIGFsbCBzdGF0aWMuIEJ1dCwgdGhleSBhcmUgdXNlZCBhcyBjYWxsYmFja3Mgd2l0aGluIHRoZSBkcml2ZXIuIFNpbWlsYXJseSwgYGN4YWNydV91c2JfcHJvYmVgIGlzIGEgcHJvYmUgZnVuY3Rpb24sIHdoaWNoLCB3aGlsZSBzdGF0aWMsIGlzIGFsc28gYW4gZW50cnkgcG9pbnQuIFRoaXMgbWFrZXMgdGhlbSBnb29kIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcsIGV2ZW4gaWYgdGhleSdyZSBzdGF0aWMsIGJlY2F1c2UgdGhleSBjYW4gc3RpbGwgYmUgcmVhY2hlZC4gU2luY2Ugc3l6a2FsbGVyIGNhbiByZWFjaCBzdGF0aWMgZnVuY3Rpb25zIGlmIHJlYWNoYWJsZSwgYnV0IGBGb2N1c1N5bWJvbHNgIHdhbnRzIGZ1bmN0aW9uIG5hbWVzLCB0aGlzIHNob3VsZCBiZSBmaW5lLlxuXG5Ib3dldmVyLCBzaW5jZSBgY3hhY3J1X2NtYCBpdHNlbGYgaXMgdGhlIGZvY3VzIG9mIHRoZSBwYXRjaCwgZXZlbiBpZiBpdCBpcyBzdGF0aWMsIGl0J3Mgc3RpbGwgYSBnb29kIGZvY3VzIHN5bWJvbC5cblxuR2l2ZW4gdGhlIGluc3RydWN0aW9ucywgYW5kIHRvIGJlIHNhZmUsIEknbSBnb2luZyB0byBpbmNsdWRlIGJvdGggYGN4YWNydV9jbWAgYW5kIHRoZSBjYWxsYmFjayBlbnRyeXBvaW50czogYGN4YWNydV9oZWF2eV9pbml0YCwgYGN4YWNydV9hdG1fc3RhcnRgLCBgY3hhY3J1X2JpbmRgLCBgYWRzbF9zdGF0ZV9zdG9yZWAsIGBhZHNsX2NvbmZpZ19zdG9yZWAsIGFuZCBgY3hhY3J1X3BvbGxfc3RhdHVzYC4gVGhlc2Ugc2VlbSBsaWtlIHRoZSBtb3N0IGVmZmVjdGl2ZSBzeW1ib2xzIGZvciBmdXp6aW5nIHRoaXMgc3BlY2lmaWMgcGF0Y2guXG5cbkkgYWxzbyBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBvcHRpb25zIHRvIGRldGVybWluZSBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBgVVNCX0NYQUNSVWAsIGBVU0JfQVRNYCwgYW5kIGBBVE1gIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDA4NiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMjoxMy4xMDUyNDM3MjhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MzkzMzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBBVE1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2F0bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9hdG0vS2NvbmZpZy01LVxcbm5ldC9hdG0vS2NvbmZpZzo2OmNvbmZpZyBBVE1cXG5uZXQvYXRtL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiQXN5bmNocm9ub3VzIFRyYW5zZmVyIE1vZGUgKEFUTSlcXFwiXFxuLS1cXG5uZXQvYXRtL0tjb25maWctMjEtXFxubmV0L2F0bS9LY29uZmlnOjIyOmNvbmZpZyBBVE1fQlIyNjg0XFxubmV0L2F0bS9LY29uZmlnLTIzLVxcdHRyaXN0YXRlIFxcXCJSRkMxNDgzLzI2ODQgQnJpZGdlZCBwcm90b2NvbHNcXFwiXFxuLS1cXG5uZXQvYXRtL0tjb25maWctMzAtXFxubmV0L2F0bS9LY29uZmlnOjMxOmNvbmZpZyBBVE1fQlIyNjg0X0lQRklMVEVSXFxubmV0L2F0bS9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIlBlci1WQyBJUCBmaWx0ZXIga2x1ZGdlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMjoxMy4xNTQ2NDQ0MDdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0MjAwNTY1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhpcywgY29uc2lkZXJpbmcgSSdtIGRlZXAgaW4gdGhlIHdlZWRzIHdpdGggdGhpcyBzdHVmZjpcblxuKipDb25maWd1cmF0aW9uIERlZXAgRGl2ZTogQVRNIGFuZCBVU0IqKlxuXG5Pa2F5LCBzbyB3ZSdyZSB0YWxraW5nIEFUTSBjb25maWcgaGVyZS4gU3BlY2lmaWNhbGx5LCB0aGUgcm9vdCBvZiB0aGlzIGlzIGBBVE1gLiBUaGlzIG1lYW5zIEkgbmVlZCB0byBlbmFibGUgYSBmZXcga2V5IGNvbmZpZ3MgZm9yIHRoZSBBVE0gZnVuY3Rpb25hbGl0eSB0byBhY3R1YWxseSAqZG8qIGFueXRoaW5nLiBTZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBgVVNCX0NYQUNSVWAsIGBVU0JfQVRNYCwgYW5kIHRoZSBiYXNlIGBBVE1gIGl0c2VsZiBhcmUgdGhlIHBsYXllcnMuIE5vIHN1cnByaXNlcyB0aGVyZS5cblxuQnV0LCBJIGFsd2F5cyBkb3VibGUtY2hlY2sgdGhlc2UgdGhpbmdzLiBMZXQncyBjb25maXJtIHRoYXQgYFVTQl9BVE1gIGlzIGJlaGF2aW5nIGFzIGV4cGVjdGVkLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBpbW1lZGlhdGVseSBqdW1wIG92ZXIgdG8gdGhlIGBkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBhbnkgb3RoZXIgb3B0aW9ucyBhcm91bmQgYFVTQl9BVE1gIGFyZSBjbGVhciwgZXNwZWNpYWxseSBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgSSBtaWdodCBub3QgYmUgaW1tZWRpYXRlbHkgYXdhcmUgb2YuIEdvdHRhIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgc29saWQsIHN0YWJsZSBiYXNlIGZvciB0aGUgQVRNIG92ZXIgVVNCIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxODk4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MjI6MTYuNzk2NjUyOTU3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDIxNjYxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0FUTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZy01LVxcbmRyaXZlcnMvdXNiL2F0bS9LY29uZmlnOjY6bWVudWNvbmZpZyBVU0JfQVRNXFxuZHJpdmVycy91c2IvYXRtL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiVVNCIERTTCBtb2RlbSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMjoxNi44MzY4NzQxNDdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ5MTU4MzE4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBVU0IgQVRNIGFuZCBDWEFDUlUgRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gdGhlIGV4YWN0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIOKAkyBpdCdzIGBtZW51Y29uZmlnIFVTQl9BVE1gLCBub3Qgc29tZXRoaW5nIGVsc2UgSSBtaWdodCBoYXZlIGluaXRpYWxseSBhc3N1bWVkLiBHb29kLiBUaGlzIGNsYXJpZmllcyB0aGUgc3BlY2lmaWMgcGF0aCB3ZSdyZSBkZWFsaW5nIHdpdGguXG5cbk5vdywgd2l0aCB0aGF0IGNvbmZpcm1lZCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCwgaWYgYW55LCBiZXR3ZWVuIGBVU0JfQVRNYCBhbmQgYFVTQl9DWEFDUlVgLiBBcmUgdGhleSByZWxhdGVkPyBJcyBvbmUgYSBwcmVyZXF1aXNpdGUgb3IgYSBkZXBlbmRlbmN5IG9mIHRoZSBvdGhlcj8gQXJlIHRoZXkgbXV0dWFsbHkgZXhjbHVzaXZlPyBUaGlzIG5lZWRzIGNsYXJpZmljYXRpb24uIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgS2NvbmZpZyBmaWxlcywgb3IgcG90ZW50aWFsbHkgdGhlIHNvdXJjZSBjb2RlIGl0c2VsZiwgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZXhwbGljaXQgZGVwZW5kZW5jaWVzIGRlY2xhcmVkIG9yIGltcGxpY2l0IHJlbGF0aW9uc2hpcHMgdGhhdCBJIGNhbiBkZXRlcm1pbmUuIFRoZSBnb2FsIGlzIGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhlc2UgdHdvIGNvbmZpZ3VyYXRpb25zIGludGVyYWN0IHdpdGhpbiB0aGUgYnJvYWRlciBVU0IgYW5kIG5ldHdvcmtpbmcgZWNvc3lzdGVtLiBUaGlzIHdpbGwgZGlyZWN0bHkgaW1wYWN0IGhvdyBJIGFwcHJvYWNoIGFueSBjb25maWd1cmF0aW9uIGNoYW5nZXMgb3IgdHJvdWJsZXNob290aW5nIHN0ZXBzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjI1NiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIyOjIwLjMyODQ2MDAxMVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIwNjQ5OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9DWEFDUlVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvYXRtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvYXRtL0tjb25maWc9MjA9Y29uZmlnIFVTQl9TUEVFRFRPVUNIXFxuLS1cXG5kcml2ZXJzL3VzYi9hdG0vS2NvbmZpZy0zMS1cXG5kcml2ZXJzL3VzYi9hdG0vS2NvbmZpZzozMjpjb25maWcgVVNCX0NYQUNSVVxcbmRyaXZlcnMvdXNiL2F0bS9LY29uZmlnLTMzLVxcdHRyaXN0YXRlIFxcXCJDb25leGFudCBBY2Nlc3NSdW5uZXIgVVNCIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIyOjIwLjM3MDUyODg4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMjI1NjgwOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKkFuYWx5emluZyBGaXJtd2FyZSBMb2FkaW5nIGFuZCBJbmxpbmluZyoqXG5cbkFscmlnaHQsIHRoZSBzeXN0ZW0gaGFzIGNob3NlbiBgRldfTE9BREVSYCBhcyB0aGUgcmVzcG9uc2libGUgY29tcG9uZW50IGZvciB0aGlzIG9wZXJhdGlvbi4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGNoYXJhY3RlcmlzdGljcyBvZiBgY3hhY3J1X2NtYC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBgY3hhY3J1X2NtYCBjb21wb25lbnQgaXMgaW5saW5lZC4gSWYgc28sIHRoYXQncyBnb2luZyB0byBhZmZlY3QgdGhlIG92ZXJhbGwgbG9hZGluZyBzdHJhdGVneSBhbmQgYW55IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMuIEknbSBmb2N1c2luZyBvbiBpdHMgc2l6ZSBiZWNhdXNlIGlubGluaW5nIGRlY2lzaW9ucyBvZnRlbiBoaW5nZSBvbiB0aGF0IGZhY3Rvci4gQSBzbWFsbGVyLCBpbmxpbmVkIG1vZHVsZSBvZmZlcnMgYWR2YW50YWdlcyBpbiB0ZXJtcyBvZiByZWR1Y2VkIG92ZXJoZWFkLCB3aGlsZSBhIGxhcmdlciBvbmUgY291bGQgYmVuZWZpdCBmcm9tIGJlaW5nIGxvYWRlZCBzZXBhcmF0ZWx5LiBJJ20gbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSB0eXBpY2FsIHRocmVzaG9sZHMgYW5kIGNvbmRpdGlvbnMgdGhhdCB3b3VsZCB0cmlnZ2VyIGFuIGlubGluaW5nIGNob2ljZSBmb3IgdGhpcyB0eXBlIG9mIGNvbXBvbmVudC4gSXTigJlzIGFuIGVzc2VudGlhbCBwYXJ0IG9mIGRldGVybWluaW5nIGVmZmljaWVuY3ksIGZvciB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjYxNSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIyOjI0LjM5MzA5OTE4M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODMxNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvYXRtL2N4YWNydS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2MDA6XFx0XFx0dGltZXJfZGVsZXRlX3N5bmMoXFx1MDAyNnRpbWVyLnRpbWVyKTtcXG4gNjAxOlxcdFxcdHRpbWVyX2Rlc3Ryb3lfb25fc3RhY2soXFx1MDAyNnRpbWVyLnRpbWVyKTtcXG4gNjAyOlxcdFxcbiA2MDM6XFx0XFx0aWYgKGFjdHVhbF9sZW5ndGgpXFxuIDYwNDpcXHRcXHRcXHQqYWN0dWFsX2xlbmd0aCA9IHVyYi1cXHUwMDNlYWN0dWFsX2xlbmd0aDtcXG4gNjA1OlxcdFxcdHJldHVybiB1cmItXFx1MDAzZXN0YXR1czsgLyogbXVzdCByZWFkIHN0YXR1cyBhZnRlciBjb21wbGV0aW9uICovXFxuIDYwNjpcXHR9XFxuIDYwNzpcXHRcXG4gNjA4OlxcdHN0YXRpYyBpbnQgY3hhY3J1X2NtKHN0cnVjdCBjeGFjcnVfZGF0YSAqaW5zdGFuY2UsIGVudW0gY3hhY3J1X2NtX3JlcXVlc3QgY20sXFxuIDYwOTpcXHRcXHRcXHQgICAgIHU4ICp3ZGF0YSwgaW50IHdzaXplLCB1OCAqcmRhdGEsIGludCByc2l6ZSlcXG4gNjEwOlxcdHtcXG4gNjExOlxcdFxcdGludCByZXQsIGFjdGxlbjtcXG4gNjEyOlxcdFxcdGludCBvZmZiLCBvZmZkO1xcbiA2MTM6XFx0XFx0Y29uc3QgaW50IHN0cmlkZSA9IENNRF9QQUNLRVRfU0laRSAtIDQ7XFxuIDYxNDpcXHRcXHR1OCAqd2J1ZiA9IGluc3RhbmNlLVxcdTAwM2VzbmRfYnVmO1xcbiA2MTU6XFx0XFx0dTggKnJidWYgPSBpbnN0YW5jZS1cXHUwMDNlcmN2X2J1ZjtcXG4gNjE2OlxcdFxcdGludCB3YnVmbGVuID0gKCh3c2l6ZSAtIDEpIC8gc3RyaWRlICsgMSkgKiBDTURfUEFDS0VUX1NJWkU7XFxuIDYxNzpcXHRcXHRpbnQgcmJ1ZmxlbiA9ICgocnNpemUgLSAxKSAvIHN0cmlkZSArIDEpICogQ01EX1BBQ0tFVF9TSVpFO1xcbiA2MTg6XFx0XFxuIDYxOTpcXHRcXHRpZiAod2J1ZmxlbiBcXHUwMDNlIFBBR0VfU0laRSB8fCByYnVmbGVuIFxcdTAwM2UgUEFHRV9TSVpFKSB7XFxuIDYyMDpcXHRcXHRcXHRpZiAocHJpbnRrX3JhdGVsaW1pdCgpKVxcbiA2MjE6XFx0XFx0XFx0XFx0dXNiX2VycihpbnN0YW5jZS1cXHUwMDNldXNiYXRtLCBcXFwicmVxdWVzdGVkIHRyYW5zZmVyIHNpemUgdG9vIGxhcmdlICglZCwgJWQpXFxcXG5cXFwiLFxcbiA2MjI6XFx0XFx0XFx0XFx0XFx0d2J1ZmxlbiwgcmJ1Zmxlbik7XFxuIDYyMzpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbiA2MjQ6XFx0XFx0XFx0Z290byBlcnI7XFxuIDYyNTpcXHRcXHR9XFxuIDYyNjpcXHRcXG4gNjI3OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmluc3RhbmNlLVxcdTAwM2VjbV9zZXJpYWxpemUpO1xcbiA2Mjg6XFx0XFxuIDYyOTpcXHRcXHQvKiBzdWJtaXQgcmVhZGluZyB1cmIgYmVmb3JlIHRoZSB3cml0aW5nIG9uZSAqL1xcbiA2MzA6XFx0XFx0aW5pdF9jb21wbGV0aW9uKFxcdTAwMjZpbnN0YW5jZS1cXHUwMDNlcmN2X2RvbmUpO1xcbiA2MzE6XFx0XFx0cmV0ID0gdXNiX3N1Ym1pdF91cmIoaW5zdGFuY2UtXFx1MDAzZXJjdl91cmIsIEdGUF9LRVJORUwpO1xcbiA2MzI6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gNjMzOlxcdFxcdFxcdGlmIChwcmludGtfcmF0ZWxpbWl0KCkpXFxuIDYzNDpcXHRcXHRcXHRcXHR1c2JfZXJyKGluc3RhbmNlLVxcdTAwM2V1c2JhdG0sIFxcXCJzdWJtaXQgb2YgcmVhZCB1cmIgZm9yIGNtICUjeCBmYWlsZWQgKCVkKVxcXFxuXFxcIixcXG4gNjM1OlxcdFxcdFxcdFxcdFxcdGNtLCByZXQpO1xcbiA2MzY6XFx0XFx0XFx0Z290byBmYWlsO1xcbiA2Mzc6XFx0XFx0fVxcbiA2Mzg6XFx0XFxuIDYzOTpcXHRcXHRtZW1zZXQod2J1ZiwgMCwgd2J1Zmxlbik7XFxuIDY0MDpcXHRcXHQvKiBoYW5kbGUgd3NpemUgPT0gMCAqL1xcbiA2NDE6XFx0XFx0d2J1ZlswXSA9IGNtO1xcbiA2NDI6XFx0XFx0Zm9yIChvZmZiID0gb2ZmZCA9IDA7IG9mZmQgXFx1MDAzYyB3c2l6ZTsgb2ZmZCArPSBzdHJpZGUsIG9mZmIgKz0gQ01EX1BBQ0tFVF9TSVpFKSB7XFxuIDY0MzpcXHRcXHRcXHR3YnVmW29mZmJdID0gY207XFxuIDY0NDpcXHRcXHRcXHRtZW1jcHkod2J1ZiArIG9mZmIgKyA0LCB3ZGF0YSArIG9mZmQsIG1pbl90KGludCwgc3RyaWRlLCB3c2l6ZSAtIG9mZmQpKTtcXG4gNjQ1OlxcdFxcdH1cXG4gNjQ2OlxcdFxcbiA2NDc6XFx0XFx0aW5zdGFuY2UtXFx1MDAzZXNuZF91cmItXFx1MDAzZXRyYW5zZmVyX2J1ZmZlcl9sZW5ndGggPSB3YnVmbGVuO1xcbiA2NDg6XFx0XFx0aW5pdF9jb21wbGV0aW9uKFxcdTAwMjZpbnN0YW5jZS1cXHUwMDNlc25kX2RvbmUpO1xcbiA2NDk6XFx0XFx0cmV0ID0gdXNiX3N1Ym1pdF91cmIoaW5zdGFuY2UtXFx1MDAzZXNuZF91cmIsIEdGUF9LRVJORUwpO1xcbiA2NTA6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gNjUxOlxcdFxcdFxcdGlmIChwcmludGtfcmF0ZWxpbWl0KCkpXFxuIDY1MjpcXHRcXHRcXHRcXHR1c2JfZXJyKGluc3RhbmNlLVxcdTAwM2V1c2JhdG0sIFxcXCJzdWJtaXQgb2Ygd3JpdGUgdXJiIGZvciBjbSAlI3ggZmFpbGVkICglZClcXFxcblxcXCIsXFxuIDY1MzpcXHRcXHRcXHRcXHRcXHRjbSwgcmV0KTtcXG4gNjU0OlxcdFxcdFxcdGdvdG8gZmFpbDtcXG4gNjU1OlxcdFxcdH1cXG4gNjU2OlxcdFxcbiA2NTc6XFx0XFx0cmV0ID0gY3hhY3J1X3N0YXJ0X3dhaXRfdXJiKGluc3RhbmNlLVxcdTAwM2VzbmRfdXJiLCBcXHUwMDI2aW5zdGFuY2UtXFx1MDAzZXNuZF9kb25lLCBOVUxMKTtcXG4gNjU4OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIDY1OTpcXHRcXHRcXHRpZiAocHJpbnRrX3JhdGVsaW1pdCgpKVxcbiA2NjA6XFx0XFx0XFx0XFx0dXNiX2VycihpbnN0YW5jZS1cXHUwMDNldXNiYXRtLCBcXFwic2VuZCBvZiBjbSAlI3ggZmFpbGVkICglZClcXFxcblxcXCIsIGNtLCByZXQpO1xcbiA2NjE6XFx0XFx0XFx0Z290byBmYWlsO1xcbiA2NjI6XFx0XFx0fVxcbiA2NjM6XFx0XFxuIDY2NDpcXHRcXHRyZXQgPSBjeGFjcnVfc3RhcnRfd2FpdF91cmIoaW5zdGFuY2UtXFx1MDAzZXJjdl91cmIsIFxcdTAwMjZpbnN0YW5jZS1cXHUwMDNlcmN2X2RvbmUsIFxcdTAwMjZhY3RsZW4pO1xcbiA2NjU6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gNjY2OlxcdFxcdFxcdGlmIChwcmludGtfcmF0ZWxpbWl0KCkpXFxuIDY2NzpcXHRcXHRcXHRcXHR1c2JfZXJyKGluc3RhbmNlLVxcdTAwM2V1c2JhdG0sIFxcXCJyZWNlaXZlIG9mIGNtICUjeCBmYWlsZWQgKCVkKVxcXFxuXFxcIiwgY20sIHJldCk7XFxuIDY2ODpcXHRcXHRcXHRnb3RvIGZhaWw7XFxuIDY2OTpcXHRcXHR9XFxuIDY3MDpcXHRcXHRpZiAoYWN0bGVuICUgQ01EX1BBQ0tFVF9TSVpFIHx8ICFhY3RsZW4pIHtcXG4gNjcxOlxcdFxcdFxcdGlmIChwcmludGtfcmF0ZWxpbWl0KCkpXFxuIDY3MjpcXHRcXHRcXHRcXHR1c2JfZXJyKGluc3RhbmNlLVxcdTAwM2V1c2JhdG0sIFxcXCJpbnZhbGlkIHJlc3BvbnNlIGxlbmd0aCB0byBjbSAlI3g6ICVkXFxcXG5cXFwiLFxcbiA2NzM6XFx0XFx0XFx0XFx0XFx0Y20sIGFjdGxlbik7XFxuIDY3NDpcXHRcXHRcXHRyZXQgPSAtRUlPO1xcbiA2NzU6XFx0XFx0XFx0Z290byBmYWlsO1xcbiA2NzY6XFx0XFx0fVxcbiA2Nzc6XFx0XFxuIDY3ODpcXHRcXHQvKiBjaGVjayB0aGUgcmV0dXJuIHN0YXR1cyBhbmQgY29weSB0aGUgZGF0YSB0byB0aGUgb3V0cHV0IGJ1ZmZlciwgaWYgbmVlZGVkICovXFxuIDY3OTpcXHRcXHRmb3IgKG9mZmIgPSBvZmZkID0gMDsgb2ZmZCBcXHUwMDNjIHJzaXplIFxcdTAwMjZcXHUwMDI2IG9mZmIgXFx1MDAzYyBhY3RsZW47IG9mZmIgKz0gQ01EX1BBQ0tFVF9TSVpFKSB7XFxuIDY4MDpcXHRcXHRcXHRpZiAocmJ1ZltvZmZiXSAhPSBjbSkge1xcbiA2ODE6XFx0XFx0XFx0XFx0aWYgKHByaW50a19yYXRlbGltaXQoKSlcXG4gNjgyOlxcdFxcdFxcdFxcdFxcdHVzYl9lcnIoaW5zdGFuY2UtXFx1MDAzZXVzYmF0bSwgXFxcIndyb25nIGNtICUjeCBpbiByZXNwb25zZSB0byBjbSAlI3hcXFxcblxcXCIsXFxuIDY4MzpcXHRcXHRcXHRcXHRcXHRcXHRyYnVmW29mZmJdLCBjbSk7XFxuIDY4NDpcXHRcXHRcXHRcXHRyZXQgPSAtRUlPO1xcbiA2ODU6XFx0XFx0XFx0XFx0Z290byBmYWlsO1xcbiA2ODY6XFx0XFx0XFx0fVxcbiA2ODc6XFx0XFx0XFx0aWYgKHJidWZbb2ZmYiArIDFdICE9IENNX1NUQVRVU19TVUNDRVNTKSB7XFxuIDY4ODpcXHRcXHRcXHRcXHRpZiAocHJpbnRrX3JhdGVsaW1pdCgpKVxcbiA2ODk6XFx0XFx0XFx0XFx0XFx0dXNiX2VycihpbnN0YW5jZS1cXHUwMDNldXNiYXRtLCBcXFwicmVzcG9uc2UgdG8gY20gJSN4IGZhaWxlZDogJSN4XFxcXG5cXFwiLFxcbiA2OTA6XFx0XFx0XFx0XFx0XFx0XFx0Y20sIHJidWZbb2ZmYiArIDFdKTtcXG4gNjkxOlxcdFxcdFxcdFxcdHJldCA9IC1FSU87XFxuIDY5MjpcXHRcXHRcXHRcXHRnb3RvIGZhaWw7XFxuIDY5MzpcXHRcXHRcXHR9XFxuIDY5NDpcXHRcXHRcXHRpZiAob2ZmZCBcXHUwMDNlPSByc2l6ZSlcXG4gNjk1OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiA2OTY6XFx0XFx0XFx0bWVtY3B5KHJkYXRhICsgb2ZmZCwgcmJ1ZiArIG9mZmIgKyA0LCBtaW5fdChpbnQsIHN0cmlkZSwgcnNpemUgLSBvZmZkKSk7XFxuIDY5NzpcXHRcXHRcXHRvZmZkICs9IHN0cmlkZTtcXG4gNjk4OlxcdFxcdH1cXG4gNjk5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMjoyNC4zOTMzODQ1MjNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI5MDUwMTYzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGN4YWNydV9jbSBGdW5jdGlvbiBhbmQgUmVsYXRlZCBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBjeGFjcnVfY21gIGZ1bmN0aW9uLCBhbmQgaXQncyBzdWJzdGFudGlhbCDigJMgcXVpdGUgbGFyZ2UsIGFuZCBpdCBjYWxscyBgY3hhY3J1X3N0YXJ0X3dhaXRfdXJiYCBtdWx0aXBsZSB0aW1lcy4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCdzICpkZWZpbml0ZWx5KiBub3QgaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIEdpdmVuIHRoZSBpbnN0cnVjdGlvbnMsIHdoaWNoIHByaW9yaXRpemUgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLCBvdmVyIGludGVybmFsLCBpbmxpbmVkIGZ1bmN0aW9ucywgSSBzaG91bGQgaW5jbHVkZSBpdCBpbiBgRm9jdXNTeW1ib2xzYC5cblxuQnV0IGhvbGQgb24sIGBjeGFjcnVfY21gICppcyogc3RhdGljLiBUaGlzIHJhaXNlcyBhIGZsYWcuIEl0IG1pZ2h0IG5vdCBiZSBleHBvcnRlZCBhcyBhIHN5bWJvbC4gSG93ZXZlciwgc2luY2UgaXQncyBjb25maXJtZWQgYXMgbm90IGlubGluZWQsIFN5emthbGxlciAqY291bGQqIHBvdGVudGlhbGx5IGZ1enogaXQgaWYgdGhlIGRlYnVnIGluZm8gcHJvdmlkZXMgaXQuIFRvIGJlIG9uIHRoZSBzYWZlIHNpZGUsIGl0IHNlZW1zIGJlc3QgdG8gaW5jbHVkZSB0aGUgaW50ZW5kZWQgZW50cnlwb2ludHMgb2YgdGhlIHN5c3RlbS5cblxuVGhvc2UgZW50cnkgcG9pbnRzIGxvb2sgbGlrZSB0aGV5IGFyZTpcbiogICBgY3hhY3J1X2hlYXZ5X2luaXRgXG4qICAgYGN4YWNydV9hdG1fc3RhcnRgXG4qICAgYGN4YWNydV9iaW5kYFxuKiAgIGBhZHNsX3N0YXRlX3N0b3JlYFxuKiAgIGBhZHNsX2NvbmZpZ19zdG9yZWBcbiogICBgY3hhY3J1X3BvbGxfc3RhdHVzYFxuXG5Ob3csIGxldCdzIGp1c3QgbWFrZSBzdXJlIGFib3V0IHRoYXQgaW5saW5pbmcgZm9yIGBjeGFjcnVfY21gLiBJIG1lYW4sIGl0J3MgYWJvdXQgMTAwIGxpbmVzIGxvbmcuIE5vIHdheSB0aGF0J3MgYmVlbiBpbmxpbmVkLiBZZXAsIEknbSBjb25maWRlbnQuIEknbGwgaW5jbHVkZSBgY3hhY3J1X2NtYCBhbG9uZyB3aXRoIGFsbCB0aG9zZSBleHBsaWNpdCBlbnRyeSBwb2ludHMuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGFsc28gZG91YmxlIGNoZWNrIGZvciBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBPa2F5LCBsZXQncyBzZWUsIGBVU0JfQ1hBQ1JVYCwgYFVTQl9BVE1gLCBhbmQgYEFUTWDigKYgV2FpdCwgYEFUTWAgbG9va3MgbGlrZSB0aGUgcGFyZW50IGNvbmZpZyBvZiBgVVNCX0FUTWAuIEknZCBiZXR0ZXIgY2hlY2sgYG5ldC9hdG0vS2NvbmZpZ2AgdG8gY29uZmlybSB0aGF0IHJlbGF0aW9uc2hpcCBhbmQgbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBpbXBvcnRhbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NTk5LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MjI6MzMuNjgzODg5NTMxWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTY3NzI5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9hdG0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYXRtL0tjb25maWctNS1cXG5uZXQvYXRtL0tjb25maWc6Njpjb25maWcgQVRNXFxubmV0L2F0bS9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIkFzeW5jaHJvbm91cyBUcmFuc2ZlciBNb2RlIChBVE0pXFxcIlxcbi0tXFxubmV0L2F0bS9LY29uZmlnLTIxLVxcbm5ldC9hdG0vS2NvbmZpZzoyMjpjb25maWcgQVRNX0JSMjY4NFxcbm5ldC9hdG0vS2NvbmZpZy0yMy1cXHR0cmlzdGF0ZSBcXFwiUkZDMTQ4My8yNjg0IEJyaWRnZWQgcHJvdG9jb2xzXFxcIlxcbi0tXFxubmV0L2F0bS9LY29uZmlnLTMwLVxcbm5ldC9hdG0vS2NvbmZpZzozMTpjb25maWcgQVRNX0JSMjY4NF9JUEZJTFRFUlxcbm5ldC9hdG0vS2NvbmZpZy0zMi1cXHRib29sIFxcXCJQZXItVkMgSVAgZmlsdGVyIGtsdWRnZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MjI6MzMuNzI1NTcyNzJaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY2MDg4MzExNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIFVTQiBBVE0gQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIEknbSBhdCBhIHBvaW50IHdoZXJlIEknbSBjb25zaWRlcmluZyB0aGUgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIFVTQiBBVE0gc3VwcG9ydC4gTXkgcHJpbWFyeSBjb25jZXJuIGlzIGVuc3VyaW5nIEkndmUgdGhvcm91Z2hseSBleGhhdXN0ZWQgYWxsIHJlbGV2YW50IHNldHRpbmdzLiBJdCdzIGNydWNpYWwgdG8gbGVhdmUgbm8gc3RvbmUgdW50dXJuZWQgaW4gdGhpcyBwaGFzZS5cblxuVGhlcmVmb3JlLCBJJ20gaGVhZGluZyBiYWNrIHRvIGBkcml2ZXJzL3VzYi9hdG0vS2NvbmZpZ2AuIEkgbmVlZCB0byByZS1leGFtaW5lIHRoYXQgZmlsZSB3aXRoIGZyZXNoIGV5ZXMsIGRvdWJsZS1jaGVja2luZyBmb3IgYW55IG92ZXJsb29rZWQgY29uZmlndXJhdGlvbiBudWFuY2VzLiBJIHdhbnQgdG8gbWFrZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBwb3NzaWJpbGl0aWVzLCBkZXBlbmRlbmNpZXMsIG9yIHN1YnRsZXRpZXMgdGhhdCBtaWdodCBpbXBhY3QgdGhlIGZpbmFsIGltcGxlbWVudGF0aW9uLiBJIG5lZWQgdG8gYmUgY2VydGFpbiBJIGhhdmUgY29uc2lkZXJlZCBhbGwgcG9zc2liaWxpdGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU1NTMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODoyMjozOS4zODY0NTc5MDdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDM1MDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfQVRNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2F0bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2F0bS9LY29uZmlnLTUtXFxuZHJpdmVycy91c2IvYXRtL0tjb25maWc6NjptZW51Y29uZmlnIFVTQl9BVE1cXG5kcml2ZXJzL3VzYi9hdG0vS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJVU0IgRFNMIG1vZGVtIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIyOjM5LjQzMTQ5ODg5NloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDcwMzM3NzQyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBVU0IgQVRNIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgVVNCX0FUTWAgY29uZmlndXJhdGlvbiBvcHRpb24sIHdoaWNoLCBhcyBJIHNlZSBpdCwgcmVxdWlyZXMgYSBmZXcga2V5IGVsZW1lbnRzLiBGaXJzdCwgSSBuZWVkIHRvIGVuYWJsZSBgVVNCX0NYQUNSVWAsIGBVU0JfQVRNYCwgYW5kIGBBVE1gIGluIGBFbmFibGVDb25maWdzYC4gVGhhdCdzIHN0cmFpZ2h0Zm9yd2FyZCwgaXQncyBhIG1lbnVjb25maWcgaXNzdWUuXG5cbk5vdywgbG9va2luZyBhdCB0aGUgY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBgY3hhY3J1X2NtYCBmdW5jdGlvbi4uLiBhaCwgeWVzLCBJIHNlZSB0aGUgZml4LiBUaGUgb3JpZ2luYWwgY29kZSB3YXMgbWlzc2luZyBhIGNhbGwgdG8gYHVzYl9raWxsX3VyYmAgaW4gdGhlIGVycm9yIGhhbmRsaW5nIHBhdGguIFRoaXMgbWVhbnMgdGhhdCBpZiBgY3hhY3J1X2NtYCBmYWlsZWQsIHRoZSBgcmN2X3VyYmAgd291bGRuJ3QgYmUgcHJvcGVybHkgY2xlYW5lZCB1cCwgd2hpY2ggY291bGQgbGVhZCB0byBhIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbiBvciwgbW9yZSBjb21tb25seSwgYSBtZW1vcnkgbGVhay4gVGhpcyBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uYWwgY2hhbmdlLiAgSXQgZGlyZWN0bHkgYWRkcmVzc2VzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuXG5cbkdpdmVuIHRoYXQgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIEFUTSBkcml2ZXIgdGhhdCBpcyBhY2Nlc3NpYmxlIHRocm91Z2ggZGV2aWNlIGVtdWxhdGlvbiwgSSdtIG1hcmtpbmcgdGhpcyBhcyBgV29ydGhGdXp6aW5nOiB0cnVlYC4gIFdlIG5lZWQgdG8gdGVzdCB0aGlzIHRob3JvdWdobHkuIEknbSBmb2N1c2luZyBteSBhdHRlbnRpb24gb24gZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBsaWtlIGBjeGFjcnVfY21gLCBgY3hhY3J1X2hlYXZ5X2luaXRgLCBgY3hhY3J1X2F0bV9zdGFydGAsIGBjeGFjcnVfYmluZGAsIGBhZHNsX3N0YXRlX3N0b3JlYCwgYW5kIGBhZHNsX2NvbmZpZ19zdG9yZWAsIGFuZCBgY3hhY3J1X3BvbGxfc3RhdHVzYCB0byBjcmVhdGUgZnV6emluZyB0YXJnZXRzLiBUaGlzIGhlbHBzIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgcmVncmVzc2lvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXRjaC5cblxuRXNzZW50aWFsbHksIHRoZSBwYXRjaCBwcm92aWRlcyBhIGZpeCBieSBlbnN1cmluZyBgcmN2X3VyYmAgaXMgcHJvcGVybHkgY2xlYW5lZCB1cCBvbiBmYWlsdXJlLiBUaGF0J3MgYSBnb29kIHRoaW5nLCBhbmQgd2UgbmVlZCB0byB2ZXJpZnkgaXRzIGNvcnJlY3RuZXNzIGFuZCBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBwcm9ibGVtcy4gIEknbSBjb25maWRlbnQgaW4gbXkgYXNzZXNzbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4MjcsIk91dHB1dFRva2VucyI6MTYxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjIyOjUwLjEzNDg3ODQ3M1oiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NzgwOTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfQ1hBQ1JVXCIsXG4gICAgXCJVU0JfQVRNXCIsXG4gICAgXCJBVE1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjeGFjcnVfY21cIixcbiAgICBcImN4YWNydV9oZWF2eV9pbml0XCIsXG4gICAgXCJjeGFjcnVfYXRtX3N0YXJ0XCIsXG4gICAgXCJjeGFjcnVfYmluZFwiLFxuICAgIFwiYWRzbF9zdGF0ZV9zdG9yZVwiLFxuICAgIFwiYWRzbF9jb25maWdfc3RvcmVcIixcbiAgICBcImN4YWNydV9wb2xsX3N0YXR1c1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSB1c2Jfa2lsbF91cmIgY2FsbCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBjeGFjcnVfY20gdG8gcHJvcGVybHkgY2xlYW4gdXAgdGhlIHJlY2VpdmUgVVJCIG9uIGZhaWx1cmUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIFVTQiBBVE0gZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFVTQiBkZXZpY2UgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9DWEFDUlVcIixcbiAgICBcIlVTQl9BVE1cIixcbiAgICBcIkFUTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN4YWNydV9jbVwiLFxuICAgIFwiY3hhY3J1X2hlYXZ5X2luaXRcIixcbiAgICBcImN4YWNydV9hdG1fc3RhcnRcIixcbiAgICBcImN4YWNydV9iaW5kXCIsXG4gICAgXCJhZHNsX3N0YXRlX3N0b3JlXCIsXG4gICAgXCJhZHNsX2NvbmZpZ19zdG9yZVwiLFxuICAgIFwiY3hhY3J1X3BvbGxfc3RhdHVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHVzYl9raWxsX3VyYiBjYWxsIGluIHRoZSBlcnJvciBwYXRoIG9mIGN4YWNydV9jbSB0byBwcm9wZXJseSBjbGVhbiB1cCB0aGUgcmVjZWl2ZSBVUkIgb24gZmFpbHVyZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgVVNCIEFUTSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGRldmljZSBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowmnrnv[1] Phase: Succeeded StartedAt: 2026-07-31 08:23:15 +0000 UTC FinishedAt: 2026-07-31 08:23:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-31 08:23:15 +0000 UTC FinishedAt: 2026-07-31 08:23:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[2] Phase: Succeeded StartedAt: 2026-07-31 08:23:15 +0000 UTC FinishedAt: 2026-07-31 12:26:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-31 08:23:15 +0000 UTC FinishedAt: 2026-07-31 12:26:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-31 08:23:15 +0000 UTC FinishedAt: 2026-07-31 08:23:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-31 08:23:15 +0000 UTC FinishedAt: 2026-07-31 08:23:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmnrnv/series-workflowmnrnv-convert-artifact-3593333548/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-31 08:23:25 +0000 UTC FinishedAt: 2026-07-31 08:51:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-31 08:23:25 +0000 UTC FinishedAt: 2026-07-31 08:51:59 +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:*7d4fec5d-185c-4ff2-8633-09ded06e09f9,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-workflowmnrnv/series-workflowmnrnv-convert-artifact-3593333548/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": "19e09f1c-8ae7-4c9a-88e8-4bded367c4ac", "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-workflowmnrnv/series-workflowmnrnv-build-action-2683367770/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-31 08:23:25 +0000 UTC FinishedAt: 2026-07-31 08:51:34 +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:*7d4fec5d-185c-4ff2-8633-09ded06e09f9,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-workflowmnrnv/series-workflowmnrnv-convert-artifact-3593333548/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": "19e09f1c-8ae7-4c9a-88e8-4bded367c4ac", "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-workflowmnrnv/series-workflowmnrnv-build-action-2683367770/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-31 08:51:59 +0000 UTC FinishedAt: 2026-07-31 08:51:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-31 08:51:59 +0000 UTC FinishedAt: 2026-07-31 08:51:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-31 08:51:59 +0000 UTC FinishedAt: 2026-07-31 08:52:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-31 08:51:59 +0000 UTC FinishedAt: 2026-07-31 08:52:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmnrnv/series-workflowmnrnv-convert-artifact-3950638571/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-31 08:52:10 +0000 UTC FinishedAt: 2026-07-31 08:54:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-31 08:52:10 +0000 UTC FinishedAt: 2026-07-31 08:54:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*19e09f1c-8ae7-4c9a-88e8-4bded367c4ac,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-workflowmnrnv/series-workflowmnrnv-build-action-2683367770/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-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-31 08:54:19 +0000 UTC FinishedAt: 2026-07-31 08:54:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-31 08:54:19 +0000 UTC FinishedAt: 2026-07-31 08:54:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-31 08:54:19 +0000 UTC FinishedAt: 2026-07-31 09:21:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-31 08:54:19 +0000 UTC FinishedAt: 2026-07-31 09:21:19 +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:*7d4fec5d-185c-4ff2-8633-09ded06e09f9,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-workflowmnrnv/series-workflowmnrnv-convert-artifact-3950638571/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": "7f0a0114-bb7c-4cac-bc11-d2f132d1aa0c", "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-workflowmnrnv/series-workflowmnrnv-build-action-1236218639/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-31 08:54:19 +0000 UTC FinishedAt: 2026-07-31 09:20:44 +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:*7d4fec5d-185c-4ff2-8633-09ded06e09f9,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-workflowmnrnv/series-workflowmnrnv-convert-artifact-3950638571/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": "7f0a0114-bb7c-4cac-bc11-d2f132d1aa0c", "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-workflowmnrnv/series-workflowmnrnv-build-action-1236218639/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-31 09:21:19 +0000 UTC FinishedAt: 2026-07-31 09:21:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-31 09:21:19 +0000 UTC FinishedAt: 2026-07-31 09:21:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-31 09:21:19 +0000 UTC FinishedAt: 2026-07-31 09:23:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-31 09:21:20 +0000 UTC FinishedAt: 2026-07-31 09:23:11 +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:*7f0a0114-bb7c-4cac-bc11-d2f132d1aa0c,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-workflowmnrnv/series-workflowmnrnv-build-action-1236218639/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-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-31 09:23:22 +0000 UTC FinishedAt: 2026-07-31 12:26:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-31 09:23:22 +0000 UTC FinishedAt: 2026-07-31 12:26:42 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"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:*19e09f1c-8ae7-4c9a-88e8-4bded367c4ac,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7f0a0114-bb7c-4cac-bc11-d2f132d1aa0c,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-workflowmnrnv/series-workflowmnrnv-build-action-2683367770/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-workflowmnrnv/series-workflowmnrnv-build-action-1236218639/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-31 09:23:22 +0000 UTC FinishedAt: 2026-07-31 09:23:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-31 09:23:22 +0000 UTC FinishedAt: 2026-07-31 09:23:27 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"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-workflowmnrnv/series-workflowmnrnv-convert-artifact-444813828/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-31 09:23:22 +0000 UTC FinishedAt: 2026-07-31 09:23:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-31 09:23:22 +0000 UTC FinishedAt: 2026-07-31 09:23:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-31 09:23:22 +0000 UTC FinishedAt: 2026-07-31 09:23:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-31 09:23:33 +0000 UTC FinishedAt: 2026-07-31 12:26:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmnrnv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cxacru_cm","cxacru_heavy_init","cxacru_atm_start","cxacru_bind","adsl_state_store","adsl_config_store","cxacru_poll_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_CXACRU","USB_ATM","ATM"],"series_id":"814fa09c-2522-43a7-9a8b-9c1e0cbd3ac7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-31 09:23:33 +0000 UTC FinishedAt: 2026-07-31 12:26:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*19e09f1c-8ae7-4c9a-88e8-4bded367c4ac,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7f0a0114-bb7c-4cac-bc11-d2f132d1aa0c,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-workflowmnrnv/series-workflowmnrnv-build-action-2683367770/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-workflowmnrnv/series-workflowmnrnv-build-action-1236218639/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-workflowmnrnv/series-workflowmnrnv-convert-artifact-444813828/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,}