Name: series-workflow74jhm Phase: Succeeded StartedAt: 2026-07-31 07:58:06 +0000 UTC FinishedAt: 2026-07-31 09:52:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[0] Phase: Succeeded StartedAt: 2026-07-31 07:58:06 +0000 UTC FinishedAt: 2026-07-31 08:02:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 07:58:06 +0000 UTC FinishedAt: 2026-07-31 08:02:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "913998f903fb1432c0046c33003db38a9e8bedb1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH10K", "ATH10K_USB", "NL80211_TESTMODE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "913998f903fb1432c0046c33003db38a9e8bedb1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH10K", "ATH10K_USB", "NL80211_TESTMODE" ], "series_id": "9bf32b3b-cc65-49f6-954f-c02bd2db623d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ath10k_tm_event_wmi", "ath10k_tm_cmd" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDEwSyYjMzQ7LAogICAgJiMzNDtBVEgxMEtfVVNCJiMzNDssCiAgICAmIzM0O05MODAyMTFfVEVTVE1PREUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGgxMGtfdG1fZXZlbnRfd21pJiMzNDssCiAgICAmIzM0O2F0aDEwa190bV9jbWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBhdGgxMGtgIHdpcmVsZXNzIGRyaXZlciYjMzk7cyB0ZXN0bW9kZSBldmVudCBoYW5kbGluZyBsb2dpYyB0byBkcm9wIG5vbi1VVEYgV01JIGV2ZW50cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXImIzM5O3MgZmlybXdhcmUgZXZlbnQgcHJvY2Vzc2luZy4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBpdHMgVVNCIGludGVyZmFjZSBieSBlbXVsYXRpbmcgdGhlIGRldmljZSBhbmQgc2VuZGluZyBXTUkgZXZlbnRzLCBhbmQgdGhlIHRlc3Rtb2RlIGNhbiBiZSBhY3RpdmF0ZWQgdmlhIG5sODAyMTEgY29tbWFuZHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NWViMDQ5OTU3MzBiYTAzMDlmNWIwOGY5M2RjNDM4Y2VhMGI5MDdkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDc6NTk6NDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jXG5pbmRleCBkM2JkMzg1Njk0ZDZlLi4yODJhZTZlMjBjOGVmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmNcbkBAIC0xNTYsNiAmIzQzOzE1NiwxNCBAQCBzdGF0aWMgdm9pZCBhdGgxMGtfdG1fZXZlbnRfc2VnbWVudGVkKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLCBzdHJ1Y3Qgc2tfYlxuIFx0Y2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBib29sIGF0aDEwa190bV9pc191dGZfZXZlbnQodTMyIGNtZF9pZClcbiYjNDM7e1xuJiM0MztcdHJldHVybiBjbWRfaWQgPT0gV01JXzEwWF9QREVWX1VURl9FVkVOVElEIHx8XG4mIzQzO1x0ICAgICAgIGNtZF9pZCA9PSBXTUlfMTBfMl9QREVWX1VURl9FVkVOVElEIHx8XG4mIzQzO1x0ICAgICAgIGNtZF9pZCA9PSBXTUlfMTBfNF9QREVWX1VURl9FVkVOVElEIHx8XG4mIzQzO1x0ICAgICAgIGNtZF9pZCA9PSBXTUlfVExWX1BERVZfVVRGX0VWRU5USUQ7XG4mIzQzO31cbiYjNDM7XG4gLyogUmV0dXJucyB0cnVlIGlmIGNhbGxlZSBjb25zdW1lcyB0aGUgc2tiIGFuZCB0aGUgc2tiIHNob3VsZCBiZSBkaXNjYXJkZWQuXG4gICogUmV0dXJucyBmYWxzZSBpZiBza2IgaXMgbm90IHVzZWQuIERvZXMgbm90IHNsZWVwLlxuICAqL1xuQEAgLTE4Miw2ICYjNDM7MTkwLDEyIEBAIGJvb2wgYXRoMTBrX3RtX2V2ZW50X3dtaShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdCAqL1xuIFx0Y29uc3VtZWQgPSB0cnVlO1xuIFxuJiM0MztcdGlmICghYXRoMTBrX3RtX2lzX3V0Zl9ldmVudChjbWRfaWQpKSB7XG4mIzQzO1x0XHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLFxuJiM0MztcdFx0XHQgICBcJiMzNDt0ZXN0bW9kZSBkcm9wIG5vbi11dGYgZXZlbnQgY21kX2lkICV1XFxuXCYjMzQ7LCBjbWRfaWQpO1xuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmIChhci1cdTAwM2V0ZXN0bW9kZS5leHBlY3RlZF9zZXEgIT0gQVRIMTBLX0ZUTV9TRUdfTk9ORSlcbiBcdFx0YXRoMTBrX3RtX2V2ZW50X3NlZ21lbnRlZChhciwgY21kX2lkLCBza2IpO1xuIFx0ZWxzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEgxMEsmIzM0OywKICAgICYjMzQ7QVRIMTBLX1VTQiYjMzQ7LAogICAgJiMzNDtOTDgwMjExX1RFU1RNT0RFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoMTBrX3RtX2V2ZW50X3dtaSYjMzQ7LAogICAgJiMzNDthdGgxMGtfdG1fY21kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgYXRoMTBrYCB3aXJlbGVzcyBkcml2ZXImIzM5O3MgdGVzdG1vZGUgZXZlbnQgaGFuZGxpbmcgbG9naWMgdG8gZHJvcCBub24tVVRGIFdNSSBldmVudHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGZpcm13YXJlIGV2ZW50IHByb2Nlc3NpbmcuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgaXRzIFVTQiBpbnRlcmZhY2UgYnkgZW11bGF0aW5nIHRoZSBkZXZpY2UgYW5kIHNlbmRpbmcgV01JIGV2ZW50cywgYW5kIHRoZSB0ZXN0bW9kZSBjYW4gYmUgYWN0aXZhdGVkIHZpYSBubDgwMjExIGNvbW1hbmRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTVlYjA0OTk1NzMwYmEwMzA5ZjViMDhmOTNkYzQzOGNlYTBiOTA3ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDA3OjU5OjQwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jCmluZGV4IGQzYmQzODU2OTRkNmUuLjI4MmFlNmUyMGM4ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMKQEAgLTE1Niw2ICYjNDM7MTU2LDE0IEBAIHN0YXRpYyB2b2lkIGF0aDEwa190bV9ldmVudF9zZWdtZW50ZWQoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBjbWRfaWQsIHN0cnVjdCBza19iCiAJY2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTsKIH0KIAomIzQzO3N0YXRpYyBib29sIGF0aDEwa190bV9pc191dGZfZXZlbnQodTMyIGNtZF9pZCkKJiM0Mzt7CiYjNDM7CXJldHVybiBjbWRfaWQgPT0gV01JXzEwWF9QREVWX1VURl9FVkVOVElEIHx8CiYjNDM7CSAgICAgICBjbWRfaWQgPT0gV01JXzEwXzJfUERFVl9VVEZfRVZFTlRJRCB8fAomIzQzOwkgICAgICAgY21kX2lkID09IFdNSV8xMF80X1BERVZfVVRGX0VWRU5USUQgfHwKJiM0MzsJICAgICAgIGNtZF9pZCA9PSBXTUlfVExWX1BERVZfVVRGX0VWRU5USUQ7CiYjNDM7fQomIzQzOwogLyogUmV0dXJucyB0cnVlIGlmIGNhbGxlZSBjb25zdW1lcyB0aGUgc2tiIGFuZCB0aGUgc2tiIHNob3VsZCBiZSBkaXNjYXJkZWQuCiAgKiBSZXR1cm5zIGZhbHNlIGlmIHNrYiBpcyBub3QgdXNlZC4gRG9lcyBub3Qgc2xlZXAuCiAgKi8KQEAgLTE4Miw2ICYjNDM7MTkwLDEyIEBAIGJvb2wgYXRoMTBrX3RtX2V2ZW50X3dtaShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkgKi8KIAljb25zdW1lZCA9IHRydWU7CiAKJiM0MzsJaWYgKCFhdGgxMGtfdG1faXNfdXRmX2V2ZW50KGNtZF9pZCkpIHsKJiM0MzsJCWF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfVEVTVE1PREUsCiYjNDM7CQkJICAgJiMzNDt0ZXN0bW9kZSBkcm9wIG5vbi11dGYgZXZlbnQgY21kX2lkICV1XG4mIzM0OywgY21kX2lkKTsKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwl9CiYjNDM7CiAJaWYgKGFyLSZndDt0ZXN0bW9kZS5leHBlY3RlZF9zZXEgIT0gQVRIMTBLX0ZUTV9TRUdfTk9ORSkKIAkJYXRoMTBrX3RtX2V2ZW50X3NlZ21lbnRlZChhciwgY21kX2lkLCBza2IpOwogCWVsc2UKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM5MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBhdGgxMGsgRHJpdmVyOiBBIFByZWxpbWluYXJ5IEFzc2Vzc21lbnQqKgoKT2theSwgc28gdGhlcmUmIzM5O3MgYSBwYXRjaCBpbiBmcm9udCBvZiBtZSB0aGF0IHR3ZWFrcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRpbmcgYSBjaGVjaywgYGF0aDEwa190bV9pc191dGZfZXZlbnQoY21kX2lkKWAsIGluIGBhdGgxMGtfdG1fZXZlbnRfd21pYC4gRXNzZW50aWFsbHksIGlmIGl0JiMzOTtzIG5vdCBhIFVURiBldmVudCwgdGhlIGNvZGUmIzM5O3MgZHJvcHBpbmcgaXQuIEZpbmUuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gZnV6emluZyB0aGlzIGRyaXZlci4gSXTigJlzIGEgd2lyZWxlc3MgZHJpdmVyLCBzbyBwb3RlbnRpYWxseSB2dWxuZXJhYmxlIGFuZCBpbnRlcmVzdGluZy4KCkJ1dCB3YWl0LiAqYXRoMTBrKi4uLiB0aGF0JiMzOTtzIHRoZSBkcml2ZXIgZm9yIHNwZWNpZmljIEF0aGVyb3MgaGFyZHdhcmUuIFRoaXMgcmFpc2VzIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBvZiB3aGV0aGVyIEkgY2FuIGZ1enogaXQgZWZmZWN0aXZlbHkuIENhbiBJIGV2ZW4gZ2V0IGl0IHRvIHJ1biBpbiBRRU1VPyBXaXJlbGVzcyBkcml2ZXJzIGFyZSBvZnRlbiBmaW5pY2t5IGFib3V0IHBoeXNpY2FsIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBvciBzcGVjaWZpYyBlbXVsYXRpb24gbGF5ZXJzLiBJcyAqYXRoMTBrKiBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGVtdWxhdGVkLCBvciBpcyBpdCBhIHRydWUgaGFyZHdhcmUgZHJpdmVyIChQQ0kvU0RJTy9VU0IpPyBTZWVtcyB0aGUgbGF0dGVyLgoKU28sIGhvdyBjYW4gSSBldmVuIGJlZ2luIHRvIGZ1enogdGhpcz8gQ291bGQgSSBwb3RlbnRpYWxseSBsZXZlcmFnZSBVU0IgZW11bGF0aW9uPyBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgYGF0aDEwa2AgaGF2ZSBhIFVTQiBkcml2ZXIgcGF0aD8gSSBuZWVkIHRvIGNoZWNrIHRoYXQgZmlyc3QuIFRoYXQmIzM5O3MgdGhlIGtleSB0byBtYWtpbmcgYW55IHByb2dyZXNzIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTBrLip1c2ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTA0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlPTM0PWF0aDEwa19zZGlvLXkgJiM0Mzs9IHNkaW8ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZS0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0FUSDEwS19VU0IpICYjNDM7PSBhdGgxMGtfdXNiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGU6Mzc6YXRoMTBrX3VzYi15ICYjNDM7PSB1c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZS0zOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxODpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE5Olx0XHRcdFx0XHQgICBzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpyZWN2X3BpcGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jPTM1PXN0YXRpYyBzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzY6YXRoMTBrX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1NzpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2ZyZWVfdXJiX3RvX3BpcGUoc3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTgtXHRcdFx0XHRcdHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc0OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfY2xlYW51cF9yZWN2X3VyYihzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc5Olx0YXRoMTBrX3VzYl9mcmVlX3VyYl90b19waXBlKHVyYl9jb250ZXh0LVx1MDAzZXBpcGUsIHVyYl9jb250ZXh0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODI6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9mcmVlX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MzpcdFx0XHRcdFx0ICAgc3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA0LVx0Zm9yICg7Oykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDU6XHRcdHVyYl9jb250ZXh0ID0gYXRoMTBrX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHBpcGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExNDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExNjpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTctXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExOS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDEwS19VU0JfUElQRV9NQVg7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMjA6XHRcdGF0aDEwa191c2JfZnJlZV9waXBlX3Jlc291cmNlcyhhciwgXHUwMDI2YXJfdXNiLVx1MDAzZXBpcGVzW2ldKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTIxLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTI1OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfcmVjdl9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyNi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyNy1cdHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0ID0gdXJiLVx1MDAzZWNvbnRleHQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEyODpcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUgPSB1cmJfY29udGV4dC1cdTAwM2VwaXBlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMjk6XHRzdHJ1Y3QgYXRoMTBrICphciA9IHBpcGUtXHUwMDNlYXJfdXNiLVx1MDAzZWFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMzAtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTcyLWNsZWFudXBfcmVjdl91cmI6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE3MzpcdGF0aDEwa191c2JfY2xlYW51cF9yZWN2X3VyYih1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3Ny1cdFx0Lyogb3VyIGZyZWUgdXJicyBhcmUgcGlsaW5nIHVwLCBwb3N0IG1vcmUgdHJhbnNmZXJzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE3ODpcdFx0YXRoMTBrX3VzYl9wb3N0X3JlY3ZfdHJhbnNmZXJzKGFyLCBwaXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTc5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxODI6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl90cmFuc21pdF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE4My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE4NC1cdHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0ID0gdXJiLVx1MDAzZWNvbnRleHQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE4NTpcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUgPSB1cmJfY29udGV4dC1cdTAwM2VwaXBlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxODY6XHRzdHJ1Y3QgYXRoMTBrICphciA9IHBpcGUtXHUwMDNlYXJfdXNiLVx1MDAzZWFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xODctXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTk2LVx0dXJiX2NvbnRleHQtXHUwMDNlc2tiID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTk3Olx0YXRoMTBrX3VzYl9mcmVlX3VyYl90b19waXBlKHVyYl9jb250ZXh0LVx1MDAzZXBpcGUsIHVyYl9jb250ZXh0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTk4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjA0LS8qIHBpcGUgb3BlcmF0aW9ucyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyMDU6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9wb3N0X3JlY3ZfdHJhbnNmZXJzKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyMDY6XHRcdFx0XHRcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnJlY3ZfcGlwZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjA3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTIxMi1cdGZvciAoOzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjEzOlx0XHR1cmJfY29udGV4dCA9IGF0aDEwa191c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShyZWN2X3BpcGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMTQtXHRcdGlmICghdXJiX2NvbnRleHQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMjktXHRcdFx0XHQgIEFUSDEwS19VU0JfUlhfQlVGRkVSX1NJWkUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjIzMDpcdFx0XHRcdCAgYXRoMTBrX3VzYl9yZWN2X2NvbXBsZXRlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTIzMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI1NC1lcnI6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI1NTpcdGF0aDEwa191c2JfY2xlYW51cF9yZWN2X3VyYih1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI1Ni19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjU4OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZmx1c2hfYWxsKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNjA6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjYxLVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI3MTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3N0YXJ0X3JlY3ZfcGlwZXMoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI3Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI3MzpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI3NzpcdGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjc4LVx0XHRcdFx0ICAgICAgIFx1MDAyNmFyX3VzYi1cdTAwM2VwaXBlc1tBVEgxMEtfVVNCX1BJUEVfUlhfREFUQV0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyODE6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl90eF9jb21wbGV0ZShzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjgyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjkyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfcnhfY29tcGxldGUoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI5My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2MDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2lvX2NvbXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM2MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2MjpcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUgPSBjb250YWluZXJfb2Yod29yayxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzYzOlx0XHRcdFx0XHRcdCAgICBzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNjQtXHRcdFx0XHRcdFx0ICAgIGlvX2NvbXBsZXRlX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNjU6XHRzdHJ1Y3QgYXRoMTBrICphciA9IHBpcGUtXHUwMDNlYXJfdXNiLVx1MDAzZWFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNjYtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzY5LVx0XHRpZiAocGlwZS1cdTAwM2VmbGFncyBcdTAwMjYgQVRIMTBLX1VTQl9QSVBFX0ZMQUdfVFgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3MDpcdFx0XHRhdGgxMGtfdXNiX3R4X2NvbXBsZXRlKGFyLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNzEtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzcyOlx0XHRcdGF0aDEwa191c2JfcnhfY29tcGxldGUoYXIsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3My1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzc2OiNkZWZpbmUgQVRIMTBLX1VTQl9NQVhfRElBR19DTUQgKHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzc3OiNkZWZpbmUgQVRIMTBLX1VTQl9NQVhfRElBR19SRVNQIChzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX3Jlc3BfcmVhZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzc5OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZGVzdHJveShzdHJ1Y3QgYXRoMTBrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzgwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzgxOlx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzgzOlx0YXRoMTBrX3VzYl9mbHVzaF9hbGwoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozODQ6XHRhdGgxMGtfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zODUtXHR1c2Jfc2V0X2ludGZkYXRhKGFyX3VzYi1cdTAwM2VpbnRlcmZhY2UsIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozOTE6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9zdGFydChzdHJ1Y3QgYXRoMTBrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzkyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzkzLVx0aW50IGk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM5NDpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5Ni1cdGF0aDEwa19jb3JlX25hcGlfZW5hYmxlKGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzk3Olx0YXRoMTBrX3VzYl9zdGFydF9yZWN2X3BpcGVzKGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzk4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0MDk6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl90eF9zZyhzdHJ1Y3QgYXRoMTBrICphciwgdTggcGlwZV9pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDEwLVx0XHRcdFx0c3RydWN0IGF0aDEwa19oaWZfc2dfaXRlbSAqaXRlbXMsIGludCBuX2l0ZW1zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MTEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0MTI6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDEzOlx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZSA9IFx1MDAyNmFyX3VzYi1cdTAwM2VwaXBlc1twaXBlX2lkXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDE0LVx0c3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqdXJiX2NvbnRleHQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MTktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBuX2l0ZW1zOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0MjA6XHRcdHVyYl9jb250ZXh0ID0gYXRoMTBrX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHBpcGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MjEtXHRcdGlmICghdXJiX2NvbnRleHQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQzOS1cdFx0XHRcdCAgc2tiLVx1MDAzZWxlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDQwOlx0XHRcdFx0ICBhdGgxMGtfdXNiX3RyYW5zbWl0X2NvbXBsZXRlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ0MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ2My1lcnJfZnJlZV91cmJfdG9fcGlwZTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDY0Olx0YXRoMTBrX3VzYl9mcmVlX3VyYl90b19waXBlKHVyYl9jb250ZXh0LVx1MDAzZXBpcGUsIHVyYl9jb250ZXh0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDY1LWVycjpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDY5OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfaGlmX3N0b3Aoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ3MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ3MTpcdGF0aDEwa191c2JfZmx1c2hfYWxsKGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDcyLVx0YXRoMTBrX2NvcmVfbmFwaV9zeW5jX2Rpc2FibGUoYXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0NzU6c3RhdGljIHUxNiBhdGgxMGtfdXNiX2hpZl9nZXRfZnJlZV9xdWV1ZV9udW1iZXIoc3RydWN0IGF0aDEwayAqYXIsIHU4IHBpcGVfaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ3Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ3NzpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00ODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ4MjpzdGF0aWMgaW50IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfb3V0KHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00ODMtXHRcdFx0XHQgICAgICB1OCByZXEsIHUxNiB2YWx1ZSwgdTE2IGluZGV4LCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDg1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDg2Olx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ4Ny1cdHU4ICpidWYgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTA0LVx0aWYgKHJldCBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1MDU6XHRcdGF0aDEwa193YXJuKGFyLCBcJiMzNDtGYWlsZWQgdG8gc3VibWl0IHVzYiBjb250cm9sIG1lc3NhZ2U6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MDYtXHRcdFx0ICAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjUxNjpzdGF0aWMgaW50IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfaW4oc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTUxNy1cdFx0XHRcdCAgICAgdTggcmVxLCB1MTYgdmFsdWUsIHUxNiBpbmRleCwgdm9pZCAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTUxOS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjUyMDpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MjEtXHR1OCAqYnVmID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTUzOC1cdGlmIChyZXQgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTM5Olx0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7RmFpbGVkIHRvIHJlYWQgdXNiIGNvbnRyb2wgbWVzc2FnZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU0MC1cdFx0XHQgICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTUyOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9jdHJsX21zZ19leGNoYW5nZShzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTUzLVx0XHRcdFx0XHR1OCByZXFfdmFsLCB1OCAqcmVxX2J1ZiwgdTMyIHJlcV9sZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NTktXHQvKiBzZW5kIGNvbW1hbmQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTYwOlx0cmV0ID0gYXRoMTBrX3VzYl9zdWJtaXRfY3RybF9vdXQoYXIsIHJlcV92YWwsIDAsIDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU2MS1cdFx0XHRcdFx0IHJlcV9idWYsIHJlcV9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTY2LVx0aWYgKHJlc3BfYnVmKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU2NzpcdFx0cmV0ID0gYXRoMTBrX3VzYl9zdWJtaXRfY3RybF9pbihhciwgcmVzcF92YWwsIDAsIDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU2OC1cdFx0XHRcdFx0XHRyZXNwX2J1ZiwgKnJlc3BfbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTc4OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfZGlhZ19yZWFkKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgYWRkcmVzcywgdm9pZCAqYnVmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NzktXHRcdFx0XHQgICAgc2l6ZV90IGJ1Zl9sZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4MTpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1ODI6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3JlYWQgKmNtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTgzLVx0dTMyIHJlc3BfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTg1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1ODY6XHRpZiAoYnVmX2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01ODctXHRcdHJldHVybiAtRUlOVkFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01ODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4OTpcdGNtZCA9IChzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3JlYWQgKilhcl91c2ItXHUwMDNlZGlhZ19jbWRfYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OTAtXHRtZW1zZXQoY21kLCAwLCBzaXplb2YoKmNtZCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTkyLVx0Y21kLVx1MDAzZWFkZHJlc3MgPSBjcHVfdG9fbGUzMihhZGRyZXNzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTkzOlx0cmVzcF9sZW4gPSBzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX3Jlc3BfcmVhZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTk1Olx0cmV0ID0gYXRoMTBrX3VzYl9jdHJsX21zZ19leGNoYW5nZShhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTk2LVx0XHRcdFx0XHQgICBBVEgxMEtfVVNCX0NPTlRST0xfUkVRX0RJQUdfQ01ELFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MDQ6XHRpZiAocmVzcF9sZW4gIT0gc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MDUtXHRcdHJldHVybiAtRU1TR1NJWkU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MDctXHRtZW1jcHkoYnVmLCBhcl91c2ItXHUwMDNlZGlhZ19yZXNwX2J1ZmZlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjA4Olx0ICAgICAgIHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYwOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjEzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfZGlhZ193cml0ZShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGFkZHJlc3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYxNC1cdFx0XHRcdCAgICAgY29uc3Qgdm9pZCAqZGF0YSwgaW50IG5ieXRlcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjE1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjE2Olx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYxNzpcdHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfd3JpdGUgKmNtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjE4LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjIzOlx0Y21kID0gKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfd3JpdGUgKilhcl91c2ItXHUwMDNlZGlhZ19jbWRfYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MjQtXHRtZW1zZXQoY21kLCAwLCBzaXplb2YoKmNtZCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2Mjk6XHRyZXQgPSBhdGgxMGtfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MzAtXHRcdFx0XHRcdCAgIEFUSDEwS19VU0JfQ09OVFJPTF9SRVFfRElBR19DTUQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY0MDpzdGF0aWMgaW50IGF0aDEwa191c2JfYm1pX2V4Y2hhbmdlX21zZyhzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjQxLVx0XHRcdFx0ICAgICAgIHZvaWQgKnJlcSwgdTMyIHJlcV9sZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NDYtXHRpZiAocmVxKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY0NzpcdFx0cmV0ID0gYXRoMTBrX3VzYl9zdWJtaXRfY3RybF9vdXQoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY0OC1cdFx0XHRcdFx0XHQgQVRIMTBLX1VTQl9DT05UUk9MX1JFUV9TRU5EX0JNSV9DTUQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NTgtXHRpZiAocmVzcCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2NTk6XHRcdHJldCA9IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfaW4oYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY2MC1cdFx0XHRcdFx0XHRBVEgxMEtfVVNCX0NPTlRST0xfUkVRX1JFQ1ZfQk1JX1JFU1AsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY3MzpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9nZXRfZGVmYXVsdF9waXBlKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NzQtXHRcdFx0XHRcdCAgICB1OCAqdWxfcGlwZSwgdTggKmRsX3BpcGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY4MDpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX21hcF9zZXJ2aWNlX3RvX3BpcGUoc3RydWN0IGF0aDEwayAqYXIsIHUxNiBzdmNfaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY4MS1cdFx0XHRcdFx0ICAgICAgdTggKnVsX3BpcGUsIHU4ICpkbF9waXBlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MDQ6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9wb3dlcl91cChzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzA1LVx0XHRcdFx0ICAgZW51bSBhdGgxMGtfZmlybXdhcmVfbW9kZSBmd19tb2RlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MTA6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9oaWZfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTBrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzExLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzEyOlx0YXRoMTBrX3VzYl9mbHVzaF9hbGwoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MTMtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MTc6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9zdXNwZW5kKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MTgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MjI6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9yZXN1bWUoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcyMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcyODpzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEwa19oaWZfb3BzIGF0aDEwa191c2JfaGlmX29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzI5Olx0LnR4X3NnXHRcdFx0PSBhdGgxMGtfdXNiX2hpZl90eF9zZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzMwOlx0LmRpYWdfcmVhZFx0XHQ9IGF0aDEwa191c2JfaGlmX2RpYWdfcmVhZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzMxOlx0LmRpYWdfd3JpdGVcdFx0PSBhdGgxMGtfdXNiX2hpZl9kaWFnX3dyaXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzI6XHQuZXhjaGFuZ2VfYm1pX21zZ1x0PSBhdGgxMGtfdXNiX2JtaV9leGNoYW5nZV9tc2csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczMzpcdC5zdGFydFx0XHRcdD0gYXRoMTBrX3VzYl9oaWZfc3RhcnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNDpcdC5zdG9wXHRcdFx0PSBhdGgxMGtfdXNiX2hpZl9zdG9wLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzU6XHQubWFwX3NlcnZpY2VfdG9fcGlwZVx0PSBhdGgxMGtfdXNiX2hpZl9tYXBfc2VydmljZV90b19waXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzY6XHQuZ2V0X2RlZmF1bHRfcGlwZVx0PSBhdGgxMGtfdXNiX2hpZl9nZXRfZGVmYXVsdF9waXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3Mzc6XHQuZ2V0X2ZyZWVfcXVldWVfbnVtYmVyXHQ9IGF0aDEwa191c2JfaGlmX2dldF9mcmVlX3F1ZXVlX251bWJlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzM4Olx0LnBvd2VyX3VwXHRcdD0gYXRoMTBrX3VzYl9oaWZfcG93ZXJfdXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczOTpcdC5wb3dlcl9kb3duXHRcdD0gYXRoMTBrX3VzYl9oaWZfcG93ZXJfZG93bixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzQwLSNpZmRlZiBDT05GSUdfUE1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzQxOlx0LnN1c3BlbmRcdFx0PSBhdGgxMGtfdXNiX2hpZl9zdXNwZW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDI6XHQucmVzdW1lXHRcdFx0PSBhdGgxMGtfdXNiX2hpZl9yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc0My0jZW5kaWZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzQ2OnN0YXRpYyB1OCBhdGgxMGtfdXNiX2dldF9sb2dpY2FsX3BpcGVfbnVtKHU4IGVwX2FkZHJlc3MsIGludCAqdXJiX2NvdW50KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03NDcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3OTE6c3RhdGljIGludCBhdGgxMGtfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3OTI6XHRcdFx0XHRcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc5My1cdFx0XHRcdFx0ICAgaW50IHVyYl9jbnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MTEtXHRcdHBpcGUtXHUwMDNldXJiX2FsbG9jJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODEyOlx0XHRhdGgxMGtfdXNiX2ZyZWVfdXJiX3RvX3BpcGUocGlwZSwgdXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MTMtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyMzpzdGF0aWMgaW50IGF0aDEwa191c2Jfc2V0dXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyNC1cdFx0XHRcdFx0ICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODI1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODI2Olx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyNy1cdHN0cnVjdCB1c2JfaG9zdF9pbnRlcmZhY2UgKmlmYWNlX2Rlc2MgPSBpbnRlcmZhY2UtXHUwMDNlY3VyX2FsdHNldHRpbmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyOC1cdHN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZW5kcG9pbnQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyOTpcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgzMC1cdGludCByZXQsIGksIHVyYmNvdW50O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MzM6XHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1VTQiwgXCYjMzQ7dXNiIHNldHRpbmcgdXAgcGlwZXMgdXNpbmcgaW50ZXJmYWNlXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODM0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODcxLVx0XHRwaXBlX251bSA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjg3MjpcdFx0ICAgIGF0aDEwa191c2JfZ2V0X2xvZ2ljYWxfcGlwZV9udW0oZW5kcG9pbnQtXHUwMDNlYkVuZHBvaW50QWRkcmVzcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODczLVx0XHRcdFx0XHRcdCAgICBcdTAwMjZ1cmJjb3VudCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjkyNTpcdFx0cmV0ID0gYXRoMTBrX3VzYl9hbGxvY19waXBlX3Jlc291cmNlcyhhciwgcGlwZSwgdXJiY291bnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MjYtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjkzMzpzdGF0aWMgaW50IGF0aDEwa191c2JfY3JlYXRlKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzQtXHRcdFx0ICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5MzY6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTM3LVx0c3RydWN0IHVzYl9kZXZpY2UgKmRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTM4Olx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTM5LVx0aW50IHJldCwgaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk0OC1cdFx0SU5JVF9XT1JLKFx1MDAyNnBpcGUtXHUwMDNlaW9fY29tcGxldGVfd29yayxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTQ5Olx0XHRcdCAgYXRoMTBrX3VzYl9pb19jb21wX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05NTAtXHRcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2cGlwZS1cdTAwM2Vpb19jb21wX3F1ZXVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTY2Olx0cmV0ID0gYXRoMTBrX3VzYl9zZXR1cF9waXBlX3Jlc291cmNlcyhhciwgaW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTY3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3Mi1lcnI6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjk3MzpcdGF0aDEwa191c2JfZGVzdHJveShhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3NC1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05NzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjk3NzpzdGF0aWMgaW50IGF0aDEwa191c2JfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqY3R4LCBpbnQgYnVkZ2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05Nzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5OTE6LyogYXRoMTBrIHVzYiBkcml2ZXIgcmVnaXN0ZXJlZCBmdW5jdGlvbnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTkyOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTMtXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk5NS1cdHN0cnVjdCBhdGgxMGsgKmFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5OTY6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTctXHRzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTAxMDpcdGFyID0gYXRoMTBrX2NvcmVfY3JlYXRlKHNpemVvZigqYXJfdXNiKSwgXHUwMDI2ZGV2LVx1MDAzZWRldiwgQVRIMTBLX0JVU19VU0IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwMTE6XHRcdFx0XHRod19yZXYsIFx1MDAyNmF0aDEwa191c2JfaGlmX29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMTItXHRpZiAoIWFyKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDE3Olx0bmV0aWZfbmFwaV9hZGQoYXItXHUwMDNlbmFwaV9kZXYsIFx1MDAyNmFyLVx1MDAzZW5hcGksIGF0aDEwa191c2JfbmFwaV9wb2xsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAxOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwMjY6XHRhcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDI3Olx0cmV0ID0gYXRoMTBrX3VzYl9jcmVhdGUoYXIsIGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMjgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA1MS1lcnJfdXNiX2Rlc3Ryb3k6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNTI6XHRhdGgxMGtfdXNiX2Rlc3Ryb3koYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDUzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA2MDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNjI6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDYzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA2ODpcdGF0aDEwa19jb3JlX3VucmVnaXN0ZXIoYXJfdXNiLVx1MDAzZWFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2OS1cdG5ldGlmX25hcGlfZGVsKFx1MDAyNmFyX3VzYi1cdTAwM2Vhci1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA3MDpcdGF0aDEwa191c2JfZGVzdHJveShhcl91c2ItXHUwMDNlYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDcxOlx0YXRoMTBrX2NvcmVfZGVzdHJveShhcl91c2ItXHUwMDNlYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDcyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNzY6c3RhdGljIGludCBhdGgxMGtfdXNiX3BtX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA3Ny1cdFx0XHRcdCBwbV9tZXNzYWdlX3QgbWVzc2FnZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA3OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNzk6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDgxOlx0YXRoMTBrX3VzYl9mbHVzaF9hbGwoYXJfdXNiLVx1MDAzZWFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA4Mi1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA4NTpzdGF0aWMgaW50IGF0aDEwa191c2JfcG1fcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDg3Olx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA4ODpcdHN0cnVjdCBhdGgxMGsgKmFyID0gYXJfdXNiLVx1MDAzZWFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDg5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDkwOlx0YXRoMTBrX3VzYl9wb3N0X3JlY3ZfdHJhbnNmZXJzKGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDkxLVx0XHRcdFx0ICAgICAgIFx1MDAyNmFyX3VzYi1cdTAwM2VwaXBlc1tBVEgxMEtfVVNCX1BJUEVfUlhfREFUQV0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA5ODojZGVmaW5lIGF0aDEwa191c2JfcG1fc3VzcGVuZCBOVUxMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwOTk6I2RlZmluZSBhdGgxMGtfdXNiX3BtX3Jlc3VtZSBOVUxMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMDAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTAzLS8qIHRhYmxlIG9mIGRldmljZXMgdGhhdCB3b3JrIHdpdGggdGhpcyBkcml2ZXIgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTEwNDpzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgYXRoMTBrX3VzYl9pZHNbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEwNS1cdHtVU0JfREVWSUNFKDB4MTNiMSwgMHgwMDQyKX0sIC8qIExpbmtzeXMgV1VTQjYxMDBNICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTA5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBhdGgxMGtfdXNiX2lkcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTE6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGF0aDEwa191c2JfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTEyOlx0Lm5hbWUgPSBcJiMzNDthdGgxMGtfdXNiXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTEzOlx0LnByb2JlID0gYXRoMTBrX3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExNDpcdC5zdXNwZW5kID0gYXRoMTBrX3VzYl9wbV9zdXNwZW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTE1Olx0LnJlc3VtZSA9IGF0aDEwa191c2JfcG1fcmVzdW1lLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTE2Olx0LmRpc2Nvbm5lY3QgPSBhdGgxMGtfdXNiX2Rpc2Nvbm5lY3QsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTc6XHQuaWRfdGFibGUgPSBhdGgxMGtfdXNiX2lkcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTExOC1cdC5zdXBwb3J0c19hdXRvc3VzcGVuZCA9IHRydWUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTIyOm1vZHVsZV91c2JfZHJpdmVyKGF0aDEwa191c2JfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEyMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo0NDpzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNDUtXHRfX2xlMzIgY21kO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjUxOnN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfcmVhZCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTUyLVx0X19sZTMyIGNtZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo1NjpzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTctXHR1OCB2YWx1ZVs0XTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTYwLS8qIHR4L3J4IHBpcGVzIGZvciB1c2IgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6NjE6ZW51bSBhdGgxMGtfdXNiX3BpcGVfaWQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC02Mi1cdEFUSDEwS19VU0JfUElQRV9UWF9DVFJMID0gMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo3MzpzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNzQtXHRzdHJ1Y3QgbGlzdF9oZWFkIHVyYl9saXN0X2hlYWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC04Mi1cdHU4IGxvZ2ljYWxfcGlwZV9udW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjgzOlx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtODQtXHR1MTYgbWF4X3BhY2tldF9zaXplO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtOTItLyogdXNiIGRldmljZSBvYmplY3QgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6OTM6c3RydWN0IGF0aDEwa191c2Ige1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC05NC1cdC8qIHByb3RlY3RzIHBpcGUtXHUwMDNldXJiX2xpc3RfaGVhZCBhbmQgIHBpcGUtXHUwMDNldXJiX2NudCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtOTgtXHRzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo5OTpcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgcGlwZXNbQVRIMTBLX1VTQl9QSVBFX01BWF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTEwMC1cdHU4ICpkaWFnX2NtZF9idWZmZXI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaD0xMDY9c3RydWN0IGF0aDEwa191cmJfY29udGV4dCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTEwNy1cdHN0cnVjdCBsaXN0X2hlYWQgbGluaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6MTA4Olx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTA5LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTExMi1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NzYwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6CgoqKkluaXRpYWwgQXNzZXNzbWVudCBvZiBgYXRoMTBrYCBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IGFwcHJvYWNoIHRvIGZ1enppbmcgdGhlIGBhdGgxMGtgIGRyaXZlci4gR29vZCwgaXQgbG9va3MgbGlrZSBgYXRoMTBrYCAqZG9lcyogaGF2ZSBhIFVTQiBkcml2ZXIgKGBhdGgxMGtfdXNiYCksIHdoaWNoIG1lYW5zIEkgaGF2ZSBhIHBvdGVudGlhbCBhdmVudWUgZm9yIGZ1enppbmcgdmlhIFVTQiBlbXVsYXRpb24sIHdoaWNoIGlzIGdyZWF0LiBUaGF0IG9wZW5zIHVwIGEgbG90IG9mIHBvc3NpYmlsaXRpZXMuIE5vdywgSSBuZWVkIHRvIGRpZyBkZWVwZXIuLi4KSGFuZyBvbiBhIG1pbnV0ZSEgSSB2YWd1ZWx5IHJlY2FsbCBzb21ldGhpbmcgYWJvdXQgYSB0ZXN0IG1vZGUuLi4gc3BlY2lmaWNhbGx5LCBgYXRoMTBrX3RtX2V2ZW50X3dtaWAuIEkgdGhpbmsgSSBzYXcgdGhhdCBpbiBgdGVzdG1vZGUuY2AuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhhdCB0ZXN0IG1vZGUgZW5hYmxlZCBieSBkZWZhdWx0LCBvciBpcyBpdCBjb250aW5nZW50IG9uIHNvbWUga2luZCBvZiBjb25maWd1cmF0aW9uIHNldHRpbmc/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byB0cmlnZ2VyIHRoYXQgYHRlc3Rtb2RlYCBwYXRoLCBpdCBtaWdodCBleHBvc2UgYSBsb3Qgb2YgdXNlZnVsIHRlc3QgcG9pbnRzLiBBbHJpZ2h0LCB0aW1lIHRvIGNoZWNrIHRoZSBLY29uZmlnLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZ2AgdG8gc2VlIGhvdyB0ZXN0IG1vZGUgaXMgaGFuZGxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0ZXN0bW9kZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGU9MTg9YXRoMTBrX2NvcmUtJChDT05GSUdfQVRIMTBLX1NQRUNUUkFMKSAmIzQzOz0gc3BlY3RyYWwub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZToxOTphdGgxMGtfY29yZS0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZS0yMC1hdGgxMGtfY29yZS0kKENPTkZJR19BVEgxMEtfVFJBQ0lORykgJiM0Mzs9IHRyYWNlLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYy0yNy0jaW5jbHVkZSBcJiMzNDtodHQuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmM6Mjg6I2luY2x1ZGUgXCYjMzQ7dGVzdG1vZGUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmMtMjktI2luY2x1ZGUgXCYjMzQ7d21pLW9wcy5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmM9NTc9TU9EVUxFX1BBUk1fREVTQyh1YXJ0X3ByaW50LCBcJiMzNDtVYXJ0IHRhcmdldCBkZWJ1Z2dpbmdcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmM6NTg6TU9EVUxFX1BBUk1fREVTQyhza2lwX290cCwgXCYjMzQ7U2tpcCBvdHAgZmFpbHVyZSBmb3IgY2FsaWJyYXRpb24gaW4gdGVzdG1vZGVcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmMtNTktTU9EVUxFX1BBUk1fREVTQyhjcnlwdG1vZGUsIFwmIzM0O0NyeXB0byBtb2RlOiAwLWhhcmR3YXJlLCAxLXNvZnR3YXJlXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYz0zNTg2PXZvaWQgYXRoMTBrX2NvcmVfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYy0zNjA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmM6MzYwODpcdGF0aDEwa190ZXN0bW9kZV9kZXN0cm95KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5jLTM2MDktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmg9MTAxMT1zdHJ1Y3QgYXRoMTBrIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0xMjY4LVx0XHR1OCAqZXZlbnRkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmg6MTI2OTpcdH0gdGVzdG1vZGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0xMjcwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYz00Mj12b2lkIGF0aDEwa19kZWJ1Z19wcmludF9od2Z3X2luZm8oc3RydWN0IGF0aDEwayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjU2Olx0YXRoMTBrX2luZm8oYXIsIFwmIzM0O2tjb25maWcgZGVidWcgJWQgZGVidWdmcyAlZCB0cmFjaW5nICVkIGRmcyAlZCB0ZXN0bW9kZSAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy01Ny1cdFx0ICAgIElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERUJVRyksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0yNS0jaW5jbHVkZSBcJiMzNDt0eHJ4LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MjY6I2luY2x1ZGUgXCYjMzQ7dGVzdG1vZGUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0yNy0jaW5jbHVkZSBcJiMzNDt3bWktdGx2LmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo3OiNpbmNsdWRlIFwmIzM0O3Rlc3Rtb2RlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy04LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxOTojaW5jbHVkZSBcJiMzNDt0ZXN0bW9kZV9pLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0yMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9MzQ9c3RhdGljIHZvaWQgYXRoMTBrX3RtX2V2ZW50X3Vuc2VnbWVudGVkKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0MDpcdG5sX3NrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX2V2ZW50X3NrYihhci1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MS1cdFx0XHRcdFx0XHQgICAyICogc2l6ZW9mKHUzMikgJiM0Mzsgc2tiLVx1MDAzZWxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDQtXHRcdGF0aDEwa193YXJuKGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ1Olx0XHRcdCAgICBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgc2tiIGZvciB0ZXN0bW9kZSB3bWkgZXZlbnRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ2LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTUxLVx0XHRhdGgxMGtfd2FybihhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo1MjpcdFx0XHQgICAgXCYjMzQ7ZmFpbGVkIHRvIHB1dCB0ZXN0bW9kZSB3bWkgZXZlbnQgY21kIGF0dHJpYnV0ZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNTMtXHRcdFx0ICAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTYwLVx0XHRhdGgxMGtfd2FybihhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo2MTpcdFx0XHQgICAgXCYjMzQ7ZmFpbGVkIHRvIHB1dCB0ZXN0bW9kZSB3bWkgZXZlbnQgY21kX2lkOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02Mi1cdFx0XHQgICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjktXHRcdGF0aDEwa193YXJuKGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjcwOlx0XHRcdCAgICBcJiMzNDtmYWlsZWQgdG8gY29weSBza2IgdG8gdGVzdG1vZGUgd21pIGV2ZW50OiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy03MS1cdFx0XHQgICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NzY6XHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTc3LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9Nzk9c3RhdGljIHZvaWQgYXRoMTBrX3RtX2V2ZW50X3NlZ21lbnRlZChzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTAxLVx0aWYgKGN1cnJlbnRfc2VxID09IDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxMDI6XHRcdGFyLVx1MDAzZXRlc3Rtb2RlLmV4cGVjdGVkX3NlcSA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTAzOlx0XHRhci1cdTAwM2V0ZXN0bW9kZS5kYXRhX3BvcyA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTA0LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTEwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxMDY6XHRkYXRhX3BvcyA9IGFyLVx1MDAzZXRlc3Rtb2RlLmRhdGFfcG9zO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTEwNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjExNTpcdG1lbWNweShcdTAwMjZhci1cdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGFbZGF0YV9wb3NdLCBidWZfcG9zLCBkYXRhbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xMTYtXHRkYXRhX3BvcyAmIzQzOz0gZGF0YWxlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTE4Olx0aWYgKCYjNDM7JiM0Mzthci1cdTAwM2V0ZXN0bW9kZS5leHBlY3RlZF9zZXEgIT0gdG90YWxfc2VnbWVudHMpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxMTk6XHRcdGFyLVx1MDAzZXRlc3Rtb2RlLmRhdGFfcG9zID0gZGF0YV9wb3M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTIwLVx0XHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLCBcJiMzNDtwYXJ0aWFsIGRhdGEgcmVjZWl2ZWQgJXUvJXVcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTEyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxMjc6XHRubF9za2IgPSBjZmc4MDIxMV90ZXN0bW9kZV9hbGxvY19ldmVudF9za2IoYXItXHUwMDNlaHctXHUwMDNld2lwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTI4LVx0XHRcdFx0XHRcdCAgIDIgKiBzaXplb2YodTMyKSAmIzQzOyBkYXRhX3Bvcyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTMwLVx0aWYgKCFubF9za2IpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxMzE6XHRcdGF0aDEwa193YXJuKGFyLCBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgc2tiIGZvciB0ZXN0bW9kZSB3bWkgZXZlbnRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTEzMi1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xMzYtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTM3Olx0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7ZmFpbGVkIHRvIHB1dCB0ZXN0bW9kZSB3bWkgZXZlbnQgYXR0cmlidXRlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xMzgtXHRcdGtmcmVlX3NrYihubF9za2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNDMtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTQ0Olx0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7ZmFpbGVkIHRvIHB1dCB0ZXN0bW9kZSB3bWkgZXZlbnQgY21kX2lkOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNDUtXHRcdGtmcmVlX3NrYihubF9za2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTQ5Olx0cmV0ID0gbmxhX3B1dChubF9za2IsIEFUSDEwS19UTV9BVFRSX0RBVEEsIGRhdGFfcG9zLCBcdTAwMjZhci1cdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGFbMF0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTE1MC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxNTE6XHRcdGF0aDEwa193YXJuKGFyLCBcJiMzNDtmYWlsZWQgdG8gY29weSBza2IgdG8gdGVzdG1vZGUgd21pIGV2ZW50OiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNTItXHRcdGtmcmVlX3NrYihubF9za2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTU2Olx0Y2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNTctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYz0xNzA9Ym9vbCBhdGgxMGtfdG1fZXZlbnRfd21pKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNzQtXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjE3NTpcdFx0ICAgXCYjMzQ7dGVzdG1vZGUgZXZlbnQgd21pIGNtZF9pZCAlZCBza2IgJXAgc2tiLVx1MDAzZWxlbiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNzYtXHRcdCAgIGNtZF9pZCwgc2tiLCBza2ItXHUwMDNlbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjE4MjpcdGlmICghYXItXHUwMDNldGVzdG1vZGUudXRmX21vbml0b3IpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xODMtXHRcdGNvbnN1bWVkID0gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTE4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxODc6XHQvKiBPbmx5IHRlc3Rtb2RlLmMgc2hvdWxkIGJlIGhhbmRsaW5nIGV2ZW50cyBmcm9tIHV0ZiBmaXJtd2FyZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xODgtXHQgKiBvdGhlcndpc2UgYWxsIHNvcnQgb2YgcHJvYmxlbXMgd2lsbCBhcmlzZSBhcyBtYWM4MDIxMSBvcGVyYXRpb25zXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTE5NC1cdFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxOTU6XHRcdFx0ICAgXCYjMzQ7dGVzdG1vZGUgZHJvcCBub24tdXRmIGV2ZW50IGNtZF9pZCAldVxcblwmIzM0OywgY21kX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xOTYtXHRcdGdvdG8gb3V0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xOTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTk5Olx0aWYgKGFyLVx1MDAzZXRlc3Rtb2RlLmV4cGVjdGVkX3NlcSAhPSBBVEgxMEtfRlRNX1NFR19OT05FKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTIwMC1cdFx0YXRoMTBrX3RtX2V2ZW50X3NlZ21lbnRlZChhciwgY21kX2lkLCBza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYz0yMTA9c3RhdGljIGludCBhdGgxMGtfdG1fY21kX2dldF92ZXJzaW9uKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0yMTUtXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjIxNjpcdFx0ICAgXCYjMzQ7dGVzdG1vZGUgY21kIGdldCB2ZXJzaW9uX21ham9yICVkIHZlcnNpb25fbWlub3IgJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMjE3LVx0XHQgICBBVEgxMEtfVEVTVE1PREVfVkVSU0lPTl9NQUpPUixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMjE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjIyMDpcdHNrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX3JlcGx5X3NrYihhci1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0yMjEtXHRcdFx0XHRcdFx0bmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMjQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjI0NjpcdHJldHVybiBjZmc4MDIxMV90ZXN0bW9kZV9yZXBseShza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTI0Ny19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTI0OT1zdGF0aWMgaW50IGF0aDEwa190bV9mZXRjaF91dGZfZmlybXdhcmVfYXBpXzEoc3RydWN0IGF0aDEwayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTI1OS1cdHJldCA9IGZpcm13YXJlX3JlcXVlc3Rfbm93YXJuKFx1MDAyNmZ3X2ZpbGUtXHUwMDNlZmlybXdhcmUsIGZpbGVuYW1lLCBhci1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjI2MDpcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfVEVTVE1PREUsIFwmIzM0O3Rlc3Rtb2RlIGZ3IHJlcXVlc3QgJiMzOTslcyYjMzk7OiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0yNjEtXHRcdCAgIGZpbGVuYW1lLCByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYz0yODM9c3RhdGljIGludCBhdGgxMGtfdG1fZmV0Y2hfZmlybXdhcmUoc3RydWN0IGF0aDEwayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTMwMy1cdHJldCA9IGF0aDEwa19jb3JlX2ZldGNoX2Zpcm13YXJlX2FwaV9uKGFyLCBmd19uYW1lLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjMwNDpcdFx0XHRcdFx0ICAgICAgIFx1MDAyNmFyLVx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3LmZ3X2ZpbGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTMwNS1cdGlmIChyZXQgPT0gMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjMwNjpcdFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSwgXCYjMzQ7dGVzdG1vZGUgdXNpbmcgZncgdXRmIGFwaSAyXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMDctXHRcdGdvdG8gb3V0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MzEwOlx0cmV0ID0gYXRoMTBrX3RtX2ZldGNoX3V0Zl9maXJtd2FyZV9hcGlfMShhciwgXHUwMDI2YXItXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzExLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MzE2Olx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSwgXCYjMzQ7dGVzdG1vZGUgdXNpbmcgdXRmIGFwaSAxXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzE4LW91dDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozMTk6XHR1dGZfbW9kZV9mdyA9IFx1MDAyNmFyLVx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTMyMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9MzM2PXN0YXRpYyBpbnQgYXRoMTBrX3RtX2NtZF91dGZfc3RhcnQoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTM0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozNDE6XHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLCBcJiMzNDt0ZXN0bW9kZSBjbWQgdXRmIHN0YXJ0XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zNDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTM1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozNTY6XHRpZiAoV0FSTl9PTihhci1cdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlLmZpcm13YXJlICE9IE5VTEwpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzU3LVx0XHQvKiB1dGYgaW1hZ2UgaXMgYWxyZWFkeSBkb3dubG9hZGVkLCBpdCBzaG91bGRuJiMzOTt0IGJlICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTM2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozNjg6XHRpZiAoYXItXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZS5jb2Rlc3dhcF9kYXRhIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjM2OTpcdCAgICBhci1cdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlLmNvZGVzd2FwX2xlbikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTM3MC1cdFx0cmV0ID0gYXRoMTBrX3N3YXBfY29kZV9zZWdfaW5pdChhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozNzE6XHRcdFx0XHRcdFx0XHUwMDI2YXItXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzcyLVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTM4MC1cdHNwaW5fbG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjM4MTpcdGFyLVx1MDAzZXRlc3Rtb2RlLnV0Zl9tb25pdG9yID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zODItXHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTM4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozODQ6XHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLCBcJiMzNDt0ZXN0bW9kZSB3bWkgdmVyc2lvbiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozODU6XHRcdCAgIGFyLVx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3LmZ3X2ZpbGUud21pX29wX3ZlcnNpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTM4Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzg4LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjM4OTpcdFx0YXRoMTBrX2VycihhciwgXCYjMzQ7ZmFpbGVkIHRvIHBvd2VyIHVwIGhpZiAodGVzdG1vZGUpOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zOTAtXHRcdGFyLVx1MDAzZXN0YXRlID0gQVRIMTBLX1NUQVRFX09GRjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjM5NDpcdGFyLVx1MDAzZXRlc3Rtb2RlLmV2ZW50ZGF0YSA9IGt6YWxsb2MoQVRIX0ZUTV9FVkVOVF9NQVhfQlVGX0xFTkdUSCwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6Mzk1Olx0aWYgKCFhci1cdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGEpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zOTYtXHRcdHJldCA9IC1FTk9NRU07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQwMC1cdHJldCA9IGF0aDEwa19jb3JlX3N0YXJ0KGFyLCBBVEgxMEtfRklSTVdBUkVfTU9ERV9VVEYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDAxOlx0XHRcdFx0XHUwMDI2YXItXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQwMi1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0MDM6XHRcdGF0aDEwa19lcnIoYXIsIFwmIzM0O2ZhaWxlZCB0byBzdGFydCBjb3JlICh0ZXN0bW9kZSk6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQwNC1cdFx0YXItXHUwMDNlc3RhdGUgPSBBVEgxMEtfU1RBVEVfT0ZGO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDEwOlx0aWYgKHN0cmxlbihhci1cdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlLmZ3X3ZlcnNpb24pIFx1MDAzZSAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQxMTpcdFx0dmVyID0gYXItXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZS5md192ZXJzaW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQxMi1cdGVsc2Vcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDIxLWVycl9yZWxlYXNlX2V2ZW50ZGF0YTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0MjI6XHRrZnJlZShhci1cdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQyMzpcdGFyLVx1MDAzZXRlc3Rtb2RlLmV2ZW50ZGF0YSA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDI0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MjgtZXJyX3JlbGVhc2VfdXRmX21vZGVfZnc6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDI5Olx0aWYgKGFyLVx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3LmZ3X2ZpbGUuY29kZXN3YXBfZGF0YSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0MzA6XHQgICAgYXItXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZS5jb2Rlc3dhcF9sZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDMxLVx0XHRhdGgxMGtfc3dhcF9jb2RlX3NlZ19yZWxlYXNlKGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQzMjpcdFx0XHRcdFx0ICAgICBcdTAwMjZhci1cdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDM0Olx0cmVsZWFzZV9maXJtd2FyZShhci1cdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlLmZpcm13YXJlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0MzU6XHRhci1cdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlLmZpcm13YXJlID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MzYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTQ0Mz1zdGF0aWMgdm9pZCBfX2F0aDEwa190bV9jbWRfdXRmX3N0b3Aoc3RydWN0IGF0aDEwayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0NTI6XHRhci1cdTAwM2V0ZXN0bW9kZS51dGZfbW9uaXRvciA9IGZhbHNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ1My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ1NjpcdGlmIChhci1cdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlLmNvZGVzd2FwX2RhdGEgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDU3Olx0ICAgIGFyLVx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3LmZ3X2ZpbGUuY29kZXN3YXBfbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ1OC1cdFx0YXRoMTBrX3N3YXBfY29kZV9zZWdfcmVsZWFzZShhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0NTk6XHRcdFx0XHRcdCAgICAgXHUwMDI2YXItXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ2MTpcdHJlbGVhc2VfZmlybXdhcmUoYXItXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZS5maXJtd2FyZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDYyOlx0YXItXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZS5maXJtd2FyZSA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ2NDpcdGtmcmVlKGFyLVx1MDAzZXRlc3Rtb2RlLmV2ZW50ZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDY1Olx0YXItXHUwMDNldGVzdG1vZGUuZXZlbnRkYXRhID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00NjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTQ3MD1zdGF0aWMgaW50IGF0aDEwa190bV9jbWRfdXRmX3N0b3Aoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0NzQ6XHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLCBcJiMzNDt0ZXN0bW9kZSBjbWQgdXRmIHN0b3BcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ3NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9NDk0PXN0YXRpYyBpbnQgYXRoMTBrX3RtX2NtZF93bWkoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTUyMi1cdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfVEVTVE1PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NTIzOlx0XHQgICBcJiMzNDt0ZXN0bW9kZSBjbWQgd21pIGNtZF9pZCAlZCBidWYgJXAgYnVmX2xlbiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy01MjQtXHRcdCAgIGNtZF9pZCwgYnVmLCBidWZfbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNTM3LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjUzODpcdFx0YXRoMTBrX3dhcm4oYXIsIFwmIzM0O2ZhaWxlZCB0byB0cmFuc21pdCB3bWkgY29tbWFuZCAodGVzdG1vZGUpOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy01MzktXHRcdFx0ICAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTU1MD1zdGF0aWMgaW50IGF0aDEwa190bV9jbWRfdGx2KHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy01NzctXHRudW1fc2VnbWVudHMgPSB0b3RhbF9ieXRlcyAvIE1BWF9XTUlfVVRGX0xFTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo1Nzg6XHRhci1cdTAwM2V0ZXN0bW9kZS5leHBlY3RlZF9zZXEgPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTU3OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjAyLVx0XHRmdG1fY21kLVx1MDAzZXNlZ19oZHIubGVuID0gX19jcHVfdG9fbGUzMih0b3RhbF9ieXRlcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NjAzOlx0XHRmdG1fY21kLVx1MDAzZXNlZ19oZHIubXNncmVmID0gX19jcHVfdG9fbGUzMihhci1cdTAwM2V0ZXN0bW9kZS5mdG1fbXNncmVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02MDQtXHRcdHNlZ2luZm8gPSBGSUVMRF9QUkVQKEFUSDEwS19GVE1fU0VHSERSX1RPVEFMX1NFR01FTlRTLCBudW1fc2VnbWVudHMpIHxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjYyMTpcdGFyLVx1MDAzZXRlc3Rtb2RlLmZ0bV9tc2dyZWYmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTYyMi1cdHJldCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTYyOT1pbnQgYXRoMTBrX3RtX2NtZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjY0NDpcdGFyLVx1MDAzZXRlc3Rtb2RlLmV4cGVjdGVkX3NlcSA9IEFUSDEwS19GVE1fU0VHX05PTkU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjQ1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02NjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NjYzOnZvaWQgYXRoMTBrX3Rlc3Rtb2RlX2Rlc3Ryb3koc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjY0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaDoxMDp2b2lkIGF0aDEwa190ZXN0bW9kZV9kZXN0cm95KHN0cnVjdCBhdGgxMGsgKmFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaC0xMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmg9MTM9aW50IGF0aDEwa190bV9jbWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oLTE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oOjE4OnN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMGtfdGVzdG1vZGVfZGVzdHJveShzdHJ1Y3QgYXRoMTBrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaC0xOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmgtNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oOjc6LyogXCYjMzQ7QVBJXCYjMzQ7IGxldmVsIG9mIHRoZSBhdGgxMGsgdGVzdG1vZGUgaW50ZXJmYWNlLiBCdW1wIGl0IGFmdGVyIGV2ZXJ5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaC04LSAqIGluY29tcGF0aWJsZSBpbnRlcmZhY2UgY2hhbmdlLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oPTIwPWVudW0gYXRoMTBrX3RtX2F0dHIge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oLTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmg6MzQ6LyogQWxsIGF0aDEwayB0ZXN0bW9kZSBpbnRlcmZhY2UgY29tbWFuZHMgc3BlY2lmaWVkIGluXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaC0zNS0gKiBBVEgxMEtfVE1fQVRUUl9DTURcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaD0zNz1lbnVtIGF0aDEwa190bV9jbWQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmg6Mzg6XHQvKiBSZXR1cm5zIHRoZSBzdXBwb3J0ZWQgYXRoMTBrIHRlc3Rtb2RlIGludGVyZmFjZSB2ZXJzaW9uIGluXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaC0zOS1cdCAqIEFUSDEwS19UTV9BVFRSX1ZFUlNJT04uIEFsd2F5cyBndWFyYW50ZWVkIHRvIHdvcmsuIFVzZXIgc3BhY2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oLTQwLVx0ICogdXNlcyB0aGlzIHRvIHZlcmlmeSBpdCYjMzk7cyB1c2luZyB0aGUgY29ycmVjdCB2ZXJzaW9uIG9mIHRoZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmg6NDE6XHQgKiB0ZXN0bW9kZSBpbnRlcmZhY2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oLTQyLVx0ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmgtNjktXHQgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmg6NzA6XHQgKiBUaGlzIGxlZ2FjeSB0ZXN0bW9kZSBjb21tYW5kIHNoYXJlcyB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgZ2V0LXZlcnNpb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oLTcxLVx0ICogY29tbWFuZC4gVG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGVtLCB3ZSBjaGVjayB3aGV0aGVyIHRoZSBkYXRhIGF0dHJpYnV0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLXRsdi5jLTE1LSNpbmNsdWRlIFwmIzM0O3AycC5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS10bHYuYzoxNjojaW5jbHVkZSBcJiMzNDt0ZXN0bW9kZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS10bHYuYy0xNy0jaW5jbHVkZSBcJiMzNDt0eHJ4LmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS10bHYuYz02Mzk9c3RhdGljIHZvaWQgYXRoMTBrX3dtaV90bHZfb3Bfcngoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktdGx2LmMtNjU2LVx0ICoga25vdyB0aGUgVVRGIGZpcm13YXJlIGhhcyBib290ZWQsIG90aGVycyB3ZSBhcmUganVzdCBieXBhc3MgV01JXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS10bHYuYzo2NTc6XHQgKiBldmVudHMgdG8gdGVzdG1vZGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS10bHYuYy02NTgtXHQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS10bHYuYy02NjAtXHRcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfV01JLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktdGx2LmM6NjYxOlx0XHRcdCAgIFwmIzM0O3dtaSB0bHYgdGVzdG1vZGUgY29uc3VtZWQgMHgleFxcblwmIzM0OywgaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktdGx2LmMtNjYyLVx0XHRnb3RvIG91dDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTE3LSNpbmNsdWRlIFwmIzM0O21hYy5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jOjE4OiNpbmNsdWRlIFwmIzM0O3Rlc3Rtb2RlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtMTktI2luY2x1ZGUgXCYjMzQ7d21pLW9wcy5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYz02MDAzPXN0YXRpYyB2b2lkIGF0aDEwa193bWlfMTBfMV9vcF9yeChzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTYwMjAtXHQgKiBrbm93IHRoZSBVVEYgZmlybXdhcmUgaGFzIGJvb3RlZCwgb3RoZXJzIHdlIGFyZSBqdXN0IGJ5cGFzcyBXTUlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NjAyMTpcdCAqIGV2ZW50cyB0byB0ZXN0bW9kZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNjAyMi1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNjAyNC1cdFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19XTUksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jOjYwMjU6XHRcdFx0ICAgXCYjMzQ7d21pIHRlc3Rtb2RlIGNvbnN1bWVkIDB4JXhcXG5cJiMzNDssIGlkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNjAyNi1cdFx0Z290byBvdXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYz02MTM0PXN0YXRpYyB2b2lkIGF0aDEwa193bWlfMTBfMl9vcF9yeChzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTYxNTEtXHQgKiBrbm93IHRoZSBVVEYgZmlybXdhcmUgaGFzIGJvb3RlZCwgb3RoZXJzIHdlIGFyZSBqdXN0IGJ5cGFzcyBXTUlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NjE1MjpcdCAqIGV2ZW50cyB0byB0ZXN0bW9kZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNjE1My1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNjE1NS1cdFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19XTUksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jOjYxNTY6XHRcdFx0ICAgXCYjMzQ7d21pIHRlc3Rtb2RlIGNvbnN1bWVkIDB4JXhcXG5cJiMzNDssIGlkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNjE1Ny1cdFx0Z290byBvdXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYz02MjgzPXN0YXRpYyB2b2lkIGF0aDEwa193bWlfMTBfNF9vcF9yeChzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTYzMDAtXHQgKiBrbm93IHRoZSBVVEYgZmlybXdhcmUgaGFzIGJvb3RlZCwgb3RoZXJzIHdlIGFyZSBqdXN0IGJ5cGFzcyBXTUlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NjMwMTpcdCAqIGV2ZW50cyB0byB0ZXN0bW9kZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNjMwMi1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNjMwNC1cdFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19XTUksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jOjYzMDU6XHRcdFx0ICAgXCYjMzQ7d21pIHRlc3Rtb2RlIGNvbnN1bWVkIDB4JXhcXG5cJiMzNDssIGlkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNjMwNi1cdFx0Z290byBvdXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjczNzMKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA0MzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYGF0aDEwa2AgRHJpdmVyIGluIFRlc3Rtb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBmdXp6aW5nIHRoZSBgYXRoMTBrYCBkcml2ZXIuIFRoZSBjb3JlIG9mIHRoaXMgaXMgdGhlIGBDT05GSUdfTkw4MDIxMV9URVNUTU9ERWAgY29uZmlnIG9wdGlvbi4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRlc3QgbW9kZSBpcyBleHBvc2VkIHRvIHVzZXJzcGFjZSDigJMgYW5kIGl0IGxvb2tzIGxpa2UgaXQgaXMsIHZpYSBgbmw4MDIxMWAuIFRoYXQgb3BlbnMgdXAgc29tZSBpbnRlcmVzdGluZyBwb3NzaWJpbGl0aWVzLgoKSSBzZWUgdGhhdCBgYXRoMTBrYCAqY2FuKiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbi4gVGhlIGludGVyZXN0aW5nIHRoaW5nIGhlcmUgaXMgYGF0aDEwa190bV9ldmVudF93bWlgLiBUaGF0IGZ1bmN0aW9uIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBkcml2ZXIgcmVjZWl2ZXMgYSBXTUkgZXZlbnQgZnJvbSB0aGUgZmlybXdhcmUuIEluIGEgZnV6emluZyBzY2VuYXJpbywgdGhpcyBtZWFucyB0aGF0IHRoZSBmdXp6ZXIgY2FuIGVtdWxhdGUgYSBVU0IgZGV2aWNlIGFuZCBpbmplY3QgdGhlc2UgV01JIGV2ZW50cyBkaXJlY3RseSBpbnRvIHRoZSBkcml2ZXIuCgpUaGUgcGF0Y2ggc2VlbXMgdG8gYWRkIGEgY2hlY2ssIGBhdGgxMGtfdG1faXNfdXRmX2V2ZW50KGNtZF9pZClgLCB3aGljaCBkcm9wcyBub24tVVRGIGV2ZW50cyBzcGVjaWZpY2FsbHkgd2hlbiBpbiB0ZXN0bW9kZS4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbHRlcmluZyBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGZpcm13YXJlIGV2ZW50cy4gVGhhdCYjMzk7cyBhIHRhcmdldCEgQmVjYXVzZSB0aGUgZnV6emVyIGNhbiBlbXVsYXRlIFVTQiBkZXZpY2VzLCBpdCBjYW4gZGVmaW5pdGVseSB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoIGJ5IHNlbmRpbmcgYSBXTUkgZXZlbnQgd2hpbGUgaW4gdGVzdG1vZGUuCgpOb3csIHRoZSBuYXR1cmFsIHF1ZXN0aW9uIGlzLCBoYXMgdGhpcyBhbHJlYWR5IGJlZW4gZnV6emVkPyBJIGtub3cgU3l6a2FsbGVyIGhhcyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMsIHNvIGxldCYjMzk7cyBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGV4aXN0aW5nIGNvdmVyYWdlLiBUaGUgY29kZSBsb2NhdGlvbiBpcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jYC4gR29vZCwgbGV0JiMzOTtzIGV4cGxvcmUuCgpgYXRoMTBrX3RtX2V2ZW50X3dtaWAgaXMgdGhlIG1haW4gdGFyZ2V0LiBJdCYjMzk7cyBjYWxsZWQgYnkgYGF0aDEwa193bWlfMTBfMV9vcF9yeGAsIGBhdGgxMGtfd21pXzEwXzJfb3BfcnhgLCBgYXRoMTBrX3dtaV8xMF80X29wX3J4YCwgYW5kIGBhdGgxMGtfd21pX3Rsdl9vcF9yeGAuIFRoZXNlIGFyZSBhbGwgUlggaGFuZGxlcnMgZm9yIFdNSSBldmVudHMgY29taW5nIGZyb20gdGhlIGZpcm13YXJlLiBQcmVjaXNlbHkgd2hhdCB0aGUgZnV6emVyIGNhbiBjb250cm9sIGJ5IGVtdWxhdGluZyB0aGUgVVNCIGRldmljZSEKClNvLCB0aGUgY29uY2x1c2lvbiBpcyB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgZnV6emFibGUgYW5kIG9mZmVycyBhIG5ldyBhdHRhY2sgc3VyZmFjZS4gVGltZSB0byBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMgZm9yIGZ1enppbmcgZm9jdXMuIENsZWFybHksIGBhdGgxMGtfdG1fZXZlbnRfd21pYCBpcyB0aGUgbWFpbiBvbmUuIFRoZSBzdGF0aWMgaGVscGVyIGBhdGgxMGtfdG1faXNfdXRmX2V2ZW50YCBpc24mIzM5O3QgYXMgY3JpdGljYWwsIHNvIEkgd29uJiMzOTt0IGZvY3VzIG9uIGl0LiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIHNpZ25hdHVyZSBvZiBgYXRoMTBrX3RtX2V2ZW50X3dtaWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Ym9vbCBhdGgxMGtfdG1fZXZlbnRfd21pJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTE1OT1zdGF0aWMgYm9vbCBhdGgxMGtfdG1faXNfdXRmX2V2ZW50KHUzMiBjbWRfaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTE2OS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxNzA6Ym9vbCBhdGgxMGtfdG1fZXZlbnRfd21pKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTE3MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oPTEwPXZvaWQgYXRoMTBrX3Rlc3Rtb2RlX2Rlc3Ryb3koc3RydWN0IGF0aDEwayAqYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oOjEyOmJvb2wgYXRoMTBrX3RtX2V2ZW50X3dtaShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMTMtaW50IGF0aDEwa190bV9jbWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oPTE4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMGtfdGVzdG1vZGVfZGVzdHJveShzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmg6MjI6c3RhdGljIGlubGluZSBib29sIGF0aDEwa190bV9ldmVudF93bWkoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBjbWRfaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMjMtXHRcdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODkzMQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBhdGgxMGtfdG1fZXZlbnRfd21pYCBGdW5jdGlvbiBmb3IgUmVzZWFyY2gqKgoKT2theSwgc28gSSBzZWUgdGhhdCB0aGUgYGF0aDEwa190bV9ldmVudF93bWlgIGZ1bmN0aW9uIGlzIGRlZmluZWQgYW5kICpub3QqIHN0YXRpYywgYW5kIGl0JiMzOTtzIGV2ZW4gZXhwb3J0ZWQgb3IgYXQgbGVhc3QsIG5vdCBzdGF0aWMgaW4gYHRlc3Rtb2RlLmNgLiBJbnRlcmVzdGluZy4gQW5kLCBoYW5nIG9uLi4uaXQmIzM5O3MgKmFsc28qIGNhbGxlZCBmcm9tIGB3bWkuY2AgYW5kIGB3bWktdGx2LmNgLiBUaGlzIG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gLSBhIGdvb2QsIGNlbnRyYWwgZm9jdXMgcG9pbnQgZm9yIGRpZ2dpbmcgaW50byB0aGUgQXRoZXJvcyBkcml2ZXImIzM5O3MgdGVzdCBtb2RlIGZ1bmN0aW9uYWxpdHkuCgpSaWdodCwgc28gdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgZW52aXJvbm1lbnQgc2V0IHVwIHJpZ2h0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTttIGFzc3VtaW5nLCBvYnZpb3VzbHksIHRoYXQgYENPTkZJR19BVEgxMEtgIGlzIG5lZWRlZCwgYnV0IEkgc2hvdWxkIGFsc28gZW5zdXJlIGBDT05GSUdfQVRIMTBLX1VTQmAgaXMgZW5hYmxlZCwganVzdCBpbiBjYXNlIEkgd2FudCB0byBleHBsb3JlIFVTQiBmdXp6aW5nLiBPZiBjb3Vyc2UsIGBDT05GSUdfTkw4MDIxMV9URVNUTU9ERWAgaXMgY3JpdGljYWwgYmVjYXVzZSBpdCBkaXJlY3RseSBlbmFibGVzIHRoZSBgdGVzdG1vZGUuY2AgZmlsZS4KCk5vdywgbGV0IG1lIGp1c3QgY29uZmlybSB0aG9zZSBjb25maWcgb3B0aW9ucyBieSBxdWlja2x5IHJlZmVyZW5jaW5nIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEkmIzM5O20gd29ya2luZyB3aXRoIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBVEgxMEsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMEtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyA4MDIuMTFhYyB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjE1OmNvbmZpZyBBVEgxMEtfQ0VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0xNi1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzoxODpjb25maWcgQVRIMTBLX1BDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGgxMGsgUENJIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6MjQ6Y29uZmlnIEFUSDEwS19BSEJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGgxMGsgQUhCIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6MzA6Y29uZmlnIEFUSDEwS19TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMzEtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDEwayBTRElPIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6MzY6Y29uZmlnIEFUSDEwS19VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0zNy1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoMTBrIFVTQiBzdXBwb3J0IChFWFBFUklNRU5UQUwpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjQzOmNvbmZpZyBBVEgxMEtfU05PQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gYXRoMTBrIFNOT0Mgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy01NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo1Njpjb25maWcgQVRIMTBLX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNTctXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoMTBrIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy02My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo2NDpjb25maWcgQVRIMTBLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy02NS1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGgxMGsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjcyOmNvbmZpZyBBVEgxMEtfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTczLVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy03Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo3ODpjb25maWcgQVRIMTBLX1NQRUNUUkFMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNzktXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoMTBrIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy04NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo4Njpjb25maWcgQVRIMTBLX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy04Ny1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGgxMGsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjkzOmNvbmZpZyBBVEgxMEtfREZTX0NFUlRJRklFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTk0LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIERGUyBzdXBwb3J0IGZvciBjZXJ0aWZpZWQgcGxhdGZvcm1zXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNDk1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ2hlY2tpbmcgYENPTkZJR19OTDgwMjExX1RFU1RNT0RFYCAtIE15IEluaXRpYWwgQXNzZXNzbWVudCoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgc3RyYWlnaHQgaW4uIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gdmVyaWZ5IHRoZSBzdGF0dXMgb2YgYENPTkZJR19OTDgwMjExX1RFU1RNT0RFYC4gSXQmIzM5O3MgYSBrZXkga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBhbmQgaXRzIHByZXNlbmNlIG9yIGFic2VuY2UgZnVuZGFtZW50YWxseSBzaGFwZXMgaG93IEkmIzM5O20gZ29pbmcgdG8gYXBwcm9hY2ggdGhpcyBpbnZlc3RpZ2F0aW9uIG9yIGRlYnVnZ2luZyBzZXNzaW9uLiBJIGluc3RhbnRseSB0aGluayBvZiBpdHMgaW1wbGljYXRpb25zIOKAkyBkb2VzIGl0IHVubG9jayBzcGVjaWZpYywgcG90ZW50aWFsbHkgcmlza3ksIHRlc3QgaW50ZXJmYWNlcyBpbiBubDgwMjExPyBEb2VzIGl0IGltcGFjdCB0aGUgd2F5IGNlcnRhaW4gd2lyZWxlc3MgZHJpdmVycyBiZWhhdmU/IEFuZCBjcml0aWNhbGx5LCBpcyB0aGlzIGEgZGV2ZWxvcG1lbnQgc3lzdGVtIG9yIGEgcHJvZHVjdGlvbiBlbnZpcm9ubWVudD8gVGhhdCBpbW1lZGlhdGVseSBmcmFtZXMgdGhlIGxldmVsIG9mIGNhdXRpb24gSSYjMzk7bSBnb2luZyB0byBhcHBseS4gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgcG90ZW50aWFsIGZvciB1bmludGVuZGVkIHNpZGUgZWZmZWN0cyBpZiB0aGUgc2V0dGluZyBpcyBlbmFibGVkLCBhbmQgdGhlIGNvbnN0cmFpbnRzIGlmIGl0JiMzOTtzIGRpc2FibGVkLCBiZWNhdXNlIGJvdGggaGF2ZSB2ZXJ5IGNsZWFyIGltcGFjdHMgb24gZGlhZ25vc3RpYyBvcHRpb25zLiBJdCYjMzk7cyB0aGUgbHluY2hwaW4sIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8ga25vdyBiZWZvcmUgbW92aW5nIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBOTDgwMjExX1RFU1RNT0RFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnPTM2PWlmIENGRzgwMjExXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0zNy1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjM4OmNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7bmw4MDIxMSB0ZXN0bW9kZSBjb21tYW5kXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwODQ2CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBXaXJlbGVzcyBEcml2ZXIgQ29uZmlndXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgQVRIMTBLYCwgYEFUSDEwS19VU0JgLCBhbmQgYE5MODAyMTFfVEVTVE1PREVgLiBJbW1lZGlhdGVseSwgSSYjMzk7bSBub3RpbmcgdGhhdCBgQVRIMTBLX1VTQmAgaXMgcHJlc2VudCwgYnV0IEkgbmVlZCB0byBiZSBzdXJlLiBJJiMzOTttIHJlY2FsbGluZyB0aGF0IGBBVEgxMEtfVVNCYCBsaWtlbHkgaGFzIGEgZGVwZW5kZW5jeSBvbiBgVVNCYCBpdHNlbGYsIHNvIEkgc2hvdWxkIGNvbmZpcm0gdGhhdCByZWxhdGlvbnNoaXAuIExldCYjMzk7cyBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIGZvciBgQVRIMTBLX1VTQmAgdG8gZW5zdXJlIHRoaXMgaXMgdW5kZXJzdG9vZCBjb21wbGV0ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVRIMTBLX1VTQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZz0zMD1jb25maWcgQVRIMTBLX1NESU9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6MzY6Y29uZmlnIEFUSDEwS19VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0zNy1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoMTBrIFVTQiBzdXBwb3J0IChFWFBFUklNRU5UQUwpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjAxCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIEF0aGVyb3MgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIGF0aDEwayBkcml2ZXIgaXMgY29uZmlndXJlZC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhlIGJhc2ljcywgc28gSSYjMzk7bSBoZWFkaW5nIGRpcmVjdGx5IHRvIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBsaW5lIDM2LiBUaGF0JiMzOTtzIGEgcmVhc29uYWJsZSBwbGFjZSB0byBzdGFydCBnZXR0aW5nIGEgZmVlbCBmb3IgdGhlIGZ1bmRhbWVudGFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyIGFuZCBob3cgdGhleSYjMzk7cmUgc3RydWN0dXJlZC4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgYW5kIHRoZSBvdmVyYWxsIGRlc2lnbiBwaGlsb3NvcGh5IGJlaGluZCB0aGUgbW9kdWxlIGNvbmZpZ3VyYXRpb24uIEtub3dpbmcgdGhlIEtjb25maWcgaXMga2V5IHRvIGRlYnVnZ2luZyBidWlsZCBpc3N1ZXMsIHVuZGVyc3RhbmRpbmcgbW9kdWxlIGJlaGF2aW9yIGFuZCBldmVuIGFkZGluZyBmZWF0dXJlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDMwOlx0Y29uZmlnIEFUSDEwS19TRElPXG4gIDMxOlx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDEwayBTRElPIHN1cHBvcnRcJiMzNDtcbiAgMzI6XHRcdGRlcGVuZHMgb24gQVRIMTBLIFx1MDAyNlx1MDAyNiBNTUNcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciBTRElPL01NQyBidXMuXG4gIDM1Olx0XG4gIDM2Olx0Y29uZmlnIEFUSDEwS19VU0JcbiAgMzc6XHRcdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoMTBrIFVTQiBzdXBwb3J0IChFWFBFUklNRU5UQUwpXCYjMzQ7XG4gIDM4Olx0XHRkZXBlbmRzIG9uIEFUSDEwSyBcdTAwMjZcdTAwMjYgVVNCXG4gIDM5Olx0XHRoZWxwXG4gIDQwOlx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIFVTQiBidXMuIEN1cnJlbnRseVxuICA0MTpcdFx0ICB3b3JrIGluIHByb2dyZXNzIGFuZCB3aWxsIG5vdCBmdWxseSB3b3JrLlxuICA0MjpcdFxuICA0MzpcdGNvbmZpZyBBVEgxMEtfU05PQ1xuICA0NDpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gYXRoMTBrIFNOT0Mgc3VwcG9ydFwmIzM0O1xuICA0NTpcdFx0ZGVwZW5kcyBvbiBBVEgxMEtcbiAgNDY6XHRcdGRlcGVuZHMgb24gQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVFxuICA0NzpcdFx0ZGVwZW5kcyBvbiBRQ09NX1NNRU1cbiAgNDg6XHRcdGRlcGVuZHMgb24gUUNPTV9SUFJPQ19DT01NT04gfHwgUUNPTV9SUFJPQ19DT01NT049blxuICA0OTpcdFx0c2VsZWN0IFBPV0VSX1NFUVVFTkNJTkdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE3MjgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZXBlbmRlbmN5IERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBBVEgxMEtfVVNCYCB0aGluZywgYW5kIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYnVpbHQgb24gYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGRlcGVuZGVuY3kgY2hhaW4uIEZpcnN0LCBgQVRIMTBLX1VTQmAgbmVlZHMgYm90aCBgQVRIMTBLYCBhbmQgYFVTQmAuIFByZXR0eSBsb2dpY2FsLCByaWdodD8gSXQmIzM5O3MgYSBVU0IgaW1wbGVtZW50YXRpb24gb2Ygc29tZXRoaW5nIGJ1aWx0IG9uIGBBVEgxMEtgLiBOb3csIHRoZSBpbnRlcmVzdGluZyBiaXQuIGBBVEgxMEtgIGl0c2VsZiwgdGhlIGNvcmUgb2YgdGhpcywgcmVsaWVzIG9uIGBNQUM4MDIxMWAgYW5kIGBIQVNfSU9NRU1gLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IGBNQUM4MDIxMWAgaXMgdGhlIDgwMi4xMSBzdGFjayBpdOKAmXMgYnVpbHQgb24sIGFuZCBgSEFTX0lPTUVNYCBpcyBsaWtlbHkgY3J1Y2lhbCBmb3IgdGhlIGhhcmR3YXJlIGludGVyYWN0aW9uLgoKVGltZSB0byBkcmlsbCBkb3duIGFuZCBjaGVjayB0aGUgYEFUSDEwS2AgZGVwZW5kZW5jaWVzIGRpcmVjdGx5LiBHb3R0YSBtYWtlIHN1cmUgdGhvc2UgZm91bmRhdGlvbnMgYXJlIHNvbGlkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAgMjpcdGNvbmZpZyBBVEgxMEtcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgODAyLjExYWMgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICAgNTpcdFx0c2VsZWN0IEFUSF9DT01NT05cbiAgIDY6XHRcdHNlbGVjdCBDUkMzMlxuICAgNzpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gICA4Olx0XHRzZWxlY3QgQVRIMTBLX0NFXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cbiAgMTE6XHRcdCAgQXRoZXJvcyBJRUVFIDgwMi4xMWFjIGZhbWlseSBvZiBjaGlwc2V0cy5cbiAgMTI6XHRcbiAgMTM6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBhdGgxMGsuXG4gIDE0Olx0XG4gIDE1Olx0Y29uZmlnIEFUSDEwS19DRVxuICAxNjpcdFx0Ym9vbFxuICAxNzpcdFxuICAxODpcdGNvbmZpZyBBVEgxMEtfUENJXG4gIDE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDEwayBQQ0kgc3VwcG9ydFwmIzM0O1xuICAyMDpcdFx0ZGVwZW5kcyBvbiBBVEgxMEsgXHUwMDI2XHUwMDI2IFBDSVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjI5NQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDI2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQVRIMTBLIERyaXZlciBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoZSBgQVRIMTBLYCBkcml2ZXIgaXMgcmVsaWFudCBvbiBgTUFDODAyMTFgIGFuZCBgSEFTX0RNQWAsIHNvIHRob3NlIGFyZSBwcmVyZXF1aXNpdGVzLiBUbyBlbmFibGUgdGhlIHJlbGV2YW50IGZ1bmN0aW9uYWxpdHksIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlndXJlIGBBVEgxMEtgLCBgQVRIMTBLX1VTQmAsIGFuZCBgTkw4MDIxMV9URVNUTU9ERWAuCgpIYW5nIG9uLCBgQVRIMTBLX1VTQmAgaXMgbWFya2VkIGFzIGV4cGVyaW1lbnRhbCwgYnV0IHRoZSBrZXJuZWwgaW5jbHVkZXMgaXQsIGFuZCwgY3J1Y2lhbGx5LCBzeXprYWxsZXIgY2FuIHRhcmdldCBpdCBmb3IgZnV6emluZy4gVGhpcyBpcyBpbnRlcmVzdGluZy4gVGhlIHBhdGNoIEkmIzM5O20gbG9va2luZyBhdCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgYGF0aDEwa190bV9ldmVudF93bWlgLiBTbyB0aGUgY29yZSBvZiBteSBhbmFseXNpcyBjb21lcyBkb3duIHRvIGhvdyByZWFjaGFibGUgdGhlIGZ1bmN0aW9uIGlzLgoKVGhlIGtleSBpcyBkZXRlcm1pbmluZyB0aGUgY2FsbCBmbG93LiBJdCBsb29rcyBsaWtlIHdoZW4gdGhlIGZ1enplciBzdWNjZXNzZnVsbHkgZW11bGF0ZXMgdGhlIFVTQiBkZXZpY2UgYW5kIHRoZW4gc2VuZHMgV01JIGV2ZW50cywgdGhlIGZ1bmN0aW9uIGBhdGgxMGtfd21pXzEwXzFfb3BfcnhgIChvciBhIHNpbWlsYXIgdmFyaWFudCkgZ2V0cyBpbnZva2VkLiBBbmQgdGhhdCwgaW4gdHVybiwgY2FsbHMgYGF0aDEwa190bV9ldmVudF93bWlgLiBTbyB3ZSBoYXZlIGEgcGF0aC4KCkJ1dCwgYSBjbG9zZXIgbG9vayBhdCBgYXRoMTBrX3RtX2V2ZW50X3dtaWAgcmV2ZWFscyBpdCYjMzk7cyBvbmx5IGV4ZWN1dGVkIHVuZGVyIHNwZWNpZmljIGNvbmRpdGlvbnM6IGVpdGhlciBpZiBgYXItJmd0O3Rlc3Rtb2RlLnV0Zl9tb25pdG9yYCBpcyB0cnVlIG9yIGlmIGl0IGlzIGEgdGVzdG1vZGUgZXZlbnQuIFRoaXMgaGlnaGxpZ2h0cyBzb21lIGltcG9ydGFudCBwcmVjb25kaXRpb25zIGZvciB0cmlnZ2VyaW5nIHRoaXMgY29kZXBhdGguIFNvIG5vdyBJIG5lZWQgdG8gZGl2ZSBpbnRvIGBhdGgxMGtfd21pXzEwXzFfb3BfcnhgIHRvIHVuZGVyc3RhbmQgcHJlY2lzZWx5IHVuZGVyIHdoYXQgY29uZGl0aW9ucyBpdCBjYWxscyBgYXRoMTBrX3RtX2V2ZW50X3dtaWAuIFRoaXMgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgcG90ZW50aWFsIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MDAzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzYwMDM6XHRzdGF0aWMgdm9pZCBhdGgxMGtfd21pXzEwXzFfb3Bfcngoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXG42MDA0Olx0e1xuNjAwNTpcdFx0c3RydWN0IHdtaV9jbWRfaGRyICpjbWRfaGRyO1xuNjAwNjpcdFx0ZW51bSB3bWlfMTB4X2V2ZW50X2lkIGlkO1xuNjAwNzpcdFx0Ym9vbCBjb25zdW1lZDtcbjYwMDg6XHRcbjYwMDk6XHRcdGNtZF9oZHIgPSAoc3RydWN0IHdtaV9jbWRfaGRyICopc2tiLVx1MDAzZWRhdGE7XG42MDEwOlx0XHRpZCA9IE1TKF9fbGUzMl90b19jcHUoY21kX2hkci1cdTAwM2VjbWRfaWQpLCBXTUlfQ01EX0hEUl9DTURfSUQpO1xuNjAxMTpcdFxuNjAxMjpcdFx0aWYgKHNrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCB3bWlfY21kX2hkcikpID09IE5VTEwpXG42MDEzOlx0XHRcdGdvdG8gb3V0O1xuNjAxNDpcdFxuNjAxNTpcdFx0dHJhY2VfYXRoMTBrX3dtaV9ldmVudChhciwgaWQsIHNrYi1cdTAwM2VkYXRhLCBza2ItXHUwMDNlbGVuKTtcbjYwMTY6XHRcbjYwMTc6XHRcdGNvbnN1bWVkID0gYXRoMTBrX3RtX2V2ZW50X3dtaShhciwgaWQsIHNrYik7XG42MDE4Olx0XG42MDE5Olx0XHQvKiBSZWFkeSBldmVudCBtdXN0IGJlIGhhbmRsZWQgbm9ybWFsbHkgYWxzbyBpbiBVVEYgbW9kZSBzbyB0aGF0IHdlXG42MDIwOlx0XHQgKiBrbm93IHRoZSBVVEYgZmlybXdhcmUgaGFzIGJvb3RlZCwgb3RoZXJzIHdlIGFyZSBqdXN0IGJ5cGFzcyBXTUlcbjYwMjE6XHRcdCAqIGV2ZW50cyB0byB0ZXN0bW9kZS5cbjYwMjI6XHRcdCAqL1xuNjAyMzpcdFx0aWYgKGNvbnN1bWVkIFx1MDAyNlx1MDAyNiBpZCAhPSBXTUlfMTBYX1JFQURZX0VWRU5USUQpIHtcbjYwMjQ6XHRcdFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19XTUksXG42MDI1Olx0XHRcdFx0ICAgXCYjMzQ7d21pIHRlc3Rtb2RlIGNvbnN1bWVkIDB4JXhcXG5cJiMzNDssIGlkKTtcbjYwMjY6XHRcdFx0Z290byBvdXQ7XG42MDI3Olx0XHR9XG42MDI4Olx0XG42MDI5Olx0XHRzd2l0Y2ggKGlkKSB7XG42MDMwOlx0XHRjYXNlIFdNSV8xMFhfTUdNVF9SWF9FVkVOVElEOlxuNjAzMTpcdFx0XHRhdGgxMGtfd21pX2V2ZW50X21nbXRfcngoYXIsIHNrYik7XG42MDMyOlx0XHRcdC8qIG1nbXRfcngoKSBvd25zIHRoZSBza2Igbm93ISAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzU0NwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFscmVhZHkgZGVlcCBpbiB0aGUgd2VlZHMgb2YgdGhpcyBhdGgxMGsgZHJpdmVyOgoKKipBbmFseXppbmcgYXRoMTBrX3RtX2V2ZW50X3dtaSoqCgpSaWdodCwgc28gYGF0aDEwa190bV9ldmVudF93bWlgLiBUaGF0JiMzOTtzIHRoZSBmdW5jdGlvbiBjYWxsZWQgZm9yICpldmVyeSBzaW5nbGUqIFdNSSAoV2lyZWxlc3MgTWFuYWdlbWVudCBJbnRlcmZhY2UpIGV2ZW50LiBUaGF0JiMzOTtzIGEga2V5IG9ic2VydmF0aW9uIOKAkyB1bmRlcnN0YW5kaW5nIHRoYXQgaXQmIzM5O3MgdGhlIGNlbnRyYWwgcG9pbnQgZm9yIFdNSSBldmVudCBoYW5kbGluZyBnaXZlcyBtZSBhbiBpbXBvcnRhbnQgcG9pbnQgb2YgcmVmZXJlbmNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyAqaW5zaWRlKiB0aGF0IGZ1bmN0aW9uIGJlY2F1c2UgaXTigJlzIGhhbmRsaW5nIGV2ZXJ5IGV2ZW50LCBzbyBpdCYjMzk7cyBjcml0aWNhbCB0byBwZXJmb3JtYW5jZSBhbmQgZGVidWdnYWJpbGl0eS4gSSBuZWVkIHRvIG5vdyBmb2N1cyBvbiB0aGUgaW50ZXJuYWwgbG9naWMgdG8gZ2V0IHRoZSBwaWN0dXJlIG9mIHdoYXQmIzM5O3MgaGFwcGVuaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTcwOlx0Ym9vbCBhdGgxMGtfdG1fZXZlbnRfd21pKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIDE3MTpcdHtcbiAxNzI6XHRcdGJvb2wgY29uc3VtZWQ7XG4gMTczOlx0XG4gMTc0Olx0XHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLFxuIDE3NTpcdFx0XHQgICBcJiMzNDt0ZXN0bW9kZSBldmVudCB3bWkgY21kX2lkICVkIHNrYiAlcCBza2ItXHUwMDNlbGVuICVkXFxuXCYjMzQ7LFxuIDE3NjpcdFx0XHQgICBjbWRfaWQsIHNrYiwgc2tiLVx1MDAzZWxlbik7XG4gMTc3Olx0XG4gMTc4Olx0XHRhdGgxMGtfZGJnX2R1bXAoYXIsIEFUSDEwS19EQkdfVEVTVE1PREUsIE5VTEwsIFwmIzM0O1wmIzM0Oywgc2tiLVx1MDAzZWRhdGEsIHNrYi1cdTAwM2VsZW4pO1xuIDE3OTpcdFxuIDE4MDpcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4gMTgxOlx0XG4gMTgyOlx0XHRpZiAoIWFyLVx1MDAzZXRlc3Rtb2RlLnV0Zl9tb25pdG9yKSB7XG4gMTgzOlx0XHRcdGNvbnN1bWVkID0gZmFsc2U7XG4gMTg0Olx0XHRcdGdvdG8gb3V0O1xuIDE4NTpcdFx0fVxuIDE4NjpcdFxuIDE4NzpcdFx0LyogT25seSB0ZXN0bW9kZS5jIHNob3VsZCBiZSBoYW5kbGluZyBldmVudHMgZnJvbSB1dGYgZmlybXdhcmUsXG4gMTg4Olx0XHQgKiBvdGhlcndpc2UgYWxsIHNvcnQgb2YgcHJvYmxlbXMgd2lsbCBhcmlzZSBhcyBtYWM4MDIxMSBvcGVyYXRpb25zXG4gMTg5Olx0XHQgKiBhcmUgbm90IGluaXRpYWxpc2VkLlxuIDE5MDpcdFx0ICovXG4gMTkxOlx0XHRjb25zdW1lZCA9IHRydWU7XG4gMTkyOlx0XG4gMTkzOlx0XHRpZiAoIWF0aDEwa190bV9pc191dGZfZXZlbnQoY21kX2lkKSkge1xuIDE5NDpcdFx0XHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLFxuIDE5NTpcdFx0XHRcdCAgIFwmIzM0O3Rlc3Rtb2RlIGRyb3Agbm9uLXV0ZiBldmVudCBjbWRfaWQgJXVcXG5cJiMzNDssIGNtZF9pZCk7XG4gMTk2Olx0XHRcdGdvdG8gb3V0O1xuIDE5NzpcdFx0fVxuIDE5ODpcdFxuIDE5OTpcdFx0aWYgKGFyLVx1MDAzZXRlc3Rtb2RlLmV4cGVjdGVkX3NlcSAhPSBBVEgxMEtfRlRNX1NFR19OT05FKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDMwNgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDI5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipWdWxuZXJhYmlsaXR5IEFzc2Vzc21lbnQ6IFVURiBNb25pdG9yIGluIGF0aDEwayBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuIFRoZSBVVEYgbW9uaXRvciBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHksIGlzIG9ubHkgYWN0aXZhdGVkIHdoZW4gYGFyLSZndDt0ZXN0bW9kZS51dGZfbW9uaXRvcmAgaXMgc2V0IHRvIHRydWUuIFRoaXMgaXMgY29udHJvbGxlZCBieSB0aGUgYGF0aDEwa190bV9jbWRfdXRmX3N0YXJ0YCBmdW5jdGlvbiwgd2hpY2ggaXMgdHJpZ2dlcmVkIHRocm91Z2ggYSBubDgwMjExIHRlc3Rtb2RlIGNvbW1hbmQuIFRoZSBiZWF1dHkgKGZyb20gYSBmdXp6ZXImIzM5O3MgcGVyc3BlY3RpdmUhKSBpcyB0aGF0IGZ1enppbmcgbmw4MDIxMSB0ZXN0bW9kZSBjb21tYW5kcyBpcyBzdHJhaWdodGZvcndhcmQsIGVzcGVjaWFsbHkgd2hlbiBwYWlyZWQgd2l0aCBVU0ItYmFzZWQgV01JIGV2ZW50IGluamVjdGlvbnMuIFRoYXQmIzM5O3MgYSBsb3cgYmFycmllciB0byBlbnRyeSBmb3IgcG90ZW50aWFsIGF0dGFja3MuCgpUaGUga2V5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBoZXJlLCB0aGUgcHJpbWUgJiMzNDthdHRhY2sgc3VyZmFjZXMsJiMzNDsgYXJlIGBhdGgxMGtfdG1fZXZlbnRfd21pYCBzaW5jZSB0aGUgcGF0Y2ggbW9kaWZpZXMgaXQuIEFsc28sIGBhdGgxMGtfdG1fY21kX3V0Zl9zdGFydGAgaXMgaW1wb3J0YW50IHRvIGhpdCB0aGUgc2V0dXAgcGF0aC4gSSBzaG91bGQgYWxzbyBub3RlIEkgbmVlZCB0byBlbnN1cmUgdGhlIGZ1enplciBjYW4gdHJpZ2dlciBgYXRoMTBrX3RtX2NtZF91dGZfc3RvcGAsIHNpbmNlIHRoaXMgbXVzdCBiZSBwcmVzZW50IG9uIHRoZSBmdXp6ZXIgYXMgd2VsbC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBpZiB0aGUgYGF0aDEwa190bV9jbWRfdXRmX3N0YXJ0YCBmdW5jdGlvbiBpcyBzdGF0aWM7IGl0IHdvdWxkIG1ha2UgdGhpbmdzIG1vcmUgY29tcGxpY2F0ZWQgaWYgaXQgd2VyZSwgYnV0IEkgY2FuIHdvcmsgYXJvdW5kIHRoYXQuIFVsdGltYXRlbHksIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBtYWtlIHN1cmUgdGhlIGZ1enplciBoaXRzIGBhdGgxMGtfdG1fZXZlbnRfd21pYCwgYnV0IGluIG9yZGVyIHRvIGRvIHRoYXQsIEkmIzM5O2xsIGhhdmUgdG8gY29uc2lkZXIgaG93IHRvIHByZXBhcmUgdGhlIHN0YXRlIHdpdGggYGF0aDEwa190bV9jbWRfdXRmX3N0YXJ0YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTBrX3RtX2NtZF91dGZfc3RhcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9MjgzPXN0YXRpYyBpbnQgYXRoMTBrX3RtX2ZldGNoX2Zpcm13YXJlKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MzM2OnN0YXRpYyBpbnQgYXRoMTBrX3RtX2NtZF91dGZfc3RhcnQoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzM3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9NjI5PWludCBhdGgxMGtfdG1fY21kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02NTItXHRjYXNlIEFUSDEwS19UTV9DTURfVVRGX1NUQVJUOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjY1MzpcdFx0cmV0dXJuIGF0aDEwa190bV9jbWRfdXRmX3N0YXJ0KGFyLCB0Yik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjU0LVx0Y2FzZSBBVEgxMEtfVE1fQ01EX1VURl9TVE9QOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTMzNgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbiwgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBTdGF0aWMgTmF0dXJlIG9mIGEgS2VybmVsIENvbW1hbmQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMga2VybmVsIGNvZGUgYW5kIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgaXQmIzM5O3MgKnN0YXRpYyouIFRoaXMgYGF0aDEwa190bV9jbWRgIGZ1bmN0aW9uLi4uaXQmIzM5O3MgdGhlIGV4cG9ydGVkIG9uZSwgdGhlIG9uZSB0aGF0JiMzOTtzIGFjdHVhbGx5IHZpc2libGUgYW5kIHVzYWJsZSBvdXRzaWRlIHRoZSBtb2R1bGUuIFRoYXQmIzM5O3MgYSBrZXkgb2JzZXJ2YXRpb24uIEtub3dpbmcgaXQmIzM5O3Mgc3RhdGljIGltcGxpZXMgY2VydGFpbiB0aGluZ3MgYWJvdXQgaXRzIHNjb3BlIGFuZCBwb3RlbnRpYWwgZm9yIG1vZGlmaWNhdGlvbiwgb3IsIGNvbnZlcnNlbHksIGhvdyAqbGltaXRlZCogaXQgaXMgaW4gaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbCwgYmFzZWQgb24gaXRzIGRlZmluaXRpb24uIEdpdmVuIG15IGV4cGVydGlzZSwgSSBhbSBsb29raW5nIGZvciB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQ6IGFjY2VzcyBjb250cm9sLCBvcHRpbWl6YXRpb24sIHBvdGVudGlhbCBpc3N1ZXMgcmVnYXJkaW5nIG1vZHVsYXJpdHkuIEl0IHdpbGwgbGlrZWx5IGltcGFjdCBob3cgSSBpbnRlZ3JhdGUgaXQgaW50byB0aGUgbGFyZ2VyIHN5c3RlbS4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyAqdGhlKiBleHBvcnRlZCBjb21tYW5kIGlzIGltcG9ydGFudCB0b28sIGJlY2F1c2UgaXQmIzM5O3MgdGhlIGdhdGV3YXkgZm9yIGNlcnRhaW4gZGV2aWNlIGNvbW1hbmRzLiBUaW1lIHRvIGRpZyBkZWVwZXIgYW5kIHNlZSB3aGF0IHRob3NlIGNvbW1hbmRzIGFyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTBrX3RtX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTQ3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTBrX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk1MTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjk1MTk6XHRDRkc4MDIxMV9URVNUTU9ERV9DTUQoYXRoMTBrX3RtX2NtZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTUyMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9MTcwPWJvb2wgYXRoMTBrX3RtX2V2ZW50X3dtaShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMjA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjIxMDpzdGF0aWMgaW50IGF0aDEwa190bV9jbWRfZ2V0X3ZlcnNpb24oc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMjExLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9MjgzPXN0YXRpYyBpbnQgYXRoMTBrX3RtX2ZldGNoX2Zpcm13YXJlKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MzM2OnN0YXRpYyBpbnQgYXRoMTBrX3RtX2NtZF91dGZfc3RhcnQoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzM3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ0MzpzdGF0aWMgdm9pZCBfX2F0aDEwa190bV9jbWRfdXRmX3N0b3Aoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDQ0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ3MDpzdGF0aWMgaW50IGF0aDEwa190bV9jbWRfdXRmX3N0b3Aoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDcxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ4MzpcdF9fYXRoMTBrX3RtX2NtZF91dGZfc3RvcChhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDg0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00OTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDk0OnN0YXRpYyBpbnQgYXRoMTBrX3RtX2NtZF93bWkoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDk1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNTQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjU1MDpzdGF0aWMgaW50IGF0aDEwa190bV9jbWRfdGx2KHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTU1MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTYyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo2Mjk6aW50IGF0aDEwa190bV9jbWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjMwLVx0XHQgIHZvaWQgKmRhdGEsIGludCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTY0OC1cdFx0aWYgKCF0YltBVEgxMEtfVE1fQVRUUl9EQVRBXSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo2NDk6XHRcdFx0cmV0dXJuIGF0aDEwa190bV9jbWRfZ2V0X3ZlcnNpb24oYXIsIHRiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02NTAtXHRcdGVsc2UgLyogQVRIMTBLX1RNX0NNRF9UTFYgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo2NTE6XHRcdFx0cmV0dXJuIGF0aDEwa190bV9jbWRfdGx2KGFyLCB0Yik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjUyLVx0Y2FzZSBBVEgxMEtfVE1fQ01EX1VURl9TVEFSVDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo2NTM6XHRcdHJldHVybiBhdGgxMGtfdG1fY21kX3V0Zl9zdGFydChhciwgdGIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTY1NC1cdGNhc2UgQVRIMTBLX1RNX0NNRF9VVEZfU1RPUDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo2NTU6XHRcdHJldHVybiBhdGgxMGtfdG1fY21kX3V0Zl9zdG9wKGFyLCB0Yik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjU2LVx0Y2FzZSBBVEgxMEtfVE1fQ01EX1dNSTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo2NTc6XHRcdHJldHVybiBhdGgxMGtfdG1fY21kX3dtaShhciwgdGIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTY1OC1cdGRlZmF1bHQ6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTY2Mz12b2lkIGF0aDEwa190ZXN0bW9kZV9kZXN0cm95KHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02NzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NjcyOlx0X19hdGgxMGtfdG1fY21kX3V0Zl9zdG9wKGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02NzMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oPTEyPWJvb2wgYXRoMTBrX3RtX2V2ZW50X3dtaShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmg6MTM6aW50IGF0aDEwa190bV9jbWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMTQtXHRcdCAgdm9pZCAqZGF0YSwgaW50IGxlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oPTIyPXN0YXRpYyBpbmxpbmUgYm9vbCBhdGgxMGtfdG1fZXZlbnRfd21pKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaC0yNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaDoyODpzdGF0aWMgaW5saW5lIGludCBhdGgxMGtfdG1fY21kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oLTI5LVx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaD0yMD1lbnVtIGF0aDEwa190bV9hdHRyIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaC0zNi0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oOjM3OmVudW0gYXRoMTBrX3RtX2NtZCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaC0zOC1cdC8qIFJldHVybnMgdGhlIHN1cHBvcnRlZCBhdGgxMGsgdGVzdG1vZGUgaW50ZXJmYWNlIHZlcnNpb24gaW5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc2NjgKCQkJCQkJCW91dHB1dDogMTYyCgkJCQkJCQl0aG91Z2h0czogOTcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYXNvbmluZyBmb3IgRnV6emluZyB0aGUgYXRoMTBrIFRlc3Rtb2RlIEV2ZW50IEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgYGF0aDEwa190bV9jbWRgIGFuZCBgYXRoMTBrX3RtX2V2ZW50X3dtaWAgc3RhbmQgb3V0LiBUaGUgZm9ybWVyIHNlZW1zIHRvIGJlIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIG5sODAyMTEgdGVzdG1vZGUgY29tbWFuZHMsIGFuZCB0aGUgbGF0dGVyIGlzIHRoZSBoYW5kbGVyIGZvciBXTUkgZXZlbnRzLiBUaG9zZSBhcmUgZGVmaW5pdGVseSBteSBmb2N1cyBzeW1ib2xzIGhlcmUuIFRoZXkgaGFuZGxlIGRpc3RpbmN0IHBhdGhzIGludG8gdGhlIHRlc3QgbW9kZSBmdW5jdGlvbmFsaXR5LgoKSSBuZWVkIHRvIGNvbmZpcm0gd2hpY2ggY29uZmlndXJhdGlvbnMgYXJlIHJlbGV2YW50LiBJIGtub3cgdGhhdCBgQVRIMTBLYCBpcyBhIG11c3QsIGFuZCBzaW5jZSB0aGlzIGludm9sdmVzIFVTQiBpbnRlcmFjdGlvbiwgYEFUSDEwS19VU0JgIGlzIGFsc28gbGlrZWx5IHJlcXVpcmVkLiBBbHNvIHNpbmNlIHRoaXMgZGVhbHMgd2l0aCB0ZXN0IG1vZGUsIGBOTDgwMjExX1RFU1RNT0RFYCBpcyBhbm90aGVyIG9idmlvdXMgY2FuZGlkYXRlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBjb25maWd1cmF0aW9ucyBhcmUgcmlnaHQuIEkga25vdyB0aGF0IGBBVEgxMEtfVVNCYCBkZXBlbmRzIG9uIGBVU0JgIGFuZCBgQVRIMTBLYCwgd2hpY2ggaW4gdHVybiBkZXBlbmQgb24gYE1BQzgwMjExYC4gQnV0IHRoZSBmdXp6ZXIgYmFzZSBjb25maWcgdXN1YWxseSB0YWtlcyBjYXJlIG9mIHRob3NlIGRlcGVuZGVuY2llcywgc28ganVzdCBsaXN0aW5nIHRoZSBkaXJlY3Qgb25lcyBpcyBzYWZlLgoKUmV2aWV3aW5nIHRoZSBwYXRjaCBpdHNlbGYsIGl0JiMzOTtzIGNsZWFyIHRoZSBjaGFuZ2VzIHdpdGhpbiBgYXRoMTBrX3RtX2V2ZW50X3dtaWAgYXJlIGZ1bmN0aW9uYWwuIFRoZSBjb2RlIGlzIGFkZGluZyBhIGNoZWNrIHRvIGRyb3Agbm9uLVVURiBldmVudHMuIFRoaXMgbW9kaWZpY2F0aW9uIHRvIHRoZSBXTUkgZXZlbnQgaGFuZGxpbmcgbG9naWMgaW4gdGVzdCBtb2RlIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgd2FudCB0byBmdXp6LiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGNvZGUgcGF0aCAodGhlIGRyb3ApIGFuZCBtb2RpZmllcyBleGlzdGluZyBsb2dpYy4gU28gdGhlIGZ1enppbmcgdGFyZ2V0IGhlcmUgaXMgdGhlIGBhdGgxMGtgIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGl0cyBldmVudCBwcm9jZXNzaW5nIHdpdGhpbiB0ZXN0IG1vZGUuIEkgY2FuIGZ1enogaXQgdGhyb3VnaCB0aGUgVVNCIGludGVyZmFjZSAoYENPTkZJR19BVEgxMEtfVVNCYCkgYnkgZW11bGF0aW5nIHRoZSBkZXZpY2UgYW5kIHNlbmRpbmcgV01JIGV2ZW50cy4gVGhlIHRlc3QgbW9kZSBpdHNlbGYgY2FuIGJlIGFjdGl2YXRlZCB1c2luZyBubDgwMjExIGNvbW1hbmRzIChgQ09ORklHX05MODAyMTFfVEVTVE1PREVgKS4KClNvLCBJIHRoaW5rIEkmIzM5O3ZlIGdvdCBpdDoKCkZvY3VzIFN5bWJvbHM6CiogICBgYXRoMTBrX3RtX2V2ZW50X3dtaWAKKiAgIGBhdGgxMGtfdG1fY21kYAoKQ29uZmlnczoKKiAgIGBBVEgxMEtgCiogICBgQVRIMTBLX1VTQmAKKiAgIGBOTDgwMjExX1RFU1RNT0RFYAoKSSBhbSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEgxMEsmIzM0OywKICAgICYjMzQ7QVRIMTBLX1VTQiYjMzQ7LAogICAgJiMzNDtOTDgwMjExX1RFU1RNT0RFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoMTBrX3RtX2V2ZW50X3dtaSYjMzQ7LAogICAgJiMzNDthdGgxMGtfdG1fY21kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgYXRoMTBrYCB3aXJlbGVzcyBkcml2ZXImIzM5O3MgdGVzdG1vZGUgZXZlbnQgaGFuZGxpbmcgbG9naWMgdG8gZHJvcCBub24tVVRGIFdNSSBldmVudHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGZpcm13YXJlIGV2ZW50IHByb2Nlc3NpbmcuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgaXRzIFVTQiBpbnRlcmZhY2UgYnkgZW11bGF0aW5nIHRoZSBkZXZpY2UgYW5kIHNlbmRpbmcgV01JIGV2ZW50cywgYW5kIHRoZSB0ZXN0bW9kZSBjYW4gYmUgYWN0aXZhdGVkIHZpYSBubDgwMjExIGNvbW1hbmRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEgxMEsmIzM0OywKICAgICYjMzQ7QVRIMTBLX1VTQiYjMzQ7LAogICAgJiMzNDtOTDgwMjExX1RFU1RNT0RFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoMTBrX3RtX2V2ZW50X3dtaSYjMzQ7LAogICAgJiMzNDthdGgxMGtfdG1fY21kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgYXRoMTBrYCB3aXJlbGVzcyBkcml2ZXImIzM5O3MgdGVzdG1vZGUgZXZlbnQgaGFuZGxpbmcgbG9naWMgdG8gZHJvcCBub24tVVRGIFdNSSBldmVudHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGZpcm13YXJlIGV2ZW50IHByb2Nlc3NpbmcuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgaXRzIFVTQiBpbnRlcmZhY2UgYnkgZW11bGF0aW5nIHRoZSBkZXZpY2UgYW5kIHNlbmRpbmcgV01JIGV2ZW50cywgYW5kIHRoZSB0ZXN0bW9kZSBjYW4gYmUgYWN0aXZhdGVkIHZpYSBubDgwMjExIGNvbW1hbmRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6NTk6NDEuNTE1Njg3NjVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzg2MzIwODQxNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIMTBLXCIsXG4gICAgXCJBVEgxMEtfVVNCXCIsXG4gICAgXCJOTDgwMjExX1RFU1RNT0RFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoMTBrX3RtX2V2ZW50X3dtaVwiLFxuICAgIFwiYXRoMTBrX3RtX2NtZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgYXRoMTBrYCB3aXJlbGVzcyBkcml2ZXIncyB0ZXN0bW9kZSBldmVudCBoYW5kbGluZyBsb2dpYyB0byBkcm9wIG5vbi1VVEYgV01JIGV2ZW50cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXIncyBmaXJtd2FyZSBldmVudCBwcm9jZXNzaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIGl0cyBVU0IgaW50ZXJmYWNlIGJ5IGVtdWxhdGluZyB0aGUgZGV2aWNlIGFuZCBzZW5kaW5nIFdNSSBldmVudHMsIGFuZCB0aGUgdGVzdG1vZGUgY2FuIGJlIGFjdGl2YXRlZCB2aWEgbmw4MDIxMSBjb21tYW5kcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6NTk6NDEuNTE1Njk0NTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTA1NzU5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU1ZWIwNDk5NTczMGJhMDMwOWY1YjA4ZjkzZGM0MzhjZWEwYjkwN2RcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDc6NTk6NDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jXFxuaW5kZXggZDNiZDM4NTY5NGQ2ZS4uMjgyYWU2ZTIwYzhlZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmNcXG5AQCAtMTU2LDYgKzE1NiwxNCBAQCBzdGF0aWMgdm9pZCBhdGgxMGtfdG1fZXZlbnRfc2VnbWVudGVkKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLCBzdHJ1Y3Qgc2tfYlxcbiBcXHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBhdGgxMGtfdG1faXNfdXRmX2V2ZW50KHUzMiBjbWRfaWQpXFxuK3tcXG4rXFx0cmV0dXJuIGNtZF9pZCA9PSBXTUlfMTBYX1BERVZfVVRGX0VWRU5USUQgfHxcXG4rXFx0ICAgICAgIGNtZF9pZCA9PSBXTUlfMTBfMl9QREVWX1VURl9FVkVOVElEIHx8XFxuK1xcdCAgICAgICBjbWRfaWQgPT0gV01JXzEwXzRfUERFVl9VVEZfRVZFTlRJRCB8fFxcbitcXHQgICAgICAgY21kX2lkID09IFdNSV9UTFZfUERFVl9VVEZfRVZFTlRJRDtcXG4rfVxcbitcXG4gLyogUmV0dXJucyB0cnVlIGlmIGNhbGxlZSBjb25zdW1lcyB0aGUgc2tiIGFuZCB0aGUgc2tiIHNob3VsZCBiZSBkaXNjYXJkZWQuXFxuICAqIFJldHVybnMgZmFsc2UgaWYgc2tiIGlzIG5vdCB1c2VkLiBEb2VzIG5vdCBzbGVlcC5cXG4gICovXFxuQEAgLTE4Miw2ICsxOTAsMTIgQEAgYm9vbCBhdGgxMGtfdG1fZXZlbnRfd21pKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHQgKi9cXG4gXFx0Y29uc3VtZWQgPSB0cnVlO1xcbiBcXG4rXFx0aWYgKCFhdGgxMGtfdG1faXNfdXRmX2V2ZW50KGNtZF9pZCkpIHtcXG4rXFx0XFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSxcXG4rXFx0XFx0XFx0ICAgXFxcInRlc3Rtb2RlIGRyb3Agbm9uLXV0ZiBldmVudCBjbWRfaWQgJXVcXFxcblxcXCIsIGNtZF9pZCk7XFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXHR9XFxuK1xcbiBcXHRpZiAoYXItXFx1MDAzZXRlc3Rtb2RlLmV4cGVjdGVkX3NlcSAhPSBBVEgxMEtfRlRNX1NFR19OT05FKVxcbiBcXHRcXHRhdGgxMGtfdG1fZXZlbnRfc2VnbWVudGVkKGFyLCBjbWRfaWQsIHNrYik7XFxuIFxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6NTk6NDEuOTc1NjEwNDgyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTM4MTcyMTUxMzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDEwS1wiLFxuICAgIFwiQVRIMTBLX1VTQlwiLFxuICAgIFwiTkw4MDIxMV9URVNUTU9ERVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF0aDEwa190bV9ldmVudF93bWlcIixcbiAgICBcImF0aDEwa190bV9jbWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGF0aDEwa2Agd2lyZWxlc3MgZHJpdmVyJ3MgdGVzdG1vZGUgZXZlbnQgaGFuZGxpbmcgbG9naWMgdG8gZHJvcCBub24tVVRGIFdNSSBldmVudHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJ3MgZmlybXdhcmUgZXZlbnQgcHJvY2Vzc2luZy4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBpdHMgVVNCIGludGVyZmFjZSBieSBlbXVsYXRpbmcgdGhlIGRldmljZSBhbmQgc2VuZGluZyBXTUkgZXZlbnRzLCBhbmQgdGhlIHRlc3Rtb2RlIGNhbiBiZSBhY3RpdmF0ZWQgdmlhIG5sODAyMTEgY29tbWFuZHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU1ZWIwNDk5NTczMGJhMDMwOWY1YjA4ZjkzZGM0MzhjZWEwYjkwN2RcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAwNzo1OTo0MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuY1xuaW5kZXggZDNiZDM4NTY5NGQ2ZS4uMjgyYWU2ZTIwYzhlZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jXG5AQCAtMTU2LDYgKzE1NiwxNCBAQCBzdGF0aWMgdm9pZCBhdGgxMGtfdG1fZXZlbnRfc2VnbWVudGVkKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLCBzdHJ1Y3Qgc2tfYlxuIFx0Y2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTtcbiB9XG4gXG4rc3RhdGljIGJvb2wgYXRoMTBrX3RtX2lzX3V0Zl9ldmVudCh1MzIgY21kX2lkKVxuK3tcbitcdHJldHVybiBjbWRfaWQgPT0gV01JXzEwWF9QREVWX1VURl9FVkVOVElEIHx8XG4rXHQgICAgICAgY21kX2lkID09IFdNSV8xMF8yX1BERVZfVVRGX0VWRU5USUQgfHxcbitcdCAgICAgICBjbWRfaWQgPT0gV01JXzEwXzRfUERFVl9VVEZfRVZFTlRJRCB8fFxuK1x0ICAgICAgIGNtZF9pZCA9PSBXTUlfVExWX1BERVZfVVRGX0VWRU5USUQ7XG4rfVxuK1xuIC8qIFJldHVybnMgdHJ1ZSBpZiBjYWxsZWUgY29uc3VtZXMgdGhlIHNrYiBhbmQgdGhlIHNrYiBzaG91bGQgYmUgZGlzY2FyZGVkLlxuICAqIFJldHVybnMgZmFsc2UgaWYgc2tiIGlzIG5vdCB1c2VkLiBEb2VzIG5vdCBzbGVlcC5cbiAgKi9cbkBAIC0xODIsNiArMTkwLDEyIEBAIGJvb2wgYXRoMTBrX3RtX2V2ZW50X3dtaShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdCAqL1xuIFx0Y29uc3VtZWQgPSB0cnVlO1xuIFxuK1x0aWYgKCFhdGgxMGtfdG1faXNfdXRmX2V2ZW50KGNtZF9pZCkpIHtcbitcdFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSxcbitcdFx0XHQgICBcInRlc3Rtb2RlIGRyb3Agbm9uLXV0ZiBldmVudCBjbWRfaWQgJXVcXG5cIiwgY21kX2lkKTtcbitcdFx0Z290byBvdXQ7XG4rXHR9XG4rXG4gXHRpZiAoYXItXHUwMDNldGVzdG1vZGUuZXhwZWN0ZWRfc2VxICE9IEFUSDEwS19GVE1fU0VHX05PTkUpXG4gXHRcdGF0aDEwa190bV9ldmVudF9zZWdtZW50ZWQoYXIsIGNtZF9pZCwgc2tiKTtcbiBcdGVsc2VcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjU5OjQxLjk3NTYxMjM5MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MTIzMzQ2NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYXRoMTBrIERyaXZlcjogQSBQcmVsaW1pbmFyeSBBc3Nlc3NtZW50KipcblxuT2theSwgc28gdGhlcmUncyBhIHBhdGNoIGluIGZyb250IG9mIG1lIHRoYXQgdHdlYWtzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmNgLiBJdCBsb29rcyBsaWtlIGl0J3MgYWRkaW5nIGEgY2hlY2ssIGBhdGgxMGtfdG1faXNfdXRmX2V2ZW50KGNtZF9pZClgLCBpbiBgYXRoMTBrX3RtX2V2ZW50X3dtaWAuIEVzc2VudGlhbGx5LCBpZiBpdCdzIG5vdCBhIFVURiBldmVudCwgdGhlIGNvZGUncyBkcm9wcGluZyBpdC4gRmluZS4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBmdXp6aW5nIHRoaXMgZHJpdmVyLiBJdOKAmXMgYSB3aXJlbGVzcyBkcml2ZXIsIHNvIHBvdGVudGlhbGx5IHZ1bG5lcmFibGUgYW5kIGludGVyZXN0aW5nLlxuXG5CdXQgd2FpdC4gKmF0aDEwayouLi4gdGhhdCdzIHRoZSBkcml2ZXIgZm9yIHNwZWNpZmljIEF0aGVyb3MgaGFyZHdhcmUuIFRoaXMgcmFpc2VzIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBvZiB3aGV0aGVyIEkgY2FuIGZ1enogaXQgZWZmZWN0aXZlbHkuIENhbiBJIGV2ZW4gZ2V0IGl0IHRvIHJ1biBpbiBRRU1VPyBXaXJlbGVzcyBkcml2ZXJzIGFyZSBvZnRlbiBmaW5pY2t5IGFib3V0IHBoeXNpY2FsIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBvciBzcGVjaWZpYyBlbXVsYXRpb24gbGF5ZXJzLiBJcyAqYXRoMTBrKiBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGVtdWxhdGVkLCBvciBpcyBpdCBhIHRydWUgaGFyZHdhcmUgZHJpdmVyIChQQ0kvU0RJTy9VU0IpPyBTZWVtcyB0aGUgbGF0dGVyLlxuXG5TbywgaG93IGNhbiBJIGV2ZW4gYmVnaW4gdG8gZnV6eiB0aGlzPyBDb3VsZCBJIHBvdGVudGlhbGx5IGxldmVyYWdlIFVTQiBlbXVsYXRpb24/IFRoZSBxdWVzdGlvbiBpcywgZG9lcyBgYXRoMTBrYCBoYXZlIGEgVVNCIGRyaXZlciBwYXRoPyBJIG5lZWQgdG8gY2hlY2sgdGhhdCBmaXJzdC4gVGhhdCdzIHRoZSBrZXkgdG8gbWFraW5nIGFueSBwcm9ncmVzcyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzkyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6NTk6NDcuNjg3OTUwODIyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDAzMTIwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMGsuKnVzYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUwNCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZT0zND1hdGgxMGtfc2Rpby15ICs9IHNkaW8ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGUtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfQVRIMTBLX1VTQikgKz0gYXRoMTBrX3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZTozNzphdGgxMGtfdXNiLXkgKz0gdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlLTM4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE4OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE5OlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnJlY3ZfcGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM9MzU9c3RhdGljIHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzY6YXRoMTBrX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTc6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9mcmVlX3VyYl90b19waXBlKHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OC1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2NsZWFudXBfcmVjdl91cmIoc3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqdXJiX2NvbnRleHQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Nzk6XFx0YXRoMTBrX3VzYl9mcmVlX3VyYl90b19waXBlKHVyYl9jb250ZXh0LVxcdTAwM2VwaXBlLCB1cmJfY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZnJlZV9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgzOlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNC1cXHRmb3IgKDs7KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDU6XFx0XFx0dXJiX2NvbnRleHQgPSBhdGgxMGtfdXNiX2FsbG9jX3VyYl9mcm9tX3BpcGUocGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExNDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTE2OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTE3LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDEwS19VU0JfUElQRV9NQVg7IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEyMDpcXHRcXHRhdGgxMGtfdXNiX2ZyZWVfcGlwZV9yZXNvdXJjZXMoYXIsIFxcdTAwMjZhcl91c2ItXFx1MDAzZXBpcGVzW2ldKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyMS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEyNTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3JlY3ZfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTI2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyNy1cXHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dCA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEyODpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gdXJiX2NvbnRleHQtXFx1MDAzZXBpcGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMjk6XFx0c3RydWN0IGF0aDEwayAqYXIgPSBwaXBlLVxcdTAwM2Vhcl91c2ItXFx1MDAzZWFyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTMwLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3Mi1jbGVhbnVwX3JlY3ZfdXJiOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTczOlxcdGF0aDEwa191c2JfY2xlYW51cF9yZWN2X3VyYih1cmJfY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3Ny1cXHRcXHQvKiBvdXIgZnJlZSB1cmJzIGFyZSBwaWxpbmcgdXAsIHBvc3QgbW9yZSB0cmFuc2ZlcnMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE3ODpcXHRcXHRhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoYXIsIHBpcGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTc5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTgyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfdHJhbnNtaXRfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTgzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE4NC1cXHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dCA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE4NTpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gdXJiX2NvbnRleHQtXFx1MDAzZXBpcGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxODY6XFx0c3RydWN0IGF0aDEwayAqYXIgPSBwaXBlLVxcdTAwM2Vhcl91c2ItXFx1MDAzZWFyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTg3LVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE5Ni1cXHR1cmJfY29udGV4dC1cXHUwMDNlc2tiID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE5NzpcXHRhdGgxMGtfdXNiX2ZyZWVfdXJiX3RvX3BpcGUodXJiX2NvbnRleHQtXFx1MDAzZXBpcGUsIHVyYl9jb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjA0LS8qIHBpcGUgb3BlcmF0aW9ucyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjA1OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjIwNjpcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpyZWN2X3BpcGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMTItXFx0Zm9yICg7Oykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjEzOlxcdFxcdHVyYl9jb250ZXh0ID0gYXRoMTBrX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHJlY3ZfcGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMTQtXFx0XFx0aWYgKCF1cmJfY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjI5LVxcdFxcdFxcdFxcdCAgQVRIMTBLX1VTQl9SWF9CVUZGRVJfU0laRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjIzMDpcXHRcXHRcXHRcXHQgIGF0aDEwa191c2JfcmVjdl9jb21wbGV0ZSwgdXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjMxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTQtZXJyOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjU1OlxcdGF0aDEwa191c2JfY2xlYW51cF9yZWN2X3VyYih1cmJfY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTYtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjU4OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZmx1c2hfYWxsKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjU5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI2MDpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI2MS1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjcxOnN0YXRpYyB2b2lkIGF0aDEwa191c2Jfc3RhcnRfcmVjdl9waXBlcyhzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI3Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNzM6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI3NzpcXHRhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNzgtXFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZhcl91c2ItXFx1MDAzZXBpcGVzW0FUSDEwS19VU0JfUElQRV9SWF9EQVRBXSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI4MTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3R4X2NvbXBsZXRlKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjgyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjkyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfcnhfY29tcGxldGUoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNjA6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9pb19jb21wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzYxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2MjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gY29udGFpbmVyX29mKHdvcmssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNjM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNjQtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGlvX2NvbXBsZXRlX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzY1OlxcdHN0cnVjdCBhdGgxMGsgKmFyID0gcGlwZS1cXHUwMDNlYXJfdXNiLVxcdTAwM2VhcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM2Ni1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNjktXFx0XFx0aWYgKHBpcGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgQVRIMTBLX1VTQl9QSVBFX0ZMQUdfVFgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNzA6XFx0XFx0XFx0YXRoMTBrX3VzYl90eF9jb21wbGV0ZShhciwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3MS1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNzI6XFx0XFx0XFx0YXRoMTBrX3VzYl9yeF9jb21wbGV0ZShhciwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3My1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3NjojZGVmaW5lIEFUSDEwS19VU0JfTUFYX0RJQUdfQ01EIChzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNzc6I2RlZmluZSBBVEgxMEtfVVNCX01BWF9ESUFHX1JFU1AgKHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3OTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2Rlc3Ryb3koc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zODAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzgxOlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzgzOlxcdGF0aDEwa191c2JfZmx1c2hfYWxsKGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM4NDpcXHRhdGgxMGtfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzg1LVxcdHVzYl9zZXRfaW50ZmRhdGEoYXJfdXNiLVxcdTAwM2VpbnRlcmZhY2UsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozOTE6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9zdGFydChzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTMtXFx0aW50IGk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozOTQ6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTYtXFx0YXRoMTBrX2NvcmVfbmFwaV9lbmFibGUoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzk3OlxcdGF0aDEwa191c2Jfc3RhcnRfcmVjdl9waXBlcyhhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQwOTpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX3R4X3NnKHN0cnVjdCBhdGgxMGsgKmFyLCB1OCBwaXBlX2lkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDEwLVxcdFxcdFxcdFxcdHN0cnVjdCBhdGgxMGtfaGlmX3NnX2l0ZW0gKml0ZW1zLCBpbnQgbl9pdGVtcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQxMS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0MTI6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0MTM6XFx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZSA9IFxcdTAwMjZhcl91c2ItXFx1MDAzZXBpcGVzW3BpcGVfaWRdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDE0LVxcdHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MTktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5faXRlbXM7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDIwOlxcdFxcdHVyYl9jb250ZXh0ID0gYXRoMTBrX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHBpcGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDIxLVxcdFxcdGlmICghdXJiX2NvbnRleHQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDM5LVxcdFxcdFxcdFxcdCAgc2tiLVxcdTAwM2VsZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0NDA6XFx0XFx0XFx0XFx0ICBhdGgxMGtfdXNiX3RyYW5zbWl0X2NvbXBsZXRlLCB1cmJfY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ2My1lcnJfZnJlZV91cmJfdG9fcGlwZTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ2NDpcXHRhdGgxMGtfdXNiX2ZyZWVfdXJiX3RvX3BpcGUodXJiX2NvbnRleHQtXFx1MDAzZXBpcGUsIHVyYl9jb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ2NS1lcnI6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ2OTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9zdG9wKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDcwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ3MTpcXHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzItXFx0YXRoMTBrX2NvcmVfbmFwaV9zeW5jX2Rpc2FibGUoYXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0NzU6c3RhdGljIHUxNiBhdGgxMGtfdXNiX2hpZl9nZXRfZnJlZV9xdWV1ZV9udW1iZXIoc3RydWN0IGF0aDEwayAqYXIsIHU4IHBpcGVfaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDc3OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDc4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00ODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0ODI6c3RhdGljIGludCBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX291dChzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ4My1cXHRcXHRcXHRcXHQgICAgICB1OCByZXEsIHUxNiB2YWx1ZSwgdTE2IGluZGV4LCB2b2lkICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00ODUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDg2OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDg3LVxcdHU4ICpidWYgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MDQtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjUwNTpcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcIkZhaWxlZCB0byBzdWJtaXQgdXNiIGNvbnRyb2wgbWVzc2FnZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MDYtXFx0XFx0XFx0ICAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTUxNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjUxNjpzdGF0aWMgaW50IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfaW4oc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MTctXFx0XFx0XFx0XFx0ICAgICB1OCByZXEsIHUxNiB2YWx1ZSwgdTE2IGluZGV4LCB2b2lkICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTIwOlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTIxLVxcdHU4ICpidWYgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MzgtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjUzOTpcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcIkZhaWxlZCB0byByZWFkIHVzYiBjb250cm9sIG1lc3NhZ2U6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTQwLVxcdFxcdFxcdCAgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1NTI6c3RhdGljIGludCBhdGgxMGtfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTUzLVxcdFxcdFxcdFxcdFxcdHU4IHJlcV92YWwsIHU4ICpyZXFfYnVmLCB1MzIgcmVxX2xlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTU5LVxcdC8qIHNlbmQgY29tbWFuZCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTYwOlxcdHJldCA9IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfb3V0KGFyLCByZXFfdmFsLCAwLCAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTYxLVxcdFxcdFxcdFxcdFxcdCByZXFfYnVmLCByZXFfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTY2LVxcdGlmIChyZXNwX2J1Zikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTY3OlxcdFxcdHJldCA9IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfaW4oYXIsIHJlc3BfdmFsLCAwLCAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTY4LVxcdFxcdFxcdFxcdFxcdFxcdHJlc3BfYnVmLCAqcmVzcF9sZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1Nzg6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9kaWFnX3JlYWQoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBhZGRyZXNzLCB2b2lkICpidWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NzktXFx0XFx0XFx0XFx0ICAgIHNpemVfdCBidWZfbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTgwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4MTpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4MjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3JlYWQgKmNtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4My1cXHR1MzIgcmVzcF9sZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4NjpcXHRpZiAoYnVmX2xlbiBcXHUwMDNjIHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4Ny1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4OTpcXHRjbWQgPSAoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF9yZWFkICopYXJfdXNiLVxcdTAwM2VkaWFnX2NtZF9idWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OTAtXFx0bWVtc2V0KGNtZCwgMCwgc2l6ZW9mKCpjbWQpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTkyLVxcdGNtZC1cXHUwMDNlYWRkcmVzcyA9IGNwdV90b19sZTMyKGFkZHJlc3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTkzOlxcdHJlc3BfbGVuID0gc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTk1OlxcdHJldCA9IGF0aDEwa191c2JfY3RybF9tc2dfZXhjaGFuZ2UoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OTYtXFx0XFx0XFx0XFx0XFx0ICAgQVRIMTBLX1VTQl9DT05UUk9MX1JFUV9ESUFHX0NNRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjA0OlxcdGlmIChyZXNwX2xlbiAhPSBzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX3Jlc3BfcmVhZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MDUtXFx0XFx0cmV0dXJuIC1FTVNHU0laRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjA3LVxcdG1lbWNweShidWYsIGFyX3VzYi1cXHUwMDNlZGlhZ19yZXNwX2J1ZmZlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYwODpcXHQgICAgICAgc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYwOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjEzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfZGlhZ193cml0ZShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGFkZHJlc3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MTQtXFx0XFx0XFx0XFx0ICAgICBjb25zdCB2b2lkICpkYXRhLCBpbnQgbmJ5dGVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjE1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYxNjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYxNzpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlICpjbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MTgtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjIzOlxcdGNtZCA9IChzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlICopYXJfdXNiLVxcdTAwM2VkaWFnX2NtZF9idWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MjQtXFx0bWVtc2V0KGNtZCwgMCwgc2l6ZW9mKCpjbWQpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjI5OlxcdHJldCA9IGF0aDEwa191c2JfY3RybF9tc2dfZXhjaGFuZ2UoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MzAtXFx0XFx0XFx0XFx0XFx0ICAgQVRIMTBLX1VTQl9DT05UUk9MX1JFUV9ESUFHX0NNRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjQwOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9ibWlfZXhjaGFuZ2VfbXNnKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjQxLVxcdFxcdFxcdFxcdCAgICAgICB2b2lkICpyZXEsIHUzMiByZXFfbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NDYtXFx0aWYgKHJlcSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjQ3OlxcdFxcdHJldCA9IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfb3V0KGFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjQ4LVxcdFxcdFxcdFxcdFxcdFxcdCBBVEgxMEtfVVNCX0NPTlRST0xfUkVRX1NFTkRfQk1JX0NNRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjU4LVxcdGlmIChyZXNwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2NTk6XFx0XFx0cmV0ID0gYXRoMTBrX3VzYl9zdWJtaXRfY3RybF9pbihhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY2MC1cXHRcXHRcXHRcXHRcXHRcXHRBVEgxMEtfVVNCX0NPTlRST0xfUkVRX1JFQ1ZfQk1JX1JFU1AsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY3MzpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9nZXRfZGVmYXVsdF9waXBlKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjc0LVxcdFxcdFxcdFxcdFxcdCAgICB1OCAqdWxfcGlwZSwgdTggKmRsX3BpcGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY4MDpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX21hcF9zZXJ2aWNlX3RvX3BpcGUoc3RydWN0IGF0aDEwayAqYXIsIHUxNiBzdmNfaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02ODEtXFx0XFx0XFx0XFx0XFx0ICAgICAgdTggKnVsX3BpcGUsIHU4ICpkbF9waXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MDQ6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9wb3dlcl91cChzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcwNS1cXHRcXHRcXHRcXHQgICBlbnVtIGF0aDEwa19maXJtd2FyZV9tb2RlIGZ3X21vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcxMDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9wb3dlcl9kb3duKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzExLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcxMjpcXHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MTMtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MTc6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9zdXNwZW5kKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzE4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzIyOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfcmVzdW1lKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzI4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTBrX2hpZl9vcHMgYXRoMTBrX3VzYl9oaWZfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzI5OlxcdC50eF9zZ1xcdFxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfdHhfc2csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzA6XFx0LmRpYWdfcmVhZFxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfZGlhZ19yZWFkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzMxOlxcdC5kaWFnX3dyaXRlXFx0XFx0PSBhdGgxMGtfdXNiX2hpZl9kaWFnX3dyaXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzMyOlxcdC5leGNoYW5nZV9ibWlfbXNnXFx0PSBhdGgxMGtfdXNiX2JtaV9leGNoYW5nZV9tc2csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzM6XFx0LnN0YXJ0XFx0XFx0XFx0PSBhdGgxMGtfdXNiX2hpZl9zdGFydCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNDpcXHQuc3RvcFxcdFxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfc3RvcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNTpcXHQubWFwX3NlcnZpY2VfdG9fcGlwZVxcdD0gYXRoMTBrX3VzYl9oaWZfbWFwX3NlcnZpY2VfdG9fcGlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNjpcXHQuZ2V0X2RlZmF1bHRfcGlwZVxcdD0gYXRoMTBrX3VzYl9oaWZfZ2V0X2RlZmF1bHRfcGlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNzpcXHQuZ2V0X2ZyZWVfcXVldWVfbnVtYmVyXFx0PSBhdGgxMGtfdXNiX2hpZl9nZXRfZnJlZV9xdWV1ZV9udW1iZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3Mzg6XFx0LnBvd2VyX3VwXFx0XFx0PSBhdGgxMGtfdXNiX2hpZl9wb3dlcl91cCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczOTpcXHQucG93ZXJfZG93blxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfcG93ZXJfZG93bixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc0MC0jaWZkZWYgQ09ORklHX1BNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDE6XFx0LnN1c3BlbmRcXHRcXHQ9IGF0aDEwa191c2JfaGlmX3N1c3BlbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDI6XFx0LnJlc3VtZVxcdFxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzQzLSNlbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03NDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDY6c3RhdGljIHU4IGF0aDEwa191c2JfZ2V0X2xvZ2ljYWxfcGlwZV9udW0odTggZXBfYWRkcmVzcywgaW50ICp1cmJfY291bnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03NDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03OTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3OTE6c3RhdGljIGludCBhdGgxMGtfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzkyOlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03OTMtXFx0XFx0XFx0XFx0XFx0ICAgaW50IHVyYl9jbnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgxMS1cXHRcXHRwaXBlLVxcdTAwM2V1cmJfYWxsb2MrKztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgxMjpcXHRcXHRhdGgxMGtfdXNiX2ZyZWVfdXJiX3RvX3BpcGUocGlwZSwgdXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODEzLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODIzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9zZXR1cF9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyNC1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODI1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyNjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyNy1cXHRzdHJ1Y3QgdXNiX2hvc3RfaW50ZXJmYWNlICppZmFjZV9kZXNjID0gaW50ZXJmYWNlLVxcdTAwM2VjdXJfYWx0c2V0dGluZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyOC1cXHRzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IgKmVuZHBvaW50O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODI5OlxcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MzAtXFx0aW50IHJldCwgaSwgdXJiY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgzMzpcXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1VTQiwgXFxcInVzYiBzZXR0aW5nIHVwIHBpcGVzIHVzaW5nIGludGVyZmFjZVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTg3MS1cXHRcXHRwaXBlX251bSA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4NzI6XFx0XFx0ICAgIGF0aDEwa191c2JfZ2V0X2xvZ2ljYWxfcGlwZV9udW0oZW5kcG9pbnQtXFx1MDAzZWJFbmRwb2ludEFkZHJlc3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04NzMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZ1cmJjb3VudCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjkyNTpcXHRcXHRyZXQgPSBhdGgxMGtfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKGFyLCBwaXBlLCB1cmJjb3VudCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MjYtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTMzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9jcmVhdGUoc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzQtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTM1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjkzNjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkzNy1cXHRzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTM4OlxcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzktXFx0aW50IHJldCwgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTQ4LVxcdFxcdElOSVRfV09SSyhcXHUwMDI2cGlwZS1cXHUwMDNlaW9fY29tcGxldGVfd29yayxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjk0OTpcXHRcXHRcXHQgIGF0aDEwa191c2JfaW9fY29tcF93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk1MC1cXHRcXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZwaXBlLVxcdTAwM2Vpb19jb21wX3F1ZXVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTY2OlxcdHJldCA9IGF0aDEwa191c2Jfc2V0dXBfcGlwZV9yZXNvdXJjZXMoYXIsIGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05NjctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTcyLWVycjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjk3MzpcXHRhdGgxMGtfdXNiX2Rlc3Ryb3koYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTc0LVxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjk3NzpzdGF0aWMgaW50IGF0aDEwa191c2JfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqY3R4LCBpbnQgYnVkZ2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTkxOi8qIGF0aDEwayB1c2IgZHJpdmVyIHJlZ2lzdGVyZWQgZnVuY3Rpb25zICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5OTI6c3RhdGljIGludCBhdGgxMGtfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTMtXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTk1LVxcdHN0cnVjdCBhdGgxMGsgKmFyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTk2OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTctXFx0c3RydWN0IHVzYl9kZXZpY2UgKmRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50ZXJmYWNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwMTA6XFx0YXIgPSBhdGgxMGtfY29yZV9jcmVhdGUoc2l6ZW9mKCphcl91c2IpLCBcXHUwMDI2ZGV2LVxcdTAwM2VkZXYsIEFUSDEwS19CVVNfVVNCLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTAxMTpcXHRcXHRcXHRcXHRod19yZXYsIFxcdTAwMjZhdGgxMGtfdXNiX2hpZl9vcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAxMi1cXHRpZiAoIWFyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDE3OlxcdG5ldGlmX25hcGlfYWRkKGFyLVxcdTAwM2VuYXBpX2RldiwgXFx1MDAyNmFyLVxcdTAwM2VuYXBpLCBhdGgxMGtfdXNiX25hcGlfcG9sbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDE4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTAyNjpcXHRhcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTAyNzpcXHRyZXQgPSBhdGgxMGtfdXNiX2NyZWF0ZShhciwgaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMjgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA1MS1lcnJfdXNiX2Rlc3Ryb3k6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDUyOlxcdGF0aDEwa191c2JfZGVzdHJveShhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDUzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA2MDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA2MjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNjg6XFx0YXRoMTBrX2NvcmVfdW5yZWdpc3Rlcihhcl91c2ItXFx1MDAzZWFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNjktXFx0bmV0aWZfbmFwaV9kZWwoXFx1MDAyNmFyX3VzYi1cXHUwMDNlYXItXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA3MDpcXHRhdGgxMGtfdXNiX2Rlc3Ryb3koYXJfdXNiLVxcdTAwM2Vhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDcxOlxcdGF0aDEwa19jb3JlX2Rlc3Ryb3koYXJfdXNiLVxcdTAwM2Vhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDcyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNzY6c3RhdGljIGludCBhdGgxMGtfdXNiX3BtX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNzctXFx0XFx0XFx0XFx0IHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA3OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDc5OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSB1c2JfZ2V0X2ludGZkYXRhKGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA4MTpcXHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcl91c2ItXFx1MDAzZWFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODItXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDg1OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9wbV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA4NzpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA4ODpcXHRzdHJ1Y3QgYXRoMTBrICphciA9IGFyX3VzYi1cXHUwMDNlYXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA5MDpcXHRhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDkxLVxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2YXJfdXNiLVxcdTAwM2VwaXBlc1tBVEgxMEtfVVNCX1BJUEVfUlhfREFUQV0pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA5ODojZGVmaW5lIGF0aDEwa191c2JfcG1fc3VzcGVuZCBOVUxMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDk5OiNkZWZpbmUgYXRoMTBrX3VzYl9wbV9yZXN1bWUgTlVMTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEwMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEwMy0vKiB0YWJsZSBvZiBkZXZpY2VzIHRoYXQgd29yayB3aXRoIHRoaXMgZHJpdmVyICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTA0OnN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBhdGgxMGtfdXNiX2lkc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEwNS1cXHR7VVNCX0RFVklDRSgweDEzYjEsIDB4MDA0Mil9LCAvKiBMaW5rc3lzIFdVU0I2MTAwTSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTEwOTpNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgYXRoMTBrX3VzYl9pZHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTExMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTE6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGF0aDEwa191c2JfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExMjpcXHQubmFtZSA9IFxcXCJhdGgxMGtfdXNiXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTM6XFx0LnByb2JlID0gYXRoMTBrX3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTQ6XFx0LnN1c3BlbmQgPSBhdGgxMGtfdXNiX3BtX3N1c3BlbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTE1OlxcdC5yZXN1bWUgPSBhdGgxMGtfdXNiX3BtX3Jlc3VtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTY6XFx0LmRpc2Nvbm5lY3QgPSBhdGgxMGtfdXNiX2Rpc2Nvbm5lY3QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTE3OlxcdC5pZF90YWJsZSA9IGF0aDEwa191c2JfaWRzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTExOC1cXHQuc3VwcG9ydHNfYXV0b3N1c3BlbmQgPSB0cnVlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTEyMjptb2R1bGVfdXNiX2RyaXZlcihhdGgxMGtfdXNiX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTIzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjQ0OnN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfd3JpdGUge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNDUtXFx0X19sZTMyIGNtZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo1MTpzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3JlYWQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTItXFx0X19sZTMyIGNtZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo1NjpzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTU3LVxcdHU4IHZhbHVlWzRdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC02MC0vKiB0eC9yeCBwaXBlcyBmb3IgdXNiICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo2MTplbnVtIGF0aDEwa191c2JfcGlwZV9pZCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC02Mi1cXHRBVEgxMEtfVVNCX1BJUEVfVFhfQ1RSTCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6NzM6c3RydWN0IGF0aDEwa191c2JfcGlwZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC03NC1cXHRzdHJ1Y3QgbGlzdF9oZWFkIHVyYl9saXN0X2hlYWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTgyLVxcdHU4IGxvZ2ljYWxfcGlwZV9udW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo4MzpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtODQtXFx0dTE2IG1heF9wYWNrZXRfc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtOTItLyogdXNiIGRldmljZSBvYmplY3QgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjkzOnN0cnVjdCBhdGgxMGtfdXNiIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTk0LVxcdC8qIHByb3RlY3RzIHBpcGUtXFx1MDAzZXVyYl9saXN0X2hlYWQgYW5kICBwaXBlLVxcdTAwM2V1cmJfY250ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTk4LVxcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo5OTpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlIHBpcGVzW0FUSDEwS19VU0JfUElQRV9NQVhdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTAwLVxcdHU4ICpkaWFnX2NtZF9idWZmZXI7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oPTEwNj1zdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTEwNy1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDoxMDg6XFx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTEwOS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC0xMTItXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjU5OjQ3Ljc5MTk4ODM2NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1ODYwMjc2MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgYGF0aDEwa2AgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3QgYXBwcm9hY2ggdG8gZnV6emluZyB0aGUgYGF0aDEwa2AgZHJpdmVyLiBHb29kLCBpdCBsb29rcyBsaWtlIGBhdGgxMGtgICpkb2VzKiBoYXZlIGEgVVNCIGRyaXZlciAoYGF0aDEwa191c2JgKSwgd2hpY2ggbWVhbnMgSSBoYXZlIGEgcG90ZW50aWFsIGF2ZW51ZSBmb3IgZnV6emluZyB2aWEgVVNCIGVtdWxhdGlvbiwgd2hpY2ggaXMgZ3JlYXQuIFRoYXQgb3BlbnMgdXAgYSBsb3Qgb2YgcG9zc2liaWxpdGllcy4gTm93LCBJIG5lZWQgdG8gZGlnIGRlZXBlci4uLlxuSGFuZyBvbiBhIG1pbnV0ZSEgSSB2YWd1ZWx5IHJlY2FsbCBzb21ldGhpbmcgYWJvdXQgYSB0ZXN0IG1vZGUuLi4gc3BlY2lmaWNhbGx5LCBgYXRoMTBrX3RtX2V2ZW50X3dtaWAuIEkgdGhpbmsgSSBzYXcgdGhhdCBpbiBgdGVzdG1vZGUuY2AuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhhdCB0ZXN0IG1vZGUgZW5hYmxlZCBieSBkZWZhdWx0LCBvciBpcyBpdCBjb250aW5nZW50IG9uIHNvbWUga2luZCBvZiBjb25maWd1cmF0aW9uIHNldHRpbmc/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byB0cmlnZ2VyIHRoYXQgYHRlc3Rtb2RlYCBwYXRoLCBpdCBtaWdodCBleHBvc2UgYSBsb3Qgb2YgdXNlZnVsIHRlc3QgcG9pbnRzLiBBbHJpZ2h0LCB0aW1lIHRvIGNoZWNrIHRoZSBLY29uZmlnLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnYCB0byBzZWUgaG93IHRlc3QgbW9kZSBpcyBoYW5kbGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjc2MCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjU5OjU2LjM3ODAxODI0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNjU5NjYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0ZXN0bW9kZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlPTE4PWF0aDEwa19jb3JlLSQoQ09ORklHX0FUSDEwS19TUEVDVFJBTCkgKz0gc3BlY3RyYWwub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGU6MTk6YXRoMTBrX2NvcmUtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGUtMjAtYXRoMTBrX2NvcmUtJChDT05GSUdfQVRIMTBLX1RSQUNJTkcpICs9IHRyYWNlLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5jLTI3LSNpbmNsdWRlIFxcXCJodHQuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYzoyODojaW5jbHVkZSBcXFwidGVzdG1vZGUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYy0yOS0jaW5jbHVkZSBcXFwid21pLW9wcy5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmM9NTc9TU9EVUxFX1BBUk1fREVTQyh1YXJ0X3ByaW50LCBcXFwiVWFydCB0YXJnZXQgZGVidWdnaW5nXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmM6NTg6TU9EVUxFX1BBUk1fREVTQyhza2lwX290cCwgXFxcIlNraXAgb3RwIGZhaWx1cmUgZm9yIGNhbGlicmF0aW9uIGluIHRlc3Rtb2RlXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmMtNTktTU9EVUxFX1BBUk1fREVTQyhjcnlwdG1vZGUsIFxcXCJDcnlwdG8gbW9kZTogMC1oYXJkd2FyZSwgMS1zb2Z0d2FyZVxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmM9MzU4Nj12b2lkIGF0aDEwa19jb3JlX3VucmVnaXN0ZXIoc3RydWN0IGF0aDEwayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYy0zNjA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5jOjM2MDg6XFx0YXRoMTBrX3Rlc3Rtb2RlX2Rlc3Ryb3koYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5jLTM2MDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaD0xMDExPXN0cnVjdCBhdGgxMGsge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgtMTI2OC1cXHRcXHR1OCAqZXZlbnRkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oOjEyNjk6XFx0fSB0ZXN0bW9kZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0xMjcwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jPTQyPXZvaWQgYXRoMTBrX2RlYnVnX3ByaW50X2h3ZndfaW5mbyhzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy01NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM6NTY6XFx0YXRoMTBrX2luZm8oYXIsIFxcXCJrY29uZmlnIGRlYnVnICVkIGRlYnVnZnMgJWQgdHJhY2luZyAlZCBkZnMgJWQgdGVzdG1vZGUgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTU3LVxcdFxcdCAgICBJU19FTkFCTEVEKENPTkZJR19BVEgxMEtfREVCVUcpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0yNS0jaW5jbHVkZSBcXFwidHhyeC5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MjY6I2luY2x1ZGUgXFxcInRlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0yNy0jaW5jbHVkZSBcXFwid21pLXRsdi5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjc6I2luY2x1ZGUgXFxcInRlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjE5OiNpbmNsdWRlIFxcXCJ0ZXN0bW9kZV9pLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTIwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTM0PXN0YXRpYyB2b2lkIGF0aDEwa190bV9ldmVudF91bnNlZ21lbnRlZChzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDA6XFx0bmxfc2tiID0gY2ZnODAyMTFfdGVzdG1vZGVfYWxsb2NfZXZlbnRfc2tiKGFyLVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQxLVxcdFxcdFxcdFxcdFxcdFxcdCAgIDIgKiBzaXplb2YodTMyKSArIHNrYi1cXHUwMDNlbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ0LVxcdFxcdGF0aDEwa193YXJuKGFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0NTpcXHRcXHRcXHQgICAgXFxcImZhaWxlZCB0byBhbGxvY2F0ZSBza2IgZm9yIHRlc3Rtb2RlIHdtaSBldmVudFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ2LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy01MS1cXHRcXHRhdGgxMGtfd2FybihhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NTI6XFx0XFx0XFx0ICAgIFxcXCJmYWlsZWQgdG8gcHV0IHRlc3Rtb2RlIHdtaSBldmVudCBjbWQgYXR0cmlidXRlOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNTMtXFx0XFx0XFx0ICAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjAtXFx0XFx0YXRoMTBrX3dhcm4oYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjYxOlxcdFxcdFxcdCAgICBcXFwiZmFpbGVkIHRvIHB1dCB0ZXN0bW9kZSB3bWkgZXZlbnQgY21kX2lkOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjItXFx0XFx0XFx0ICAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjktXFx0XFx0YXRoMTBrX3dhcm4oYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjcwOlxcdFxcdFxcdCAgICBcXFwiZmFpbGVkIHRvIGNvcHkgc2tiIHRvIHRlc3Rtb2RlIHdtaSBldmVudDogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTcxLVxcdFxcdFxcdCAgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo3NjpcXHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy03Ny19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9Nzk9c3RhdGljIHZvaWQgYXRoMTBrX3RtX2V2ZW50X3NlZ21lbnRlZChzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xMDEtXFx0aWYgKGN1cnJlbnRfc2VxID09IDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTAyOlxcdFxcdGFyLVxcdTAwM2V0ZXN0bW9kZS5leHBlY3RlZF9zZXEgPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxMDM6XFx0XFx0YXItXFx1MDAzZXRlc3Rtb2RlLmRhdGFfcG9zID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTA0LVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxMDY6XFx0ZGF0YV9wb3MgPSBhci1cXHUwMDNldGVzdG1vZGUuZGF0YV9wb3M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTEwNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjExNTpcXHRtZW1jcHkoXFx1MDAyNmFyLVxcdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGFbZGF0YV9wb3NdLCBidWZfcG9zLCBkYXRhbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTE2LVxcdGRhdGFfcG9zICs9IGRhdGFsZW47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTExNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTE4OlxcdGlmICgrK2FyLVxcdTAwM2V0ZXN0bW9kZS5leHBlY3RlZF9zZXEgIT0gdG90YWxfc2VnbWVudHMpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTE5OlxcdFxcdGFyLVxcdTAwM2V0ZXN0bW9kZS5kYXRhX3BvcyA9IGRhdGFfcG9zO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xMjAtXFx0XFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSwgXFxcInBhcnRpYWwgZGF0YSByZWNlaXZlZCAldS8ldVxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjEyNzpcXHRubF9za2IgPSBjZmc4MDIxMV90ZXN0bW9kZV9hbGxvY19ldmVudF9za2IoYXItXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTI4LVxcdFxcdFxcdFxcdFxcdFxcdCAgIDIgKiBzaXplb2YodTMyKSArIGRhdGFfcG9zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTEzMC1cXHRpZiAoIW5sX3NrYikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxMzE6XFx0XFx0YXRoMTBrX3dhcm4oYXIsIFxcXCJmYWlsZWQgdG8gYWxsb2NhdGUgc2tiIGZvciB0ZXN0bW9kZSB3bWkgZXZlbnRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xMzItXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTEzNi1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjEzNzpcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcImZhaWxlZCB0byBwdXQgdGVzdG1vZGUgd21pIGV2ZW50IGF0dHJpYnV0ZTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTEzOC1cXHRcXHRrZnJlZV9za2Iobmxfc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNDMtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxNDQ6XFx0XFx0YXRoMTBrX3dhcm4oYXIsIFxcXCJmYWlsZWQgdG8gcHV0IHRlc3Rtb2RlIHdtaSBldmVudCBjbWRfaWQ6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNDUtXFx0XFx0a2ZyZWVfc2tiKG5sX3NrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxNDk6XFx0cmV0ID0gbmxhX3B1dChubF9za2IsIEFUSDEwS19UTV9BVFRSX0RBVEEsIGRhdGFfcG9zLCBcXHUwMDI2YXItXFx1MDAzZXRlc3Rtb2RlLmV2ZW50ZGF0YVswXSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTE1MC1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjE1MTpcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcImZhaWxlZCB0byBjb3B5IHNrYiB0byB0ZXN0bW9kZSB3bWkgZXZlbnQ6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNTItXFx0XFx0a2ZyZWVfc2tiKG5sX3NrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxNTY6XFx0Y2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTU3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYz0xNzA9Ym9vbCBhdGgxMGtfdG1fZXZlbnRfd21pKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTE3NC1cXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxNzU6XFx0XFx0ICAgXFxcInRlc3Rtb2RlIGV2ZW50IHdtaSBjbWRfaWQgJWQgc2tiICVwIHNrYi1cXHUwMDNlbGVuICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNzYtXFx0XFx0ICAgY21kX2lkLCBza2IsIHNrYi1cXHUwMDNlbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjE4MjpcXHRpZiAoIWFyLVxcdTAwM2V0ZXN0bW9kZS51dGZfbW9uaXRvcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xODMtXFx0XFx0Y29uc3VtZWQgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjE4NzpcXHQvKiBPbmx5IHRlc3Rtb2RlLmMgc2hvdWxkIGJlIGhhbmRsaW5nIGV2ZW50cyBmcm9tIHV0ZiBmaXJtd2FyZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTg4LVxcdCAqIG90aGVyd2lzZSBhbGwgc29ydCBvZiBwcm9ibGVtcyB3aWxsIGFyaXNlIGFzIG1hYzgwMjExIG9wZXJhdGlvbnNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xOTQtXFx0XFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTk1OlxcdFxcdFxcdCAgIFxcXCJ0ZXN0bW9kZSBkcm9wIG5vbi11dGYgZXZlbnQgY21kX2lkICV1XFxcXG5cXFwiLCBjbWRfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xOTYtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxOTk6XFx0aWYgKGFyLVxcdTAwM2V0ZXN0bW9kZS5leHBlY3RlZF9zZXEgIT0gQVRIMTBLX0ZUTV9TRUdfTk9ORSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMjAwLVxcdFxcdGF0aDEwa190bV9ldmVudF9zZWdtZW50ZWQoYXIsIGNtZF9pZCwgc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYz0yMTA9c3RhdGljIGludCBhdGgxMGtfdG1fY21kX2dldF92ZXJzaW9uKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTIxNS1cXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoyMTY6XFx0XFx0ICAgXFxcInRlc3Rtb2RlIGNtZCBnZXQgdmVyc2lvbl9tYWpvciAlZCB2ZXJzaW9uX21pbm9yICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0yMTctXFx0XFx0ICAgQVRIMTBLX1RFU1RNT0RFX1ZFUlNJT05fTUFKT1IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoyMjA6XFx0c2tiID0gY2ZnODAyMTFfdGVzdG1vZGVfYWxsb2NfcmVwbHlfc2tiKGFyLVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTIyMS1cXHRcXHRcXHRcXHRcXHRcXHRubGFfdG90YWxfc2l6ZShzaXplb2YodTMyKSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTI0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MjQ2OlxcdHJldHVybiBjZmc4MDIxMV90ZXN0bW9kZV9yZXBseShza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0yNDctfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTI0OT1zdGF0aWMgaW50IGF0aDEwa190bV9mZXRjaF91dGZfZmlybXdhcmVfYXBpXzEoc3RydWN0IGF0aDEwayAqYXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMjU5LVxcdHJldCA9IGZpcm13YXJlX3JlcXVlc3Rfbm93YXJuKFxcdTAwMjZmd19maWxlLVxcdTAwM2VmaXJtd2FyZSwgZmlsZW5hbWUsIGFyLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoyNjA6XFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSwgXFxcInRlc3Rtb2RlIGZ3IHJlcXVlc3QgJyVzJzogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTI2MS1cXHRcXHQgICBmaWxlbmFtZSwgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYz0yODM9c3RhdGljIGludCBhdGgxMGtfdG1fZmV0Y2hfZmlybXdhcmUoc3RydWN0IGF0aDEwayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzAzLVxcdHJldCA9IGF0aDEwa19jb3JlX2ZldGNoX2Zpcm13YXJlX2FwaV9uKGFyLCBmd19uYW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozMDQ6XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZhci1cXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTMwNS1cXHRpZiAocmV0ID09IDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MzA2OlxcdFxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfVEVTVE1PREUsIFxcXCJ0ZXN0bW9kZSB1c2luZyBmdyB1dGYgYXBpIDJcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzA3LVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTMwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MzEwOlxcdHJldCA9IGF0aDEwa190bV9mZXRjaF91dGZfZmlybXdhcmVfYXBpXzEoYXIsIFxcdTAwMjZhci1cXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTMxMS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozMTY6XFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSwgXFxcInRlc3Rtb2RlIHVzaW5nIHV0ZiBhcGkgMVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTMxOC1vdXQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjMxOTpcXHR1dGZfbW9kZV9mdyA9IFxcdTAwMjZhci1cXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZnc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTMyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYz0zMzY9c3RhdGljIGludCBhdGgxMGtfdG1fY21kX3V0Zl9zdGFydChzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjM0MTpcXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLCBcXFwidGVzdG1vZGUgY21kIHV0ZiBzdGFydFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTM0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjM1NjpcXHRpZiAoV0FSTl9PTihhci1cXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZS5maXJtd2FyZSAhPSBOVUxMKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zNTctXFx0XFx0LyogdXRmIGltYWdlIGlzIGFscmVhZHkgZG93bmxvYWRlZCwgaXQgc2hvdWxkbid0IGJlICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozNjg6XFx0aWYgKGFyLVxcdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlLmNvZGVzd2FwX2RhdGEgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MzY5OlxcdCAgICBhci1cXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZS5jb2Rlc3dhcF9sZW4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzcwLVxcdFxcdHJldCA9IGF0aDEwa19zd2FwX2NvZGVfc2VnX2luaXQoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjM3MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2YXItXFx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3LmZ3X2ZpbGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zNzItXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTM4MC1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozODE6XFx0YXItXFx1MDAzZXRlc3Rtb2RlLnV0Zl9tb25pdG9yID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzgyLVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozODQ6XFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSwgXFxcInRlc3Rtb2RlIHdtaSB2ZXJzaW9uICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozODU6XFx0XFx0ICAgYXItXFx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3LmZ3X2ZpbGUud21pX29wX3ZlcnNpb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zODYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzg4LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6Mzg5OlxcdFxcdGF0aDEwa19lcnIoYXIsIFxcXCJmYWlsZWQgdG8gcG93ZXIgdXAgaGlmICh0ZXN0bW9kZSk6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zOTAtXFx0XFx0YXItXFx1MDAzZXN0YXRlID0gQVRIMTBLX1NUQVRFX09GRjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjM5NDpcXHRhci1cXHUwMDNldGVzdG1vZGUuZXZlbnRkYXRhID0ga3phbGxvYyhBVEhfRlRNX0VWRU5UX01BWF9CVUZfTEVOR1RILCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6Mzk1OlxcdGlmICghYXItXFx1MDAzZXRlc3Rtb2RlLmV2ZW50ZGF0YSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zOTYtXFx0XFx0cmV0ID0gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MDAtXFx0cmV0ID0gYXRoMTBrX2NvcmVfc3RhcnQoYXIsIEFUSDEwS19GSVJNV0FSRV9NT0RFX1VURixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDAxOlxcdFxcdFxcdFxcdFxcdTAwMjZhci1cXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MDItXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0MDM6XFx0XFx0YXRoMTBrX2VycihhciwgXFxcImZhaWxlZCB0byBzdGFydCBjb3JlICh0ZXN0bW9kZSk6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MDQtXFx0XFx0YXItXFx1MDAzZXN0YXRlID0gQVRIMTBLX1NUQVRFX09GRjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQxMDpcXHRpZiAoc3RybGVuKGFyLVxcdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlLmZ3X3ZlcnNpb24pIFxcdTAwM2UgMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDExOlxcdFxcdHZlciA9IGFyLVxcdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlLmZ3X3ZlcnNpb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQxMi1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDIxLWVycl9yZWxlYXNlX2V2ZW50ZGF0YTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDIyOlxcdGtmcmVlKGFyLVxcdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0MjM6XFx0YXItXFx1MDAzZXRlc3Rtb2RlLmV2ZW50ZGF0YSA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQyNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MjgtZXJyX3JlbGVhc2VfdXRmX21vZGVfZnc6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQyOTpcXHRpZiAoYXItXFx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3LmZ3X2ZpbGUuY29kZXN3YXBfZGF0YSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0MzA6XFx0ICAgIGFyLVxcdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlLmNvZGVzd2FwX2xlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDMxLVxcdFxcdGF0aDEwa19zd2FwX2NvZGVfc2VnX3JlbGVhc2UoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQzMjpcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZhci1cXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDM0OlxcdHJlbGVhc2VfZmlybXdhcmUoYXItXFx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3LmZ3X2ZpbGUuZmlybXdhcmUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0MzU6XFx0YXItXFx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3LmZ3X2ZpbGUuZmlybXdhcmUgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MzYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9NDQzPXN0YXRpYyB2b2lkIF9fYXRoMTBrX3RtX2NtZF91dGZfc3RvcChzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00NTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ1MjpcXHRhci1cXHUwMDNldGVzdG1vZGUudXRmX21vbml0b3IgPSBmYWxzZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDUzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDU2OlxcdGlmIChhci1cXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZS5jb2Rlc3dhcF9kYXRhIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ1NzpcXHQgICAgYXItXFx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3LmZ3X2ZpbGUuY29kZXN3YXBfbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00NTgtXFx0XFx0YXRoMTBrX3N3YXBfY29kZV9zZWdfcmVsZWFzZShhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDU5OlxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNmFyLVxcdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0NjE6XFx0cmVsZWFzZV9maXJtd2FyZShhci1cXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZS5maXJtd2FyZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ2MjpcXHRhci1cXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZS5maXJtd2FyZSA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDY0OlxcdGtmcmVlKGFyLVxcdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0NjU6XFx0YXItXFx1MDAzZXRlc3Rtb2RlLmV2ZW50ZGF0YSA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYz00NzA9c3RhdGljIGludCBhdGgxMGtfdG1fY21kX3V0Zl9zdG9wKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDc0OlxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfVEVTVE1PREUsIFxcXCJ0ZXN0bW9kZSBjbWQgdXRmIHN0b3BcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00NzUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9NDk0PXN0YXRpYyBpbnQgYXRoMTBrX3RtX2NtZF93bWkoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNTIyLVxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfVEVTVE1PREUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjUyMzpcXHRcXHQgICBcXFwidGVzdG1vZGUgY21kIHdtaSBjbWRfaWQgJWQgYnVmICVwIGJ1Zl9sZW4gJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTUyNC1cXHRcXHQgICBjbWRfaWQsIGJ1ZiwgYnVmX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNTM3LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NTM4OlxcdFxcdGF0aDEwa193YXJuKGFyLCBcXFwiZmFpbGVkIHRvIHRyYW5zbWl0IHdtaSBjb21tYW5kICh0ZXN0bW9kZSk6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy01MzktXFx0XFx0XFx0ICAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9NTUwPXN0YXRpYyBpbnQgYXRoMTBrX3RtX2NtZF90bHYoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNTc3LVxcdG51bV9zZWdtZW50cyA9IHRvdGFsX2J5dGVzIC8gTUFYX1dNSV9VVEZfTEVOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo1Nzg6XFx0YXItXFx1MDAzZXRlc3Rtb2RlLmV4cGVjdGVkX3NlcSA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTU3OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02MDItXFx0XFx0ZnRtX2NtZC1cXHUwMDNlc2VnX2hkci5sZW4gPSBfX2NwdV90b19sZTMyKHRvdGFsX2J5dGVzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NjAzOlxcdFxcdGZ0bV9jbWQtXFx1MDAzZXNlZ19oZHIubXNncmVmID0gX19jcHVfdG9fbGUzMihhci1cXHUwMDNldGVzdG1vZGUuZnRtX21zZ3JlZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTYwNC1cXHRcXHRzZWdpbmZvID0gRklFTERfUFJFUChBVEgxMEtfRlRNX1NFR0hEUl9UT1RBTF9TRUdNRU5UUywgbnVtX3NlZ21lbnRzKSB8XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo2MjE6XFx0YXItXFx1MDAzZXRlc3Rtb2RlLmZ0bV9tc2dyZWYrKztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjIyLVxcdHJldCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9NjI5PWludCBhdGgxMGtfdG1fY21kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTY0My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NjQ0OlxcdGFyLVxcdTAwM2V0ZXN0bW9kZS5leHBlY3RlZF9zZXEgPSBBVEgxMEtfRlRNX1NFR19OT05FO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02NDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo2NjM6dm9pZCBhdGgxMGtfdGVzdG1vZGVfZGVzdHJveShzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaC05LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaDoxMDp2b2lkIGF0aDEwa190ZXN0bW9kZV9kZXN0cm95KHN0cnVjdCBhdGgxMGsgKmFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmg9MTM9aW50IGF0aDEwa190bV9jbWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oOjE4OnN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMGtfdGVzdG1vZGVfZGVzdHJveShzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmgtNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaDo3Oi8qIFxcXCJBUElcXFwiIGxldmVsIG9mIHRoZSBhdGgxMGsgdGVzdG1vZGUgaW50ZXJmYWNlLiBCdW1wIGl0IGFmdGVyIGV2ZXJ5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmgtOC0gKiBpbmNvbXBhdGlibGUgaW50ZXJmYWNlIGNoYW5nZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oPTIwPWVudW0gYXRoMTBrX3RtX2F0dHIge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmgtMzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmg6MzQ6LyogQWxsIGF0aDEwayB0ZXN0bW9kZSBpbnRlcmZhY2UgY29tbWFuZHMgc3BlY2lmaWVkIGluXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmgtMzUtICogQVRIMTBLX1RNX0FUVFJfQ01EXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaD0zNz1lbnVtIGF0aDEwa190bV9jbWQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oOjM4OlxcdC8qIFJldHVybnMgdGhlIHN1cHBvcnRlZCBhdGgxMGsgdGVzdG1vZGUgaW50ZXJmYWNlIHZlcnNpb24gaW5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaC0zOS1cXHQgKiBBVEgxMEtfVE1fQVRUUl9WRVJTSU9OLiBBbHdheXMgZ3VhcmFudGVlZCB0byB3b3JrLiBVc2VyIHNwYWNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmgtNDAtXFx0ICogdXNlcyB0aGlzIHRvIHZlcmlmeSBpdCdzIHVzaW5nIHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgdGhlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmg6NDE6XFx0ICogdGVzdG1vZGUgaW50ZXJmYWNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmgtNDItXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaC02OS1cXHQgKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oOjcwOlxcdCAqIFRoaXMgbGVnYWN5IHRlc3Rtb2RlIGNvbW1hbmQgc2hhcmVzIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBnZXQtdmVyc2lvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oLTcxLVxcdCAqIGNvbW1hbmQuIFRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlbSwgd2UgY2hlY2sgd2hldGhlciB0aGUgZGF0YSBhdHRyaWJ1dGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLXRsdi5jLTE1LSNpbmNsdWRlIFxcXCJwMnAuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS10bHYuYzoxNjojaW5jbHVkZSBcXFwidGVzdG1vZGUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS10bHYuYy0xNy0jaW5jbHVkZSBcXFwidHhyeC5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktdGx2LmM9NjM5PXN0YXRpYyB2b2lkIGF0aDEwa193bWlfdGx2X29wX3J4KHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktdGx2LmMtNjU2LVxcdCAqIGtub3cgdGhlIFVURiBmaXJtd2FyZSBoYXMgYm9vdGVkLCBvdGhlcnMgd2UgYXJlIGp1c3QgYnlwYXNzIFdNSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLXRsdi5jOjY1NzpcXHQgKiBldmVudHMgdG8gdGVzdG1vZGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktdGx2LmMtNjU4LVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktdGx2LmMtNjYwLVxcdFxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfV01JLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLXRsdi5jOjY2MTpcXHRcXHRcXHQgICBcXFwid21pIHRsdiB0ZXN0bW9kZSBjb25zdW1lZCAweCV4XFxcXG5cXFwiLCBpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktdGx2LmMtNjYyLVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy0xNy0jaW5jbHVkZSBcXFwibWFjLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYzoxODojaW5jbHVkZSBcXFwidGVzdG1vZGUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTE5LSNpbmNsdWRlIFxcXCJ3bWktb3BzLmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jPTYwMDM9c3RhdGljIHZvaWQgYXRoMTBrX3dtaV8xMF8xX29wX3J4KHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02MDIwLVxcdCAqIGtub3cgdGhlIFVURiBmaXJtd2FyZSBoYXMgYm9vdGVkLCBvdGhlcnMgd2UgYXJlIGp1c3QgYnlwYXNzIFdNSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NjAyMTpcXHQgKiBldmVudHMgdG8gdGVzdG1vZGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02MDIyLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02MDI0LVxcdFxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfV01JLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NjAyNTpcXHRcXHRcXHQgICBcXFwid21pIHRlc3Rtb2RlIGNvbnN1bWVkIDB4JXhcXFxcblxcXCIsIGlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTYwMjYtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jPTYxMzQ9c3RhdGljIHZvaWQgYXRoMTBrX3dtaV8xMF8yX29wX3J4KHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02MTUxLVxcdCAqIGtub3cgdGhlIFVURiBmaXJtd2FyZSBoYXMgYm9vdGVkLCBvdGhlcnMgd2UgYXJlIGp1c3QgYnlwYXNzIFdNSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NjE1MjpcXHQgKiBldmVudHMgdG8gdGVzdG1vZGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02MTUzLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02MTU1LVxcdFxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfV01JLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NjE1NjpcXHRcXHRcXHQgICBcXFwid21pIHRlc3Rtb2RlIGNvbnN1bWVkIDB4JXhcXFxcblxcXCIsIGlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTYxNTctXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jPTYyODM9c3RhdGljIHZvaWQgYXRoMTBrX3dtaV8xMF80X29wX3J4KHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02MzAwLVxcdCAqIGtub3cgdGhlIFVURiBmaXJtd2FyZSBoYXMgYm9vdGVkLCBvdGhlcnMgd2UgYXJlIGp1c3QgYnlwYXNzIFdNSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NjMwMTpcXHQgKiBldmVudHMgdG8gdGVzdG1vZGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02MzAyLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02MzA0LVxcdFxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfV01JLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NjMwNTpcXHRcXHRcXHQgICBcXFwid21pIHRlc3Rtb2RlIGNvbnN1bWVkIDB4JXhcXFxcblxcXCIsIGlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTYzMDYtXFx0XFx0Z290byBvdXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjU5OjU2LjY5NDYxOTk3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTkyNjUzMzQzMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYGF0aDEwa2AgRHJpdmVyIGluIFRlc3Rtb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBmb3IgZnV6emluZyB0aGUgYGF0aDEwa2AgZHJpdmVyLiBUaGUgY29yZSBvZiB0aGlzIGlzIHRoZSBgQ09ORklHX05MODAyMTFfVEVTVE1PREVgIGNvbmZpZyBvcHRpb24uIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB0ZXN0IG1vZGUgaXMgZXhwb3NlZCB0byB1c2Vyc3BhY2Ug4oCTIGFuZCBpdCBsb29rcyBsaWtlIGl0IGlzLCB2aWEgYG5sODAyMTFgLiBUaGF0IG9wZW5zIHVwIHNvbWUgaW50ZXJlc3RpbmcgcG9zc2liaWxpdGllcy5cblxuSSBzZWUgdGhhdCBgYXRoMTBrYCAqY2FuKiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbi4gVGhlIGludGVyZXN0aW5nIHRoaW5nIGhlcmUgaXMgYGF0aDEwa190bV9ldmVudF93bWlgLiBUaGF0IGZ1bmN0aW9uIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBkcml2ZXIgcmVjZWl2ZXMgYSBXTUkgZXZlbnQgZnJvbSB0aGUgZmlybXdhcmUuIEluIGEgZnV6emluZyBzY2VuYXJpbywgdGhpcyBtZWFucyB0aGF0IHRoZSBmdXp6ZXIgY2FuIGVtdWxhdGUgYSBVU0IgZGV2aWNlIGFuZCBpbmplY3QgdGhlc2UgV01JIGV2ZW50cyBkaXJlY3RseSBpbnRvIHRoZSBkcml2ZXIuXG5cblRoZSBwYXRjaCBzZWVtcyB0byBhZGQgYSBjaGVjaywgYGF0aDEwa190bV9pc191dGZfZXZlbnQoY21kX2lkKWAsIHdoaWNoIGRyb3BzIG5vbi1VVEYgZXZlbnRzIHNwZWNpZmljYWxseSB3aGVuIGluIHRlc3Rtb2RlLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UsIGFsdGVyaW5nIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZmlybXdhcmUgZXZlbnRzLiBUaGF0J3MgYSB0YXJnZXQhIEJlY2F1c2UgdGhlIGZ1enplciBjYW4gZW11bGF0ZSBVU0IgZGV2aWNlcywgaXQgY2FuIGRlZmluaXRlbHkgdHJpZ2dlciB0aGlzIGNvZGUgcGF0aCBieSBzZW5kaW5nIGEgV01JIGV2ZW50IHdoaWxlIGluIHRlc3Rtb2RlLlxuXG5Ob3csIHRoZSBuYXR1cmFsIHF1ZXN0aW9uIGlzLCBoYXMgdGhpcyBhbHJlYWR5IGJlZW4gZnV6emVkPyBJIGtub3cgU3l6a2FsbGVyIGhhcyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMsIHNvIGxldCdzIHNlZSBpZiB0aGVyZSdzIGFueSBleGlzdGluZyBjb3ZlcmFnZS4gVGhlIGNvZGUgbG9jYXRpb24gaXMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuY2AuIEdvb2QsIGxldCdzIGV4cGxvcmUuXG5cbmBhdGgxMGtfdG1fZXZlbnRfd21pYCBpcyB0aGUgbWFpbiB0YXJnZXQuIEl0J3MgY2FsbGVkIGJ5IGBhdGgxMGtfd21pXzEwXzFfb3BfcnhgLCBgYXRoMTBrX3dtaV8xMF8yX29wX3J4YCwgYGF0aDEwa193bWlfMTBfNF9vcF9yeGAsIGFuZCBgYXRoMTBrX3dtaV90bHZfb3BfcnhgLiBUaGVzZSBhcmUgYWxsIFJYIGhhbmRsZXJzIGZvciBXTUkgZXZlbnRzIGNvbWluZyBmcm9tIHRoZSBmaXJtd2FyZS4gUHJlY2lzZWx5IHdoYXQgdGhlIGZ1enplciBjYW4gY29udHJvbCBieSBlbXVsYXRpbmcgdGhlIFVTQiBkZXZpY2UhXG5cblNvLCB0aGUgY29uY2x1c2lvbiBpcyB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgZnV6emFibGUgYW5kIG9mZmVycyBhIG5ldyBhdHRhY2sgc3VyZmFjZS4gVGltZSB0byBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMgZm9yIGZ1enppbmcgZm9jdXMuIENsZWFybHksIGBhdGgxMGtfdG1fZXZlbnRfd21pYCBpcyB0aGUgbWFpbiBvbmUuIFRoZSBzdGF0aWMgaGVscGVyIGBhdGgxMGtfdG1faXNfdXRmX2V2ZW50YCBpc24ndCBhcyBjcml0aWNhbCwgc28gSSB3b24ndCBmb2N1cyBvbiBpdC4gTGV0J3MgZGlnIGludG8gdGhlIHNpZ25hdHVyZSBvZiBgYXRoMTBrX3RtX2V2ZW50X3dtaWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MzczLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjAwOjE1Ljk1OTk1Nzk4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTU5MzM1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJib29sIGF0aDEwa190bV9ldmVudF93bWlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTE1OT1zdGF0aWMgYm9vbCBhdGgxMGtfdG1faXNfdXRmX2V2ZW50KHUzMiBjbWRfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTY5LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxNzA6Ym9vbCBhdGgxMGtfdG1fZXZlbnRfd21pKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oPTEwPXZvaWQgYXRoMTBrX3Rlc3Rtb2RlX2Rlc3Ryb3koc3RydWN0IGF0aDEwayAqYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaC0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmg6MTI6Ym9vbCBhdGgxMGtfdG1fZXZlbnRfd21pKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMTMtaW50IGF0aDEwa190bV9jbWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmg9MTg9c3RhdGljIGlubGluZSB2b2lkIGF0aDEwa190ZXN0bW9kZV9kZXN0cm95KHN0cnVjdCBhdGgxMGsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oLTIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaDoyMjpzdGF0aWMgaW5saW5lIGJvb2wgYXRoMTBrX3RtX2V2ZW50X3dtaShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMjMtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjAwOjE2LjA3MTU3MzgyM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyNDc2MjcxNzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGF0aDEwa190bV9ldmVudF93bWlgIEZ1bmN0aW9uIGZvciBSZXNlYXJjaCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgdGhlIGBhdGgxMGtfdG1fZXZlbnRfd21pYCBmdW5jdGlvbiBpcyBkZWZpbmVkIGFuZCAqbm90KiBzdGF0aWMsIGFuZCBpdCdzIGV2ZW4gZXhwb3J0ZWQgb3IgYXQgbGVhc3QsIG5vdCBzdGF0aWMgaW4gYHRlc3Rtb2RlLmNgLiBJbnRlcmVzdGluZy4gQW5kLCBoYW5nIG9uLi4uaXQncyAqYWxzbyogY2FsbGVkIGZyb20gYHdtaS5jYCBhbmQgYHdtaS10bHYuY2AuIFRoaXMgbWFrZXMgaXQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiAtIGEgZ29vZCwgY2VudHJhbCBmb2N1cyBwb2ludCBmb3IgZGlnZ2luZyBpbnRvIHRoZSBBdGhlcm9zIGRyaXZlcidzIHRlc3QgbW9kZSBmdW5jdGlvbmFsaXR5LlxuXG5SaWdodCwgc28gdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgZW52aXJvbm1lbnQgc2V0IHVwIHJpZ2h0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLiBJJ20gYXNzdW1pbmcsIG9idmlvdXNseSwgdGhhdCBgQ09ORklHX0FUSDEwS2AgaXMgbmVlZGVkLCBidXQgSSBzaG91bGQgYWxzbyBlbnN1cmUgYENPTkZJR19BVEgxMEtfVVNCYCBpcyBlbmFibGVkLCBqdXN0IGluIGNhc2UgSSB3YW50IHRvIGV4cGxvcmUgVVNCIGZ1enppbmcuIE9mIGNvdXJzZSwgYENPTkZJR19OTDgwMjExX1RFU1RNT0RFYCBpcyBjcml0aWNhbCBiZWNhdXNlIGl0IGRpcmVjdGx5IGVuYWJsZXMgdGhlIGB0ZXN0bW9kZS5jYCBmaWxlLlxuXG5Ob3csIGxldCBtZSBqdXN0IGNvbmZpcm0gdGhvc2UgY29uZmlnIG9wdGlvbnMgYnkgcXVpY2tseSByZWZlcmVuY2luZyB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSBJJ20gd29ya2luZyB3aXRoIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4OTMxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjAwOjM4LjU0Nzg0ODMwN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTczNTY2NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFUSDEwS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6Mjpjb25maWcgQVRIMTBLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgODAyLjExYWMgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0xNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6MTU6Y29uZmlnIEFUSDEwS19DRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0xNi1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzoxODpjb25maWcgQVRIMTBLX1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGgxMGsgUENJIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjI0OmNvbmZpZyBBVEgxMEtfQUhCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoMTBrIEFIQiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzozMDpjb25maWcgQVRIMTBLX1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMzEtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoMTBrIFNESU8gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6MzY6Y29uZmlnIEFUSDEwS19VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMzctXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoMTBrIFVTQiBzdXBwb3J0IChFWFBFUklNRU5UQUwpXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo0Mzpjb25maWcgQVRIMTBLX1NOT0NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNDQtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIGF0aDEwayBTTk9DIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjU2OmNvbmZpZyBBVEgxMEtfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNTctXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGgxMGsgZGVidWdnaW5nXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo2NDpjb25maWcgQVRIMTBLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNjUtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGgxMGsgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo3Mjpjb25maWcgQVRIMTBLX0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNzMtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo3ODpjb25maWcgQVRIMTBLX1NQRUNUUkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTc5LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoMTBrIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy04NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6ODY6Y29uZmlnIEFUSDEwS19UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTg3LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoMTBrIHRyYWNpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy05Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6OTM6Y29uZmlnIEFUSDEwS19ERlNfQ0VSVElGSUVEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTk0LVxcdGJvb2wgXFxcIkF0aGVyb3MgREZTIHN1cHBvcnQgZm9yIGNlcnRpZmllZCBwbGF0Zm9ybXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjAwOjM4LjYwNTIxNjY3NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzAwOTU5MjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDaGVja2luZyBgQ09ORklHX05MODAyMTFfVEVTVE1PREVgIC0gTXkgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuUmlnaHQsIGxldCdzIGRpdmUgc3RyYWlnaHQgaW4uIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gdmVyaWZ5IHRoZSBzdGF0dXMgb2YgYENPTkZJR19OTDgwMjExX1RFU1RNT0RFYC4gSXQncyBhIGtleSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24sIGFuZCBpdHMgcHJlc2VuY2Ugb3IgYWJzZW5jZSBmdW5kYW1lbnRhbGx5IHNoYXBlcyBob3cgSSdtIGdvaW5nIHRvIGFwcHJvYWNoIHRoaXMgaW52ZXN0aWdhdGlvbiBvciBkZWJ1Z2dpbmcgc2Vzc2lvbi4gSSBpbnN0YW50bHkgdGhpbmsgb2YgaXRzIGltcGxpY2F0aW9ucyDigJMgZG9lcyBpdCB1bmxvY2sgc3BlY2lmaWMsIHBvdGVudGlhbGx5IHJpc2t5LCB0ZXN0IGludGVyZmFjZXMgaW4gbmw4MDIxMT8gRG9lcyBpdCBpbXBhY3QgdGhlIHdheSBjZXJ0YWluIHdpcmVsZXNzIGRyaXZlcnMgYmVoYXZlPyBBbmQgY3JpdGljYWxseSwgaXMgdGhpcyBhIGRldmVsb3BtZW50IHN5c3RlbSBvciBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQ/IFRoYXQgaW1tZWRpYXRlbHkgZnJhbWVzIHRoZSBsZXZlbCBvZiBjYXV0aW9uIEknbSBnb2luZyB0byBhcHBseS4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSBwb3RlbnRpYWwgZm9yIHVuaW50ZW5kZWQgc2lkZSBlZmZlY3RzIGlmIHRoZSBzZXR0aW5nIGlzIGVuYWJsZWQsIGFuZCB0aGUgY29uc3RyYWludHMgaWYgaXQncyBkaXNhYmxlZCwgYmVjYXVzZSBib3RoIGhhdmUgdmVyeSBjbGVhciBpbXBhY3RzIG9uIGRpYWdub3N0aWMgb3B0aW9ucy4gSXQncyB0aGUgbHluY2hwaW4sIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8ga25vdyBiZWZvcmUgbW92aW5nIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNDk1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MDA6NDUuOTA2MTgwODQ3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTczNDM4MjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZz0zNj1pZiBDRkc4MDIxMVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTM3LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjM4OmNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXFxubmV0L3dpcmVsZXNzL0tjb25maWctMzktXFx0Ym9vbCBcXFwibmw4MDIxMSB0ZXN0bW9kZSBjb21tYW5kXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODowMDo0OC40Nzk2NDg1MjlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQxMTAwNDU5MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBXaXJlbGVzcyBEcml2ZXIgQ29uZmlndXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uczogYEFUSDEwS2AsIGBBVEgxMEtfVVNCYCwgYW5kIGBOTDgwMjExX1RFU1RNT0RFYC4gSW1tZWRpYXRlbHksIEknbSBub3RpbmcgdGhhdCBgQVRIMTBLX1VTQmAgaXMgcHJlc2VudCwgYnV0IEkgbmVlZCB0byBiZSBzdXJlLiBJJ20gcmVjYWxsaW5nIHRoYXQgYEFUSDEwS19VU0JgIGxpa2VseSBoYXMgYSBkZXBlbmRlbmN5IG9uIGBVU0JgIGl0c2VsZiwgc28gSSBzaG91bGQgY29uZmlybSB0aGF0IHJlbGF0aW9uc2hpcC4gTGV0J3MgZGlnIGludG8gdGhlIGRlcGVuZGVuY2llcyBmb3IgYEFUSDEwS19VU0JgIHRvIGVuc3VyZSB0aGlzIGlzIHVuZGVyc3Rvb2QgY29tcGxldGVseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA4NDYsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODowMTowMi41ODk2OTY3MzVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNDI0MDYzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRIMTBLX1VTQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc9MzA9Y29uZmlnIEFUSDEwS19TRElPXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjM2OmNvbmZpZyBBVEgxMEtfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTM3LVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDEwayBVU0Igc3VwcG9ydCAoRVhQRVJJTUVOVEFMKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MDE6MDIuODkzOTQxODE2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NDIzNzcxOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIEF0aGVyb3MgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgYXRoMTBrIGRyaXZlciBpcyBjb25maWd1cmVkLiBMZXQncyBzdGFydCB3aXRoIHRoZSBiYXNpY3MsIHNvIEknbSBoZWFkaW5nIGRpcmVjdGx5IHRvIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIGRyaXZlcidzIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgbGluZSAzNi4gVGhhdCdzIGEgcmVhc29uYWJsZSBwbGFjZSB0byBzdGFydCBnZXR0aW5nIGEgZmVlbCBmb3IgdGhlIGZ1bmRhbWVudGFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyIGFuZCBob3cgdGhleSdyZSBzdHJ1Y3R1cmVkLiBUaGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgdmFsdWVzLCBhbmQgdGhlIG92ZXJhbGwgZGVzaWduIHBoaWxvc29waHkgYmVoaW5kIHRoZSBtb2R1bGUgY29uZmlndXJhdGlvbi4gS25vd2luZyB0aGUgS2NvbmZpZyBpcyBrZXkgdG8gZGVidWdnaW5nIGJ1aWxkIGlzc3VlcywgdW5kZXJzdGFuZGluZyBtb2R1bGUgYmVoYXZpb3IgYW5kIGV2ZW4gYWRkaW5nIGZlYXR1cmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTIwMSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjAxOjA3LjYzNjMyMjA1NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDc3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDMwOlxcdGNvbmZpZyBBVEgxMEtfU0RJT1xcbiAgMzE6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoMTBrIFNESU8gc3VwcG9ydFxcXCJcXG4gIDMyOlxcdFxcdGRlcGVuZHMgb24gQVRIMTBLIFxcdTAwMjZcXHUwMDI2IE1NQ1xcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIFNESU8vTU1DIGJ1cy5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0Y29uZmlnIEFUSDEwS19VU0JcXG4gIDM3OlxcdFxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDEwayBVU0Igc3VwcG9ydCAoRVhQRVJJTUVOVEFMKVxcXCJcXG4gIDM4OlxcdFxcdGRlcGVuZHMgb24gQVRIMTBLIFxcdTAwMjZcXHUwMDI2IFVTQlxcbiAgMzk6XFx0XFx0aGVscFxcbiAgNDA6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBVU0IgYnVzLiBDdXJyZW50bHlcXG4gIDQxOlxcdFxcdCAgd29yayBpbiBwcm9ncmVzcyBhbmQgd2lsbCBub3QgZnVsbHkgd29yay5cXG4gIDQyOlxcdFxcbiAgNDM6XFx0Y29uZmlnIEFUSDEwS19TTk9DXFxuICA0NDpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gYXRoMTBrIFNOT0Mgc3VwcG9ydFxcXCJcXG4gIDQ1OlxcdFxcdGRlcGVuZHMgb24gQVRIMTBLXFxuICA0NjpcXHRcXHRkZXBlbmRzIG9uIEFSQ0hfUUNPTSB8fCBDT01QSUxFX1RFU1RcXG4gIDQ3OlxcdFxcdGRlcGVuZHMgb24gUUNPTV9TTUVNXFxuICA0ODpcXHRcXHRkZXBlbmRzIG9uIFFDT01fUlBST0NfQ09NTU9OIHx8IFFDT01fUlBST0NfQ09NTU9OPW5cXG4gIDQ5OlxcdFxcdHNlbGVjdCBQT1dFUl9TRVFVRU5DSU5HXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjAxOjA3LjYzNjQzMjA3NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTQzMTA0MDg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBBVEgxMEtfVVNCYCB0aGluZywgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBidWlsdCBvbiBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZGVwZW5kZW5jeSBjaGFpbi4gRmlyc3QsIGBBVEgxMEtfVVNCYCBuZWVkcyBib3RoIGBBVEgxMEtgIGFuZCBgVVNCYC4gUHJldHR5IGxvZ2ljYWwsIHJpZ2h0PyBJdCdzIGEgVVNCIGltcGxlbWVudGF0aW9uIG9mIHNvbWV0aGluZyBidWlsdCBvbiBgQVRIMTBLYC4gTm93LCB0aGUgaW50ZXJlc3RpbmcgYml0LiBgQVRIMTBLYCBpdHNlbGYsIHRoZSBjb3JlIG9mIHRoaXMsIHJlbGllcyBvbiBgTUFDODAyMTFgIGFuZCBgSEFTX0lPTUVNYC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyBgTUFDODAyMTFgIGlzIHRoZSA4MDIuMTEgc3RhY2sgaXTigJlzIGJ1aWx0IG9uLCBhbmQgYEhBU19JT01FTWAgaXMgbGlrZWx5IGNydWNpYWwgZm9yIHRoZSBoYXJkd2FyZSBpbnRlcmFjdGlvbi5cblxuVGltZSB0byBkcmlsbCBkb3duIGFuZCBjaGVjayB0aGUgYEFUSDEwS2AgZGVwZW5kZW5jaWVzIGRpcmVjdGx5LiBHb3R0YSBtYWtlIHN1cmUgdGhvc2UgZm91bmRhdGlvbnMgYXJlIHNvbGlkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTcyOCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MDE6MTIuNTc5NTM5ODUzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2OTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xcbiAgIDI6XFx0Y29uZmlnIEFUSDEwS1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgODAyLjExYWMgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTEgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgIDU6XFx0XFx0c2VsZWN0IEFUSF9DT01NT05cXG4gICA2OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgIDc6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAgODpcXHRcXHRzZWxlY3QgQVRIMTBLX0NFXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cXG4gIDExOlxcdFxcdCAgQXRoZXJvcyBJRUVFIDgwMi4xMWFjIGZhbWlseSBvZiBjaGlwc2V0cy5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgYXRoMTBrLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRjb25maWcgQVRIMTBLX0NFXFxuICAxNjpcXHRcXHRib29sXFxuICAxNzpcXHRcXG4gIDE4OlxcdGNvbmZpZyBBVEgxMEtfUENJXFxuICAxOTpcXHRcXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGgxMGsgUENJIHN1cHBvcnRcXFwiXFxuICAyMDpcXHRcXHRkZXBlbmRzIG9uIEFUSDEwSyBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MDE6MTIuNTc5NjA5NjYzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNDIwNTYyMTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBBVEgxMEsgRHJpdmVyIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoZSBgQVRIMTBLYCBkcml2ZXIgaXMgcmVsaWFudCBvbiBgTUFDODAyMTFgIGFuZCBgSEFTX0RNQWAsIHNvIHRob3NlIGFyZSBwcmVyZXF1aXNpdGVzLiBUbyBlbmFibGUgdGhlIHJlbGV2YW50IGZ1bmN0aW9uYWxpdHksIEknbGwgbmVlZCB0byBjb25maWd1cmUgYEFUSDEwS2AsIGBBVEgxMEtfVVNCYCwgYW5kIGBOTDgwMjExX1RFU1RNT0RFYC5cblxuSGFuZyBvbiwgYEFUSDEwS19VU0JgIGlzIG1hcmtlZCBhcyBleHBlcmltZW50YWwsIGJ1dCB0aGUga2VybmVsIGluY2x1ZGVzIGl0LCBhbmQsIGNydWNpYWxseSwgc3l6a2FsbGVyIGNhbiB0YXJnZXQgaXQgZm9yIGZ1enppbmcuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIFRoZSBwYXRjaCBJJ20gbG9va2luZyBhdCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgYGF0aDEwa190bV9ldmVudF93bWlgLiBTbyB0aGUgY29yZSBvZiBteSBhbmFseXNpcyBjb21lcyBkb3duIHRvIGhvdyByZWFjaGFibGUgdGhlIGZ1bmN0aW9uIGlzLlxuXG5UaGUga2V5IGlzIGRldGVybWluaW5nIHRoZSBjYWxsIGZsb3cuIEl0IGxvb2tzIGxpa2Ugd2hlbiB0aGUgZnV6emVyIHN1Y2Nlc3NmdWxseSBlbXVsYXRlcyB0aGUgVVNCIGRldmljZSBhbmQgdGhlbiBzZW5kcyBXTUkgZXZlbnRzLCB0aGUgZnVuY3Rpb24gYGF0aDEwa193bWlfMTBfMV9vcF9yeGAgKG9yIGEgc2ltaWxhciB2YXJpYW50KSBnZXRzIGludm9rZWQuIEFuZCB0aGF0LCBpbiB0dXJuLCBjYWxscyBgYXRoMTBrX3RtX2V2ZW50X3dtaWAuIFNvIHdlIGhhdmUgYSBwYXRoLlxuXG5CdXQsIGEgY2xvc2VyIGxvb2sgYXQgYGF0aDEwa190bV9ldmVudF93bWlgIHJldmVhbHMgaXQncyBvbmx5IGV4ZWN1dGVkIHVuZGVyIHNwZWNpZmljIGNvbmRpdGlvbnM6IGVpdGhlciBpZiBgYXItXHUwMDNldGVzdG1vZGUudXRmX21vbml0b3JgIGlzIHRydWUgb3IgaWYgaXQgaXMgYSB0ZXN0bW9kZSBldmVudC4gVGhpcyBoaWdobGlnaHRzIHNvbWUgaW1wb3J0YW50IHByZWNvbmRpdGlvbnMgZm9yIHRyaWdnZXJpbmcgdGhpcyBjb2RlcGF0aC4gU28gbm93IEkgbmVlZCB0byBkaXZlIGludG8gYGF0aDEwa193bWlfMTBfMV9vcF9yeGAgdG8gdW5kZXJzdGFuZCBwcmVjaXNlbHkgdW5kZXIgd2hhdCBjb25kaXRpb25zIGl0IGNhbGxzIGBhdGgxMGtfdG1fZXZlbnRfd21pYC4gVGhpcyB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBwb3RlbnRpYWwgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMjk1LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MDE6MjQuMDAwMTc1NTg0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2MTM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwMDMsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjYwMDM6XFx0c3RhdGljIHZvaWQgYXRoMTBrX3dtaV8xMF8xX29wX3J4KHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbjYwMDQ6XFx0e1xcbjYwMDU6XFx0XFx0c3RydWN0IHdtaV9jbWRfaGRyICpjbWRfaGRyO1xcbjYwMDY6XFx0XFx0ZW51bSB3bWlfMTB4X2V2ZW50X2lkIGlkO1xcbjYwMDc6XFx0XFx0Ym9vbCBjb25zdW1lZDtcXG42MDA4OlxcdFxcbjYwMDk6XFx0XFx0Y21kX2hkciA9IChzdHJ1Y3Qgd21pX2NtZF9oZHIgKilza2ItXFx1MDAzZWRhdGE7XFxuNjAxMDpcXHRcXHRpZCA9IE1TKF9fbGUzMl90b19jcHUoY21kX2hkci1cXHUwMDNlY21kX2lkKSwgV01JX0NNRF9IRFJfQ01EX0lEKTtcXG42MDExOlxcdFxcbjYwMTI6XFx0XFx0aWYgKHNrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCB3bWlfY21kX2hkcikpID09IE5VTEwpXFxuNjAxMzpcXHRcXHRcXHRnb3RvIG91dDtcXG42MDE0OlxcdFxcbjYwMTU6XFx0XFx0dHJhY2VfYXRoMTBrX3dtaV9ldmVudChhciwgaWQsIHNrYi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VsZW4pO1xcbjYwMTY6XFx0XFxuNjAxNzpcXHRcXHRjb25zdW1lZCA9IGF0aDEwa190bV9ldmVudF93bWkoYXIsIGlkLCBza2IpO1xcbjYwMTg6XFx0XFxuNjAxOTpcXHRcXHQvKiBSZWFkeSBldmVudCBtdXN0IGJlIGhhbmRsZWQgbm9ybWFsbHkgYWxzbyBpbiBVVEYgbW9kZSBzbyB0aGF0IHdlXFxuNjAyMDpcXHRcXHQgKiBrbm93IHRoZSBVVEYgZmlybXdhcmUgaGFzIGJvb3RlZCwgb3RoZXJzIHdlIGFyZSBqdXN0IGJ5cGFzcyBXTUlcXG42MDIxOlxcdFxcdCAqIGV2ZW50cyB0byB0ZXN0bW9kZS5cXG42MDIyOlxcdFxcdCAqL1xcbjYwMjM6XFx0XFx0aWYgKGNvbnN1bWVkIFxcdTAwMjZcXHUwMDI2IGlkICE9IFdNSV8xMFhfUkVBRFlfRVZFTlRJRCkge1xcbjYwMjQ6XFx0XFx0XFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19XTUksXFxuNjAyNTpcXHRcXHRcXHRcXHQgICBcXFwid21pIHRlc3Rtb2RlIGNvbnN1bWVkIDB4JXhcXFxcblxcXCIsIGlkKTtcXG42MDI2OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjYwMjc6XFx0XFx0fVxcbjYwMjg6XFx0XFxuNjAyOTpcXHRcXHRzd2l0Y2ggKGlkKSB7XFxuNjAzMDpcXHRcXHRjYXNlIFdNSV8xMFhfTUdNVF9SWF9FVkVOVElEOlxcbjYwMzE6XFx0XFx0XFx0YXRoMTBrX3dtaV9ldmVudF9tZ210X3J4KGFyLCBza2IpO1xcbjYwMzI6XFx0XFx0XFx0LyogbWdtdF9yeCgpIG93bnMgdGhlIHNrYiBub3chICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjAxOjI0LjAwMTE1OTYxNFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDc5Njg4MzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbHJlYWR5IGRlZXAgaW4gdGhlIHdlZWRzIG9mIHRoaXMgYXRoMTBrIGRyaXZlcjpcblxuKipBbmFseXppbmcgYXRoMTBrX3RtX2V2ZW50X3dtaSoqXG5cblJpZ2h0LCBzbyBgYXRoMTBrX3RtX2V2ZW50X3dtaWAuIFRoYXQncyB0aGUgZnVuY3Rpb24gY2FsbGVkIGZvciAqZXZlcnkgc2luZ2xlKiBXTUkgKFdpcmVsZXNzIE1hbmFnZW1lbnQgSW50ZXJmYWNlKSBldmVudC4gVGhhdCdzIGEga2V5IG9ic2VydmF0aW9uIOKAkyB1bmRlcnN0YW5kaW5nIHRoYXQgaXQncyB0aGUgY2VudHJhbCBwb2ludCBmb3IgV01JIGV2ZW50IGhhbmRsaW5nIGdpdmVzIG1lIGFuIGltcG9ydGFudCBwb2ludCBvZiByZWZlcmVuY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgKmluc2lkZSogdGhhdCBmdW5jdGlvbiBiZWNhdXNlIGl04oCZcyBoYW5kbGluZyBldmVyeSBldmVudCwgc28gaXQncyBjcml0aWNhbCB0byBwZXJmb3JtYW5jZSBhbmQgZGVidWdnYWJpbGl0eS4gSSBuZWVkIHRvIG5vdyBmb2N1cyBvbiB0aGUgaW50ZXJuYWwgbG9naWMgdG8gZ2V0IHRoZSBwaWN0dXJlIG9mIHdoYXQncyBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNTQ3LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODowMTozMi4wODA4NTA5OTlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA2MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE3MDpcXHRib29sIGF0aDEwa190bV9ldmVudF93bWkoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBjbWRfaWQsIHN0cnVjdCBza19idWZmICpza2IpXFxuIDE3MTpcXHR7XFxuIDE3MjpcXHRcXHRib29sIGNvbnN1bWVkO1xcbiAxNzM6XFx0XFxuIDE3NDpcXHRcXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLFxcbiAxNzU6XFx0XFx0XFx0ICAgXFxcInRlc3Rtb2RlIGV2ZW50IHdtaSBjbWRfaWQgJWQgc2tiICVwIHNrYi1cXHUwMDNlbGVuICVkXFxcXG5cXFwiLFxcbiAxNzY6XFx0XFx0XFx0ICAgY21kX2lkLCBza2IsIHNrYi1cXHUwMDNlbGVuKTtcXG4gMTc3OlxcdFxcbiAxNzg6XFx0XFx0YXRoMTBrX2RiZ19kdW1wKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLCBOVUxMLCBcXFwiXFxcIiwgc2tiLVxcdTAwM2VkYXRhLCBza2ItXFx1MDAzZWxlbik7XFxuIDE3OTpcXHRcXG4gMTgwOlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuIDE4MTpcXHRcXG4gMTgyOlxcdFxcdGlmICghYXItXFx1MDAzZXRlc3Rtb2RlLnV0Zl9tb25pdG9yKSB7XFxuIDE4MzpcXHRcXHRcXHRjb25zdW1lZCA9IGZhbHNlO1xcbiAxODQ6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDE4NTpcXHRcXHR9XFxuIDE4NjpcXHRcXG4gMTg3OlxcdFxcdC8qIE9ubHkgdGVzdG1vZGUuYyBzaG91bGQgYmUgaGFuZGxpbmcgZXZlbnRzIGZyb20gdXRmIGZpcm13YXJlLFxcbiAxODg6XFx0XFx0ICogb3RoZXJ3aXNlIGFsbCBzb3J0IG9mIHByb2JsZW1zIHdpbGwgYXJpc2UgYXMgbWFjODAyMTEgb3BlcmF0aW9uc1xcbiAxODk6XFx0XFx0ICogYXJlIG5vdCBpbml0aWFsaXNlZC5cXG4gMTkwOlxcdFxcdCAqL1xcbiAxOTE6XFx0XFx0Y29uc3VtZWQgPSB0cnVlO1xcbiAxOTI6XFx0XFxuIDE5MzpcXHRcXHRpZiAoIWF0aDEwa190bV9pc191dGZfZXZlbnQoY21kX2lkKSkge1xcbiAxOTQ6XFx0XFx0XFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSxcXG4gMTk1OlxcdFxcdFxcdFxcdCAgIFxcXCJ0ZXN0bW9kZSBkcm9wIG5vbi11dGYgZXZlbnQgY21kX2lkICV1XFxcXG5cXFwiLCBjbWRfaWQpO1xcbiAxOTY6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDE5NzpcXHRcXHR9XFxuIDE5ODpcXHRcXG4gMTk5OlxcdFxcdGlmIChhci1cXHUwMDNldGVzdG1vZGUuZXhwZWN0ZWRfc2VxICE9IEFUSDEwS19GVE1fU0VHX05PTkUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjAxOjMyLjA4MDkzMjY3OVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NTMzMzY0NjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlZ1bG5lcmFiaWxpdHkgQXNzZXNzbWVudDogVVRGIE1vbml0b3IgaW4gYXRoMTBrIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuIFRoZSBVVEYgbW9uaXRvciBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHksIGlzIG9ubHkgYWN0aXZhdGVkIHdoZW4gYGFyLVx1MDAzZXRlc3Rtb2RlLnV0Zl9tb25pdG9yYCBpcyBzZXQgdG8gdHJ1ZS4gVGhpcyBpcyBjb250cm9sbGVkIGJ5IHRoZSBgYXRoMTBrX3RtX2NtZF91dGZfc3RhcnRgIGZ1bmN0aW9uLCB3aGljaCBpcyB0cmlnZ2VyZWQgdGhyb3VnaCBhIG5sODAyMTEgdGVzdG1vZGUgY29tbWFuZC4gVGhlIGJlYXV0eSAoZnJvbSBhIGZ1enplcidzIHBlcnNwZWN0aXZlISkgaXMgdGhhdCBmdXp6aW5nIG5sODAyMTEgdGVzdG1vZGUgY29tbWFuZHMgaXMgc3RyYWlnaHRmb3J3YXJkLCBlc3BlY2lhbGx5IHdoZW4gcGFpcmVkIHdpdGggVVNCLWJhc2VkIFdNSSBldmVudCBpbmplY3Rpb25zLiBUaGF0J3MgYSBsb3cgYmFycmllciB0byBlbnRyeSBmb3IgcG90ZW50aWFsIGF0dGFja3MuXG5cblRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGhlcmUsIHRoZSBwcmltZSBcImF0dGFjayBzdXJmYWNlcyxcIiBhcmUgYGF0aDEwa190bV9ldmVudF93bWlgIHNpbmNlIHRoZSBwYXRjaCBtb2RpZmllcyBpdC4gQWxzbywgYGF0aDEwa190bV9jbWRfdXRmX3N0YXJ0YCBpcyBpbXBvcnRhbnQgdG8gaGl0IHRoZSBzZXR1cCBwYXRoLiBJIHNob3VsZCBhbHNvIG5vdGUgSSBuZWVkIHRvIGVuc3VyZSB0aGUgZnV6emVyIGNhbiB0cmlnZ2VyIGBhdGgxMGtfdG1fY21kX3V0Zl9zdG9wYCwgc2luY2UgdGhpcyBtdXN0IGJlIHByZXNlbnQgb24gdGhlIGZ1enplciBhcyB3ZWxsLiBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGBhdGgxMGtfdG1fY21kX3V0Zl9zdGFydGAgZnVuY3Rpb24gaXMgc3RhdGljOyBpdCB3b3VsZCBtYWtlIHRoaW5ncyBtb3JlIGNvbXBsaWNhdGVkIGlmIGl0IHdlcmUsIGJ1dCBJIGNhbiB3b3JrIGFyb3VuZCB0aGF0LiBVbHRpbWF0ZWx5LCBJJ20gZ29pbmcgdG8gaGF2ZSB0byBtYWtlIHN1cmUgdGhlIGZ1enplciBoaXRzIGBhdGgxMGtfdG1fZXZlbnRfd21pYCwgYnV0IGluIG9yZGVyIHRvIGRvIHRoYXQsIEknbGwgaGF2ZSB0byBjb25zaWRlciBob3cgdG8gcHJlcGFyZSB0aGUgc3RhdGUgd2l0aCBgYXRoMTBrX3RtX2NtZF91dGZfc3RhcnRgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDMwNiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjAxOjM5LjYxNDI5OTc1OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE2MjU2NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTBrX3RtX2NtZF91dGZfc3RhcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTI4Mz1zdGF0aWMgaW50IGF0aDEwa190bV9mZXRjaF9maXJtd2FyZShzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjMzNjpzdGF0aWMgaW50IGF0aDEwa190bV9jbWRfdXRmX3N0YXJ0KHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTYyOT1pbnQgYXRoMTBrX3RtX2NtZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02NTItXFx0Y2FzZSBBVEgxMEtfVE1fQ01EX1VURl9TVEFSVDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NjUzOlxcdFxcdHJldHVybiBhdGgxMGtfdG1fY21kX3V0Zl9zdGFydChhciwgdGIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02NTQtXFx0Y2FzZSBBVEgxMEtfVE1fQ01EX1VURl9TVE9QOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODowMTozOS42NjU5MzA3NDRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjcyMDIxNDg1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbiwgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIFN0YXRpYyBOYXR1cmUgb2YgYSBLZXJuZWwgQ29tbWFuZCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMga2VybmVsIGNvZGUgYW5kIGl0J3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCBpdCdzICpzdGF0aWMqLiBUaGlzIGBhdGgxMGtfdG1fY21kYCBmdW5jdGlvbi4uLml0J3MgdGhlIGV4cG9ydGVkIG9uZSwgdGhlIG9uZSB0aGF0J3MgYWN0dWFsbHkgdmlzaWJsZSBhbmQgdXNhYmxlIG91dHNpZGUgdGhlIG1vZHVsZS4gVGhhdCdzIGEga2V5IG9ic2VydmF0aW9uLiBLbm93aW5nIGl0J3Mgc3RhdGljIGltcGxpZXMgY2VydGFpbiB0aGluZ3MgYWJvdXQgaXRzIHNjb3BlIGFuZCBwb3RlbnRpYWwgZm9yIG1vZGlmaWNhdGlvbiwgb3IsIGNvbnZlcnNlbHksIGhvdyAqbGltaXRlZCogaXQgaXMgaW4gaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbCwgYmFzZWQgb24gaXRzIGRlZmluaXRpb24uIEdpdmVuIG15IGV4cGVydGlzZSwgSSBhbSBsb29raW5nIGZvciB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQ6IGFjY2VzcyBjb250cm9sLCBvcHRpbWl6YXRpb24sIHBvdGVudGlhbCBpc3N1ZXMgcmVnYXJkaW5nIG1vZHVsYXJpdHkuIEl0IHdpbGwgbGlrZWx5IGltcGFjdCBob3cgSSBpbnRlZ3JhdGUgaXQgaW50byB0aGUgbGFyZ2VyIHN5c3RlbS4gVGhlIGZhY3QgdGhhdCBpdCdzICp0aGUqIGV4cG9ydGVkIGNvbW1hbmQgaXMgaW1wb3J0YW50IHRvbywgYmVjYXVzZSBpdCdzIHRoZSBnYXRld2F5IGZvciBjZXJ0YWluIGRldmljZSBjb21tYW5kcy4gVGltZSB0byBkaWcgZGVlcGVyIGFuZCBzZWUgd2hhdCB0aG9zZSBjb21tYW5kcyBhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MzM2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MDE6NDYuMzg2MTQ4OTczWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTY0MTI4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMGtfdG1fY21kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTQ3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTBrX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTUxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjk1MTk6XFx0Q0ZHODAyMTFfVEVTVE1PREVfQ01EKGF0aDEwa190bV9jbWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy05NTIwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTE3MD1ib29sIGF0aDEwa190bV9ldmVudF93bWkoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBjbWRfaWQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMjA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoyMTA6c3RhdGljIGludCBhdGgxMGtfdG1fY21kX2dldF92ZXJzaW9uKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0yMTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTI4Mz1zdGF0aWMgaW50IGF0aDEwa190bV9mZXRjaF9maXJtd2FyZShzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjMzNjpzdGF0aWMgaW50IGF0aDEwa190bV9jbWRfdXRmX3N0YXJ0KHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDQzOnN0YXRpYyB2b2lkIF9fYXRoMTBrX3RtX2NtZF91dGZfc3RvcChzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00NjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ3MDpzdGF0aWMgaW50IGF0aDEwa190bV9jbWRfdXRmX3N0b3Aoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ3MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0ODM6XFx0X19hdGgxMGtfdG1fY21kX3V0Zl9zdG9wKGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDg0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDk0OnN0YXRpYyBpbnQgYXRoMTBrX3RtX2NtZF93bWkoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ5NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNTQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo1NTA6c3RhdGljIGludCBhdGgxMGtfdG1fY21kX3RsdihzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNTUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02MjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjYyOTppbnQgYXRoMTBrX3RtX2NtZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjMwLVxcdFxcdCAgdm9pZCAqZGF0YSwgaW50IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02NDgtXFx0XFx0aWYgKCF0YltBVEgxMEtfVE1fQVRUUl9EQVRBXSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NjQ5OlxcdFxcdFxcdHJldHVybiBhdGgxMGtfdG1fY21kX2dldF92ZXJzaW9uKGFyLCB0Yik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTY1MC1cXHRcXHRlbHNlIC8qIEFUSDEwS19UTV9DTURfVExWICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjY1MTpcXHRcXHRcXHRyZXR1cm4gYXRoMTBrX3RtX2NtZF90bHYoYXIsIHRiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjUyLVxcdGNhc2UgQVRIMTBLX1RNX0NNRF9VVEZfU1RBUlQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjY1MzpcXHRcXHRyZXR1cm4gYXRoMTBrX3RtX2NtZF91dGZfc3RhcnQoYXIsIHRiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjU0LVxcdGNhc2UgQVRIMTBLX1RNX0NNRF9VVEZfU1RPUDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NjU1OlxcdFxcdHJldHVybiBhdGgxMGtfdG1fY21kX3V0Zl9zdG9wKGFyLCB0Yik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTY1Ni1cXHRjYXNlIEFUSDEwS19UTV9DTURfV01JOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo2NTc6XFx0XFx0cmV0dXJuIGF0aDEwa190bV9jbWRfd21pKGFyLCB0Yik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTY1OC1cXHRkZWZhdWx0Olxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTY2Mz12b2lkIGF0aDEwa190ZXN0bW9kZV9kZXN0cm95KHN0cnVjdCBhdGgxMGsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTY3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NjcyOlxcdF9fYXRoMTBrX3RtX2NtZF91dGZfc3RvcChhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTY3My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaD0xMj1ib29sIGF0aDEwa190bV9ldmVudF93bWkoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBjbWRfaWQsIHN0cnVjdCBza19idWZmICpza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaDoxMzppbnQgYXRoMTBrX3RtX2NtZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMTQtXFx0XFx0ICB2b2lkICpkYXRhLCBpbnQgbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaD0yMj1zdGF0aWMgaW5saW5lIGJvb2wgYXRoMTBrX3RtX2V2ZW50X3dtaShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaC0yNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmg6Mjg6c3RhdGljIGlubGluZSBpbnQgYXRoMTBrX3RtX2NtZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMjktXFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oPTIwPWVudW0gYXRoMTBrX3RtX2F0dHIge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmgtMzYtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmg6Mzc6ZW51bSBhdGgxMGtfdG1fY21kIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaC0zOC1cXHQvKiBSZXR1cm5zIHRoZSBzdXBwb3J0ZWQgYXRoMTBrIHRlc3Rtb2RlIGludGVyZmFjZSB2ZXJzaW9uIGluXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjAxOjQ2LjQzNzc5NjExWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzNjMwMDYzNzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYXNvbmluZyBmb3IgRnV6emluZyB0aGUgYXRoMTBrIFRlc3Rtb2RlIEV2ZW50IEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIGBhdGgxMGtfdG1fY21kYCBhbmQgYGF0aDEwa190bV9ldmVudF93bWlgIHN0YW5kIG91dC4gVGhlIGZvcm1lciBzZWVtcyB0byBiZSB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBubDgwMjExIHRlc3Rtb2RlIGNvbW1hbmRzLCBhbmQgdGhlIGxhdHRlciBpcyB0aGUgaGFuZGxlciBmb3IgV01JIGV2ZW50cy4gVGhvc2UgYXJlIGRlZmluaXRlbHkgbXkgZm9jdXMgc3ltYm9scyBoZXJlLiBUaGV5IGhhbmRsZSBkaXN0aW5jdCBwYXRocyBpbnRvIHRoZSB0ZXN0IG1vZGUgZnVuY3Rpb25hbGl0eS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gd2hpY2ggY29uZmlndXJhdGlvbnMgYXJlIHJlbGV2YW50LiBJIGtub3cgdGhhdCBgQVRIMTBLYCBpcyBhIG11c3QsIGFuZCBzaW5jZSB0aGlzIGludm9sdmVzIFVTQiBpbnRlcmFjdGlvbiwgYEFUSDEwS19VU0JgIGlzIGFsc28gbGlrZWx5IHJlcXVpcmVkLiBBbHNvIHNpbmNlIHRoaXMgZGVhbHMgd2l0aCB0ZXN0IG1vZGUsIGBOTDgwMjExX1RFU1RNT0RFYCBpcyBhbm90aGVyIG9idmlvdXMgY2FuZGlkYXRlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBjb25maWd1cmF0aW9ucyBhcmUgcmlnaHQuIEkga25vdyB0aGF0IGBBVEgxMEtfVVNCYCBkZXBlbmRzIG9uIGBVU0JgIGFuZCBgQVRIMTBLYCwgd2hpY2ggaW4gdHVybiBkZXBlbmQgb24gYE1BQzgwMjExYC4gQnV0IHRoZSBmdXp6ZXIgYmFzZSBjb25maWcgdXN1YWxseSB0YWtlcyBjYXJlIG9mIHRob3NlIGRlcGVuZGVuY2llcywgc28ganVzdCBsaXN0aW5nIHRoZSBkaXJlY3Qgb25lcyBpcyBzYWZlLlxuXG5SZXZpZXdpbmcgdGhlIHBhdGNoIGl0c2VsZiwgaXQncyBjbGVhciB0aGUgY2hhbmdlcyB3aXRoaW4gYGF0aDEwa190bV9ldmVudF93bWlgIGFyZSBmdW5jdGlvbmFsLiBUaGUgY29kZSBpcyBhZGRpbmcgYSBjaGVjayB0byBkcm9wIG5vbi1VVEYgZXZlbnRzLiBUaGlzIG1vZGlmaWNhdGlvbiB0byB0aGUgV01JIGV2ZW50IGhhbmRsaW5nIGxvZ2ljIGluIHRlc3QgbW9kZSBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyBJIHdhbnQgdG8gZnV6ei4gSXQgaW50cm9kdWNlcyBhIG5ldyBjb2RlIHBhdGggKHRoZSBkcm9wKSBhbmQgbW9kaWZpZXMgZXhpc3RpbmcgbG9naWMuIFNvIHRoZSBmdXp6aW5nIHRhcmdldCBoZXJlIGlzIHRoZSBgYXRoMTBrYCB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBpdHMgZXZlbnQgcHJvY2Vzc2luZyB3aXRoaW4gdGVzdCBtb2RlLiBJIGNhbiBmdXp6IGl0IHRocm91Z2ggdGhlIFVTQiBpbnRlcmZhY2UgKGBDT05GSUdfQVRIMTBLX1VTQmApIGJ5IGVtdWxhdGluZyB0aGUgZGV2aWNlIGFuZCBzZW5kaW5nIFdNSSBldmVudHMuIFRoZSB0ZXN0IG1vZGUgaXRzZWxmIGNhbiBiZSBhY3RpdmF0ZWQgdXNpbmcgbmw4MDIxMSBjb21tYW5kcyAoYENPTkZJR19OTDgwMjExX1RFU1RNT0RFYCkuXG5cblNvLCBJIHRoaW5rIEkndmUgZ290IGl0OlxuXG5Gb2N1cyBTeW1ib2xzOlxuKiAgIGBhdGgxMGtfdG1fZXZlbnRfd21pYFxuKiAgIGBhdGgxMGtfdG1fY21kYFxuXG5Db25maWdzOlxuKiAgIGBBVEgxMEtgXG4qICAgYEFUSDEwS19VU0JgXG4qICAgYE5MODAyMTFfVEVTVE1PREVgXG5cbkkgYW0gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzY2OCwiT3V0cHV0VG9rZW5zIjoxNjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MDI6MDAuMDY3ODYyNzM1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk4OTQ2NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDEwS1wiLFxuICAgIFwiQVRIMTBLX1VTQlwiLFxuICAgIFwiTkw4MDIxMV9URVNUTU9ERVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF0aDEwa190bV9ldmVudF93bWlcIixcbiAgICBcImF0aDEwa190bV9jbWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGF0aDEwa2Agd2lyZWxlc3MgZHJpdmVyJ3MgdGVzdG1vZGUgZXZlbnQgaGFuZGxpbmcgbG9naWMgdG8gZHJvcCBub24tVVRGIFdNSSBldmVudHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJ3MgZmlybXdhcmUgZXZlbnQgcHJvY2Vzc2luZy4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBpdHMgVVNCIGludGVyZmFjZSBieSBlbXVsYXRpbmcgdGhlIGRldmljZSBhbmQgc2VuZGluZyBXTUkgZXZlbnRzLCBhbmQgdGhlIHRlc3Rtb2RlIGNhbiBiZSBhY3RpdmF0ZWQgdmlhIG5sODAyMTEgY29tbWFuZHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIMTBLXCIsXG4gICAgXCJBVEgxMEtfVVNCXCIsXG4gICAgXCJOTDgwMjExX1RFU1RNT0RFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoMTBrX3RtX2V2ZW50X3dtaVwiLFxuICAgIFwiYXRoMTBrX3RtX2NtZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgYXRoMTBrYCB3aXJlbGVzcyBkcml2ZXIncyB0ZXN0bW9kZSBldmVudCBoYW5kbGluZyBsb2dpYyB0byBkcm9wIG5vbi1VVEYgV01JIGV2ZW50cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXIncyBmaXJtd2FyZSBldmVudCBwcm9jZXNzaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIGl0cyBVU0IgaW50ZXJmYWNlIGJ5IGVtdWxhdGluZyB0aGUgZGV2aWNlIGFuZCBzZW5kaW5nIFdNSSBldmVudHMsIGFuZCB0aGUgdGVzdG1vZGUgY2FuIGJlIGFjdGl2YXRlZCB2aWEgbmw4MDIxMSBjb21tYW5kcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow74jhm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 07:58:06 +0000 UTC FinishedAt: 2026-07-31 08:02:02 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "913998f903fb1432c0046c33003db38a9e8bedb1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH10K", "ATH10K_USB", "NL80211_TESTMODE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "913998f903fb1432c0046c33003db38a9e8bedb1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH10K", "ATH10K_USB", "NL80211_TESTMODE" ], "series_id": "9bf32b3b-cc65-49f6-954f-c02bd2db623d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ath10k_tm_event_wmi", "ath10k_tm_cmd" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDEwSyYjMzQ7LAogICAgJiMzNDtBVEgxMEtfVVNCJiMzNDssCiAgICAmIzM0O05MODAyMTFfVEVTVE1PREUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGgxMGtfdG1fZXZlbnRfd21pJiMzNDssCiAgICAmIzM0O2F0aDEwa190bV9jbWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBhdGgxMGtgIHdpcmVsZXNzIGRyaXZlciYjMzk7cyB0ZXN0bW9kZSBldmVudCBoYW5kbGluZyBsb2dpYyB0byBkcm9wIG5vbi1VVEYgV01JIGV2ZW50cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXImIzM5O3MgZmlybXdhcmUgZXZlbnQgcHJvY2Vzc2luZy4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBpdHMgVVNCIGludGVyZmFjZSBieSBlbXVsYXRpbmcgdGhlIGRldmljZSBhbmQgc2VuZGluZyBXTUkgZXZlbnRzLCBhbmQgdGhlIHRlc3Rtb2RlIGNhbiBiZSBhY3RpdmF0ZWQgdmlhIG5sODAyMTEgY29tbWFuZHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1NWViMDQ5OTU3MzBiYTAzMDlmNWIwOGY5M2RjNDM4Y2VhMGI5MDdkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDc6NTk6NDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jXG5pbmRleCBkM2JkMzg1Njk0ZDZlLi4yODJhZTZlMjBjOGVmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmNcbkBAIC0xNTYsNiAmIzQzOzE1NiwxNCBAQCBzdGF0aWMgdm9pZCBhdGgxMGtfdG1fZXZlbnRfc2VnbWVudGVkKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLCBzdHJ1Y3Qgc2tfYlxuIFx0Y2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBib29sIGF0aDEwa190bV9pc191dGZfZXZlbnQodTMyIGNtZF9pZClcbiYjNDM7e1xuJiM0MztcdHJldHVybiBjbWRfaWQgPT0gV01JXzEwWF9QREVWX1VURl9FVkVOVElEIHx8XG4mIzQzO1x0ICAgICAgIGNtZF9pZCA9PSBXTUlfMTBfMl9QREVWX1VURl9FVkVOVElEIHx8XG4mIzQzO1x0ICAgICAgIGNtZF9pZCA9PSBXTUlfMTBfNF9QREVWX1VURl9FVkVOVElEIHx8XG4mIzQzO1x0ICAgICAgIGNtZF9pZCA9PSBXTUlfVExWX1BERVZfVVRGX0VWRU5USUQ7XG4mIzQzO31cbiYjNDM7XG4gLyogUmV0dXJucyB0cnVlIGlmIGNhbGxlZSBjb25zdW1lcyB0aGUgc2tiIGFuZCB0aGUgc2tiIHNob3VsZCBiZSBkaXNjYXJkZWQuXG4gICogUmV0dXJucyBmYWxzZSBpZiBza2IgaXMgbm90IHVzZWQuIERvZXMgbm90IHNsZWVwLlxuICAqL1xuQEAgLTE4Miw2ICYjNDM7MTkwLDEyIEBAIGJvb2wgYXRoMTBrX3RtX2V2ZW50X3dtaShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdCAqL1xuIFx0Y29uc3VtZWQgPSB0cnVlO1xuIFxuJiM0MztcdGlmICghYXRoMTBrX3RtX2lzX3V0Zl9ldmVudChjbWRfaWQpKSB7XG4mIzQzO1x0XHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLFxuJiM0MztcdFx0XHQgICBcJiMzNDt0ZXN0bW9kZSBkcm9wIG5vbi11dGYgZXZlbnQgY21kX2lkICV1XFxuXCYjMzQ7LCBjbWRfaWQpO1xuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmIChhci1cdTAwM2V0ZXN0bW9kZS5leHBlY3RlZF9zZXEgIT0gQVRIMTBLX0ZUTV9TRUdfTk9ORSlcbiBcdFx0YXRoMTBrX3RtX2V2ZW50X3NlZ21lbnRlZChhciwgY21kX2lkLCBza2IpO1xuIFx0ZWxzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEgxMEsmIzM0OywKICAgICYjMzQ7QVRIMTBLX1VTQiYjMzQ7LAogICAgJiMzNDtOTDgwMjExX1RFU1RNT0RFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoMTBrX3RtX2V2ZW50X3dtaSYjMzQ7LAogICAgJiMzNDthdGgxMGtfdG1fY21kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgYXRoMTBrYCB3aXJlbGVzcyBkcml2ZXImIzM5O3MgdGVzdG1vZGUgZXZlbnQgaGFuZGxpbmcgbG9naWMgdG8gZHJvcCBub24tVVRGIFdNSSBldmVudHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGZpcm13YXJlIGV2ZW50IHByb2Nlc3NpbmcuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgaXRzIFVTQiBpbnRlcmZhY2UgYnkgZW11bGF0aW5nIHRoZSBkZXZpY2UgYW5kIHNlbmRpbmcgV01JIGV2ZW50cywgYW5kIHRoZSB0ZXN0bW9kZSBjYW4gYmUgYWN0aXZhdGVkIHZpYSBubDgwMjExIGNvbW1hbmRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTVlYjA0OTk1NzMwYmEwMzA5ZjViMDhmOTNkYzQzOGNlYTBiOTA3ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDA3OjU5OjQwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jCmluZGV4IGQzYmQzODU2OTRkNmUuLjI4MmFlNmUyMGM4ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMKQEAgLTE1Niw2ICYjNDM7MTU2LDE0IEBAIHN0YXRpYyB2b2lkIGF0aDEwa190bV9ldmVudF9zZWdtZW50ZWQoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBjbWRfaWQsIHN0cnVjdCBza19iCiAJY2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTsKIH0KIAomIzQzO3N0YXRpYyBib29sIGF0aDEwa190bV9pc191dGZfZXZlbnQodTMyIGNtZF9pZCkKJiM0Mzt7CiYjNDM7CXJldHVybiBjbWRfaWQgPT0gV01JXzEwWF9QREVWX1VURl9FVkVOVElEIHx8CiYjNDM7CSAgICAgICBjbWRfaWQgPT0gV01JXzEwXzJfUERFVl9VVEZfRVZFTlRJRCB8fAomIzQzOwkgICAgICAgY21kX2lkID09IFdNSV8xMF80X1BERVZfVVRGX0VWRU5USUQgfHwKJiM0MzsJICAgICAgIGNtZF9pZCA9PSBXTUlfVExWX1BERVZfVVRGX0VWRU5USUQ7CiYjNDM7fQomIzQzOwogLyogUmV0dXJucyB0cnVlIGlmIGNhbGxlZSBjb25zdW1lcyB0aGUgc2tiIGFuZCB0aGUgc2tiIHNob3VsZCBiZSBkaXNjYXJkZWQuCiAgKiBSZXR1cm5zIGZhbHNlIGlmIHNrYiBpcyBub3QgdXNlZC4gRG9lcyBub3Qgc2xlZXAuCiAgKi8KQEAgLTE4Miw2ICYjNDM7MTkwLDEyIEBAIGJvb2wgYXRoMTBrX3RtX2V2ZW50X3dtaShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkgKi8KIAljb25zdW1lZCA9IHRydWU7CiAKJiM0MzsJaWYgKCFhdGgxMGtfdG1faXNfdXRmX2V2ZW50KGNtZF9pZCkpIHsKJiM0MzsJCWF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfVEVTVE1PREUsCiYjNDM7CQkJICAgJiMzNDt0ZXN0bW9kZSBkcm9wIG5vbi11dGYgZXZlbnQgY21kX2lkICV1XG4mIzM0OywgY21kX2lkKTsKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwl9CiYjNDM7CiAJaWYgKGFyLSZndDt0ZXN0bW9kZS5leHBlY3RlZF9zZXEgIT0gQVRIMTBLX0ZUTV9TRUdfTk9ORSkKIAkJYXRoMTBrX3RtX2V2ZW50X3NlZ21lbnRlZChhciwgY21kX2lkLCBza2IpOwogCWVsc2UKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM5MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBhdGgxMGsgRHJpdmVyOiBBIFByZWxpbWluYXJ5IEFzc2Vzc21lbnQqKgoKT2theSwgc28gdGhlcmUmIzM5O3MgYSBwYXRjaCBpbiBmcm9udCBvZiBtZSB0aGF0IHR3ZWFrcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhZGRpbmcgYSBjaGVjaywgYGF0aDEwa190bV9pc191dGZfZXZlbnQoY21kX2lkKWAsIGluIGBhdGgxMGtfdG1fZXZlbnRfd21pYC4gRXNzZW50aWFsbHksIGlmIGl0JiMzOTtzIG5vdCBhIFVURiBldmVudCwgdGhlIGNvZGUmIzM5O3MgZHJvcHBpbmcgaXQuIEZpbmUuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gZnV6emluZyB0aGlzIGRyaXZlci4gSXTigJlzIGEgd2lyZWxlc3MgZHJpdmVyLCBzbyBwb3RlbnRpYWxseSB2dWxuZXJhYmxlIGFuZCBpbnRlcmVzdGluZy4KCkJ1dCB3YWl0LiAqYXRoMTBrKi4uLiB0aGF0JiMzOTtzIHRoZSBkcml2ZXIgZm9yIHNwZWNpZmljIEF0aGVyb3MgaGFyZHdhcmUuIFRoaXMgcmFpc2VzIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBvZiB3aGV0aGVyIEkgY2FuIGZ1enogaXQgZWZmZWN0aXZlbHkuIENhbiBJIGV2ZW4gZ2V0IGl0IHRvIHJ1biBpbiBRRU1VPyBXaXJlbGVzcyBkcml2ZXJzIGFyZSBvZnRlbiBmaW5pY2t5IGFib3V0IHBoeXNpY2FsIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBvciBzcGVjaWZpYyBlbXVsYXRpb24gbGF5ZXJzLiBJcyAqYXRoMTBrKiBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGVtdWxhdGVkLCBvciBpcyBpdCBhIHRydWUgaGFyZHdhcmUgZHJpdmVyIChQQ0kvU0RJTy9VU0IpPyBTZWVtcyB0aGUgbGF0dGVyLgoKU28sIGhvdyBjYW4gSSBldmVuIGJlZ2luIHRvIGZ1enogdGhpcz8gQ291bGQgSSBwb3RlbnRpYWxseSBsZXZlcmFnZSBVU0IgZW11bGF0aW9uPyBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgYGF0aDEwa2AgaGF2ZSBhIFVTQiBkcml2ZXIgcGF0aD8gSSBuZWVkIHRvIGNoZWNrIHRoYXQgZmlyc3QuIFRoYXQmIzM5O3MgdGhlIGtleSB0byBtYWtpbmcgYW55IHByb2dyZXNzIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTBrLip1c2ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTA0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlPTM0PWF0aDEwa19zZGlvLXkgJiM0Mzs9IHNkaW8ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZS0zNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0FUSDEwS19VU0IpICYjNDM7PSBhdGgxMGtfdXNiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGU6Mzc6YXRoMTBrX3VzYi15ICYjNDM7PSB1c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZS0zOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxODpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE5Olx0XHRcdFx0XHQgICBzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpyZWN2X3BpcGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jPTM1PXN0YXRpYyBzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzY6YXRoMTBrX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1NzpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2ZyZWVfdXJiX3RvX3BpcGUoc3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTgtXHRcdFx0XHRcdHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc0OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfY2xlYW51cF9yZWN2X3VyYihzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc5Olx0YXRoMTBrX3VzYl9mcmVlX3VyYl90b19waXBlKHVyYl9jb250ZXh0LVx1MDAzZXBpcGUsIHVyYl9jb250ZXh0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODI6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9mcmVlX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MzpcdFx0XHRcdFx0ICAgc3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA0LVx0Zm9yICg7Oykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDU6XHRcdHVyYl9jb250ZXh0ID0gYXRoMTBrX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHBpcGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExNDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExNjpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTctXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExOS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDEwS19VU0JfUElQRV9NQVg7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMjA6XHRcdGF0aDEwa191c2JfZnJlZV9waXBlX3Jlc291cmNlcyhhciwgXHUwMDI2YXJfdXNiLVx1MDAzZXBpcGVzW2ldKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTIxLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTI1OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfcmVjdl9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyNi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyNy1cdHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0ID0gdXJiLVx1MDAzZWNvbnRleHQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEyODpcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUgPSB1cmJfY29udGV4dC1cdTAwM2VwaXBlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMjk6XHRzdHJ1Y3QgYXRoMTBrICphciA9IHBpcGUtXHUwMDNlYXJfdXNiLVx1MDAzZWFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMzAtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTcyLWNsZWFudXBfcmVjdl91cmI6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE3MzpcdGF0aDEwa191c2JfY2xlYW51cF9yZWN2X3VyYih1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3Ny1cdFx0Lyogb3VyIGZyZWUgdXJicyBhcmUgcGlsaW5nIHVwLCBwb3N0IG1vcmUgdHJhbnNmZXJzICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE3ODpcdFx0YXRoMTBrX3VzYl9wb3N0X3JlY3ZfdHJhbnNmZXJzKGFyLCBwaXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTc5LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxODI6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl90cmFuc21pdF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE4My17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE4NC1cdHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0ID0gdXJiLVx1MDAzZWNvbnRleHQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE4NTpcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUgPSB1cmJfY29udGV4dC1cdTAwM2VwaXBlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxODY6XHRzdHJ1Y3QgYXRoMTBrICphciA9IHBpcGUtXHUwMDNlYXJfdXNiLVx1MDAzZWFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xODctXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTk2LVx0dXJiX2NvbnRleHQtXHUwMDNlc2tiID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTk3Olx0YXRoMTBrX3VzYl9mcmVlX3VyYl90b19waXBlKHVyYl9jb250ZXh0LVx1MDAzZXBpcGUsIHVyYl9jb250ZXh0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTk4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjA0LS8qIHBpcGUgb3BlcmF0aW9ucyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyMDU6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9wb3N0X3JlY3ZfdHJhbnNmZXJzKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyMDY6XHRcdFx0XHRcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnJlY3ZfcGlwZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjA3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTIxMi1cdGZvciAoOzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjEzOlx0XHR1cmJfY29udGV4dCA9IGF0aDEwa191c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShyZWN2X3BpcGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMTQtXHRcdGlmICghdXJiX2NvbnRleHQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMjktXHRcdFx0XHQgIEFUSDEwS19VU0JfUlhfQlVGRkVSX1NJWkUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjIzMDpcdFx0XHRcdCAgYXRoMTBrX3VzYl9yZWN2X2NvbXBsZXRlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTIzMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI1NC1lcnI6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI1NTpcdGF0aDEwa191c2JfY2xlYW51cF9yZWN2X3VyYih1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI1Ni19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjU4OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZmx1c2hfYWxsKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNjA6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjYxLVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI3MTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3N0YXJ0X3JlY3ZfcGlwZXMoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI3Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI3MzpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI3NzpcdGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjc4LVx0XHRcdFx0ICAgICAgIFx1MDAyNmFyX3VzYi1cdTAwM2VwaXBlc1tBVEgxMEtfVVNCX1BJUEVfUlhfREFUQV0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyODE6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl90eF9jb21wbGV0ZShzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjgyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjkyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfcnhfY29tcGxldGUoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI5My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2MDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2lvX2NvbXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM2MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2MjpcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUgPSBjb250YWluZXJfb2Yod29yayxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzYzOlx0XHRcdFx0XHRcdCAgICBzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNjQtXHRcdFx0XHRcdFx0ICAgIGlvX2NvbXBsZXRlX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNjU6XHRzdHJ1Y3QgYXRoMTBrICphciA9IHBpcGUtXHUwMDNlYXJfdXNiLVx1MDAzZWFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNjYtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzY5LVx0XHRpZiAocGlwZS1cdTAwM2VmbGFncyBcdTAwMjYgQVRIMTBLX1VTQl9QSVBFX0ZMQUdfVFgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3MDpcdFx0XHRhdGgxMGtfdXNiX3R4X2NvbXBsZXRlKGFyLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNzEtXHRcdGVsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzcyOlx0XHRcdGF0aDEwa191c2JfcnhfY29tcGxldGUoYXIsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3My1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzc2OiNkZWZpbmUgQVRIMTBLX1VTQl9NQVhfRElBR19DTUQgKHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzc3OiNkZWZpbmUgQVRIMTBLX1VTQl9NQVhfRElBR19SRVNQIChzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX3Jlc3BfcmVhZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzc5OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZGVzdHJveShzdHJ1Y3QgYXRoMTBrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzgwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzgxOlx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzgzOlx0YXRoMTBrX3VzYl9mbHVzaF9hbGwoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozODQ6XHRhdGgxMGtfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zODUtXHR1c2Jfc2V0X2ludGZkYXRhKGFyX3VzYi1cdTAwM2VpbnRlcmZhY2UsIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozOTE6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9zdGFydChzdHJ1Y3QgYXRoMTBrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzkyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzkzLVx0aW50IGk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM5NDpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5Ni1cdGF0aDEwa19jb3JlX25hcGlfZW5hYmxlKGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzk3Olx0YXRoMTBrX3VzYl9zdGFydF9yZWN2X3BpcGVzKGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzk4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0MDk6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl90eF9zZyhzdHJ1Y3QgYXRoMTBrICphciwgdTggcGlwZV9pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDEwLVx0XHRcdFx0c3RydWN0IGF0aDEwa19oaWZfc2dfaXRlbSAqaXRlbXMsIGludCBuX2l0ZW1zKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MTEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0MTI6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDEzOlx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZSA9IFx1MDAyNmFyX3VzYi1cdTAwM2VwaXBlc1twaXBlX2lkXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDE0LVx0c3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqdXJiX2NvbnRleHQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MTktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBuX2l0ZW1zOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0MjA6XHRcdHVyYl9jb250ZXh0ID0gYXRoMTBrX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHBpcGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MjEtXHRcdGlmICghdXJiX2NvbnRleHQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQzOS1cdFx0XHRcdCAgc2tiLVx1MDAzZWxlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDQwOlx0XHRcdFx0ICBhdGgxMGtfdXNiX3RyYW5zbWl0X2NvbXBsZXRlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ0MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ2My1lcnJfZnJlZV91cmJfdG9fcGlwZTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDY0Olx0YXRoMTBrX3VzYl9mcmVlX3VyYl90b19waXBlKHVyYl9jb250ZXh0LVx1MDAzZXBpcGUsIHVyYl9jb250ZXh0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDY1LWVycjpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDY5OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfaGlmX3N0b3Aoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ3MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ3MTpcdGF0aDEwa191c2JfZmx1c2hfYWxsKGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDcyLVx0YXRoMTBrX2NvcmVfbmFwaV9zeW5jX2Rpc2FibGUoYXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0NzU6c3RhdGljIHUxNiBhdGgxMGtfdXNiX2hpZl9nZXRfZnJlZV9xdWV1ZV9udW1iZXIoc3RydWN0IGF0aDEwayAqYXIsIHU4IHBpcGVfaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ3Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ3NzpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00ODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ4MjpzdGF0aWMgaW50IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfb3V0KHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00ODMtXHRcdFx0XHQgICAgICB1OCByZXEsIHUxNiB2YWx1ZSwgdTE2IGluZGV4LCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDg1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDg2Olx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ4Ny1cdHU4ICpidWYgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTA0LVx0aWYgKHJldCBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1MDU6XHRcdGF0aDEwa193YXJuKGFyLCBcJiMzNDtGYWlsZWQgdG8gc3VibWl0IHVzYiBjb250cm9sIG1lc3NhZ2U6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MDYtXHRcdFx0ICAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjUxNjpzdGF0aWMgaW50IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfaW4oc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTUxNy1cdFx0XHRcdCAgICAgdTggcmVxLCB1MTYgdmFsdWUsIHUxNiBpbmRleCwgdm9pZCAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTUxOS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjUyMDpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MjEtXHR1OCAqYnVmID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTUzOC1cdGlmIChyZXQgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTM5Olx0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7RmFpbGVkIHRvIHJlYWQgdXNiIGNvbnRyb2wgbWVzc2FnZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU0MC1cdFx0XHQgICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTUyOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9jdHJsX21zZ19leGNoYW5nZShzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTUzLVx0XHRcdFx0XHR1OCByZXFfdmFsLCB1OCAqcmVxX2J1ZiwgdTMyIHJlcV9sZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NTktXHQvKiBzZW5kIGNvbW1hbmQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTYwOlx0cmV0ID0gYXRoMTBrX3VzYl9zdWJtaXRfY3RybF9vdXQoYXIsIHJlcV92YWwsIDAsIDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU2MS1cdFx0XHRcdFx0IHJlcV9idWYsIHJlcV9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTY2LVx0aWYgKHJlc3BfYnVmKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU2NzpcdFx0cmV0ID0gYXRoMTBrX3VzYl9zdWJtaXRfY3RybF9pbihhciwgcmVzcF92YWwsIDAsIDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU2OC1cdFx0XHRcdFx0XHRyZXNwX2J1ZiwgKnJlc3BfbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTc4OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfZGlhZ19yZWFkKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgYWRkcmVzcywgdm9pZCAqYnVmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NzktXHRcdFx0XHQgICAgc2l6ZV90IGJ1Zl9sZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4MTpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1ODI6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3JlYWQgKmNtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTgzLVx0dTMyIHJlc3BfbGVuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTg1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1ODY6XHRpZiAoYnVmX2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01ODctXHRcdHJldHVybiAtRUlOVkFMO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01ODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4OTpcdGNtZCA9IChzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3JlYWQgKilhcl91c2ItXHUwMDNlZGlhZ19jbWRfYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OTAtXHRtZW1zZXQoY21kLCAwLCBzaXplb2YoKmNtZCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTkyLVx0Y21kLVx1MDAzZWFkZHJlc3MgPSBjcHVfdG9fbGUzMihhZGRyZXNzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTkzOlx0cmVzcF9sZW4gPSBzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX3Jlc3BfcmVhZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTk1Olx0cmV0ID0gYXRoMTBrX3VzYl9jdHJsX21zZ19leGNoYW5nZShhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTk2LVx0XHRcdFx0XHQgICBBVEgxMEtfVVNCX0NPTlRST0xfUkVRX0RJQUdfQ01ELFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MDQ6XHRpZiAocmVzcF9sZW4gIT0gc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MDUtXHRcdHJldHVybiAtRU1TR1NJWkU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MDctXHRtZW1jcHkoYnVmLCBhcl91c2ItXHUwMDNlZGlhZ19yZXNwX2J1ZmZlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjA4Olx0ICAgICAgIHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYwOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYxMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjEzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfZGlhZ193cml0ZShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGFkZHJlc3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYxNC1cdFx0XHRcdCAgICAgY29uc3Qgdm9pZCAqZGF0YSwgaW50IG5ieXRlcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjE1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjE2Olx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYxNzpcdHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfd3JpdGUgKmNtZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjE4LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjIzOlx0Y21kID0gKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfd3JpdGUgKilhcl91c2ItXHUwMDNlZGlhZ19jbWRfYnVmZmVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MjQtXHRtZW1zZXQoY21kLCAwLCBzaXplb2YoKmNtZCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2Mjk6XHRyZXQgPSBhdGgxMGtfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MzAtXHRcdFx0XHRcdCAgIEFUSDEwS19VU0JfQ09OVFJPTF9SRVFfRElBR19DTUQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY0MDpzdGF0aWMgaW50IGF0aDEwa191c2JfYm1pX2V4Y2hhbmdlX21zZyhzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjQxLVx0XHRcdFx0ICAgICAgIHZvaWQgKnJlcSwgdTMyIHJlcV9sZW4sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NDYtXHRpZiAocmVxKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY0NzpcdFx0cmV0ID0gYXRoMTBrX3VzYl9zdWJtaXRfY3RybF9vdXQoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY0OC1cdFx0XHRcdFx0XHQgQVRIMTBLX1VTQl9DT05UUk9MX1JFUV9TRU5EX0JNSV9DTUQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NTgtXHRpZiAocmVzcCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2NTk6XHRcdHJldCA9IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfaW4oYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY2MC1cdFx0XHRcdFx0XHRBVEgxMEtfVVNCX0NPTlRST0xfUkVRX1JFQ1ZfQk1JX1JFU1AsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY3MzpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9nZXRfZGVmYXVsdF9waXBlKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NzQtXHRcdFx0XHRcdCAgICB1OCAqdWxfcGlwZSwgdTggKmRsX3BpcGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY4MDpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX21hcF9zZXJ2aWNlX3RvX3BpcGUoc3RydWN0IGF0aDEwayAqYXIsIHUxNiBzdmNfaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY4MS1cdFx0XHRcdFx0ICAgICAgdTggKnVsX3BpcGUsIHU4ICpkbF9waXBlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MDQ6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9wb3dlcl91cChzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzA1LVx0XHRcdFx0ICAgZW51bSBhdGgxMGtfZmlybXdhcmVfbW9kZSBmd19tb2RlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MTA6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9oaWZfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTBrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzExLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzEyOlx0YXRoMTBrX3VzYl9mbHVzaF9hbGwoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MTMtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MTc6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9zdXNwZW5kKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MTgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MjI6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9yZXN1bWUoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcyMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcyODpzdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEwa19oaWZfb3BzIGF0aDEwa191c2JfaGlmX29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzI5Olx0LnR4X3NnXHRcdFx0PSBhdGgxMGtfdXNiX2hpZl90eF9zZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzMwOlx0LmRpYWdfcmVhZFx0XHQ9IGF0aDEwa191c2JfaGlmX2RpYWdfcmVhZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzMxOlx0LmRpYWdfd3JpdGVcdFx0PSBhdGgxMGtfdXNiX2hpZl9kaWFnX3dyaXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzI6XHQuZXhjaGFuZ2VfYm1pX21zZ1x0PSBhdGgxMGtfdXNiX2JtaV9leGNoYW5nZV9tc2csXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczMzpcdC5zdGFydFx0XHRcdD0gYXRoMTBrX3VzYl9oaWZfc3RhcnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNDpcdC5zdG9wXHRcdFx0PSBhdGgxMGtfdXNiX2hpZl9zdG9wLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzU6XHQubWFwX3NlcnZpY2VfdG9fcGlwZVx0PSBhdGgxMGtfdXNiX2hpZl9tYXBfc2VydmljZV90b19waXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzY6XHQuZ2V0X2RlZmF1bHRfcGlwZVx0PSBhdGgxMGtfdXNiX2hpZl9nZXRfZGVmYXVsdF9waXBlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3Mzc6XHQuZ2V0X2ZyZWVfcXVldWVfbnVtYmVyXHQ9IGF0aDEwa191c2JfaGlmX2dldF9mcmVlX3F1ZXVlX251bWJlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzM4Olx0LnBvd2VyX3VwXHRcdD0gYXRoMTBrX3VzYl9oaWZfcG93ZXJfdXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczOTpcdC5wb3dlcl9kb3duXHRcdD0gYXRoMTBrX3VzYl9oaWZfcG93ZXJfZG93bixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzQwLSNpZmRlZiBDT05GSUdfUE1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzQxOlx0LnN1c3BlbmRcdFx0PSBhdGgxMGtfdXNiX2hpZl9zdXNwZW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDI6XHQucmVzdW1lXHRcdFx0PSBhdGgxMGtfdXNiX2hpZl9yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc0My0jZW5kaWZcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzQ2OnN0YXRpYyB1OCBhdGgxMGtfdXNiX2dldF9sb2dpY2FsX3BpcGVfbnVtKHU4IGVwX2FkZHJlc3MsIGludCAqdXJiX2NvdW50KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03NDcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3OTE6c3RhdGljIGludCBhdGgxMGtfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3OTI6XHRcdFx0XHRcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc5My1cdFx0XHRcdFx0ICAgaW50IHVyYl9jbnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MTEtXHRcdHBpcGUtXHUwMDNldXJiX2FsbG9jJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODEyOlx0XHRhdGgxMGtfdXNiX2ZyZWVfdXJiX3RvX3BpcGUocGlwZSwgdXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MTMtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyMzpzdGF0aWMgaW50IGF0aDEwa191c2Jfc2V0dXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyNC1cdFx0XHRcdFx0ICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODI1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODI2Olx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyNy1cdHN0cnVjdCB1c2JfaG9zdF9pbnRlcmZhY2UgKmlmYWNlX2Rlc2MgPSBpbnRlcmZhY2UtXHUwMDNlY3VyX2FsdHNldHRpbmc7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyOC1cdHN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciAqZW5kcG9pbnQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyOTpcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgzMC1cdGludCByZXQsIGksIHVyYmNvdW50O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MzM6XHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1VTQiwgXCYjMzQ7dXNiIHNldHRpbmcgdXAgcGlwZXMgdXNpbmcgaW50ZXJmYWNlXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODM0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODcxLVx0XHRwaXBlX251bSA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjg3MjpcdFx0ICAgIGF0aDEwa191c2JfZ2V0X2xvZ2ljYWxfcGlwZV9udW0oZW5kcG9pbnQtXHUwMDNlYkVuZHBvaW50QWRkcmVzcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODczLVx0XHRcdFx0XHRcdCAgICBcdTAwMjZ1cmJjb3VudCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjkyNTpcdFx0cmV0ID0gYXRoMTBrX3VzYl9hbGxvY19waXBlX3Jlc291cmNlcyhhciwgcGlwZSwgdXJiY291bnQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MjYtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjkzMzpzdGF0aWMgaW50IGF0aDEwa191c2JfY3JlYXRlKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzQtXHRcdFx0ICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5MzY6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTM3LVx0c3RydWN0IHVzYl9kZXZpY2UgKmRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTM4Olx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTM5LVx0aW50IHJldCwgaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk0OC1cdFx0SU5JVF9XT1JLKFx1MDAyNnBpcGUtXHUwMDNlaW9fY29tcGxldGVfd29yayxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTQ5Olx0XHRcdCAgYXRoMTBrX3VzYl9pb19jb21wX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05NTAtXHRcdHNrYl9xdWV1ZV9oZWFkX2luaXQoXHUwMDI2cGlwZS1cdTAwM2Vpb19jb21wX3F1ZXVlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTY2Olx0cmV0ID0gYXRoMTBrX3VzYl9zZXR1cF9waXBlX3Jlc291cmNlcyhhciwgaW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTY3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3Mi1lcnI6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjk3MzpcdGF0aDEwa191c2JfZGVzdHJveShhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3NC1cdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05NzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjk3NzpzdGF0aWMgaW50IGF0aDEwa191c2JfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqY3R4LCBpbnQgYnVkZ2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05Nzgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5OTE6LyogYXRoMTBrIHVzYiBkcml2ZXIgcmVnaXN0ZXJlZCBmdW5jdGlvbnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTkyOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTMtXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk5NS1cdHN0cnVjdCBhdGgxMGsgKmFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5OTY6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTctXHRzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTAxMDpcdGFyID0gYXRoMTBrX2NvcmVfY3JlYXRlKHNpemVvZigqYXJfdXNiKSwgXHUwMDI2ZGV2LVx1MDAzZWRldiwgQVRIMTBLX0JVU19VU0IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwMTE6XHRcdFx0XHRod19yZXYsIFx1MDAyNmF0aDEwa191c2JfaGlmX29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMTItXHRpZiAoIWFyKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDE3Olx0bmV0aWZfbmFwaV9hZGQoYXItXHUwMDNlbmFwaV9kZXYsIFx1MDAyNmFyLVx1MDAzZW5hcGksIGF0aDEwa191c2JfbmFwaV9wb2xsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAxOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwMjY6XHRhcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDI3Olx0cmV0ID0gYXRoMTBrX3VzYl9jcmVhdGUoYXIsIGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMjgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA1MS1lcnJfdXNiX2Rlc3Ryb3k6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNTI6XHRhdGgxMGtfdXNiX2Rlc3Ryb3koYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDUzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA2MDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNjI6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDYzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA2ODpcdGF0aDEwa19jb3JlX3VucmVnaXN0ZXIoYXJfdXNiLVx1MDAzZWFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2OS1cdG5ldGlmX25hcGlfZGVsKFx1MDAyNmFyX3VzYi1cdTAwM2Vhci1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA3MDpcdGF0aDEwa191c2JfZGVzdHJveShhcl91c2ItXHUwMDNlYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDcxOlx0YXRoMTBrX2NvcmVfZGVzdHJveShhcl91c2ItXHUwMDNlYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDcyLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNzY6c3RhdGljIGludCBhdGgxMGtfdXNiX3BtX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA3Ny1cdFx0XHRcdCBwbV9tZXNzYWdlX3QgbWVzc2FnZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA3OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNzk6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDgxOlx0YXRoMTBrX3VzYl9mbHVzaF9hbGwoYXJfdXNiLVx1MDAzZWFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA4Mi1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA4NTpzdGF0aWMgaW50IGF0aDEwa191c2JfcG1fcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDg3Olx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA4ODpcdHN0cnVjdCBhdGgxMGsgKmFyID0gYXJfdXNiLVx1MDAzZWFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDg5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDkwOlx0YXRoMTBrX3VzYl9wb3N0X3JlY3ZfdHJhbnNmZXJzKGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDkxLVx0XHRcdFx0ICAgICAgIFx1MDAyNmFyX3VzYi1cdTAwM2VwaXBlc1tBVEgxMEtfVVNCX1BJUEVfUlhfREFUQV0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA5Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA5ODojZGVmaW5lIGF0aDEwa191c2JfcG1fc3VzcGVuZCBOVUxMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwOTk6I2RlZmluZSBhdGgxMGtfdXNiX3BtX3Jlc3VtZSBOVUxMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMDAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTAzLS8qIHRhYmxlIG9mIGRldmljZXMgdGhhdCB3b3JrIHdpdGggdGhpcyBkcml2ZXIgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTEwNDpzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgYXRoMTBrX3VzYl9pZHNbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEwNS1cdHtVU0JfREVWSUNFKDB4MTNiMSwgMHgwMDQyKX0sIC8qIExpbmtzeXMgV1VTQjYxMDBNICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTA5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBhdGgxMGtfdXNiX2lkcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTE6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGF0aDEwa191c2JfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTEyOlx0Lm5hbWUgPSBcJiMzNDthdGgxMGtfdXNiXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTEzOlx0LnByb2JlID0gYXRoMTBrX3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExNDpcdC5zdXNwZW5kID0gYXRoMTBrX3VzYl9wbV9zdXNwZW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTE1Olx0LnJlc3VtZSA9IGF0aDEwa191c2JfcG1fcmVzdW1lLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTE2Olx0LmRpc2Nvbm5lY3QgPSBhdGgxMGtfdXNiX2Rpc2Nvbm5lY3QsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTc6XHQuaWRfdGFibGUgPSBhdGgxMGtfdXNiX2lkcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTExOC1cdC5zdXBwb3J0c19hdXRvc3VzcGVuZCA9IHRydWUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTIyOm1vZHVsZV91c2JfZHJpdmVyKGF0aDEwa191c2JfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEyMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo0NDpzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNDUtXHRfX2xlMzIgY21kO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjUxOnN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfcmVhZCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTUyLVx0X19sZTMyIGNtZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo1NjpzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTctXHR1OCB2YWx1ZVs0XTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTYwLS8qIHR4L3J4IHBpcGVzIGZvciB1c2IgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6NjE6ZW51bSBhdGgxMGtfdXNiX3BpcGVfaWQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC02Mi1cdEFUSDEwS19VU0JfUElQRV9UWF9DVFJMID0gMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo3MzpzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNzQtXHRzdHJ1Y3QgbGlzdF9oZWFkIHVyYl9saXN0X2hlYWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC04Mi1cdHU4IGxvZ2ljYWxfcGlwZV9udW07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjgzOlx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtODQtXHR1MTYgbWF4X3BhY2tldF9zaXplO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtOTItLyogdXNiIGRldmljZSBvYmplY3QgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6OTM6c3RydWN0IGF0aDEwa191c2Ige1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC05NC1cdC8qIHByb3RlY3RzIHBpcGUtXHUwMDNldXJiX2xpc3RfaGVhZCBhbmQgIHBpcGUtXHUwMDNldXJiX2NudCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtOTgtXHRzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo5OTpcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgcGlwZXNbQVRIMTBLX1VTQl9QSVBFX01BWF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTEwMC1cdHU4ICpkaWFnX2NtZF9idWZmZXI7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaD0xMDY9c3RydWN0IGF0aDEwa191cmJfY29udGV4dCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTEwNy1cdHN0cnVjdCBsaXN0X2hlYWQgbGluaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6MTA4Olx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTA5LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTExMi1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA3OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NzYwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6CgoqKkluaXRpYWwgQXNzZXNzbWVudCBvZiBgYXRoMTBrYCBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IGFwcHJvYWNoIHRvIGZ1enppbmcgdGhlIGBhdGgxMGtgIGRyaXZlci4gR29vZCwgaXQgbG9va3MgbGlrZSBgYXRoMTBrYCAqZG9lcyogaGF2ZSBhIFVTQiBkcml2ZXIgKGBhdGgxMGtfdXNiYCksIHdoaWNoIG1lYW5zIEkgaGF2ZSBhIHBvdGVudGlhbCBhdmVudWUgZm9yIGZ1enppbmcgdmlhIFVTQiBlbXVsYXRpb24sIHdoaWNoIGlzIGdyZWF0LiBUaGF0IG9wZW5zIHVwIGEgbG90IG9mIHBvc3NpYmlsaXRpZXMuIE5vdywgSSBuZWVkIHRvIGRpZyBkZWVwZXIuLi4KSGFuZyBvbiBhIG1pbnV0ZSEgSSB2YWd1ZWx5IHJlY2FsbCBzb21ldGhpbmcgYWJvdXQgYSB0ZXN0IG1vZGUuLi4gc3BlY2lmaWNhbGx5LCBgYXRoMTBrX3RtX2V2ZW50X3dtaWAuIEkgdGhpbmsgSSBzYXcgdGhhdCBpbiBgdGVzdG1vZGUuY2AuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhhdCB0ZXN0IG1vZGUgZW5hYmxlZCBieSBkZWZhdWx0LCBvciBpcyBpdCBjb250aW5nZW50IG9uIHNvbWUga2luZCBvZiBjb25maWd1cmF0aW9uIHNldHRpbmc/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byB0cmlnZ2VyIHRoYXQgYHRlc3Rtb2RlYCBwYXRoLCBpdCBtaWdodCBleHBvc2UgYSBsb3Qgb2YgdXNlZnVsIHRlc3QgcG9pbnRzLiBBbHJpZ2h0LCB0aW1lIHRvIGNoZWNrIHRoZSBLY29uZmlnLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZ2AgdG8gc2VlIGhvdyB0ZXN0IG1vZGUgaXMgaGFuZGxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwNzo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0ZXN0bW9kZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGU9MTg9YXRoMTBrX2NvcmUtJChDT05GSUdfQVRIMTBLX1NQRUNUUkFMKSAmIzQzOz0gc3BlY3RyYWwub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZToxOTphdGgxMGtfY29yZS0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZS0yMC1hdGgxMGtfY29yZS0kKENPTkZJR19BVEgxMEtfVFJBQ0lORykgJiM0Mzs9IHRyYWNlLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYy0yNy0jaW5jbHVkZSBcJiMzNDtodHQuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmM6Mjg6I2luY2x1ZGUgXCYjMzQ7dGVzdG1vZGUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmMtMjktI2luY2x1ZGUgXCYjMzQ7d21pLW9wcy5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmM9NTc9TU9EVUxFX1BBUk1fREVTQyh1YXJ0X3ByaW50LCBcJiMzNDtVYXJ0IHRhcmdldCBkZWJ1Z2dpbmdcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmM6NTg6TU9EVUxFX1BBUk1fREVTQyhza2lwX290cCwgXCYjMzQ7U2tpcCBvdHAgZmFpbHVyZSBmb3IgY2FsaWJyYXRpb24gaW4gdGVzdG1vZGVcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmMtNTktTU9EVUxFX1BBUk1fREVTQyhjcnlwdG1vZGUsIFwmIzM0O0NyeXB0byBtb2RlOiAwLWhhcmR3YXJlLCAxLXNvZnR3YXJlXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYz0zNTg2PXZvaWQgYXRoMTBrX2NvcmVfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYy0zNjA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmM6MzYwODpcdGF0aDEwa190ZXN0bW9kZV9kZXN0cm95KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5jLTM2MDktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmg9MTAxMT1zdHJ1Y3QgYXRoMTBrIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0xMjY4LVx0XHR1OCAqZXZlbnRkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmg6MTI2OTpcdH0gdGVzdG1vZGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0xMjcwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYz00Mj12b2lkIGF0aDEwa19kZWJ1Z19wcmludF9od2Z3X2luZm8oc3RydWN0IGF0aDEwayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjU2Olx0YXRoMTBrX2luZm8oYXIsIFwmIzM0O2tjb25maWcgZGVidWcgJWQgZGVidWdmcyAlZCB0cmFjaW5nICVkIGRmcyAlZCB0ZXN0bW9kZSAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy01Ny1cdFx0ICAgIElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERUJVRyksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0yNS0jaW5jbHVkZSBcJiMzNDt0eHJ4LmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MjY6I2luY2x1ZGUgXCYjMzQ7dGVzdG1vZGUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0yNy0jaW5jbHVkZSBcJiMzNDt3bWktdGx2LmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo3OiNpbmNsdWRlIFwmIzM0O3Rlc3Rtb2RlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy04LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxOTojaW5jbHVkZSBcJiMzNDt0ZXN0bW9kZV9pLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0yMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9MzQ9c3RhdGljIHZvaWQgYXRoMTBrX3RtX2V2ZW50X3Vuc2VnbWVudGVkKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0MDpcdG5sX3NrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX2V2ZW50X3NrYihhci1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MS1cdFx0XHRcdFx0XHQgICAyICogc2l6ZW9mKHUzMikgJiM0Mzsgc2tiLVx1MDAzZWxlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDQtXHRcdGF0aDEwa193YXJuKGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ1Olx0XHRcdCAgICBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgc2tiIGZvciB0ZXN0bW9kZSB3bWkgZXZlbnRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ2LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTUxLVx0XHRhdGgxMGtfd2FybihhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo1MjpcdFx0XHQgICAgXCYjMzQ7ZmFpbGVkIHRvIHB1dCB0ZXN0bW9kZSB3bWkgZXZlbnQgY21kIGF0dHJpYnV0ZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNTMtXHRcdFx0ICAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTYwLVx0XHRhdGgxMGtfd2FybihhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo2MTpcdFx0XHQgICAgXCYjMzQ7ZmFpbGVkIHRvIHB1dCB0ZXN0bW9kZSB3bWkgZXZlbnQgY21kX2lkOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02Mi1cdFx0XHQgICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjktXHRcdGF0aDEwa193YXJuKGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjcwOlx0XHRcdCAgICBcJiMzNDtmYWlsZWQgdG8gY29weSBza2IgdG8gdGVzdG1vZGUgd21pIGV2ZW50OiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy03MS1cdFx0XHQgICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NzY6XHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTc3LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9Nzk9c3RhdGljIHZvaWQgYXRoMTBrX3RtX2V2ZW50X3NlZ21lbnRlZChzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTAxLVx0aWYgKGN1cnJlbnRfc2VxID09IDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxMDI6XHRcdGFyLVx1MDAzZXRlc3Rtb2RlLmV4cGVjdGVkX3NlcSA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTAzOlx0XHRhci1cdTAwM2V0ZXN0bW9kZS5kYXRhX3BvcyA9IDA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTA0LVx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTEwNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxMDY6XHRkYXRhX3BvcyA9IGFyLVx1MDAzZXRlc3Rtb2RlLmRhdGFfcG9zO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTEwNy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjExNTpcdG1lbWNweShcdTAwMjZhci1cdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGFbZGF0YV9wb3NdLCBidWZfcG9zLCBkYXRhbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xMTYtXHRkYXRhX3BvcyAmIzQzOz0gZGF0YWxlbjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTE4Olx0aWYgKCYjNDM7JiM0Mzthci1cdTAwM2V0ZXN0bW9kZS5leHBlY3RlZF9zZXEgIT0gdG90YWxfc2VnbWVudHMpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxMTk6XHRcdGFyLVx1MDAzZXRlc3Rtb2RlLmRhdGFfcG9zID0gZGF0YV9wb3M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTIwLVx0XHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLCBcJiMzNDtwYXJ0aWFsIGRhdGEgcmVjZWl2ZWQgJXUvJXVcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTEyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxMjc6XHRubF9za2IgPSBjZmc4MDIxMV90ZXN0bW9kZV9hbGxvY19ldmVudF9za2IoYXItXHUwMDNlaHctXHUwMDNld2lwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTI4LVx0XHRcdFx0XHRcdCAgIDIgKiBzaXplb2YodTMyKSAmIzQzOyBkYXRhX3Bvcyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTMwLVx0aWYgKCFubF9za2IpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxMzE6XHRcdGF0aDEwa193YXJuKGFyLCBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgc2tiIGZvciB0ZXN0bW9kZSB3bWkgZXZlbnRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTEzMi1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xMzYtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTM3Olx0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7ZmFpbGVkIHRvIHB1dCB0ZXN0bW9kZSB3bWkgZXZlbnQgYXR0cmlidXRlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xMzgtXHRcdGtmcmVlX3NrYihubF9za2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNDMtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTQ0Olx0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7ZmFpbGVkIHRvIHB1dCB0ZXN0bW9kZSB3bWkgZXZlbnQgY21kX2lkOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNDUtXHRcdGtmcmVlX3NrYihubF9za2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTQ5Olx0cmV0ID0gbmxhX3B1dChubF9za2IsIEFUSDEwS19UTV9BVFRSX0RBVEEsIGRhdGFfcG9zLCBcdTAwMjZhci1cdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGFbMF0pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTE1MC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxNTE6XHRcdGF0aDEwa193YXJuKGFyLCBcJiMzNDtmYWlsZWQgdG8gY29weSBza2IgdG8gdGVzdG1vZGUgd21pIGV2ZW50OiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNTItXHRcdGtmcmVlX3NrYihubF9za2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTU2Olx0Y2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNTctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYz0xNzA9Ym9vbCBhdGgxMGtfdG1fZXZlbnRfd21pKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNzQtXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjE3NTpcdFx0ICAgXCYjMzQ7dGVzdG1vZGUgZXZlbnQgd21pIGNtZF9pZCAlZCBza2IgJXAgc2tiLVx1MDAzZWxlbiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNzYtXHRcdCAgIGNtZF9pZCwgc2tiLCBza2ItXHUwMDNlbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjE4MjpcdGlmICghYXItXHUwMDNldGVzdG1vZGUudXRmX21vbml0b3IpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xODMtXHRcdGNvbnN1bWVkID0gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTE4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxODc6XHQvKiBPbmx5IHRlc3Rtb2RlLmMgc2hvdWxkIGJlIGhhbmRsaW5nIGV2ZW50cyBmcm9tIHV0ZiBmaXJtd2FyZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xODgtXHQgKiBvdGhlcndpc2UgYWxsIHNvcnQgb2YgcHJvYmxlbXMgd2lsbCBhcmlzZSBhcyBtYWM4MDIxMSBvcGVyYXRpb25zXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTE5NC1cdFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxOTU6XHRcdFx0ICAgXCYjMzQ7dGVzdG1vZGUgZHJvcCBub24tdXRmIGV2ZW50IGNtZF9pZCAldVxcblwmIzM0OywgY21kX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xOTYtXHRcdGdvdG8gb3V0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xOTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTk5Olx0aWYgKGFyLVx1MDAzZXRlc3Rtb2RlLmV4cGVjdGVkX3NlcSAhPSBBVEgxMEtfRlRNX1NFR19OT05FKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTIwMC1cdFx0YXRoMTBrX3RtX2V2ZW50X3NlZ21lbnRlZChhciwgY21kX2lkLCBza2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYz0yMTA9c3RhdGljIGludCBhdGgxMGtfdG1fY21kX2dldF92ZXJzaW9uKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0yMTUtXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjIxNjpcdFx0ICAgXCYjMzQ7dGVzdG1vZGUgY21kIGdldCB2ZXJzaW9uX21ham9yICVkIHZlcnNpb25fbWlub3IgJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMjE3LVx0XHQgICBBVEgxMEtfVEVTVE1PREVfVkVSU0lPTl9NQUpPUixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMjE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjIyMDpcdHNrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX3JlcGx5X3NrYihhci1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0yMjEtXHRcdFx0XHRcdFx0bmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMjQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjI0NjpcdHJldHVybiBjZmc4MDIxMV90ZXN0bW9kZV9yZXBseShza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTI0Ny19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTI0OT1zdGF0aWMgaW50IGF0aDEwa190bV9mZXRjaF91dGZfZmlybXdhcmVfYXBpXzEoc3RydWN0IGF0aDEwayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTI1OS1cdHJldCA9IGZpcm13YXJlX3JlcXVlc3Rfbm93YXJuKFx1MDAyNmZ3X2ZpbGUtXHUwMDNlZmlybXdhcmUsIGZpbGVuYW1lLCBhci1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjI2MDpcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfVEVTVE1PREUsIFwmIzM0O3Rlc3Rtb2RlIGZ3IHJlcXVlc3QgJiMzOTslcyYjMzk7OiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0yNjEtXHRcdCAgIGZpbGVuYW1lLCByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYz0yODM9c3RhdGljIGludCBhdGgxMGtfdG1fZmV0Y2hfZmlybXdhcmUoc3RydWN0IGF0aDEwayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTMwMy1cdHJldCA9IGF0aDEwa19jb3JlX2ZldGNoX2Zpcm13YXJlX2FwaV9uKGFyLCBmd19uYW1lLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjMwNDpcdFx0XHRcdFx0ICAgICAgIFx1MDAyNmFyLVx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3LmZ3X2ZpbGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTMwNS1cdGlmIChyZXQgPT0gMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjMwNjpcdFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSwgXCYjMzQ7dGVzdG1vZGUgdXNpbmcgZncgdXRmIGFwaSAyXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMDctXHRcdGdvdG8gb3V0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MzEwOlx0cmV0ID0gYXRoMTBrX3RtX2ZldGNoX3V0Zl9maXJtd2FyZV9hcGlfMShhciwgXHUwMDI2YXItXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzExLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MzE2Olx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSwgXCYjMzQ7dGVzdG1vZGUgdXNpbmcgdXRmIGFwaSAxXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzE4LW91dDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozMTk6XHR1dGZfbW9kZV9mdyA9IFx1MDAyNmFyLVx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTMyMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9MzM2PXN0YXRpYyBpbnQgYXRoMTBrX3RtX2NtZF91dGZfc3RhcnQoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTM0MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozNDE6XHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLCBcJiMzNDt0ZXN0bW9kZSBjbWQgdXRmIHN0YXJ0XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zNDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTM1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozNTY6XHRpZiAoV0FSTl9PTihhci1cdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlLmZpcm13YXJlICE9IE5VTEwpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzU3LVx0XHQvKiB1dGYgaW1hZ2UgaXMgYWxyZWFkeSBkb3dubG9hZGVkLCBpdCBzaG91bGRuJiMzOTt0IGJlICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTM2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozNjg6XHRpZiAoYXItXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZS5jb2Rlc3dhcF9kYXRhIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjM2OTpcdCAgICBhci1cdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlLmNvZGVzd2FwX2xlbikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTM3MC1cdFx0cmV0ID0gYXRoMTBrX3N3YXBfY29kZV9zZWdfaW5pdChhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozNzE6XHRcdFx0XHRcdFx0XHUwMDI2YXItXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzcyLVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTM4MC1cdHNwaW5fbG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjM4MTpcdGFyLVx1MDAzZXRlc3Rtb2RlLnV0Zl9tb25pdG9yID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zODItXHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTM4My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozODQ6XHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLCBcJiMzNDt0ZXN0bW9kZSB3bWkgdmVyc2lvbiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozODU6XHRcdCAgIGFyLVx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3LmZ3X2ZpbGUud21pX29wX3ZlcnNpb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTM4Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzg4LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjM4OTpcdFx0YXRoMTBrX2VycihhciwgXCYjMzQ7ZmFpbGVkIHRvIHBvd2VyIHVwIGhpZiAodGVzdG1vZGUpOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zOTAtXHRcdGFyLVx1MDAzZXN0YXRlID0gQVRIMTBLX1NUQVRFX09GRjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjM5NDpcdGFyLVx1MDAzZXRlc3Rtb2RlLmV2ZW50ZGF0YSA9IGt6YWxsb2MoQVRIX0ZUTV9FVkVOVF9NQVhfQlVGX0xFTkdUSCwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6Mzk1Olx0aWYgKCFhci1cdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGEpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zOTYtXHRcdHJldCA9IC1FTk9NRU07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQwMC1cdHJldCA9IGF0aDEwa19jb3JlX3N0YXJ0KGFyLCBBVEgxMEtfRklSTVdBUkVfTU9ERV9VVEYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDAxOlx0XHRcdFx0XHUwMDI2YXItXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQwMi1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0MDM6XHRcdGF0aDEwa19lcnIoYXIsIFwmIzM0O2ZhaWxlZCB0byBzdGFydCBjb3JlICh0ZXN0bW9kZSk6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQwNC1cdFx0YXItXHUwMDNlc3RhdGUgPSBBVEgxMEtfU1RBVEVfT0ZGO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDEwOlx0aWYgKHN0cmxlbihhci1cdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlLmZ3X3ZlcnNpb24pIFx1MDAzZSAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQxMTpcdFx0dmVyID0gYXItXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZS5md192ZXJzaW9uO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQxMi1cdGVsc2Vcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDIxLWVycl9yZWxlYXNlX2V2ZW50ZGF0YTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0MjI6XHRrZnJlZShhci1cdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQyMzpcdGFyLVx1MDAzZXRlc3Rtb2RlLmV2ZW50ZGF0YSA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDI0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MjgtZXJyX3JlbGVhc2VfdXRmX21vZGVfZnc6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDI5Olx0aWYgKGFyLVx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3LmZ3X2ZpbGUuY29kZXN3YXBfZGF0YSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0MzA6XHQgICAgYXItXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZS5jb2Rlc3dhcF9sZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDMxLVx0XHRhdGgxMGtfc3dhcF9jb2RlX3NlZ19yZWxlYXNlKGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQzMjpcdFx0XHRcdFx0ICAgICBcdTAwMjZhci1cdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MzMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDM0Olx0cmVsZWFzZV9maXJtd2FyZShhci1cdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlLmZpcm13YXJlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0MzU6XHRhci1cdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlLmZpcm13YXJlID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MzYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTQ0Mz1zdGF0aWMgdm9pZCBfX2F0aDEwa190bV9jbWRfdXRmX3N0b3Aoc3RydWN0IGF0aDEwayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0NTI6XHRhci1cdTAwM2V0ZXN0bW9kZS51dGZfbW9uaXRvciA9IGZhbHNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ1My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDU1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ1NjpcdGlmIChhci1cdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlLmNvZGVzd2FwX2RhdGEgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDU3Olx0ICAgIGFyLVx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3LmZ3X2ZpbGUuY29kZXN3YXBfbGVuKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ1OC1cdFx0YXRoMTBrX3N3YXBfY29kZV9zZWdfcmVsZWFzZShhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0NTk6XHRcdFx0XHRcdCAgICAgXHUwMDI2YXItXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ2MTpcdHJlbGVhc2VfZmlybXdhcmUoYXItXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZS5maXJtd2FyZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDYyOlx0YXItXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZS5maXJtd2FyZSA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ2NDpcdGtmcmVlKGFyLVx1MDAzZXRlc3Rtb2RlLmV2ZW50ZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDY1Olx0YXItXHUwMDNldGVzdG1vZGUuZXZlbnRkYXRhID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00NjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTQ3MD1zdGF0aWMgaW50IGF0aDEwa190bV9jbWRfdXRmX3N0b3Aoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ3My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0NzQ6XHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLCBcJiMzNDt0ZXN0bW9kZSBjbWQgdXRmIHN0b3BcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ3NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9NDk0PXN0YXRpYyBpbnQgYXRoMTBrX3RtX2NtZF93bWkoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTUyMi1cdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfVEVTVE1PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NTIzOlx0XHQgICBcJiMzNDt0ZXN0bW9kZSBjbWQgd21pIGNtZF9pZCAlZCBidWYgJXAgYnVmX2xlbiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy01MjQtXHRcdCAgIGNtZF9pZCwgYnVmLCBidWZfbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNTM3LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjUzODpcdFx0YXRoMTBrX3dhcm4oYXIsIFwmIzM0O2ZhaWxlZCB0byB0cmFuc21pdCB3bWkgY29tbWFuZCAodGVzdG1vZGUpOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy01MzktXHRcdFx0ICAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTU1MD1zdGF0aWMgaW50IGF0aDEwa190bV9jbWRfdGx2KHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy01NzctXHRudW1fc2VnbWVudHMgPSB0b3RhbF9ieXRlcyAvIE1BWF9XTUlfVVRGX0xFTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo1Nzg6XHRhci1cdTAwM2V0ZXN0bW9kZS5leHBlY3RlZF9zZXEgPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTU3OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjAyLVx0XHRmdG1fY21kLVx1MDAzZXNlZ19oZHIubGVuID0gX19jcHVfdG9fbGUzMih0b3RhbF9ieXRlcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NjAzOlx0XHRmdG1fY21kLVx1MDAzZXNlZ19oZHIubXNncmVmID0gX19jcHVfdG9fbGUzMihhci1cdTAwM2V0ZXN0bW9kZS5mdG1fbXNncmVmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02MDQtXHRcdHNlZ2luZm8gPSBGSUVMRF9QUkVQKEFUSDEwS19GVE1fU0VHSERSX1RPVEFMX1NFR01FTlRTLCBudW1fc2VnbWVudHMpIHxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjYyMTpcdGFyLVx1MDAzZXRlc3Rtb2RlLmZ0bV9tc2dyZWYmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTYyMi1cdHJldCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTYyOT1pbnQgYXRoMTBrX3RtX2NtZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjY0NDpcdGFyLVx1MDAzZXRlc3Rtb2RlLmV4cGVjdGVkX3NlcSA9IEFUSDEwS19GVE1fU0VHX05PTkU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjQ1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02NjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NjYzOnZvaWQgYXRoMTBrX3Rlc3Rtb2RlX2Rlc3Ryb3koc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjY0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaDoxMDp2b2lkIGF0aDEwa190ZXN0bW9kZV9kZXN0cm95KHN0cnVjdCBhdGgxMGsgKmFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaC0xMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmg9MTM9aW50IGF0aDEwa190bV9jbWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oLTE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oOjE4OnN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMGtfdGVzdG1vZGVfZGVzdHJveShzdHJ1Y3QgYXRoMTBrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaC0xOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmgtNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oOjc6LyogXCYjMzQ7QVBJXCYjMzQ7IGxldmVsIG9mIHRoZSBhdGgxMGsgdGVzdG1vZGUgaW50ZXJmYWNlLiBCdW1wIGl0IGFmdGVyIGV2ZXJ5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaC04LSAqIGluY29tcGF0aWJsZSBpbnRlcmZhY2UgY2hhbmdlLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oPTIwPWVudW0gYXRoMTBrX3RtX2F0dHIge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oLTMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmg6MzQ6LyogQWxsIGF0aDEwayB0ZXN0bW9kZSBpbnRlcmZhY2UgY29tbWFuZHMgc3BlY2lmaWVkIGluXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaC0zNS0gKiBBVEgxMEtfVE1fQVRUUl9DTURcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaD0zNz1lbnVtIGF0aDEwa190bV9jbWQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmg6Mzg6XHQvKiBSZXR1cm5zIHRoZSBzdXBwb3J0ZWQgYXRoMTBrIHRlc3Rtb2RlIGludGVyZmFjZSB2ZXJzaW9uIGluXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaC0zOS1cdCAqIEFUSDEwS19UTV9BVFRSX1ZFUlNJT04uIEFsd2F5cyBndWFyYW50ZWVkIHRvIHdvcmsuIFVzZXIgc3BhY2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oLTQwLVx0ICogdXNlcyB0aGlzIHRvIHZlcmlmeSBpdCYjMzk7cyB1c2luZyB0aGUgY29ycmVjdCB2ZXJzaW9uIG9mIHRoZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmg6NDE6XHQgKiB0ZXN0bW9kZSBpbnRlcmZhY2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oLTQyLVx0ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmgtNjktXHQgKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmg6NzA6XHQgKiBUaGlzIGxlZ2FjeSB0ZXN0bW9kZSBjb21tYW5kIHNoYXJlcyB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgZ2V0LXZlcnNpb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oLTcxLVx0ICogY29tbWFuZC4gVG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGVtLCB3ZSBjaGVjayB3aGV0aGVyIHRoZSBkYXRhIGF0dHJpYnV0ZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLXRsdi5jLTE1LSNpbmNsdWRlIFwmIzM0O3AycC5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS10bHYuYzoxNjojaW5jbHVkZSBcJiMzNDt0ZXN0bW9kZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS10bHYuYy0xNy0jaW5jbHVkZSBcJiMzNDt0eHJ4LmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS10bHYuYz02Mzk9c3RhdGljIHZvaWQgYXRoMTBrX3dtaV90bHZfb3Bfcngoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktdGx2LmMtNjU2LVx0ICoga25vdyB0aGUgVVRGIGZpcm13YXJlIGhhcyBib290ZWQsIG90aGVycyB3ZSBhcmUganVzdCBieXBhc3MgV01JXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS10bHYuYzo2NTc6XHQgKiBldmVudHMgdG8gdGVzdG1vZGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS10bHYuYy02NTgtXHQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS10bHYuYy02NjAtXHRcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfV01JLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktdGx2LmM6NjYxOlx0XHRcdCAgIFwmIzM0O3dtaSB0bHYgdGVzdG1vZGUgY29uc3VtZWQgMHgleFxcblwmIzM0OywgaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktdGx2LmMtNjYyLVx0XHRnb3RvIG91dDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTE3LSNpbmNsdWRlIFwmIzM0O21hYy5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jOjE4OiNpbmNsdWRlIFwmIzM0O3Rlc3Rtb2RlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtMTktI2luY2x1ZGUgXCYjMzQ7d21pLW9wcy5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYz02MDAzPXN0YXRpYyB2b2lkIGF0aDEwa193bWlfMTBfMV9vcF9yeChzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTYwMjAtXHQgKiBrbm93IHRoZSBVVEYgZmlybXdhcmUgaGFzIGJvb3RlZCwgb3RoZXJzIHdlIGFyZSBqdXN0IGJ5cGFzcyBXTUlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NjAyMTpcdCAqIGV2ZW50cyB0byB0ZXN0bW9kZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNjAyMi1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNjAyNC1cdFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19XTUksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jOjYwMjU6XHRcdFx0ICAgXCYjMzQ7d21pIHRlc3Rtb2RlIGNvbnN1bWVkIDB4JXhcXG5cJiMzNDssIGlkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNjAyNi1cdFx0Z290byBvdXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYz02MTM0PXN0YXRpYyB2b2lkIGF0aDEwa193bWlfMTBfMl9vcF9yeChzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTYxNTEtXHQgKiBrbm93IHRoZSBVVEYgZmlybXdhcmUgaGFzIGJvb3RlZCwgb3RoZXJzIHdlIGFyZSBqdXN0IGJ5cGFzcyBXTUlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NjE1MjpcdCAqIGV2ZW50cyB0byB0ZXN0bW9kZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNjE1My1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNjE1NS1cdFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19XTUksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jOjYxNTY6XHRcdFx0ICAgXCYjMzQ7d21pIHRlc3Rtb2RlIGNvbnN1bWVkIDB4JXhcXG5cJiMzNDssIGlkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNjE1Ny1cdFx0Z290byBvdXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYz02MjgzPXN0YXRpYyB2b2lkIGF0aDEwa193bWlfMTBfNF9vcF9yeChzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTYzMDAtXHQgKiBrbm93IHRoZSBVVEYgZmlybXdhcmUgaGFzIGJvb3RlZCwgb3RoZXJzIHdlIGFyZSBqdXN0IGJ5cGFzcyBXTUlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NjMwMTpcdCAqIGV2ZW50cyB0byB0ZXN0bW9kZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNjMwMi1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNjMwNC1cdFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19XTUksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jOjYzMDU6XHRcdFx0ICAgXCYjMzQ7d21pIHRlc3Rtb2RlIGNvbnN1bWVkIDB4JXhcXG5cJiMzNDssIGlkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMtNjMwNi1cdFx0Z290byBvdXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDc6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjczNzMKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA0MzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYGF0aDEwa2AgRHJpdmVyIGluIFRlc3Rtb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBmdXp6aW5nIHRoZSBgYXRoMTBrYCBkcml2ZXIuIFRoZSBjb3JlIG9mIHRoaXMgaXMgdGhlIGBDT05GSUdfTkw4MDIxMV9URVNUTU9ERWAgY29uZmlnIG9wdGlvbi4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRlc3QgbW9kZSBpcyBleHBvc2VkIHRvIHVzZXJzcGFjZSDigJMgYW5kIGl0IGxvb2tzIGxpa2UgaXQgaXMsIHZpYSBgbmw4MDIxMWAuIFRoYXQgb3BlbnMgdXAgc29tZSBpbnRlcmVzdGluZyBwb3NzaWJpbGl0aWVzLgoKSSBzZWUgdGhhdCBgYXRoMTBrYCAqY2FuKiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbi4gVGhlIGludGVyZXN0aW5nIHRoaW5nIGhlcmUgaXMgYGF0aDEwa190bV9ldmVudF93bWlgLiBUaGF0IGZ1bmN0aW9uIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBkcml2ZXIgcmVjZWl2ZXMgYSBXTUkgZXZlbnQgZnJvbSB0aGUgZmlybXdhcmUuIEluIGEgZnV6emluZyBzY2VuYXJpbywgdGhpcyBtZWFucyB0aGF0IHRoZSBmdXp6ZXIgY2FuIGVtdWxhdGUgYSBVU0IgZGV2aWNlIGFuZCBpbmplY3QgdGhlc2UgV01JIGV2ZW50cyBkaXJlY3RseSBpbnRvIHRoZSBkcml2ZXIuCgpUaGUgcGF0Y2ggc2VlbXMgdG8gYWRkIGEgY2hlY2ssIGBhdGgxMGtfdG1faXNfdXRmX2V2ZW50KGNtZF9pZClgLCB3aGljaCBkcm9wcyBub24tVVRGIGV2ZW50cyBzcGVjaWZpY2FsbHkgd2hlbiBpbiB0ZXN0bW9kZS4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbHRlcmluZyBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGZpcm13YXJlIGV2ZW50cy4gVGhhdCYjMzk7cyBhIHRhcmdldCEgQmVjYXVzZSB0aGUgZnV6emVyIGNhbiBlbXVsYXRlIFVTQiBkZXZpY2VzLCBpdCBjYW4gZGVmaW5pdGVseSB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoIGJ5IHNlbmRpbmcgYSBXTUkgZXZlbnQgd2hpbGUgaW4gdGVzdG1vZGUuCgpOb3csIHRoZSBuYXR1cmFsIHF1ZXN0aW9uIGlzLCBoYXMgdGhpcyBhbHJlYWR5IGJlZW4gZnV6emVkPyBJIGtub3cgU3l6a2FsbGVyIGhhcyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMsIHNvIGxldCYjMzk7cyBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGV4aXN0aW5nIGNvdmVyYWdlLiBUaGUgY29kZSBsb2NhdGlvbiBpcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jYC4gR29vZCwgbGV0JiMzOTtzIGV4cGxvcmUuCgpgYXRoMTBrX3RtX2V2ZW50X3dtaWAgaXMgdGhlIG1haW4gdGFyZ2V0LiBJdCYjMzk7cyBjYWxsZWQgYnkgYGF0aDEwa193bWlfMTBfMV9vcF9yeGAsIGBhdGgxMGtfd21pXzEwXzJfb3BfcnhgLCBgYXRoMTBrX3dtaV8xMF80X29wX3J4YCwgYW5kIGBhdGgxMGtfd21pX3Rsdl9vcF9yeGAuIFRoZXNlIGFyZSBhbGwgUlggaGFuZGxlcnMgZm9yIFdNSSBldmVudHMgY29taW5nIGZyb20gdGhlIGZpcm13YXJlLiBQcmVjaXNlbHkgd2hhdCB0aGUgZnV6emVyIGNhbiBjb250cm9sIGJ5IGVtdWxhdGluZyB0aGUgVVNCIGRldmljZSEKClNvLCB0aGUgY29uY2x1c2lvbiBpcyB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgZnV6emFibGUgYW5kIG9mZmVycyBhIG5ldyBhdHRhY2sgc3VyZmFjZS4gVGltZSB0byBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMgZm9yIGZ1enppbmcgZm9jdXMuIENsZWFybHksIGBhdGgxMGtfdG1fZXZlbnRfd21pYCBpcyB0aGUgbWFpbiBvbmUuIFRoZSBzdGF0aWMgaGVscGVyIGBhdGgxMGtfdG1faXNfdXRmX2V2ZW50YCBpc24mIzM5O3QgYXMgY3JpdGljYWwsIHNvIEkgd29uJiMzOTt0IGZvY3VzIG9uIGl0LiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIHNpZ25hdHVyZSBvZiBgYXRoMTBrX3RtX2V2ZW50X3dtaWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Ym9vbCBhdGgxMGtfdG1fZXZlbnRfd21pJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTE1OT1zdGF0aWMgYm9vbCBhdGgxMGtfdG1faXNfdXRmX2V2ZW50KHUzMiBjbWRfaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTE2OS0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxNzA6Ym9vbCBhdGgxMGtfdG1fZXZlbnRfd21pKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTE3MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oPTEwPXZvaWQgYXRoMTBrX3Rlc3Rtb2RlX2Rlc3Ryb3koc3RydWN0IGF0aDEwayAqYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oOjEyOmJvb2wgYXRoMTBrX3RtX2V2ZW50X3dtaShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMTMtaW50IGF0aDEwa190bV9jbWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oPTE4PXN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMGtfdGVzdG1vZGVfZGVzdHJveShzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmg6MjI6c3RhdGljIGlubGluZSBib29sIGF0aDEwa190bV9ldmVudF93bWkoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBjbWRfaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMjMtXHRcdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODkzMQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBhdGgxMGtfdG1fZXZlbnRfd21pYCBGdW5jdGlvbiBmb3IgUmVzZWFyY2gqKgoKT2theSwgc28gSSBzZWUgdGhhdCB0aGUgYGF0aDEwa190bV9ldmVudF93bWlgIGZ1bmN0aW9uIGlzIGRlZmluZWQgYW5kICpub3QqIHN0YXRpYywgYW5kIGl0JiMzOTtzIGV2ZW4gZXhwb3J0ZWQgb3IgYXQgbGVhc3QsIG5vdCBzdGF0aWMgaW4gYHRlc3Rtb2RlLmNgLiBJbnRlcmVzdGluZy4gQW5kLCBoYW5nIG9uLi4uaXQmIzM5O3MgKmFsc28qIGNhbGxlZCBmcm9tIGB3bWkuY2AgYW5kIGB3bWktdGx2LmNgLiBUaGlzIG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gLSBhIGdvb2QsIGNlbnRyYWwgZm9jdXMgcG9pbnQgZm9yIGRpZ2dpbmcgaW50byB0aGUgQXRoZXJvcyBkcml2ZXImIzM5O3MgdGVzdCBtb2RlIGZ1bmN0aW9uYWxpdHkuCgpSaWdodCwgc28gdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgZW52aXJvbm1lbnQgc2V0IHVwIHJpZ2h0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTttIGFzc3VtaW5nLCBvYnZpb3VzbHksIHRoYXQgYENPTkZJR19BVEgxMEtgIGlzIG5lZWRlZCwgYnV0IEkgc2hvdWxkIGFsc28gZW5zdXJlIGBDT05GSUdfQVRIMTBLX1VTQmAgaXMgZW5hYmxlZCwganVzdCBpbiBjYXNlIEkgd2FudCB0byBleHBsb3JlIFVTQiBmdXp6aW5nLiBPZiBjb3Vyc2UsIGBDT05GSUdfTkw4MDIxMV9URVNUTU9ERWAgaXMgY3JpdGljYWwgYmVjYXVzZSBpdCBkaXJlY3RseSBlbmFibGVzIHRoZSBgdGVzdG1vZGUuY2AgZmlsZS4KCk5vdywgbGV0IG1lIGp1c3QgY29uZmlybSB0aG9zZSBjb25maWcgb3B0aW9ucyBieSBxdWlja2x5IHJlZmVyZW5jaW5nIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEkmIzM5O20gd29ya2luZyB3aXRoIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBBVEgxMEsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMEtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyA4MDIuMTFhYyB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjE1OmNvbmZpZyBBVEgxMEtfQ0VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0xNi1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzoxODpjb25maWcgQVRIMTBLX1BDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGgxMGsgUENJIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6MjQ6Y29uZmlnIEFUSDEwS19BSEJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGgxMGsgQUhCIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6MzA6Y29uZmlnIEFUSDEwS19TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMzEtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDEwayBTRElPIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6MzY6Y29uZmlnIEFUSDEwS19VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0zNy1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoMTBrIFVTQiBzdXBwb3J0IChFWFBFUklNRU5UQUwpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjQzOmNvbmZpZyBBVEgxMEtfU05PQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gYXRoMTBrIFNOT0Mgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy01NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo1Njpjb25maWcgQVRIMTBLX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNTctXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoMTBrIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy02My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo2NDpjb25maWcgQVRIMTBLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy02NS1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGgxMGsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjcyOmNvbmZpZyBBVEgxMEtfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTczLVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy03Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo3ODpjb25maWcgQVRIMTBLX1NQRUNUUkFMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNzktXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoMTBrIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy04NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo4Njpjb25maWcgQVRIMTBLX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy04Ny1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGgxMGsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjkzOmNvbmZpZyBBVEgxMEtfREZTX0NFUlRJRklFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTk0LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIERGUyBzdXBwb3J0IGZvciBjZXJ0aWZpZWQgcGxhdGZvcm1zXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNDk1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ2hlY2tpbmcgYENPTkZJR19OTDgwMjExX1RFU1RNT0RFYCAtIE15IEluaXRpYWwgQXNzZXNzbWVudCoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgc3RyYWlnaHQgaW4uIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gdmVyaWZ5IHRoZSBzdGF0dXMgb2YgYENPTkZJR19OTDgwMjExX1RFU1RNT0RFYC4gSXQmIzM5O3MgYSBrZXkga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBhbmQgaXRzIHByZXNlbmNlIG9yIGFic2VuY2UgZnVuZGFtZW50YWxseSBzaGFwZXMgaG93IEkmIzM5O20gZ29pbmcgdG8gYXBwcm9hY2ggdGhpcyBpbnZlc3RpZ2F0aW9uIG9yIGRlYnVnZ2luZyBzZXNzaW9uLiBJIGluc3RhbnRseSB0aGluayBvZiBpdHMgaW1wbGljYXRpb25zIOKAkyBkb2VzIGl0IHVubG9jayBzcGVjaWZpYywgcG90ZW50aWFsbHkgcmlza3ksIHRlc3QgaW50ZXJmYWNlcyBpbiBubDgwMjExPyBEb2VzIGl0IGltcGFjdCB0aGUgd2F5IGNlcnRhaW4gd2lyZWxlc3MgZHJpdmVycyBiZWhhdmU/IEFuZCBjcml0aWNhbGx5LCBpcyB0aGlzIGEgZGV2ZWxvcG1lbnQgc3lzdGVtIG9yIGEgcHJvZHVjdGlvbiBlbnZpcm9ubWVudD8gVGhhdCBpbW1lZGlhdGVseSBmcmFtZXMgdGhlIGxldmVsIG9mIGNhdXRpb24gSSYjMzk7bSBnb2luZyB0byBhcHBseS4gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyB0aGUgcG90ZW50aWFsIGZvciB1bmludGVuZGVkIHNpZGUgZWZmZWN0cyBpZiB0aGUgc2V0dGluZyBpcyBlbmFibGVkLCBhbmQgdGhlIGNvbnN0cmFpbnRzIGlmIGl0JiMzOTtzIGRpc2FibGVkLCBiZWNhdXNlIGJvdGggaGF2ZSB2ZXJ5IGNsZWFyIGltcGFjdHMgb24gZGlhZ25vc3RpYyBvcHRpb25zLiBJdCYjMzk7cyB0aGUgbHluY2hwaW4sIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8ga25vdyBiZWZvcmUgbW92aW5nIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBOTDgwMjExX1RFU1RNT0RFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9LY29uZmlnPTM2PWlmIENGRzgwMjExXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0zNy1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjM4OmNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7bmw4MDIxMSB0ZXN0bW9kZSBjb21tYW5kXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwODQ2CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBXaXJlbGVzcyBEcml2ZXIgQ29uZmlndXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgQVRIMTBLYCwgYEFUSDEwS19VU0JgLCBhbmQgYE5MODAyMTFfVEVTVE1PREVgLiBJbW1lZGlhdGVseSwgSSYjMzk7bSBub3RpbmcgdGhhdCBgQVRIMTBLX1VTQmAgaXMgcHJlc2VudCwgYnV0IEkgbmVlZCB0byBiZSBzdXJlLiBJJiMzOTttIHJlY2FsbGluZyB0aGF0IGBBVEgxMEtfVVNCYCBsaWtlbHkgaGFzIGEgZGVwZW5kZW5jeSBvbiBgVVNCYCBpdHNlbGYsIHNvIEkgc2hvdWxkIGNvbmZpcm0gdGhhdCByZWxhdGlvbnNoaXAuIExldCYjMzk7cyBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIGZvciBgQVRIMTBLX1VTQmAgdG8gZW5zdXJlIHRoaXMgaXMgdW5kZXJzdG9vZCBjb21wbGV0ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVRIMTBLX1VTQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZz0zMD1jb25maWcgQVRIMTBLX1NESU9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6MzY6Y29uZmlnIEFUSDEwS19VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0zNy1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoMTBrIFVTQiBzdXBwb3J0IChFWFBFUklNRU5UQUwpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjAxCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIEF0aGVyb3MgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIGF0aDEwayBkcml2ZXIgaXMgY29uZmlndXJlZC4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhlIGJhc2ljcywgc28gSSYjMzk7bSBoZWFkaW5nIGRpcmVjdGx5IHRvIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBsaW5lIDM2LiBUaGF0JiMzOTtzIGEgcmVhc29uYWJsZSBwbGFjZSB0byBzdGFydCBnZXR0aW5nIGEgZmVlbCBmb3IgdGhlIGZ1bmRhbWVudGFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyIGFuZCBob3cgdGhleSYjMzk7cmUgc3RydWN0dXJlZC4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgYW5kIHRoZSBvdmVyYWxsIGRlc2lnbiBwaGlsb3NvcGh5IGJlaGluZCB0aGUgbW9kdWxlIGNvbmZpZ3VyYXRpb24uIEtub3dpbmcgdGhlIEtjb25maWcgaXMga2V5IHRvIGRlYnVnZ2luZyBidWlsZCBpc3N1ZXMsIHVuZGVyc3RhbmRpbmcgbW9kdWxlIGJlaGF2aW9yIGFuZCBldmVuIGFkZGluZyBmZWF0dXJlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDMwOlx0Y29uZmlnIEFUSDEwS19TRElPXG4gIDMxOlx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDEwayBTRElPIHN1cHBvcnRcJiMzNDtcbiAgMzI6XHRcdGRlcGVuZHMgb24gQVRIMTBLIFx1MDAyNlx1MDAyNiBNTUNcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciBTRElPL01NQyBidXMuXG4gIDM1Olx0XG4gIDM2Olx0Y29uZmlnIEFUSDEwS19VU0JcbiAgMzc6XHRcdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoMTBrIFVTQiBzdXBwb3J0IChFWFBFUklNRU5UQUwpXCYjMzQ7XG4gIDM4Olx0XHRkZXBlbmRzIG9uIEFUSDEwSyBcdTAwMjZcdTAwMjYgVVNCXG4gIDM5Olx0XHRoZWxwXG4gIDQwOlx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIFVTQiBidXMuIEN1cnJlbnRseVxuICA0MTpcdFx0ICB3b3JrIGluIHByb2dyZXNzIGFuZCB3aWxsIG5vdCBmdWxseSB3b3JrLlxuICA0MjpcdFxuICA0MzpcdGNvbmZpZyBBVEgxMEtfU05PQ1xuICA0NDpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gYXRoMTBrIFNOT0Mgc3VwcG9ydFwmIzM0O1xuICA0NTpcdFx0ZGVwZW5kcyBvbiBBVEgxMEtcbiAgNDY6XHRcdGRlcGVuZHMgb24gQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVFxuICA0NzpcdFx0ZGVwZW5kcyBvbiBRQ09NX1NNRU1cbiAgNDg6XHRcdGRlcGVuZHMgb24gUUNPTV9SUFJPQ19DT01NT04gfHwgUUNPTV9SUFJPQ19DT01NT049blxuICA0OTpcdFx0c2VsZWN0IFBPV0VSX1NFUVVFTkNJTkdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE3MjgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZXBlbmRlbmN5IERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBBVEgxMEtfVVNCYCB0aGluZywgYW5kIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYnVpbHQgb24gYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGRlcGVuZGVuY3kgY2hhaW4uIEZpcnN0LCBgQVRIMTBLX1VTQmAgbmVlZHMgYm90aCBgQVRIMTBLYCBhbmQgYFVTQmAuIFByZXR0eSBsb2dpY2FsLCByaWdodD8gSXQmIzM5O3MgYSBVU0IgaW1wbGVtZW50YXRpb24gb2Ygc29tZXRoaW5nIGJ1aWx0IG9uIGBBVEgxMEtgLiBOb3csIHRoZSBpbnRlcmVzdGluZyBiaXQuIGBBVEgxMEtgIGl0c2VsZiwgdGhlIGNvcmUgb2YgdGhpcywgcmVsaWVzIG9uIGBNQUM4MDIxMWAgYW5kIGBIQVNfSU9NRU1gLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IGBNQUM4MDIxMWAgaXMgdGhlIDgwMi4xMSBzdGFjayBpdOKAmXMgYnVpbHQgb24sIGFuZCBgSEFTX0lPTUVNYCBpcyBsaWtlbHkgY3J1Y2lhbCBmb3IgdGhlIGhhcmR3YXJlIGludGVyYWN0aW9uLgoKVGltZSB0byBkcmlsbCBkb3duIGFuZCBjaGVjayB0aGUgYEFUSDEwS2AgZGVwZW5kZW5jaWVzIGRpcmVjdGx5LiBHb3R0YSBtYWtlIHN1cmUgdGhvc2UgZm91bmRhdGlvbnMgYXJlIHNvbGlkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAgMjpcdGNvbmZpZyBBVEgxMEtcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgODAyLjExYWMgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICAgNTpcdFx0c2VsZWN0IEFUSF9DT01NT05cbiAgIDY6XHRcdHNlbGVjdCBDUkMzMlxuICAgNzpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gICA4Olx0XHRzZWxlY3QgQVRIMTBLX0NFXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cbiAgMTE6XHRcdCAgQXRoZXJvcyBJRUVFIDgwMi4xMWFjIGZhbWlseSBvZiBjaGlwc2V0cy5cbiAgMTI6XHRcbiAgMTM6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBhdGgxMGsuXG4gIDE0Olx0XG4gIDE1Olx0Y29uZmlnIEFUSDEwS19DRVxuICAxNjpcdFx0Ym9vbFxuICAxNzpcdFxuICAxODpcdGNvbmZpZyBBVEgxMEtfUENJXG4gIDE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDEwayBQQ0kgc3VwcG9ydFwmIzM0O1xuICAyMDpcdFx0ZGVwZW5kcyBvbiBBVEgxMEsgXHUwMDI2XHUwMDI2IFBDSVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjI5NQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDI2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQVRIMTBLIERyaXZlciBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoZSBgQVRIMTBLYCBkcml2ZXIgaXMgcmVsaWFudCBvbiBgTUFDODAyMTFgIGFuZCBgSEFTX0RNQWAsIHNvIHRob3NlIGFyZSBwcmVyZXF1aXNpdGVzLiBUbyBlbmFibGUgdGhlIHJlbGV2YW50IGZ1bmN0aW9uYWxpdHksIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlndXJlIGBBVEgxMEtgLCBgQVRIMTBLX1VTQmAsIGFuZCBgTkw4MDIxMV9URVNUTU9ERWAuCgpIYW5nIG9uLCBgQVRIMTBLX1VTQmAgaXMgbWFya2VkIGFzIGV4cGVyaW1lbnRhbCwgYnV0IHRoZSBrZXJuZWwgaW5jbHVkZXMgaXQsIGFuZCwgY3J1Y2lhbGx5LCBzeXprYWxsZXIgY2FuIHRhcmdldCBpdCBmb3IgZnV6emluZy4gVGhpcyBpcyBpbnRlcmVzdGluZy4gVGhlIHBhdGNoIEkmIzM5O20gbG9va2luZyBhdCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgYGF0aDEwa190bV9ldmVudF93bWlgLiBTbyB0aGUgY29yZSBvZiBteSBhbmFseXNpcyBjb21lcyBkb3duIHRvIGhvdyByZWFjaGFibGUgdGhlIGZ1bmN0aW9uIGlzLgoKVGhlIGtleSBpcyBkZXRlcm1pbmluZyB0aGUgY2FsbCBmbG93LiBJdCBsb29rcyBsaWtlIHdoZW4gdGhlIGZ1enplciBzdWNjZXNzZnVsbHkgZW11bGF0ZXMgdGhlIFVTQiBkZXZpY2UgYW5kIHRoZW4gc2VuZHMgV01JIGV2ZW50cywgdGhlIGZ1bmN0aW9uIGBhdGgxMGtfd21pXzEwXzFfb3BfcnhgIChvciBhIHNpbWlsYXIgdmFyaWFudCkgZ2V0cyBpbnZva2VkLiBBbmQgdGhhdCwgaW4gdHVybiwgY2FsbHMgYGF0aDEwa190bV9ldmVudF93bWlgLiBTbyB3ZSBoYXZlIGEgcGF0aC4KCkJ1dCwgYSBjbG9zZXIgbG9vayBhdCBgYXRoMTBrX3RtX2V2ZW50X3dtaWAgcmV2ZWFscyBpdCYjMzk7cyBvbmx5IGV4ZWN1dGVkIHVuZGVyIHNwZWNpZmljIGNvbmRpdGlvbnM6IGVpdGhlciBpZiBgYXItJmd0O3Rlc3Rtb2RlLnV0Zl9tb25pdG9yYCBpcyB0cnVlIG9yIGlmIGl0IGlzIGEgdGVzdG1vZGUgZXZlbnQuIFRoaXMgaGlnaGxpZ2h0cyBzb21lIGltcG9ydGFudCBwcmVjb25kaXRpb25zIGZvciB0cmlnZ2VyaW5nIHRoaXMgY29kZXBhdGguIFNvIG5vdyBJIG5lZWQgdG8gZGl2ZSBpbnRvIGBhdGgxMGtfd21pXzEwXzFfb3BfcnhgIHRvIHVuZGVyc3RhbmQgcHJlY2lzZWx5IHVuZGVyIHdoYXQgY29uZGl0aW9ucyBpdCBjYWxscyBgYXRoMTBrX3RtX2V2ZW50X3dtaWAuIFRoaXMgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgcG90ZW50aWFsIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MDAzLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzYwMDM6XHRzdGF0aWMgdm9pZCBhdGgxMGtfd21pXzEwXzFfb3Bfcngoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXG42MDA0Olx0e1xuNjAwNTpcdFx0c3RydWN0IHdtaV9jbWRfaGRyICpjbWRfaGRyO1xuNjAwNjpcdFx0ZW51bSB3bWlfMTB4X2V2ZW50X2lkIGlkO1xuNjAwNzpcdFx0Ym9vbCBjb25zdW1lZDtcbjYwMDg6XHRcbjYwMDk6XHRcdGNtZF9oZHIgPSAoc3RydWN0IHdtaV9jbWRfaGRyICopc2tiLVx1MDAzZWRhdGE7XG42MDEwOlx0XHRpZCA9IE1TKF9fbGUzMl90b19jcHUoY21kX2hkci1cdTAwM2VjbWRfaWQpLCBXTUlfQ01EX0hEUl9DTURfSUQpO1xuNjAxMTpcdFxuNjAxMjpcdFx0aWYgKHNrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCB3bWlfY21kX2hkcikpID09IE5VTEwpXG42MDEzOlx0XHRcdGdvdG8gb3V0O1xuNjAxNDpcdFxuNjAxNTpcdFx0dHJhY2VfYXRoMTBrX3dtaV9ldmVudChhciwgaWQsIHNrYi1cdTAwM2VkYXRhLCBza2ItXHUwMDNlbGVuKTtcbjYwMTY6XHRcbjYwMTc6XHRcdGNvbnN1bWVkID0gYXRoMTBrX3RtX2V2ZW50X3dtaShhciwgaWQsIHNrYik7XG42MDE4Olx0XG42MDE5Olx0XHQvKiBSZWFkeSBldmVudCBtdXN0IGJlIGhhbmRsZWQgbm9ybWFsbHkgYWxzbyBpbiBVVEYgbW9kZSBzbyB0aGF0IHdlXG42MDIwOlx0XHQgKiBrbm93IHRoZSBVVEYgZmlybXdhcmUgaGFzIGJvb3RlZCwgb3RoZXJzIHdlIGFyZSBqdXN0IGJ5cGFzcyBXTUlcbjYwMjE6XHRcdCAqIGV2ZW50cyB0byB0ZXN0bW9kZS5cbjYwMjI6XHRcdCAqL1xuNjAyMzpcdFx0aWYgKGNvbnN1bWVkIFx1MDAyNlx1MDAyNiBpZCAhPSBXTUlfMTBYX1JFQURZX0VWRU5USUQpIHtcbjYwMjQ6XHRcdFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19XTUksXG42MDI1Olx0XHRcdFx0ICAgXCYjMzQ7d21pIHRlc3Rtb2RlIGNvbnN1bWVkIDB4JXhcXG5cJiMzNDssIGlkKTtcbjYwMjY6XHRcdFx0Z290byBvdXQ7XG42MDI3Olx0XHR9XG42MDI4Olx0XG42MDI5Olx0XHRzd2l0Y2ggKGlkKSB7XG42MDMwOlx0XHRjYXNlIFdNSV8xMFhfTUdNVF9SWF9FVkVOVElEOlxuNjAzMTpcdFx0XHRhdGgxMGtfd21pX2V2ZW50X21nbXRfcngoYXIsIHNrYik7XG42MDMyOlx0XHRcdC8qIG1nbXRfcngoKSBvd25zIHRoZSBza2Igbm93ISAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzU0NwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFscmVhZHkgZGVlcCBpbiB0aGUgd2VlZHMgb2YgdGhpcyBhdGgxMGsgZHJpdmVyOgoKKipBbmFseXppbmcgYXRoMTBrX3RtX2V2ZW50X3dtaSoqCgpSaWdodCwgc28gYGF0aDEwa190bV9ldmVudF93bWlgLiBUaGF0JiMzOTtzIHRoZSBmdW5jdGlvbiBjYWxsZWQgZm9yICpldmVyeSBzaW5nbGUqIFdNSSAoV2lyZWxlc3MgTWFuYWdlbWVudCBJbnRlcmZhY2UpIGV2ZW50LiBUaGF0JiMzOTtzIGEga2V5IG9ic2VydmF0aW9uIOKAkyB1bmRlcnN0YW5kaW5nIHRoYXQgaXQmIzM5O3MgdGhlIGNlbnRyYWwgcG9pbnQgZm9yIFdNSSBldmVudCBoYW5kbGluZyBnaXZlcyBtZSBhbiBpbXBvcnRhbnQgcG9pbnQgb2YgcmVmZXJlbmNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyAqaW5zaWRlKiB0aGF0IGZ1bmN0aW9uIGJlY2F1c2UgaXTigJlzIGhhbmRsaW5nIGV2ZXJ5IGV2ZW50LCBzbyBpdCYjMzk7cyBjcml0aWNhbCB0byBwZXJmb3JtYW5jZSBhbmQgZGVidWdnYWJpbGl0eS4gSSBuZWVkIHRvIG5vdyBmb2N1cyBvbiB0aGUgaW50ZXJuYWwgbG9naWMgdG8gZ2V0IHRoZSBwaWN0dXJlIG9mIHdoYXQmIzM5O3MgaGFwcGVuaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTcwOlx0Ym9vbCBhdGgxMGtfdG1fZXZlbnRfd21pKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIDE3MTpcdHtcbiAxNzI6XHRcdGJvb2wgY29uc3VtZWQ7XG4gMTczOlx0XG4gMTc0Olx0XHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLFxuIDE3NTpcdFx0XHQgICBcJiMzNDt0ZXN0bW9kZSBldmVudCB3bWkgY21kX2lkICVkIHNrYiAlcCBza2ItXHUwMDNlbGVuICVkXFxuXCYjMzQ7LFxuIDE3NjpcdFx0XHQgICBjbWRfaWQsIHNrYiwgc2tiLVx1MDAzZWxlbik7XG4gMTc3Olx0XG4gMTc4Olx0XHRhdGgxMGtfZGJnX2R1bXAoYXIsIEFUSDEwS19EQkdfVEVTVE1PREUsIE5VTEwsIFwmIzM0O1wmIzM0Oywgc2tiLVx1MDAzZWRhdGEsIHNrYi1cdTAwM2VsZW4pO1xuIDE3OTpcdFxuIDE4MDpcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4gMTgxOlx0XG4gMTgyOlx0XHRpZiAoIWFyLVx1MDAzZXRlc3Rtb2RlLnV0Zl9tb25pdG9yKSB7XG4gMTgzOlx0XHRcdGNvbnN1bWVkID0gZmFsc2U7XG4gMTg0Olx0XHRcdGdvdG8gb3V0O1xuIDE4NTpcdFx0fVxuIDE4NjpcdFxuIDE4NzpcdFx0LyogT25seSB0ZXN0bW9kZS5jIHNob3VsZCBiZSBoYW5kbGluZyBldmVudHMgZnJvbSB1dGYgZmlybXdhcmUsXG4gMTg4Olx0XHQgKiBvdGhlcndpc2UgYWxsIHNvcnQgb2YgcHJvYmxlbXMgd2lsbCBhcmlzZSBhcyBtYWM4MDIxMSBvcGVyYXRpb25zXG4gMTg5Olx0XHQgKiBhcmUgbm90IGluaXRpYWxpc2VkLlxuIDE5MDpcdFx0ICovXG4gMTkxOlx0XHRjb25zdW1lZCA9IHRydWU7XG4gMTkyOlx0XG4gMTkzOlx0XHRpZiAoIWF0aDEwa190bV9pc191dGZfZXZlbnQoY21kX2lkKSkge1xuIDE5NDpcdFx0XHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLFxuIDE5NTpcdFx0XHRcdCAgIFwmIzM0O3Rlc3Rtb2RlIGRyb3Agbm9uLXV0ZiBldmVudCBjbWRfaWQgJXVcXG5cJiMzNDssIGNtZF9pZCk7XG4gMTk2Olx0XHRcdGdvdG8gb3V0O1xuIDE5NzpcdFx0fVxuIDE5ODpcdFxuIDE5OTpcdFx0aWYgKGFyLVx1MDAzZXRlc3Rtb2RlLmV4cGVjdGVkX3NlcSAhPSBBVEgxMEtfRlRNX1NFR19OT05FKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDMwNgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDI5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipWdWxuZXJhYmlsaXR5IEFzc2Vzc21lbnQ6IFVURiBNb25pdG9yIGluIGF0aDEwayBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuIFRoZSBVVEYgbW9uaXRvciBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHksIGlzIG9ubHkgYWN0aXZhdGVkIHdoZW4gYGFyLSZndDt0ZXN0bW9kZS51dGZfbW9uaXRvcmAgaXMgc2V0IHRvIHRydWUuIFRoaXMgaXMgY29udHJvbGxlZCBieSB0aGUgYGF0aDEwa190bV9jbWRfdXRmX3N0YXJ0YCBmdW5jdGlvbiwgd2hpY2ggaXMgdHJpZ2dlcmVkIHRocm91Z2ggYSBubDgwMjExIHRlc3Rtb2RlIGNvbW1hbmQuIFRoZSBiZWF1dHkgKGZyb20gYSBmdXp6ZXImIzM5O3MgcGVyc3BlY3RpdmUhKSBpcyB0aGF0IGZ1enppbmcgbmw4MDIxMSB0ZXN0bW9kZSBjb21tYW5kcyBpcyBzdHJhaWdodGZvcndhcmQsIGVzcGVjaWFsbHkgd2hlbiBwYWlyZWQgd2l0aCBVU0ItYmFzZWQgV01JIGV2ZW50IGluamVjdGlvbnMuIFRoYXQmIzM5O3MgYSBsb3cgYmFycmllciB0byBlbnRyeSBmb3IgcG90ZW50aWFsIGF0dGFja3MuCgpUaGUga2V5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBoZXJlLCB0aGUgcHJpbWUgJiMzNDthdHRhY2sgc3VyZmFjZXMsJiMzNDsgYXJlIGBhdGgxMGtfdG1fZXZlbnRfd21pYCBzaW5jZSB0aGUgcGF0Y2ggbW9kaWZpZXMgaXQuIEFsc28sIGBhdGgxMGtfdG1fY21kX3V0Zl9zdGFydGAgaXMgaW1wb3J0YW50IHRvIGhpdCB0aGUgc2V0dXAgcGF0aC4gSSBzaG91bGQgYWxzbyBub3RlIEkgbmVlZCB0byBlbnN1cmUgdGhlIGZ1enplciBjYW4gdHJpZ2dlciBgYXRoMTBrX3RtX2NtZF91dGZfc3RvcGAsIHNpbmNlIHRoaXMgbXVzdCBiZSBwcmVzZW50IG9uIHRoZSBmdXp6ZXIgYXMgd2VsbC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBpZiB0aGUgYGF0aDEwa190bV9jbWRfdXRmX3N0YXJ0YCBmdW5jdGlvbiBpcyBzdGF0aWM7IGl0IHdvdWxkIG1ha2UgdGhpbmdzIG1vcmUgY29tcGxpY2F0ZWQgaWYgaXQgd2VyZSwgYnV0IEkgY2FuIHdvcmsgYXJvdW5kIHRoYXQuIFVsdGltYXRlbHksIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBtYWtlIHN1cmUgdGhlIGZ1enplciBoaXRzIGBhdGgxMGtfdG1fZXZlbnRfd21pYCwgYnV0IGluIG9yZGVyIHRvIGRvIHRoYXQsIEkmIzM5O2xsIGhhdmUgdG8gY29uc2lkZXIgaG93IHRvIHByZXBhcmUgdGhlIHN0YXRlIHdpdGggYGF0aDEwa190bV9jbWRfdXRmX3N0YXJ0YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTBrX3RtX2NtZF91dGZfc3RhcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9MjgzPXN0YXRpYyBpbnQgYXRoMTBrX3RtX2ZldGNoX2Zpcm13YXJlKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MzM2OnN0YXRpYyBpbnQgYXRoMTBrX3RtX2NtZF91dGZfc3RhcnQoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzM3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9NjI5PWludCBhdGgxMGtfdG1fY21kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02NTItXHRjYXNlIEFUSDEwS19UTV9DTURfVVRGX1NUQVJUOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjY1MzpcdFx0cmV0dXJuIGF0aDEwa190bV9jbWRfdXRmX3N0YXJ0KGFyLCB0Yik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjU0LVx0Y2FzZSBBVEgxMEtfVE1fQ01EX1VURl9TVE9QOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwODowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTMzNgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbiwgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBTdGF0aWMgTmF0dXJlIG9mIGEgS2VybmVsIENvbW1hbmQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMga2VybmVsIGNvZGUgYW5kIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgaXQmIzM5O3MgKnN0YXRpYyouIFRoaXMgYGF0aDEwa190bV9jbWRgIGZ1bmN0aW9uLi4uaXQmIzM5O3MgdGhlIGV4cG9ydGVkIG9uZSwgdGhlIG9uZSB0aGF0JiMzOTtzIGFjdHVhbGx5IHZpc2libGUgYW5kIHVzYWJsZSBvdXRzaWRlIHRoZSBtb2R1bGUuIFRoYXQmIzM5O3MgYSBrZXkgb2JzZXJ2YXRpb24uIEtub3dpbmcgaXQmIzM5O3Mgc3RhdGljIGltcGxpZXMgY2VydGFpbiB0aGluZ3MgYWJvdXQgaXRzIHNjb3BlIGFuZCBwb3RlbnRpYWwgZm9yIG1vZGlmaWNhdGlvbiwgb3IsIGNvbnZlcnNlbHksIGhvdyAqbGltaXRlZCogaXQgaXMgaW4gaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbCwgYmFzZWQgb24gaXRzIGRlZmluaXRpb24uIEdpdmVuIG15IGV4cGVydGlzZSwgSSBhbSBsb29raW5nIGZvciB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQ6IGFjY2VzcyBjb250cm9sLCBvcHRpbWl6YXRpb24sIHBvdGVudGlhbCBpc3N1ZXMgcmVnYXJkaW5nIG1vZHVsYXJpdHkuIEl0IHdpbGwgbGlrZWx5IGltcGFjdCBob3cgSSBpbnRlZ3JhdGUgaXQgaW50byB0aGUgbGFyZ2VyIHN5c3RlbS4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyAqdGhlKiBleHBvcnRlZCBjb21tYW5kIGlzIGltcG9ydGFudCB0b28sIGJlY2F1c2UgaXQmIzM5O3MgdGhlIGdhdGV3YXkgZm9yIGNlcnRhaW4gZGV2aWNlIGNvbW1hbmRzLiBUaW1lIHRvIGRpZyBkZWVwZXIgYW5kIHNlZSB3aGF0IHRob3NlIGNvbW1hbmRzIGFyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTBrX3RtX2NtZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTQ3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTBrX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTk1MTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjk1MTk6XHRDRkc4MDIxMV9URVNUTU9ERV9DTUQoYXRoMTBrX3RtX2NtZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTUyMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9MTcwPWJvb2wgYXRoMTBrX3RtX2V2ZW50X3dtaShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMjA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjIxMDpzdGF0aWMgaW50IGF0aDEwa190bV9jbWRfZ2V0X3ZlcnNpb24oc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMjExLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9MjgzPXN0YXRpYyBpbnQgYXRoMTBrX3RtX2ZldGNoX2Zpcm13YXJlKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MzM2OnN0YXRpYyBpbnQgYXRoMTBrX3RtX2NtZF91dGZfc3RhcnQoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzM3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ0MzpzdGF0aWMgdm9pZCBfX2F0aDEwa190bV9jbWRfdXRmX3N0b3Aoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDQ0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ3MDpzdGF0aWMgaW50IGF0aDEwa190bV9jbWRfdXRmX3N0b3Aoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDcxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ4MzpcdF9fYXRoMTBrX3RtX2NtZF91dGZfc3RvcChhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDg0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00OTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDk0OnN0YXRpYyBpbnQgYXRoMTBrX3RtX2NtZF93bWkoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDk1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNTQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjU1MDpzdGF0aWMgaW50IGF0aDEwa190bV9jbWRfdGx2KHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTU1MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTYyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo2Mjk6aW50IGF0aDEwa190bV9jbWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjMwLVx0XHQgIHZvaWQgKmRhdGEsIGludCBsZW4pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTY0OC1cdFx0aWYgKCF0YltBVEgxMEtfVE1fQVRUUl9EQVRBXSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo2NDk6XHRcdFx0cmV0dXJuIGF0aDEwa190bV9jbWRfZ2V0X3ZlcnNpb24oYXIsIHRiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02NTAtXHRcdGVsc2UgLyogQVRIMTBLX1RNX0NNRF9UTFYgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo2NTE6XHRcdFx0cmV0dXJuIGF0aDEwa190bV9jbWRfdGx2KGFyLCB0Yik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjUyLVx0Y2FzZSBBVEgxMEtfVE1fQ01EX1VURl9TVEFSVDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo2NTM6XHRcdHJldHVybiBhdGgxMGtfdG1fY21kX3V0Zl9zdGFydChhciwgdGIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTY1NC1cdGNhc2UgQVRIMTBLX1RNX0NNRF9VVEZfU1RPUDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo2NTU6XHRcdHJldHVybiBhdGgxMGtfdG1fY21kX3V0Zl9zdG9wKGFyLCB0Yik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjU2LVx0Y2FzZSBBVEgxMEtfVE1fQ01EX1dNSTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo2NTc6XHRcdHJldHVybiBhdGgxMGtfdG1fY21kX3dtaShhciwgdGIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTY1OC1cdGRlZmF1bHQ6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTY2Mz12b2lkIGF0aDEwa190ZXN0bW9kZV9kZXN0cm95KHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02NzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NjcyOlx0X19hdGgxMGtfdG1fY21kX3V0Zl9zdG9wKGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02NzMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oPTEyPWJvb2wgYXRoMTBrX3RtX2V2ZW50X3dtaShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmg6MTM6aW50IGF0aDEwa190bV9jbWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMTQtXHRcdCAgdm9pZCAqZGF0YSwgaW50IGxlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oPTIyPXN0YXRpYyBpbmxpbmUgYm9vbCBhdGgxMGtfdG1fZXZlbnRfd21pKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaC0yNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaDoyODpzdGF0aWMgaW5saW5lIGludCBhdGgxMGtfdG1fY21kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oLTI5LVx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaD0yMD1lbnVtIGF0aDEwa190bV9hdHRyIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaC0zNi0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oOjM3OmVudW0gYXRoMTBrX3RtX2NtZCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaC0zOC1cdC8qIFJldHVybnMgdGhlIHN1cHBvcnRlZCBhdGgxMGsgdGVzdG1vZGUgaW50ZXJmYWNlIHZlcnNpb24gaW5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDg6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc2NjgKCQkJCQkJCW91dHB1dDogMTYyCgkJCQkJCQl0aG91Z2h0czogOTcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYXNvbmluZyBmb3IgRnV6emluZyB0aGUgYXRoMTBrIFRlc3Rtb2RlIEV2ZW50IEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgYGF0aDEwa190bV9jbWRgIGFuZCBgYXRoMTBrX3RtX2V2ZW50X3dtaWAgc3RhbmQgb3V0LiBUaGUgZm9ybWVyIHNlZW1zIHRvIGJlIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIG5sODAyMTEgdGVzdG1vZGUgY29tbWFuZHMsIGFuZCB0aGUgbGF0dGVyIGlzIHRoZSBoYW5kbGVyIGZvciBXTUkgZXZlbnRzLiBUaG9zZSBhcmUgZGVmaW5pdGVseSBteSBmb2N1cyBzeW1ib2xzIGhlcmUuIFRoZXkgaGFuZGxlIGRpc3RpbmN0IHBhdGhzIGludG8gdGhlIHRlc3QgbW9kZSBmdW5jdGlvbmFsaXR5LgoKSSBuZWVkIHRvIGNvbmZpcm0gd2hpY2ggY29uZmlndXJhdGlvbnMgYXJlIHJlbGV2YW50LiBJIGtub3cgdGhhdCBgQVRIMTBLYCBpcyBhIG11c3QsIGFuZCBzaW5jZSB0aGlzIGludm9sdmVzIFVTQiBpbnRlcmFjdGlvbiwgYEFUSDEwS19VU0JgIGlzIGFsc28gbGlrZWx5IHJlcXVpcmVkLiBBbHNvIHNpbmNlIHRoaXMgZGVhbHMgd2l0aCB0ZXN0IG1vZGUsIGBOTDgwMjExX1RFU1RNT0RFYCBpcyBhbm90aGVyIG9idmlvdXMgY2FuZGlkYXRlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBjb25maWd1cmF0aW9ucyBhcmUgcmlnaHQuIEkga25vdyB0aGF0IGBBVEgxMEtfVVNCYCBkZXBlbmRzIG9uIGBVU0JgIGFuZCBgQVRIMTBLYCwgd2hpY2ggaW4gdHVybiBkZXBlbmQgb24gYE1BQzgwMjExYC4gQnV0IHRoZSBmdXp6ZXIgYmFzZSBjb25maWcgdXN1YWxseSB0YWtlcyBjYXJlIG9mIHRob3NlIGRlcGVuZGVuY2llcywgc28ganVzdCBsaXN0aW5nIHRoZSBkaXJlY3Qgb25lcyBpcyBzYWZlLgoKUmV2aWV3aW5nIHRoZSBwYXRjaCBpdHNlbGYsIGl0JiMzOTtzIGNsZWFyIHRoZSBjaGFuZ2VzIHdpdGhpbiBgYXRoMTBrX3RtX2V2ZW50X3dtaWAgYXJlIGZ1bmN0aW9uYWwuIFRoZSBjb2RlIGlzIGFkZGluZyBhIGNoZWNrIHRvIGRyb3Agbm9uLVVURiBldmVudHMuIFRoaXMgbW9kaWZpY2F0aW9uIHRvIHRoZSBXTUkgZXZlbnQgaGFuZGxpbmcgbG9naWMgaW4gdGVzdCBtb2RlIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgd2FudCB0byBmdXp6LiBJdCBpbnRyb2R1Y2VzIGEgbmV3IGNvZGUgcGF0aCAodGhlIGRyb3ApIGFuZCBtb2RpZmllcyBleGlzdGluZyBsb2dpYy4gU28gdGhlIGZ1enppbmcgdGFyZ2V0IGhlcmUgaXMgdGhlIGBhdGgxMGtgIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGl0cyBldmVudCBwcm9jZXNzaW5nIHdpdGhpbiB0ZXN0IG1vZGUuIEkgY2FuIGZ1enogaXQgdGhyb3VnaCB0aGUgVVNCIGludGVyZmFjZSAoYENPTkZJR19BVEgxMEtfVVNCYCkgYnkgZW11bGF0aW5nIHRoZSBkZXZpY2UgYW5kIHNlbmRpbmcgV01JIGV2ZW50cy4gVGhlIHRlc3QgbW9kZSBpdHNlbGYgY2FuIGJlIGFjdGl2YXRlZCB1c2luZyBubDgwMjExIGNvbW1hbmRzIChgQ09ORklHX05MODAyMTFfVEVTVE1PREVgKS4KClNvLCBJIHRoaW5rIEkmIzM5O3ZlIGdvdCBpdDoKCkZvY3VzIFN5bWJvbHM6CiogICBgYXRoMTBrX3RtX2V2ZW50X3dtaWAKKiAgIGBhdGgxMGtfdG1fY21kYAoKQ29uZmlnczoKKiAgIGBBVEgxMEtgCiogICBgQVRIMTBLX1VTQmAKKiAgIGBOTDgwMjExX1RFU1RNT0RFYAoKSSBhbSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDA4OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEgxMEsmIzM0OywKICAgICYjMzQ7QVRIMTBLX1VTQiYjMzQ7LAogICAgJiMzNDtOTDgwMjExX1RFU1RNT0RFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoMTBrX3RtX2V2ZW50X3dtaSYjMzQ7LAogICAgJiMzNDthdGgxMGtfdG1fY21kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgYXRoMTBrYCB3aXJlbGVzcyBkcml2ZXImIzM5O3MgdGVzdG1vZGUgZXZlbnQgaGFuZGxpbmcgbG9naWMgdG8gZHJvcCBub24tVVRGIFdNSSBldmVudHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGZpcm13YXJlIGV2ZW50IHByb2Nlc3NpbmcuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgaXRzIFVTQiBpbnRlcmZhY2UgYnkgZW11bGF0aW5nIHRoZSBkZXZpY2UgYW5kIHNlbmRpbmcgV01JIGV2ZW50cywgYW5kIHRoZSB0ZXN0bW9kZSBjYW4gYmUgYWN0aXZhdGVkIHZpYSBubDgwMjExIGNvbW1hbmRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEgxMEsmIzM0OywKICAgICYjMzQ7QVRIMTBLX1VTQiYjMzQ7LAogICAgJiMzNDtOTDgwMjExX1RFU1RNT0RFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoMTBrX3RtX2V2ZW50X3dtaSYjMzQ7LAogICAgJiMzNDthdGgxMGtfdG1fY21kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgYXRoMTBrYCB3aXJlbGVzcyBkcml2ZXImIzM5O3MgdGVzdG1vZGUgZXZlbnQgaGFuZGxpbmcgbG9naWMgdG8gZHJvcCBub24tVVRGIFdNSSBldmVudHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJiMzOTtzIGZpcm13YXJlIGV2ZW50IHByb2Nlc3NpbmcuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgaXRzIFVTQiBpbnRlcmZhY2UgYnkgZW11bGF0aW5nIHRoZSBkZXZpY2UgYW5kIHNlbmRpbmcgV01JIGV2ZW50cywgYW5kIHRoZSB0ZXN0bW9kZSBjYW4gYmUgYWN0aXZhdGVkIHZpYSBubDgwMjExIGNvbW1hbmRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6NTk6NDEuNTE1Njg3NjVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzg2MzIwODQxNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIMTBLXCIsXG4gICAgXCJBVEgxMEtfVVNCXCIsXG4gICAgXCJOTDgwMjExX1RFU1RNT0RFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoMTBrX3RtX2V2ZW50X3dtaVwiLFxuICAgIFwiYXRoMTBrX3RtX2NtZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgYXRoMTBrYCB3aXJlbGVzcyBkcml2ZXIncyB0ZXN0bW9kZSBldmVudCBoYW5kbGluZyBsb2dpYyB0byBkcm9wIG5vbi1VVEYgV01JIGV2ZW50cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXIncyBmaXJtd2FyZSBldmVudCBwcm9jZXNzaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIGl0cyBVU0IgaW50ZXJmYWNlIGJ5IGVtdWxhdGluZyB0aGUgZGV2aWNlIGFuZCBzZW5kaW5nIFdNSSBldmVudHMsIGFuZCB0aGUgdGVzdG1vZGUgY2FuIGJlIGFjdGl2YXRlZCB2aWEgbmw4MDIxMSBjb21tYW5kcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6NTk6NDEuNTE1Njk0NTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTA1NzU5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU1ZWIwNDk5NTczMGJhMDMwOWY1YjA4ZjkzZGM0MzhjZWEwYjkwN2RcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDc6NTk6NDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jXFxuaW5kZXggZDNiZDM4NTY5NGQ2ZS4uMjgyYWU2ZTIwYzhlZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmNcXG5AQCAtMTU2LDYgKzE1NiwxNCBAQCBzdGF0aWMgdm9pZCBhdGgxMGtfdG1fZXZlbnRfc2VnbWVudGVkKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLCBzdHJ1Y3Qgc2tfYlxcbiBcXHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBhdGgxMGtfdG1faXNfdXRmX2V2ZW50KHUzMiBjbWRfaWQpXFxuK3tcXG4rXFx0cmV0dXJuIGNtZF9pZCA9PSBXTUlfMTBYX1BERVZfVVRGX0VWRU5USUQgfHxcXG4rXFx0ICAgICAgIGNtZF9pZCA9PSBXTUlfMTBfMl9QREVWX1VURl9FVkVOVElEIHx8XFxuK1xcdCAgICAgICBjbWRfaWQgPT0gV01JXzEwXzRfUERFVl9VVEZfRVZFTlRJRCB8fFxcbitcXHQgICAgICAgY21kX2lkID09IFdNSV9UTFZfUERFVl9VVEZfRVZFTlRJRDtcXG4rfVxcbitcXG4gLyogUmV0dXJucyB0cnVlIGlmIGNhbGxlZSBjb25zdW1lcyB0aGUgc2tiIGFuZCB0aGUgc2tiIHNob3VsZCBiZSBkaXNjYXJkZWQuXFxuICAqIFJldHVybnMgZmFsc2UgaWYgc2tiIGlzIG5vdCB1c2VkLiBEb2VzIG5vdCBzbGVlcC5cXG4gICovXFxuQEAgLTE4Miw2ICsxOTAsMTIgQEAgYm9vbCBhdGgxMGtfdG1fZXZlbnRfd21pKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHQgKi9cXG4gXFx0Y29uc3VtZWQgPSB0cnVlO1xcbiBcXG4rXFx0aWYgKCFhdGgxMGtfdG1faXNfdXRmX2V2ZW50KGNtZF9pZCkpIHtcXG4rXFx0XFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSxcXG4rXFx0XFx0XFx0ICAgXFxcInRlc3Rtb2RlIGRyb3Agbm9uLXV0ZiBldmVudCBjbWRfaWQgJXVcXFxcblxcXCIsIGNtZF9pZCk7XFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXHR9XFxuK1xcbiBcXHRpZiAoYXItXFx1MDAzZXRlc3Rtb2RlLmV4cGVjdGVkX3NlcSAhPSBBVEgxMEtfRlRNX1NFR19OT05FKVxcbiBcXHRcXHRhdGgxMGtfdG1fZXZlbnRfc2VnbWVudGVkKGFyLCBjbWRfaWQsIHNrYik7XFxuIFxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6NTk6NDEuOTc1NjEwNDgyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTM4MTcyMTUxMzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDEwS1wiLFxuICAgIFwiQVRIMTBLX1VTQlwiLFxuICAgIFwiTkw4MDIxMV9URVNUTU9ERVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF0aDEwa190bV9ldmVudF93bWlcIixcbiAgICBcImF0aDEwa190bV9jbWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGF0aDEwa2Agd2lyZWxlc3MgZHJpdmVyJ3MgdGVzdG1vZGUgZXZlbnQgaGFuZGxpbmcgbG9naWMgdG8gZHJvcCBub24tVVRGIFdNSSBldmVudHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJ3MgZmlybXdhcmUgZXZlbnQgcHJvY2Vzc2luZy4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBpdHMgVVNCIGludGVyZmFjZSBieSBlbXVsYXRpbmcgdGhlIGRldmljZSBhbmQgc2VuZGluZyBXTUkgZXZlbnRzLCBhbmQgdGhlIHRlc3Rtb2RlIGNhbiBiZSBhY3RpdmF0ZWQgdmlhIG5sODAyMTEgY29tbWFuZHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU1ZWIwNDk5NTczMGJhMDMwOWY1YjA4ZjkzZGM0MzhjZWEwYjkwN2RcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzMSAwNzo1OTo0MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuY1xuaW5kZXggZDNiZDM4NTY5NGQ2ZS4uMjgyYWU2ZTIwYzhlZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jXG5AQCAtMTU2LDYgKzE1NiwxNCBAQCBzdGF0aWMgdm9pZCBhdGgxMGtfdG1fZXZlbnRfc2VnbWVudGVkKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLCBzdHJ1Y3Qgc2tfYlxuIFx0Y2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTtcbiB9XG4gXG4rc3RhdGljIGJvb2wgYXRoMTBrX3RtX2lzX3V0Zl9ldmVudCh1MzIgY21kX2lkKVxuK3tcbitcdHJldHVybiBjbWRfaWQgPT0gV01JXzEwWF9QREVWX1VURl9FVkVOVElEIHx8XG4rXHQgICAgICAgY21kX2lkID09IFdNSV8xMF8yX1BERVZfVVRGX0VWRU5USUQgfHxcbitcdCAgICAgICBjbWRfaWQgPT0gV01JXzEwXzRfUERFVl9VVEZfRVZFTlRJRCB8fFxuK1x0ICAgICAgIGNtZF9pZCA9PSBXTUlfVExWX1BERVZfVVRGX0VWRU5USUQ7XG4rfVxuK1xuIC8qIFJldHVybnMgdHJ1ZSBpZiBjYWxsZWUgY29uc3VtZXMgdGhlIHNrYiBhbmQgdGhlIHNrYiBzaG91bGQgYmUgZGlzY2FyZGVkLlxuICAqIFJldHVybnMgZmFsc2UgaWYgc2tiIGlzIG5vdCB1c2VkLiBEb2VzIG5vdCBzbGVlcC5cbiAgKi9cbkBAIC0xODIsNiArMTkwLDEyIEBAIGJvb2wgYXRoMTBrX3RtX2V2ZW50X3dtaShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdCAqL1xuIFx0Y29uc3VtZWQgPSB0cnVlO1xuIFxuK1x0aWYgKCFhdGgxMGtfdG1faXNfdXRmX2V2ZW50KGNtZF9pZCkpIHtcbitcdFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSxcbitcdFx0XHQgICBcInRlc3Rtb2RlIGRyb3Agbm9uLXV0ZiBldmVudCBjbWRfaWQgJXVcXG5cIiwgY21kX2lkKTtcbitcdFx0Z290byBvdXQ7XG4rXHR9XG4rXG4gXHRpZiAoYXItXHUwMDNldGVzdG1vZGUuZXhwZWN0ZWRfc2VxICE9IEFUSDEwS19GVE1fU0VHX05PTkUpXG4gXHRcdGF0aDEwa190bV9ldmVudF9zZWdtZW50ZWQoYXIsIGNtZF9pZCwgc2tiKTtcbiBcdGVsc2VcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjU5OjQxLjk3NTYxMjM5MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MTIzMzQ2NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYXRoMTBrIERyaXZlcjogQSBQcmVsaW1pbmFyeSBBc3Nlc3NtZW50KipcblxuT2theSwgc28gdGhlcmUncyBhIHBhdGNoIGluIGZyb250IG9mIG1lIHRoYXQgdHdlYWtzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmNgLiBJdCBsb29rcyBsaWtlIGl0J3MgYWRkaW5nIGEgY2hlY2ssIGBhdGgxMGtfdG1faXNfdXRmX2V2ZW50KGNtZF9pZClgLCBpbiBgYXRoMTBrX3RtX2V2ZW50X3dtaWAuIEVzc2VudGlhbGx5LCBpZiBpdCdzIG5vdCBhIFVURiBldmVudCwgdGhlIGNvZGUncyBkcm9wcGluZyBpdC4gRmluZS4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBmdXp6aW5nIHRoaXMgZHJpdmVyLiBJdOKAmXMgYSB3aXJlbGVzcyBkcml2ZXIsIHNvIHBvdGVudGlhbGx5IHZ1bG5lcmFibGUgYW5kIGludGVyZXN0aW5nLlxuXG5CdXQgd2FpdC4gKmF0aDEwayouLi4gdGhhdCdzIHRoZSBkcml2ZXIgZm9yIHNwZWNpZmljIEF0aGVyb3MgaGFyZHdhcmUuIFRoaXMgcmFpc2VzIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBvZiB3aGV0aGVyIEkgY2FuIGZ1enogaXQgZWZmZWN0aXZlbHkuIENhbiBJIGV2ZW4gZ2V0IGl0IHRvIHJ1biBpbiBRRU1VPyBXaXJlbGVzcyBkcml2ZXJzIGFyZSBvZnRlbiBmaW5pY2t5IGFib3V0IHBoeXNpY2FsIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBvciBzcGVjaWZpYyBlbXVsYXRpb24gbGF5ZXJzLiBJcyAqYXRoMTBrKiBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIGlzIGVtdWxhdGVkLCBvciBpcyBpdCBhIHRydWUgaGFyZHdhcmUgZHJpdmVyIChQQ0kvU0RJTy9VU0IpPyBTZWVtcyB0aGUgbGF0dGVyLlxuXG5TbywgaG93IGNhbiBJIGV2ZW4gYmVnaW4gdG8gZnV6eiB0aGlzPyBDb3VsZCBJIHBvdGVudGlhbGx5IGxldmVyYWdlIFVTQiBlbXVsYXRpb24/IFRoZSBxdWVzdGlvbiBpcywgZG9lcyBgYXRoMTBrYCBoYXZlIGEgVVNCIGRyaXZlciBwYXRoPyBJIG5lZWQgdG8gY2hlY2sgdGhhdCBmaXJzdC4gVGhhdCdzIHRoZSBrZXkgdG8gbWFraW5nIGFueSBwcm9ncmVzcyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzkyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDc6NTk6NDcuNjg3OTUwODIyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDAzMTIwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMGsuKnVzYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUwNCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZT0zND1hdGgxMGtfc2Rpby15ICs9IHNkaW8ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGUtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfQVRIMTBLX1VTQikgKz0gYXRoMTBrX3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZTozNzphdGgxMGtfdXNiLXkgKz0gdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlLTM4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE4OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE5OlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnJlY3ZfcGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM9MzU9c3RhdGljIHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzY6YXRoMTBrX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTc6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9mcmVlX3VyYl90b19waXBlKHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OC1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2NsZWFudXBfcmVjdl91cmIoc3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqdXJiX2NvbnRleHQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Nzk6XFx0YXRoMTBrX3VzYl9mcmVlX3VyYl90b19waXBlKHVyYl9jb250ZXh0LVxcdTAwM2VwaXBlLCB1cmJfY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZnJlZV9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgzOlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNC1cXHRmb3IgKDs7KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDU6XFx0XFx0dXJiX2NvbnRleHQgPSBhdGgxMGtfdXNiX2FsbG9jX3VyYl9mcm9tX3BpcGUocGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExNDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTE2OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTE3LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDEwS19VU0JfUElQRV9NQVg7IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEyMDpcXHRcXHRhdGgxMGtfdXNiX2ZyZWVfcGlwZV9yZXNvdXJjZXMoYXIsIFxcdTAwMjZhcl91c2ItXFx1MDAzZXBpcGVzW2ldKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyMS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEyNTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3JlY3ZfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTI2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyNy1cXHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dCA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEyODpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gdXJiX2NvbnRleHQtXFx1MDAzZXBpcGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMjk6XFx0c3RydWN0IGF0aDEwayAqYXIgPSBwaXBlLVxcdTAwM2Vhcl91c2ItXFx1MDAzZWFyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTMwLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3Mi1jbGVhbnVwX3JlY3ZfdXJiOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTczOlxcdGF0aDEwa191c2JfY2xlYW51cF9yZWN2X3VyYih1cmJfY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3Ny1cXHRcXHQvKiBvdXIgZnJlZSB1cmJzIGFyZSBwaWxpbmcgdXAsIHBvc3QgbW9yZSB0cmFuc2ZlcnMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE3ODpcXHRcXHRhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoYXIsIHBpcGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTc5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTgyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfdHJhbnNtaXRfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTgzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE4NC1cXHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dCA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE4NTpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gdXJiX2NvbnRleHQtXFx1MDAzZXBpcGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxODY6XFx0c3RydWN0IGF0aDEwayAqYXIgPSBwaXBlLVxcdTAwM2Vhcl91c2ItXFx1MDAzZWFyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTg3LVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE5Ni1cXHR1cmJfY29udGV4dC1cXHUwMDNlc2tiID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE5NzpcXHRhdGgxMGtfdXNiX2ZyZWVfdXJiX3RvX3BpcGUodXJiX2NvbnRleHQtXFx1MDAzZXBpcGUsIHVyYl9jb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjA0LS8qIHBpcGUgb3BlcmF0aW9ucyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjA1OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjIwNjpcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpyZWN2X3BpcGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMTItXFx0Zm9yICg7Oykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjEzOlxcdFxcdHVyYl9jb250ZXh0ID0gYXRoMTBrX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHJlY3ZfcGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMTQtXFx0XFx0aWYgKCF1cmJfY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjI5LVxcdFxcdFxcdFxcdCAgQVRIMTBLX1VTQl9SWF9CVUZGRVJfU0laRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjIzMDpcXHRcXHRcXHRcXHQgIGF0aDEwa191c2JfcmVjdl9jb21wbGV0ZSwgdXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjMxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTQtZXJyOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjU1OlxcdGF0aDEwa191c2JfY2xlYW51cF9yZWN2X3VyYih1cmJfY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTYtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjU4OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZmx1c2hfYWxsKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjU5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI2MDpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI2MS1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjcxOnN0YXRpYyB2b2lkIGF0aDEwa191c2Jfc3RhcnRfcmVjdl9waXBlcyhzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI3Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNzM6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI3NzpcXHRhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNzgtXFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZhcl91c2ItXFx1MDAzZXBpcGVzW0FUSDEwS19VU0JfUElQRV9SWF9EQVRBXSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI4MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI4MTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3R4X2NvbXBsZXRlKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjgyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjkxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjkyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfcnhfY29tcGxldGUoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yOTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNjA6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9pb19jb21wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzYxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2MjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gY29udGFpbmVyX29mKHdvcmssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNjM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNjQtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGlvX2NvbXBsZXRlX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzY1OlxcdHN0cnVjdCBhdGgxMGsgKmFyID0gcGlwZS1cXHUwMDNlYXJfdXNiLVxcdTAwM2VhcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM2Ni1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNjktXFx0XFx0aWYgKHBpcGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgQVRIMTBLX1VTQl9QSVBFX0ZMQUdfVFgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNzA6XFx0XFx0XFx0YXRoMTBrX3VzYl90eF9jb21wbGV0ZShhciwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3MS1cXHRcXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNzI6XFx0XFx0XFx0YXRoMTBrX3VzYl9yeF9jb21wbGV0ZShhciwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3My1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3NjojZGVmaW5lIEFUSDEwS19VU0JfTUFYX0RJQUdfQ01EIChzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNzc6I2RlZmluZSBBVEgxMEtfVVNCX01BWF9ESUFHX1JFU1AgKHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM3OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3OTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2Rlc3Ryb3koc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zODAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzgxOlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzgzOlxcdGF0aDEwa191c2JfZmx1c2hfYWxsKGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM4NDpcXHRhdGgxMGtfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzg1LVxcdHVzYl9zZXRfaW50ZmRhdGEoYXJfdXNiLVxcdTAwM2VpbnRlcmZhY2UsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozOTE6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9zdGFydChzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTMtXFx0aW50IGk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozOTQ6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTYtXFx0YXRoMTBrX2NvcmVfbmFwaV9lbmFibGUoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzk3OlxcdGF0aDEwa191c2Jfc3RhcnRfcmVjdl9waXBlcyhhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQwOTpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX3R4X3NnKHN0cnVjdCBhdGgxMGsgKmFyLCB1OCBwaXBlX2lkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDEwLVxcdFxcdFxcdFxcdHN0cnVjdCBhdGgxMGtfaGlmX3NnX2l0ZW0gKml0ZW1zLCBpbnQgbl9pdGVtcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQxMS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0MTI6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0MTM6XFx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZSA9IFxcdTAwMjZhcl91c2ItXFx1MDAzZXBpcGVzW3BpcGVfaWRdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDE0LVxcdHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MTktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5faXRlbXM7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDIwOlxcdFxcdHVyYl9jb250ZXh0ID0gYXRoMTBrX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHBpcGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDIxLVxcdFxcdGlmICghdXJiX2NvbnRleHQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDM5LVxcdFxcdFxcdFxcdCAgc2tiLVxcdTAwM2VsZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0NDA6XFx0XFx0XFx0XFx0ICBhdGgxMGtfdXNiX3RyYW5zbWl0X2NvbXBsZXRlLCB1cmJfY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NDEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ2My1lcnJfZnJlZV91cmJfdG9fcGlwZTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ2NDpcXHRhdGgxMGtfdXNiX2ZyZWVfdXJiX3RvX3BpcGUodXJiX2NvbnRleHQtXFx1MDAzZXBpcGUsIHVyYl9jb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ2NS1lcnI6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ2OTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9zdG9wKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDcwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ3MTpcXHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzItXFx0YXRoMTBrX2NvcmVfbmFwaV9zeW5jX2Rpc2FibGUoYXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0NzU6c3RhdGljIHUxNiBhdGgxMGtfdXNiX2hpZl9nZXRfZnJlZV9xdWV1ZV9udW1iZXIoc3RydWN0IGF0aDEwayAqYXIsIHU4IHBpcGVfaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDc3OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDc4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00ODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0ODI6c3RhdGljIGludCBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX291dChzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ4My1cXHRcXHRcXHRcXHQgICAgICB1OCByZXEsIHUxNiB2YWx1ZSwgdTE2IGluZGV4LCB2b2lkICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00ODUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDg2OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDg3LVxcdHU4ICpidWYgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MDQtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjUwNTpcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcIkZhaWxlZCB0byBzdWJtaXQgdXNiIGNvbnRyb2wgbWVzc2FnZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MDYtXFx0XFx0XFx0ICAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTUxNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjUxNjpzdGF0aWMgaW50IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfaW4oc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MTctXFx0XFx0XFx0XFx0ICAgICB1OCByZXEsIHUxNiB2YWx1ZSwgdTE2IGluZGV4LCB2b2lkICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTIwOlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTIxLVxcdHU4ICpidWYgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MzgtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjUzOTpcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcIkZhaWxlZCB0byByZWFkIHVzYiBjb250cm9sIG1lc3NhZ2U6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTQwLVxcdFxcdFxcdCAgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1NTI6c3RhdGljIGludCBhdGgxMGtfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTUzLVxcdFxcdFxcdFxcdFxcdHU4IHJlcV92YWwsIHU4ICpyZXFfYnVmLCB1MzIgcmVxX2xlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTU5LVxcdC8qIHNlbmQgY29tbWFuZCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTYwOlxcdHJldCA9IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfb3V0KGFyLCByZXFfdmFsLCAwLCAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTYxLVxcdFxcdFxcdFxcdFxcdCByZXFfYnVmLCByZXFfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTY2LVxcdGlmIChyZXNwX2J1Zikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTY3OlxcdFxcdHJldCA9IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfaW4oYXIsIHJlc3BfdmFsLCAwLCAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTY4LVxcdFxcdFxcdFxcdFxcdFxcdHJlc3BfYnVmLCAqcmVzcF9sZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1Nzg6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9kaWFnX3JlYWQoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBhZGRyZXNzLCB2b2lkICpidWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NzktXFx0XFx0XFx0XFx0ICAgIHNpemVfdCBidWZfbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTgwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4MTpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4MjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3JlYWQgKmNtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4My1cXHR1MzIgcmVzcF9sZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4NjpcXHRpZiAoYnVmX2xlbiBcXHUwMDNjIHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4Ny1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4OTpcXHRjbWQgPSAoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF9yZWFkICopYXJfdXNiLVxcdTAwM2VkaWFnX2NtZF9idWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OTAtXFx0bWVtc2V0KGNtZCwgMCwgc2l6ZW9mKCpjbWQpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTkyLVxcdGNtZC1cXHUwMDNlYWRkcmVzcyA9IGNwdV90b19sZTMyKGFkZHJlc3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTkzOlxcdHJlc3BfbGVuID0gc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTk1OlxcdHJldCA9IGF0aDEwa191c2JfY3RybF9tc2dfZXhjaGFuZ2UoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OTYtXFx0XFx0XFx0XFx0XFx0ICAgQVRIMTBLX1VTQl9DT05UUk9MX1JFUV9ESUFHX0NNRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjA0OlxcdGlmIChyZXNwX2xlbiAhPSBzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX3Jlc3BfcmVhZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MDUtXFx0XFx0cmV0dXJuIC1FTVNHU0laRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjA3LVxcdG1lbWNweShidWYsIGFyX3VzYi1cXHUwMDNlZGlhZ19yZXNwX2J1ZmZlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYwODpcXHQgICAgICAgc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYwOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjEzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfZGlhZ193cml0ZShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGFkZHJlc3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MTQtXFx0XFx0XFx0XFx0ICAgICBjb25zdCB2b2lkICpkYXRhLCBpbnQgbmJ5dGVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjE1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYxNjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYxNzpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlICpjbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MTgtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjIzOlxcdGNtZCA9IChzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlICopYXJfdXNiLVxcdTAwM2VkaWFnX2NtZF9idWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MjQtXFx0bWVtc2V0KGNtZCwgMCwgc2l6ZW9mKCpjbWQpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjI5OlxcdHJldCA9IGF0aDEwa191c2JfY3RybF9tc2dfZXhjaGFuZ2UoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MzAtXFx0XFx0XFx0XFx0XFx0ICAgQVRIMTBLX1VTQl9DT05UUk9MX1JFUV9ESUFHX0NNRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjQwOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9ibWlfZXhjaGFuZ2VfbXNnKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjQxLVxcdFxcdFxcdFxcdCAgICAgICB2b2lkICpyZXEsIHUzMiByZXFfbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NDYtXFx0aWYgKHJlcSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjQ3OlxcdFxcdHJldCA9IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfb3V0KGFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjQ4LVxcdFxcdFxcdFxcdFxcdFxcdCBBVEgxMEtfVVNCX0NPTlRST0xfUkVRX1NFTkRfQk1JX0NNRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjU4LVxcdGlmIChyZXNwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2NTk6XFx0XFx0cmV0ID0gYXRoMTBrX3VzYl9zdWJtaXRfY3RybF9pbihhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY2MC1cXHRcXHRcXHRcXHRcXHRcXHRBVEgxMEtfVVNCX0NPTlRST0xfUkVRX1JFQ1ZfQk1JX1JFU1AsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY3MzpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9nZXRfZGVmYXVsdF9waXBlKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjc0LVxcdFxcdFxcdFxcdFxcdCAgICB1OCAqdWxfcGlwZSwgdTggKmRsX3BpcGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY4MDpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX21hcF9zZXJ2aWNlX3RvX3BpcGUoc3RydWN0IGF0aDEwayAqYXIsIHUxNiBzdmNfaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02ODEtXFx0XFx0XFx0XFx0XFx0ICAgICAgdTggKnVsX3BpcGUsIHU4ICpkbF9waXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MDQ6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9wb3dlcl91cChzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcwNS1cXHRcXHRcXHRcXHQgICBlbnVtIGF0aDEwa19maXJtd2FyZV9tb2RlIGZ3X21vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcxMDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9wb3dlcl9kb3duKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzExLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcxMjpcXHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MTMtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MTc6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9zdXNwZW5kKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzE4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzIyOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfcmVzdW1lKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzI4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTBrX2hpZl9vcHMgYXRoMTBrX3VzYl9oaWZfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzI5OlxcdC50eF9zZ1xcdFxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfdHhfc2csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzA6XFx0LmRpYWdfcmVhZFxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfZGlhZ19yZWFkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzMxOlxcdC5kaWFnX3dyaXRlXFx0XFx0PSBhdGgxMGtfdXNiX2hpZl9kaWFnX3dyaXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzMyOlxcdC5leGNoYW5nZV9ibWlfbXNnXFx0PSBhdGgxMGtfdXNiX2JtaV9leGNoYW5nZV9tc2csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzM6XFx0LnN0YXJ0XFx0XFx0XFx0PSBhdGgxMGtfdXNiX2hpZl9zdGFydCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNDpcXHQuc3RvcFxcdFxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfc3RvcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNTpcXHQubWFwX3NlcnZpY2VfdG9fcGlwZVxcdD0gYXRoMTBrX3VzYl9oaWZfbWFwX3NlcnZpY2VfdG9fcGlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNjpcXHQuZ2V0X2RlZmF1bHRfcGlwZVxcdD0gYXRoMTBrX3VzYl9oaWZfZ2V0X2RlZmF1bHRfcGlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNzpcXHQuZ2V0X2ZyZWVfcXVldWVfbnVtYmVyXFx0PSBhdGgxMGtfdXNiX2hpZl9nZXRfZnJlZV9xdWV1ZV9udW1iZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3Mzg6XFx0LnBvd2VyX3VwXFx0XFx0PSBhdGgxMGtfdXNiX2hpZl9wb3dlcl91cCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczOTpcXHQucG93ZXJfZG93blxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfcG93ZXJfZG93bixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc0MC0jaWZkZWYgQ09ORklHX1BNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDE6XFx0LnN1c3BlbmRcXHRcXHQ9IGF0aDEwa191c2JfaGlmX3N1c3BlbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDI6XFx0LnJlc3VtZVxcdFxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzQzLSNlbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03NDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDY6c3RhdGljIHU4IGF0aDEwa191c2JfZ2V0X2xvZ2ljYWxfcGlwZV9udW0odTggZXBfYWRkcmVzcywgaW50ICp1cmJfY291bnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03NDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03OTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3OTE6c3RhdGljIGludCBhdGgxMGtfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzkyOlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03OTMtXFx0XFx0XFx0XFx0XFx0ICAgaW50IHVyYl9jbnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgxMS1cXHRcXHRwaXBlLVxcdTAwM2V1cmJfYWxsb2MrKztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgxMjpcXHRcXHRhdGgxMGtfdXNiX2ZyZWVfdXJiX3RvX3BpcGUocGlwZSwgdXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODEzLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODIzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9zZXR1cF9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyNC1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODI1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyNjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyNy1cXHRzdHJ1Y3QgdXNiX2hvc3RfaW50ZXJmYWNlICppZmFjZV9kZXNjID0gaW50ZXJmYWNlLVxcdTAwM2VjdXJfYWx0c2V0dGluZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyOC1cXHRzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IgKmVuZHBvaW50O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODI5OlxcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MzAtXFx0aW50IHJldCwgaSwgdXJiY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgzMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgzMzpcXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1VTQiwgXFxcInVzYiBzZXR0aW5nIHVwIHBpcGVzIHVzaW5nIGludGVyZmFjZVxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTg3MS1cXHRcXHRwaXBlX251bSA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4NzI6XFx0XFx0ICAgIGF0aDEwa191c2JfZ2V0X2xvZ2ljYWxfcGlwZV9udW0oZW5kcG9pbnQtXFx1MDAzZWJFbmRwb2ludEFkZHJlc3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04NzMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZ1cmJjb3VudCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjkyNTpcXHRcXHRyZXQgPSBhdGgxMGtfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKGFyLCBwaXBlLCB1cmJjb3VudCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MjYtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTMzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9jcmVhdGUoc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzQtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTM1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjkzNjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkzNy1cXHRzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTM4OlxcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzktXFx0aW50IHJldCwgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTQ4LVxcdFxcdElOSVRfV09SSyhcXHUwMDI2cGlwZS1cXHUwMDNlaW9fY29tcGxldGVfd29yayxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjk0OTpcXHRcXHRcXHQgIGF0aDEwa191c2JfaW9fY29tcF93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk1MC1cXHRcXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZwaXBlLVxcdTAwM2Vpb19jb21wX3F1ZXVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTY2OlxcdHJldCA9IGF0aDEwa191c2Jfc2V0dXBfcGlwZV9yZXNvdXJjZXMoYXIsIGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05NjctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTcyLWVycjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjk3MzpcXHRhdGgxMGtfdXNiX2Rlc3Ryb3koYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTc0LVxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjk3NzpzdGF0aWMgaW50IGF0aDEwa191c2JfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqY3R4LCBpbnQgYnVkZ2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTkxOi8qIGF0aDEwayB1c2IgZHJpdmVyIHJlZ2lzdGVyZWQgZnVuY3Rpb25zICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5OTI6c3RhdGljIGludCBhdGgxMGtfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTMtXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTk1LVxcdHN0cnVjdCBhdGgxMGsgKmFyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTk2OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTctXFx0c3RydWN0IHVzYl9kZXZpY2UgKmRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50ZXJmYWNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwMTA6XFx0YXIgPSBhdGgxMGtfY29yZV9jcmVhdGUoc2l6ZW9mKCphcl91c2IpLCBcXHUwMDI2ZGV2LVxcdTAwM2VkZXYsIEFUSDEwS19CVVNfVVNCLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTAxMTpcXHRcXHRcXHRcXHRod19yZXYsIFxcdTAwMjZhdGgxMGtfdXNiX2hpZl9vcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAxMi1cXHRpZiAoIWFyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDE3OlxcdG5ldGlmX25hcGlfYWRkKGFyLVxcdTAwM2VuYXBpX2RldiwgXFx1MDAyNmFyLVxcdTAwM2VuYXBpLCBhdGgxMGtfdXNiX25hcGlfcG9sbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDE4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTAyNjpcXHRhcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTAyNzpcXHRyZXQgPSBhdGgxMGtfdXNiX2NyZWF0ZShhciwgaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMjgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA1MS1lcnJfdXNiX2Rlc3Ryb3k6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDUyOlxcdGF0aDEwa191c2JfZGVzdHJveShhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDUzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA2MDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA2MjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNjg6XFx0YXRoMTBrX2NvcmVfdW5yZWdpc3Rlcihhcl91c2ItXFx1MDAzZWFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNjktXFx0bmV0aWZfbmFwaV9kZWwoXFx1MDAyNmFyX3VzYi1cXHUwMDNlYXItXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA3MDpcXHRhdGgxMGtfdXNiX2Rlc3Ryb3koYXJfdXNiLVxcdTAwM2Vhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDcxOlxcdGF0aDEwa19jb3JlX2Rlc3Ryb3koYXJfdXNiLVxcdTAwM2Vhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDcyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNzY6c3RhdGljIGludCBhdGgxMGtfdXNiX3BtX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNzctXFx0XFx0XFx0XFx0IHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA3OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDc5OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSB1c2JfZ2V0X2ludGZkYXRhKGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA4MTpcXHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcl91c2ItXFx1MDAzZWFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODItXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDg1OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9wbV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA4NzpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA4ODpcXHRzdHJ1Y3QgYXRoMTBrICphciA9IGFyX3VzYi1cXHUwMDNlYXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA5MDpcXHRhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDkxLVxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2YXJfdXNiLVxcdTAwM2VwaXBlc1tBVEgxMEtfVVNCX1BJUEVfUlhfREFUQV0pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA5ODojZGVmaW5lIGF0aDEwa191c2JfcG1fc3VzcGVuZCBOVUxMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDk5OiNkZWZpbmUgYXRoMTBrX3VzYl9wbV9yZXN1bWUgTlVMTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEwMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEwMy0vKiB0YWJsZSBvZiBkZXZpY2VzIHRoYXQgd29yayB3aXRoIHRoaXMgZHJpdmVyICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTA0OnN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBhdGgxMGtfdXNiX2lkc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEwNS1cXHR7VVNCX0RFVklDRSgweDEzYjEsIDB4MDA0Mil9LCAvKiBMaW5rc3lzIFdVU0I2MTAwTSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTEwOTpNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgYXRoMTBrX3VzYl9pZHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTExMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTE6c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGF0aDEwa191c2JfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExMjpcXHQubmFtZSA9IFxcXCJhdGgxMGtfdXNiXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTM6XFx0LnByb2JlID0gYXRoMTBrX3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTQ6XFx0LnN1c3BlbmQgPSBhdGgxMGtfdXNiX3BtX3N1c3BlbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTE1OlxcdC5yZXN1bWUgPSBhdGgxMGtfdXNiX3BtX3Jlc3VtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTY6XFx0LmRpc2Nvbm5lY3QgPSBhdGgxMGtfdXNiX2Rpc2Nvbm5lY3QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTE3OlxcdC5pZF90YWJsZSA9IGF0aDEwa191c2JfaWRzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTExOC1cXHQuc3VwcG9ydHNfYXV0b3N1c3BlbmQgPSB0cnVlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTEyMjptb2R1bGVfdXNiX2RyaXZlcihhdGgxMGtfdXNiX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTIzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjQ0OnN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfd3JpdGUge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNDUtXFx0X19sZTMyIGNtZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo1MTpzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3JlYWQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTItXFx0X19sZTMyIGNtZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo1NjpzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTU3LVxcdHU4IHZhbHVlWzRdO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC02MC0vKiB0eC9yeCBwaXBlcyBmb3IgdXNiICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo2MTplbnVtIGF0aDEwa191c2JfcGlwZV9pZCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC02Mi1cXHRBVEgxMEtfVVNCX1BJUEVfVFhfQ1RSTCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6NzM6c3RydWN0IGF0aDEwa191c2JfcGlwZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC03NC1cXHRzdHJ1Y3QgbGlzdF9oZWFkIHVyYl9saXN0X2hlYWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTgyLVxcdHU4IGxvZ2ljYWxfcGlwZV9udW07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo4MzpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtODQtXFx0dTE2IG1heF9wYWNrZXRfc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtOTItLyogdXNiIGRldmljZSBvYmplY3QgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjkzOnN0cnVjdCBhdGgxMGtfdXNiIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTk0LVxcdC8qIHByb3RlY3RzIHBpcGUtXFx1MDAzZXVyYl9saXN0X2hlYWQgYW5kICBwaXBlLVxcdTAwM2V1cmJfY250ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTk4LVxcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo5OTpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlIHBpcGVzW0FUSDEwS19VU0JfUElQRV9NQVhdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTAwLVxcdHU4ICpkaWFnX2NtZF9idWZmZXI7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oPTEwNj1zdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTEwNy1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDoxMDg6XFx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTEwOS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC0xMTItXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjU5OjQ3Ljc5MTk4ODM2NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1ODYwMjc2MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgYGF0aDEwa2AgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3QgYXBwcm9hY2ggdG8gZnV6emluZyB0aGUgYGF0aDEwa2AgZHJpdmVyLiBHb29kLCBpdCBsb29rcyBsaWtlIGBhdGgxMGtgICpkb2VzKiBoYXZlIGEgVVNCIGRyaXZlciAoYGF0aDEwa191c2JgKSwgd2hpY2ggbWVhbnMgSSBoYXZlIGEgcG90ZW50aWFsIGF2ZW51ZSBmb3IgZnV6emluZyB2aWEgVVNCIGVtdWxhdGlvbiwgd2hpY2ggaXMgZ3JlYXQuIFRoYXQgb3BlbnMgdXAgYSBsb3Qgb2YgcG9zc2liaWxpdGllcy4gTm93LCBJIG5lZWQgdG8gZGlnIGRlZXBlci4uLlxuSGFuZyBvbiBhIG1pbnV0ZSEgSSB2YWd1ZWx5IHJlY2FsbCBzb21ldGhpbmcgYWJvdXQgYSB0ZXN0IG1vZGUuLi4gc3BlY2lmaWNhbGx5LCBgYXRoMTBrX3RtX2V2ZW50X3dtaWAuIEkgdGhpbmsgSSBzYXcgdGhhdCBpbiBgdGVzdG1vZGUuY2AuIFRoZSBxdWVzdGlvbiBpcywgaXMgdGhhdCB0ZXN0IG1vZGUgZW5hYmxlZCBieSBkZWZhdWx0LCBvciBpcyBpdCBjb250aW5nZW50IG9uIHNvbWUga2luZCBvZiBjb25maWd1cmF0aW9uIHNldHRpbmc/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byB0cmlnZ2VyIHRoYXQgYHRlc3Rtb2RlYCBwYXRoLCBpdCBtaWdodCBleHBvc2UgYSBsb3Qgb2YgdXNlZnVsIHRlc3QgcG9pbnRzLiBBbHJpZ2h0LCB0aW1lIHRvIGNoZWNrIHRoZSBLY29uZmlnLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnYCB0byBzZWUgaG93IHRlc3QgbW9kZSBpcyBoYW5kbGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjc2MCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjU5OjU2LjM3ODAxODI0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNjU5NjYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0ZXN0bW9kZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlPTE4PWF0aDEwa19jb3JlLSQoQ09ORklHX0FUSDEwS19TUEVDVFJBTCkgKz0gc3BlY3RyYWwub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGU6MTk6YXRoMTBrX2NvcmUtJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGUtMjAtYXRoMTBrX2NvcmUtJChDT05GSUdfQVRIMTBLX1RSQUNJTkcpICs9IHRyYWNlLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5jLTI3LSNpbmNsdWRlIFxcXCJodHQuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYzoyODojaW5jbHVkZSBcXFwidGVzdG1vZGUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYy0yOS0jaW5jbHVkZSBcXFwid21pLW9wcy5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmM9NTc9TU9EVUxFX1BBUk1fREVTQyh1YXJ0X3ByaW50LCBcXFwiVWFydCB0YXJnZXQgZGVidWdnaW5nXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmM6NTg6TU9EVUxFX1BBUk1fREVTQyhza2lwX290cCwgXFxcIlNraXAgb3RwIGZhaWx1cmUgZm9yIGNhbGlicmF0aW9uIGluIHRlc3Rtb2RlXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmMtNTktTU9EVUxFX1BBUk1fREVTQyhjcnlwdG1vZGUsIFxcXCJDcnlwdG8gbW9kZTogMC1oYXJkd2FyZSwgMS1zb2Z0d2FyZVxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmM9MzU4Nj12b2lkIGF0aDEwa19jb3JlX3VucmVnaXN0ZXIoc3RydWN0IGF0aDEwayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYy0zNjA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5jOjM2MDg6XFx0YXRoMTBrX3Rlc3Rtb2RlX2Rlc3Ryb3koYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5jLTM2MDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaD0xMDExPXN0cnVjdCBhdGgxMGsge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgtMTI2OC1cXHRcXHR1OCAqZXZlbnRkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oOjEyNjk6XFx0fSB0ZXN0bW9kZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaC0xMjcwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jPTQyPXZvaWQgYXRoMTBrX2RlYnVnX3ByaW50X2h3ZndfaW5mbyhzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy01NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM6NTY6XFx0YXRoMTBrX2luZm8oYXIsIFxcXCJrY29uZmlnIGRlYnVnICVkIGRlYnVnZnMgJWQgdHJhY2luZyAlZCBkZnMgJWQgdGVzdG1vZGUgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTU3LVxcdFxcdCAgICBJU19FTkFCTEVEKENPTkZJR19BVEgxMEtfREVCVUcpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0yNS0jaW5jbHVkZSBcXFwidHhyeC5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6MjY6I2luY2x1ZGUgXFxcInRlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy0yNy0jaW5jbHVkZSBcXFwid21pLXRsdi5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjc6I2luY2x1ZGUgXFxcInRlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjE5OiNpbmNsdWRlIFxcXCJ0ZXN0bW9kZV9pLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTIwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTM0PXN0YXRpYyB2b2lkIGF0aDEwa190bV9ldmVudF91bnNlZ21lbnRlZChzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDA6XFx0bmxfc2tiID0gY2ZnODAyMTFfdGVzdG1vZGVfYWxsb2NfZXZlbnRfc2tiKGFyLVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQxLVxcdFxcdFxcdFxcdFxcdFxcdCAgIDIgKiBzaXplb2YodTMyKSArIHNrYi1cXHUwMDNlbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ0LVxcdFxcdGF0aDEwa193YXJuKGFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0NTpcXHRcXHRcXHQgICAgXFxcImZhaWxlZCB0byBhbGxvY2F0ZSBza2IgZm9yIHRlc3Rtb2RlIHdtaSBldmVudFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ2LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy01MS1cXHRcXHRhdGgxMGtfd2FybihhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NTI6XFx0XFx0XFx0ICAgIFxcXCJmYWlsZWQgdG8gcHV0IHRlc3Rtb2RlIHdtaSBldmVudCBjbWQgYXR0cmlidXRlOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNTMtXFx0XFx0XFx0ICAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjAtXFx0XFx0YXRoMTBrX3dhcm4oYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjYxOlxcdFxcdFxcdCAgICBcXFwiZmFpbGVkIHRvIHB1dCB0ZXN0bW9kZSB3bWkgZXZlbnQgY21kX2lkOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjItXFx0XFx0XFx0ICAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjktXFx0XFx0YXRoMTBrX3dhcm4oYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjcwOlxcdFxcdFxcdCAgICBcXFwiZmFpbGVkIHRvIGNvcHkgc2tiIHRvIHRlc3Rtb2RlIHdtaSBldmVudDogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTcxLVxcdFxcdFxcdCAgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo3NjpcXHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy03Ny19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9Nzk9c3RhdGljIHZvaWQgYXRoMTBrX3RtX2V2ZW50X3NlZ21lbnRlZChzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xMDEtXFx0aWYgKGN1cnJlbnRfc2VxID09IDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTAyOlxcdFxcdGFyLVxcdTAwM2V0ZXN0bW9kZS5leHBlY3RlZF9zZXEgPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxMDM6XFx0XFx0YXItXFx1MDAzZXRlc3Rtb2RlLmRhdGFfcG9zID0gMDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTA0LVxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTA1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxMDY6XFx0ZGF0YV9wb3MgPSBhci1cXHUwMDNldGVzdG1vZGUuZGF0YV9wb3M7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTEwNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjExNTpcXHRtZW1jcHkoXFx1MDAyNmFyLVxcdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGFbZGF0YV9wb3NdLCBidWZfcG9zLCBkYXRhbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTE2LVxcdGRhdGFfcG9zICs9IGRhdGFsZW47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTExNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTE4OlxcdGlmICgrK2FyLVxcdTAwM2V0ZXN0bW9kZS5leHBlY3RlZF9zZXEgIT0gdG90YWxfc2VnbWVudHMpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTE5OlxcdFxcdGFyLVxcdTAwM2V0ZXN0bW9kZS5kYXRhX3BvcyA9IGRhdGFfcG9zO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xMjAtXFx0XFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSwgXFxcInBhcnRpYWwgZGF0YSByZWNlaXZlZCAldS8ldVxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjEyNzpcXHRubF9za2IgPSBjZmc4MDIxMV90ZXN0bW9kZV9hbGxvY19ldmVudF9za2IoYXItXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTI4LVxcdFxcdFxcdFxcdFxcdFxcdCAgIDIgKiBzaXplb2YodTMyKSArIGRhdGFfcG9zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTEzMC1cXHRpZiAoIW5sX3NrYikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxMzE6XFx0XFx0YXRoMTBrX3dhcm4oYXIsIFxcXCJmYWlsZWQgdG8gYWxsb2NhdGUgc2tiIGZvciB0ZXN0bW9kZSB3bWkgZXZlbnRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xMzItXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTEzNi1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjEzNzpcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcImZhaWxlZCB0byBwdXQgdGVzdG1vZGUgd21pIGV2ZW50IGF0dHJpYnV0ZTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTEzOC1cXHRcXHRrZnJlZV9za2Iobmxfc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNDMtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxNDQ6XFx0XFx0YXRoMTBrX3dhcm4oYXIsIFxcXCJmYWlsZWQgdG8gcHV0IHRlc3Rtb2RlIHdtaSBldmVudCBjbWRfaWQ6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNDUtXFx0XFx0a2ZyZWVfc2tiKG5sX3NrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTQ4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxNDk6XFx0cmV0ID0gbmxhX3B1dChubF9za2IsIEFUSDEwS19UTV9BVFRSX0RBVEEsIGRhdGFfcG9zLCBcXHUwMDI2YXItXFx1MDAzZXRlc3Rtb2RlLmV2ZW50ZGF0YVswXSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTE1MC1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjE1MTpcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcImZhaWxlZCB0byBjb3B5IHNrYiB0byB0ZXN0bW9kZSB3bWkgZXZlbnQ6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNTItXFx0XFx0a2ZyZWVfc2tiKG5sX3NrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxNTY6XFx0Y2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTU3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYz0xNzA9Ym9vbCBhdGgxMGtfdG1fZXZlbnRfd21pKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTE3NC1cXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxNzU6XFx0XFx0ICAgXFxcInRlc3Rtb2RlIGV2ZW50IHdtaSBjbWRfaWQgJWQgc2tiICVwIHNrYi1cXHUwMDNlbGVuICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNzYtXFx0XFx0ICAgY21kX2lkLCBza2IsIHNrYi1cXHUwMDNlbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xODEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjE4MjpcXHRpZiAoIWFyLVxcdTAwM2V0ZXN0bW9kZS51dGZfbW9uaXRvcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xODMtXFx0XFx0Y29uc3VtZWQgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjE4NzpcXHQvKiBPbmx5IHRlc3Rtb2RlLmMgc2hvdWxkIGJlIGhhbmRsaW5nIGV2ZW50cyBmcm9tIHV0ZiBmaXJtd2FyZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTg4LVxcdCAqIG90aGVyd2lzZSBhbGwgc29ydCBvZiBwcm9ibGVtcyB3aWxsIGFyaXNlIGFzIG1hYzgwMjExIG9wZXJhdGlvbnNcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xOTQtXFx0XFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MTk1OlxcdFxcdFxcdCAgIFxcXCJ0ZXN0bW9kZSBkcm9wIG5vbi11dGYgZXZlbnQgY21kX2lkICV1XFxcXG5cXFwiLCBjbWRfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xOTYtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxOTk6XFx0aWYgKGFyLVxcdTAwM2V0ZXN0bW9kZS5leHBlY3RlZF9zZXEgIT0gQVRIMTBLX0ZUTV9TRUdfTk9ORSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMjAwLVxcdFxcdGF0aDEwa190bV9ldmVudF9zZWdtZW50ZWQoYXIsIGNtZF9pZCwgc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYz0yMTA9c3RhdGljIGludCBhdGgxMGtfdG1fY21kX2dldF92ZXJzaW9uKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTIxNS1cXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoyMTY6XFx0XFx0ICAgXFxcInRlc3Rtb2RlIGNtZCBnZXQgdmVyc2lvbl9tYWpvciAlZCB2ZXJzaW9uX21pbm9yICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0yMTctXFx0XFx0ICAgQVRIMTBLX1RFU1RNT0RFX1ZFUlNJT05fTUFKT1IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoyMjA6XFx0c2tiID0gY2ZnODAyMTFfdGVzdG1vZGVfYWxsb2NfcmVwbHlfc2tiKGFyLVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTIyMS1cXHRcXHRcXHRcXHRcXHRcXHRubGFfdG90YWxfc2l6ZShzaXplb2YodTMyKSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTI0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MjQ2OlxcdHJldHVybiBjZmc4MDIxMV90ZXN0bW9kZV9yZXBseShza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0yNDctfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTI0OT1zdGF0aWMgaW50IGF0aDEwa190bV9mZXRjaF91dGZfZmlybXdhcmVfYXBpXzEoc3RydWN0IGF0aDEwayAqYXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMjU5LVxcdHJldCA9IGZpcm13YXJlX3JlcXVlc3Rfbm93YXJuKFxcdTAwMjZmd19maWxlLVxcdTAwM2VmaXJtd2FyZSwgZmlsZW5hbWUsIGFyLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoyNjA6XFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSwgXFxcInRlc3Rtb2RlIGZ3IHJlcXVlc3QgJyVzJzogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTI2MS1cXHRcXHQgICBmaWxlbmFtZSwgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYz0yODM9c3RhdGljIGludCBhdGgxMGtfdG1fZmV0Y2hfZmlybXdhcmUoc3RydWN0IGF0aDEwayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzAzLVxcdHJldCA9IGF0aDEwa19jb3JlX2ZldGNoX2Zpcm13YXJlX2FwaV9uKGFyLCBmd19uYW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozMDQ6XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZhci1cXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTMwNS1cXHRpZiAocmV0ID09IDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MzA2OlxcdFxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfVEVTVE1PREUsIFxcXCJ0ZXN0bW9kZSB1c2luZyBmdyB1dGYgYXBpIDJcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzA3LVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTMwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MzEwOlxcdHJldCA9IGF0aDEwa190bV9mZXRjaF91dGZfZmlybXdhcmVfYXBpXzEoYXIsIFxcdTAwMjZhci1cXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTMxMS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozMTY6XFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSwgXFxcInRlc3Rtb2RlIHVzaW5nIHV0ZiBhcGkgMVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTMxOC1vdXQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjMxOTpcXHR1dGZfbW9kZV9mdyA9IFxcdTAwMjZhci1cXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZnc7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTMyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYz0zMzY9c3RhdGljIGludCBhdGgxMGtfdG1fY21kX3V0Zl9zdGFydChzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjM0MTpcXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLCBcXFwidGVzdG1vZGUgY21kIHV0ZiBzdGFydFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTM0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjM1NjpcXHRpZiAoV0FSTl9PTihhci1cXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZS5maXJtd2FyZSAhPSBOVUxMKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zNTctXFx0XFx0LyogdXRmIGltYWdlIGlzIGFscmVhZHkgZG93bmxvYWRlZCwgaXQgc2hvdWxkbid0IGJlICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozNjg6XFx0aWYgKGFyLVxcdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlLmNvZGVzd2FwX2RhdGEgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6MzY5OlxcdCAgICBhci1cXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZS5jb2Rlc3dhcF9sZW4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzcwLVxcdFxcdHJldCA9IGF0aDEwa19zd2FwX2NvZGVfc2VnX2luaXQoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjM3MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2YXItXFx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3LmZ3X2ZpbGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zNzItXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTM4MC1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozODE6XFx0YXItXFx1MDAzZXRlc3Rtb2RlLnV0Zl9tb25pdG9yID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzgyLVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozODQ6XFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSwgXFxcInRlc3Rtb2RlIHdtaSB2ZXJzaW9uICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzozODU6XFx0XFx0ICAgYXItXFx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3LmZ3X2ZpbGUud21pX29wX3ZlcnNpb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zODYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMzg4LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6Mzg5OlxcdFxcdGF0aDEwa19lcnIoYXIsIFxcXCJmYWlsZWQgdG8gcG93ZXIgdXAgaGlmICh0ZXN0bW9kZSk6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zOTAtXFx0XFx0YXItXFx1MDAzZXN0YXRlID0gQVRIMTBLX1NUQVRFX09GRjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjM5NDpcXHRhci1cXHUwMDNldGVzdG1vZGUuZXZlbnRkYXRhID0ga3phbGxvYyhBVEhfRlRNX0VWRU5UX01BWF9CVUZfTEVOR1RILCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6Mzk1OlxcdGlmICghYXItXFx1MDAzZXRlc3Rtb2RlLmV2ZW50ZGF0YSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zOTYtXFx0XFx0cmV0ID0gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MDAtXFx0cmV0ID0gYXRoMTBrX2NvcmVfc3RhcnQoYXIsIEFUSDEwS19GSVJNV0FSRV9NT0RFX1VURixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDAxOlxcdFxcdFxcdFxcdFxcdTAwMjZhci1cXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MDItXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0MDM6XFx0XFx0YXRoMTBrX2VycihhciwgXFxcImZhaWxlZCB0byBzdGFydCBjb3JlICh0ZXN0bW9kZSk6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MDQtXFx0XFx0YXItXFx1MDAzZXN0YXRlID0gQVRIMTBLX1NUQVRFX09GRjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQxMDpcXHRpZiAoc3RybGVuKGFyLVxcdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlLmZ3X3ZlcnNpb24pIFxcdTAwM2UgMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDExOlxcdFxcdHZlciA9IGFyLVxcdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlLmZ3X3ZlcnNpb247XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQxMi1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDIxLWVycl9yZWxlYXNlX2V2ZW50ZGF0YTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDIyOlxcdGtmcmVlKGFyLVxcdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0MjM6XFx0YXItXFx1MDAzZXRlc3Rtb2RlLmV2ZW50ZGF0YSA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQyNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MjgtZXJyX3JlbGVhc2VfdXRmX21vZGVfZnc6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQyOTpcXHRpZiAoYXItXFx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3LmZ3X2ZpbGUuY29kZXN3YXBfZGF0YSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0MzA6XFx0ICAgIGFyLVxcdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlLmNvZGVzd2FwX2xlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDMxLVxcdFxcdGF0aDEwa19zd2FwX2NvZGVfc2VnX3JlbGVhc2UoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQzMjpcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZhci1cXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQzMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDM0OlxcdHJlbGVhc2VfZmlybXdhcmUoYXItXFx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3LmZ3X2ZpbGUuZmlybXdhcmUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0MzU6XFx0YXItXFx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3LmZ3X2ZpbGUuZmlybXdhcmUgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00MzYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9NDQzPXN0YXRpYyB2b2lkIF9fYXRoMTBrX3RtX2NtZF91dGZfc3RvcChzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00NTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ1MjpcXHRhci1cXHUwMDNldGVzdG1vZGUudXRmX21vbml0b3IgPSBmYWxzZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDUzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDU2OlxcdGlmIChhci1cXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZS5jb2Rlc3dhcF9kYXRhIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ1NzpcXHQgICAgYXItXFx1MDAzZXRlc3Rtb2RlLnV0Zl9tb2RlX2Z3LmZ3X2ZpbGUuY29kZXN3YXBfbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00NTgtXFx0XFx0YXRoMTBrX3N3YXBfY29kZV9zZWdfcmVsZWFzZShhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDU5OlxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNmFyLVxcdTAwM2V0ZXN0bW9kZS51dGZfbW9kZV9mdy5md19maWxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0NjE6XFx0cmVsZWFzZV9maXJtd2FyZShhci1cXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZS5maXJtd2FyZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ2MjpcXHRhci1cXHUwMDNldGVzdG1vZGUudXRmX21vZGVfZncuZndfZmlsZS5maXJtd2FyZSA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDY0OlxcdGtmcmVlKGFyLVxcdTAwM2V0ZXN0bW9kZS5ldmVudGRhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0NjU6XFx0YXItXFx1MDAzZXRlc3Rtb2RlLmV2ZW50ZGF0YSA9IE5VTEw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYz00NzA9c3RhdGljIGludCBhdGgxMGtfdG1fY21kX3V0Zl9zdG9wKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ3My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDc0OlxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfVEVTVE1PREUsIFxcXCJ0ZXN0bW9kZSBjbWQgdXRmIHN0b3BcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00NzUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9NDk0PXN0YXRpYyBpbnQgYXRoMTBrX3RtX2NtZF93bWkoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNTIyLVxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfVEVTVE1PREUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjUyMzpcXHRcXHQgICBcXFwidGVzdG1vZGUgY21kIHdtaSBjbWRfaWQgJWQgYnVmICVwIGJ1Zl9sZW4gJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTUyNC1cXHRcXHQgICBjbWRfaWQsIGJ1ZiwgYnVmX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNTM3LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NTM4OlxcdFxcdGF0aDEwa193YXJuKGFyLCBcXFwiZmFpbGVkIHRvIHRyYW5zbWl0IHdtaSBjb21tYW5kICh0ZXN0bW9kZSk6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy01MzktXFx0XFx0XFx0ICAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9NTUwPXN0YXRpYyBpbnQgYXRoMTBrX3RtX2NtZF90bHYoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNTc3LVxcdG51bV9zZWdtZW50cyA9IHRvdGFsX2J5dGVzIC8gTUFYX1dNSV9VVEZfTEVOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo1Nzg6XFx0YXItXFx1MDAzZXRlc3Rtb2RlLmV4cGVjdGVkX3NlcSA9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTU3OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02MDItXFx0XFx0ZnRtX2NtZC1cXHUwMDNlc2VnX2hkci5sZW4gPSBfX2NwdV90b19sZTMyKHRvdGFsX2J5dGVzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NjAzOlxcdFxcdGZ0bV9jbWQtXFx1MDAzZXNlZ19oZHIubXNncmVmID0gX19jcHVfdG9fbGUzMihhci1cXHUwMDNldGVzdG1vZGUuZnRtX21zZ3JlZik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTYwNC1cXHRcXHRzZWdpbmZvID0gRklFTERfUFJFUChBVEgxMEtfRlRNX1NFR0hEUl9UT1RBTF9TRUdNRU5UUywgbnVtX3NlZ21lbnRzKSB8XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo2MjE6XFx0YXItXFx1MDAzZXRlc3Rtb2RlLmZ0bV9tc2dyZWYrKztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjIyLVxcdHJldCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM9NjI5PWludCBhdGgxMGtfdG1fY21kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTY0My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NjQ0OlxcdGFyLVxcdTAwM2V0ZXN0bW9kZS5leHBlY3RlZF9zZXEgPSBBVEgxMEtfRlRNX1NFR19OT05FO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02NDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo2NjM6dm9pZCBhdGgxMGtfdGVzdG1vZGVfZGVzdHJveShzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaC05LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaDoxMDp2b2lkIGF0aDEwa190ZXN0bW9kZV9kZXN0cm95KHN0cnVjdCBhdGgxMGsgKmFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmg9MTM9aW50IGF0aDEwa190bV9jbWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oOjE4OnN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMGtfdGVzdG1vZGVfZGVzdHJveShzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmgtNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaDo3Oi8qIFxcXCJBUElcXFwiIGxldmVsIG9mIHRoZSBhdGgxMGsgdGVzdG1vZGUgaW50ZXJmYWNlLiBCdW1wIGl0IGFmdGVyIGV2ZXJ5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmgtOC0gKiBpbmNvbXBhdGlibGUgaW50ZXJmYWNlIGNoYW5nZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oPTIwPWVudW0gYXRoMTBrX3RtX2F0dHIge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmgtMzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmg6MzQ6LyogQWxsIGF0aDEwayB0ZXN0bW9kZSBpbnRlcmZhY2UgY29tbWFuZHMgc3BlY2lmaWVkIGluXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmgtMzUtICogQVRIMTBLX1RNX0FUVFJfQ01EXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaD0zNz1lbnVtIGF0aDEwa190bV9jbWQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oOjM4OlxcdC8qIFJldHVybnMgdGhlIHN1cHBvcnRlZCBhdGgxMGsgdGVzdG1vZGUgaW50ZXJmYWNlIHZlcnNpb24gaW5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaC0zOS1cXHQgKiBBVEgxMEtfVE1fQVRUUl9WRVJTSU9OLiBBbHdheXMgZ3VhcmFudGVlZCB0byB3b3JrLiBVc2VyIHNwYWNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmgtNDAtXFx0ICogdXNlcyB0aGlzIHRvIHZlcmlmeSBpdCdzIHVzaW5nIHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgdGhlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmg6NDE6XFx0ICogdGVzdG1vZGUgaW50ZXJmYWNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmgtNDItXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaC02OS1cXHQgKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oOjcwOlxcdCAqIFRoaXMgbGVnYWN5IHRlc3Rtb2RlIGNvbW1hbmQgc2hhcmVzIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBnZXQtdmVyc2lvblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oLTcxLVxcdCAqIGNvbW1hbmQuIFRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlbSwgd2UgY2hlY2sgd2hldGhlciB0aGUgZGF0YSBhdHRyaWJ1dGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLXRsdi5jLTE1LSNpbmNsdWRlIFxcXCJwMnAuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS10bHYuYzoxNjojaW5jbHVkZSBcXFwidGVzdG1vZGUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS10bHYuYy0xNy0jaW5jbHVkZSBcXFwidHhyeC5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktdGx2LmM9NjM5PXN0YXRpYyB2b2lkIGF0aDEwa193bWlfdGx2X29wX3J4KHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktdGx2LmMtNjU2LVxcdCAqIGtub3cgdGhlIFVURiBmaXJtd2FyZSBoYXMgYm9vdGVkLCBvdGhlcnMgd2UgYXJlIGp1c3QgYnlwYXNzIFdNSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLXRsdi5jOjY1NzpcXHQgKiBldmVudHMgdG8gdGVzdG1vZGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktdGx2LmMtNjU4LVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktdGx2LmMtNjYwLVxcdFxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfV01JLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLXRsdi5jOjY2MTpcXHRcXHRcXHQgICBcXFwid21pIHRsdiB0ZXN0bW9kZSBjb25zdW1lZCAweCV4XFxcXG5cXFwiLCBpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWktdGx2LmMtNjYyLVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy0xNy0jaW5jbHVkZSBcXFwibWFjLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYzoxODojaW5jbHVkZSBcXFwidGVzdG1vZGUuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTE5LSNpbmNsdWRlIFxcXCJ3bWktb3BzLmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jPTYwMDM9c3RhdGljIHZvaWQgYXRoMTBrX3dtaV8xMF8xX29wX3J4KHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02MDIwLVxcdCAqIGtub3cgdGhlIFVURiBmaXJtd2FyZSBoYXMgYm9vdGVkLCBvdGhlcnMgd2UgYXJlIGp1c3QgYnlwYXNzIFdNSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NjAyMTpcXHQgKiBldmVudHMgdG8gdGVzdG1vZGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02MDIyLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02MDI0LVxcdFxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfV01JLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NjAyNTpcXHRcXHRcXHQgICBcXFwid21pIHRlc3Rtb2RlIGNvbnN1bWVkIDB4JXhcXFxcblxcXCIsIGlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTYwMjYtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jPTYxMzQ9c3RhdGljIHZvaWQgYXRoMTBrX3dtaV8xMF8yX29wX3J4KHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02MTUxLVxcdCAqIGtub3cgdGhlIFVURiBmaXJtd2FyZSBoYXMgYm9vdGVkLCBvdGhlcnMgd2UgYXJlIGp1c3QgYnlwYXNzIFdNSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NjE1MjpcXHQgKiBldmVudHMgdG8gdGVzdG1vZGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02MTUzLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02MTU1LVxcdFxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfV01JLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NjE1NjpcXHRcXHRcXHQgICBcXFwid21pIHRlc3Rtb2RlIGNvbnN1bWVkIDB4JXhcXFxcblxcXCIsIGlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTYxNTctXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jPTYyODM9c3RhdGljIHZvaWQgYXRoMTBrX3dtaV8xMF80X29wX3J4KHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02MzAwLVxcdCAqIGtub3cgdGhlIFVURiBmaXJtd2FyZSBoYXMgYm9vdGVkLCBvdGhlcnMgd2UgYXJlIGp1c3QgYnlwYXNzIFdNSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NjMwMTpcXHQgKiBldmVudHMgdG8gdGVzdG1vZGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02MzAyLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuYy02MzA0LVxcdFxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfV01JLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd21pLmM6NjMwNTpcXHRcXHRcXHQgICBcXFwid21pIHRlc3Rtb2RlIGNvbnN1bWVkIDB4JXhcXFxcblxcXCIsIGlkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jLTYzMDYtXFx0XFx0Z290byBvdXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA3OjU5OjU2LjY5NDYxOTk3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTkyNjUzMzQzMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYGF0aDEwa2AgRHJpdmVyIGluIFRlc3Rtb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBmb3IgZnV6emluZyB0aGUgYGF0aDEwa2AgZHJpdmVyLiBUaGUgY29yZSBvZiB0aGlzIGlzIHRoZSBgQ09ORklHX05MODAyMTFfVEVTVE1PREVgIGNvbmZpZyBvcHRpb24uIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB0ZXN0IG1vZGUgaXMgZXhwb3NlZCB0byB1c2Vyc3BhY2Ug4oCTIGFuZCBpdCBsb29rcyBsaWtlIGl0IGlzLCB2aWEgYG5sODAyMTFgLiBUaGF0IG9wZW5zIHVwIHNvbWUgaW50ZXJlc3RpbmcgcG9zc2liaWxpdGllcy5cblxuSSBzZWUgdGhhdCBgYXRoMTBrYCAqY2FuKiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGVtdWxhdGlvbi4gVGhlIGludGVyZXN0aW5nIHRoaW5nIGhlcmUgaXMgYGF0aDEwa190bV9ldmVudF93bWlgLiBUaGF0IGZ1bmN0aW9uIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBkcml2ZXIgcmVjZWl2ZXMgYSBXTUkgZXZlbnQgZnJvbSB0aGUgZmlybXdhcmUuIEluIGEgZnV6emluZyBzY2VuYXJpbywgdGhpcyBtZWFucyB0aGF0IHRoZSBmdXp6ZXIgY2FuIGVtdWxhdGUgYSBVU0IgZGV2aWNlIGFuZCBpbmplY3QgdGhlc2UgV01JIGV2ZW50cyBkaXJlY3RseSBpbnRvIHRoZSBkcml2ZXIuXG5cblRoZSBwYXRjaCBzZWVtcyB0byBhZGQgYSBjaGVjaywgYGF0aDEwa190bV9pc191dGZfZXZlbnQoY21kX2lkKWAsIHdoaWNoIGRyb3BzIG5vbi1VVEYgZXZlbnRzIHNwZWNpZmljYWxseSB3aGVuIGluIHRlc3Rtb2RlLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UsIGFsdGVyaW5nIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgZmlybXdhcmUgZXZlbnRzLiBUaGF0J3MgYSB0YXJnZXQhIEJlY2F1c2UgdGhlIGZ1enplciBjYW4gZW11bGF0ZSBVU0IgZGV2aWNlcywgaXQgY2FuIGRlZmluaXRlbHkgdHJpZ2dlciB0aGlzIGNvZGUgcGF0aCBieSBzZW5kaW5nIGEgV01JIGV2ZW50IHdoaWxlIGluIHRlc3Rtb2RlLlxuXG5Ob3csIHRoZSBuYXR1cmFsIHF1ZXN0aW9uIGlzLCBoYXMgdGhpcyBhbHJlYWR5IGJlZW4gZnV6emVkPyBJIGtub3cgU3l6a2FsbGVyIGhhcyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMsIHNvIGxldCdzIHNlZSBpZiB0aGVyZSdzIGFueSBleGlzdGluZyBjb3ZlcmFnZS4gVGhlIGNvZGUgbG9jYXRpb24gaXMgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuY2AuIEdvb2QsIGxldCdzIGV4cGxvcmUuXG5cbmBhdGgxMGtfdG1fZXZlbnRfd21pYCBpcyB0aGUgbWFpbiB0YXJnZXQuIEl0J3MgY2FsbGVkIGJ5IGBhdGgxMGtfd21pXzEwXzFfb3BfcnhgLCBgYXRoMTBrX3dtaV8xMF8yX29wX3J4YCwgYGF0aDEwa193bWlfMTBfNF9vcF9yeGAsIGFuZCBgYXRoMTBrX3dtaV90bHZfb3BfcnhgLiBUaGVzZSBhcmUgYWxsIFJYIGhhbmRsZXJzIGZvciBXTUkgZXZlbnRzIGNvbWluZyBmcm9tIHRoZSBmaXJtd2FyZS4gUHJlY2lzZWx5IHdoYXQgdGhlIGZ1enplciBjYW4gY29udHJvbCBieSBlbXVsYXRpbmcgdGhlIFVTQiBkZXZpY2UhXG5cblNvLCB0aGUgY29uY2x1c2lvbiBpcyB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgZnV6emFibGUgYW5kIG9mZmVycyBhIG5ldyBhdHRhY2sgc3VyZmFjZS4gVGltZSB0byBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMgZm9yIGZ1enppbmcgZm9jdXMuIENsZWFybHksIGBhdGgxMGtfdG1fZXZlbnRfd21pYCBpcyB0aGUgbWFpbiBvbmUuIFRoZSBzdGF0aWMgaGVscGVyIGBhdGgxMGtfdG1faXNfdXRmX2V2ZW50YCBpc24ndCBhcyBjcml0aWNhbCwgc28gSSB3b24ndCBmb2N1cyBvbiBpdC4gTGV0J3MgZGlnIGludG8gdGhlIHNpZ25hdHVyZSBvZiBgYXRoMTBrX3RtX2V2ZW50X3dtaWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MzczLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjAwOjE1Ljk1OTk1Nzk4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTU5MzM1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJib29sIGF0aDEwa190bV9ldmVudF93bWlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTE1OT1zdGF0aWMgYm9vbCBhdGgxMGtfdG1faXNfdXRmX2V2ZW50KHUzMiBjbWRfaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMTY5LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoxNzA6Ym9vbCBhdGgxMGtfdG1fZXZlbnRfd21pKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0xNzEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oPTEwPXZvaWQgYXRoMTBrX3Rlc3Rtb2RlX2Rlc3Ryb3koc3RydWN0IGF0aDEwayAqYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaC0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmg6MTI6Ym9vbCBhdGgxMGtfdG1fZXZlbnRfd21pKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgY21kX2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMTMtaW50IGF0aDEwa190bV9jbWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmg9MTg9c3RhdGljIGlubGluZSB2b2lkIGF0aDEwa190ZXN0bW9kZV9kZXN0cm95KHN0cnVjdCBhdGgxMGsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5oLTIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaDoyMjpzdGF0aWMgaW5saW5lIGJvb2wgYXRoMTBrX3RtX2V2ZW50X3dtaShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMjMtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjAwOjE2LjA3MTU3MzgyM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyNDc2MjcxNzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGF0aDEwa190bV9ldmVudF93bWlgIEZ1bmN0aW9uIGZvciBSZXNlYXJjaCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgdGhlIGBhdGgxMGtfdG1fZXZlbnRfd21pYCBmdW5jdGlvbiBpcyBkZWZpbmVkIGFuZCAqbm90KiBzdGF0aWMsIGFuZCBpdCdzIGV2ZW4gZXhwb3J0ZWQgb3IgYXQgbGVhc3QsIG5vdCBzdGF0aWMgaW4gYHRlc3Rtb2RlLmNgLiBJbnRlcmVzdGluZy4gQW5kLCBoYW5nIG9uLi4uaXQncyAqYWxzbyogY2FsbGVkIGZyb20gYHdtaS5jYCBhbmQgYHdtaS10bHYuY2AuIFRoaXMgbWFrZXMgaXQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiAtIGEgZ29vZCwgY2VudHJhbCBmb2N1cyBwb2ludCBmb3IgZGlnZ2luZyBpbnRvIHRoZSBBdGhlcm9zIGRyaXZlcidzIHRlc3QgbW9kZSBmdW5jdGlvbmFsaXR5LlxuXG5SaWdodCwgc28gdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgZW52aXJvbm1lbnQgc2V0IHVwIHJpZ2h0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLiBJJ20gYXNzdW1pbmcsIG9idmlvdXNseSwgdGhhdCBgQ09ORklHX0FUSDEwS2AgaXMgbmVlZGVkLCBidXQgSSBzaG91bGQgYWxzbyBlbnN1cmUgYENPTkZJR19BVEgxMEtfVVNCYCBpcyBlbmFibGVkLCBqdXN0IGluIGNhc2UgSSB3YW50IHRvIGV4cGxvcmUgVVNCIGZ1enppbmcuIE9mIGNvdXJzZSwgYENPTkZJR19OTDgwMjExX1RFU1RNT0RFYCBpcyBjcml0aWNhbCBiZWNhdXNlIGl0IGRpcmVjdGx5IGVuYWJsZXMgdGhlIGB0ZXN0bW9kZS5jYCBmaWxlLlxuXG5Ob3csIGxldCBtZSBqdXN0IGNvbmZpcm0gdGhvc2UgY29uZmlnIG9wdGlvbnMgYnkgcXVpY2tseSByZWZlcmVuY2luZyB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSBJJ20gd29ya2luZyB3aXRoIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4OTMxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjAwOjM4LjU0Nzg0ODMwN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTczNTY2NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFUSDEwS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6Mjpjb25maWcgQVRIMTBLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgODAyLjExYWMgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0xNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6MTU6Y29uZmlnIEFUSDEwS19DRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0xNi1cXHRib29sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzoxODpjb25maWcgQVRIMTBLX1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGgxMGsgUENJIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjI0OmNvbmZpZyBBVEgxMEtfQUhCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoMTBrIEFIQiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzozMDpjb25maWcgQVRIMTBLX1NESU9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMzEtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoMTBrIFNESU8gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0zNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6MzY6Y29uZmlnIEFUSDEwS19VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMzctXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoMTBrIFVTQiBzdXBwb3J0IChFWFBFUklNRU5UQUwpXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo0Mzpjb25maWcgQVRIMTBLX1NOT0NcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNDQtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIGF0aDEwayBTTk9DIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjU2OmNvbmZpZyBBVEgxMEtfREVCVUdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNTctXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGgxMGsgZGVidWdnaW5nXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo2NDpjb25maWcgQVRIMTBLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNjUtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGgxMGsgZGVidWdmcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo3Mjpjb25maWcgQVRIMTBLX0xFRFNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNzMtXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo3ODpjb25maWcgQVRIMTBLX1NQRUNUUkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTc5LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoMTBrIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy04NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6ODY6Y29uZmlnIEFUSDEwS19UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTg3LVxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoMTBrIHRyYWNpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy05Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6OTM6Y29uZmlnIEFUSDEwS19ERlNfQ0VSVElGSUVEXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTk0LVxcdGJvb2wgXFxcIkF0aGVyb3MgREZTIHN1cHBvcnQgZm9yIGNlcnRpZmllZCBwbGF0Zm9ybXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjAwOjM4LjYwNTIxNjY3NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzAwOTU5MjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDaGVja2luZyBgQ09ORklHX05MODAyMTFfVEVTVE1PREVgIC0gTXkgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuUmlnaHQsIGxldCdzIGRpdmUgc3RyYWlnaHQgaW4uIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gdmVyaWZ5IHRoZSBzdGF0dXMgb2YgYENPTkZJR19OTDgwMjExX1RFU1RNT0RFYC4gSXQncyBhIGtleSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24sIGFuZCBpdHMgcHJlc2VuY2Ugb3IgYWJzZW5jZSBmdW5kYW1lbnRhbGx5IHNoYXBlcyBob3cgSSdtIGdvaW5nIHRvIGFwcHJvYWNoIHRoaXMgaW52ZXN0aWdhdGlvbiBvciBkZWJ1Z2dpbmcgc2Vzc2lvbi4gSSBpbnN0YW50bHkgdGhpbmsgb2YgaXRzIGltcGxpY2F0aW9ucyDigJMgZG9lcyBpdCB1bmxvY2sgc3BlY2lmaWMsIHBvdGVudGlhbGx5IHJpc2t5LCB0ZXN0IGludGVyZmFjZXMgaW4gbmw4MDIxMT8gRG9lcyBpdCBpbXBhY3QgdGhlIHdheSBjZXJ0YWluIHdpcmVsZXNzIGRyaXZlcnMgYmVoYXZlPyBBbmQgY3JpdGljYWxseSwgaXMgdGhpcyBhIGRldmVsb3BtZW50IHN5c3RlbSBvciBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQ/IFRoYXQgaW1tZWRpYXRlbHkgZnJhbWVzIHRoZSBsZXZlbCBvZiBjYXV0aW9uIEknbSBnb2luZyB0byBhcHBseS4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSBwb3RlbnRpYWwgZm9yIHVuaW50ZW5kZWQgc2lkZSBlZmZlY3RzIGlmIHRoZSBzZXR0aW5nIGlzIGVuYWJsZWQsIGFuZCB0aGUgY29uc3RyYWludHMgaWYgaXQncyBkaXNhYmxlZCwgYmVjYXVzZSBib3RoIGhhdmUgdmVyeSBjbGVhciBpbXBhY3RzIG9uIGRpYWdub3N0aWMgb3B0aW9ucy4gSXQncyB0aGUgbHluY2hwaW4sIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8ga25vdyBiZWZvcmUgbW92aW5nIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNDk1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MDA6NDUuOTA2MTgwODQ3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTczNDM4MjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvS2NvbmZpZz0zNj1pZiBDRkc4MDIxMVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTM3LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjM4OmNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXFxubmV0L3dpcmVsZXNzL0tjb25maWctMzktXFx0Ym9vbCBcXFwibmw4MDIxMSB0ZXN0bW9kZSBjb21tYW5kXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODowMDo0OC40Nzk2NDg1MjlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQxMTAwNDU5MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBXaXJlbGVzcyBEcml2ZXIgQ29uZmlndXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uczogYEFUSDEwS2AsIGBBVEgxMEtfVVNCYCwgYW5kIGBOTDgwMjExX1RFU1RNT0RFYC4gSW1tZWRpYXRlbHksIEknbSBub3RpbmcgdGhhdCBgQVRIMTBLX1VTQmAgaXMgcHJlc2VudCwgYnV0IEkgbmVlZCB0byBiZSBzdXJlLiBJJ20gcmVjYWxsaW5nIHRoYXQgYEFUSDEwS19VU0JgIGxpa2VseSBoYXMgYSBkZXBlbmRlbmN5IG9uIGBVU0JgIGl0c2VsZiwgc28gSSBzaG91bGQgY29uZmlybSB0aGF0IHJlbGF0aW9uc2hpcC4gTGV0J3MgZGlnIGludG8gdGhlIGRlcGVuZGVuY2llcyBmb3IgYEFUSDEwS19VU0JgIHRvIGVuc3VyZSB0aGlzIGlzIHVuZGVyc3Rvb2QgY29tcGxldGVseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA4NDYsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODowMTowMi41ODk2OTY3MzVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNDI0MDYzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRIMTBLX1VTQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc9MzA9Y29uZmlnIEFUSDEwS19TRElPXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjM2OmNvbmZpZyBBVEgxMEtfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTM3LVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDEwayBVU0Igc3VwcG9ydCAoRVhQRVJJTUVOVEFMKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MDE6MDIuODkzOTQxODE2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NDIzNzcxOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIEF0aGVyb3MgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgYXRoMTBrIGRyaXZlciBpcyBjb25maWd1cmVkLiBMZXQncyBzdGFydCB3aXRoIHRoZSBiYXNpY3MsIHNvIEknbSBoZWFkaW5nIGRpcmVjdGx5IHRvIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIGRyaXZlcidzIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgbGluZSAzNi4gVGhhdCdzIGEgcmVhc29uYWJsZSBwbGFjZSB0byBzdGFydCBnZXR0aW5nIGEgZmVlbCBmb3IgdGhlIGZ1bmRhbWVudGFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyIGFuZCBob3cgdGhleSdyZSBzdHJ1Y3R1cmVkLiBUaGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgdmFsdWVzLCBhbmQgdGhlIG92ZXJhbGwgZGVzaWduIHBoaWxvc29waHkgYmVoaW5kIHRoZSBtb2R1bGUgY29uZmlndXJhdGlvbi4gS25vd2luZyB0aGUgS2NvbmZpZyBpcyBrZXkgdG8gZGVidWdnaW5nIGJ1aWxkIGlzc3VlcywgdW5kZXJzdGFuZGluZyBtb2R1bGUgYmVoYXZpb3IgYW5kIGV2ZW4gYWRkaW5nIGZlYXR1cmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTIwMSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjAxOjA3LjYzNjMyMjA1NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDc3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDMwOlxcdGNvbmZpZyBBVEgxMEtfU0RJT1xcbiAgMzE6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoMTBrIFNESU8gc3VwcG9ydFxcXCJcXG4gIDMyOlxcdFxcdGRlcGVuZHMgb24gQVRIMTBLIFxcdTAwMjZcXHUwMDI2IE1NQ1xcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIFNESU8vTU1DIGJ1cy5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0Y29uZmlnIEFUSDEwS19VU0JcXG4gIDM3OlxcdFxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDEwayBVU0Igc3VwcG9ydCAoRVhQRVJJTUVOVEFMKVxcXCJcXG4gIDM4OlxcdFxcdGRlcGVuZHMgb24gQVRIMTBLIFxcdTAwMjZcXHUwMDI2IFVTQlxcbiAgMzk6XFx0XFx0aGVscFxcbiAgNDA6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBVU0IgYnVzLiBDdXJyZW50bHlcXG4gIDQxOlxcdFxcdCAgd29yayBpbiBwcm9ncmVzcyBhbmQgd2lsbCBub3QgZnVsbHkgd29yay5cXG4gIDQyOlxcdFxcbiAgNDM6XFx0Y29uZmlnIEFUSDEwS19TTk9DXFxuICA0NDpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gYXRoMTBrIFNOT0Mgc3VwcG9ydFxcXCJcXG4gIDQ1OlxcdFxcdGRlcGVuZHMgb24gQVRIMTBLXFxuICA0NjpcXHRcXHRkZXBlbmRzIG9uIEFSQ0hfUUNPTSB8fCBDT01QSUxFX1RFU1RcXG4gIDQ3OlxcdFxcdGRlcGVuZHMgb24gUUNPTV9TTUVNXFxuICA0ODpcXHRcXHRkZXBlbmRzIG9uIFFDT01fUlBST0NfQ09NTU9OIHx8IFFDT01fUlBST0NfQ09NTU9OPW5cXG4gIDQ5OlxcdFxcdHNlbGVjdCBQT1dFUl9TRVFVRU5DSU5HXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjAxOjA3LjYzNjQzMjA3NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTQzMTA0MDg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBBVEgxMEtfVVNCYCB0aGluZywgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBidWlsdCBvbiBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZGVwZW5kZW5jeSBjaGFpbi4gRmlyc3QsIGBBVEgxMEtfVVNCYCBuZWVkcyBib3RoIGBBVEgxMEtgIGFuZCBgVVNCYC4gUHJldHR5IGxvZ2ljYWwsIHJpZ2h0PyBJdCdzIGEgVVNCIGltcGxlbWVudGF0aW9uIG9mIHNvbWV0aGluZyBidWlsdCBvbiBgQVRIMTBLYC4gTm93LCB0aGUgaW50ZXJlc3RpbmcgYml0LiBgQVRIMTBLYCBpdHNlbGYsIHRoZSBjb3JlIG9mIHRoaXMsIHJlbGllcyBvbiBgTUFDODAyMTFgIGFuZCBgSEFTX0lPTUVNYC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyBgTUFDODAyMTFgIGlzIHRoZSA4MDIuMTEgc3RhY2sgaXTigJlzIGJ1aWx0IG9uLCBhbmQgYEhBU19JT01FTWAgaXMgbGlrZWx5IGNydWNpYWwgZm9yIHRoZSBoYXJkd2FyZSBpbnRlcmFjdGlvbi5cblxuVGltZSB0byBkcmlsbCBkb3duIGFuZCBjaGVjayB0aGUgYEFUSDEwS2AgZGVwZW5kZW5jaWVzIGRpcmVjdGx5LiBHb3R0YSBtYWtlIHN1cmUgdGhvc2UgZm91bmRhdGlvbnMgYXJlIHNvbGlkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTcyOCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MDE6MTIuNTc5NTM5ODUzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2OTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xcbiAgIDI6XFx0Y29uZmlnIEFUSDEwS1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgODAyLjExYWMgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTEgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgIDU6XFx0XFx0c2VsZWN0IEFUSF9DT01NT05cXG4gICA2OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgIDc6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAgODpcXHRcXHRzZWxlY3QgQVRIMTBLX0NFXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cXG4gIDExOlxcdFxcdCAgQXRoZXJvcyBJRUVFIDgwMi4xMWFjIGZhbWlseSBvZiBjaGlwc2V0cy5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgYXRoMTBrLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRjb25maWcgQVRIMTBLX0NFXFxuICAxNjpcXHRcXHRib29sXFxuICAxNzpcXHRcXG4gIDE4OlxcdGNvbmZpZyBBVEgxMEtfUENJXFxuICAxOTpcXHRcXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGgxMGsgUENJIHN1cHBvcnRcXFwiXFxuICAyMDpcXHRcXHRkZXBlbmRzIG9uIEFUSDEwSyBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MDE6MTIuNTc5NjA5NjYzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNDIwNTYyMTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBBVEgxMEsgRHJpdmVyIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoZSBgQVRIMTBLYCBkcml2ZXIgaXMgcmVsaWFudCBvbiBgTUFDODAyMTFgIGFuZCBgSEFTX0RNQWAsIHNvIHRob3NlIGFyZSBwcmVyZXF1aXNpdGVzLiBUbyBlbmFibGUgdGhlIHJlbGV2YW50IGZ1bmN0aW9uYWxpdHksIEknbGwgbmVlZCB0byBjb25maWd1cmUgYEFUSDEwS2AsIGBBVEgxMEtfVVNCYCwgYW5kIGBOTDgwMjExX1RFU1RNT0RFYC5cblxuSGFuZyBvbiwgYEFUSDEwS19VU0JgIGlzIG1hcmtlZCBhcyBleHBlcmltZW50YWwsIGJ1dCB0aGUga2VybmVsIGluY2x1ZGVzIGl0LCBhbmQsIGNydWNpYWxseSwgc3l6a2FsbGVyIGNhbiB0YXJnZXQgaXQgZm9yIGZ1enppbmcuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIFRoZSBwYXRjaCBJJ20gbG9va2luZyBhdCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgYGF0aDEwa190bV9ldmVudF93bWlgLiBTbyB0aGUgY29yZSBvZiBteSBhbmFseXNpcyBjb21lcyBkb3duIHRvIGhvdyByZWFjaGFibGUgdGhlIGZ1bmN0aW9uIGlzLlxuXG5UaGUga2V5IGlzIGRldGVybWluaW5nIHRoZSBjYWxsIGZsb3cuIEl0IGxvb2tzIGxpa2Ugd2hlbiB0aGUgZnV6emVyIHN1Y2Nlc3NmdWxseSBlbXVsYXRlcyB0aGUgVVNCIGRldmljZSBhbmQgdGhlbiBzZW5kcyBXTUkgZXZlbnRzLCB0aGUgZnVuY3Rpb24gYGF0aDEwa193bWlfMTBfMV9vcF9yeGAgKG9yIGEgc2ltaWxhciB2YXJpYW50KSBnZXRzIGludm9rZWQuIEFuZCB0aGF0LCBpbiB0dXJuLCBjYWxscyBgYXRoMTBrX3RtX2V2ZW50X3dtaWAuIFNvIHdlIGhhdmUgYSBwYXRoLlxuXG5CdXQsIGEgY2xvc2VyIGxvb2sgYXQgYGF0aDEwa190bV9ldmVudF93bWlgIHJldmVhbHMgaXQncyBvbmx5IGV4ZWN1dGVkIHVuZGVyIHNwZWNpZmljIGNvbmRpdGlvbnM6IGVpdGhlciBpZiBgYXItXHUwMDNldGVzdG1vZGUudXRmX21vbml0b3JgIGlzIHRydWUgb3IgaWYgaXQgaXMgYSB0ZXN0bW9kZSBldmVudC4gVGhpcyBoaWdobGlnaHRzIHNvbWUgaW1wb3J0YW50IHByZWNvbmRpdGlvbnMgZm9yIHRyaWdnZXJpbmcgdGhpcyBjb2RlcGF0aC4gU28gbm93IEkgbmVlZCB0byBkaXZlIGludG8gYGF0aDEwa193bWlfMTBfMV9vcF9yeGAgdG8gdW5kZXJzdGFuZCBwcmVjaXNlbHkgdW5kZXIgd2hhdCBjb25kaXRpb25zIGl0IGNhbGxzIGBhdGgxMGtfdG1fZXZlbnRfd21pYC4gVGhpcyB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBwb3RlbnRpYWwgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMjk1LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MDE6MjQuMDAwMTc1NTg0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2MTM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwMDMsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjYwMDM6XFx0c3RhdGljIHZvaWQgYXRoMTBrX3dtaV8xMF8xX29wX3J4KHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbjYwMDQ6XFx0e1xcbjYwMDU6XFx0XFx0c3RydWN0IHdtaV9jbWRfaGRyICpjbWRfaGRyO1xcbjYwMDY6XFx0XFx0ZW51bSB3bWlfMTB4X2V2ZW50X2lkIGlkO1xcbjYwMDc6XFx0XFx0Ym9vbCBjb25zdW1lZDtcXG42MDA4OlxcdFxcbjYwMDk6XFx0XFx0Y21kX2hkciA9IChzdHJ1Y3Qgd21pX2NtZF9oZHIgKilza2ItXFx1MDAzZWRhdGE7XFxuNjAxMDpcXHRcXHRpZCA9IE1TKF9fbGUzMl90b19jcHUoY21kX2hkci1cXHUwMDNlY21kX2lkKSwgV01JX0NNRF9IRFJfQ01EX0lEKTtcXG42MDExOlxcdFxcbjYwMTI6XFx0XFx0aWYgKHNrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCB3bWlfY21kX2hkcikpID09IE5VTEwpXFxuNjAxMzpcXHRcXHRcXHRnb3RvIG91dDtcXG42MDE0OlxcdFxcbjYwMTU6XFx0XFx0dHJhY2VfYXRoMTBrX3dtaV9ldmVudChhciwgaWQsIHNrYi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VsZW4pO1xcbjYwMTY6XFx0XFxuNjAxNzpcXHRcXHRjb25zdW1lZCA9IGF0aDEwa190bV9ldmVudF93bWkoYXIsIGlkLCBza2IpO1xcbjYwMTg6XFx0XFxuNjAxOTpcXHRcXHQvKiBSZWFkeSBldmVudCBtdXN0IGJlIGhhbmRsZWQgbm9ybWFsbHkgYWxzbyBpbiBVVEYgbW9kZSBzbyB0aGF0IHdlXFxuNjAyMDpcXHRcXHQgKiBrbm93IHRoZSBVVEYgZmlybXdhcmUgaGFzIGJvb3RlZCwgb3RoZXJzIHdlIGFyZSBqdXN0IGJ5cGFzcyBXTUlcXG42MDIxOlxcdFxcdCAqIGV2ZW50cyB0byB0ZXN0bW9kZS5cXG42MDIyOlxcdFxcdCAqL1xcbjYwMjM6XFx0XFx0aWYgKGNvbnN1bWVkIFxcdTAwMjZcXHUwMDI2IGlkICE9IFdNSV8xMFhfUkVBRFlfRVZFTlRJRCkge1xcbjYwMjQ6XFx0XFx0XFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19XTUksXFxuNjAyNTpcXHRcXHRcXHRcXHQgICBcXFwid21pIHRlc3Rtb2RlIGNvbnN1bWVkIDB4JXhcXFxcblxcXCIsIGlkKTtcXG42MDI2OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjYwMjc6XFx0XFx0fVxcbjYwMjg6XFx0XFxuNjAyOTpcXHRcXHRzd2l0Y2ggKGlkKSB7XFxuNjAzMDpcXHRcXHRjYXNlIFdNSV8xMFhfTUdNVF9SWF9FVkVOVElEOlxcbjYwMzE6XFx0XFx0XFx0YXRoMTBrX3dtaV9ldmVudF9tZ210X3J4KGFyLCBza2IpO1xcbjYwMzI6XFx0XFx0XFx0LyogbWdtdF9yeCgpIG93bnMgdGhlIHNrYiBub3chICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjAxOjI0LjAwMTE1OTYxNFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDc5Njg4MzA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbHJlYWR5IGRlZXAgaW4gdGhlIHdlZWRzIG9mIHRoaXMgYXRoMTBrIGRyaXZlcjpcblxuKipBbmFseXppbmcgYXRoMTBrX3RtX2V2ZW50X3dtaSoqXG5cblJpZ2h0LCBzbyBgYXRoMTBrX3RtX2V2ZW50X3dtaWAuIFRoYXQncyB0aGUgZnVuY3Rpb24gY2FsbGVkIGZvciAqZXZlcnkgc2luZ2xlKiBXTUkgKFdpcmVsZXNzIE1hbmFnZW1lbnQgSW50ZXJmYWNlKSBldmVudC4gVGhhdCdzIGEga2V5IG9ic2VydmF0aW9uIOKAkyB1bmRlcnN0YW5kaW5nIHRoYXQgaXQncyB0aGUgY2VudHJhbCBwb2ludCBmb3IgV01JIGV2ZW50IGhhbmRsaW5nIGdpdmVzIG1lIGFuIGltcG9ydGFudCBwb2ludCBvZiByZWZlcmVuY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgKmluc2lkZSogdGhhdCBmdW5jdGlvbiBiZWNhdXNlIGl04oCZcyBoYW5kbGluZyBldmVyeSBldmVudCwgc28gaXQncyBjcml0aWNhbCB0byBwZXJmb3JtYW5jZSBhbmQgZGVidWdnYWJpbGl0eS4gSSBuZWVkIHRvIG5vdyBmb2N1cyBvbiB0aGUgaW50ZXJuYWwgbG9naWMgdG8gZ2V0IHRoZSBwaWN0dXJlIG9mIHdoYXQncyBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNTQ3LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODowMTozMi4wODA4NTA5OTlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA2MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE3MDpcXHRib29sIGF0aDEwa190bV9ldmVudF93bWkoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBjbWRfaWQsIHN0cnVjdCBza19idWZmICpza2IpXFxuIDE3MTpcXHR7XFxuIDE3MjpcXHRcXHRib29sIGNvbnN1bWVkO1xcbiAxNzM6XFx0XFxuIDE3NDpcXHRcXHRhdGgxMGtfZGJnKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLFxcbiAxNzU6XFx0XFx0XFx0ICAgXFxcInRlc3Rtb2RlIGV2ZW50IHdtaSBjbWRfaWQgJWQgc2tiICVwIHNrYi1cXHUwMDNlbGVuICVkXFxcXG5cXFwiLFxcbiAxNzY6XFx0XFx0XFx0ICAgY21kX2lkLCBza2IsIHNrYi1cXHUwMDNlbGVuKTtcXG4gMTc3OlxcdFxcbiAxNzg6XFx0XFx0YXRoMTBrX2RiZ19kdW1wKGFyLCBBVEgxMEtfREJHX1RFU1RNT0RFLCBOVUxMLCBcXFwiXFxcIiwgc2tiLVxcdTAwM2VkYXRhLCBza2ItXFx1MDAzZWxlbik7XFxuIDE3OTpcXHRcXG4gMTgwOlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuIDE4MTpcXHRcXG4gMTgyOlxcdFxcdGlmICghYXItXFx1MDAzZXRlc3Rtb2RlLnV0Zl9tb25pdG9yKSB7XFxuIDE4MzpcXHRcXHRcXHRjb25zdW1lZCA9IGZhbHNlO1xcbiAxODQ6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDE4NTpcXHRcXHR9XFxuIDE4NjpcXHRcXG4gMTg3OlxcdFxcdC8qIE9ubHkgdGVzdG1vZGUuYyBzaG91bGQgYmUgaGFuZGxpbmcgZXZlbnRzIGZyb20gdXRmIGZpcm13YXJlLFxcbiAxODg6XFx0XFx0ICogb3RoZXJ3aXNlIGFsbCBzb3J0IG9mIHByb2JsZW1zIHdpbGwgYXJpc2UgYXMgbWFjODAyMTEgb3BlcmF0aW9uc1xcbiAxODk6XFx0XFx0ICogYXJlIG5vdCBpbml0aWFsaXNlZC5cXG4gMTkwOlxcdFxcdCAqL1xcbiAxOTE6XFx0XFx0Y29uc3VtZWQgPSB0cnVlO1xcbiAxOTI6XFx0XFxuIDE5MzpcXHRcXHRpZiAoIWF0aDEwa190bV9pc191dGZfZXZlbnQoY21kX2lkKSkge1xcbiAxOTQ6XFx0XFx0XFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19URVNUTU9ERSxcXG4gMTk1OlxcdFxcdFxcdFxcdCAgIFxcXCJ0ZXN0bW9kZSBkcm9wIG5vbi11dGYgZXZlbnQgY21kX2lkICV1XFxcXG5cXFwiLCBjbWRfaWQpO1xcbiAxOTY6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDE5NzpcXHRcXHR9XFxuIDE5ODpcXHRcXG4gMTk5OlxcdFxcdGlmIChhci1cXHUwMDNldGVzdG1vZGUuZXhwZWN0ZWRfc2VxICE9IEFUSDEwS19GVE1fU0VHX05PTkUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjAxOjMyLjA4MDkzMjY3OVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NTMzMzY0NjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlZ1bG5lcmFiaWxpdHkgQXNzZXNzbWVudDogVVRGIE1vbml0b3IgaW4gYXRoMTBrIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuIFRoZSBVVEYgbW9uaXRvciBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHksIGlzIG9ubHkgYWN0aXZhdGVkIHdoZW4gYGFyLVx1MDAzZXRlc3Rtb2RlLnV0Zl9tb25pdG9yYCBpcyBzZXQgdG8gdHJ1ZS4gVGhpcyBpcyBjb250cm9sbGVkIGJ5IHRoZSBgYXRoMTBrX3RtX2NtZF91dGZfc3RhcnRgIGZ1bmN0aW9uLCB3aGljaCBpcyB0cmlnZ2VyZWQgdGhyb3VnaCBhIG5sODAyMTEgdGVzdG1vZGUgY29tbWFuZC4gVGhlIGJlYXV0eSAoZnJvbSBhIGZ1enplcidzIHBlcnNwZWN0aXZlISkgaXMgdGhhdCBmdXp6aW5nIG5sODAyMTEgdGVzdG1vZGUgY29tbWFuZHMgaXMgc3RyYWlnaHRmb3J3YXJkLCBlc3BlY2lhbGx5IHdoZW4gcGFpcmVkIHdpdGggVVNCLWJhc2VkIFdNSSBldmVudCBpbmplY3Rpb25zLiBUaGF0J3MgYSBsb3cgYmFycmllciB0byBlbnRyeSBmb3IgcG90ZW50aWFsIGF0dGFja3MuXG5cblRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGhlcmUsIHRoZSBwcmltZSBcImF0dGFjayBzdXJmYWNlcyxcIiBhcmUgYGF0aDEwa190bV9ldmVudF93bWlgIHNpbmNlIHRoZSBwYXRjaCBtb2RpZmllcyBpdC4gQWxzbywgYGF0aDEwa190bV9jbWRfdXRmX3N0YXJ0YCBpcyBpbXBvcnRhbnQgdG8gaGl0IHRoZSBzZXR1cCBwYXRoLiBJIHNob3VsZCBhbHNvIG5vdGUgSSBuZWVkIHRvIGVuc3VyZSB0aGUgZnV6emVyIGNhbiB0cmlnZ2VyIGBhdGgxMGtfdG1fY21kX3V0Zl9zdG9wYCwgc2luY2UgdGhpcyBtdXN0IGJlIHByZXNlbnQgb24gdGhlIGZ1enplciBhcyB3ZWxsLiBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGBhdGgxMGtfdG1fY21kX3V0Zl9zdGFydGAgZnVuY3Rpb24gaXMgc3RhdGljOyBpdCB3b3VsZCBtYWtlIHRoaW5ncyBtb3JlIGNvbXBsaWNhdGVkIGlmIGl0IHdlcmUsIGJ1dCBJIGNhbiB3b3JrIGFyb3VuZCB0aGF0LiBVbHRpbWF0ZWx5LCBJJ20gZ29pbmcgdG8gaGF2ZSB0byBtYWtlIHN1cmUgdGhlIGZ1enplciBoaXRzIGBhdGgxMGtfdG1fZXZlbnRfd21pYCwgYnV0IGluIG9yZGVyIHRvIGRvIHRoYXQsIEknbGwgaGF2ZSB0byBjb25zaWRlciBob3cgdG8gcHJlcGFyZSB0aGUgc3RhdGUgd2l0aCBgYXRoMTBrX3RtX2NtZF91dGZfc3RhcnRgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDMwNiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjAxOjM5LjYxNDI5OTc1OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE2MjU2NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTBrX3RtX2NtZF91dGZfc3RhcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTI4Mz1zdGF0aWMgaW50IGF0aDEwa190bV9mZXRjaF9maXJtd2FyZShzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjMzNjpzdGF0aWMgaW50IGF0aDEwa190bV9jbWRfdXRmX3N0YXJ0KHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTYyOT1pbnQgYXRoMTBrX3RtX2NtZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02NTItXFx0Y2FzZSBBVEgxMEtfVE1fQ01EX1VURl9TVEFSVDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NjUzOlxcdFxcdHJldHVybiBhdGgxMGtfdG1fY21kX3V0Zl9zdGFydChhciwgdGIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02NTQtXFx0Y2FzZSBBVEgxMEtfVE1fQ01EX1VURl9TVE9QOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwODowMTozOS42NjU5MzA3NDRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjcyMDIxNDg1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbiwgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIFN0YXRpYyBOYXR1cmUgb2YgYSBLZXJuZWwgQ29tbWFuZCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMga2VybmVsIGNvZGUgYW5kIGl0J3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCBpdCdzICpzdGF0aWMqLiBUaGlzIGBhdGgxMGtfdG1fY21kYCBmdW5jdGlvbi4uLml0J3MgdGhlIGV4cG9ydGVkIG9uZSwgdGhlIG9uZSB0aGF0J3MgYWN0dWFsbHkgdmlzaWJsZSBhbmQgdXNhYmxlIG91dHNpZGUgdGhlIG1vZHVsZS4gVGhhdCdzIGEga2V5IG9ic2VydmF0aW9uLiBLbm93aW5nIGl0J3Mgc3RhdGljIGltcGxpZXMgY2VydGFpbiB0aGluZ3MgYWJvdXQgaXRzIHNjb3BlIGFuZCBwb3RlbnRpYWwgZm9yIG1vZGlmaWNhdGlvbiwgb3IsIGNvbnZlcnNlbHksIGhvdyAqbGltaXRlZCogaXQgaXMgaW4gaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbCwgYmFzZWQgb24gaXRzIGRlZmluaXRpb24uIEdpdmVuIG15IGV4cGVydGlzZSwgSSBhbSBsb29raW5nIGZvciB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQ6IGFjY2VzcyBjb250cm9sLCBvcHRpbWl6YXRpb24sIHBvdGVudGlhbCBpc3N1ZXMgcmVnYXJkaW5nIG1vZHVsYXJpdHkuIEl0IHdpbGwgbGlrZWx5IGltcGFjdCBob3cgSSBpbnRlZ3JhdGUgaXQgaW50byB0aGUgbGFyZ2VyIHN5c3RlbS4gVGhlIGZhY3QgdGhhdCBpdCdzICp0aGUqIGV4cG9ydGVkIGNvbW1hbmQgaXMgaW1wb3J0YW50IHRvbywgYmVjYXVzZSBpdCdzIHRoZSBnYXRld2F5IGZvciBjZXJ0YWluIGRldmljZSBjb21tYW5kcy4gVGltZSB0byBkaWcgZGVlcGVyIGFuZCBzZWUgd2hhdCB0aG9zZSBjb21tYW5kcyBhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MzM2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MDE6NDYuMzg2MTQ4OTczWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTY0MTI4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMGtfdG1fY21kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9OTQ3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTBrX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtOTUxOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjk1MTk6XFx0Q0ZHODAyMTFfVEVTVE1PREVfQ01EKGF0aDEwa190bV9jbWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy05NTIwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTE3MD1ib29sIGF0aDEwa190bV9ldmVudF93bWkoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBjbWRfaWQsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtMjA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzoyMTA6c3RhdGljIGludCBhdGgxMGtfdG1fY21kX2dldF92ZXJzaW9uKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0yMTEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTI4Mz1zdGF0aWMgaW50IGF0aDEwa190bV9mZXRjaF9maXJtd2FyZShzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjMzNjpzdGF0aWMgaW50IGF0aDEwa190bV9jbWRfdXRmX3N0YXJ0KHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy0zMzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDQzOnN0YXRpYyB2b2lkIF9fYXRoMTBrX3RtX2NtZF91dGZfc3RvcChzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy00NjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjQ3MDpzdGF0aWMgaW50IGF0aDEwa190bV9jbWRfdXRmX3N0b3Aoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ3MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo0ODM6XFx0X19hdGgxMGtfdG1fY21kX3V0Zl9zdG9wKGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNDg0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ5My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NDk0OnN0YXRpYyBpbnQgYXRoMTBrX3RtX2NtZF93bWkoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTQ5NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNTQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo1NTA6c3RhdGljIGludCBhdGgxMGtfdG1fY21kX3RsdihzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNTUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02MjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjYyOTppbnQgYXRoMTBrX3RtX2NtZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjMwLVxcdFxcdCAgdm9pZCAqZGF0YSwgaW50IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYy02NDgtXFx0XFx0aWYgKCF0YltBVEgxMEtfVE1fQVRUUl9EQVRBXSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NjQ5OlxcdFxcdFxcdHJldHVybiBhdGgxMGtfdG1fY21kX2dldF92ZXJzaW9uKGFyLCB0Yik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTY1MC1cXHRcXHRlbHNlIC8qIEFUSDEwS19UTV9DTURfVExWICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjY1MTpcXHRcXHRcXHRyZXR1cm4gYXRoMTBrX3RtX2NtZF90bHYoYXIsIHRiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjUyLVxcdGNhc2UgQVRIMTBLX1RNX0NNRF9VVEZfU1RBUlQ6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jOjY1MzpcXHRcXHRyZXR1cm4gYXRoMTBrX3RtX2NtZF91dGZfc3RhcnQoYXIsIHRiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmMtNjU0LVxcdGNhc2UgQVRIMTBLX1RNX0NNRF9VVEZfU1RPUDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NjU1OlxcdFxcdHJldHVybiBhdGgxMGtfdG1fY21kX3V0Zl9zdG9wKGFyLCB0Yik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTY1Ni1cXHRjYXNlIEFUSDEwS19UTV9DTURfV01JOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuYzo2NTc6XFx0XFx0cmV0dXJuIGF0aDEwa190bV9jbWRfd21pKGFyLCB0Yik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTY1OC1cXHRkZWZhdWx0Olxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jPTY2Mz12b2lkIGF0aDEwa190ZXN0bW9kZV9kZXN0cm95KHN0cnVjdCBhdGgxMGsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTY3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmM6NjcyOlxcdF9fYXRoMTBrX3RtX2NtZF91dGZfc3RvcChhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZS5jLTY3My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaD0xMj1ib29sIGF0aDEwa190bV9ldmVudF93bWkoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBjbWRfaWQsIHN0cnVjdCBza19idWZmICpza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaDoxMzppbnQgYXRoMTBrX3RtX2NtZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMTQtXFx0XFx0ICB2b2lkICpkYXRhLCBpbnQgbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaD0yMj1zdGF0aWMgaW5saW5lIGJvb2wgYXRoMTBrX3RtX2V2ZW50X3dtaShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGNtZF9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGUuaC0yNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmg6Mjg6c3RhdGljIGlubGluZSBpbnQgYXRoMTBrX3RtX2NtZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlLmgtMjktXFx0XFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdGVzdG1vZGVfaS5oPTIwPWVudW0gYXRoMTBrX3RtX2F0dHIge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmgtMzYtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway90ZXN0bW9kZV9pLmg6Mzc6ZW51bSBhdGgxMGtfdG1fY21kIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3Rlc3Rtb2RlX2kuaC0zOC1cXHQvKiBSZXR1cm5zIHRoZSBzdXBwb3J0ZWQgYXRoMTBrIHRlc3Rtb2RlIGludGVyZmFjZSB2ZXJzaW9uIGluXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDA4OjAxOjQ2LjQzNzc5NjExWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzNjMwMDYzNzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYXNvbmluZyBmb3IgRnV6emluZyB0aGUgYXRoMTBrIFRlc3Rtb2RlIEV2ZW50IEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIGBhdGgxMGtfdG1fY21kYCBhbmQgYGF0aDEwa190bV9ldmVudF93bWlgIHN0YW5kIG91dC4gVGhlIGZvcm1lciBzZWVtcyB0byBiZSB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBubDgwMjExIHRlc3Rtb2RlIGNvbW1hbmRzLCBhbmQgdGhlIGxhdHRlciBpcyB0aGUgaGFuZGxlciBmb3IgV01JIGV2ZW50cy4gVGhvc2UgYXJlIGRlZmluaXRlbHkgbXkgZm9jdXMgc3ltYm9scyBoZXJlLiBUaGV5IGhhbmRsZSBkaXN0aW5jdCBwYXRocyBpbnRvIHRoZSB0ZXN0IG1vZGUgZnVuY3Rpb25hbGl0eS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gd2hpY2ggY29uZmlndXJhdGlvbnMgYXJlIHJlbGV2YW50LiBJIGtub3cgdGhhdCBgQVRIMTBLYCBpcyBhIG11c3QsIGFuZCBzaW5jZSB0aGlzIGludm9sdmVzIFVTQiBpbnRlcmFjdGlvbiwgYEFUSDEwS19VU0JgIGlzIGFsc28gbGlrZWx5IHJlcXVpcmVkLiBBbHNvIHNpbmNlIHRoaXMgZGVhbHMgd2l0aCB0ZXN0IG1vZGUsIGBOTDgwMjExX1RFU1RNT0RFYCBpcyBhbm90aGVyIG9idmlvdXMgY2FuZGlkYXRlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBjb25maWd1cmF0aW9ucyBhcmUgcmlnaHQuIEkga25vdyB0aGF0IGBBVEgxMEtfVVNCYCBkZXBlbmRzIG9uIGBVU0JgIGFuZCBgQVRIMTBLYCwgd2hpY2ggaW4gdHVybiBkZXBlbmQgb24gYE1BQzgwMjExYC4gQnV0IHRoZSBmdXp6ZXIgYmFzZSBjb25maWcgdXN1YWxseSB0YWtlcyBjYXJlIG9mIHRob3NlIGRlcGVuZGVuY2llcywgc28ganVzdCBsaXN0aW5nIHRoZSBkaXJlY3Qgb25lcyBpcyBzYWZlLlxuXG5SZXZpZXdpbmcgdGhlIHBhdGNoIGl0c2VsZiwgaXQncyBjbGVhciB0aGUgY2hhbmdlcyB3aXRoaW4gYGF0aDEwa190bV9ldmVudF93bWlgIGFyZSBmdW5jdGlvbmFsLiBUaGUgY29kZSBpcyBhZGRpbmcgYSBjaGVjayB0byBkcm9wIG5vbi1VVEYgZXZlbnRzLiBUaGlzIG1vZGlmaWNhdGlvbiB0byB0aGUgV01JIGV2ZW50IGhhbmRsaW5nIGxvZ2ljIGluIHRlc3QgbW9kZSBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyBJIHdhbnQgdG8gZnV6ei4gSXQgaW50cm9kdWNlcyBhIG5ldyBjb2RlIHBhdGggKHRoZSBkcm9wKSBhbmQgbW9kaWZpZXMgZXhpc3RpbmcgbG9naWMuIFNvIHRoZSBmdXp6aW5nIHRhcmdldCBoZXJlIGlzIHRoZSBgYXRoMTBrYCB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBpdHMgZXZlbnQgcHJvY2Vzc2luZyB3aXRoaW4gdGVzdCBtb2RlLiBJIGNhbiBmdXp6IGl0IHRocm91Z2ggdGhlIFVTQiBpbnRlcmZhY2UgKGBDT05GSUdfQVRIMTBLX1VTQmApIGJ5IGVtdWxhdGluZyB0aGUgZGV2aWNlIGFuZCBzZW5kaW5nIFdNSSBldmVudHMuIFRoZSB0ZXN0IG1vZGUgaXRzZWxmIGNhbiBiZSBhY3RpdmF0ZWQgdXNpbmcgbmw4MDIxMSBjb21tYW5kcyAoYENPTkZJR19OTDgwMjExX1RFU1RNT0RFYCkuXG5cblNvLCBJIHRoaW5rIEkndmUgZ290IGl0OlxuXG5Gb2N1cyBTeW1ib2xzOlxuKiAgIGBhdGgxMGtfdG1fZXZlbnRfd21pYFxuKiAgIGBhdGgxMGtfdG1fY21kYFxuXG5Db25maWdzOlxuKiAgIGBBVEgxMEtgXG4qICAgYEFUSDEwS19VU0JgXG4qICAgYE5MODAyMTFfVEVTVE1PREVgXG5cbkkgYW0gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzY2OCwiT3V0cHV0VG9rZW5zIjoxNjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDg6MDI6MDAuMDY3ODYyNzM1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk4OTQ2NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDEwS1wiLFxuICAgIFwiQVRIMTBLX1VTQlwiLFxuICAgIFwiTkw4MDIxMV9URVNUTU9ERVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF0aDEwa190bV9ldmVudF93bWlcIixcbiAgICBcImF0aDEwa190bV9jbWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGF0aDEwa2Agd2lyZWxlc3MgZHJpdmVyJ3MgdGVzdG1vZGUgZXZlbnQgaGFuZGxpbmcgbG9naWMgdG8gZHJvcCBub24tVVRGIFdNSSBldmVudHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZHJpdmVyJ3MgZmlybXdhcmUgZXZlbnQgcHJvY2Vzc2luZy4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBpdHMgVVNCIGludGVyZmFjZSBieSBlbXVsYXRpbmcgdGhlIGRldmljZSBhbmQgc2VuZGluZyBXTUkgZXZlbnRzLCBhbmQgdGhlIHRlc3Rtb2RlIGNhbiBiZSBhY3RpdmF0ZWQgdmlhIG5sODAyMTEgY29tbWFuZHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIMTBLXCIsXG4gICAgXCJBVEgxMEtfVVNCXCIsXG4gICAgXCJOTDgwMjExX1RFU1RNT0RFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoMTBrX3RtX2V2ZW50X3dtaVwiLFxuICAgIFwiYXRoMTBrX3RtX2NtZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgYXRoMTBrYCB3aXJlbGVzcyBkcml2ZXIncyB0ZXN0bW9kZSBldmVudCBoYW5kbGluZyBsb2dpYyB0byBkcm9wIG5vbi1VVEYgV01JIGV2ZW50cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXIncyBmaXJtd2FyZSBldmVudCBwcm9jZXNzaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIGl0cyBVU0IgaW50ZXJmYWNlIGJ5IGVtdWxhdGluZyB0aGUgZGV2aWNlIGFuZCBzZW5kaW5nIFdNSSBldmVudHMsIGFuZCB0aGUgdGVzdG1vZGUgY2FuIGJlIGFjdGl2YXRlZCB2aWEgbmw4MDIxMSBjb21tYW5kcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow74jhm[1] Phase: Succeeded StartedAt: 2026-07-31 08:02:13 +0000 UTC FinishedAt: 2026-07-31 08:02:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-31 08:02:13 +0000 UTC FinishedAt: 2026-07-31 08:02:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[2] Phase: Succeeded StartedAt: 2026-07-31 08:02:13 +0000 UTC FinishedAt: 2026-07-31 09:52:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-31 08:02:13 +0000 UTC FinishedAt: 2026-07-31 09:52:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-31 08:02:13 +0000 UTC FinishedAt: 2026-07-31 08:02:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-31 08:02:13 +0000 UTC FinishedAt: 2026-07-31 08:02:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow74jhm/series-workflow74jhm-convert-artifact-2441801888/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-31 08:02:24 +0000 UTC FinishedAt: 2026-07-31 08:21:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-31 08:02:24 +0000 UTC FinishedAt: 2026-07-31 08:21:56 +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:*31bdbbed-681d-43eb-a0f3-d7de6bc16cd8,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-workflow74jhm/series-workflow74jhm-convert-artifact-2441801888/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": "5eeaf309-9ba2-495c-a940-a51245e56fd5", "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-workflow74jhm/series-workflow74jhm-build-action-2835074918/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-31 08:02:24 +0000 UTC FinishedAt: 2026-07-31 08:21:46 +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:*31bdbbed-681d-43eb-a0f3-d7de6bc16cd8,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-workflow74jhm/series-workflow74jhm-convert-artifact-2441801888/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": "5eeaf309-9ba2-495c-a940-a51245e56fd5", "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-workflow74jhm/series-workflow74jhm-build-action-2835074918/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-31 08:21:56 +0000 UTC FinishedAt: 2026-07-31 08:21:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-31 08:21:56 +0000 UTC FinishedAt: 2026-07-31 08:21:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-31 08:21:56 +0000 UTC FinishedAt: 2026-07-31 08:22:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-31 08:21:56 +0000 UTC FinishedAt: 2026-07-31 08:22:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow74jhm/series-workflow74jhm-convert-artifact-2256311751/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-31 08:22:06 +0000 UTC FinishedAt: 2026-07-31 08:24:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-31 08:22:06 +0000 UTC FinishedAt: 2026-07-31 08:24:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5eeaf309-9ba2-495c-a940-a51245e56fd5,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-workflow74jhm/series-workflow74jhm-build-action-2835074918/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-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-31 08:24:27 +0000 UTC FinishedAt: 2026-07-31 08:24:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-31 08:24:27 +0000 UTC FinishedAt: 2026-07-31 08:24:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-31 08:24:27 +0000 UTC FinishedAt: 2026-07-31 08:55:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-31 08:24:27 +0000 UTC FinishedAt: 2026-07-31 08:55:56 +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:*31bdbbed-681d-43eb-a0f3-d7de6bc16cd8,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-workflow74jhm/series-workflow74jhm-convert-artifact-2256311751/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": "b303f345-f848-4071-adfb-9e33abab3f1c", "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-workflow74jhm/series-workflow74jhm-build-action-1733875019/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-31 08:24:27 +0000 UTC FinishedAt: 2026-07-31 08:55:38 +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:*31bdbbed-681d-43eb-a0f3-d7de6bc16cd8,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-workflow74jhm/series-workflow74jhm-convert-artifact-2256311751/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": "b303f345-f848-4071-adfb-9e33abab3f1c", "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-workflow74jhm/series-workflow74jhm-build-action-1733875019/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-31 08:55:56 +0000 UTC FinishedAt: 2026-07-31 08:55:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-31 08:55:56 +0000 UTC FinishedAt: 2026-07-31 08:55:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-31 08:55:56 +0000 UTC FinishedAt: 2026-07-31 08:58:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-31 08:55:56 +0000 UTC FinishedAt: 2026-07-31 08:57:54 +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:*b303f345-f848-4071-adfb-9e33abab3f1c,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-workflow74jhm/series-workflow74jhm-build-action-1733875019/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-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-31 08:58:05 +0000 UTC FinishedAt: 2026-07-31 09:52:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-31 08:58:05 +0000 UTC FinishedAt: 2026-07-31 09:52:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"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:*5eeaf309-9ba2-495c-a940-a51245e56fd5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b303f345-f848-4071-adfb-9e33abab3f1c,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-workflow74jhm/series-workflow74jhm-build-action-2835074918/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-workflow74jhm/series-workflow74jhm-build-action-1733875019/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-31 08:58:05 +0000 UTC FinishedAt: 2026-07-31 08:58:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-31 08:58:05 +0000 UTC FinishedAt: 2026-07-31 08:58:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-31 08:58:05 +0000 UTC FinishedAt: 2026-07-31 08:58:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-31 08:58:06 +0000 UTC FinishedAt: 2026-07-31 08:58:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"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-workflow74jhm/series-workflow74jhm-convert-artifact-1757484960/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-31 08:58:06 +0000 UTC FinishedAt: 2026-07-31 08:58:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-31 08:58:40 +0000 UTC FinishedAt: 2026-07-31 09:52:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow74jhm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_tm_event_wmi","ath10k_tm_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"913998f903fb1432c0046c33003db38a9e8bedb1","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","NL80211_TESTMODE"],"series_id":"9bf32b3b-cc65-49f6-954f-c02bd2db623d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-31 08:58:40 +0000 UTC FinishedAt: 2026-07-31 09:52:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5eeaf309-9ba2-495c-a940-a51245e56fd5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b303f345-f848-4071-adfb-9e33abab3f1c,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-workflow74jhm/series-workflow74jhm-build-action-2835074918/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-workflow74jhm/series-workflow74jhm-build-action-1733875019/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-workflow74jhm/series-workflow74jhm-convert-artifact-1757484960/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,}