Name: series-workflow5jddn Phase: Succeeded StartedAt: 2026-08-04 09:48:29 +0000 UTC FinishedAt: 2026-08-04 11:18:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[0] Phase: Succeeded StartedAt: 2026-08-04 09:48:29 +0000 UTC FinishedAt: 2026-08-04 10:31:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 09:48:29 +0000 UTC FinishedAt: 2026-08-04 10:31:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "USB", "BT", "MMC", "WLAN_VENDOR_RSI", "RSI_91X", "RSI_USB", "RSI_COEX", "RSI_SDIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "USB", "BT", "MMC", "WLAN_VENDOR_RSI", "RSI_91X", "RSI_USB", "RSI_COEX", "RSI_SDIO" ], "series_id": "0d38e605-c53b-420a-8d8c-bdd4e9df9db9" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rsi_usb_rx_thread", "rsi_sdio_rx_thread", "rsi_tx_scheduler_thread", "rsi_coex_scheduler_thread" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtCVCYjMzQ7LAogICAgJiMzNDtNTUMmIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfUlNJJiMzNDssCiAgICAmIzM0O1JTSV85MVgmIzM0OywKICAgICYjMzQ7UlNJX1VTQiYjMzQ7LAogICAgJiMzNDtSU0lfQ09FWCYjMzQ7LAogICAgJiMzNDtSU0lfU0RJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JzaV91c2JfcnhfdGhyZWFkJiMzNDssCiAgICAmIzM0O3JzaV9zZGlvX3J4X3RocmVhZCYjMzQ7LAogICAgJiMzNDtyc2lfdHhfc2NoZWR1bGVyX3RocmVhZCYjMzQ7LAogICAgJiMzNDtyc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHRoZSBmdW5jdGlvbiBzaWduYXR1cmVzIG9mIHNldmVyYWwga3RocmVhZCBmdW5jdGlvbnMgKHJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWQsIHJzaV90eF9zY2hlZHVsZXJfdGhyZWFkLCByc2lfc2Rpb19yeF90aHJlYWQsIHJzaV91c2JfcnhfdGhyZWFkKSBpbiB0aGUgUmVkcGluZSBTaWduYWxzIEluYy4gKFJTSSkgd2lyZWxlc3MgZHJpdmVyIHRvIG1hdGNoIHRoZSBleHBlY3RlZCBgaW50ICgqKSh2b2lkICopYCB0eXBlIGZvciBrdGhyZWFkIGNyZWF0aW9uLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBDb250cm9sLUZsb3cgSW50ZWdyaXR5IChDRkkpIHBhbmljcyB3aGVuIHRoZXNlIHRocmVhZHMgYXJlIHNwYXduZWQuIFNpbmNlIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBVU0IvU0RJTyBkcml2ZXIsIGl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSB0aHJlYWRzIGV4ZWN1dGUgY29ycmVjdGx5IHdpdGhvdXQgdHJpZ2dlcmluZyBvdGhlciBidWdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGIxOThhNDU3YTU3NGIyMTdiZmYyOWM3ODhmM2M0ZjZlN2MzMGMwMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTA6MzA6MjkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jXG5pbmRleCBlZTYwM2E1MTczZmIzLi4wMjNjNTM5ZmMzODQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmNcbkBAIC01MCw4ICYjNDM7NTAsOSBAQCBzdGF0aWMgdm9pZCByc2lfY29leF9zY2hlZF90eF9wa3RzKHN0cnVjdCByc2lfY29leF9jdHJsX2Jsb2NrICpjb2V4X2NiKVxuIFx0fSB3aGlsZSAoY29leF9xICE9IFJTSV9DT0VYX1FfSU5WQUxJRCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcbiYjNDM7c3RhdGljIGludCByc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkKHZvaWQgKmRhdGEpXG4ge1xuJiM0MztcdHN0cnVjdCByc2lfY29tbW9uICpjb21tb24gPSBkYXRhO1xuIFx0c3RydWN0IHJzaV9jb2V4X2N0cmxfYmxvY2sgKmNvZXhfY2IgPSBjb21tb24tXHUwMDNlY29leF9jYjtcbiBcdHUzMiB0aW1lb3V0ID0gRVZFTlRfV0FJVF9GT1JFVkVSO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uY1xuaW5kZXggNjYyZTQyZDFlNWU4ZC4uMmNlNTE0NzY2NjIwOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jXG5AQCAtMjQ2LDEyICYjNDM7MjQ2LDEzIEBAIEVYUE9SVF9TWU1CT0xfR1BMKHJzaV9yZWFkX3BrdCk7XG4gLyoqXG4gICogcnNpX3R4X3NjaGVkdWxlcl90aHJlYWQoKSAtIFRoaXMgZnVuY3Rpb24gaXMgYSBrZXJuZWwgdGhyZWFkIHRvIHNlbmQgdGhlXG4gICpcdFx0XHQgICAgICAgcGFja2V0cyB0byB0aGUgZGV2aWNlLlxuLSAqIEBjb21tb246IFBvaW50ZXIgdG8gdGhlIGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZS5cbiYjNDM7ICogQGRhdGE6IFBvaW50ZXIgdG8gdGhlIGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZS5cbiAgKlxuLSAqIFJldHVybjogTm9uZS5cbiYjNDM7ICogUmV0dXJuOiAwLlxuICAqL1xuLXN0YXRpYyB2b2lkIHJzaV90eF9zY2hlZHVsZXJfdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24pXG4mIzQzO3N0YXRpYyBpbnQgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWQodm9pZCAqZGF0YSlcbiB7XG4mIzQzO1x0c3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiA9IGRhdGE7XG4gXHRzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyID0gY29tbW9uLVx1MDAzZXByaXY7XG4gXHR1MzIgdGltZW91dCA9IEVWRU5UX1dBSVRfRk9SRVZFUjtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9zZGlvX29wcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfc2Rpb19vcHMuY1xuaW5kZXggNTk3YjIzOGUyMjk0OS4uMThhMjhhYTk3NDQ2MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3NkaW9fb3BzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3NkaW9fb3BzLmNcbkBAIC02Miw4ICYjNDM7NjIsOSBAQCBpbnQgcnNpX3NkaW9fbWFzdGVyX2FjY2Vzc19tc3dvcmQoc3RydWN0IHJzaV9odyAqYWRhcHRlciwgdTE2IG1zX3dvcmQpXG4gXG4gc3RhdGljIHZvaWQgcnNpX3J4X2hhbmRsZXIoc3RydWN0IHJzaV9odyAqYWRhcHRlcik7XG4gXG4tdm9pZCByc2lfc2Rpb19yeF90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcbiYjNDM7aW50IHJzaV9zZGlvX3J4X3RocmVhZCh2b2lkICpkYXRhKVxuIHtcbiYjNDM7XHRzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uID0gZGF0YTtcbiBcdHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIgPSBjb21tb24tXHUwMDNlcHJpdjtcbiBcdHN0cnVjdCByc2lfOTF4X3NkaW9kZXYgKnNkZXYgPSBhZGFwdGVyLVx1MDAzZXJzaV9kZXY7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiX29wcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiX29wcy5jXG5pbmRleCAyNWMyYjIzMjM5NGE2Li5lODk5NjMxYjlhZWQyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiX29wcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF91c2Jfb3BzLmNcbkBAIC0yMSwxMiAmIzQzOzIxLDEzIEBAXG4gLyoqXG4gICogcnNpX3VzYl9yeF90aHJlYWQoKSAtIFRoaXMgaXMgYSBrZXJuZWwgdGhyZWFkIHRvIHJlY2VpdmUgdGhlIHBhY2tldHMgZnJvbVxuICAqXHRcdFx0IHRoZSBVU0IgZGV2aWNlLlxuLSAqIEBjb21tb246IFBvaW50ZXIgdG8gdGhlIGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZS5cbiYjNDM7ICogQGRhdGE6IFBvaW50ZXIgdG8gdGhlIGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZS5cbiAgKlxuLSAqIFJldHVybjogTm9uZS5cbiYjNDM7ICogUmV0dXJuOiAwLlxuICAqL1xuLXZvaWQgcnNpX3VzYl9yeF90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcbiYjNDM7aW50IHJzaV91c2JfcnhfdGhyZWFkKHZvaWQgKmRhdGEpXG4ge1xuJiM0MztcdHN0cnVjdCByc2lfY29tbW9uICpjb21tb24gPSBkYXRhO1xuIFx0c3RydWN0IHJzaV9odyAqYWRhcHRlciA9IGNvbW1vbi1cdTAwM2Vwcml2O1xuIFx0c3RydWN0IHJzaV85MXhfdXNiZGV2ICpkZXYgPSBhZGFwdGVyLVx1MDAzZXJzaV9kZXY7XG4gXHRpbnQgc3RhdHVzO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfY29tbW9uLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oXG5pbmRleCAzY2RmOWRlZDg3NmQ5Li4yYTMzYTgxZjcxYTNlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9jb21tb24uaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9jb21tb24uaFxuQEAgLTU4LDcgJiM0Mzs1OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByc2lfcmVzZXRfZXZlbnQoc3RydWN0IHJzaV9ldmVudCAqZXZlbnQpXG4gXG4gc3RhdGljIGlubGluZSBpbnQgcnNpX2NyZWF0ZV9rdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sXG4gXHRcdFx0XHQgICAgIHN0cnVjdCByc2lfdGhyZWFkICp0aHJlYWQsXG4tXHRcdFx0XHQgICAgIHZvaWQgKmZ1bmNfcHRyLFxuJiM0MztcdFx0XHRcdCAgICAgaW50ICgqZnVuY19wdHIpKHZvaWQgKmRhdGEpLFxuIFx0XHRcdFx0ICAgICB1OCAqbmFtZSlcbiB7XG4gXHRpbml0X2NvbXBsZXRpb24oXHUwMDI2dGhyZWFkLVx1MDAzZWNvbXBsZXRpb24pO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfc2Rpby5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9zZGlvLmhcbmluZGV4IDdjOTFiMTI2YjM1MGYuLmViMmI3ZjM2YTdlNGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX3NkaW8uaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9zZGlvLmhcbkBAIC0xMzQsNSAmIzQzOzEzNCw1IEBAIGludCByc2lfc2Rpb19tYXN0ZXJfYWNjZXNzX21zd29yZChzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyLCB1MTYgbXNfd29yZCk7XG4gdm9pZCByc2lfc2Rpb19hY2tfaW50cihzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyLCB1OCBpbnRfYml0KTtcbiBpbnQgcnNpX3NkaW9fZGV0ZXJtaW5lX2V2ZW50X3RpbWVvdXQoc3RydWN0IHJzaV9odyAqYWRhcHRlcik7XG4gaW50IHJzaV9zZGlvX2NoZWNrX2J1ZmZlcl9zdGF0dXMoc3RydWN0IHJzaV9odyAqYWRhcHRlciwgdTggcV9udW0pO1xuLXZvaWQgcnNpX3NkaW9fcnhfdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24pO1xuJiM0MztpbnQgcnNpX3NkaW9fcnhfdGhyZWFkKHZvaWQgKmRhdGEpO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfdXNiLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX3VzYi5oXG5pbmRleCA5NjE4NTE3NDhiYzRjLi43ODA2N2VhZmZlOGIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV91c2IuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV91c2IuaFxuQEAgLTgxLDUgJiM0Mzs4MSw1IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJzaV91c2JfZXZlbnRfdGltZW91dChzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyKVxuIFx0cmV0dXJuIEVWRU5UX1dBSVRfRk9SRVZFUjtcbiB9XG4gXG4tdm9pZCByc2lfdXNiX3J4X3RocmVhZChzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uKTtcbiYjNDM7aW50IHJzaV91c2JfcnhfdGhyZWFkKHZvaWQgKmRhdGEpO1xuICNlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjMwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7QlQmIzM0OywKICAgICYjMzQ7TU1DJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX1JTSSYjMzQ7LAogICAgJiMzNDtSU0lfOTFYJiMzNDssCiAgICAmIzM0O1JTSV9VU0ImIzM0OywKICAgICYjMzQ7UlNJX0NPRVgmIzM0OywKICAgICYjMzQ7UlNJX1NESU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyc2lfdXNiX3J4X3RocmVhZCYjMzQ7LAogICAgJiMzNDtyc2lfc2Rpb19yeF90aHJlYWQmIzM0OywKICAgICYjMzQ7cnNpX3R4X3NjaGVkdWxlcl90aHJlYWQmIzM0OywKICAgICYjMzQ7cnNpX2NvZXhfc2NoZWR1bGVyX3RocmVhZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlcyBvZiBzZXZlcmFsIGt0aHJlYWQgZnVuY3Rpb25zIChyc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkLCByc2lfdHhfc2NoZWR1bGVyX3RocmVhZCwgcnNpX3NkaW9fcnhfdGhyZWFkLCByc2lfdXNiX3J4X3RocmVhZCkgaW4gdGhlIFJlZHBpbmUgU2lnbmFscyBJbmMuIChSU0kpIHdpcmVsZXNzIGRyaXZlciB0byBtYXRjaCB0aGUgZXhwZWN0ZWQgYGludCAoKikodm9pZCAqKWAgdHlwZSBmb3Iga3RocmVhZCBjcmVhdGlvbi4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgQ29udHJvbC1GbG93IEludGVncml0eSAoQ0ZJKSBwYW5pY3Mgd2hlbiB0aGVzZSB0aHJlYWRzIGFyZSBzcGF3bmVkLiBTaW5jZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgVVNCL1NESU8gZHJpdmVyLCBpdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgdGhyZWFkcyBleGVjdXRlIGNvcnJlY3RseSB3aXRob3V0IHRyaWdnZXJpbmcgb3RoZXIgYnVncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBiMTk4YTQ1N2E1NzRiMjE3YmZmMjljNzg4ZjNjNGY2ZTdjMzBjMDAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDEwOjMwOjI5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jCmluZGV4IGVlNjAzYTUxNzNmYjMuLjAyM2M1MzlmYzM4NDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2NvZXguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmMKQEAgLTUwLDggJiM0Mzs1MCw5IEBAIHN0YXRpYyB2b2lkIHJzaV9jb2V4X3NjaGVkX3R4X3BrdHMoc3RydWN0IHJzaV9jb2V4X2N0cmxfYmxvY2sgKmNvZXhfY2IpCiAJfSB3aGlsZSAoY29leF9xICE9IFJTSV9DT0VYX1FfSU5WQUxJRCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbikKJiM0MztzdGF0aWMgaW50IHJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWQodm9pZCAqZGF0YSkKIHsKJiM0MzsJc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiA9IGRhdGE7CiAJc3RydWN0IHJzaV9jb2V4X2N0cmxfYmxvY2sgKmNvZXhfY2IgPSBjb21tb24tJmd0O2NvZXhfY2I7CiAJdTMyIHRpbWVvdXQgPSBFVkVOVF9XQUlUX0ZPUkVWRVI7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uYwppbmRleCA2NjJlNDJkMWU1ZThkLi4yY2U1MTQ3NjY2MjA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jCkBAIC0yNDYsMTIgJiM0MzsyNDYsMTMgQEAgRVhQT1JUX1NZTUJPTF9HUEwocnNpX3JlYWRfcGt0KTsKIC8qKgogICogcnNpX3R4X3NjaGVkdWxlcl90aHJlYWQoKSAtIFRoaXMgZnVuY3Rpb24gaXMgYSBrZXJuZWwgdGhyZWFkIHRvIHNlbmQgdGhlCiAgKgkJCSAgICAgICBwYWNrZXRzIHRvIHRoZSBkZXZpY2UuCi0gKiBAY29tbW9uOiBQb2ludGVyIHRvIHRoZSBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmUuCiYjNDM7ICogQGRhdGE6IFBvaW50ZXIgdG8gdGhlIGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZS4KICAqCi0gKiBSZXR1cm46IE5vbmUuCiYjNDM7ICogUmV0dXJuOiAwLgogICovCi1zdGF0aWMgdm9pZCByc2lfdHhfc2NoZWR1bGVyX3RocmVhZChzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uKQomIzQzO3N0YXRpYyBpbnQgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWQodm9pZCAqZGF0YSkKIHsKJiM0MzsJc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiA9IGRhdGE7CiAJc3RydWN0IHJzaV9odyAqYWRhcHRlciA9IGNvbW1vbi0mZ3Q7cHJpdjsKIAl1MzIgdGltZW91dCA9IEVWRU5UX1dBSVRfRk9SRVZFUjsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfc2Rpb19vcHMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3NkaW9fb3BzLmMKaW5kZXggNTk3YjIzOGUyMjk0OS4uMThhMjhhYTk3NDQ2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfc2Rpb19vcHMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9zZGlvX29wcy5jCkBAIC02Miw4ICYjNDM7NjIsOSBAQCBpbnQgcnNpX3NkaW9fbWFzdGVyX2FjY2Vzc19tc3dvcmQoc3RydWN0IHJzaV9odyAqYWRhcHRlciwgdTE2IG1zX3dvcmQpCiAKIHN0YXRpYyB2b2lkIHJzaV9yeF9oYW5kbGVyKHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIpOwogCi12b2lkIHJzaV9zZGlvX3J4X3RocmVhZChzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uKQomIzQzO2ludCByc2lfc2Rpb19yeF90aHJlYWQodm9pZCAqZGF0YSkKIHsKJiM0MzsJc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiA9IGRhdGE7CiAJc3RydWN0IHJzaV9odyAqYWRhcHRlciA9IGNvbW1vbi0mZ3Q7cHJpdjsKIAlzdHJ1Y3QgcnNpXzkxeF9zZGlvZGV2ICpzZGV2ID0gYWRhcHRlci0mZ3Q7cnNpX2RldjsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiX29wcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiX29wcy5jCmluZGV4IDI1YzJiMjMyMzk0YTYuLmU4OTk2MzFiOWFlZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3VzYl9vcHMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF91c2Jfb3BzLmMKQEAgLTIxLDEyICYjNDM7MjEsMTMgQEAKIC8qKgogICogcnNpX3VzYl9yeF90aHJlYWQoKSAtIFRoaXMgaXMgYSBrZXJuZWwgdGhyZWFkIHRvIHJlY2VpdmUgdGhlIHBhY2tldHMgZnJvbQogICoJCQkgdGhlIFVTQiBkZXZpY2UuCi0gKiBAY29tbW9uOiBQb2ludGVyIHRvIHRoZSBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmUuCiYjNDM7ICogQGRhdGE6IFBvaW50ZXIgdG8gdGhlIGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZS4KICAqCi0gKiBSZXR1cm46IE5vbmUuCiYjNDM7ICogUmV0dXJuOiAwLgogICovCi12b2lkIHJzaV91c2JfcnhfdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24pCiYjNDM7aW50IHJzaV91c2JfcnhfdGhyZWFkKHZvaWQgKmRhdGEpCiB7CiYjNDM7CXN0cnVjdCByc2lfY29tbW9uICpjb21tb24gPSBkYXRhOwogCXN0cnVjdCByc2lfaHcgKmFkYXB0ZXIgPSBjb21tb24tJmd0O3ByaXY7CiAJc3RydWN0IHJzaV85MXhfdXNiZGV2ICpkZXYgPSBhZGFwdGVyLSZndDtyc2lfZGV2OwogCWludCBzdGF0dXM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9jb21tb24uaAppbmRleCAzY2RmOWRlZDg3NmQ5Li4yYTMzYTgxZjcxYTNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfY29tbW9uLmgKQEAgLTU4LDcgJiM0Mzs1OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByc2lfcmVzZXRfZXZlbnQoc3RydWN0IHJzaV9ldmVudCAqZXZlbnQpCiAKIHN0YXRpYyBpbmxpbmUgaW50IHJzaV9jcmVhdGVfa3RocmVhZChzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLAogCQkJCSAgICAgc3RydWN0IHJzaV90aHJlYWQgKnRocmVhZCwKLQkJCQkgICAgIHZvaWQgKmZ1bmNfcHRyLAomIzQzOwkJCQkgICAgIGludCAoKmZ1bmNfcHRyKSh2b2lkICpkYXRhKSwKIAkJCQkgICAgIHU4ICpuYW1lKQogewogCWluaXRfY29tcGxldGlvbigmYW1wO3RocmVhZC0mZ3Q7Y29tcGxldGlvbik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX3NkaW8uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfc2Rpby5oCmluZGV4IDdjOTFiMTI2YjM1MGYuLmViMmI3ZjM2YTdlNGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfc2Rpby5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfc2Rpby5oCkBAIC0xMzQsNSAmIzQzOzEzNCw1IEBAIGludCByc2lfc2Rpb19tYXN0ZXJfYWNjZXNzX21zd29yZChzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyLCB1MTYgbXNfd29yZCk7CiB2b2lkIHJzaV9zZGlvX2Fja19pbnRyKHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIsIHU4IGludF9iaXQpOwogaW50IHJzaV9zZGlvX2RldGVybWluZV9ldmVudF90aW1lb3V0KHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIpOwogaW50IHJzaV9zZGlvX2NoZWNrX2J1ZmZlcl9zdGF0dXMoc3RydWN0IHJzaV9odyAqYWRhcHRlciwgdTggcV9udW0pOwotdm9pZCByc2lfc2Rpb19yeF90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbik7CiYjNDM7aW50IHJzaV9zZGlvX3J4X3RocmVhZCh2b2lkICpkYXRhKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV91c2IuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfdXNiLmgKaW5kZXggOTYxODUxNzQ4YmM0Yy4uNzgwNjdlYWZmZThiMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV91c2IuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX3VzYi5oCkBAIC04MSw1ICYjNDM7ODEsNSBAQCBzdGF0aWMgaW5saW5lIGludCByc2lfdXNiX2V2ZW50X3RpbWVvdXQoc3RydWN0IHJzaV9odyAqYWRhcHRlcikKIAlyZXR1cm4gRVZFTlRfV0FJVF9GT1JFVkVSOwogfQogCi12b2lkIHJzaV91c2JfcnhfdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24pOwomIzQzO2ludCByc2lfdXNiX3J4X3RocmVhZCh2b2lkICpkYXRhKTsKICNlbmRpZgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzI4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNTI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgdGhlIGByc2lgIHdpcmVsZXNzIGRyaXZlciAoYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9gKSBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBtYWtpbmcgc29tZSBzaWduYXR1cmUgY2hhbmdlcyB0byB0aGUgdGhyZWFkIGZ1bmN0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyB1cGRhdGluZyB0aGUgc2lnbmF0dXJlIGZyb20gYHZvaWQgZnVuYyhzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uKWAgdG8gYGludCBmdW5jKHZvaWQgKmRhdGEpYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYmVpbmcgZG9uZSB0byBhbGlnbiB3aXRoIHRoZSBzdGFuZGFyZCB0aHJlYWRpbmcgQVBJcyBpbiB0aGUga2VybmVsLCBsaWtlIGBrdGhyZWFkX3J1bmAsIHdoaWNoIGV4cGVjdCB0aGUgZnVuY3Rpb24gcG9pbnRlciB0byBoYXZlIHRoZSBgaW50ICgqKSh2b2lkICopYCBzaWduYXR1cmUuIFRoYXQgbWFrZXMgc2Vuc2UgZnJvbSBhIGNvZGluZyBzdGFuZGFyZCBwZXJzcGVjdGl2ZS4KCkxldCYjMzk7cyBzZWUgaWYgdGhpcyBkcml2ZXIgaXMgZXZlbiByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBmb3IgZnV6emluZy4gVGhpcyBpcyBhIFJlZHBpbmUgU2lnbmFscyBJbmMuIDkxeCBXTEFOIGFuZCBCbHVldG9vdGggY29tYm8gZGV2aWNlIGRyaXZlci4gSXQgc3VwcG9ydHMgYm90aCBTRElPIGFuZCBVU0IgaW50ZXJmYWNlcy4gVGhlIFVTQiBzaWRlIG9mIHRoaXMgaXMgbG9va2luZyBwcm9taXNpbmcgYmVjYXVzZSB3ZSBjYW4gZW11bGF0ZSBVU0IgZGV2aWNlcyB1c2luZyBhIFVTQiBnYWRnZXQsIGEgYGR1bW15X2hjZGAsIG9yIGV2ZW4gdGhlIHN5emthbGxlciBVU0IgZnV6emVyICh1c2luZyB2aGNpKS4gU28gVVNCIGRyaXZlcnMgc2hvdWxkIGJlIGZ1enphYmxlLiBTRElPLi4uIHRoYXQmIzM5O3MgbW9yZSBvZiBhIGdhbWJsZSwgYnV0IFVTQiBpcyBkZWZpbml0ZWx5IGEgZ29vZCB0YXJnZXQuCgpOb3csIGxldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGFjdHVhbCBjb2RlLiBUaGUgcGF0Y2ggdG91Y2hlcyBgcnNpX2NyZWF0ZV9rdGhyZWFkYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9jb21tb24uaGAgYW5kLCBhcyBzdXNwZWN0ZWQsIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgaGFzIGJlZW4gbW9kaWZpZWQgdG8gYGludCAoKmZ1bmNfcHRyKSh2b2lkICpkYXRhKWAuIEJpbmdvLgoKVGhlIGtleSB0aHJlYWQgZnVuY3Rpb25zIHRoYXQgYXJlIGJlaW5nIGNoYW5nZWQgYXJlIGByc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkYCwgYHJzaV90eF9zY2hlZHVsZXJfdGhyZWFkYCwgYHJzaV9zZGlvX3J4X3RocmVhZGAsIGFuZCBgcnNpX3VzYl9yeF90aHJlYWRgLiBUaGVzZSBhcmUgdGhyZWFkIGZ1bmN0aW9ucywgc28gdGhleSBzaG91bGQgYmUgZnVuY3Rpb25hbCBjaGFuZ2VzLiBCdXQgd2FpdCwgdGhpcyBpcyBtb3JlIHRoYW4ganVzdCBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdOKAmXMgYWxzbyBmaXhpbmcgYSBwcm90b3R5cGUgbWlzbWF0Y2gsIG1lYW5pbmcgdGhpcyBjb3VsZCBoYXZlIGJlZW4gYSBwb3RlbnRpYWwgc291cmNlIG9mIGVycm9ycywgZXNwZWNpYWxseSBDb250cm9sLUZsb3cgSW50ZWdyaXR5IChDRkkpIHZpb2xhdGlvbnMhIElmIHRoZXJlJiMzOTtzIGEgdHlwZSBtaXNtYXRjaCwgdGhlIGtlcm5lbCBjb3VsZCBwYW5pYy4gQnkgZml4aW5nIHRoZSBzaWduYXR1cmUsIHdlIGNhbiBhdm9pZCBDRkkgcGFuaWNzLgoKSXMgdGhpcyBwYXRjaCB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlICphbmQqIGl0JiMzOTtzIGluIGEgVVNCIGRyaXZlci4gUGx1cywgdGhpcyBtaWdodCBhY3R1YWxseSBiZSBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIENGSSB2aW9sYXRpb24uIENhc3RpbmcgZnVuY3Rpb24gcG9pbnRlcnMgdG8gdGhlIHdyb25nIHR5cGUgaXMgYSBjbGFzc2ljIENGSSBwcm9ibGVtLiBJdOKAmXMgY3JpdGljYWwgdG8gdmVyaWZ5IHRoYXQgdGhlIHRocmVhZHMgcnVuIGNvcnJlY3RseSB3aXRob3V0IGFueSB1bmV4cGVjdGVkIGJlaGF2aW91ci4gVGhpcyBjb3VsZCBiZSBhIGdvb2QgZmluZC4KCkkgc2hvdWxkIHByb2JhYmx5IHNlZSBob3cgdGhpcyBkcml2ZXIgaXMgY29uZmlndXJlZC4gVGltZSB0byBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bGwganVzdCBncmVwIGZvciBgcnNpYCBvciByZWFkIGl0IGRpcmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFdMQU5fVkVORE9SX1JTSVxuICAgMzpcdFx0Ym9vbCBcJiMzNDtSZWRwaW5lIFNpZ25hbHMgSW5jIGRldmljZXNcJiMzNDtcbiAgIDQ6XHRcdGRlZmF1bHQgeVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBJZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxuICAgNzpcdFxuICAgODpcdFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGFmZmVjdCB0aGVcbiAgIDk6XHRcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbCB0aGVcbiAgMTA6XHRcdCAgcXVlc3Rpb25zIGFib3V0IHRoZXNlIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlIGFza2VkIGZvclxuICAxMTpcdFx0ICB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXG4gIDEyOlx0XG4gIDEzOlx0aWYgV0xBTl9WRU5ET1JfUlNJXG4gIDE0Olx0XG4gIDE1Olx0Y29uZmlnIFJTSV85MVhcbiAgMTY6XHRcdHRyaXN0YXRlIFwmIzM0O1JlZHBpbmUgU2lnbmFscyBJbmMgOTF4IFdMQU4gZHJpdmVyIHN1cHBvcnRcJiMzNDtcbiAgMTc6XHRcdHNlbGVjdCBCVF9IQ0lSU0kgaWYgUlNJX0NPRVhcbiAgMTg6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMTk6XHRcdGhlbHBcbiAgMjA6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmVzIHN1cHBvcnQgZm9yIFJTSSAxeDEgZGV2aWNlcy5cbiAgMjE6XHRcdCAgU2VsZWN0IE0gKHJlY29tbWVuZGVkKSwgaWYgeW91IGhhdmUgYSBSU0kgMXgxIHdpcmVsZXNzIG1vZHVsZS5cbiAgMjI6XHRcbiAgMjM6XHRjb25maWcgUlNJX0RFQlVHRlNcbiAgMjQ6XHRcdGJvb2wgXCYjMzQ7UmVkcGluZSBTaWduYWxzIEluYyBkZWJ1ZyBzdXBwb3J0XCYjMzQ7XG4gIDI1Olx0XHRkZXBlbmRzIG9uIFJTSV85MVhcbiAgMjY6XHRcdGRlZmF1bHQgeVxuICAyNzpcdFx0aGVscFxuICAyODpcdFx0IFNheSBZLCBpZiB5b3Ugd291bGQgbGlrZSB0byBlbmFibGUgZGVidWcgc3VwcG9ydC4gVGhpcyBvcHRpb25cbiAgMjk6XHRcdCBjcmVhdGVzIGRlYnVnZnMgZW50cmllc1xuICAzMDpcdFxuICAzMTpcdGNvbmZpZyBSU0lfU0RJT1xuICAzMjpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVkcGluZSBTaWduYWxzIFNESU8gYnVzIHN1cHBvcnRcJiMzNDtcbiAgMzM6XHRcdGRlcGVuZHMgb24gTU1DIFx1MDAyNlx1MDAyNiBSU0lfOTFYXG4gIDM0Olx0XHRkZWZhdWx0IG1cbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgU0RJTyBidXMgc3VwcG9ydCBpbiByc2kgZHJpdmVycy5cbiAgMzc6XHRcdCAgU2VsZWN0IE0gKHJlY29tbWVuZGVkKSwgaWYgeW91IGhhdmUgYSBSU0kgMXgxIHdpcmVsZXNzIG1vZHVsZS5cbiAgMzg6XHRcbiAgMzk6XHRjb25maWcgUlNJX1VTQlxuICA0MDpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVkcGluZSBTaWduYWxzIFVTQiBidXMgc3VwcG9ydFwmIzM0O1xuICA0MTpcdFx0ZGVwZW5kcyBvbiBVU0IgXHUwMDI2XHUwMDI2IFJTSV85MVhcbiAgNDI6XHRcdGRlZmF1bHQgbVxuICA0MzpcdFx0aGVscFxuICA0NDpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBVU0IgYnVzIHN1cHBvcnQgaW4gcnNpIGRyaXZlcnMuXG4gIDQ1Olx0XHQgIFNlbGVjdCBNIChyZWNvbW1lbmRlZCksIGlmIHlvdSBoYXZlIGEgUlNJIDF4MSB3aXJlbGVzcyBtb2R1bGUuXG4gIDQ2Olx0XG4gIDQ3Olx0Y29uZmlnIFJTSV9DT0VYXG4gIDQ4Olx0XHRib29sIFwmIzM0O1JlZHBpbmUgU2lnbmFscyBXTEFOIEJUIENvZXhpc3RlbmNlIHN1cHBvcnRcJiMzNDtcbiAgNDk6XHRcdGRlcGVuZHMgb24gQlQgXHUwMDI2XHUwMDI2IFJTSV85MVhcbiAgNTA6XHRcdGRlcGVuZHMgb24gIShCVD1tIFx1MDAyNlx1MDAyNiBSU0lfOTFYPXkpXG4gIDUxOlx0XHRkZWZhdWx0IHlcbiAgNTI6XHRcdGhlbHBcbiAgNTM6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgV0xBTiBCVCBjb2V4IHN1cHBvcnQgaW4gcnNpIGRyaXZlcnMuXG4gIDU0Olx0XHQgIFNlbGVjdCBNIChyZWNvbW1lbmRlZCksIGlmIHlvdSBoYXZlIHdhbnQgdG8gdXNlIHRoaXMgZmVhdHVyZVxuICA1NTpcdFx0ICBhbmQgeW91IGhhdmUgUlM5MTEzIG1vZHVsZS5cbiAgNTY6XHRcbiAgNTc6XHRlbmRpZiAjIFdMQU5fVkVORE9SX1JTSVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NDEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgV0xBTl9WRU5ET1JfUlNJYCwgYFJTSV85MVhgLCBgUlNJX1VTQmAsIGBSU0lfQ09FWGAsIGFuZCBgUlNJX1NESU9gLiBTaW5jZSB0aGlzIGlzIGEgVVNCIGRyaXZlciwgYFJTSV9VU0JgIGlzIG9idmlvdXNseSBjcml0aWNhbC4gQW5kIEkgc2VlIHRoYXQgYHJzaV85MXhfY29leC5jYCBpcyBiZWluZyBtb2RpZmllZCwgc28gYFJTSV9DT0VYYCBpcyBkZWZpbml0ZWx5IHJlbGV2YW50LgoKVGhlcmVmb3JlLCBteSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZW5hYmxlIGBXTEFOX1ZFTkRPUl9SU0lgLCBgUlNJXzkxWGAsIGBSU0lfVVNCYCwgYW5kIGBSU0lfQ09FWGAuIEJ1dCB3YWl0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcy4gQWhhISBgUlNJX0NPRVhgIGRlcGVuZHMgb24gYm90aCBgQlRgIGFuZCBgUlNJXzkxWGAuIEFuZCBmdXJ0aGVyLCBgUlNJXzkxWGAgcmVsaWVzIG9uIGBNQUM4MDIxMWAsIHdoaWxlIGBSU0lfVVNCYCBkZXBlbmRzIG9uIGBVU0JgLgoKQWxyaWdodCwgdGhhdCBjbGFyaWZpZXMgaXQuIFRvIG1ha2UgdGhpcyB3b3JrIGNvcnJlY3RseSwgSSBuZWVkIHRvIGVuYWJsZSB0aGUgZm9sbG93aW5nOiBgTUFDODAyMTFgLCBgVVNCYCwgYEJUYCwgYFdMQU5fVkVORE9SX1JTSWAsIGBSU0lfOTFYYCwgYFJTSV9VU0JgLCBhbmQgYFJTSV9DT0VYYC4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIGtlZXAgdGhlc2UgZGVwZW5kZW5jaWVzIHN0cmFpZ2h0IG9yIHRoZSBidWlsZCB3aWxsIGZhaWwuIE5vdywgSSB3YW50IHRvIHRha2UgYSBsb29rIGF0IGhvdyB0aGV5IGFyZSBtYW5hZ2luZyB0aHJlYWRzLCBzbyBJJiMzOTtsbCBjaGVjayBgcnNpX2NyZWF0ZV9rdGhyZWFkYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9jb21tb24uaGAgdG8gZnVsbHkgdW5kZXJzdGFuZCBpdHMgdXNhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnNpX2NyZWF0ZV9rdGhyZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmM9MTM5PWludCByc2lfY29leF9hdHRhY2goc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmMtMTU2LVx0LyogSW5pdGlhbGl6ZSBjby1leCB0aHJlYWQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2NvZXguYzoxNTc6XHRpZiAocnNpX2NyZWF0ZV9rdGhyZWFkKGNvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2NvZXguYy0xNTgtXHRcdFx0ICAgICAgIFx1MDAyNmNvZXhfY2ItXHUwMDNlY29leF90eF90aHJlYWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jPTMwMj1zdHJ1Y3QgcnNpX2h3ICpyc2lfOTF4X2luaXQodTE2IG9wZXJfbW9kZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWluLmMtMzMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jOjMzMjpcdGlmIChyc2lfY3JlYXRlX2t0aHJlYWQoY29tbW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jLTMzMy1cdFx0XHQgICAgICAgXHUwMDI2Y29tbW9uLVx1MDAzZXR4X3RocmVhZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9zZGlvLmM9MTAwMT1zdGF0aWMgaW50IHJzaV9wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpwZnVuY3Rpb24sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfc2Rpby5jLTEwNDAtXHRyc2lfaW5pdF9ldmVudChcdTAwMjZzZGV2LVx1MDAzZXJ4X3RocmVhZC5ldmVudCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9zZGlvLmM6MTA0MTpcdHN0YXR1cyA9IHJzaV9jcmVhdGVfa3RocmVhZChhZGFwdGVyLVx1MDAzZXByaXYsIFx1MDAyNnNkZXYtXHUwMDNlcnhfdGhyZWFkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfc2Rpby5jLTEwNDItXHRcdFx0XHQgICAgcnNpX3NkaW9fcnhfdGhyZWFkLCBcJiMzNDtTRElPLVJYLVRocmVhZFwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiLmM9NTczPXN0YXRpYyBpbnQgcnNpX3VzYl9pbml0X3J4KHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiLmMtNTkzLVx0cnNpX2luaXRfZXZlbnQoXHUwMDI2ZGV2LVx1MDAzZXJ4X3RocmVhZC5ldmVudCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF91c2IuYzo1OTQ6XHRpZiAocnNpX2NyZWF0ZV9rdGhyZWFkKGFkYXB0ZXItXHUwMDNlcHJpdiwgXHUwMDI2ZGV2LVx1MDAzZXJ4X3RocmVhZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3VzYi5jLTU5NS1cdFx0XHQgICAgICAgcnNpX3VzYl9yeF90aHJlYWQsIFwmIzM0O1JYLVRocmVhZFwmIzM0OykpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oPTU0PXN0YXRpYyBpbmxpbmUgdm9pZCByc2lfcmVzZXRfZXZlbnQoc3RydWN0IHJzaV9ldmVudCAqZXZlbnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9jb21tb24uaC01OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfY29tbW9uLmg6NTk6c3RhdGljIGlubGluZSBpbnQgcnNpX2NyZWF0ZV9rdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oLTYwLVx0XHRcdFx0ICAgICBzdHJ1Y3QgcnNpX3RocmVhZCAqdGhyZWFkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNDQKCQkJCQkJCW91dHB1dDogMjYzCgkJCQkJCQl0aG91Z2h0czogMTQ1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBSU0kgV2lyZWxlc3MgRHJpdmVyIFRocmVhZHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIG1vZGlmaWVkIGZ1bmN0aW9uczogYHJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWRgLCBgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWRgLCBgcnNpX3NkaW9fcnhfdGhyZWFkYCwgYW5kIGByc2lfdXNiX3J4X3RocmVhZGAuIFRoZXNlIGFyZSB0aHJlYWQgZnVuY3Rpb25zLCBhbmQgdGhhdCYjMzk7cyB3aGVyZSBteSBmb2N1cyBuZWVkcyB0byBiZS4gUmlnaHQgYXdheSwgYHJzaV9zZGlvX3J4X3RocmVhZGAgZ2l2ZXMgbWUgcGF1c2UgYmVjYXVzZSBTRElPIGNhbiBiZSB0cmlja3kgdG8gZnV6eiBlZmZlY3RpdmVseSB3aXRob3V0IGEgcHJvcGVyIGVtdWxhdG9yIGluIFFFTVUuIEJ1dCB0aGVuIEkgc2VlIGByc2lfdXNiX3J4X3RocmVhZGAsIGFuZCB0aGF0JiMzOTtzIGdvbGQg4oCTIFVTQiBpcyBtdWNoIG1vcmUgZnV6ei1mcmllbmRseSB3aXRoIHRoaW5ncyBsaWtlIFVTQiBnYWRnZXQvZHVtbXlfaGNkL3ZoY2kuIEkgYWxzbyB3YW50IHRvIGNvbnNpZGVyIGByc2lfdHhfc2NoZWR1bGVyX3RocmVhZGAgYW5kIGByc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkYCwgc2luY2UgdGhleSYjMzk7cmUgdGhlcmUuCgpUaGUgZmlyc3Qgc3RlcCBpcyBjaGVja2luZyB3aGV0aGVyIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc3RhdGljIG9yIG5vdC4gTG9va2luZyBpbnRvIHRoZSBjb2RlLCBgcnNpX3VzYl9yeF90aHJlYWRgIGFuZCBgcnNpX3NkaW9fcnhfdGhyZWFkYCBhcmUgKm5vdCogc3RhdGljLCBzbyB0aGV5JiMzOTtyZSBkZWZpbml0ZWx5IGdvb2QgY2FuZGlkYXRlcy4gRXhjZWxsZW50ISBOb3cgSSBjaGVjayBgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWRgIGFuZCBgcnNpX2NvZXhfc2NoZWR1bGVyX3RocmVhZGAuIFRoZXkgKmFyZSogc3RhdGljLCBidXQgc2luY2UgdGhleSYjMzk7cmUgcGFzc2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzIHRvIGByc2lfY3JlYXRlX2t0aHJlYWRgLCB0aGV5IGFyZSBsaWtlbHkgbm90IGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBUaGVzZSB3aWxsIGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gU3l6a2FsbGVyIG1pZ2h0IHByZWZlciBub24tc3RhdGljIHN5bWJvbHMsIGJ1dCBzaW5jZSB0aGV5IGFyZW4mIzM5O3QgaW5saW5lZCwgaXQgc2hvdWxkIGJlIGFibGUgdG8gcmVzb2x2ZSB0aGVtLgoKSSB3aWxsIGluY2x1ZGUgYWxsIG9mIHRoZW0gaW5pdGlhbGx5LCBqdXN0IHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUsIGJlY2F1c2UgdGhleSBhbGwgc291bmQgbGlrZSBncmVhdCB0YXJnZXRzOiBgcnNpX3VzYl9yeF90aHJlYWRgLCBgcnNpX3NkaW9fcnhfdGhyZWFkYCwgYHJzaV90eF9zY2hlZHVsZXJfdGhyZWFkYCwgYW5kIGByc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkYC4gVGhlIFVTQiBSWCB0aHJlYWQgaXMgcHJvYmFibHkgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuCgpJIHdhbnQgdG8gc2VlIGlmIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBjYWxsIHRoZXNlIG9yIGFyZSBjbG9zZWx5IHJlbGF0ZWQuIEkgY29uZmlybSB0aGF0IGByc2lfdXNiX2luaXRfcnhgIGNhbGxzIGByc2lfY3JlYXRlX2t0aHJlYWRgIHdpdGggYHJzaV91c2JfcnhfdGhyZWFkYCwgYHJzaV85MXhfaW5pdGAgY2FsbHMgYHJzaV9jcmVhdGVfa3RocmVhZGAgd2l0aCBgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWRgLCBhbmQgYHJzaV9jb2V4X2F0dGFjaGAgY2FsbHMgYHJzaV9jcmVhdGVfa3RocmVhZGAgd2l0aCBgcnNpX2NvZXhfc2NoZWR1bGVyX3RocmVhZGAuIFRoaXMgaXMgYSBzb2xpZCBzaWduIHRoYXQgYWxsIG9mIHRoZW0gYXJlIHZhbGlkIGZ1enppbmcgdGFyZ2V0cy4KClNvLCBoZXJlJiMzOTtzIG15IGxpc3Qgb2YgRm9jdXNTeW1ib2xzOiBgcnNpX3VzYl9yeF90aHJlYWRgLCBgcnNpX3NkaW9fcnhfdGhyZWFkYCwgYHJzaV90eF9zY2hlZHVsZXJfdGhyZWFkYCwgYHJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWRgLgoKTmV4dCwgSSBuZWVkIHRvIGxvb2sgYXQgdGhlIGNvbmZpZyBvcHRpb25zLiBMZXQmIzM5O3Mgc2VlLi4uIGBNQUM4MDIxMWAsIGBVU0JgLCBgQlRgLCBgV0xBTl9WRU5ET1JfUlNJYCwgYFJTSV85MVhgLCBgUlNJX1VTQmAsIGBSU0lfQ09FWGAsIGBSU0lfU0RJT2AuIEkgbmVlZCB0byByZW1lbWJlciB0aGF0IGBSU0lfU0RJT2AgZGVwZW5kcyBvbiBgTU1DYCwgc28gSSBtdXN0IGluY2x1ZGUgdGhhdCBhcyB3ZWxsLgoKSGVyZSBhcmUgdGhlIHJlcXVpcmVkIGNvbmZpZ3M6CmBNQUM4MDIxMWAKYFVTQmAKYEJUYApgTU1DYApgV0xBTl9WRU5ET1JfUlNJYApgUlNJXzkxWGAKYFJTSV9VU0JgCmBSU0lfQ09FWGAKYFJTSV9TRElPYAoKT2theSwgYW5kIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBkZXBlbmRlbmNpZXMuIGBSU0lfQ09FWGAgcmVxdWlyZXMgYEJUYCwgYFJTSV85MVhgIG5lZWRzIGBNQUM4MDIxMWAsIGBSU0lfVVNCYCBuZWVkcyBgVVNCYCBhbmQgYFJTSV85MVhgLCBhbmQgYFJTSV9TRElPYCBuZWVkcyBgTU1DYCBhbmQgYFJTSV85MVhgLiBBbGwgbG9va3MgZ29vZCB0aGVyZS4KCkkgYW0gY29uZmlkZW50IHRoYXQgdGhpcyBpcyBhIHZhbGlkIGFwcHJvYWNoLCBhbmQgdGhlc2UgdGhyZWFkcyBhcmUgdGhlIGJlc3QgcGxhY2VzIHRvIHN0YXJ0IGZ1enppbmcgdG8gZXhwb3NlIGFueSBwb3RlbnRpYWwgYnVncywgYXMgdGhpcyBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgaXNzdWUgd2hlcmUgdGhyZWFkIHNpZ25hdHVyZXMgd2VyZSBpbmNvcnJlY3QsIGFuZCBzaG91bGQgYmUgZnV6ei10ZXN0ZWQuCgpUaGUgbmFtZXMgSSBpZGVudGlmaWVkIGFyZSBjb3JyZWN0LCBhbmQgSSB3aWxsIG5vdyBzZXQgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtCVCYjMzQ7LAogICAgJiMzNDtNTUMmIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfUlNJJiMzNDssCiAgICAmIzM0O1JTSV85MVgmIzM0OywKICAgICYjMzQ7UlNJX1VTQiYjMzQ7LAogICAgJiMzNDtSU0lfQ09FWCYjMzQ7LAogICAgJiMzNDtSU0lfU0RJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JzaV91c2JfcnhfdGhyZWFkJiMzNDssCiAgICAmIzM0O3JzaV9zZGlvX3J4X3RocmVhZCYjMzQ7LAogICAgJiMzNDtyc2lfdHhfc2NoZWR1bGVyX3RocmVhZCYjMzQ7LAogICAgJiMzNDtyc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHRoZSBmdW5jdGlvbiBzaWduYXR1cmVzIG9mIHNldmVyYWwga3RocmVhZCBmdW5jdGlvbnMgKHJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWQsIHJzaV90eF9zY2hlZHVsZXJfdGhyZWFkLCByc2lfc2Rpb19yeF90aHJlYWQsIHJzaV91c2JfcnhfdGhyZWFkKSBpbiB0aGUgUmVkcGluZSBTaWduYWxzIEluYy4gKFJTSSkgd2lyZWxlc3MgZHJpdmVyIHRvIG1hdGNoIHRoZSBleHBlY3RlZCBgaW50ICgqKSh2b2lkICopYCB0eXBlIGZvciBrdGhyZWFkIGNyZWF0aW9uLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBDb250cm9sLUZsb3cgSW50ZWdyaXR5IChDRkkpIHBhbmljcyB3aGVuIHRoZXNlIHRocmVhZHMgYXJlIHNwYXduZWQuIFNpbmNlIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBVU0IvU0RJTyBkcml2ZXIsIGl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSB0aHJlYWRzIGV4ZWN1dGUgY29ycmVjdGx5IHdpdGhvdXQgdHJpZ2dlcmluZyBvdGhlciBidWdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7QlQmIzM0OywKICAgICYjMzQ7TU1DJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX1JTSSYjMzQ7LAogICAgJiMzNDtSU0lfOTFYJiMzNDssCiAgICAmIzM0O1JTSV9VU0ImIzM0OywKICAgICYjMzQ7UlNJX0NPRVgmIzM0OywKICAgICYjMzQ7UlNJX1NESU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyc2lfdXNiX3J4X3RocmVhZCYjMzQ7LAogICAgJiMzNDtyc2lfc2Rpb19yeF90aHJlYWQmIzM0OywKICAgICYjMzQ7cnNpX3R4X3NjaGVkdWxlcl90aHJlYWQmIzM0OywKICAgICYjMzQ7cnNpX2NvZXhfc2NoZWR1bGVyX3RocmVhZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlcyBvZiBzZXZlcmFsIGt0aHJlYWQgZnVuY3Rpb25zIChyc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkLCByc2lfdHhfc2NoZWR1bGVyX3RocmVhZCwgcnNpX3NkaW9fcnhfdGhyZWFkLCByc2lfdXNiX3J4X3RocmVhZCkgaW4gdGhlIFJlZHBpbmUgU2lnbmFscyBJbmMuIChSU0kpIHdpcmVsZXNzIGRyaXZlciB0byBtYXRjaCB0aGUgZXhwZWN0ZWQgYGludCAoKikodm9pZCAqKWAgdHlwZSBmb3Iga3RocmVhZCBjcmVhdGlvbi4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgQ29udHJvbC1GbG93IEludGVncml0eSAoQ0ZJKSBwYW5pY3Mgd2hlbiB0aGVzZSB0aHJlYWRzIGFyZSBzcGF3bmVkLiBTaW5jZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgVVNCL1NESU8gZHJpdmVyLCBpdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgdGhyZWFkcyBleGVjdXRlIGNvcnJlY3RseSB3aXRob3V0IHRyaWdnZXJpbmcgb3RoZXIgYnVncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjMwOjMxLjE2ODA2NzU0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyOTI1NjI3MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIkJUXCIsXG4gICAgXCJNTUNcIixcbiAgICBcIldMQU5fVkVORE9SX1JTSVwiLFxuICAgIFwiUlNJXzkxWFwiLFxuICAgIFwiUlNJX1VTQlwiLFxuICAgIFwiUlNJX0NPRVhcIixcbiAgICBcIlJTSV9TRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnNpX3VzYl9yeF90aHJlYWRcIixcbiAgICBcInJzaV9zZGlvX3J4X3RocmVhZFwiLFxuICAgIFwicnNpX3R4X3NjaGVkdWxlcl90aHJlYWRcIixcbiAgICBcInJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlcyBvZiBzZXZlcmFsIGt0aHJlYWQgZnVuY3Rpb25zIChyc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkLCByc2lfdHhfc2NoZWR1bGVyX3RocmVhZCwgcnNpX3NkaW9fcnhfdGhyZWFkLCByc2lfdXNiX3J4X3RocmVhZCkgaW4gdGhlIFJlZHBpbmUgU2lnbmFscyBJbmMuIChSU0kpIHdpcmVsZXNzIGRyaXZlciB0byBtYXRjaCB0aGUgZXhwZWN0ZWQgYGludCAoKikodm9pZCAqKWAgdHlwZSBmb3Iga3RocmVhZCBjcmVhdGlvbi4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgQ29udHJvbC1GbG93IEludGVncml0eSAoQ0ZJKSBwYW5pY3Mgd2hlbiB0aGVzZSB0aHJlYWRzIGFyZSBzcGF3bmVkLiBTaW5jZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgVVNCL1NESU8gZHJpdmVyLCBpdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgdGhyZWFkcyBleGVjdXRlIGNvcnJlY3RseSB3aXRob3V0IHRyaWdnZXJpbmcgb3RoZXIgYnVncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzA6MzEuMTY4MDczNTYzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjEyMTIyNjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGIxOThhNDU3YTU3NGIyMTdiZmYyOWM3ODhmM2M0ZjZlN2MzMGMwMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyA0IDEwOjMwOjI5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2NvZXguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2NvZXguY1xcbmluZGV4IGVlNjAzYTUxNzNmYjMuLjAyM2M1MzlmYzM4NDMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jXFxuQEAgLTUwLDggKzUwLDkgQEAgc3RhdGljIHZvaWQgcnNpX2NvZXhfc2NoZWRfdHhfcGt0cyhzdHJ1Y3QgcnNpX2NvZXhfY3RybF9ibG9jayAqY29leF9jYilcXG4gXFx0fSB3aGlsZSAoY29leF9xICE9IFJTSV9DT0VYX1FfSU5WQUxJRCk7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcXG4rc3RhdGljIGludCByc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkKHZvaWQgKmRhdGEpXFxuIHtcXG4rXFx0c3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiA9IGRhdGE7XFxuIFxcdHN0cnVjdCByc2lfY29leF9jdHJsX2Jsb2NrICpjb2V4X2NiID0gY29tbW9uLVxcdTAwM2Vjb2V4X2NiO1xcbiBcXHR1MzIgdGltZW91dCA9IEVWRU5UX1dBSVRfRk9SRVZFUjtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uY1xcbmluZGV4IDY2MmU0MmQxZTVlOGQuLjJjZTUxNDc2NjYyMDggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jXFxuQEAgLTI0NiwxMiArMjQ2LDEzIEBAIEVYUE9SVF9TWU1CT0xfR1BMKHJzaV9yZWFkX3BrdCk7XFxuIC8qKlxcbiAgKiByc2lfdHhfc2NoZWR1bGVyX3RocmVhZCgpIC0gVGhpcyBmdW5jdGlvbiBpcyBhIGtlcm5lbCB0aHJlYWQgdG8gc2VuZCB0aGVcXG4gICpcXHRcXHRcXHQgICAgICAgcGFja2V0cyB0byB0aGUgZGV2aWNlLlxcbi0gKiBAY29tbW9uOiBQb2ludGVyIHRvIHRoZSBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmUuXFxuKyAqIEBkYXRhOiBQb2ludGVyIHRvIHRoZSBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmUuXFxuICAqXFxuLSAqIFJldHVybjogTm9uZS5cXG4rICogUmV0dXJuOiAwLlxcbiAgKi9cXG4tc3RhdGljIHZvaWQgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcXG4rc3RhdGljIGludCByc2lfdHhfc2NoZWR1bGVyX3RocmVhZCh2b2lkICpkYXRhKVxcbiB7XFxuK1xcdHN0cnVjdCByc2lfY29tbW9uICpjb21tb24gPSBkYXRhO1xcbiBcXHRzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyID0gY29tbW9uLVxcdTAwM2Vwcml2O1xcbiBcXHR1MzIgdGltZW91dCA9IEVWRU5UX1dBSVRfRk9SRVZFUjtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3NkaW9fb3BzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9zZGlvX29wcy5jXFxuaW5kZXggNTk3YjIzOGUyMjk0OS4uMThhMjhhYTk3NDQ2MCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9zZGlvX29wcy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfc2Rpb19vcHMuY1xcbkBAIC02Miw4ICs2Miw5IEBAIGludCByc2lfc2Rpb19tYXN0ZXJfYWNjZXNzX21zd29yZChzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyLCB1MTYgbXNfd29yZClcXG4gXFxuIHN0YXRpYyB2b2lkIHJzaV9yeF9oYW5kbGVyKHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIpO1xcbiBcXG4tdm9pZCByc2lfc2Rpb19yeF90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcXG4raW50IHJzaV9zZGlvX3J4X3RocmVhZCh2b2lkICpkYXRhKVxcbiB7XFxuK1xcdHN0cnVjdCByc2lfY29tbW9uICpjb21tb24gPSBkYXRhO1xcbiBcXHRzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyID0gY29tbW9uLVxcdTAwM2Vwcml2O1xcbiBcXHRzdHJ1Y3QgcnNpXzkxeF9zZGlvZGV2ICpzZGV2ID0gYWRhcHRlci1cXHUwMDNlcnNpX2RldjtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3VzYl9vcHMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3VzYl9vcHMuY1xcbmluZGV4IDI1YzJiMjMyMzk0YTYuLmU4OTk2MzFiOWFlZDIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiX29wcy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiX29wcy5jXFxuQEAgLTIxLDEyICsyMSwxMyBAQFxcbiAvKipcXG4gICogcnNpX3VzYl9yeF90aHJlYWQoKSAtIFRoaXMgaXMgYSBrZXJuZWwgdGhyZWFkIHRvIHJlY2VpdmUgdGhlIHBhY2tldHMgZnJvbVxcbiAgKlxcdFxcdFxcdCB0aGUgVVNCIGRldmljZS5cXG4tICogQGNvbW1vbjogUG9pbnRlciB0byB0aGUgZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlLlxcbisgKiBAZGF0YTogUG9pbnRlciB0byB0aGUgZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlLlxcbiAgKlxcbi0gKiBSZXR1cm46IE5vbmUuXFxuKyAqIFJldHVybjogMC5cXG4gICovXFxuLXZvaWQgcnNpX3VzYl9yeF90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcXG4raW50IHJzaV91c2JfcnhfdGhyZWFkKHZvaWQgKmRhdGEpXFxuIHtcXG4rXFx0c3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiA9IGRhdGE7XFxuIFxcdHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIgPSBjb21tb24tXFx1MDAzZXByaXY7XFxuIFxcdHN0cnVjdCByc2lfOTF4X3VzYmRldiAqZGV2ID0gYWRhcHRlci1cXHUwMDNlcnNpX2RldjtcXG4gXFx0aW50IHN0YXR1cztcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9jb21tb24uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfY29tbW9uLmhcXG5pbmRleCAzY2RmOWRlZDg3NmQ5Li4yYTMzYTgxZjcxYTNlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfY29tbW9uLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oXFxuQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHJzaV9yZXNldF9ldmVudChzdHJ1Y3QgcnNpX2V2ZW50ICpldmVudClcXG4gXFxuIHN0YXRpYyBpbmxpbmUgaW50IHJzaV9jcmVhdGVfa3RocmVhZChzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLFxcbiBcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCByc2lfdGhyZWFkICp0aHJlYWQsXFxuLVxcdFxcdFxcdFxcdCAgICAgdm9pZCAqZnVuY19wdHIsXFxuK1xcdFxcdFxcdFxcdCAgICAgaW50ICgqZnVuY19wdHIpKHZvaWQgKmRhdGEpLFxcbiBcXHRcXHRcXHRcXHQgICAgIHU4ICpuYW1lKVxcbiB7XFxuIFxcdGluaXRfY29tcGxldGlvbihcXHUwMDI2dGhyZWFkLVxcdTAwM2Vjb21wbGV0aW9uKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9zZGlvLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX3NkaW8uaFxcbmluZGV4IDdjOTFiMTI2YjM1MGYuLmViMmI3ZjM2YTdlNGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9zZGlvLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX3NkaW8uaFxcbkBAIC0xMzQsNSArMTM0LDUgQEAgaW50IHJzaV9zZGlvX21hc3Rlcl9hY2Nlc3NfbXN3b3JkKHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIsIHUxNiBtc193b3JkKTtcXG4gdm9pZCByc2lfc2Rpb19hY2tfaW50cihzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyLCB1OCBpbnRfYml0KTtcXG4gaW50IHJzaV9zZGlvX2RldGVybWluZV9ldmVudF90aW1lb3V0KHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIpO1xcbiBpbnQgcnNpX3NkaW9fY2hlY2tfYnVmZmVyX3N0YXR1cyhzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyLCB1OCBxX251bSk7XFxuLXZvaWQgcnNpX3NkaW9fcnhfdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24pO1xcbitpbnQgcnNpX3NkaW9fcnhfdGhyZWFkKHZvaWQgKmRhdGEpO1xcbiAjZW5kaWZcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV91c2IuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfdXNiLmhcXG5pbmRleCA5NjE4NTE3NDhiYzRjLi43ODA2N2VhZmZlOGIxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfdXNiLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX3VzYi5oXFxuQEAgLTgxLDUgKzgxLDUgQEAgc3RhdGljIGlubGluZSBpbnQgcnNpX3VzYl9ldmVudF90aW1lb3V0KHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIpXFxuIFxcdHJldHVybiBFVkVOVF9XQUlUX0ZPUkVWRVI7XFxuIH1cXG4gXFxuLXZvaWQgcnNpX3VzYl9yeF90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbik7XFxuK2ludCByc2lfdXNiX3J4X3RocmVhZCh2b2lkICpkYXRhKTtcXG4gI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjMwOjMyLjM4MTE2NTkwNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMxNzEyNTE2NTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIkJUXCIsXG4gICAgXCJNTUNcIixcbiAgICBcIldMQU5fVkVORE9SX1JTSVwiLFxuICAgIFwiUlNJXzkxWFwiLFxuICAgIFwiUlNJX1VTQlwiLFxuICAgIFwiUlNJX0NPRVhcIixcbiAgICBcIlJTSV9TRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnNpX3VzYl9yeF90aHJlYWRcIixcbiAgICBcInJzaV9zZGlvX3J4X3RocmVhZFwiLFxuICAgIFwicnNpX3R4X3NjaGVkdWxlcl90aHJlYWRcIixcbiAgICBcInJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlcyBvZiBzZXZlcmFsIGt0aHJlYWQgZnVuY3Rpb25zIChyc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkLCByc2lfdHhfc2NoZWR1bGVyX3RocmVhZCwgcnNpX3NkaW9fcnhfdGhyZWFkLCByc2lfdXNiX3J4X3RocmVhZCkgaW4gdGhlIFJlZHBpbmUgU2lnbmFscyBJbmMuIChSU0kpIHdpcmVsZXNzIGRyaXZlciB0byBtYXRjaCB0aGUgZXhwZWN0ZWQgYGludCAoKikodm9pZCAqKWAgdHlwZSBmb3Iga3RocmVhZCBjcmVhdGlvbi4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgQ29udHJvbC1GbG93IEludGVncml0eSAoQ0ZJKSBwYW5pY3Mgd2hlbiB0aGVzZSB0aHJlYWRzIGFyZSBzcGF3bmVkLiBTaW5jZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgVVNCL1NESU8gZHJpdmVyLCBpdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgdGhyZWFkcyBleGVjdXRlIGNvcnJlY3RseSB3aXRob3V0IHRyaWdnZXJpbmcgb3RoZXIgYnVncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGIxOThhNDU3YTU3NGIyMTdiZmYyOWM3ODhmM2M0ZjZlN2MzMGMwMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTA6MzA6MjkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmNcbmluZGV4IGVlNjAzYTUxNzNmYjMuLjAyM2M1MzlmYzM4NDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2NvZXguY1xuQEAgLTUwLDggKzUwLDkgQEAgc3RhdGljIHZvaWQgcnNpX2NvZXhfc2NoZWRfdHhfcGt0cyhzdHJ1Y3QgcnNpX2NvZXhfY3RybF9ibG9jayAqY29leF9jYilcbiBcdH0gd2hpbGUgKGNvZXhfcSAhPSBSU0lfQ09FWF9RX0lOVkFMSUQpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCByc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24pXG4rc3RhdGljIGludCByc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkKHZvaWQgKmRhdGEpXG4ge1xuK1x0c3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiA9IGRhdGE7XG4gXHRzdHJ1Y3QgcnNpX2NvZXhfY3RybF9ibG9jayAqY29leF9jYiA9IGNvbW1vbi1cdTAwM2Vjb2V4X2NiO1xuIFx0dTMyIHRpbWVvdXQgPSBFVkVOVF9XQUlUX0ZPUkVWRVI7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jXG5pbmRleCA2NjJlNDJkMWU1ZThkLi4yY2U1MTQ3NjY2MjA4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWluLmNcbkBAIC0yNDYsMTIgKzI0NiwxMyBAQCBFWFBPUlRfU1lNQk9MX0dQTChyc2lfcmVhZF9wa3QpO1xuIC8qKlxuICAqIHJzaV90eF9zY2hlZHVsZXJfdGhyZWFkKCkgLSBUaGlzIGZ1bmN0aW9uIGlzIGEga2VybmVsIHRocmVhZCB0byBzZW5kIHRoZVxuICAqXHRcdFx0ICAgICAgIHBhY2tldHMgdG8gdGhlIGRldmljZS5cbi0gKiBAY29tbW9uOiBQb2ludGVyIHRvIHRoZSBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmUuXG4rICogQGRhdGE6IFBvaW50ZXIgdG8gdGhlIGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZS5cbiAgKlxuLSAqIFJldHVybjogTm9uZS5cbisgKiBSZXR1cm46IDAuXG4gICovXG4tc3RhdGljIHZvaWQgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcbitzdGF0aWMgaW50IHJzaV90eF9zY2hlZHVsZXJfdGhyZWFkKHZvaWQgKmRhdGEpXG4ge1xuK1x0c3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiA9IGRhdGE7XG4gXHRzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyID0gY29tbW9uLVx1MDAzZXByaXY7XG4gXHR1MzIgdGltZW91dCA9IEVWRU5UX1dBSVRfRk9SRVZFUjtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9zZGlvX29wcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfc2Rpb19vcHMuY1xuaW5kZXggNTk3YjIzOGUyMjk0OS4uMThhMjhhYTk3NDQ2MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3NkaW9fb3BzLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3NkaW9fb3BzLmNcbkBAIC02Miw4ICs2Miw5IEBAIGludCByc2lfc2Rpb19tYXN0ZXJfYWNjZXNzX21zd29yZChzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyLCB1MTYgbXNfd29yZClcbiBcbiBzdGF0aWMgdm9pZCByc2lfcnhfaGFuZGxlcihzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyKTtcbiBcbi12b2lkIHJzaV9zZGlvX3J4X3RocmVhZChzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uKVxuK2ludCByc2lfc2Rpb19yeF90aHJlYWQodm9pZCAqZGF0YSlcbiB7XG4rXHRzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uID0gZGF0YTtcbiBcdHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIgPSBjb21tb24tXHUwMDNlcHJpdjtcbiBcdHN0cnVjdCByc2lfOTF4X3NkaW9kZXYgKnNkZXYgPSBhZGFwdGVyLVx1MDAzZXJzaV9kZXY7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiX29wcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiX29wcy5jXG5pbmRleCAyNWMyYjIzMjM5NGE2Li5lODk5NjMxYjlhZWQyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiX29wcy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF91c2Jfb3BzLmNcbkBAIC0yMSwxMiArMjEsMTMgQEBcbiAvKipcbiAgKiByc2lfdXNiX3J4X3RocmVhZCgpIC0gVGhpcyBpcyBhIGtlcm5lbCB0aHJlYWQgdG8gcmVjZWl2ZSB0aGUgcGFja2V0cyBmcm9tXG4gICpcdFx0XHQgdGhlIFVTQiBkZXZpY2UuXG4tICogQGNvbW1vbjogUG9pbnRlciB0byB0aGUgZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlLlxuKyAqIEBkYXRhOiBQb2ludGVyIHRvIHRoZSBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmUuXG4gICpcbi0gKiBSZXR1cm46IE5vbmUuXG4rICogUmV0dXJuOiAwLlxuICAqL1xuLXZvaWQgcnNpX3VzYl9yeF90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcbitpbnQgcnNpX3VzYl9yeF90aHJlYWQodm9pZCAqZGF0YSlcbiB7XG4rXHRzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uID0gZGF0YTtcbiBcdHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIgPSBjb21tb24tXHUwMDNlcHJpdjtcbiBcdHN0cnVjdCByc2lfOTF4X3VzYmRldiAqZGV2ID0gYWRhcHRlci1cdTAwM2Vyc2lfZGV2O1xuIFx0aW50IHN0YXR1cztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9jb21tb24uaFxuaW5kZXggM2NkZjlkZWQ4NzZkOS4uMmEzM2E4MWY3MWEzZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfY29tbW9uLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfY29tbW9uLmhcbkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByc2lfcmVzZXRfZXZlbnQoc3RydWN0IHJzaV9ldmVudCAqZXZlbnQpXG4gXG4gc3RhdGljIGlubGluZSBpbnQgcnNpX2NyZWF0ZV9rdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sXG4gXHRcdFx0XHQgICAgIHN0cnVjdCByc2lfdGhyZWFkICp0aHJlYWQsXG4tXHRcdFx0XHQgICAgIHZvaWQgKmZ1bmNfcHRyLFxuK1x0XHRcdFx0ICAgICBpbnQgKCpmdW5jX3B0cikodm9pZCAqZGF0YSksXG4gXHRcdFx0XHQgICAgIHU4ICpuYW1lKVxuIHtcbiBcdGluaXRfY29tcGxldGlvbihcdTAwMjZ0aHJlYWQtXHUwMDNlY29tcGxldGlvbik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9zZGlvLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX3NkaW8uaFxuaW5kZXggN2M5MWIxMjZiMzUwZi4uZWIyYjdmMzZhN2U0YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfc2Rpby5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX3NkaW8uaFxuQEAgLTEzNCw1ICsxMzQsNSBAQCBpbnQgcnNpX3NkaW9fbWFzdGVyX2FjY2Vzc19tc3dvcmQoc3RydWN0IHJzaV9odyAqYWRhcHRlciwgdTE2IG1zX3dvcmQpO1xuIHZvaWQgcnNpX3NkaW9fYWNrX2ludHIoc3RydWN0IHJzaV9odyAqYWRhcHRlciwgdTggaW50X2JpdCk7XG4gaW50IHJzaV9zZGlvX2RldGVybWluZV9ldmVudF90aW1lb3V0KHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIpO1xuIGludCByc2lfc2Rpb19jaGVja19idWZmZXJfc3RhdHVzKHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIsIHU4IHFfbnVtKTtcbi12b2lkIHJzaV9zZGlvX3J4X3RocmVhZChzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uKTtcbitpbnQgcnNpX3NkaW9fcnhfdGhyZWFkKHZvaWQgKmRhdGEpO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfdXNiLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX3VzYi5oXG5pbmRleCA5NjE4NTE3NDhiYzRjLi43ODA2N2VhZmZlOGIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV91c2IuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV91c2IuaFxuQEAgLTgxLDUgKzgxLDUgQEAgc3RhdGljIGlubGluZSBpbnQgcnNpX3VzYl9ldmVudF90aW1lb3V0KHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIpXG4gXHRyZXR1cm4gRVZFTlRfV0FJVF9GT1JFVkVSO1xuIH1cbiBcbi12b2lkIHJzaV91c2JfcnhfdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24pO1xuK2ludCByc2lfdXNiX3J4X3RocmVhZCh2b2lkICpkYXRhKTtcbiAjZW5kaWZcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjMwOjMyLjM4MTE2NzA4NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwMzUzNzk0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgdGhlIGByc2lgIHdpcmVsZXNzIGRyaXZlciAoYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9gKSBhbmQgaXQgbG9va3MgbGlrZSBpdCdzIG1ha2luZyBzb21lIHNpZ25hdHVyZSBjaGFuZ2VzIHRvIHRoZSB0aHJlYWQgZnVuY3Rpb25zLiBTcGVjaWZpY2FsbHksIGl0J3MgdXBkYXRpbmcgdGhlIHNpZ25hdHVyZSBmcm9tIGB2b2lkIGZ1bmMoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilgIHRvIGBpbnQgZnVuYyh2b2lkICpkYXRhKWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IGJlaW5nIGRvbmUgdG8gYWxpZ24gd2l0aCB0aGUgc3RhbmRhcmQgdGhyZWFkaW5nIEFQSXMgaW4gdGhlIGtlcm5lbCwgbGlrZSBga3RocmVhZF9ydW5gLCB3aGljaCBleHBlY3QgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdG8gaGF2ZSB0aGUgYGludCAoKikodm9pZCAqKWAgc2lnbmF0dXJlLiBUaGF0IG1ha2VzIHNlbnNlIGZyb20gYSBjb2Rpbmcgc3RhbmRhcmQgcGVyc3BlY3RpdmUuXG5cbkxldCdzIHNlZSBpZiB0aGlzIGRyaXZlciBpcyBldmVuIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGZvciBmdXp6aW5nLiBUaGlzIGlzIGEgUmVkcGluZSBTaWduYWxzIEluYy4gOTF4IFdMQU4gYW5kIEJsdWV0b290aCBjb21ibyBkZXZpY2UgZHJpdmVyLiBJdCBzdXBwb3J0cyBib3RoIFNESU8gYW5kIFVTQiBpbnRlcmZhY2VzLiBUaGUgVVNCIHNpZGUgb2YgdGhpcyBpcyBsb29raW5nIHByb21pc2luZyBiZWNhdXNlIHdlIGNhbiBlbXVsYXRlIFVTQiBkZXZpY2VzIHVzaW5nIGEgVVNCIGdhZGdldCwgYSBgZHVtbXlfaGNkYCwgb3IgZXZlbiB0aGUgc3l6a2FsbGVyIFVTQiBmdXp6ZXIgKHVzaW5nIHZoY2kpLiBTbyBVU0IgZHJpdmVycyBzaG91bGQgYmUgZnV6emFibGUuIFNESU8uLi4gdGhhdCdzIG1vcmUgb2YgYSBnYW1ibGUsIGJ1dCBVU0IgaXMgZGVmaW5pdGVseSBhIGdvb2QgdGFyZ2V0LlxuXG5Ob3csIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYWN0dWFsIGNvZGUuIFRoZSBwYXRjaCB0b3VjaGVzIGByc2lfY3JlYXRlX2t0aHJlYWRgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oYCBhbmQsIGFzIHN1c3BlY3RlZCwgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBoYXMgYmVlbiBtb2RpZmllZCB0byBgaW50ICgqZnVuY19wdHIpKHZvaWQgKmRhdGEpYC4gQmluZ28uXG5cblRoZSBrZXkgdGhyZWFkIGZ1bmN0aW9ucyB0aGF0IGFyZSBiZWluZyBjaGFuZ2VkIGFyZSBgcnNpX2NvZXhfc2NoZWR1bGVyX3RocmVhZGAsIGByc2lfdHhfc2NoZWR1bGVyX3RocmVhZGAsIGByc2lfc2Rpb19yeF90aHJlYWRgLCBhbmQgYHJzaV91c2JfcnhfdGhyZWFkYC4gVGhlc2UgYXJlIHRocmVhZCBmdW5jdGlvbnMsIHNvIHRoZXkgc2hvdWxkIGJlIGZ1bmN0aW9uYWwgY2hhbmdlcy4gQnV0IHdhaXQsIHRoaXMgaXMgbW9yZSB0aGFuIGp1c3QgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXTigJlzIGFsc28gZml4aW5nIGEgcHJvdG90eXBlIG1pc21hdGNoLCBtZWFuaW5nIHRoaXMgY291bGQgaGF2ZSBiZWVuIGEgcG90ZW50aWFsIHNvdXJjZSBvZiBlcnJvcnMsIGVzcGVjaWFsbHkgQ29udHJvbC1GbG93IEludGVncml0eSAoQ0ZJKSB2aW9sYXRpb25zISBJZiB0aGVyZSdzIGEgdHlwZSBtaXNtYXRjaCwgdGhlIGtlcm5lbCBjb3VsZCBwYW5pYy4gQnkgZml4aW5nIHRoZSBzaWduYXR1cmUsIHdlIGNhbiBhdm9pZCBDRkkgcGFuaWNzLlxuXG5JcyB0aGlzIHBhdGNoIHdvcnRoIGZ1enppbmc/IEFic29sdXRlbHkuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSAqYW5kKiBpdCdzIGluIGEgVVNCIGRyaXZlci4gUGx1cywgdGhpcyBtaWdodCBhY3R1YWxseSBiZSBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIENGSSB2aW9sYXRpb24uIENhc3RpbmcgZnVuY3Rpb24gcG9pbnRlcnMgdG8gdGhlIHdyb25nIHR5cGUgaXMgYSBjbGFzc2ljIENGSSBwcm9ibGVtLiBJdOKAmXMgY3JpdGljYWwgdG8gdmVyaWZ5IHRoYXQgdGhlIHRocmVhZHMgcnVuIGNvcnJlY3RseSB3aXRob3V0IGFueSB1bmV4cGVjdGVkIGJlaGF2aW91ci4gVGhpcyBjb3VsZCBiZSBhIGdvb2QgZmluZC5cblxuSSBzaG91bGQgcHJvYmFibHkgc2VlIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnYCBmaWxlLiBJJ2xsIGp1c3QgZ3JlcCBmb3IgYHJzaWAgb3IgcmVhZCBpdCBkaXJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcyOCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjMwOjQwLjQxNjU0ODE3MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFdMQU5fVkVORE9SX1JTSVxcbiAgIDM6XFx0XFx0Ym9vbCBcXFwiUmVkcGluZSBTaWduYWxzIEluYyBkZXZpY2VzXFxcIlxcbiAgIDQ6XFx0XFx0ZGVmYXVsdCB5XFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXFxuICAgNzpcXHRcXG4gICA4OlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gICA5OlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbCB0aGVcXG4gIDEwOlxcdFxcdCAgcXVlc3Rpb25zIGFib3V0IHRoZXNlIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlIGFza2VkIGZvclxcbiAgMTE6XFx0XFx0ICB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXFxuICAxMjpcXHRcXG4gIDEzOlxcdGlmIFdMQU5fVkVORE9SX1JTSVxcbiAgMTQ6XFx0XFxuICAxNTpcXHRjb25maWcgUlNJXzkxWFxcbiAgMTY6XFx0XFx0dHJpc3RhdGUgXFxcIlJlZHBpbmUgU2lnbmFscyBJbmMgOTF4IFdMQU4gZHJpdmVyIHN1cHBvcnRcXFwiXFxuICAxNzpcXHRcXHRzZWxlY3QgQlRfSENJUlNJIGlmIFJTSV9DT0VYXFxuICAxODpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAxOTpcXHRcXHRoZWxwXFxuICAyMDpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJlcyBzdXBwb3J0IGZvciBSU0kgMXgxIGRldmljZXMuXFxuICAyMTpcXHRcXHQgIFNlbGVjdCBNIChyZWNvbW1lbmRlZCksIGlmIHlvdSBoYXZlIGEgUlNJIDF4MSB3aXJlbGVzcyBtb2R1bGUuXFxuICAyMjpcXHRcXG4gIDIzOlxcdGNvbmZpZyBSU0lfREVCVUdGU1xcbiAgMjQ6XFx0XFx0Ym9vbCBcXFwiUmVkcGluZSBTaWduYWxzIEluYyBkZWJ1ZyBzdXBwb3J0XFxcIlxcbiAgMjU6XFx0XFx0ZGVwZW5kcyBvbiBSU0lfOTFYXFxuICAyNjpcXHRcXHRkZWZhdWx0IHlcXG4gIDI3OlxcdFxcdGhlbHBcXG4gIDI4OlxcdFxcdCBTYXkgWSwgaWYgeW91IHdvdWxkIGxpa2UgdG8gZW5hYmxlIGRlYnVnIHN1cHBvcnQuIFRoaXMgb3B0aW9uXFxuICAyOTpcXHRcXHQgY3JlYXRlcyBkZWJ1Z2ZzIGVudHJpZXNcXG4gIDMwOlxcdFxcbiAgMzE6XFx0Y29uZmlnIFJTSV9TRElPXFxuICAzMjpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVkcGluZSBTaWduYWxzIFNESU8gYnVzIHN1cHBvcnRcXFwiXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIE1NQyBcXHUwMDI2XFx1MDAyNiBSU0lfOTFYXFxuICAzNDpcXHRcXHRkZWZhdWx0IG1cXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgU0RJTyBidXMgc3VwcG9ydCBpbiByc2kgZHJpdmVycy5cXG4gIDM3OlxcdFxcdCAgU2VsZWN0IE0gKHJlY29tbWVuZGVkKSwgaWYgeW91IGhhdmUgYSBSU0kgMXgxIHdpcmVsZXNzIG1vZHVsZS5cXG4gIDM4OlxcdFxcbiAgMzk6XFx0Y29uZmlnIFJTSV9VU0JcXG4gIDQwOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWRwaW5lIFNpZ25hbHMgVVNCIGJ1cyBzdXBwb3J0XFxcIlxcbiAgNDE6XFx0XFx0ZGVwZW5kcyBvbiBVU0IgXFx1MDAyNlxcdTAwMjYgUlNJXzkxWFxcbiAgNDI6XFx0XFx0ZGVmYXVsdCBtXFxuICA0MzpcXHRcXHRoZWxwXFxuICA0NDpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFVTQiBidXMgc3VwcG9ydCBpbiByc2kgZHJpdmVycy5cXG4gIDQ1OlxcdFxcdCAgU2VsZWN0IE0gKHJlY29tbWVuZGVkKSwgaWYgeW91IGhhdmUgYSBSU0kgMXgxIHdpcmVsZXNzIG1vZHVsZS5cXG4gIDQ2OlxcdFxcbiAgNDc6XFx0Y29uZmlnIFJTSV9DT0VYXFxuICA0ODpcXHRcXHRib29sIFxcXCJSZWRwaW5lIFNpZ25hbHMgV0xBTiBCVCBDb2V4aXN0ZW5jZSBzdXBwb3J0XFxcIlxcbiAgNDk6XFx0XFx0ZGVwZW5kcyBvbiBCVCBcXHUwMDI2XFx1MDAyNiBSU0lfOTFYXFxuICA1MDpcXHRcXHRkZXBlbmRzIG9uICEoQlQ9bSBcXHUwMDI2XFx1MDAyNiBSU0lfOTFYPXkpXFxuICA1MTpcXHRcXHRkZWZhdWx0IHlcXG4gIDUyOlxcdFxcdGhlbHBcXG4gIDUzOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgV0xBTiBCVCBjb2V4IHN1cHBvcnQgaW4gcnNpIGRyaXZlcnMuXFxuICA1NDpcXHRcXHQgIFNlbGVjdCBNIChyZWNvbW1lbmRlZCksIGlmIHlvdSBoYXZlIHdhbnQgdG8gdXNlIHRoaXMgZmVhdHVyZVxcbiAgNTU6XFx0XFx0ICBhbmQgeW91IGhhdmUgUlM5MTEzIG1vZHVsZS5cXG4gIDU2OlxcdFxcbiAgNTc6XFx0ZW5kaWYgIyBXTEFOX1ZFTkRPUl9SU0lcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzA6NDAuNDE2NjIyNzgyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI5ODU1MDk4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgV0xBTl9WRU5ET1JfUlNJYCwgYFJTSV85MVhgLCBgUlNJX1VTQmAsIGBSU0lfQ09FWGAsIGFuZCBgUlNJX1NESU9gLiBTaW5jZSB0aGlzIGlzIGEgVVNCIGRyaXZlciwgYFJTSV9VU0JgIGlzIG9idmlvdXNseSBjcml0aWNhbC4gQW5kIEkgc2VlIHRoYXQgYHJzaV85MXhfY29leC5jYCBpcyBiZWluZyBtb2RpZmllZCwgc28gYFJTSV9DT0VYYCBpcyBkZWZpbml0ZWx5IHJlbGV2YW50LlxuXG5UaGVyZWZvcmUsIG15IGluaXRpYWwgdGhvdWdodCBpcyB0byBlbmFibGUgYFdMQU5fVkVORE9SX1JTSWAsIGBSU0lfOTFYYCwgYFJTSV9VU0JgLCBhbmQgYFJTSV9DT0VYYC4gQnV0IHdhaXQsIEkgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLiBBaGEhIGBSU0lfQ09FWGAgZGVwZW5kcyBvbiBib3RoIGBCVGAgYW5kIGBSU0lfOTFYYC4gQW5kIGZ1cnRoZXIsIGBSU0lfOTFYYCByZWxpZXMgb24gYE1BQzgwMjExYCwgd2hpbGUgYFJTSV9VU0JgIGRlcGVuZHMgb24gYFVTQmAuXG5cbkFscmlnaHQsIHRoYXQgY2xhcmlmaWVzIGl0LiBUbyBtYWtlIHRoaXMgd29yayBjb3JyZWN0bHksIEkgbmVlZCB0byBlbmFibGUgdGhlIGZvbGxvd2luZzogYE1BQzgwMjExYCwgYFVTQmAsIGBCVGAsIGBXTEFOX1ZFTkRPUl9SU0lgLCBgUlNJXzkxWGAsIGBSU0lfVVNCYCwgYW5kIGBSU0lfQ09FWGAuIEl0J3MgaW1wb3J0YW50IHRvIGtlZXAgdGhlc2UgZGVwZW5kZW5jaWVzIHN0cmFpZ2h0IG9yIHRoZSBidWlsZCB3aWxsIGZhaWwuIE5vdywgSSB3YW50IHRvIHRha2UgYSBsb29rIGF0IGhvdyB0aGV5IGFyZSBtYW5hZ2luZyB0aHJlYWRzLCBzbyBJJ2xsIGNoZWNrIGByc2lfY3JlYXRlX2t0aHJlYWRgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oYCB0byBmdWxseSB1bmRlcnN0YW5kIGl0cyB1c2FnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY0MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjMwOjQ1LjcxNTE3NjU1M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTIxMjIxNjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnNpX2NyZWF0ZV9rdGhyZWFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jPTEzOT1pbnQgcnNpX2NvZXhfYXR0YWNoKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmMtMTU2LVxcdC8qIEluaXRpYWxpemUgY28tZXggdGhyZWFkICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jOjE1NzpcXHRpZiAocnNpX2NyZWF0ZV9rdGhyZWFkKGNvbW1vbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmMtMTU4LVxcdFxcdFxcdCAgICAgICBcXHUwMDI2Y29leF9jYi1cXHUwMDNlY29leF90eF90aHJlYWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWluLmM9MzAyPXN0cnVjdCByc2lfaHcgKnJzaV85MXhfaW5pdCh1MTYgb3Blcl9tb2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jLTMzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWluLmM6MzMyOlxcdGlmIChyc2lfY3JlYXRlX2t0aHJlYWQoY29tbW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uYy0zMzMtXFx0XFx0XFx0ICAgICAgIFxcdTAwMjZjb21tb24tXFx1MDAzZXR4X3RocmVhZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3NkaW8uYz0xMDAxPXN0YXRpYyBpbnQgcnNpX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKnBmdW5jdGlvbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3NkaW8uYy0xMDQwLVxcdHJzaV9pbml0X2V2ZW50KFxcdTAwMjZzZGV2LVxcdTAwM2VyeF90aHJlYWQuZXZlbnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3NkaW8uYzoxMDQxOlxcdHN0YXR1cyA9IHJzaV9jcmVhdGVfa3RocmVhZChhZGFwdGVyLVxcdTAwM2Vwcml2LCBcXHUwMDI2c2Rldi1cXHUwMDNlcnhfdGhyZWFkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3NkaW8uYy0xMDQyLVxcdFxcdFxcdFxcdCAgICByc2lfc2Rpb19yeF90aHJlYWQsIFxcXCJTRElPLVJYLVRocmVhZFxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiLmM9NTczPXN0YXRpYyBpbnQgcnNpX3VzYl9pbml0X3J4KHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF91c2IuYy01OTMtXFx0cnNpX2luaXRfZXZlbnQoXFx1MDAyNmRldi1cXHUwMDNlcnhfdGhyZWFkLmV2ZW50KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF91c2IuYzo1OTQ6XFx0aWYgKHJzaV9jcmVhdGVfa3RocmVhZChhZGFwdGVyLVxcdTAwM2Vwcml2LCBcXHUwMDI2ZGV2LVxcdTAwM2VyeF90aHJlYWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiLmMtNTk1LVxcdFxcdFxcdCAgICAgICByc2lfdXNiX3J4X3RocmVhZCwgXFxcIlJYLVRocmVhZFxcXCIpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oPTU0PXN0YXRpYyBpbmxpbmUgdm9pZCByc2lfcmVzZXRfZXZlbnQoc3RydWN0IHJzaV9ldmVudCAqZXZlbnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oLTU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfY29tbW9uLmg6NTk6c3RhdGljIGlubGluZSBpbnQgcnNpX2NyZWF0ZV9rdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9jb21tb24uaC02MC1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCByc2lfdGhyZWFkICp0aHJlYWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjMwOjQ1LjgyNzMwNDQyNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4MTEyMzk0NTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIFJTSSBXaXJlbGVzcyBEcml2ZXIgVGhyZWFkcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIG1vZGlmaWVkIGZ1bmN0aW9uczogYHJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWRgLCBgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWRgLCBgcnNpX3NkaW9fcnhfdGhyZWFkYCwgYW5kIGByc2lfdXNiX3J4X3RocmVhZGAuIFRoZXNlIGFyZSB0aHJlYWQgZnVuY3Rpb25zLCBhbmQgdGhhdCdzIHdoZXJlIG15IGZvY3VzIG5lZWRzIHRvIGJlLiBSaWdodCBhd2F5LCBgcnNpX3NkaW9fcnhfdGhyZWFkYCBnaXZlcyBtZSBwYXVzZSBiZWNhdXNlIFNESU8gY2FuIGJlIHRyaWNreSB0byBmdXp6IGVmZmVjdGl2ZWx5IHdpdGhvdXQgYSBwcm9wZXIgZW11bGF0b3IgaW4gUUVNVS4gQnV0IHRoZW4gSSBzZWUgYHJzaV91c2JfcnhfdGhyZWFkYCwgYW5kIHRoYXQncyBnb2xkIOKAkyBVU0IgaXMgbXVjaCBtb3JlIGZ1enotZnJpZW5kbHkgd2l0aCB0aGluZ3MgbGlrZSBVU0IgZ2FkZ2V0L2R1bW15X2hjZC92aGNpLiBJIGFsc28gd2FudCB0byBjb25zaWRlciBgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWRgIGFuZCBgcnNpX2NvZXhfc2NoZWR1bGVyX3RocmVhZGAsIHNpbmNlIHRoZXkncmUgdGhlcmUuXG5cblRoZSBmaXJzdCBzdGVwIGlzIGNoZWNraW5nIHdoZXRoZXIgdGhlc2UgZnVuY3Rpb25zIGFyZSBzdGF0aWMgb3Igbm90LiBMb29raW5nIGludG8gdGhlIGNvZGUsIGByc2lfdXNiX3J4X3RocmVhZGAgYW5kIGByc2lfc2Rpb19yeF90aHJlYWRgIGFyZSAqbm90KiBzdGF0aWMsIHNvIHRoZXkncmUgZGVmaW5pdGVseSBnb29kIGNhbmRpZGF0ZXMuIEV4Y2VsbGVudCEgTm93IEkgY2hlY2sgYHJzaV90eF9zY2hlZHVsZXJfdGhyZWFkYCBhbmQgYHJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWRgLiBUaGV5ICphcmUqIHN0YXRpYywgYnV0IHNpbmNlIHRoZXkncmUgcGFzc2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzIHRvIGByc2lfY3JlYXRlX2t0aHJlYWRgLCB0aGV5IGFyZSBsaWtlbHkgbm90IGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBUaGVzZSB3aWxsIGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gU3l6a2FsbGVyIG1pZ2h0IHByZWZlciBub24tc3RhdGljIHN5bWJvbHMsIGJ1dCBzaW5jZSB0aGV5IGFyZW4ndCBpbmxpbmVkLCBpdCBzaG91bGQgYmUgYWJsZSB0byByZXNvbHZlIHRoZW0uXG5cbkkgd2lsbCBpbmNsdWRlIGFsbCBvZiB0aGVtIGluaXRpYWxseSwganVzdCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlLCBiZWNhdXNlIHRoZXkgYWxsIHNvdW5kIGxpa2UgZ3JlYXQgdGFyZ2V0czogYHJzaV91c2JfcnhfdGhyZWFkYCwgYHJzaV9zZGlvX3J4X3RocmVhZGAsIGByc2lfdHhfc2NoZWR1bGVyX3RocmVhZGAsIGFuZCBgcnNpX2NvZXhfc2NoZWR1bGVyX3RocmVhZGAuIFRoZSBVU0IgUlggdGhyZWFkIGlzIHByb2JhYmx5IHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LlxuXG5JIHdhbnQgdG8gc2VlIGlmIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBjYWxsIHRoZXNlIG9yIGFyZSBjbG9zZWx5IHJlbGF0ZWQuIEkgY29uZmlybSB0aGF0IGByc2lfdXNiX2luaXRfcnhgIGNhbGxzIGByc2lfY3JlYXRlX2t0aHJlYWRgIHdpdGggYHJzaV91c2JfcnhfdGhyZWFkYCwgYHJzaV85MXhfaW5pdGAgY2FsbHMgYHJzaV9jcmVhdGVfa3RocmVhZGAgd2l0aCBgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWRgLCBhbmQgYHJzaV9jb2V4X2F0dGFjaGAgY2FsbHMgYHJzaV9jcmVhdGVfa3RocmVhZGAgd2l0aCBgcnNpX2NvZXhfc2NoZWR1bGVyX3RocmVhZGAuIFRoaXMgaXMgYSBzb2xpZCBzaWduIHRoYXQgYWxsIG9mIHRoZW0gYXJlIHZhbGlkIGZ1enppbmcgdGFyZ2V0cy5cblxuU28sIGhlcmUncyBteSBsaXN0IG9mIEZvY3VzU3ltYm9sczogYHJzaV91c2JfcnhfdGhyZWFkYCwgYHJzaV9zZGlvX3J4X3RocmVhZGAsIGByc2lfdHhfc2NoZWR1bGVyX3RocmVhZGAsIGByc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkYC5cblxuTmV4dCwgSSBuZWVkIHRvIGxvb2sgYXQgdGhlIGNvbmZpZyBvcHRpb25zLiBMZXQncyBzZWUuLi4gYE1BQzgwMjExYCwgYFVTQmAsIGBCVGAsIGBXTEFOX1ZFTkRPUl9SU0lgLCBgUlNJXzkxWGAsIGBSU0lfVVNCYCwgYFJTSV9DT0VYYCwgYFJTSV9TRElPYC4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYFJTSV9TRElPYCBkZXBlbmRzIG9uIGBNTUNgLCBzbyBJIG11c3QgaW5jbHVkZSB0aGF0IGFzIHdlbGwuXG5cbkhlcmUgYXJlIHRoZSByZXF1aXJlZCBjb25maWdzOlxuYE1BQzgwMjExYFxuYFVTQmBcbmBCVGBcbmBNTUNgXG5gV0xBTl9WRU5ET1JfUlNJYFxuYFJTSV85MVhgXG5gUlNJX1VTQmBcbmBSU0lfQ09FWGBcbmBSU0lfU0RJT2BcblxuT2theSwgYW5kIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBkZXBlbmRlbmNpZXMuIGBSU0lfQ09FWGAgcmVxdWlyZXMgYEJUYCwgYFJTSV85MVhgIG5lZWRzIGBNQUM4MDIxMWAsIGBSU0lfVVNCYCBuZWVkcyBgVVNCYCBhbmQgYFJTSV85MVhgLCBhbmQgYFJTSV9TRElPYCBuZWVkcyBgTU1DYCBhbmQgYFJTSV85MVhgLiBBbGwgbG9va3MgZ29vZCB0aGVyZS5cblxuSSBhbSBjb25maWRlbnQgdGhhdCB0aGlzIGlzIGEgdmFsaWQgYXBwcm9hY2gsIGFuZCB0aGVzZSB0aHJlYWRzIGFyZSB0aGUgYmVzdCBwbGFjZXMgdG8gc3RhcnQgZnV6emluZyB0byBleHBvc2UgYW55IHBvdGVudGlhbCBidWdzLCBhcyB0aGlzIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBpc3N1ZSB3aGVyZSB0aHJlYWQgc2lnbmF0dXJlcyB3ZXJlIGluY29ycmVjdCwgYW5kIHNob3VsZCBiZSBmdXp6LXRlc3RlZC5cblxuVGhlIG5hbWVzIEkgaWRlbnRpZmllZCBhcmUgY29ycmVjdCwgYW5kIEkgd2lsbCBub3cgc2V0IHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDQ0LCJPdXRwdXRUb2tlbnMiOjI2MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzE6MDMuOTM5NzAwODkxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM5NzQzMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIkJUXCIsXG4gICAgXCJNTUNcIixcbiAgICBcIldMQU5fVkVORE9SX1JTSVwiLFxuICAgIFwiUlNJXzkxWFwiLFxuICAgIFwiUlNJX1VTQlwiLFxuICAgIFwiUlNJX0NPRVhcIixcbiAgICBcIlJTSV9TRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnNpX3VzYl9yeF90aHJlYWRcIixcbiAgICBcInJzaV9zZGlvX3J4X3RocmVhZFwiLFxuICAgIFwicnNpX3R4X3NjaGVkdWxlcl90aHJlYWRcIixcbiAgICBcInJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlcyBvZiBzZXZlcmFsIGt0aHJlYWQgZnVuY3Rpb25zIChyc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkLCByc2lfdHhfc2NoZWR1bGVyX3RocmVhZCwgcnNpX3NkaW9fcnhfdGhyZWFkLCByc2lfdXNiX3J4X3RocmVhZCkgaW4gdGhlIFJlZHBpbmUgU2lnbmFscyBJbmMuIChSU0kpIHdpcmVsZXNzIGRyaXZlciB0byBtYXRjaCB0aGUgZXhwZWN0ZWQgYGludCAoKikodm9pZCAqKWAgdHlwZSBmb3Iga3RocmVhZCBjcmVhdGlvbi4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgQ29udHJvbC1GbG93IEludGVncml0eSAoQ0ZJKSBwYW5pY3Mgd2hlbiB0aGVzZSB0aHJlYWRzIGFyZSBzcGF3bmVkLiBTaW5jZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgVVNCL1NESU8gZHJpdmVyLCBpdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgdGhyZWFkcyBleGVjdXRlIGNvcnJlY3RseSB3aXRob3V0IHRyaWdnZXJpbmcgb3RoZXIgYnVncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJCVFwiLFxuICAgIFwiTU1DXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9SU0lcIixcbiAgICBcIlJTSV85MVhcIixcbiAgICBcIlJTSV9VU0JcIixcbiAgICBcIlJTSV9DT0VYXCIsXG4gICAgXCJSU0lfU0RJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJzaV91c2JfcnhfdGhyZWFkXCIsXG4gICAgXCJyc2lfc2Rpb19yeF90aHJlYWRcIixcbiAgICBcInJzaV90eF9zY2hlZHVsZXJfdGhyZWFkXCIsXG4gICAgXCJyc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXMgb2Ygc2V2ZXJhbCBrdGhyZWFkIGZ1bmN0aW9ucyAocnNpX2NvZXhfc2NoZWR1bGVyX3RocmVhZCwgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWQsIHJzaV9zZGlvX3J4X3RocmVhZCwgcnNpX3VzYl9yeF90aHJlYWQpIGluIHRoZSBSZWRwaW5lIFNpZ25hbHMgSW5jLiAoUlNJKSB3aXJlbGVzcyBkcml2ZXIgdG8gbWF0Y2ggdGhlIGV4cGVjdGVkIGBpbnQgKCopKHZvaWQgKilgIHR5cGUgZm9yIGt0aHJlYWQgY3JlYXRpb24uIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIENvbnRyb2wtRmxvdyBJbnRlZ3JpdHkgKENGSSkgcGFuaWNzIHdoZW4gdGhlc2UgdGhyZWFkcyBhcmUgc3Bhd25lZC4gU2luY2UgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIFVTQi9TRElPIGRyaXZlciwgaXQgaXMgd29ydGggZnV6emluZyB0byBlbnN1cmUgdGhlIHRocmVhZHMgZXhlY3V0ZSBjb3JyZWN0bHkgd2l0aG91dCB0cmlnZ2VyaW5nIG90aGVyIGJ1Z3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jddn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 09:48:29 +0000 UTC FinishedAt: 2026-08-04 10:31:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "USB", "BT", "MMC", "WLAN_VENDOR_RSI", "RSI_91X", "RSI_USB", "RSI_COEX", "RSI_SDIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "USB", "BT", "MMC", "WLAN_VENDOR_RSI", "RSI_91X", "RSI_USB", "RSI_COEX", "RSI_SDIO" ], "series_id": "0d38e605-c53b-420a-8d8c-bdd4e9df9db9" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rsi_usb_rx_thread", "rsi_sdio_rx_thread", "rsi_tx_scheduler_thread", "rsi_coex_scheduler_thread" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtCVCYjMzQ7LAogICAgJiMzNDtNTUMmIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfUlNJJiMzNDssCiAgICAmIzM0O1JTSV85MVgmIzM0OywKICAgICYjMzQ7UlNJX1VTQiYjMzQ7LAogICAgJiMzNDtSU0lfQ09FWCYjMzQ7LAogICAgJiMzNDtSU0lfU0RJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JzaV91c2JfcnhfdGhyZWFkJiMzNDssCiAgICAmIzM0O3JzaV9zZGlvX3J4X3RocmVhZCYjMzQ7LAogICAgJiMzNDtyc2lfdHhfc2NoZWR1bGVyX3RocmVhZCYjMzQ7LAogICAgJiMzNDtyc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHRoZSBmdW5jdGlvbiBzaWduYXR1cmVzIG9mIHNldmVyYWwga3RocmVhZCBmdW5jdGlvbnMgKHJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWQsIHJzaV90eF9zY2hlZHVsZXJfdGhyZWFkLCByc2lfc2Rpb19yeF90aHJlYWQsIHJzaV91c2JfcnhfdGhyZWFkKSBpbiB0aGUgUmVkcGluZSBTaWduYWxzIEluYy4gKFJTSSkgd2lyZWxlc3MgZHJpdmVyIHRvIG1hdGNoIHRoZSBleHBlY3RlZCBgaW50ICgqKSh2b2lkICopYCB0eXBlIGZvciBrdGhyZWFkIGNyZWF0aW9uLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBDb250cm9sLUZsb3cgSW50ZWdyaXR5IChDRkkpIHBhbmljcyB3aGVuIHRoZXNlIHRocmVhZHMgYXJlIHNwYXduZWQuIFNpbmNlIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBVU0IvU0RJTyBkcml2ZXIsIGl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSB0aHJlYWRzIGV4ZWN1dGUgY29ycmVjdGx5IHdpdGhvdXQgdHJpZ2dlcmluZyBvdGhlciBidWdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGIxOThhNDU3YTU3NGIyMTdiZmYyOWM3ODhmM2M0ZjZlN2MzMGMwMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTA6MzA6MjkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jXG5pbmRleCBlZTYwM2E1MTczZmIzLi4wMjNjNTM5ZmMzODQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmNcbkBAIC01MCw4ICYjNDM7NTAsOSBAQCBzdGF0aWMgdm9pZCByc2lfY29leF9zY2hlZF90eF9wa3RzKHN0cnVjdCByc2lfY29leF9jdHJsX2Jsb2NrICpjb2V4X2NiKVxuIFx0fSB3aGlsZSAoY29leF9xICE9IFJTSV9DT0VYX1FfSU5WQUxJRCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcbiYjNDM7c3RhdGljIGludCByc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkKHZvaWQgKmRhdGEpXG4ge1xuJiM0MztcdHN0cnVjdCByc2lfY29tbW9uICpjb21tb24gPSBkYXRhO1xuIFx0c3RydWN0IHJzaV9jb2V4X2N0cmxfYmxvY2sgKmNvZXhfY2IgPSBjb21tb24tXHUwMDNlY29leF9jYjtcbiBcdHUzMiB0aW1lb3V0ID0gRVZFTlRfV0FJVF9GT1JFVkVSO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uY1xuaW5kZXggNjYyZTQyZDFlNWU4ZC4uMmNlNTE0NzY2NjIwOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jXG5AQCAtMjQ2LDEyICYjNDM7MjQ2LDEzIEBAIEVYUE9SVF9TWU1CT0xfR1BMKHJzaV9yZWFkX3BrdCk7XG4gLyoqXG4gICogcnNpX3R4X3NjaGVkdWxlcl90aHJlYWQoKSAtIFRoaXMgZnVuY3Rpb24gaXMgYSBrZXJuZWwgdGhyZWFkIHRvIHNlbmQgdGhlXG4gICpcdFx0XHQgICAgICAgcGFja2V0cyB0byB0aGUgZGV2aWNlLlxuLSAqIEBjb21tb246IFBvaW50ZXIgdG8gdGhlIGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZS5cbiYjNDM7ICogQGRhdGE6IFBvaW50ZXIgdG8gdGhlIGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZS5cbiAgKlxuLSAqIFJldHVybjogTm9uZS5cbiYjNDM7ICogUmV0dXJuOiAwLlxuICAqL1xuLXN0YXRpYyB2b2lkIHJzaV90eF9zY2hlZHVsZXJfdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24pXG4mIzQzO3N0YXRpYyBpbnQgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWQodm9pZCAqZGF0YSlcbiB7XG4mIzQzO1x0c3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiA9IGRhdGE7XG4gXHRzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyID0gY29tbW9uLVx1MDAzZXByaXY7XG4gXHR1MzIgdGltZW91dCA9IEVWRU5UX1dBSVRfRk9SRVZFUjtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9zZGlvX29wcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfc2Rpb19vcHMuY1xuaW5kZXggNTk3YjIzOGUyMjk0OS4uMThhMjhhYTk3NDQ2MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3NkaW9fb3BzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3NkaW9fb3BzLmNcbkBAIC02Miw4ICYjNDM7NjIsOSBAQCBpbnQgcnNpX3NkaW9fbWFzdGVyX2FjY2Vzc19tc3dvcmQoc3RydWN0IHJzaV9odyAqYWRhcHRlciwgdTE2IG1zX3dvcmQpXG4gXG4gc3RhdGljIHZvaWQgcnNpX3J4X2hhbmRsZXIoc3RydWN0IHJzaV9odyAqYWRhcHRlcik7XG4gXG4tdm9pZCByc2lfc2Rpb19yeF90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcbiYjNDM7aW50IHJzaV9zZGlvX3J4X3RocmVhZCh2b2lkICpkYXRhKVxuIHtcbiYjNDM7XHRzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uID0gZGF0YTtcbiBcdHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIgPSBjb21tb24tXHUwMDNlcHJpdjtcbiBcdHN0cnVjdCByc2lfOTF4X3NkaW9kZXYgKnNkZXYgPSBhZGFwdGVyLVx1MDAzZXJzaV9kZXY7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiX29wcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiX29wcy5jXG5pbmRleCAyNWMyYjIzMjM5NGE2Li5lODk5NjMxYjlhZWQyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiX29wcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF91c2Jfb3BzLmNcbkBAIC0yMSwxMiAmIzQzOzIxLDEzIEBAXG4gLyoqXG4gICogcnNpX3VzYl9yeF90aHJlYWQoKSAtIFRoaXMgaXMgYSBrZXJuZWwgdGhyZWFkIHRvIHJlY2VpdmUgdGhlIHBhY2tldHMgZnJvbVxuICAqXHRcdFx0IHRoZSBVU0IgZGV2aWNlLlxuLSAqIEBjb21tb246IFBvaW50ZXIgdG8gdGhlIGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZS5cbiYjNDM7ICogQGRhdGE6IFBvaW50ZXIgdG8gdGhlIGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZS5cbiAgKlxuLSAqIFJldHVybjogTm9uZS5cbiYjNDM7ICogUmV0dXJuOiAwLlxuICAqL1xuLXZvaWQgcnNpX3VzYl9yeF90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcbiYjNDM7aW50IHJzaV91c2JfcnhfdGhyZWFkKHZvaWQgKmRhdGEpXG4ge1xuJiM0MztcdHN0cnVjdCByc2lfY29tbW9uICpjb21tb24gPSBkYXRhO1xuIFx0c3RydWN0IHJzaV9odyAqYWRhcHRlciA9IGNvbW1vbi1cdTAwM2Vwcml2O1xuIFx0c3RydWN0IHJzaV85MXhfdXNiZGV2ICpkZXYgPSBhZGFwdGVyLVx1MDAzZXJzaV9kZXY7XG4gXHRpbnQgc3RhdHVzO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfY29tbW9uLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oXG5pbmRleCAzY2RmOWRlZDg3NmQ5Li4yYTMzYTgxZjcxYTNlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9jb21tb24uaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9jb21tb24uaFxuQEAgLTU4LDcgJiM0Mzs1OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByc2lfcmVzZXRfZXZlbnQoc3RydWN0IHJzaV9ldmVudCAqZXZlbnQpXG4gXG4gc3RhdGljIGlubGluZSBpbnQgcnNpX2NyZWF0ZV9rdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sXG4gXHRcdFx0XHQgICAgIHN0cnVjdCByc2lfdGhyZWFkICp0aHJlYWQsXG4tXHRcdFx0XHQgICAgIHZvaWQgKmZ1bmNfcHRyLFxuJiM0MztcdFx0XHRcdCAgICAgaW50ICgqZnVuY19wdHIpKHZvaWQgKmRhdGEpLFxuIFx0XHRcdFx0ICAgICB1OCAqbmFtZSlcbiB7XG4gXHRpbml0X2NvbXBsZXRpb24oXHUwMDI2dGhyZWFkLVx1MDAzZWNvbXBsZXRpb24pO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfc2Rpby5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9zZGlvLmhcbmluZGV4IDdjOTFiMTI2YjM1MGYuLmViMmI3ZjM2YTdlNGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX3NkaW8uaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9zZGlvLmhcbkBAIC0xMzQsNSAmIzQzOzEzNCw1IEBAIGludCByc2lfc2Rpb19tYXN0ZXJfYWNjZXNzX21zd29yZChzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyLCB1MTYgbXNfd29yZCk7XG4gdm9pZCByc2lfc2Rpb19hY2tfaW50cihzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyLCB1OCBpbnRfYml0KTtcbiBpbnQgcnNpX3NkaW9fZGV0ZXJtaW5lX2V2ZW50X3RpbWVvdXQoc3RydWN0IHJzaV9odyAqYWRhcHRlcik7XG4gaW50IHJzaV9zZGlvX2NoZWNrX2J1ZmZlcl9zdGF0dXMoc3RydWN0IHJzaV9odyAqYWRhcHRlciwgdTggcV9udW0pO1xuLXZvaWQgcnNpX3NkaW9fcnhfdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24pO1xuJiM0MztpbnQgcnNpX3NkaW9fcnhfdGhyZWFkKHZvaWQgKmRhdGEpO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfdXNiLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX3VzYi5oXG5pbmRleCA5NjE4NTE3NDhiYzRjLi43ODA2N2VhZmZlOGIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV91c2IuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV91c2IuaFxuQEAgLTgxLDUgJiM0Mzs4MSw1IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJzaV91c2JfZXZlbnRfdGltZW91dChzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyKVxuIFx0cmV0dXJuIEVWRU5UX1dBSVRfRk9SRVZFUjtcbiB9XG4gXG4tdm9pZCByc2lfdXNiX3J4X3RocmVhZChzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uKTtcbiYjNDM7aW50IHJzaV91c2JfcnhfdGhyZWFkKHZvaWQgKmRhdGEpO1xuICNlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjMwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7QlQmIzM0OywKICAgICYjMzQ7TU1DJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX1JTSSYjMzQ7LAogICAgJiMzNDtSU0lfOTFYJiMzNDssCiAgICAmIzM0O1JTSV9VU0ImIzM0OywKICAgICYjMzQ7UlNJX0NPRVgmIzM0OywKICAgICYjMzQ7UlNJX1NESU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyc2lfdXNiX3J4X3RocmVhZCYjMzQ7LAogICAgJiMzNDtyc2lfc2Rpb19yeF90aHJlYWQmIzM0OywKICAgICYjMzQ7cnNpX3R4X3NjaGVkdWxlcl90aHJlYWQmIzM0OywKICAgICYjMzQ7cnNpX2NvZXhfc2NoZWR1bGVyX3RocmVhZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlcyBvZiBzZXZlcmFsIGt0aHJlYWQgZnVuY3Rpb25zIChyc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkLCByc2lfdHhfc2NoZWR1bGVyX3RocmVhZCwgcnNpX3NkaW9fcnhfdGhyZWFkLCByc2lfdXNiX3J4X3RocmVhZCkgaW4gdGhlIFJlZHBpbmUgU2lnbmFscyBJbmMuIChSU0kpIHdpcmVsZXNzIGRyaXZlciB0byBtYXRjaCB0aGUgZXhwZWN0ZWQgYGludCAoKikodm9pZCAqKWAgdHlwZSBmb3Iga3RocmVhZCBjcmVhdGlvbi4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgQ29udHJvbC1GbG93IEludGVncml0eSAoQ0ZJKSBwYW5pY3Mgd2hlbiB0aGVzZSB0aHJlYWRzIGFyZSBzcGF3bmVkLiBTaW5jZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgVVNCL1NESU8gZHJpdmVyLCBpdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgdGhyZWFkcyBleGVjdXRlIGNvcnJlY3RseSB3aXRob3V0IHRyaWdnZXJpbmcgb3RoZXIgYnVncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBiMTk4YTQ1N2E1NzRiMjE3YmZmMjljNzg4ZjNjNGY2ZTdjMzBjMDAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDEwOjMwOjI5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jCmluZGV4IGVlNjAzYTUxNzNmYjMuLjAyM2M1MzlmYzM4NDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2NvZXguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmMKQEAgLTUwLDggJiM0Mzs1MCw5IEBAIHN0YXRpYyB2b2lkIHJzaV9jb2V4X3NjaGVkX3R4X3BrdHMoc3RydWN0IHJzaV9jb2V4X2N0cmxfYmxvY2sgKmNvZXhfY2IpCiAJfSB3aGlsZSAoY29leF9xICE9IFJTSV9DT0VYX1FfSU5WQUxJRCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbikKJiM0MztzdGF0aWMgaW50IHJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWQodm9pZCAqZGF0YSkKIHsKJiM0MzsJc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiA9IGRhdGE7CiAJc3RydWN0IHJzaV9jb2V4X2N0cmxfYmxvY2sgKmNvZXhfY2IgPSBjb21tb24tJmd0O2NvZXhfY2I7CiAJdTMyIHRpbWVvdXQgPSBFVkVOVF9XQUlUX0ZPUkVWRVI7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uYwppbmRleCA2NjJlNDJkMWU1ZThkLi4yY2U1MTQ3NjY2MjA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jCkBAIC0yNDYsMTIgJiM0MzsyNDYsMTMgQEAgRVhQT1JUX1NZTUJPTF9HUEwocnNpX3JlYWRfcGt0KTsKIC8qKgogICogcnNpX3R4X3NjaGVkdWxlcl90aHJlYWQoKSAtIFRoaXMgZnVuY3Rpb24gaXMgYSBrZXJuZWwgdGhyZWFkIHRvIHNlbmQgdGhlCiAgKgkJCSAgICAgICBwYWNrZXRzIHRvIHRoZSBkZXZpY2UuCi0gKiBAY29tbW9uOiBQb2ludGVyIHRvIHRoZSBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmUuCiYjNDM7ICogQGRhdGE6IFBvaW50ZXIgdG8gdGhlIGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZS4KICAqCi0gKiBSZXR1cm46IE5vbmUuCiYjNDM7ICogUmV0dXJuOiAwLgogICovCi1zdGF0aWMgdm9pZCByc2lfdHhfc2NoZWR1bGVyX3RocmVhZChzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uKQomIzQzO3N0YXRpYyBpbnQgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWQodm9pZCAqZGF0YSkKIHsKJiM0MzsJc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiA9IGRhdGE7CiAJc3RydWN0IHJzaV9odyAqYWRhcHRlciA9IGNvbW1vbi0mZ3Q7cHJpdjsKIAl1MzIgdGltZW91dCA9IEVWRU5UX1dBSVRfRk9SRVZFUjsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfc2Rpb19vcHMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3NkaW9fb3BzLmMKaW5kZXggNTk3YjIzOGUyMjk0OS4uMThhMjhhYTk3NDQ2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfc2Rpb19vcHMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9zZGlvX29wcy5jCkBAIC02Miw4ICYjNDM7NjIsOSBAQCBpbnQgcnNpX3NkaW9fbWFzdGVyX2FjY2Vzc19tc3dvcmQoc3RydWN0IHJzaV9odyAqYWRhcHRlciwgdTE2IG1zX3dvcmQpCiAKIHN0YXRpYyB2b2lkIHJzaV9yeF9oYW5kbGVyKHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIpOwogCi12b2lkIHJzaV9zZGlvX3J4X3RocmVhZChzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uKQomIzQzO2ludCByc2lfc2Rpb19yeF90aHJlYWQodm9pZCAqZGF0YSkKIHsKJiM0MzsJc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiA9IGRhdGE7CiAJc3RydWN0IHJzaV9odyAqYWRhcHRlciA9IGNvbW1vbi0mZ3Q7cHJpdjsKIAlzdHJ1Y3QgcnNpXzkxeF9zZGlvZGV2ICpzZGV2ID0gYWRhcHRlci0mZ3Q7cnNpX2RldjsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiX29wcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiX29wcy5jCmluZGV4IDI1YzJiMjMyMzk0YTYuLmU4OTk2MzFiOWFlZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3VzYl9vcHMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF91c2Jfb3BzLmMKQEAgLTIxLDEyICYjNDM7MjEsMTMgQEAKIC8qKgogICogcnNpX3VzYl9yeF90aHJlYWQoKSAtIFRoaXMgaXMgYSBrZXJuZWwgdGhyZWFkIHRvIHJlY2VpdmUgdGhlIHBhY2tldHMgZnJvbQogICoJCQkgdGhlIFVTQiBkZXZpY2UuCi0gKiBAY29tbW9uOiBQb2ludGVyIHRvIHRoZSBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmUuCiYjNDM7ICogQGRhdGE6IFBvaW50ZXIgdG8gdGhlIGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZS4KICAqCi0gKiBSZXR1cm46IE5vbmUuCiYjNDM7ICogUmV0dXJuOiAwLgogICovCi12b2lkIHJzaV91c2JfcnhfdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24pCiYjNDM7aW50IHJzaV91c2JfcnhfdGhyZWFkKHZvaWQgKmRhdGEpCiB7CiYjNDM7CXN0cnVjdCByc2lfY29tbW9uICpjb21tb24gPSBkYXRhOwogCXN0cnVjdCByc2lfaHcgKmFkYXB0ZXIgPSBjb21tb24tJmd0O3ByaXY7CiAJc3RydWN0IHJzaV85MXhfdXNiZGV2ICpkZXYgPSBhZGFwdGVyLSZndDtyc2lfZGV2OwogCWludCBzdGF0dXM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9jb21tb24uaAppbmRleCAzY2RmOWRlZDg3NmQ5Li4yYTMzYTgxZjcxYTNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfY29tbW9uLmgKQEAgLTU4LDcgJiM0Mzs1OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByc2lfcmVzZXRfZXZlbnQoc3RydWN0IHJzaV9ldmVudCAqZXZlbnQpCiAKIHN0YXRpYyBpbmxpbmUgaW50IHJzaV9jcmVhdGVfa3RocmVhZChzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLAogCQkJCSAgICAgc3RydWN0IHJzaV90aHJlYWQgKnRocmVhZCwKLQkJCQkgICAgIHZvaWQgKmZ1bmNfcHRyLAomIzQzOwkJCQkgICAgIGludCAoKmZ1bmNfcHRyKSh2b2lkICpkYXRhKSwKIAkJCQkgICAgIHU4ICpuYW1lKQogewogCWluaXRfY29tcGxldGlvbigmYW1wO3RocmVhZC0mZ3Q7Y29tcGxldGlvbik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX3NkaW8uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfc2Rpby5oCmluZGV4IDdjOTFiMTI2YjM1MGYuLmViMmI3ZjM2YTdlNGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfc2Rpby5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfc2Rpby5oCkBAIC0xMzQsNSAmIzQzOzEzNCw1IEBAIGludCByc2lfc2Rpb19tYXN0ZXJfYWNjZXNzX21zd29yZChzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyLCB1MTYgbXNfd29yZCk7CiB2b2lkIHJzaV9zZGlvX2Fja19pbnRyKHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIsIHU4IGludF9iaXQpOwogaW50IHJzaV9zZGlvX2RldGVybWluZV9ldmVudF90aW1lb3V0KHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIpOwogaW50IHJzaV9zZGlvX2NoZWNrX2J1ZmZlcl9zdGF0dXMoc3RydWN0IHJzaV9odyAqYWRhcHRlciwgdTggcV9udW0pOwotdm9pZCByc2lfc2Rpb19yeF90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbik7CiYjNDM7aW50IHJzaV9zZGlvX3J4X3RocmVhZCh2b2lkICpkYXRhKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV91c2IuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfdXNiLmgKaW5kZXggOTYxODUxNzQ4YmM0Yy4uNzgwNjdlYWZmZThiMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV91c2IuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX3VzYi5oCkBAIC04MSw1ICYjNDM7ODEsNSBAQCBzdGF0aWMgaW5saW5lIGludCByc2lfdXNiX2V2ZW50X3RpbWVvdXQoc3RydWN0IHJzaV9odyAqYWRhcHRlcikKIAlyZXR1cm4gRVZFTlRfV0FJVF9GT1JFVkVSOwogfQogCi12b2lkIHJzaV91c2JfcnhfdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24pOwomIzQzO2ludCByc2lfdXNiX3J4X3RocmVhZCh2b2lkICpkYXRhKTsKICNlbmRpZgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMDozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzI4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNTI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgdGhlIGByc2lgIHdpcmVsZXNzIGRyaXZlciAoYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9gKSBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBtYWtpbmcgc29tZSBzaWduYXR1cmUgY2hhbmdlcyB0byB0aGUgdGhyZWFkIGZ1bmN0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyB1cGRhdGluZyB0aGUgc2lnbmF0dXJlIGZyb20gYHZvaWQgZnVuYyhzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uKWAgdG8gYGludCBmdW5jKHZvaWQgKmRhdGEpYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYmVpbmcgZG9uZSB0byBhbGlnbiB3aXRoIHRoZSBzdGFuZGFyZCB0aHJlYWRpbmcgQVBJcyBpbiB0aGUga2VybmVsLCBsaWtlIGBrdGhyZWFkX3J1bmAsIHdoaWNoIGV4cGVjdCB0aGUgZnVuY3Rpb24gcG9pbnRlciB0byBoYXZlIHRoZSBgaW50ICgqKSh2b2lkICopYCBzaWduYXR1cmUuIFRoYXQgbWFrZXMgc2Vuc2UgZnJvbSBhIGNvZGluZyBzdGFuZGFyZCBwZXJzcGVjdGl2ZS4KCkxldCYjMzk7cyBzZWUgaWYgdGhpcyBkcml2ZXIgaXMgZXZlbiByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBmb3IgZnV6emluZy4gVGhpcyBpcyBhIFJlZHBpbmUgU2lnbmFscyBJbmMuIDkxeCBXTEFOIGFuZCBCbHVldG9vdGggY29tYm8gZGV2aWNlIGRyaXZlci4gSXQgc3VwcG9ydHMgYm90aCBTRElPIGFuZCBVU0IgaW50ZXJmYWNlcy4gVGhlIFVTQiBzaWRlIG9mIHRoaXMgaXMgbG9va2luZyBwcm9taXNpbmcgYmVjYXVzZSB3ZSBjYW4gZW11bGF0ZSBVU0IgZGV2aWNlcyB1c2luZyBhIFVTQiBnYWRnZXQsIGEgYGR1bW15X2hjZGAsIG9yIGV2ZW4gdGhlIHN5emthbGxlciBVU0IgZnV6emVyICh1c2luZyB2aGNpKS4gU28gVVNCIGRyaXZlcnMgc2hvdWxkIGJlIGZ1enphYmxlLiBTRElPLi4uIHRoYXQmIzM5O3MgbW9yZSBvZiBhIGdhbWJsZSwgYnV0IFVTQiBpcyBkZWZpbml0ZWx5IGEgZ29vZCB0YXJnZXQuCgpOb3csIGxldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGFjdHVhbCBjb2RlLiBUaGUgcGF0Y2ggdG91Y2hlcyBgcnNpX2NyZWF0ZV9rdGhyZWFkYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9jb21tb24uaGAgYW5kLCBhcyBzdXNwZWN0ZWQsIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgaGFzIGJlZW4gbW9kaWZpZWQgdG8gYGludCAoKmZ1bmNfcHRyKSh2b2lkICpkYXRhKWAuIEJpbmdvLgoKVGhlIGtleSB0aHJlYWQgZnVuY3Rpb25zIHRoYXQgYXJlIGJlaW5nIGNoYW5nZWQgYXJlIGByc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkYCwgYHJzaV90eF9zY2hlZHVsZXJfdGhyZWFkYCwgYHJzaV9zZGlvX3J4X3RocmVhZGAsIGFuZCBgcnNpX3VzYl9yeF90aHJlYWRgLiBUaGVzZSBhcmUgdGhyZWFkIGZ1bmN0aW9ucywgc28gdGhleSBzaG91bGQgYmUgZnVuY3Rpb25hbCBjaGFuZ2VzLiBCdXQgd2FpdCwgdGhpcyBpcyBtb3JlIHRoYW4ganVzdCBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBJdOKAmXMgYWxzbyBmaXhpbmcgYSBwcm90b3R5cGUgbWlzbWF0Y2gsIG1lYW5pbmcgdGhpcyBjb3VsZCBoYXZlIGJlZW4gYSBwb3RlbnRpYWwgc291cmNlIG9mIGVycm9ycywgZXNwZWNpYWxseSBDb250cm9sLUZsb3cgSW50ZWdyaXR5IChDRkkpIHZpb2xhdGlvbnMhIElmIHRoZXJlJiMzOTtzIGEgdHlwZSBtaXNtYXRjaCwgdGhlIGtlcm5lbCBjb3VsZCBwYW5pYy4gQnkgZml4aW5nIHRoZSBzaWduYXR1cmUsIHdlIGNhbiBhdm9pZCBDRkkgcGFuaWNzLgoKSXMgdGhpcyBwYXRjaCB3b3J0aCBmdXp6aW5nPyBBYnNvbHV0ZWx5LiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlICphbmQqIGl0JiMzOTtzIGluIGEgVVNCIGRyaXZlci4gUGx1cywgdGhpcyBtaWdodCBhY3R1YWxseSBiZSBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIENGSSB2aW9sYXRpb24uIENhc3RpbmcgZnVuY3Rpb24gcG9pbnRlcnMgdG8gdGhlIHdyb25nIHR5cGUgaXMgYSBjbGFzc2ljIENGSSBwcm9ibGVtLiBJdOKAmXMgY3JpdGljYWwgdG8gdmVyaWZ5IHRoYXQgdGhlIHRocmVhZHMgcnVuIGNvcnJlY3RseSB3aXRob3V0IGFueSB1bmV4cGVjdGVkIGJlaGF2aW91ci4gVGhpcyBjb3VsZCBiZSBhIGdvb2QgZmluZC4KCkkgc2hvdWxkIHByb2JhYmx5IHNlZSBob3cgdGhpcyBkcml2ZXIgaXMgY29uZmlndXJlZC4gVGltZSB0byBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bGwganVzdCBncmVwIGZvciBgcnNpYCBvciByZWFkIGl0IGRpcmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFdMQU5fVkVORE9SX1JTSVxuICAgMzpcdFx0Ym9vbCBcJiMzNDtSZWRwaW5lIFNpZ25hbHMgSW5jIGRldmljZXNcJiMzNDtcbiAgIDQ6XHRcdGRlZmF1bHQgeVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBJZiB5b3UgaGF2ZSBhIHdpcmVsZXNzIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLlxuICAgNzpcdFxuICAgODpcdFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGFmZmVjdCB0aGVcbiAgIDk6XHRcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbCB0aGVcbiAgMTA6XHRcdCAgcXVlc3Rpb25zIGFib3V0IHRoZXNlIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlIGFza2VkIGZvclxuICAxMTpcdFx0ICB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXG4gIDEyOlx0XG4gIDEzOlx0aWYgV0xBTl9WRU5ET1JfUlNJXG4gIDE0Olx0XG4gIDE1Olx0Y29uZmlnIFJTSV85MVhcbiAgMTY6XHRcdHRyaXN0YXRlIFwmIzM0O1JlZHBpbmUgU2lnbmFscyBJbmMgOTF4IFdMQU4gZHJpdmVyIHN1cHBvcnRcJiMzNDtcbiAgMTc6XHRcdHNlbGVjdCBCVF9IQ0lSU0kgaWYgUlNJX0NPRVhcbiAgMTg6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMTk6XHRcdGhlbHBcbiAgMjA6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmVzIHN1cHBvcnQgZm9yIFJTSSAxeDEgZGV2aWNlcy5cbiAgMjE6XHRcdCAgU2VsZWN0IE0gKHJlY29tbWVuZGVkKSwgaWYgeW91IGhhdmUgYSBSU0kgMXgxIHdpcmVsZXNzIG1vZHVsZS5cbiAgMjI6XHRcbiAgMjM6XHRjb25maWcgUlNJX0RFQlVHRlNcbiAgMjQ6XHRcdGJvb2wgXCYjMzQ7UmVkcGluZSBTaWduYWxzIEluYyBkZWJ1ZyBzdXBwb3J0XCYjMzQ7XG4gIDI1Olx0XHRkZXBlbmRzIG9uIFJTSV85MVhcbiAgMjY6XHRcdGRlZmF1bHQgeVxuICAyNzpcdFx0aGVscFxuICAyODpcdFx0IFNheSBZLCBpZiB5b3Ugd291bGQgbGlrZSB0byBlbmFibGUgZGVidWcgc3VwcG9ydC4gVGhpcyBvcHRpb25cbiAgMjk6XHRcdCBjcmVhdGVzIGRlYnVnZnMgZW50cmllc1xuICAzMDpcdFxuICAzMTpcdGNvbmZpZyBSU0lfU0RJT1xuICAzMjpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVkcGluZSBTaWduYWxzIFNESU8gYnVzIHN1cHBvcnRcJiMzNDtcbiAgMzM6XHRcdGRlcGVuZHMgb24gTU1DIFx1MDAyNlx1MDAyNiBSU0lfOTFYXG4gIDM0Olx0XHRkZWZhdWx0IG1cbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgU0RJTyBidXMgc3VwcG9ydCBpbiByc2kgZHJpdmVycy5cbiAgMzc6XHRcdCAgU2VsZWN0IE0gKHJlY29tbWVuZGVkKSwgaWYgeW91IGhhdmUgYSBSU0kgMXgxIHdpcmVsZXNzIG1vZHVsZS5cbiAgMzg6XHRcbiAgMzk6XHRjb25maWcgUlNJX1VTQlxuICA0MDpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVkcGluZSBTaWduYWxzIFVTQiBidXMgc3VwcG9ydFwmIzM0O1xuICA0MTpcdFx0ZGVwZW5kcyBvbiBVU0IgXHUwMDI2XHUwMDI2IFJTSV85MVhcbiAgNDI6XHRcdGRlZmF1bHQgbVxuICA0MzpcdFx0aGVscFxuICA0NDpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBVU0IgYnVzIHN1cHBvcnQgaW4gcnNpIGRyaXZlcnMuXG4gIDQ1Olx0XHQgIFNlbGVjdCBNIChyZWNvbW1lbmRlZCksIGlmIHlvdSBoYXZlIGEgUlNJIDF4MSB3aXJlbGVzcyBtb2R1bGUuXG4gIDQ2Olx0XG4gIDQ3Olx0Y29uZmlnIFJTSV9DT0VYXG4gIDQ4Olx0XHRib29sIFwmIzM0O1JlZHBpbmUgU2lnbmFscyBXTEFOIEJUIENvZXhpc3RlbmNlIHN1cHBvcnRcJiMzNDtcbiAgNDk6XHRcdGRlcGVuZHMgb24gQlQgXHUwMDI2XHUwMDI2IFJTSV85MVhcbiAgNTA6XHRcdGRlcGVuZHMgb24gIShCVD1tIFx1MDAyNlx1MDAyNiBSU0lfOTFYPXkpXG4gIDUxOlx0XHRkZWZhdWx0IHlcbiAgNTI6XHRcdGhlbHBcbiAgNTM6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgV0xBTiBCVCBjb2V4IHN1cHBvcnQgaW4gcnNpIGRyaXZlcnMuXG4gIDU0Olx0XHQgIFNlbGVjdCBNIChyZWNvbW1lbmRlZCksIGlmIHlvdSBoYXZlIHdhbnQgdG8gdXNlIHRoaXMgZmVhdHVyZVxuICA1NTpcdFx0ICBhbmQgeW91IGhhdmUgUlM5MTEzIG1vZHVsZS5cbiAgNTY6XHRcbiAgNTc6XHRlbmRpZiAjIFdMQU5fVkVORE9SX1JTSVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NDEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgV0xBTl9WRU5ET1JfUlNJYCwgYFJTSV85MVhgLCBgUlNJX1VTQmAsIGBSU0lfQ09FWGAsIGFuZCBgUlNJX1NESU9gLiBTaW5jZSB0aGlzIGlzIGEgVVNCIGRyaXZlciwgYFJTSV9VU0JgIGlzIG9idmlvdXNseSBjcml0aWNhbC4gQW5kIEkgc2VlIHRoYXQgYHJzaV85MXhfY29leC5jYCBpcyBiZWluZyBtb2RpZmllZCwgc28gYFJTSV9DT0VYYCBpcyBkZWZpbml0ZWx5IHJlbGV2YW50LgoKVGhlcmVmb3JlLCBteSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZW5hYmxlIGBXTEFOX1ZFTkRPUl9SU0lgLCBgUlNJXzkxWGAsIGBSU0lfVVNCYCwgYW5kIGBSU0lfQ09FWGAuIEJ1dCB3YWl0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcy4gQWhhISBgUlNJX0NPRVhgIGRlcGVuZHMgb24gYm90aCBgQlRgIGFuZCBgUlNJXzkxWGAuIEFuZCBmdXJ0aGVyLCBgUlNJXzkxWGAgcmVsaWVzIG9uIGBNQUM4MDIxMWAsIHdoaWxlIGBSU0lfVVNCYCBkZXBlbmRzIG9uIGBVU0JgLgoKQWxyaWdodCwgdGhhdCBjbGFyaWZpZXMgaXQuIFRvIG1ha2UgdGhpcyB3b3JrIGNvcnJlY3RseSwgSSBuZWVkIHRvIGVuYWJsZSB0aGUgZm9sbG93aW5nOiBgTUFDODAyMTFgLCBgVVNCYCwgYEJUYCwgYFdMQU5fVkVORE9SX1JTSWAsIGBSU0lfOTFYYCwgYFJTSV9VU0JgLCBhbmQgYFJTSV9DT0VYYC4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIGtlZXAgdGhlc2UgZGVwZW5kZW5jaWVzIHN0cmFpZ2h0IG9yIHRoZSBidWlsZCB3aWxsIGZhaWwuIE5vdywgSSB3YW50IHRvIHRha2UgYSBsb29rIGF0IGhvdyB0aGV5IGFyZSBtYW5hZ2luZyB0aHJlYWRzLCBzbyBJJiMzOTtsbCBjaGVjayBgcnNpX2NyZWF0ZV9rdGhyZWFkYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9jb21tb24uaGAgdG8gZnVsbHkgdW5kZXJzdGFuZCBpdHMgdXNhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnNpX2NyZWF0ZV9rdGhyZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmM9MTM5PWludCByc2lfY29leF9hdHRhY2goc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmMtMTU2LVx0LyogSW5pdGlhbGl6ZSBjby1leCB0aHJlYWQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2NvZXguYzoxNTc6XHRpZiAocnNpX2NyZWF0ZV9rdGhyZWFkKGNvbW1vbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2NvZXguYy0xNTgtXHRcdFx0ICAgICAgIFx1MDAyNmNvZXhfY2ItXHUwMDNlY29leF90eF90aHJlYWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jPTMwMj1zdHJ1Y3QgcnNpX2h3ICpyc2lfOTF4X2luaXQodTE2IG9wZXJfbW9kZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWluLmMtMzMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jOjMzMjpcdGlmIChyc2lfY3JlYXRlX2t0aHJlYWQoY29tbW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jLTMzMy1cdFx0XHQgICAgICAgXHUwMDI2Y29tbW9uLVx1MDAzZXR4X3RocmVhZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9zZGlvLmM9MTAwMT1zdGF0aWMgaW50IHJzaV9wcm9iZShzdHJ1Y3Qgc2Rpb19mdW5jICpwZnVuY3Rpb24sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfc2Rpby5jLTEwNDAtXHRyc2lfaW5pdF9ldmVudChcdTAwMjZzZGV2LVx1MDAzZXJ4X3RocmVhZC5ldmVudCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9zZGlvLmM6MTA0MTpcdHN0YXR1cyA9IHJzaV9jcmVhdGVfa3RocmVhZChhZGFwdGVyLVx1MDAzZXByaXYsIFx1MDAyNnNkZXYtXHUwMDNlcnhfdGhyZWFkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfc2Rpby5jLTEwNDItXHRcdFx0XHQgICAgcnNpX3NkaW9fcnhfdGhyZWFkLCBcJiMzNDtTRElPLVJYLVRocmVhZFwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiLmM9NTczPXN0YXRpYyBpbnQgcnNpX3VzYl9pbml0X3J4KHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiLmMtNTkzLVx0cnNpX2luaXRfZXZlbnQoXHUwMDI2ZGV2LVx1MDAzZXJ4X3RocmVhZC5ldmVudCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF91c2IuYzo1OTQ6XHRpZiAocnNpX2NyZWF0ZV9rdGhyZWFkKGFkYXB0ZXItXHUwMDNlcHJpdiwgXHUwMDI2ZGV2LVx1MDAzZXJ4X3RocmVhZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3VzYi5jLTU5NS1cdFx0XHQgICAgICAgcnNpX3VzYl9yeF90aHJlYWQsIFwmIzM0O1JYLVRocmVhZFwmIzM0OykpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oPTU0PXN0YXRpYyBpbmxpbmUgdm9pZCByc2lfcmVzZXRfZXZlbnQoc3RydWN0IHJzaV9ldmVudCAqZXZlbnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9jb21tb24uaC01OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfY29tbW9uLmg6NTk6c3RhdGljIGlubGluZSBpbnQgcnNpX2NyZWF0ZV9rdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oLTYwLVx0XHRcdFx0ICAgICBzdHJ1Y3QgcnNpX3RocmVhZCAqdGhyZWFkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDEwOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNDQKCQkJCQkJCW91dHB1dDogMjYzCgkJCQkJCQl0aG91Z2h0czogMTQ1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBSU0kgV2lyZWxlc3MgRHJpdmVyIFRocmVhZHMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIG1vZGlmaWVkIGZ1bmN0aW9uczogYHJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWRgLCBgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWRgLCBgcnNpX3NkaW9fcnhfdGhyZWFkYCwgYW5kIGByc2lfdXNiX3J4X3RocmVhZGAuIFRoZXNlIGFyZSB0aHJlYWQgZnVuY3Rpb25zLCBhbmQgdGhhdCYjMzk7cyB3aGVyZSBteSBmb2N1cyBuZWVkcyB0byBiZS4gUmlnaHQgYXdheSwgYHJzaV9zZGlvX3J4X3RocmVhZGAgZ2l2ZXMgbWUgcGF1c2UgYmVjYXVzZSBTRElPIGNhbiBiZSB0cmlja3kgdG8gZnV6eiBlZmZlY3RpdmVseSB3aXRob3V0IGEgcHJvcGVyIGVtdWxhdG9yIGluIFFFTVUuIEJ1dCB0aGVuIEkgc2VlIGByc2lfdXNiX3J4X3RocmVhZGAsIGFuZCB0aGF0JiMzOTtzIGdvbGQg4oCTIFVTQiBpcyBtdWNoIG1vcmUgZnV6ei1mcmllbmRseSB3aXRoIHRoaW5ncyBsaWtlIFVTQiBnYWRnZXQvZHVtbXlfaGNkL3ZoY2kuIEkgYWxzbyB3YW50IHRvIGNvbnNpZGVyIGByc2lfdHhfc2NoZWR1bGVyX3RocmVhZGAgYW5kIGByc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkYCwgc2luY2UgdGhleSYjMzk7cmUgdGhlcmUuCgpUaGUgZmlyc3Qgc3RlcCBpcyBjaGVja2luZyB3aGV0aGVyIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc3RhdGljIG9yIG5vdC4gTG9va2luZyBpbnRvIHRoZSBjb2RlLCBgcnNpX3VzYl9yeF90aHJlYWRgIGFuZCBgcnNpX3NkaW9fcnhfdGhyZWFkYCBhcmUgKm5vdCogc3RhdGljLCBzbyB0aGV5JiMzOTtyZSBkZWZpbml0ZWx5IGdvb2QgY2FuZGlkYXRlcy4gRXhjZWxsZW50ISBOb3cgSSBjaGVjayBgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWRgIGFuZCBgcnNpX2NvZXhfc2NoZWR1bGVyX3RocmVhZGAuIFRoZXkgKmFyZSogc3RhdGljLCBidXQgc2luY2UgdGhleSYjMzk7cmUgcGFzc2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzIHRvIGByc2lfY3JlYXRlX2t0aHJlYWRgLCB0aGV5IGFyZSBsaWtlbHkgbm90IGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBUaGVzZSB3aWxsIGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gU3l6a2FsbGVyIG1pZ2h0IHByZWZlciBub24tc3RhdGljIHN5bWJvbHMsIGJ1dCBzaW5jZSB0aGV5IGFyZW4mIzM5O3QgaW5saW5lZCwgaXQgc2hvdWxkIGJlIGFibGUgdG8gcmVzb2x2ZSB0aGVtLgoKSSB3aWxsIGluY2x1ZGUgYWxsIG9mIHRoZW0gaW5pdGlhbGx5LCBqdXN0IHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUsIGJlY2F1c2UgdGhleSBhbGwgc291bmQgbGlrZSBncmVhdCB0YXJnZXRzOiBgcnNpX3VzYl9yeF90aHJlYWRgLCBgcnNpX3NkaW9fcnhfdGhyZWFkYCwgYHJzaV90eF9zY2hlZHVsZXJfdGhyZWFkYCwgYW5kIGByc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkYC4gVGhlIFVTQiBSWCB0aHJlYWQgaXMgcHJvYmFibHkgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuCgpJIHdhbnQgdG8gc2VlIGlmIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBjYWxsIHRoZXNlIG9yIGFyZSBjbG9zZWx5IHJlbGF0ZWQuIEkgY29uZmlybSB0aGF0IGByc2lfdXNiX2luaXRfcnhgIGNhbGxzIGByc2lfY3JlYXRlX2t0aHJlYWRgIHdpdGggYHJzaV91c2JfcnhfdGhyZWFkYCwgYHJzaV85MXhfaW5pdGAgY2FsbHMgYHJzaV9jcmVhdGVfa3RocmVhZGAgd2l0aCBgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWRgLCBhbmQgYHJzaV9jb2V4X2F0dGFjaGAgY2FsbHMgYHJzaV9jcmVhdGVfa3RocmVhZGAgd2l0aCBgcnNpX2NvZXhfc2NoZWR1bGVyX3RocmVhZGAuIFRoaXMgaXMgYSBzb2xpZCBzaWduIHRoYXQgYWxsIG9mIHRoZW0gYXJlIHZhbGlkIGZ1enppbmcgdGFyZ2V0cy4KClNvLCBoZXJlJiMzOTtzIG15IGxpc3Qgb2YgRm9jdXNTeW1ib2xzOiBgcnNpX3VzYl9yeF90aHJlYWRgLCBgcnNpX3NkaW9fcnhfdGhyZWFkYCwgYHJzaV90eF9zY2hlZHVsZXJfdGhyZWFkYCwgYHJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWRgLgoKTmV4dCwgSSBuZWVkIHRvIGxvb2sgYXQgdGhlIGNvbmZpZyBvcHRpb25zLiBMZXQmIzM5O3Mgc2VlLi4uIGBNQUM4MDIxMWAsIGBVU0JgLCBgQlRgLCBgV0xBTl9WRU5ET1JfUlNJYCwgYFJTSV85MVhgLCBgUlNJX1VTQmAsIGBSU0lfQ09FWGAsIGBSU0lfU0RJT2AuIEkgbmVlZCB0byByZW1lbWJlciB0aGF0IGBSU0lfU0RJT2AgZGVwZW5kcyBvbiBgTU1DYCwgc28gSSBtdXN0IGluY2x1ZGUgdGhhdCBhcyB3ZWxsLgoKSGVyZSBhcmUgdGhlIHJlcXVpcmVkIGNvbmZpZ3M6CmBNQUM4MDIxMWAKYFVTQmAKYEJUYApgTU1DYApgV0xBTl9WRU5ET1JfUlNJYApgUlNJXzkxWGAKYFJTSV9VU0JgCmBSU0lfQ09FWGAKYFJTSV9TRElPYAoKT2theSwgYW5kIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBkZXBlbmRlbmNpZXMuIGBSU0lfQ09FWGAgcmVxdWlyZXMgYEJUYCwgYFJTSV85MVhgIG5lZWRzIGBNQUM4MDIxMWAsIGBSU0lfVVNCYCBuZWVkcyBgVVNCYCBhbmQgYFJTSV85MVhgLCBhbmQgYFJTSV9TRElPYCBuZWVkcyBgTU1DYCBhbmQgYFJTSV85MVhgLiBBbGwgbG9va3MgZ29vZCB0aGVyZS4KCkkgYW0gY29uZmlkZW50IHRoYXQgdGhpcyBpcyBhIHZhbGlkIGFwcHJvYWNoLCBhbmQgdGhlc2UgdGhyZWFkcyBhcmUgdGhlIGJlc3QgcGxhY2VzIHRvIHN0YXJ0IGZ1enppbmcgdG8gZXhwb3NlIGFueSBwb3RlbnRpYWwgYnVncywgYXMgdGhpcyBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgaXNzdWUgd2hlcmUgdGhyZWFkIHNpZ25hdHVyZXMgd2VyZSBpbmNvcnJlY3QsIGFuZCBzaG91bGQgYmUgZnV6ei10ZXN0ZWQuCgpUaGUgbmFtZXMgSSBpZGVudGlmaWVkIGFyZSBjb3JyZWN0LCBhbmQgSSB3aWxsIG5vdyBzZXQgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTA6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtCVCYjMzQ7LAogICAgJiMzNDtNTUMmIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfUlNJJiMzNDssCiAgICAmIzM0O1JTSV85MVgmIzM0OywKICAgICYjMzQ7UlNJX1VTQiYjMzQ7LAogICAgJiMzNDtSU0lfQ09FWCYjMzQ7LAogICAgJiMzNDtSU0lfU0RJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3JzaV91c2JfcnhfdGhyZWFkJiMzNDssCiAgICAmIzM0O3JzaV9zZGlvX3J4X3RocmVhZCYjMzQ7LAogICAgJiMzNDtyc2lfdHhfc2NoZWR1bGVyX3RocmVhZCYjMzQ7LAogICAgJiMzNDtyc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHRoZSBmdW5jdGlvbiBzaWduYXR1cmVzIG9mIHNldmVyYWwga3RocmVhZCBmdW5jdGlvbnMgKHJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWQsIHJzaV90eF9zY2hlZHVsZXJfdGhyZWFkLCByc2lfc2Rpb19yeF90aHJlYWQsIHJzaV91c2JfcnhfdGhyZWFkKSBpbiB0aGUgUmVkcGluZSBTaWduYWxzIEluYy4gKFJTSSkgd2lyZWxlc3MgZHJpdmVyIHRvIG1hdGNoIHRoZSBleHBlY3RlZCBgaW50ICgqKSh2b2lkICopYCB0eXBlIGZvciBrdGhyZWFkIGNyZWF0aW9uLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBDb250cm9sLUZsb3cgSW50ZWdyaXR5IChDRkkpIHBhbmljcyB3aGVuIHRoZXNlIHRocmVhZHMgYXJlIHNwYXduZWQuIFNpbmNlIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBVU0IvU0RJTyBkcml2ZXIsIGl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoZSB0aHJlYWRzIGV4ZWN1dGUgY29ycmVjdGx5IHdpdGhvdXQgdHJpZ2dlcmluZyBvdGhlciBidWdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7QlQmIzM0OywKICAgICYjMzQ7TU1DJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX1JTSSYjMzQ7LAogICAgJiMzNDtSU0lfOTFYJiMzNDssCiAgICAmIzM0O1JTSV9VU0ImIzM0OywKICAgICYjMzQ7UlNJX0NPRVgmIzM0OywKICAgICYjMzQ7UlNJX1NESU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyc2lfdXNiX3J4X3RocmVhZCYjMzQ7LAogICAgJiMzNDtyc2lfc2Rpb19yeF90aHJlYWQmIzM0OywKICAgICYjMzQ7cnNpX3R4X3NjaGVkdWxlcl90aHJlYWQmIzM0OywKICAgICYjMzQ7cnNpX2NvZXhfc2NoZWR1bGVyX3RocmVhZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlcyBvZiBzZXZlcmFsIGt0aHJlYWQgZnVuY3Rpb25zIChyc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkLCByc2lfdHhfc2NoZWR1bGVyX3RocmVhZCwgcnNpX3NkaW9fcnhfdGhyZWFkLCByc2lfdXNiX3J4X3RocmVhZCkgaW4gdGhlIFJlZHBpbmUgU2lnbmFscyBJbmMuIChSU0kpIHdpcmVsZXNzIGRyaXZlciB0byBtYXRjaCB0aGUgZXhwZWN0ZWQgYGludCAoKikodm9pZCAqKWAgdHlwZSBmb3Iga3RocmVhZCBjcmVhdGlvbi4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgQ29udHJvbC1GbG93IEludGVncml0eSAoQ0ZJKSBwYW5pY3Mgd2hlbiB0aGVzZSB0aHJlYWRzIGFyZSBzcGF3bmVkLiBTaW5jZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgVVNCL1NESU8gZHJpdmVyLCBpdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgdGhyZWFkcyBleGVjdXRlIGNvcnJlY3RseSB3aXRob3V0IHRyaWdnZXJpbmcgb3RoZXIgYnVncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjMwOjMxLjE2ODA2NzU0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyOTI1NjI3MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIkJUXCIsXG4gICAgXCJNTUNcIixcbiAgICBcIldMQU5fVkVORE9SX1JTSVwiLFxuICAgIFwiUlNJXzkxWFwiLFxuICAgIFwiUlNJX1VTQlwiLFxuICAgIFwiUlNJX0NPRVhcIixcbiAgICBcIlJTSV9TRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnNpX3VzYl9yeF90aHJlYWRcIixcbiAgICBcInJzaV9zZGlvX3J4X3RocmVhZFwiLFxuICAgIFwicnNpX3R4X3NjaGVkdWxlcl90aHJlYWRcIixcbiAgICBcInJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlcyBvZiBzZXZlcmFsIGt0aHJlYWQgZnVuY3Rpb25zIChyc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkLCByc2lfdHhfc2NoZWR1bGVyX3RocmVhZCwgcnNpX3NkaW9fcnhfdGhyZWFkLCByc2lfdXNiX3J4X3RocmVhZCkgaW4gdGhlIFJlZHBpbmUgU2lnbmFscyBJbmMuIChSU0kpIHdpcmVsZXNzIGRyaXZlciB0byBtYXRjaCB0aGUgZXhwZWN0ZWQgYGludCAoKikodm9pZCAqKWAgdHlwZSBmb3Iga3RocmVhZCBjcmVhdGlvbi4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgQ29udHJvbC1GbG93IEludGVncml0eSAoQ0ZJKSBwYW5pY3Mgd2hlbiB0aGVzZSB0aHJlYWRzIGFyZSBzcGF3bmVkLiBTaW5jZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgVVNCL1NESU8gZHJpdmVyLCBpdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgdGhyZWFkcyBleGVjdXRlIGNvcnJlY3RseSB3aXRob3V0IHRyaWdnZXJpbmcgb3RoZXIgYnVncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzA6MzEuMTY4MDczNTYzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjEyMTIyNjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGIxOThhNDU3YTU3NGIyMTdiZmYyOWM3ODhmM2M0ZjZlN2MzMGMwMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyA0IDEwOjMwOjI5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2NvZXguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2NvZXguY1xcbmluZGV4IGVlNjAzYTUxNzNmYjMuLjAyM2M1MzlmYzM4NDMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jXFxuQEAgLTUwLDggKzUwLDkgQEAgc3RhdGljIHZvaWQgcnNpX2NvZXhfc2NoZWRfdHhfcGt0cyhzdHJ1Y3QgcnNpX2NvZXhfY3RybF9ibG9jayAqY29leF9jYilcXG4gXFx0fSB3aGlsZSAoY29leF9xICE9IFJTSV9DT0VYX1FfSU5WQUxJRCk7XFxuIH1cXG4gXFxuLXN0YXRpYyB2b2lkIHJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcXG4rc3RhdGljIGludCByc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkKHZvaWQgKmRhdGEpXFxuIHtcXG4rXFx0c3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiA9IGRhdGE7XFxuIFxcdHN0cnVjdCByc2lfY29leF9jdHJsX2Jsb2NrICpjb2V4X2NiID0gY29tbW9uLVxcdTAwM2Vjb2V4X2NiO1xcbiBcXHR1MzIgdGltZW91dCA9IEVWRU5UX1dBSVRfRk9SRVZFUjtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uY1xcbmluZGV4IDY2MmU0MmQxZTVlOGQuLjJjZTUxNDc2NjYyMDggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jXFxuQEAgLTI0NiwxMiArMjQ2LDEzIEBAIEVYUE9SVF9TWU1CT0xfR1BMKHJzaV9yZWFkX3BrdCk7XFxuIC8qKlxcbiAgKiByc2lfdHhfc2NoZWR1bGVyX3RocmVhZCgpIC0gVGhpcyBmdW5jdGlvbiBpcyBhIGtlcm5lbCB0aHJlYWQgdG8gc2VuZCB0aGVcXG4gICpcXHRcXHRcXHQgICAgICAgcGFja2V0cyB0byB0aGUgZGV2aWNlLlxcbi0gKiBAY29tbW9uOiBQb2ludGVyIHRvIHRoZSBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmUuXFxuKyAqIEBkYXRhOiBQb2ludGVyIHRvIHRoZSBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmUuXFxuICAqXFxuLSAqIFJldHVybjogTm9uZS5cXG4rICogUmV0dXJuOiAwLlxcbiAgKi9cXG4tc3RhdGljIHZvaWQgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcXG4rc3RhdGljIGludCByc2lfdHhfc2NoZWR1bGVyX3RocmVhZCh2b2lkICpkYXRhKVxcbiB7XFxuK1xcdHN0cnVjdCByc2lfY29tbW9uICpjb21tb24gPSBkYXRhO1xcbiBcXHRzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyID0gY29tbW9uLVxcdTAwM2Vwcml2O1xcbiBcXHR1MzIgdGltZW91dCA9IEVWRU5UX1dBSVRfRk9SRVZFUjtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3NkaW9fb3BzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9zZGlvX29wcy5jXFxuaW5kZXggNTk3YjIzOGUyMjk0OS4uMThhMjhhYTk3NDQ2MCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9zZGlvX29wcy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfc2Rpb19vcHMuY1xcbkBAIC02Miw4ICs2Miw5IEBAIGludCByc2lfc2Rpb19tYXN0ZXJfYWNjZXNzX21zd29yZChzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyLCB1MTYgbXNfd29yZClcXG4gXFxuIHN0YXRpYyB2b2lkIHJzaV9yeF9oYW5kbGVyKHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIpO1xcbiBcXG4tdm9pZCByc2lfc2Rpb19yeF90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcXG4raW50IHJzaV9zZGlvX3J4X3RocmVhZCh2b2lkICpkYXRhKVxcbiB7XFxuK1xcdHN0cnVjdCByc2lfY29tbW9uICpjb21tb24gPSBkYXRhO1xcbiBcXHRzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyID0gY29tbW9uLVxcdTAwM2Vwcml2O1xcbiBcXHRzdHJ1Y3QgcnNpXzkxeF9zZGlvZGV2ICpzZGV2ID0gYWRhcHRlci1cXHUwMDNlcnNpX2RldjtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3VzYl9vcHMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3VzYl9vcHMuY1xcbmluZGV4IDI1YzJiMjMyMzk0YTYuLmU4OTk2MzFiOWFlZDIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiX29wcy5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiX29wcy5jXFxuQEAgLTIxLDEyICsyMSwxMyBAQFxcbiAvKipcXG4gICogcnNpX3VzYl9yeF90aHJlYWQoKSAtIFRoaXMgaXMgYSBrZXJuZWwgdGhyZWFkIHRvIHJlY2VpdmUgdGhlIHBhY2tldHMgZnJvbVxcbiAgKlxcdFxcdFxcdCB0aGUgVVNCIGRldmljZS5cXG4tICogQGNvbW1vbjogUG9pbnRlciB0byB0aGUgZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlLlxcbisgKiBAZGF0YTogUG9pbnRlciB0byB0aGUgZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlLlxcbiAgKlxcbi0gKiBSZXR1cm46IE5vbmUuXFxuKyAqIFJldHVybjogMC5cXG4gICovXFxuLXZvaWQgcnNpX3VzYl9yeF90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcXG4raW50IHJzaV91c2JfcnhfdGhyZWFkKHZvaWQgKmRhdGEpXFxuIHtcXG4rXFx0c3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiA9IGRhdGE7XFxuIFxcdHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIgPSBjb21tb24tXFx1MDAzZXByaXY7XFxuIFxcdHN0cnVjdCByc2lfOTF4X3VzYmRldiAqZGV2ID0gYWRhcHRlci1cXHUwMDNlcnNpX2RldjtcXG4gXFx0aW50IHN0YXR1cztcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9jb21tb24uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfY29tbW9uLmhcXG5pbmRleCAzY2RmOWRlZDg3NmQ5Li4yYTMzYTgxZjcxYTNlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfY29tbW9uLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oXFxuQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHJzaV9yZXNldF9ldmVudChzdHJ1Y3QgcnNpX2V2ZW50ICpldmVudClcXG4gXFxuIHN0YXRpYyBpbmxpbmUgaW50IHJzaV9jcmVhdGVfa3RocmVhZChzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLFxcbiBcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCByc2lfdGhyZWFkICp0aHJlYWQsXFxuLVxcdFxcdFxcdFxcdCAgICAgdm9pZCAqZnVuY19wdHIsXFxuK1xcdFxcdFxcdFxcdCAgICAgaW50ICgqZnVuY19wdHIpKHZvaWQgKmRhdGEpLFxcbiBcXHRcXHRcXHRcXHQgICAgIHU4ICpuYW1lKVxcbiB7XFxuIFxcdGluaXRfY29tcGxldGlvbihcXHUwMDI2dGhyZWFkLVxcdTAwM2Vjb21wbGV0aW9uKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9zZGlvLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX3NkaW8uaFxcbmluZGV4IDdjOTFiMTI2YjM1MGYuLmViMmI3ZjM2YTdlNGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9zZGlvLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX3NkaW8uaFxcbkBAIC0xMzQsNSArMTM0LDUgQEAgaW50IHJzaV9zZGlvX21hc3Rlcl9hY2Nlc3NfbXN3b3JkKHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIsIHUxNiBtc193b3JkKTtcXG4gdm9pZCByc2lfc2Rpb19hY2tfaW50cihzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyLCB1OCBpbnRfYml0KTtcXG4gaW50IHJzaV9zZGlvX2RldGVybWluZV9ldmVudF90aW1lb3V0KHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIpO1xcbiBpbnQgcnNpX3NkaW9fY2hlY2tfYnVmZmVyX3N0YXR1cyhzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyLCB1OCBxX251bSk7XFxuLXZvaWQgcnNpX3NkaW9fcnhfdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24pO1xcbitpbnQgcnNpX3NkaW9fcnhfdGhyZWFkKHZvaWQgKmRhdGEpO1xcbiAjZW5kaWZcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV91c2IuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfdXNiLmhcXG5pbmRleCA5NjE4NTE3NDhiYzRjLi43ODA2N2VhZmZlOGIxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfdXNiLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX3VzYi5oXFxuQEAgLTgxLDUgKzgxLDUgQEAgc3RhdGljIGlubGluZSBpbnQgcnNpX3VzYl9ldmVudF90aW1lb3V0KHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIpXFxuIFxcdHJldHVybiBFVkVOVF9XQUlUX0ZPUkVWRVI7XFxuIH1cXG4gXFxuLXZvaWQgcnNpX3VzYl9yeF90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbik7XFxuK2ludCByc2lfdXNiX3J4X3RocmVhZCh2b2lkICpkYXRhKTtcXG4gI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjMwOjMyLjM4MTE2NTkwNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjMxNzEyNTE2NTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIkJUXCIsXG4gICAgXCJNTUNcIixcbiAgICBcIldMQU5fVkVORE9SX1JTSVwiLFxuICAgIFwiUlNJXzkxWFwiLFxuICAgIFwiUlNJX1VTQlwiLFxuICAgIFwiUlNJX0NPRVhcIixcbiAgICBcIlJTSV9TRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnNpX3VzYl9yeF90aHJlYWRcIixcbiAgICBcInJzaV9zZGlvX3J4X3RocmVhZFwiLFxuICAgIFwicnNpX3R4X3NjaGVkdWxlcl90aHJlYWRcIixcbiAgICBcInJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlcyBvZiBzZXZlcmFsIGt0aHJlYWQgZnVuY3Rpb25zIChyc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkLCByc2lfdHhfc2NoZWR1bGVyX3RocmVhZCwgcnNpX3NkaW9fcnhfdGhyZWFkLCByc2lfdXNiX3J4X3RocmVhZCkgaW4gdGhlIFJlZHBpbmUgU2lnbmFscyBJbmMuIChSU0kpIHdpcmVsZXNzIGRyaXZlciB0byBtYXRjaCB0aGUgZXhwZWN0ZWQgYGludCAoKikodm9pZCAqKWAgdHlwZSBmb3Iga3RocmVhZCBjcmVhdGlvbi4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgQ29udHJvbC1GbG93IEludGVncml0eSAoQ0ZJKSBwYW5pY3Mgd2hlbiB0aGVzZSB0aHJlYWRzIGFyZSBzcGF3bmVkLiBTaW5jZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgVVNCL1NESU8gZHJpdmVyLCBpdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgdGhyZWFkcyBleGVjdXRlIGNvcnJlY3RseSB3aXRob3V0IHRyaWdnZXJpbmcgb3RoZXIgYnVncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGIxOThhNDU3YTU3NGIyMTdiZmYyOWM3ODhmM2M0ZjZlN2MzMGMwMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTA6MzA6MjkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmNcbmluZGV4IGVlNjAzYTUxNzNmYjMuLjAyM2M1MzlmYzM4NDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2NvZXguY1xuQEAgLTUwLDggKzUwLDkgQEAgc3RhdGljIHZvaWQgcnNpX2NvZXhfc2NoZWRfdHhfcGt0cyhzdHJ1Y3QgcnNpX2NvZXhfY3RybF9ibG9jayAqY29leF9jYilcbiBcdH0gd2hpbGUgKGNvZXhfcSAhPSBSU0lfQ09FWF9RX0lOVkFMSUQpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCByc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24pXG4rc3RhdGljIGludCByc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkKHZvaWQgKmRhdGEpXG4ge1xuK1x0c3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiA9IGRhdGE7XG4gXHRzdHJ1Y3QgcnNpX2NvZXhfY3RybF9ibG9jayAqY29leF9jYiA9IGNvbW1vbi1cdTAwM2Vjb2V4X2NiO1xuIFx0dTMyIHRpbWVvdXQgPSBFVkVOVF9XQUlUX0ZPUkVWRVI7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jXG5pbmRleCA2NjJlNDJkMWU1ZThkLi4yY2U1MTQ3NjY2MjA4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWluLmNcbkBAIC0yNDYsMTIgKzI0NiwxMyBAQCBFWFBPUlRfU1lNQk9MX0dQTChyc2lfcmVhZF9wa3QpO1xuIC8qKlxuICAqIHJzaV90eF9zY2hlZHVsZXJfdGhyZWFkKCkgLSBUaGlzIGZ1bmN0aW9uIGlzIGEga2VybmVsIHRocmVhZCB0byBzZW5kIHRoZVxuICAqXHRcdFx0ICAgICAgIHBhY2tldHMgdG8gdGhlIGRldmljZS5cbi0gKiBAY29tbW9uOiBQb2ludGVyIHRvIHRoZSBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmUuXG4rICogQGRhdGE6IFBvaW50ZXIgdG8gdGhlIGRyaXZlciBwcml2YXRlIHN0cnVjdHVyZS5cbiAgKlxuLSAqIFJldHVybjogTm9uZS5cbisgKiBSZXR1cm46IDAuXG4gICovXG4tc3RhdGljIHZvaWQgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcbitzdGF0aWMgaW50IHJzaV90eF9zY2hlZHVsZXJfdGhyZWFkKHZvaWQgKmRhdGEpXG4ge1xuK1x0c3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiA9IGRhdGE7XG4gXHRzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyID0gY29tbW9uLVx1MDAzZXByaXY7XG4gXHR1MzIgdGltZW91dCA9IEVWRU5UX1dBSVRfRk9SRVZFUjtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9zZGlvX29wcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfc2Rpb19vcHMuY1xuaW5kZXggNTk3YjIzOGUyMjk0OS4uMThhMjhhYTk3NDQ2MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3NkaW9fb3BzLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3NkaW9fb3BzLmNcbkBAIC02Miw4ICs2Miw5IEBAIGludCByc2lfc2Rpb19tYXN0ZXJfYWNjZXNzX21zd29yZChzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyLCB1MTYgbXNfd29yZClcbiBcbiBzdGF0aWMgdm9pZCByc2lfcnhfaGFuZGxlcihzdHJ1Y3QgcnNpX2h3ICphZGFwdGVyKTtcbiBcbi12b2lkIHJzaV9zZGlvX3J4X3RocmVhZChzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uKVxuK2ludCByc2lfc2Rpb19yeF90aHJlYWQodm9pZCAqZGF0YSlcbiB7XG4rXHRzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uID0gZGF0YTtcbiBcdHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIgPSBjb21tb24tXHUwMDNlcHJpdjtcbiBcdHN0cnVjdCByc2lfOTF4X3NkaW9kZXYgKnNkZXYgPSBhZGFwdGVyLVx1MDAzZXJzaV9kZXY7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiX29wcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiX29wcy5jXG5pbmRleCAyNWMyYjIzMjM5NGE2Li5lODk5NjMxYjlhZWQyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiX29wcy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF91c2Jfb3BzLmNcbkBAIC0yMSwxMiArMjEsMTMgQEBcbiAvKipcbiAgKiByc2lfdXNiX3J4X3RocmVhZCgpIC0gVGhpcyBpcyBhIGtlcm5lbCB0aHJlYWQgdG8gcmVjZWl2ZSB0aGUgcGFja2V0cyBmcm9tXG4gICpcdFx0XHQgdGhlIFVTQiBkZXZpY2UuXG4tICogQGNvbW1vbjogUG9pbnRlciB0byB0aGUgZHJpdmVyIHByaXZhdGUgc3RydWN0dXJlLlxuKyAqIEBkYXRhOiBQb2ludGVyIHRvIHRoZSBkcml2ZXIgcHJpdmF0ZSBzdHJ1Y3R1cmUuXG4gICpcbi0gKiBSZXR1cm46IE5vbmUuXG4rICogUmV0dXJuOiAwLlxuICAqL1xuLXZvaWQgcnNpX3VzYl9yeF90aHJlYWQoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcbitpbnQgcnNpX3VzYl9yeF90aHJlYWQodm9pZCAqZGF0YSlcbiB7XG4rXHRzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uID0gZGF0YTtcbiBcdHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIgPSBjb21tb24tXHUwMDNlcHJpdjtcbiBcdHN0cnVjdCByc2lfOTF4X3VzYmRldiAqZGV2ID0gYWRhcHRlci1cdTAwM2Vyc2lfZGV2O1xuIFx0aW50IHN0YXR1cztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9jb21tb24uaFxuaW5kZXggM2NkZjlkZWQ4NzZkOS4uMmEzM2E4MWY3MWEzZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfY29tbW9uLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfY29tbW9uLmhcbkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByc2lfcmVzZXRfZXZlbnQoc3RydWN0IHJzaV9ldmVudCAqZXZlbnQpXG4gXG4gc3RhdGljIGlubGluZSBpbnQgcnNpX2NyZWF0ZV9rdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sXG4gXHRcdFx0XHQgICAgIHN0cnVjdCByc2lfdGhyZWFkICp0aHJlYWQsXG4tXHRcdFx0XHQgICAgIHZvaWQgKmZ1bmNfcHRyLFxuK1x0XHRcdFx0ICAgICBpbnQgKCpmdW5jX3B0cikodm9pZCAqZGF0YSksXG4gXHRcdFx0XHQgICAgIHU4ICpuYW1lKVxuIHtcbiBcdGluaXRfY29tcGxldGlvbihcdTAwMjZ0aHJlYWQtXHUwMDNlY29tcGxldGlvbik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9zZGlvLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX3NkaW8uaFxuaW5kZXggN2M5MWIxMjZiMzUwZi4uZWIyYjdmMzZhN2U0YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfc2Rpby5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX3NkaW8uaFxuQEAgLTEzNCw1ICsxMzQsNSBAQCBpbnQgcnNpX3NkaW9fbWFzdGVyX2FjY2Vzc19tc3dvcmQoc3RydWN0IHJzaV9odyAqYWRhcHRlciwgdTE2IG1zX3dvcmQpO1xuIHZvaWQgcnNpX3NkaW9fYWNrX2ludHIoc3RydWN0IHJzaV9odyAqYWRhcHRlciwgdTggaW50X2JpdCk7XG4gaW50IHJzaV9zZGlvX2RldGVybWluZV9ldmVudF90aW1lb3V0KHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIpO1xuIGludCByc2lfc2Rpb19jaGVja19idWZmZXJfc3RhdHVzKHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIsIHU4IHFfbnVtKTtcbi12b2lkIHJzaV9zZGlvX3J4X3RocmVhZChzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uKTtcbitpbnQgcnNpX3NkaW9fcnhfdGhyZWFkKHZvaWQgKmRhdGEpO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfdXNiLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX3VzYi5oXG5pbmRleCA5NjE4NTE3NDhiYzRjLi43ODA2N2VhZmZlOGIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV91c2IuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV91c2IuaFxuQEAgLTgxLDUgKzgxLDUgQEAgc3RhdGljIGlubGluZSBpbnQgcnNpX3VzYl9ldmVudF90aW1lb3V0KHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIpXG4gXHRyZXR1cm4gRVZFTlRfV0FJVF9GT1JFVkVSO1xuIH1cbiBcbi12b2lkIHJzaV91c2JfcnhfdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24pO1xuK2ludCByc2lfdXNiX3J4X3RocmVhZCh2b2lkICpkYXRhKTtcbiAjZW5kaWZcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjMwOjMyLjM4MTE2NzA4NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwMzUzNzk0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBmb3IgdGhlIGByc2lgIHdpcmVsZXNzIGRyaXZlciAoYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9gKSBhbmQgaXQgbG9va3MgbGlrZSBpdCdzIG1ha2luZyBzb21lIHNpZ25hdHVyZSBjaGFuZ2VzIHRvIHRoZSB0aHJlYWQgZnVuY3Rpb25zLiBTcGVjaWZpY2FsbHksIGl0J3MgdXBkYXRpbmcgdGhlIHNpZ25hdHVyZSBmcm9tIGB2b2lkIGZ1bmMoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilgIHRvIGBpbnQgZnVuYyh2b2lkICpkYXRhKWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgbGlrZWx5IGJlaW5nIGRvbmUgdG8gYWxpZ24gd2l0aCB0aGUgc3RhbmRhcmQgdGhyZWFkaW5nIEFQSXMgaW4gdGhlIGtlcm5lbCwgbGlrZSBga3RocmVhZF9ydW5gLCB3aGljaCBleHBlY3QgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgdG8gaGF2ZSB0aGUgYGludCAoKikodm9pZCAqKWAgc2lnbmF0dXJlLiBUaGF0IG1ha2VzIHNlbnNlIGZyb20gYSBjb2Rpbmcgc3RhbmRhcmQgcGVyc3BlY3RpdmUuXG5cbkxldCdzIHNlZSBpZiB0aGlzIGRyaXZlciBpcyBldmVuIHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGZvciBmdXp6aW5nLiBUaGlzIGlzIGEgUmVkcGluZSBTaWduYWxzIEluYy4gOTF4IFdMQU4gYW5kIEJsdWV0b290aCBjb21ibyBkZXZpY2UgZHJpdmVyLiBJdCBzdXBwb3J0cyBib3RoIFNESU8gYW5kIFVTQiBpbnRlcmZhY2VzLiBUaGUgVVNCIHNpZGUgb2YgdGhpcyBpcyBsb29raW5nIHByb21pc2luZyBiZWNhdXNlIHdlIGNhbiBlbXVsYXRlIFVTQiBkZXZpY2VzIHVzaW5nIGEgVVNCIGdhZGdldCwgYSBgZHVtbXlfaGNkYCwgb3IgZXZlbiB0aGUgc3l6a2FsbGVyIFVTQiBmdXp6ZXIgKHVzaW5nIHZoY2kpLiBTbyBVU0IgZHJpdmVycyBzaG91bGQgYmUgZnV6emFibGUuIFNESU8uLi4gdGhhdCdzIG1vcmUgb2YgYSBnYW1ibGUsIGJ1dCBVU0IgaXMgZGVmaW5pdGVseSBhIGdvb2QgdGFyZ2V0LlxuXG5Ob3csIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYWN0dWFsIGNvZGUuIFRoZSBwYXRjaCB0b3VjaGVzIGByc2lfY3JlYXRlX2t0aHJlYWRgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oYCBhbmQsIGFzIHN1c3BlY3RlZCwgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBoYXMgYmVlbiBtb2RpZmllZCB0byBgaW50ICgqZnVuY19wdHIpKHZvaWQgKmRhdGEpYC4gQmluZ28uXG5cblRoZSBrZXkgdGhyZWFkIGZ1bmN0aW9ucyB0aGF0IGFyZSBiZWluZyBjaGFuZ2VkIGFyZSBgcnNpX2NvZXhfc2NoZWR1bGVyX3RocmVhZGAsIGByc2lfdHhfc2NoZWR1bGVyX3RocmVhZGAsIGByc2lfc2Rpb19yeF90aHJlYWRgLCBhbmQgYHJzaV91c2JfcnhfdGhyZWFkYC4gVGhlc2UgYXJlIHRocmVhZCBmdW5jdGlvbnMsIHNvIHRoZXkgc2hvdWxkIGJlIGZ1bmN0aW9uYWwgY2hhbmdlcy4gQnV0IHdhaXQsIHRoaXMgaXMgbW9yZSB0aGFuIGp1c3QgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXTigJlzIGFsc28gZml4aW5nIGEgcHJvdG90eXBlIG1pc21hdGNoLCBtZWFuaW5nIHRoaXMgY291bGQgaGF2ZSBiZWVuIGEgcG90ZW50aWFsIHNvdXJjZSBvZiBlcnJvcnMsIGVzcGVjaWFsbHkgQ29udHJvbC1GbG93IEludGVncml0eSAoQ0ZJKSB2aW9sYXRpb25zISBJZiB0aGVyZSdzIGEgdHlwZSBtaXNtYXRjaCwgdGhlIGtlcm5lbCBjb3VsZCBwYW5pYy4gQnkgZml4aW5nIHRoZSBzaWduYXR1cmUsIHdlIGNhbiBhdm9pZCBDRkkgcGFuaWNzLlxuXG5JcyB0aGlzIHBhdGNoIHdvcnRoIGZ1enppbmc/IEFic29sdXRlbHkuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSAqYW5kKiBpdCdzIGluIGEgVVNCIGRyaXZlci4gUGx1cywgdGhpcyBtaWdodCBhY3R1YWxseSBiZSBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIENGSSB2aW9sYXRpb24uIENhc3RpbmcgZnVuY3Rpb24gcG9pbnRlcnMgdG8gdGhlIHdyb25nIHR5cGUgaXMgYSBjbGFzc2ljIENGSSBwcm9ibGVtLiBJdOKAmXMgY3JpdGljYWwgdG8gdmVyaWZ5IHRoYXQgdGhlIHRocmVhZHMgcnVuIGNvcnJlY3RseSB3aXRob3V0IGFueSB1bmV4cGVjdGVkIGJlaGF2aW91ci4gVGhpcyBjb3VsZCBiZSBhIGdvb2QgZmluZC5cblxuSSBzaG91bGQgcHJvYmFibHkgc2VlIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnYCBmaWxlLiBJJ2xsIGp1c3QgZ3JlcCBmb3IgYHJzaWAgb3IgcmVhZCBpdCBkaXJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcyOCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjMwOjQwLjQxNjU0ODE3MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFdMQU5fVkVORE9SX1JTSVxcbiAgIDM6XFx0XFx0Ym9vbCBcXFwiUmVkcGluZSBTaWduYWxzIEluYyBkZXZpY2VzXFxcIlxcbiAgIDQ6XFx0XFx0ZGVmYXVsdCB5XFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIElmIHlvdSBoYXZlIGEgd2lyZWxlc3MgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXFxuICAgNzpcXHRcXG4gICA4OlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gICA5OlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbCB0aGVcXG4gIDEwOlxcdFxcdCAgcXVlc3Rpb25zIGFib3V0IHRoZXNlIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlIGFza2VkIGZvclxcbiAgMTE6XFx0XFx0ICB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXFxuICAxMjpcXHRcXG4gIDEzOlxcdGlmIFdMQU5fVkVORE9SX1JTSVxcbiAgMTQ6XFx0XFxuICAxNTpcXHRjb25maWcgUlNJXzkxWFxcbiAgMTY6XFx0XFx0dHJpc3RhdGUgXFxcIlJlZHBpbmUgU2lnbmFscyBJbmMgOTF4IFdMQU4gZHJpdmVyIHN1cHBvcnRcXFwiXFxuICAxNzpcXHRcXHRzZWxlY3QgQlRfSENJUlNJIGlmIFJTSV9DT0VYXFxuICAxODpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAxOTpcXHRcXHRoZWxwXFxuICAyMDpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJlcyBzdXBwb3J0IGZvciBSU0kgMXgxIGRldmljZXMuXFxuICAyMTpcXHRcXHQgIFNlbGVjdCBNIChyZWNvbW1lbmRlZCksIGlmIHlvdSBoYXZlIGEgUlNJIDF4MSB3aXJlbGVzcyBtb2R1bGUuXFxuICAyMjpcXHRcXG4gIDIzOlxcdGNvbmZpZyBSU0lfREVCVUdGU1xcbiAgMjQ6XFx0XFx0Ym9vbCBcXFwiUmVkcGluZSBTaWduYWxzIEluYyBkZWJ1ZyBzdXBwb3J0XFxcIlxcbiAgMjU6XFx0XFx0ZGVwZW5kcyBvbiBSU0lfOTFYXFxuICAyNjpcXHRcXHRkZWZhdWx0IHlcXG4gIDI3OlxcdFxcdGhlbHBcXG4gIDI4OlxcdFxcdCBTYXkgWSwgaWYgeW91IHdvdWxkIGxpa2UgdG8gZW5hYmxlIGRlYnVnIHN1cHBvcnQuIFRoaXMgb3B0aW9uXFxuICAyOTpcXHRcXHQgY3JlYXRlcyBkZWJ1Z2ZzIGVudHJpZXNcXG4gIDMwOlxcdFxcbiAgMzE6XFx0Y29uZmlnIFJTSV9TRElPXFxuICAzMjpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVkcGluZSBTaWduYWxzIFNESU8gYnVzIHN1cHBvcnRcXFwiXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIE1NQyBcXHUwMDI2XFx1MDAyNiBSU0lfOTFYXFxuICAzNDpcXHRcXHRkZWZhdWx0IG1cXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgU0RJTyBidXMgc3VwcG9ydCBpbiByc2kgZHJpdmVycy5cXG4gIDM3OlxcdFxcdCAgU2VsZWN0IE0gKHJlY29tbWVuZGVkKSwgaWYgeW91IGhhdmUgYSBSU0kgMXgxIHdpcmVsZXNzIG1vZHVsZS5cXG4gIDM4OlxcdFxcbiAgMzk6XFx0Y29uZmlnIFJTSV9VU0JcXG4gIDQwOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWRwaW5lIFNpZ25hbHMgVVNCIGJ1cyBzdXBwb3J0XFxcIlxcbiAgNDE6XFx0XFx0ZGVwZW5kcyBvbiBVU0IgXFx1MDAyNlxcdTAwMjYgUlNJXzkxWFxcbiAgNDI6XFx0XFx0ZGVmYXVsdCBtXFxuICA0MzpcXHRcXHRoZWxwXFxuICA0NDpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFVTQiBidXMgc3VwcG9ydCBpbiByc2kgZHJpdmVycy5cXG4gIDQ1OlxcdFxcdCAgU2VsZWN0IE0gKHJlY29tbWVuZGVkKSwgaWYgeW91IGhhdmUgYSBSU0kgMXgxIHdpcmVsZXNzIG1vZHVsZS5cXG4gIDQ2OlxcdFxcbiAgNDc6XFx0Y29uZmlnIFJTSV9DT0VYXFxuICA0ODpcXHRcXHRib29sIFxcXCJSZWRwaW5lIFNpZ25hbHMgV0xBTiBCVCBDb2V4aXN0ZW5jZSBzdXBwb3J0XFxcIlxcbiAgNDk6XFx0XFx0ZGVwZW5kcyBvbiBCVCBcXHUwMDI2XFx1MDAyNiBSU0lfOTFYXFxuICA1MDpcXHRcXHRkZXBlbmRzIG9uICEoQlQ9bSBcXHUwMDI2XFx1MDAyNiBSU0lfOTFYPXkpXFxuICA1MTpcXHRcXHRkZWZhdWx0IHlcXG4gIDUyOlxcdFxcdGhlbHBcXG4gIDUzOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgV0xBTiBCVCBjb2V4IHN1cHBvcnQgaW4gcnNpIGRyaXZlcnMuXFxuICA1NDpcXHRcXHQgIFNlbGVjdCBNIChyZWNvbW1lbmRlZCksIGlmIHlvdSBoYXZlIHdhbnQgdG8gdXNlIHRoaXMgZmVhdHVyZVxcbiAgNTU6XFx0XFx0ICBhbmQgeW91IGhhdmUgUlM5MTEzIG1vZHVsZS5cXG4gIDU2OlxcdFxcbiAgNTc6XFx0ZW5kaWYgIyBXTEFOX1ZFTkRPUl9SU0lcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzA6NDAuNDE2NjIyNzgyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI5ODU1MDk4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgV0xBTl9WRU5ET1JfUlNJYCwgYFJTSV85MVhgLCBgUlNJX1VTQmAsIGBSU0lfQ09FWGAsIGFuZCBgUlNJX1NESU9gLiBTaW5jZSB0aGlzIGlzIGEgVVNCIGRyaXZlciwgYFJTSV9VU0JgIGlzIG9idmlvdXNseSBjcml0aWNhbC4gQW5kIEkgc2VlIHRoYXQgYHJzaV85MXhfY29leC5jYCBpcyBiZWluZyBtb2RpZmllZCwgc28gYFJTSV9DT0VYYCBpcyBkZWZpbml0ZWx5IHJlbGV2YW50LlxuXG5UaGVyZWZvcmUsIG15IGluaXRpYWwgdGhvdWdodCBpcyB0byBlbmFibGUgYFdMQU5fVkVORE9SX1JTSWAsIGBSU0lfOTFYYCwgYFJTSV9VU0JgLCBhbmQgYFJTSV9DT0VYYC4gQnV0IHdhaXQsIEkgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLiBBaGEhIGBSU0lfQ09FWGAgZGVwZW5kcyBvbiBib3RoIGBCVGAgYW5kIGBSU0lfOTFYYC4gQW5kIGZ1cnRoZXIsIGBSU0lfOTFYYCByZWxpZXMgb24gYE1BQzgwMjExYCwgd2hpbGUgYFJTSV9VU0JgIGRlcGVuZHMgb24gYFVTQmAuXG5cbkFscmlnaHQsIHRoYXQgY2xhcmlmaWVzIGl0LiBUbyBtYWtlIHRoaXMgd29yayBjb3JyZWN0bHksIEkgbmVlZCB0byBlbmFibGUgdGhlIGZvbGxvd2luZzogYE1BQzgwMjExYCwgYFVTQmAsIGBCVGAsIGBXTEFOX1ZFTkRPUl9SU0lgLCBgUlNJXzkxWGAsIGBSU0lfVVNCYCwgYW5kIGBSU0lfQ09FWGAuIEl0J3MgaW1wb3J0YW50IHRvIGtlZXAgdGhlc2UgZGVwZW5kZW5jaWVzIHN0cmFpZ2h0IG9yIHRoZSBidWlsZCB3aWxsIGZhaWwuIE5vdywgSSB3YW50IHRvIHRha2UgYSBsb29rIGF0IGhvdyB0aGV5IGFyZSBtYW5hZ2luZyB0aHJlYWRzLCBzbyBJJ2xsIGNoZWNrIGByc2lfY3JlYXRlX2t0aHJlYWRgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oYCB0byBmdWxseSB1bmRlcnN0YW5kIGl0cyB1c2FnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY0MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjMwOjQ1LjcxNTE3NjU1M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTIxMjIxNjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnNpX2NyZWF0ZV9rdGhyZWFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jPTEzOT1pbnQgcnNpX2NvZXhfYXR0YWNoKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmMtMTU2LVxcdC8qIEluaXRpYWxpemUgY28tZXggdGhyZWFkICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jOjE1NzpcXHRpZiAocnNpX2NyZWF0ZV9rdGhyZWFkKGNvbW1vbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmMtMTU4LVxcdFxcdFxcdCAgICAgICBcXHUwMDI2Y29leF9jYi1cXHUwMDNlY29leF90eF90aHJlYWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWluLmM9MzAyPXN0cnVjdCByc2lfaHcgKnJzaV85MXhfaW5pdCh1MTYgb3Blcl9tb2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jLTMzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWluLmM6MzMyOlxcdGlmIChyc2lfY3JlYXRlX2t0aHJlYWQoY29tbW9uLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uYy0zMzMtXFx0XFx0XFx0ICAgICAgIFxcdTAwMjZjb21tb24tXFx1MDAzZXR4X3RocmVhZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3NkaW8uYz0xMDAxPXN0YXRpYyBpbnQgcnNpX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKnBmdW5jdGlvbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3NkaW8uYy0xMDQwLVxcdHJzaV9pbml0X2V2ZW50KFxcdTAwMjZzZGV2LVxcdTAwM2VyeF90aHJlYWQuZXZlbnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3NkaW8uYzoxMDQxOlxcdHN0YXR1cyA9IHJzaV9jcmVhdGVfa3RocmVhZChhZGFwdGVyLVxcdTAwM2Vwcml2LCBcXHUwMDI2c2Rldi1cXHUwMDNlcnhfdGhyZWFkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X3NkaW8uYy0xMDQyLVxcdFxcdFxcdFxcdCAgICByc2lfc2Rpb19yeF90aHJlYWQsIFxcXCJTRElPLVJYLVRocmVhZFxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiLmM9NTczPXN0YXRpYyBpbnQgcnNpX3VzYl9pbml0X3J4KHN0cnVjdCByc2lfaHcgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF91c2IuYy01OTMtXFx0cnNpX2luaXRfZXZlbnQoXFx1MDAyNmRldi1cXHUwMDNlcnhfdGhyZWFkLmV2ZW50KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF91c2IuYzo1OTQ6XFx0aWYgKHJzaV9jcmVhdGVfa3RocmVhZChhZGFwdGVyLVxcdTAwM2Vwcml2LCBcXHUwMDI2ZGV2LVxcdTAwM2VyeF90aHJlYWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfdXNiLmMtNTk1LVxcdFxcdFxcdCAgICAgICByc2lfdXNiX3J4X3RocmVhZCwgXFxcIlJYLVRocmVhZFxcXCIpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oPTU0PXN0YXRpYyBpbmxpbmUgdm9pZCByc2lfcmVzZXRfZXZlbnQoc3RydWN0IHJzaV9ldmVudCAqZXZlbnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2NvbW1vbi5oLTU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfY29tbW9uLmg6NTk6c3RhdGljIGlubGluZSBpbnQgcnNpX2NyZWF0ZV9rdGhyZWFkKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9jb21tb24uaC02MC1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCByc2lfdGhyZWFkICp0aHJlYWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDEwOjMwOjQ1LjgyNzMwNDQyNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4MTEyMzk0NTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIFJTSSBXaXJlbGVzcyBEcml2ZXIgVGhyZWFkcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIG1vZGlmaWVkIGZ1bmN0aW9uczogYHJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWRgLCBgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWRgLCBgcnNpX3NkaW9fcnhfdGhyZWFkYCwgYW5kIGByc2lfdXNiX3J4X3RocmVhZGAuIFRoZXNlIGFyZSB0aHJlYWQgZnVuY3Rpb25zLCBhbmQgdGhhdCdzIHdoZXJlIG15IGZvY3VzIG5lZWRzIHRvIGJlLiBSaWdodCBhd2F5LCBgcnNpX3NkaW9fcnhfdGhyZWFkYCBnaXZlcyBtZSBwYXVzZSBiZWNhdXNlIFNESU8gY2FuIGJlIHRyaWNreSB0byBmdXp6IGVmZmVjdGl2ZWx5IHdpdGhvdXQgYSBwcm9wZXIgZW11bGF0b3IgaW4gUUVNVS4gQnV0IHRoZW4gSSBzZWUgYHJzaV91c2JfcnhfdGhyZWFkYCwgYW5kIHRoYXQncyBnb2xkIOKAkyBVU0IgaXMgbXVjaCBtb3JlIGZ1enotZnJpZW5kbHkgd2l0aCB0aGluZ3MgbGlrZSBVU0IgZ2FkZ2V0L2R1bW15X2hjZC92aGNpLiBJIGFsc28gd2FudCB0byBjb25zaWRlciBgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWRgIGFuZCBgcnNpX2NvZXhfc2NoZWR1bGVyX3RocmVhZGAsIHNpbmNlIHRoZXkncmUgdGhlcmUuXG5cblRoZSBmaXJzdCBzdGVwIGlzIGNoZWNraW5nIHdoZXRoZXIgdGhlc2UgZnVuY3Rpb25zIGFyZSBzdGF0aWMgb3Igbm90LiBMb29raW5nIGludG8gdGhlIGNvZGUsIGByc2lfdXNiX3J4X3RocmVhZGAgYW5kIGByc2lfc2Rpb19yeF90aHJlYWRgIGFyZSAqbm90KiBzdGF0aWMsIHNvIHRoZXkncmUgZGVmaW5pdGVseSBnb29kIGNhbmRpZGF0ZXMuIEV4Y2VsbGVudCEgTm93IEkgY2hlY2sgYHJzaV90eF9zY2hlZHVsZXJfdGhyZWFkYCBhbmQgYHJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWRgLiBUaGV5ICphcmUqIHN0YXRpYywgYnV0IHNpbmNlIHRoZXkncmUgcGFzc2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzIHRvIGByc2lfY3JlYXRlX2t0aHJlYWRgLCB0aGV5IGFyZSBsaWtlbHkgbm90IGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBUaGVzZSB3aWxsIGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gU3l6a2FsbGVyIG1pZ2h0IHByZWZlciBub24tc3RhdGljIHN5bWJvbHMsIGJ1dCBzaW5jZSB0aGV5IGFyZW4ndCBpbmxpbmVkLCBpdCBzaG91bGQgYmUgYWJsZSB0byByZXNvbHZlIHRoZW0uXG5cbkkgd2lsbCBpbmNsdWRlIGFsbCBvZiB0aGVtIGluaXRpYWxseSwganVzdCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlLCBiZWNhdXNlIHRoZXkgYWxsIHNvdW5kIGxpa2UgZ3JlYXQgdGFyZ2V0czogYHJzaV91c2JfcnhfdGhyZWFkYCwgYHJzaV9zZGlvX3J4X3RocmVhZGAsIGByc2lfdHhfc2NoZWR1bGVyX3RocmVhZGAsIGFuZCBgcnNpX2NvZXhfc2NoZWR1bGVyX3RocmVhZGAuIFRoZSBVU0IgUlggdGhyZWFkIGlzIHByb2JhYmx5IHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LlxuXG5JIHdhbnQgdG8gc2VlIGlmIGFueSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyBjYWxsIHRoZXNlIG9yIGFyZSBjbG9zZWx5IHJlbGF0ZWQuIEkgY29uZmlybSB0aGF0IGByc2lfdXNiX2luaXRfcnhgIGNhbGxzIGByc2lfY3JlYXRlX2t0aHJlYWRgIHdpdGggYHJzaV91c2JfcnhfdGhyZWFkYCwgYHJzaV85MXhfaW5pdGAgY2FsbHMgYHJzaV9jcmVhdGVfa3RocmVhZGAgd2l0aCBgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWRgLCBhbmQgYHJzaV9jb2V4X2F0dGFjaGAgY2FsbHMgYHJzaV9jcmVhdGVfa3RocmVhZGAgd2l0aCBgcnNpX2NvZXhfc2NoZWR1bGVyX3RocmVhZGAuIFRoaXMgaXMgYSBzb2xpZCBzaWduIHRoYXQgYWxsIG9mIHRoZW0gYXJlIHZhbGlkIGZ1enppbmcgdGFyZ2V0cy5cblxuU28sIGhlcmUncyBteSBsaXN0IG9mIEZvY3VzU3ltYm9sczogYHJzaV91c2JfcnhfdGhyZWFkYCwgYHJzaV9zZGlvX3J4X3RocmVhZGAsIGByc2lfdHhfc2NoZWR1bGVyX3RocmVhZGAsIGByc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkYC5cblxuTmV4dCwgSSBuZWVkIHRvIGxvb2sgYXQgdGhlIGNvbmZpZyBvcHRpb25zLiBMZXQncyBzZWUuLi4gYE1BQzgwMjExYCwgYFVTQmAsIGBCVGAsIGBXTEFOX1ZFTkRPUl9SU0lgLCBgUlNJXzkxWGAsIGBSU0lfVVNCYCwgYFJTSV9DT0VYYCwgYFJTSV9TRElPYC4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYFJTSV9TRElPYCBkZXBlbmRzIG9uIGBNTUNgLCBzbyBJIG11c3QgaW5jbHVkZSB0aGF0IGFzIHdlbGwuXG5cbkhlcmUgYXJlIHRoZSByZXF1aXJlZCBjb25maWdzOlxuYE1BQzgwMjExYFxuYFVTQmBcbmBCVGBcbmBNTUNgXG5gV0xBTl9WRU5ET1JfUlNJYFxuYFJTSV85MVhgXG5gUlNJX1VTQmBcbmBSU0lfQ09FWGBcbmBSU0lfU0RJT2BcblxuT2theSwgYW5kIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBkZXBlbmRlbmNpZXMuIGBSU0lfQ09FWGAgcmVxdWlyZXMgYEJUYCwgYFJTSV85MVhgIG5lZWRzIGBNQUM4MDIxMWAsIGBSU0lfVVNCYCBuZWVkcyBgVVNCYCBhbmQgYFJTSV85MVhgLCBhbmQgYFJTSV9TRElPYCBuZWVkcyBgTU1DYCBhbmQgYFJTSV85MVhgLiBBbGwgbG9va3MgZ29vZCB0aGVyZS5cblxuSSBhbSBjb25maWRlbnQgdGhhdCB0aGlzIGlzIGEgdmFsaWQgYXBwcm9hY2gsIGFuZCB0aGVzZSB0aHJlYWRzIGFyZSB0aGUgYmVzdCBwbGFjZXMgdG8gc3RhcnQgZnV6emluZyB0byBleHBvc2UgYW55IHBvdGVudGlhbCBidWdzLCBhcyB0aGlzIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBpc3N1ZSB3aGVyZSB0aHJlYWQgc2lnbmF0dXJlcyB3ZXJlIGluY29ycmVjdCwgYW5kIHNob3VsZCBiZSBmdXp6LXRlc3RlZC5cblxuVGhlIG5hbWVzIEkgaWRlbnRpZmllZCBhcmUgY29ycmVjdCwgYW5kIEkgd2lsbCBub3cgc2V0IHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDQ0LCJPdXRwdXRUb2tlbnMiOjI2MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTA6MzE6MDMuOTM5NzAwODkxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM5NzQzMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIkJUXCIsXG4gICAgXCJNTUNcIixcbiAgICBcIldMQU5fVkVORE9SX1JTSVwiLFxuICAgIFwiUlNJXzkxWFwiLFxuICAgIFwiUlNJX1VTQlwiLFxuICAgIFwiUlNJX0NPRVhcIixcbiAgICBcIlJTSV9TRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnNpX3VzYl9yeF90aHJlYWRcIixcbiAgICBcInJzaV9zZGlvX3J4X3RocmVhZFwiLFxuICAgIFwicnNpX3R4X3NjaGVkdWxlcl90aHJlYWRcIixcbiAgICBcInJzaV9jb2V4X3NjaGVkdWxlcl90aHJlYWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlcyBvZiBzZXZlcmFsIGt0aHJlYWQgZnVuY3Rpb25zIChyc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkLCByc2lfdHhfc2NoZWR1bGVyX3RocmVhZCwgcnNpX3NkaW9fcnhfdGhyZWFkLCByc2lfdXNiX3J4X3RocmVhZCkgaW4gdGhlIFJlZHBpbmUgU2lnbmFscyBJbmMuIChSU0kpIHdpcmVsZXNzIGRyaXZlciB0byBtYXRjaCB0aGUgZXhwZWN0ZWQgYGludCAoKikodm9pZCAqKWAgdHlwZSBmb3Iga3RocmVhZCBjcmVhdGlvbi4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgQ29udHJvbC1GbG93IEludGVncml0eSAoQ0ZJKSBwYW5pY3Mgd2hlbiB0aGVzZSB0aHJlYWRzIGFyZSBzcGF3bmVkLiBTaW5jZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgVVNCL1NESU8gZHJpdmVyLCBpdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGUgdGhyZWFkcyBleGVjdXRlIGNvcnJlY3RseSB3aXRob3V0IHRyaWdnZXJpbmcgb3RoZXIgYnVncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJCVFwiLFxuICAgIFwiTU1DXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9SU0lcIixcbiAgICBcIlJTSV85MVhcIixcbiAgICBcIlJTSV9VU0JcIixcbiAgICBcIlJTSV9DT0VYXCIsXG4gICAgXCJSU0lfU0RJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJzaV91c2JfcnhfdGhyZWFkXCIsXG4gICAgXCJyc2lfc2Rpb19yeF90aHJlYWRcIixcbiAgICBcInJzaV90eF9zY2hlZHVsZXJfdGhyZWFkXCIsXG4gICAgXCJyc2lfY29leF9zY2hlZHVsZXJfdGhyZWFkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXMgb2Ygc2V2ZXJhbCBrdGhyZWFkIGZ1bmN0aW9ucyAocnNpX2NvZXhfc2NoZWR1bGVyX3RocmVhZCwgcnNpX3R4X3NjaGVkdWxlcl90aHJlYWQsIHJzaV9zZGlvX3J4X3RocmVhZCwgcnNpX3VzYl9yeF90aHJlYWQpIGluIHRoZSBSZWRwaW5lIFNpZ25hbHMgSW5jLiAoUlNJKSB3aXJlbGVzcyBkcml2ZXIgdG8gbWF0Y2ggdGhlIGV4cGVjdGVkIGBpbnQgKCopKHZvaWQgKilgIHR5cGUgZm9yIGt0aHJlYWQgY3JlYXRpb24uIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIENvbnRyb2wtRmxvdyBJbnRlZ3JpdHkgKENGSSkgcGFuaWNzIHdoZW4gdGhlc2UgdGhyZWFkcyBhcmUgc3Bhd25lZC4gU2luY2UgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIFVTQi9TRElPIGRyaXZlciwgaXQgaXMgd29ydGggZnV6emluZyB0byBlbnN1cmUgdGhlIHRocmVhZHMgZXhlY3V0ZSBjb3JyZWN0bHkgd2l0aG91dCB0cmlnZ2VyaW5nIG90aGVyIGJ1Z3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jddn[1] Phase: Succeeded StartedAt: 2026-08-04 10:31:15 +0000 UTC FinishedAt: 2026-08-04 10:31:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-04 10:31:15 +0000 UTC FinishedAt: 2026-08-04 10:31:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[2] Phase: Succeeded StartedAt: 2026-08-04 10:31:15 +0000 UTC FinishedAt: 2026-08-04 11:18:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-04 10:31:15 +0000 UTC FinishedAt: 2026-08-04 11:18:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-04 10:31:15 +0000 UTC FinishedAt: 2026-08-04 10:31:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-04 10:31:15 +0000 UTC FinishedAt: 2026-08-04 10:31:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5jddn/series-workflow5jddn-convert-artifact-2733260062/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-04 10:31:26 +0000 UTC FinishedAt: 2026-08-04 10:56:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-04 10:31:26 +0000 UTC FinishedAt: 2026-08-04 10:56:13 +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:*32888e72-b465-4522-9a5e-dbbef26a8346,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-workflow5jddn/series-workflow5jddn-convert-artifact-2733260062/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": "aa5ee4b9-f04b-4e17-bb11-e2f56f1dc451", "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-workflow5jddn/series-workflow5jddn-build-action-3241673220/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-04 10:31:26 +0000 UTC FinishedAt: 2026-08-04 10:56:03 +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:*32888e72-b465-4522-9a5e-dbbef26a8346,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-workflow5jddn/series-workflow5jddn-convert-artifact-2733260062/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": "aa5ee4b9-f04b-4e17-bb11-e2f56f1dc451", "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-workflow5jddn/series-workflow5jddn-build-action-3241673220/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-04 10:56:13 +0000 UTC FinishedAt: 2026-08-04 10:56:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-04 10:56:13 +0000 UTC FinishedAt: 2026-08-04 10:56:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-04 10:56:13 +0000 UTC FinishedAt: 2026-08-04 10:56:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-04 10:56:13 +0000 UTC FinishedAt: 2026-08-04 10:56:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5jddn/series-workflow5jddn-convert-artifact-1647617489/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-04 10:56:23 +0000 UTC FinishedAt: 2026-08-04 10:58:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-04 10:56:23 +0000 UTC FinishedAt: 2026-08-04 10:58:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*aa5ee4b9-f04b-4e17-bb11-e2f56f1dc451,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-workflow5jddn/series-workflow5jddn-build-action-3241673220/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-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-04 10:58:33 +0000 UTC FinishedAt: 2026-08-04 10:58:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-04 10:58:33 +0000 UTC FinishedAt: 2026-08-04 10:58:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-04 10:58:33 +0000 UTC FinishedAt: 2026-08-04 11:14:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-04 10:58:33 +0000 UTC FinishedAt: 2026-08-04 11:14:41 +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:*32888e72-b465-4522-9a5e-dbbef26a8346,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-workflow5jddn/series-workflow5jddn-convert-artifact-1647617489/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": "dd79eb77-841c-45e0-985d-6a1a4ba3454c", "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-workflow5jddn/series-workflow5jddn-build-action-2000587677/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-04 10:58:33 +0000 UTC FinishedAt: 2026-08-04 11:14:31 +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:*32888e72-b465-4522-9a5e-dbbef26a8346,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-workflow5jddn/series-workflow5jddn-convert-artifact-1647617489/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": "dd79eb77-841c-45e0-985d-6a1a4ba3454c", "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-workflow5jddn/series-workflow5jddn-build-action-2000587677/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-04 11:14:41 +0000 UTC FinishedAt: 2026-08-04 11:14:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-04 11:14:41 +0000 UTC FinishedAt: 2026-08-04 11:14:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-04 11:14:41 +0000 UTC FinishedAt: 2026-08-04 11:16:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-04 11:14:41 +0000 UTC FinishedAt: 2026-08-04 11:16:28 +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:*dd79eb77-841c-45e0-985d-6a1a4ba3454c,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-workflow5jddn/series-workflow5jddn-build-action-2000587677/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-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-04 11:16:38 +0000 UTC FinishedAt: 2026-08-04 11:18:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-04 11:16:38 +0000 UTC FinishedAt: 2026-08-04 11:18:01 +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":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"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:*aa5ee4b9-f04b-4e17-bb11-e2f56f1dc451,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dd79eb77-841c-45e0-985d-6a1a4ba3454c,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-workflow5jddn/series-workflow5jddn-build-action-3241673220/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-workflow5jddn/series-workflow5jddn-build-action-2000587677/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-04 11:16:38 +0000 UTC FinishedAt: 2026-08-04 11:16:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-04 11:16:38 +0000 UTC FinishedAt: 2026-08-04 11:16:44 +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":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"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-workflow5jddn/series-workflow5jddn-convert-artifact-1638680838/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-04 11:16:38 +0000 UTC FinishedAt: 2026-08-04 11:16:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-04 11:16:38 +0000 UTC FinishedAt: 2026-08-04 11:16:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-04 11:16:38 +0000 UTC FinishedAt: 2026-08-04 11:16:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-04 11:16:48 +0000 UTC FinishedAt: 2026-08-04 11:18:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5jddn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_usb_rx_thread","rsi_sdio_rx_thread","rsi_tx_scheduler_thread","rsi_coex_scheduler_thread"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","USB","BT","MMC","WLAN_VENDOR_RSI","RSI_91X","RSI_USB","RSI_COEX","RSI_SDIO"],"series_id":"0d38e605-c53b-420a-8d8c-bdd4e9df9db9","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-04 11:16:48 +0000 UTC FinishedAt: 2026-08-04 11:17:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*aa5ee4b9-f04b-4e17-bb11-e2f56f1dc451,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*dd79eb77-841c-45e0-985d-6a1a4ba3454c,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-workflow5jddn/series-workflow5jddn-build-action-3241673220/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-workflow5jddn/series-workflow5jddn-build-action-2000587677/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-workflow5jddn/series-workflow5jddn-convert-artifact-1638680838/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,}