Name: series-workflow945f9 Phase: Succeeded StartedAt: 2026-06-30 17:51:26 +0000 UTC FinishedAt: 2026-06-30 20:35:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[0] Phase: Succeeded StartedAt: 2026-06-30 17:51:26 +0000 UTC FinishedAt: 2026-06-30 18:00:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[0].run-triage Phase: Succeeded StartedAt: 2026-06-30 17:51:26 +0000 UTC FinishedAt: 2026-06-30 18:00:40 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "7de6ae9e12207ec146f2f3f1e58d1a99317e88bc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K_HTC", "USB_TMC", "USB_SERIAL", "USB_SERIAL_SPCP8X5" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "7de6ae9e12207ec146f2f3f1e58d1a99317e88bc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K_HTC", "USB_TMC", "USB_SERIAL", "USB_SERIAL_SPCP8X5" ], "series_id": "b4a8f308-37d5-4dc5-a05d-9a4924780423" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "usb_probe_interface", "usb_match_dynamic_id", "ath9k_hif_usb_probe", "usbtmc_probe", "spcp8x5_probe", "spcp8x5_port_probe" ], "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+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtVU0JfVE1DJiMzNDssCiAgICAmIzM0O1VTQl9TRVJJQUwmIzM0OywKICAgICYjMzQ7VVNCX1NFUklBTF9TUENQOFg1JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXNiX3Byb2JlX2ludGVyZmFjZSYjMzQ7LAogICAgJiMzNDt1c2JfbWF0Y2hfZHluYW1pY19pZCYjMzQ7LAogICAgJiMzNDthdGg5a19oaWZfdXNiX3Byb2JlJiMzNDssCiAgICAmIzM0O3VzYnRtY19wcm9iZSYjMzQ7LAogICAgJiMzNDtzcGNwOHg1X3Byb2JlJiMzNDssCiAgICAmIzM0O3NwY3A4eDVfcG9ydF9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGhvdyBgdXNiX2RldmljZV9pZGAgaXMgcGFzc2VkIHRvIFVTQiBkcml2ZXJzJiMzOTsgYHByb2JlYCBmdW5jdGlvbnMuIEl0IGlzIG5vdyBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrIGluIGB1c2JfcHJvYmVfaW50ZXJmYWNlYCBhbmQgcGFzc2VkIGFzIGEgdGVtcG9yYXJ5IHBvaW50ZXIsIGluc3RlYWQgb2YgYSBwZXJzaXN0ZW50IHBvaW50ZXIuIFRoaXMgYWZmZWN0cyBVU0IgY29yZSBtYXRjaGluZyBhbmQgc2V2ZXJhbCBVU0IgZHJpdmVycyAoYGF0aDlrYCwgYHVzYnRtY2AsIGBzcGNwOHg1YCksIHdoaWNoIGhhZCB0byBiZSB1cGRhdGVkIHRvIHN0b3Agc3RvcmluZyB0aGUgcG9pbnRlci4gRnV6emluZyBVU0IgZGV2aWNlIGVudW1lcmF0aW9uIGNhbiB0cmlnZ2VyIHRoZXNlIHBhdGhzIGFuZCB2ZXJpZnkgdGhhdCBubyB1c2UtYWZ0ZXItZnJlZSBvciBvdGhlciBtZW1vcnkgaXNzdWVzIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMWY4MTNiMzRiNGJmZWU3OTZhNmQwNmRlYjhiYmFlODMyOTA2ZGM2ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDE3OjU4OjE3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG5pbmRleCA1MTUyNjdmNDhkODAzZS4uZDY1YzA5YzJiN2ZjYzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG5AQCAtMTA4Nyw3ICYjNDM7MTA4Nyw3IEBAIHN0YXRpYyBpbnQgYXRoOWtfaGlmX3VzYl9kb3dubG9hZF9mdyhzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXG4gXHR9XG4gXHRrZnJlZShidWYpO1xuIFxuLVx0aWYgKElTX0FSNzAxMF9ERVZJQ0UoaGlmX2Rldi1cdTAwM2V1c2JfZGV2aWNlX2lkLVx1MDAzZWRyaXZlcl9pbmZvKSlcbiYjNDM7XHRpZiAoSVNfQVI3MDEwX0RFVklDRShoaWZfZGV2LVx1MDAzZWlkX2luZm8pKVxuIFx0XHRmaXJtX29mZnNldCA9IEFSNzAxMF9GSVJNV0FSRV9URVhUO1xuIFx0ZWxzZVxuIFx0XHRmaXJtX29mZnNldCA9IEFSOTI3MV9GSVJNV0FSRV9URVhUO1xuQEAgLTExODIsNyAmIzQzOzExODIsNyBAQCBzdGF0aWMgaW50IGF0aDlrX2hpZl9yZXF1ZXN0X2Zpcm13YXJlKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcbiBcdGlmIChNQUpPUl9WRVJTSU9OX1JFUSA9PSAxIFx1MDAyNlx1MDAyNiBoaWZfZGV2LVx1MDAzZWZ3X21pbm9yX2luZGV4ID09IDMpIHtcbiBcdFx0Y29uc3QgY2hhciAqZmlsZW5hbWU7XG4gXG4tXHRcdGlmIChJU19BUjcwMTBfREVWSUNFKGhpZl9kZXYtXHUwMDNldXNiX2RldmljZV9pZC1cdTAwM2Vkcml2ZXJfaW5mbykpXG4mIzQzO1x0XHRpZiAoSVNfQVI3MDEwX0RFVklDRShoaWZfZGV2LVx1MDAzZWlkX2luZm8pKVxuIFx0XHRcdGZpbGVuYW1lID0gRklSTVdBUkVfQVI3MDEwXzFfMTtcbiBcdFx0ZWxzZVxuIFx0XHRcdGZpbGVuYW1lID0gRklSTVdBUkVfQVI5MjcxO1xuQEAgLTExOTgsNyAmIzQzOzExOTgsNyBAQCBzdGF0aWMgaW50IGF0aDlrX2hpZl9yZXF1ZXN0X2Zpcm13YXJlKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcbiBcbiBcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gXHR9IGVsc2Uge1xuLVx0XHRpZiAoSVNfQVI3MDEwX0RFVklDRShoaWZfZGV2LVx1MDAzZXVzYl9kZXZpY2VfaWQtXHUwMDNlZHJpdmVyX2luZm8pKVxuJiM0MztcdFx0aWYgKElTX0FSNzAxMF9ERVZJQ0UoaGlmX2Rldi1cdTAwM2VpZF9pbmZvKSlcbiBcdFx0XHRjaGlwID0gXCYjMzQ7NzAxMFwmIzM0OztcbiBcdFx0ZWxzZVxuIFx0XHRcdGNoaXAgPSBcJiMzNDs5MjcxXCYjMzQ7O1xuQEAgLTEyNjAsOSAmIzQzOzEyNjAsOSBAQCBzdGF0aWMgdm9pZCBhdGg5a19oaWZfdXNiX2Zpcm13YXJlX2NiKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncsIHZvaWQgKmNvbnRleHQpXG4gXG4gXHRyZXQgPSBhdGg5a19odGNfaHdfaW5pdChoaWZfZGV2LVx1MDAzZWh0Y19oYW5kbGUsXG4gXHRcdFx0XHRcdTAwMjZoaWZfZGV2LVx1MDAzZWludGVyZmFjZS1cdTAwM2VkZXYsXG4tXHRcdFx0XHRoaWZfZGV2LVx1MDAzZXVzYl9kZXZpY2VfaWQtXHUwMDNlaWRQcm9kdWN0LFxuJiM0MztcdFx0XHRcdGhpZl9kZXYtXHUwMDNldWRldi1cdTAwM2VkZXNjcmlwdG9yLmlkUHJvZHVjdCxcbiBcdFx0XHRcdGhpZl9kZXYtXHUwMDNldWRldi1cdTAwM2Vwcm9kdWN0LFxuLVx0XHRcdFx0aGlmX2Rldi1cdTAwM2V1c2JfZGV2aWNlX2lkLVx1MDAzZWRyaXZlcl9pbmZvKTtcbiYjNDM7XHRcdFx0XHRoaWZfZGV2LVx1MDAzZWlkX2luZm8pO1xuIFx0aWYgKHJldCkge1xuIFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHRnb3RvIGVycl9odGNfaHdfaW5pdDtcbkBAIC0xMzc0LDcgJiM0MzsxMzc0LDcgQEAgc3RhdGljIGludCBhdGg5a19oaWZfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsXG4gXG4gXHRoaWZfZGV2LVx1MDAzZXVkZXYgPSB1ZGV2O1xuIFx0aGlmX2Rldi1cdTAwM2VpbnRlcmZhY2UgPSBpbnRlcmZhY2U7XG4tXHRoaWZfZGV2LVx1MDAzZXVzYl9kZXZpY2VfaWQgPSBpZDtcbiYjNDM7XHRoaWZfZGV2LVx1MDAzZWlkX2luZm8gPSBpZC1cdTAwM2Vkcml2ZXJfaW5mbztcbiAjaWZkZWYgQ09ORklHX1BNXG4gXHR1ZGV2LVx1MDAzZXJlc2V0X3Jlc3VtZSA9IDE7XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmhcbmluZGV4IGRjMGIwZmE1YzMyNTc0Li5iM2U3YjBmYjU0Yjg0MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmhcbkBAIC0xMTUsNyAmIzQzOzExNSw3IEBAIHN0cnVjdCBjbWRfYnVmIHtcbiBzdHJ1Y3QgaGlmX2RldmljZV91c2Ige1xuIFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXY7XG4gXHRzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlO1xuLVx0Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnVzYl9kZXZpY2VfaWQ7XG4mIzQzO1x0aW50IGlkX2luZm87XG4gXHRjb25zdCB2b2lkICpmd19kYXRhO1xuIFx0c2l6ZV90IGZ3X3NpemU7XG4gXHRzdHJ1Y3QgY29tcGxldGlvbiBmd19kb25lO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jIGIvZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmNcbmluZGV4IGFmOWFlNTVkYWUxNGUwLi41MWNkOTMyMGE3MzY2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuY1xuQEAgLTcxLDcgJiM0Mzs3MSw2IEBAIHN0cnVjdCB1c2J0bWNfZGV2X2NhcGFiaWxpdGllcyB7XG4gICogYWxsb2NhdGVkIGZvciBlYWNoIFVTQlRNQyBkZXZpY2UgaW4gdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbi5cbiAgKi9cbiBzdHJ1Y3QgdXNidG1jX2RldmljZV9kYXRhIHtcbi1cdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZDtcbiBcdHN0cnVjdCB1c2JfZGV2aWNlICp1c2JfZGV2O1xuIFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGY7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGZpbGVfbGlzdDtcbkBAIC0yMzk0LDcgJiM0MzsyMzkzLDYgQEAgc3RhdGljIGludCB1c2J0bWNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0ZGF0YS1cdTAwM2VpbnRmID0gaW50Zjtcbi1cdGRhdGEtXHUwMDNlaWQgPSBpZDtcbiBcdGRhdGEtXHUwMDNldXNiX2RldiA9IHVzYl9nZXRfZGV2KGludGVyZmFjZV90b191c2JkZXYoaW50ZikpO1xuIFx0dXNiX3NldF9pbnRmZGF0YShpbnRmLCBkYXRhKTtcbiBcdGtyZWZfaW5pdChcdTAwMjZkYXRhLVx1MDAzZWtyZWYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jXG5pbmRleCBmNjMwMDQ0MTcwNThlNi4uYzI2NDEwY2FiZGZlOTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jXG5AQCAtMjI3LDE4ICYjNDM7MjI3LDE5IEBAIHN0YXRpYyB2b2lkIHVzYl9mcmVlX2R5bmlkcyhzdHJ1Y3QgdXNiX2RyaXZlciAqdXNiX2RydilcbiBcdH1cbiB9XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICp1c2JfbWF0Y2hfZHluYW1pY19pZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi1cdFx0XHRcdFx0XHRcdGNvbnN0IHN0cnVjdCB1c2JfZHJpdmVyICpkcnYpXG4mIzQzO3N0YXRpYyBib29sIHVzYl9tYXRjaF9keW5hbWljX2lkKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RyaXZlciAqZHJ2LFxuJiM0MztcdFx0XHRcdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4ge1xuIFx0c3RydWN0IHVzYl9keW5pZCAqZHluaWQ7XG4gXG4gXHRndWFyZChtdXRleCkoXHUwMDI2dXNiX2R5bmlkc19sb2NrKTtcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkoZHluaWQsIFx1MDAyNmRydi1cdTAwM2VkeW5pZHMubGlzdCwgbm9kZSkge1xuIFx0XHRpZiAodXNiX21hdGNoX29uZV9pZChpbnRmLCBcdTAwMjZkeW5pZC1cdTAwM2VpZCkpIHtcbi1cdFx0XHRyZXR1cm4gXHUwMDI2ZHluaWQtXHUwMDNlaWQ7XG4mIzQzO1x0XHRcdCppZCA9IGR5bmlkLVx1MDAzZWlkO1xuJiM0MztcdFx0XHRyZXR1cm4gdHJ1ZTtcbiBcdFx0fVxuIFx0fVxuLVx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbiBcbkBAIC0zMjAsNyAmIzQzOzMyMSw4IEBAIHN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRzdHJ1Y3QgdXNiX2RyaXZlciAqZHJpdmVyID0gdG9fdXNiX2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbiBcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmID0gdG9fdXNiX2ludGVyZmFjZShkZXYpO1xuIFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpO1xuLVx0Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkO1xuJiM0MztcdHN0cnVjdCB1c2JfZGV2aWNlX2lkIGlkO1xuJiM0MztcdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICptYXRjaGVkX2lkO1xuIFx0aW50IGVycm9yID0gLUVOT0RFVjtcbiBcdGludCBscG1fZGlzYWJsZV9lcnJvciA9IC1FTk9ERVY7XG4gXG5AQCAtMzQwLDExICYjNDM7MzQyLDEyIEBAIHN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdHJldHVybiBlcnJvcjtcbiBcdH1cbiBcbi1cdGlkID0gdXNiX21hdGNoX2R5bmFtaWNfaWQoaW50ZiwgZHJpdmVyKTtcbi1cdGlmICghaWQpXG4tXHRcdGlkID0gdXNiX21hdGNoX2lkKGludGYsIGRyaXZlci1cdTAwM2VpZF90YWJsZSk7XG4tXHRpZiAoIWlkKVxuLVx0XHRyZXR1cm4gZXJyb3I7XG4mIzQzO1x0aWYgKCF1c2JfbWF0Y2hfZHluYW1pY19pZChpbnRmLCBkcml2ZXIsIFx1MDAyNmlkKSkge1xuJiM0MztcdFx0bWF0Y2hlZF9pZCA9IHVzYl9tYXRjaF9pZChpbnRmLCBkcml2ZXItXHUwMDNlaWRfdGFibGUpO1xuJiM0MztcdFx0aWYgKCFtYXRjaGVkX2lkKVxuJiM0MztcdFx0XHRyZXR1cm4gZXJyb3I7XG4mIzQzO1x0XHRpZCA9ICptYXRjaGVkX2lkO1xuJiM0MztcdH1cbiBcbiBcdGRldl9kYmcoZGV2LCBcJiMzNDslcyAtIGdvdCBpZFxcblwmIzM0OywgX19mdW5jX18pO1xuIFxuQEAgLTM5Myw3ICYjNDM7Mzk2LDcgQEAgc3RhdGljIGludCB1c2JfcHJvYmVfaW50ZXJmYWNlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdFx0aW50Zi1cdTAwM2VuZWVkc19hbHRzZXR0aW5nMCA9IDA7XG4gXHR9XG4gXG4tXHRlcnJvciA9IGRyaXZlci1cdTAwM2Vwcm9iZShpbnRmLCBpZCk7XG4mIzQzO1x0ZXJyb3IgPSBkcml2ZXItXHUwMDNlcHJvYmUoaW50ZiwgXHUwMDI2aWQpO1xuIFx0aWYgKGVycm9yKVxuIFx0XHRnb3RvIGVycjtcbiBcbkBAIC04OTEsNyAmIzQzOzg5NCw3IEBAIHN0YXRpYyBpbnQgdXNiX2RldmljZV9tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG4gXHR9IGVsc2UgaWYgKGlzX3VzYl9pbnRlcmZhY2UoZGV2KSkge1xuIFx0XHRzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZjtcbiBcdFx0Y29uc3Qgc3RydWN0IHVzYl9kcml2ZXIgKnVzYl9kcnY7XG4tXHRcdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZDtcbiYjNDM7XHRcdHN0cnVjdCB1c2JfZGV2aWNlX2lkIGlkO1xuIFxuIFx0XHQvKiBkZXZpY2UgZHJpdmVycyBuZXZlciBtYXRjaCBpbnRlcmZhY2VzICovXG4gXHRcdGlmIChpc191c2JfZGV2aWNlX2RyaXZlcihkcnYpKVxuQEAgLTkwMCwxMiAmIzQzOzkwMywxMCBAQCBzdGF0aWMgaW50IHVzYl9kZXZpY2VfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuIFx0XHRpbnRmID0gdG9fdXNiX2ludGVyZmFjZShkZXYpO1xuIFx0XHR1c2JfZHJ2ID0gdG9fdXNiX2RyaXZlcihkcnYpO1xuIFxuLVx0XHRpZCA9IHVzYl9tYXRjaF9pZChpbnRmLCB1c2JfZHJ2LVx1MDAzZWlkX3RhYmxlKTtcbi1cdFx0aWYgKGlkKVxuJiM0MztcdFx0aWYgKHVzYl9tYXRjaF9pZChpbnRmLCB1c2JfZHJ2LVx1MDAzZWlkX3RhYmxlKSlcbiBcdFx0XHRyZXR1cm4gMTtcbiBcbi1cdFx0aWQgPSB1c2JfbWF0Y2hfZHluYW1pY19pZChpbnRmLCB1c2JfZHJ2KTtcbi1cdFx0aWYgKGlkKVxuJiM0MztcdFx0aWYgKHVzYl9tYXRjaF9keW5hbWljX2lkKGludGYsIHVzYl9kcnYsIFx1MDAyNmlkKSlcbiBcdFx0XHRyZXR1cm4gMTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuY1xuaW5kZXggYzExZDY0YmYwOGZiYWUuLjBlNzcxNWEwMmRmNGNjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuY1xuQEAgLTEzMywxNCAmIzQzOzEzMywxNCBAQCBzdHJ1Y3Qgc3BjcDh4NV9wcml2YXRlIHtcbiBzdGF0aWMgaW50IHNwY3A4eDVfcHJvYmUoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbCxcbiBcdFx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4ge1xuLVx0dXNiX3NldF9zZXJpYWxfZGF0YShzZXJpYWwsICh2b2lkICopaWQpO1xuJiM0MztcdHVzYl9zZXRfc2VyaWFsX2RhdGEoc2VyaWFsLCAodm9pZCAqKWlkLVx1MDAzZWRyaXZlcl9pbmZvKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IHNwY3A4eDVfcG9ydF9wcm9iZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KVxuIHtcbi1cdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCA9IHVzYl9nZXRfc2VyaWFsX2RhdGEocG9ydC1cdTAwM2VzZXJpYWwpO1xuJiM0MztcdHVuc2lnbmVkIGludCBxdWlya3MgPSAodW5zaWduZWQgaW50KSh1bnNpZ25lZCBsb25nKXVzYl9nZXRfc2VyaWFsX2RhdGEocG9ydC1cdTAwM2VzZXJpYWwpO1xuIFx0c3RydWN0IHNwY3A4eDVfcHJpdmF0ZSAqcHJpdjtcbiBcbiBcdHByaXYgPSBremFsbG9jX29iaigqcHJpdik7XG5AQCAtMTQ4LDcgJiM0MzsxNDgsNyBAQCBzdGF0aWMgaW50IHNwY3A4eDVfcG9ydF9wcm9iZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdHNwaW5fbG9ja19pbml0KFx1MDAyNnByaXYtXHUwMDNlbG9jayk7XG4tXHRwcml2LVx1MDAzZXF1aXJrcyA9IGlkLVx1MDAzZWRyaXZlcl9pbmZvO1xuJiM0MztcdHByaXYtXHUwMDNlcXVpcmtzID0gcXVpcmtzO1xuIFxuIFx0dXNiX3NldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQsIHByaXYpO1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiLmggYi9pbmNsdWRlL2xpbnV4L3VzYi5oXG5pbmRleCAxZGE0YWQxNjEwYmNhMC4uNDlhYjhkYmI4ODVmNjUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3VzYi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3VzYi5oXG5AQCAtMTE4NSw3ICYjNDM7MTE4NSw4IEBAIGV4dGVybiBzc2l6ZV90IHVzYl9zaG93X2R5bmlkcyhzdHJ1Y3QgdXNiX2R5bmlkcyAqZHluaWRzLCBjaGFyICpidWYpO1xuICAqXHRpbnRlcmZhY2UuICBJdCBtYXkgYWxzbyB1c2UgdXNiX3NldF9pbnRlcmZhY2UoKSB0byBzcGVjaWZ5IHRoZVxuICAqXHRhcHByb3ByaWF0ZSBhbHRzZXR0aW5nLiAgSWYgdW53aWxsaW5nIHRvIG1hbmFnZSB0aGUgaW50ZXJmYWNlLFxuICAqXHRyZXR1cm4gLUVOT0RFViwgaWYgZ2VudWluZSBJTyBlcnJvcnMgb2NjdXJyZWQsIGFuIGFwcHJvcHJpYXRlXG4tICpcdG5lZ2F0aXZlIGVycm5vIHZhbHVlLlxuJiM0MzsgKlx0bmVnYXRpdmUgZXJybm8gdmFsdWUuICBUaGUgdXNiX2RldmljZV9pZCBwYXJhbWV0ZXIgaXMgb25seSB2YWxpZCBkdXJpbmdcbiYjNDM7ICpcdHByb2JlLlxuICAqIEBkaXNjb25uZWN0OiBDYWxsZWQgd2hlbiB0aGUgaW50ZXJmYWNlIGlzIG5vIGxvbmdlciBhY2Nlc3NpYmxlLCB1c3VhbGx5XG4gICpcdGJlY2F1c2UgaXRzIGRldmljZSBoYXMgYmVlbiAob3IgaXMgYmVpbmcpIGRpc2Nvbm5lY3RlZCBvciB0aGVcbiAgKlx0ZHJpdmVyIG1vZHVsZSBpcyBiZWluZyB1bmxvYWRlZC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNzo1ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEg5S19IVEMmIzM0OywKICAgICYjMzQ7VVNCX1RNQyYjMzQ7LAogICAgJiMzNDtVU0JfU0VSSUFMJiMzNDssCiAgICAmIzM0O1VTQl9TRVJJQUxfU1BDUDhYNSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VzYl9wcm9iZV9pbnRlcmZhY2UmIzM0OywKICAgICYjMzQ7dXNiX21hdGNoX2R5bmFtaWNfaWQmIzM0OywKICAgICYjMzQ7YXRoOWtfaGlmX3VzYl9wcm9iZSYjMzQ7LAogICAgJiMzNDt1c2J0bWNfcHJvYmUmIzM0OywKICAgICYjMzQ7c3BjcDh4NV9wcm9iZSYjMzQ7LAogICAgJiMzNDtzcGNwOHg1X3BvcnRfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBob3cgYHVzYl9kZXZpY2VfaWRgIGlzIHBhc3NlZCB0byBVU0IgZHJpdmVycyYjMzk7IGBwcm9iZWAgZnVuY3Rpb25zLiBJdCBpcyBub3cgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBpbiBgdXNiX3Byb2JlX2ludGVyZmFjZWAgYW5kIHBhc3NlZCBhcyBhIHRlbXBvcmFyeSBwb2ludGVyLCBpbnN0ZWFkIG9mIGEgcGVyc2lzdGVudCBwb2ludGVyLiBUaGlzIGFmZmVjdHMgVVNCIGNvcmUgbWF0Y2hpbmcgYW5kIHNldmVyYWwgVVNCIGRyaXZlcnMgKGBhdGg5a2AsIGB1c2J0bWNgLCBgc3BjcDh4NWApLCB3aGljaCBoYWQgdG8gYmUgdXBkYXRlZCB0byBzdG9wIHN0b3JpbmcgdGhlIHBvaW50ZXIuIEZ1enppbmcgVVNCIGRldmljZSBlbnVtZXJhdGlvbiBjYW4gdHJpZ2dlciB0aGVzZSBwYXRocyBhbmQgdmVyaWZ5IHRoYXQgbm8gdXNlLWFmdGVyLWZyZWUgb3Igb3RoZXIgbWVtb3J5IGlzc3VlcyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMWY4MTNiMzRiNGJmZWU3OTZhNmQwNmRlYjhiYmFlODMyOTA2ZGM2ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDMwIDE3OjU4OjE3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMKaW5kZXggNTE1MjY3ZjQ4ZDgwM2UuLmQ2NWMwOWMyYjdmY2M0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMKQEAgLTEwODcsNyAmIzQzOzEwODcsNyBAQCBzdGF0aWMgaW50IGF0aDlrX2hpZl91c2JfZG93bmxvYWRfZncoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2KQogCX0KIAlrZnJlZShidWYpOwogCi0JaWYgKElTX0FSNzAxMF9ERVZJQ0UoaGlmX2Rldi0mZ3Q7dXNiX2RldmljZV9pZC0mZ3Q7ZHJpdmVyX2luZm8pKQomIzQzOwlpZiAoSVNfQVI3MDEwX0RFVklDRShoaWZfZGV2LSZndDtpZF9pbmZvKSkKIAkJZmlybV9vZmZzZXQgPSBBUjcwMTBfRklSTVdBUkVfVEVYVDsKIAllbHNlCiAJCWZpcm1fb2Zmc2V0ID0gQVI5MjcxX0ZJUk1XQVJFX1RFWFQ7CkBAIC0xMTgyLDcgJiM0MzsxMTgyLDcgQEAgc3RhdGljIGludCBhdGg5a19oaWZfcmVxdWVzdF9maXJtd2FyZShzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsCiAJaWYgKE1BSk9SX1ZFUlNJT05fUkVRID09IDEgJmFtcDsmYW1wOyBoaWZfZGV2LSZndDtmd19taW5vcl9pbmRleCA9PSAzKSB7CiAJCWNvbnN0IGNoYXIgKmZpbGVuYW1lOwogCi0JCWlmIChJU19BUjcwMTBfREVWSUNFKGhpZl9kZXYtJmd0O3VzYl9kZXZpY2VfaWQtJmd0O2RyaXZlcl9pbmZvKSkKJiM0MzsJCWlmIChJU19BUjcwMTBfREVWSUNFKGhpZl9kZXYtJmd0O2lkX2luZm8pKQogCQkJZmlsZW5hbWUgPSBGSVJNV0FSRV9BUjcwMTBfMV8xOwogCQllbHNlCiAJCQlmaWxlbmFtZSA9IEZJUk1XQVJFX0FSOTI3MTsKQEAgLTExOTgsNyAmIzQzOzExOTgsNyBAQCBzdGF0aWMgaW50IGF0aDlrX2hpZl9yZXF1ZXN0X2Zpcm13YXJlKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldiwKIAogCQlyZXR1cm4gLUVOT0VOVDsKIAl9IGVsc2UgewotCQlpZiAoSVNfQVI3MDEwX0RFVklDRShoaWZfZGV2LSZndDt1c2JfZGV2aWNlX2lkLSZndDtkcml2ZXJfaW5mbykpCiYjNDM7CQlpZiAoSVNfQVI3MDEwX0RFVklDRShoaWZfZGV2LSZndDtpZF9pbmZvKSkKIAkJCWNoaXAgPSAmIzM0OzcwMTAmIzM0OzsKIAkJZWxzZQogCQkJY2hpcCA9ICYjMzQ7OTI3MSYjMzQ7OwpAQCAtMTI2MCw5ICYjNDM7MTI2MCw5IEBAIHN0YXRpYyB2b2lkIGF0aDlrX2hpZl91c2JfZmlybXdhcmVfY2IoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdywgdm9pZCAqY29udGV4dCkKIAogCXJldCA9IGF0aDlrX2h0Y19od19pbml0KGhpZl9kZXYtJmd0O2h0Y19oYW5kbGUsCiAJCQkJJmFtcDtoaWZfZGV2LSZndDtpbnRlcmZhY2UtJmd0O2RldiwKLQkJCQloaWZfZGV2LSZndDt1c2JfZGV2aWNlX2lkLSZndDtpZFByb2R1Y3QsCiYjNDM7CQkJCWhpZl9kZXYtJmd0O3VkZXYtJmd0O2Rlc2NyaXB0b3IuaWRQcm9kdWN0LAogCQkJCWhpZl9kZXYtJmd0O3VkZXYtJmd0O3Byb2R1Y3QsCi0JCQkJaGlmX2Rldi0mZ3Q7dXNiX2RldmljZV9pZC0mZ3Q7ZHJpdmVyX2luZm8pOwomIzQzOwkJCQloaWZfZGV2LSZndDtpZF9pbmZvKTsKIAlpZiAocmV0KSB7CiAJCXJldCA9IC1FSU5WQUw7CiAJCWdvdG8gZXJyX2h0Y19od19pbml0OwpAQCAtMTM3NCw3ICYjNDM7MTM3NCw3IEBAIHN0YXRpYyBpbnQgYXRoOWtfaGlmX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLAogCiAJaGlmX2Rldi0mZ3Q7dWRldiA9IHVkZXY7CiAJaGlmX2Rldi0mZ3Q7aW50ZXJmYWNlID0gaW50ZXJmYWNlOwotCWhpZl9kZXYtJmd0O3VzYl9kZXZpY2VfaWQgPSBpZDsKJiM0MzsJaGlmX2Rldi0mZ3Q7aWRfaW5mbyA9IGlkLSZndDtkcml2ZXJfaW5mbzsKICNpZmRlZiBDT05GSUdfUE0KIAl1ZGV2LSZndDtyZXNldF9yZXN1bWUgPSAxOwogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaAppbmRleCBkYzBiMGZhNWMzMjU3NC4uYjNlN2IwZmI1NGI4NDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaApAQCAtMTE1LDcgJiM0MzsxMTUsNyBAQCBzdHJ1Y3QgY21kX2J1ZiB7CiBzdHJ1Y3QgaGlmX2RldmljZV91c2IgewogCXN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2OwogCXN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7Ci0JY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnVzYl9kZXZpY2VfaWQ7CiYjNDM7CWludCBpZF9pbmZvOwogCWNvbnN0IHZvaWQgKmZ3X2RhdGE7CiAJc2l6ZV90IGZ3X3NpemU7CiAJc3RydWN0IGNvbXBsZXRpb24gZndfZG9uZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jIGIvZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmMKaW5kZXggYWY5YWU1NWRhZTE0ZTAuLjUxY2Q5MzIwYTczNjZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYwpAQCAtNzEsNyAmIzQzOzcxLDYgQEAgc3RydWN0IHVzYnRtY19kZXZfY2FwYWJpbGl0aWVzIHsKICAqIGFsbG9jYXRlZCBmb3IgZWFjaCBVU0JUTUMgZGV2aWNlIGluIHRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24uCiAgKi8KIHN0cnVjdCB1c2J0bWNfZGV2aWNlX2RhdGEgewotCWNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZDsKIAlzdHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldjsKIAlzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZjsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGZpbGVfbGlzdDsKQEAgLTIzOTQsNyAmIzQzOzIzOTMsNiBAQCBzdGF0aWMgaW50IHVzYnRtY19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlkYXRhLSZndDtpbnRmID0gaW50ZjsKLQlkYXRhLSZndDtpZCA9IGlkOwogCWRhdGEtJmd0O3VzYl9kZXYgPSB1c2JfZ2V0X2RldihpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpKTsKIAl1c2Jfc2V0X2ludGZkYXRhKGludGYsIGRhdGEpOwogCWtyZWZfaW5pdCgmYW1wO2RhdGEtJmd0O2tyZWYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYyBiL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmMKaW5kZXggZjYzMDA0NDE3MDU4ZTYuLmMyNjQxMGNhYmRmZTk1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmMKQEAgLTIyNywxOCAmIzQzOzIyNywxOSBAQCBzdGF0aWMgdm9pZCB1c2JfZnJlZV9keW5pZHMoc3RydWN0IHVzYl9kcml2ZXIgKnVzYl9kcnYpCiAJfQogfQogCi1zdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnVzYl9tYXRjaF9keW5hbWljX2lkKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLAotCQkJCQkJCWNvbnN0IHN0cnVjdCB1c2JfZHJpdmVyICpkcnYpCiYjNDM7c3RhdGljIGJvb2wgdXNiX21hdGNoX2R5bmFtaWNfaWQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZHJpdmVyICpkcnYsCiYjNDM7CQkJCSBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpCiB7CiAJc3RydWN0IHVzYl9keW5pZCAqZHluaWQ7CiAKIAlndWFyZChtdXRleCkoJmFtcDt1c2JfZHluaWRzX2xvY2spOwogCWxpc3RfZm9yX2VhY2hfZW50cnkoZHluaWQsICZhbXA7ZHJ2LSZndDtkeW5pZHMubGlzdCwgbm9kZSkgewogCQlpZiAodXNiX21hdGNoX29uZV9pZChpbnRmLCAmYW1wO2R5bmlkLSZndDtpZCkpIHsKLQkJCXJldHVybiAmYW1wO2R5bmlkLSZndDtpZDsKJiM0MzsJCQkqaWQgPSBkeW5pZC0mZ3Q7aWQ7CiYjNDM7CQkJcmV0dXJuIHRydWU7CiAJCX0KIAl9Ci0JcmV0dXJuIE5VTEw7CiYjNDM7CXJldHVybiBmYWxzZTsKIH0KIAogCkBAIC0zMjAsNyAmIzQzOzMyMSw4IEBAIHN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJc3RydWN0IHVzYl9kcml2ZXIgKmRyaXZlciA9IHRvX3VzYl9kcml2ZXIoZGV2LSZndDtkcml2ZXIpOwogCXN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmID0gdG9fdXNiX2ludGVyZmFjZShkZXYpOwogCXN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRmKTsKLQljb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQ7CiYjNDM7CXN0cnVjdCB1c2JfZGV2aWNlX2lkIGlkOwomIzQzOwljb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqbWF0Y2hlZF9pZDsKIAlpbnQgZXJyb3IgPSAtRU5PREVWOwogCWludCBscG1fZGlzYWJsZV9lcnJvciA9IC1FTk9ERVY7CiAKQEAgLTM0MCwxMSAmIzQzOzM0MiwxMiBAQCBzdGF0aWMgaW50IHVzYl9wcm9iZV9pbnRlcmZhY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCQlyZXR1cm4gZXJyb3I7CiAJfQogCi0JaWQgPSB1c2JfbWF0Y2hfZHluYW1pY19pZChpbnRmLCBkcml2ZXIpOwotCWlmICghaWQpCi0JCWlkID0gdXNiX21hdGNoX2lkKGludGYsIGRyaXZlci0mZ3Q7aWRfdGFibGUpOwotCWlmICghaWQpCi0JCXJldHVybiBlcnJvcjsKJiM0MzsJaWYgKCF1c2JfbWF0Y2hfZHluYW1pY19pZChpbnRmLCBkcml2ZXIsICZhbXA7aWQpKSB7CiYjNDM7CQltYXRjaGVkX2lkID0gdXNiX21hdGNoX2lkKGludGYsIGRyaXZlci0mZ3Q7aWRfdGFibGUpOwomIzQzOwkJaWYgKCFtYXRjaGVkX2lkKQomIzQzOwkJCXJldHVybiBlcnJvcjsKJiM0MzsJCWlkID0gKm1hdGNoZWRfaWQ7CiYjNDM7CX0KIAogCWRldl9kYmcoZGV2LCAmIzM0OyVzIC0gZ290IGlkXG4mIzM0OywgX19mdW5jX18pOwogCkBAIC0zOTMsNyAmIzQzOzM5Niw3IEBAIHN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCWludGYtJmd0O25lZWRzX2FsdHNldHRpbmcwID0gMDsKIAl9CiAKLQllcnJvciA9IGRyaXZlci0mZ3Q7cHJvYmUoaW50ZiwgaWQpOwomIzQzOwllcnJvciA9IGRyaXZlci0mZ3Q7cHJvYmUoaW50ZiwgJmFtcDtpZCk7CiAJaWYgKGVycm9yKQogCQlnb3RvIGVycjsKIApAQCAtODkxLDcgJiM0Mzs4OTQsNyBAQCBzdGF0aWMgaW50IHVzYl9kZXZpY2VfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KQogCX0gZWxzZSBpZiAoaXNfdXNiX2ludGVyZmFjZShkZXYpKSB7CiAJCXN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmOwogCQljb25zdCBzdHJ1Y3QgdXNiX2RyaXZlciAqdXNiX2RydjsKLQkJY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkOwomIzQzOwkJc3RydWN0IHVzYl9kZXZpY2VfaWQgaWQ7CiAKIAkJLyogZGV2aWNlIGRyaXZlcnMgbmV2ZXIgbWF0Y2ggaW50ZXJmYWNlcyAqLwogCQlpZiAoaXNfdXNiX2RldmljZV9kcml2ZXIoZHJ2KSkKQEAgLTkwMCwxMiAmIzQzOzkwMywxMCBAQCBzdGF0aWMgaW50IHVzYl9kZXZpY2VfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KQogCQlpbnRmID0gdG9fdXNiX2ludGVyZmFjZShkZXYpOwogCQl1c2JfZHJ2ID0gdG9fdXNiX2RyaXZlcihkcnYpOwogCi0JCWlkID0gdXNiX21hdGNoX2lkKGludGYsIHVzYl9kcnYtJmd0O2lkX3RhYmxlKTsKLQkJaWYgKGlkKQomIzQzOwkJaWYgKHVzYl9tYXRjaF9pZChpbnRmLCB1c2JfZHJ2LSZndDtpZF90YWJsZSkpCiAJCQlyZXR1cm4gMTsKIAotCQlpZCA9IHVzYl9tYXRjaF9keW5hbWljX2lkKGludGYsIHVzYl9kcnYpOwotCQlpZiAoaWQpCiYjNDM7CQlpZiAodXNiX21hdGNoX2R5bmFtaWNfaWQoaW50ZiwgdXNiX2RydiwgJmFtcDtpZCkpCiAJCQlyZXR1cm4gMTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9zcGNwOHg1LmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jCmluZGV4IGMxMWQ2NGJmMDhmYmFlLi4wZTc3MTVhMDJkZjRjYyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jCkBAIC0xMzMsMTQgJiM0MzsxMzMsMTQgQEAgc3RydWN0IHNwY3A4eDVfcHJpdmF0ZSB7CiBzdGF0aWMgaW50IHNwY3A4eDVfcHJvYmUoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbCwKIAkJCQkJCWNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCkKIHsKLQl1c2Jfc2V0X3NlcmlhbF9kYXRhKHNlcmlhbCwgKHZvaWQgKilpZCk7CiYjNDM7CXVzYl9zZXRfc2VyaWFsX2RhdGEoc2VyaWFsLCAodm9pZCAqKWlkLSZndDtkcml2ZXJfaW5mbyk7CiAKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBzcGNwOHg1X3BvcnRfcHJvYmUoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCkKIHsKLQljb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQgPSB1c2JfZ2V0X3NlcmlhbF9kYXRhKHBvcnQtJmd0O3NlcmlhbCk7CiYjNDM7CXVuc2lnbmVkIGludCBxdWlya3MgPSAodW5zaWduZWQgaW50KSh1bnNpZ25lZCBsb25nKXVzYl9nZXRfc2VyaWFsX2RhdGEocG9ydC0mZ3Q7c2VyaWFsKTsKIAlzdHJ1Y3Qgc3BjcDh4NV9wcml2YXRlICpwcml2OwogCiAJcHJpdiA9IGt6YWxsb2Nfb2JqKCpwcml2KTsKQEAgLTE0OCw3ICYjNDM7MTQ4LDcgQEAgc3RhdGljIGludCBzcGNwOHg1X3BvcnRfcHJvYmUoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCkKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlzcGluX2xvY2tfaW5pdCgmYW1wO3ByaXYtJmd0O2xvY2spOwotCXByaXYtJmd0O3F1aXJrcyA9IGlkLSZndDtkcml2ZXJfaW5mbzsKJiM0MzsJcHJpdi0mZ3Q7cXVpcmtzID0gcXVpcmtzOwogCiAJdXNiX3NldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQsIHByaXYpOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3VzYi5oIGIvaW5jbHVkZS9saW51eC91c2IuaAppbmRleCAxZGE0YWQxNjEwYmNhMC4uNDlhYjhkYmI4ODVmNjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdXNiLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC91c2IuaApAQCAtMTE4NSw3ICYjNDM7MTE4NSw4IEBAIGV4dGVybiBzc2l6ZV90IHVzYl9zaG93X2R5bmlkcyhzdHJ1Y3QgdXNiX2R5bmlkcyAqZHluaWRzLCBjaGFyICpidWYpOwogICoJaW50ZXJmYWNlLiAgSXQgbWF5IGFsc28gdXNlIHVzYl9zZXRfaW50ZXJmYWNlKCkgdG8gc3BlY2lmeSB0aGUKICAqCWFwcHJvcHJpYXRlIGFsdHNldHRpbmcuICBJZiB1bndpbGxpbmcgdG8gbWFuYWdlIHRoZSBpbnRlcmZhY2UsCiAgKglyZXR1cm4gLUVOT0RFViwgaWYgZ2VudWluZSBJTyBlcnJvcnMgb2NjdXJyZWQsIGFuIGFwcHJvcHJpYXRlCi0gKgluZWdhdGl2ZSBlcnJubyB2YWx1ZS4KJiM0MzsgKgluZWdhdGl2ZSBlcnJubyB2YWx1ZS4gIFRoZSB1c2JfZGV2aWNlX2lkIHBhcmFtZXRlciBpcyBvbmx5IHZhbGlkIGR1cmluZwomIzQzOyAqCXByb2JlLgogICogQGRpc2Nvbm5lY3Q6IENhbGxlZCB3aGVuIHRoZSBpbnRlcmZhY2UgaXMgbm8gbG9uZ2VyIGFjY2Vzc2libGUsIHVzdWFsbHkKICAqCWJlY2F1c2UgaXRzIGRldmljZSBoYXMgYmVlbiAob3IgaXMgYmVpbmcpIGRpc2Nvbm5lY3RlZCBvciB0aGUKICAqCWRyaXZlciBtb2R1bGUgaXMgYmVpbmcgdW5sb2FkZWQuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MzUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMDAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgSW1wYWN0IG9mIHRoZSBVU0IgRHJpdmVyIElEIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGtlcm5lbCBwYXRjaCBzZXJpZXMgaW50cm9kdWNlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHdhcnJhbnQgZnV6emluZy4gVGhlIGZpbGVzIGltcGFjdGVkIOKAkyBgYXRoOWsvaGlmX3VzYi5jYCwgYHVzYnRtYy5jYCwgYGRyaXZlci5jYCwgYHNwY3A4eDUuY2AsIGFuZCBgdXNiLmhgIOKAkyBpbW1lZGlhdGVseSBmbGFnIHRoaXMgYXMgYSBwb3RlbnRpYWxseSBzaWduaWZpY2FudCBhcmVhIGZvciByZXZpZXcsIGVzcGVjaWFsbHkgc2luY2UgYGRyaXZlci5jYCB0b3VjaGVzIHRoZSBVU0IgY29yZS4KCkxvb2tpbmcgY2xvc2VyLCB0aGUga2V5IHNoaWZ0IGlzIGhvdyBgdXNiX2RldmljZV9pZGAgZGF0YSBpcyBoYW5kbGVkIGR1cmluZyB0aGUgVVNCIHByb2JlIHByb2Nlc3MuIEl0IHNlZW1zIHRoZSBwYXRjaCBpcyBtb3ZpbmcgYXdheSBmcm9tIHBhc3NpbmcgYSBwZXJzaXN0ZW50IHBvaW50ZXIgdG8gdGhlIGB1c2JfZGV2aWNlX2lkYCBzdHJ1Y3R1cmUgKGVpdGhlciBmcm9tIHRoZSBkeW5hbWljIElEIGxpc3Qgb3IgdGhlIGRyaXZlciYjMzk7cyBJRCB0YWJsZSkgdG8gcGFzc2luZyBhIHBvaW50ZXIgdG8gYSBsb2NhbGx5LWFsbG9jYXRlZCwgc3RhY2stYmFzZWQgYHVzYl9kZXZpY2VfaWRgLiBEcml2ZXJzIGNhbiBubyBsb25nZXIgc3RvcmUgdGhpcyBwb2ludGVyIGZvciBsYXRlciB1c2U7IHRoZXkmIzM5O3JlIG5vdyBjb21wZWxsZWQgdG8gY29weSB0aGUgZGF0YSB0aGV5IG5lZWQgZnJvbSB0aGUgSUQgZHVyaW5nIHRoZSBgcHJvYmVgIGNhbGwuIFRoaXMgaXMgaW50ZXJlc3Rpbmc6IGl0IGxvb2tzIGxpa2UgdGhleSBhcmUgZml4aW5nIHNvbWUgc3VidGxlIG1lbW9yeSBzYWZldHkgaXNzdWUsIHNwZWNpZmljYWxseSBhIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvLiBUaGlzIG1ha2VzIGl0IG1vcmUgcm9idXN0LCBidXQgaXQgbWlnaHQgaGF2ZSBjaGFuZ2VkIGhvdyBzb21lIGRyaXZlcnMgd2VyZSBkZXBlbmRpbmcgb24gYHVzYl9kZXZpY2VfaWRgIC0gd2hpY2ggbWlnaHQgaW50cm9kdWNlIGEgYnVnLgoKVGhpcyBjaGFuZ2UgaXMgbW9yZSB0aGFuIGNvc21ldGljLiBJdCBhbHRlcnMgY29yZSBVU0IgZHJpdmVyIG1hdGNoaW5nIGFuZCBwcm9iaW5nIGxvZ2ljLCBhbmQgaXQmIzM5O3MgZXNzZW50aWFsIHRvIHJlY29nbml6ZSB0aGF0IHRoaXMgaGFzIGZ1bmN0aW9uYWwgaW1wbGljYXRpb25zLiBXZSYjMzk7dmUgZ290IGBhdGg5a2AsIGB1c2J0bWNgLCBhbmQgYHNwY3A4eDVgIGdldHRpbmcgYWRqdXN0ZWQgdG8gdXNlIHRoaXMgbmV3IHBhdHRlcm4uCgpHaXZlbiB0aGF0IHRoZXNlIGFyZSBVU0IgY29yZSBjaGFuZ2VzLCB0aGUgYW5zd2VyIGlzIGFuIGltbWVkaWF0ZSB5ZXMuIFdlIG5lZWQgdG8gZnV6eiB0aGlzISBXZSBjYW4gdHJpZ2dlciB0aGUgYWZmZWN0ZWQgY29kZSBwYXRocyBieSBmdXp6aW5nIFVTQiBkZXZpY2UgZW51bWVyYXRpb24gdGhyb3VnaCwgZm9yIGluc3RhbmNlLCBgZHVtbXlfaGNkYCBvciBgcmF3LWdhZGdldGAuIFdlIGNhbiBsb29rIGludG8gdHJpZ2dlcmluZyBgdXNiX3Byb2JlX2ludGVyZmFjZWAgYW5kIGFsbCBpdHMgZGVwZW5kZW50cy4KCk5vdywgbGV0JiMzOTtzIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gV2UgZGVmaW5pdGVseSBuZWVkIGBVU0JgIGZvciBnZW5lcmFsIFVTQiBzdXBwb3J0LiBgQVRIOUtfSFRDYCB3aWxsIGJlIHJlbGV2YW50IGZvciB0aGUgYGF0aDlrYCBjaGFuZ2VzLCBgVVNCX1RNQ2AgaXMgbmVlZGVkIGZvciB0aGUgYHVzYnRtY2AgY2hhbmdlcywgYW5kIGBVU0JfU0VSSUFMX1NQQ1A4WDVgIGlzIG5lZWRlZCBmb3IgdGhlIGBzcGNwOHg1YCBjaGFuZ2VzLiBJIHdpbGwgbmVlZCB0byB2ZXJpZnkgdGhvc2UgYXJlIGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTc6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFUSDlLX0hUQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTE1Nj1jb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE3Mjpjb25maWcgQVRIOUtfSFRDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNzo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTkzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBVU0JfVE1DIFZlcmlmaWNhdGlvbioqCgpBbHJpZ2h0LCAqVVNCX1RNQyouIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gcXVpY2tseSBydW4gdGhyb3VnaCBteSBtZW50YWwgY2hlY2tsaXN0LiBCZWZvcmUgZGl2aW5nIGludG8gYW55dGhpbmcgc3BlY2lmaWMsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgcG90ZW50aWFsIHByb2JsZW0uIElzIHRoaXMgYSBzdHJhaWdodGZvcndhcmQgZHJpdmVyIGlzc3VlLCBvciBhcmUgd2UgbG9va2luZyBhdCBzb21ldGhpbmcgZGVlcGVyPyBJcyBpdCB0aGUgaW50ZXJmYWNlIGl0c2VsZiwgdGhlIGluc3RydW1lbnQgb24gdGhlIG90aGVyIGVuZCwgb3IgdGhlIGFwcGxpY2F0aW9uIGNvZGU/IEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgbW9zdCBiYXNpYyBhc3N1bXB0aW9uOiB0aGUgVVNCX1RNQyBjb21tdW5pY2F0aW9uIHByb3RvY29sIGlzIHRoZSB1bmRlcmx5aW5nIGlzc3VlLCBidXQgSSB3YW50IHRvIHN0YXkgZmxleGlibGUuIFRoaXMgd2lsbCBiZSBhIHN5c3RlbWF0aWMgZGlhZ25vc3RpYyBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfVE1DJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvY2xhc3MvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9jbGFzcy9LY29uZmlnPTMxPWNvbmZpZyBVU0JfV0RNXG4tLVxuZHJpdmVycy91c2IvY2xhc3MvS2NvbmZpZy00MC1cbmRyaXZlcnMvdXNiL2NsYXNzL0tjb25maWc6NDE6Y29uZmlnIFVTQl9UTUNcbmRyaXZlcnMvdXNiL2NsYXNzL0tjb25maWctNDItXHR0cmlzdGF0ZSBcJiMzNDtVU0IgVGVzdCBhbmQgTWVhc3VyZW1lbnQgQ2xhc3Mgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4NzgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBVU0JfU0VSSUFMX1NQQ1A4WDUqKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gdGhpcyBVU0JfU0VSSUFMX1NQQ1A4WDUgdGhpbmcuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gb3Igc291cmNlIGNvZGUg4oCTIEkga25vdyB0aGlzIGxpa2VseSByZWZlcmVuY2VzIHNvbWUgc3BlY2lmaWMgaGFyZHdhcmUgb3IgZHJpdmVyLiBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggd2hhdCB0aGlzIGxpa2VseSBpcywgYW5kIGRldGVybWluZSBpZiBpdCBwZXJ0YWlucyB0byBteSBjdXJyZW50IHByb2plY3QuIElzIHRoaXMgYSBjdXN0b20gZHJpdmVyPyBBIHN0YW5kYXJkaXplZCBwcm90b2NvbD8gV2hhdCBwbGF0Zm9ybSBhcmUgd2UgZGlzY3Vzc2luZz8gVGhlIGNvbnRleHQgaXMga2V5IGhlcmUuCgpMZXQmIzM5O3MgYmVnaW4gYnkgc2VhcmNoaW5nIGZvciB0aGF0IG5hbWUgd2l0aGluIHRoZSByZWxldmFudCByZXBvc2l0b3JpZXMuIEkgbmVlZCB0byBxdWlja2x5IGdyYXNwIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LCBlc3BlY2lhbGx5IGluIHRoZSBjb250ZXh0IG9mIGFueSBzZXJpYWwgY29tbXVuaWNhdGlvbiBzeXN0ZW1zIEkmIzM5O20gY3VycmVudGx5IHdvcmtpbmcgd2l0aC4gSSBhbHNvIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaXQgaXMgbm90IHNvbWV0aGluZyBJIGFscmVhZHkga25vdyBhYm91dC4KCkkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGhlYWRlciBmaWxlcywgZGVmaW5pdGlvbnMsIGFuZCB1c2FnZSBleGFtcGxlcy4gSSYjMzk7bSBob3BpbmcgdG8gZmluZCBjbHVlcyBhYm91dCBpdHMgdW5kZXJseWluZyBhcmNoaXRlY3R1cmUgYW5kIGFueSBwb3RlbnRpYWwgZ290Y2hhcy4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIHNvbWV0aGluZyBJIG5lZWQgdG8gaW50ZWdyYXRlLCBtb2RpZnksIG9yIHNpbXBseSBiZSBhd2FyZSBvZi4gVGhlIGdvYWwgaXMgYSBxdWljaywgaW5mb3JtZWQgZGVjaXNpb24gb24gaG93IHRvIHByb2NlZWQsIGFuZCB3aGV0aGVyIHRoaXMgaW1wYWN0cyBteSBvdmVyYWxsIGRlc2lnbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNzo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX1NFUklBTF9TUENQOFg1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc9NDc1PWNvbmZpZyBVU0JfU0VSSUFMX1FVQUxDT01NXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDg0LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NDg1OmNvbmZpZyBVU0JfU0VSSUFMX1NQQ1A4WDVcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ4Ni1cdHRyaXN0YXRlIFwmIzM0O1VTQiBTUENQOHg1IFVTQiBUbyBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTc6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzI4NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVVNCIFByb2JlIEZ1bmN0aW9uYWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9uczogYHVzYl9wcm9iZV9pbnRlcmZhY2VgLCBgdXNiX21hdGNoX2R5bmFtaWNfaWRgLCBgYXRoOWtfaGlmX3VzYl9wcm9iZWAsIGB1c2J0bWNfcHJvYmVgLCBgc3BjcDh4NV9wcm9iZWAsIGFuZCBgc3BjcDh4NV9wb3J0X3Byb2JlYC4gVGhlc2Ugc2VlbSB0byBiZSB0aGUga2V5IHBsYXllcnMgaW4gdGhlIFVTQiBwcm9iaW5nIHByb2Nlc3MsIGFuZCB0aGV5JiMzOTtyZSB0aGUgb25lcyBJIG5lZWQgdG8gemVybyBpbiBvbiB0byB1bmRlcnN0YW5kIHRoaXMgcGFydGljdWxhciBtb2RpZmljYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXkmIzM5O3JlIGFjdHVhbGx5IHJlbGV2YW50LCBhbmQgaWYgdGhlIHNjb3BlIG9mIHRoZWlyIGFjdGlvbnMgaXMgdGFyZ2V0ZWQgZW5vdWdoIHRvIHBpbnBvaW50IHRoZSBhbGxvY2F0aW9uIGNoYW5nZXMuCgpgdXNiX3Byb2JlX2ludGVyZmFjZWAgaXMgYSBjb3JlIGZ1bmN0aW9uLCB3aGljaCBtYWtlcyBpdCBwb3RlbnRpYWxseSBwcm9ibGVtYXRpYyBiZWNhdXNlIGl0JiMzOTtzIHVzZWQgKmV2ZXJ5d2hlcmUqLCBhbmQgaXQgaGFuZGxlcyBhIGxvdCBvZiBnZW5lcmljIFVTQiBpbnRlcmFjdGlvbnMuIEhvd2V2ZXIsIGl0JiMzOTtzIGFsc28gdGhlIGV4YWN0IHBsYWNlIHdoZXJlIHRoZSBgdXNiX2RldmljZV9pZGAgYWxsb2NhdGlvbiBvY2N1cnMsIHNvIGl0JiMzOTtzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgdGhpcyBjaGFuZ2UuIFNpbWlsYXJseSwgYHVzYl9tYXRjaF9keW5hbWljX2lkYCBoYXMgYmVlbiBtb2RpZmllZCwgd2hpY2ggaXMgYW5vdGhlciBzaWduaWZpY2FudCBwb2ludCB0byBjb25zaWRlci4KCk5vdyBJJiMzOTttIGRpdmluZyBkZWVwZXIsIGFuZCBgdXNiX3Byb2JlX2ludGVyZmFjZWAgaXMgdGhlIGZpcnN0IGZ1bmN0aW9uIEkgd2FudCB0byBkaXNzZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNzo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2JfcHJvYmVfaW50ZXJmYWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jPTMwND1zdGF0aWMgaW50IHVzYl91bmJpbmRfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jLTMxOC0vKiBjYWxsZWQgZnJvbSBkcml2ZXIgY29yZSB3aXRoIGRldiBsb2NrZWQgKi9cbmRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmM6MzE5OnN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jLTMyMC17XG4tLVxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYz0xMDYxPWludCB1c2JfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB1c2JfZHJpdmVyICpuZXdfZHJpdmVyLCBzdHJ1Y3QgbW9kdWxlICpvd25lcixcbi0tXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jLTEwNzAtXHRuZXdfZHJpdmVyLVx1MDAzZWRyaXZlci5idXMgPSBcdTAwMjZ1c2JfYnVzX3R5cGU7XG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jOjEwNzE6XHRuZXdfZHJpdmVyLVx1MDAzZWRyaXZlci5wcm9iZSA9IHVzYl9wcm9iZV9pbnRlcmZhY2U7XG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jLTEwNzItXHRuZXdfZHJpdmVyLVx1MDAzZWRyaXZlci5yZW1vdmUgPSB1c2JfdW5iaW5kX2ludGVyZmFjZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTc6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk2NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGB1c2JfbWF0Y2hfZHluYW1pY19pZGAqKgoKT2theSwgdGltZSB0byBkaXNzZWN0IGB1c2JfbWF0Y2hfZHluYW1pY19pZGAuIEkmIzM5O20gc3RhcnRpbmcgaGVyZSBiZWNhdXNlIEkga25vdyBkeW5hbWljIElEcyBjYW4gYmUgdHJpY2t5LiBMZXQgbWUgcmVmcmVzaCBteSBtZW1vcnkgb24gaXRzIHB1cnBvc2UuIEFoLCB5ZXMsIGl0JiMzOTtzIHRoZSBmdW5jdGlvbiB0aGF0IHRyaWVzIHRvIGZpbmQgYSBkcml2ZXIgbWF0Y2ggZm9yIGEgVVNCIGRldmljZSB3aGVuIHRoZSB0eXBpY2FsIHN0YXRpYyBJRCB0YWJsZSBpc24mIzM5O3Qgc3VmZmljaWVudCwgcmlnaHQ/IEl0JiMzOTtzIHRoZSBmYWxsYmFjayBtZWNoYW5pc20uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgKmhvdyogaXQmIzM5O3MgZG9pbmcgdGhhdCBkeW5hbWljIG1hdGNoaW5nIOKAkyB3aGF0JiMzOTtzIHRoZSBhbGdvcml0aG0/IElzIGl0IHJlbHlpbmcgb24gZGVzY3JpcHRvcnMsIHNvbWUgZm9ybSBvZiBwcm9iaW5nLCBvciBzb21ldGhpbmcgbW9yZSBjbGV2ZXI/IFNwZWNpZmljYWxseSwgSSYjMzk7bSBpbnRlcmVzdGVkIGluIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBlZGdlIGNhc2VzLiBBcmUgdGhlcmUgYW55IGtub3duIGlzc3VlcyB3aXRoIHRoaXMgZnVuY3Rpb24/IEFueSByYWNlIGNvbmRpdGlvbnMsIHBlcmhhcHM/IEFuZCBtb3N0IGltcG9ydGFudGx5LCBob3cgaXMgaXQgaGFuZGxpbmcgdGhlIHZhcmlvdXMgVVNCIHRyYW5zZmVyIHR5cGVzPyBEb2VzIGl0IGNvcnJlY3RseSBkaWZmZXJlbnRpYXRlIGJldHdlZW4gY29udHJvbCwgYnVsaywgaW50ZXJydXB0IGFuZCBpc29jaHJvbm91cyB0cmFuc2ZlcnMgd2hpbGUgZG9pbmcgdGhlIGR5bmFtaWMgSUQgbWF0Y2hpbmc/IEkgbmVlZCB0byBjaGVjayBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgVVNCIGNvcmUsIHRoZSBkZXZpY2UmIzM5O3MgZGVzY3JpcHRvcnMsIGFuZCB0aGUgcG90ZW50aWFsIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbi4gTGV0JiMzOTtzIHNlZSBob3cgaXQgbWFrZXMgdGhlIGRlY2lzaW9uLCBlc3BlY2lhbGx5IHdoYXQgdGhlIGNyaXRlcmlhIGZvciBhIG1hdGNoIGxvb2sgbGlrZS4gQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTc6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXNiX21hdGNoX2R5bmFtaWNfaWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmM9MjE5PXN0YXRpYyB2b2lkIHVzYl9mcmVlX2R5bmlkcyhzdHJ1Y3QgdXNiX2RyaXZlciAqdXNiX2Rydilcbi0tXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jLTIyOS1cbmRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmM6MjMwOnN0YXRpYyBib29sIHVzYl9tYXRjaF9keW5hbWljX2lkKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RyaXZlciAqZHJ2LFxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYy0yMzEtXHRcdFx0XHQgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmM9MzE5PXN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYy0zNDQtXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jOjM0NTpcdGlmICghdXNiX21hdGNoX2R5bmFtaWNfaWQoaW50ZiwgZHJpdmVyLCBcdTAwMjZpZCkpIHtcbmRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmMtMzQ2LVx0XHRtYXRjaGVkX2lkID0gdXNiX21hdGNoX2lkKGludGYsIGRyaXZlci1cdTAwM2VpZF90YWJsZSk7XG4tLVxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYz04NzE9c3RhdGljIGludCB1c2JfZGV2aWNlX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcbi0tXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jLTkwOC1cbmRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmM6OTA5Olx0XHRpZiAodXNiX21hdGNoX2R5bmFtaWNfaWQoaW50ZiwgdXNiX2RydiwgXHUwMDI2aWQpKVxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYy05MTAtXHRcdFx0cmV0dXJuIDE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MzkKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYGF0aDlrX2hpZl91c2JfcHJvYmVgKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMuIFRoZSBtZW50YWwgY2hlY2tsaXN0IHN0YXJ0cyB3aXRoIGBhdGg5a19oaWZfdXNiX3Byb2JlYC4gSW1tZWRpYXRlbHksIEnigJltIHRoaW5raW5nIOKAkyByaWdodCwgVVNCIHByb2JlIGZ1bmN0aW9uLiBUaGF04oCZcyB0aGUgZW50cnkgcG9pbnQsIHRoZSBmaXJzdCBwbGFjZSB0aGUgc3lzdGVtIHRyaWVzIHRvIGJyaW5nIHVwIGFuIEF0aGVyb3MgQVI5MDAwLXNlcmllcyBXaUZpIGRldmljZSBjb25uZWN0ZWQgb3ZlciBVU0IuIEdvdHRhIGJlIGZhbWlsaWFyIHdpdGggdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgcG93ZXIgbWFuYWdlbWVudCwgcmVzb3VyY2UgYWxsb2NhdGlvbuKApiBldmVyeXRoaW5nIGhpbmdlcyBvbiB0aGlzIGZ1bmN0aW9uLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgdGhlIHVzdWFsIHN1c3BlY3RzOiBkZXZpY2UgSUQgbWF0Y2hpbmcgYWdhaW5zdCB0aGUgVVNCIGRldmljZSB0YWJsZSwgcmVzb3VyY2UgcmVxdWVzdHMgZm9yIERNQSwgaW50ZXJydXB0cywgbWF5YmUgc29tZSBwbGF0Zm9ybS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbnMsIGFuZCB0aGUgY3J1Y2lhbCBjYWxsIHRvIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciAoSEFMKSBmb3IgdGhlIGNoaXBzZXQuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBmb3IgZXJyb3IgaGFuZGxpbmcsIG9mIGNvdXJzZTsgd2hhdCBoYXBwZW5zIGlmIHRoZSBVU0IgZGV2aWNlIGlzbiYjMzk7dCByZWNvZ25pemVkLCBvciBpZiB0aGVyZSYjMzk7cyBhIHByb2JsZW0gd2l0aCByZXNvdXJjZSBhbGxvY2F0aW9uPyBBbmQsIGhvdyBpcyB0aGlzIHByb2JlIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gdGhlIHJlc3Qgb2YgdGhlIGF0aDlrIGRyaXZlcj8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTc6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoOWtfaGlmX3VzYl9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0xMjkwPXN0YXRpYyBpbnQgc2VuZF9lamVjdF9jb21tYW5kKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xMzQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoxMzQ1OnN0YXRpYyBpbnQgYXRoOWtfaGlmX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xMzQ2LVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0xNTA5PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBhdGg5a19oaWZfdXNiX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMTUxMC1cdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjE1MTE6XHQucHJvYmUgPSBhdGg5a19oaWZfdXNiX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xNTEyLVx0LmRpc2Nvbm5lY3QgPSBhdGg5a19oaWZfdXNiX2Rpc2Nvbm5lY3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyNjYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6CgoqKkRlYnVnZ2luZyB0aGUgVVNCVE1DIFByb2JlIEZ1bmN0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYHVzYnRtY19wcm9iZWAuIFRoaXMgbGlrZWx5IG1lYW5zIEkmIzM5O20gdHJvdWJsZXNob290aW5nIHNvbWUgVVNCVE1DIGRyaXZlci1yZWxhdGVkIGlzc3VlLiBQZXJoYXBzIGEgZGV2aWNlIGlzbiYjMzk7dCBiZWluZyByZWNvZ25pemVkLCBvciBpdCYjMzk7cyBtaXNiZWhhdmluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aGluIHRoYXQgcHJvYmUgZnVuY3Rpb24uIElzIGl0IGZhaWxpbmcgdG8gbWF0Y2ggYSBkZXZpY2UgSUQ/IElzIHRoZXJlIGFuIGVycm9yIGR1cmluZyBpbml0aWFsaXphdGlvbj8gSXMgaXQgZXZlbiBiZWluZyBjYWxsZWQgaW4gdGhlIGZpcnN0IHBsYWNlPyBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCBieSBzdGVwcGluZyB0aHJvdWdoIGl0IHdpdGggYSBkZWJ1Z2dlciBvciBhZGRpbmcgc29tZSBwcmludCBzdGF0ZW1lbnRzIHRvIGNoZWNrIHdoYXQgY29uZGl0aW9ucyBhcmUgbWV0IGFuZCB3aGVyZSB0aGUgY29kZSBicmFuY2hlcy4gTXkgZXhwZXJpZW5jZSBoYXMgdGF1Z2h0IG1lIHRoYXQgdGhlIGRldmlsIGlzIHVzdWFsbHkgaW4gdGhlIGRldGFpbHMgd2l0aGluIHRoYXQgcHJvYmluZyBzdGFnZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VzYnRtY19wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jPTIzNjk9c3RhdGljIHZvaWQgdXNidG1jX2ZyZWVfaW50KHN0cnVjdCB1c2J0bWNfZGV2aWNlX2RhdGEgKmRhdGEpXG4tLVxuZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmMtMjM4MC1cbmRyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jOjIzODE6c3RhdGljIGludCB1c2J0bWNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG5kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYy0yMzgyLVx0XHRcdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYz0yNjA4PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciB1c2J0bWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jLTI2MTAtXHQuaWRfdGFibGVcdD0gdXNidG1jX2RldmljZXMsXG5kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYzoyNjExOlx0LnByb2JlXHRcdD0gdXNidG1jX3Byb2JlLFxuZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmMtMjYxMi1cdC5kaXNjb25uZWN0XHQ9IHVzYnRtY19kaXNjb25uZWN0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNzo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NzU4CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3MsIGZvY3VzaW5nIG9uIHdoYXQgSSYjMzk7ZCBiZSB0aGlua2luZyBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipJbml0aWFsIERpYWdub3N0aWMgU3RlcHMqKgoKQWxyaWdodCwgYmVmb3JlIGRpdmluZyB0b28gZGVlcCBpbnRvIHRoZSBpc3N1ZSwgSSBuZWVkIGEgY2xlYXIgYmFzZWxpbmUuIE15IGZpcnN0IHN0ZXAgaXMgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIGZ1bmRhbWVudGFsIHByb2JlczogSSYjMzk7bSBnb2luZyB0byBjaGVjayBib3RoIGBzcGNwOHg1X3Byb2JlYCBhbmQgYHNwY3A4eDVfcG9ydF9wcm9iZWAuIFRoZXNlIGFyZSB0aGUgY3J1Y2lhbCBlbnRyeSBwb2ludHM7IHRoZXkgdGVsbCBtZSB3aGV0aGVyIHRoZSBjb3JlIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgaW5kaXZpZHVhbCBwb3J0IGNvbmZpZ3VyYXRpb25zIGFyZSBzdWNjZWVkaW5nIG9yIGZhaWxpbmcuIEdyYWJiaW5nIHRoZXNlIGVhcmx5IGFsbG93cyBmb3IgYW4gaW5mb3JtZWQgZGlyZWN0aW9uLCB0byBzZWUgd2hlcmUgdGhlIHByb2Nlc3MgbWF5IGJlIGZhaWxpbmcuIENoZWNraW5nIHRoZW0gd2lsbCBwcmV2ZW50IGEgbGVuZ3RoeSBkZWVwIGRpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NwY3A4eDVfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL3NlcmlhbC9zcGNwOHg1LmM9MTI3PXN0cnVjdCBzcGNwOHg1X3ByaXZhdGUge1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9zcGNwOHg1LmMtMTMyLVxuZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuYzoxMzM6c3RhdGljIGludCBzcGNwOHg1X3Byb2JlKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwsXG5kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jLTEzNC1cdFx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuYz00NTE9c3RhdGljIHN0cnVjdCB1c2Jfc2VyaWFsX2RyaXZlciBzcGNwOHg1X2RldmljZSA9IHtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jLTQ2NS1cdC50aW9jbXNldFx0XHQ9IHNwY3A4eDVfdGlvY21zZXQsXG5kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jOjQ2NjpcdC5wcm9iZVx0XHRcdD0gc3BjcDh4NV9wcm9iZSxcbmRyaXZlcnMvdXNiL3NlcmlhbC9zcGNwOHg1LmMtNDY3LVx0LnBvcnRfcHJvYmVcdFx0PSBzcGNwOHg1X3BvcnRfcHJvYmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjM2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFVTQiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgcmVjb2duaXplIHRoZSBpbXBsaWNhdGlvbnMuIFRoZSBjb3JlIGNoYW5nZSBpcyBob3cgYHVzYl9kZXZpY2VfaWRgIGlzIGhhbmRsZWQsIG1vdmluZyBmcm9tIGEgcGVyc2lzdGVudCBwb2ludGVyIHRvIGEgdGVtcG9yYXJ5IHN0YWNrIGFsbG9jYXRpb24uIFRoYXQmIzM5O3MgYSBzaWduaWZpY2FudCBzaGlmdCBpbiBtZW1vcnkgbWFuYWdlbWVudCBhbmQgSSYjMzk7bSBpbnN0YW50bHkgc2VlaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0LiBJdCYjMzk7cyBlc3NlbnRpYWxseSBhbHRlcmluZyBob3cgdGhlIFVTQiBjb3JlIG1hdGNoZXMgZGV2aWNlcyB0byBkcml2ZXJzIGR1cmluZyBwcm9iZSBvcGVyYXRpb25zLgoKTm93LCBteSBmb2N1cyBpcyBvbiBlbnN1cmluZyBubyB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgYXJpc2UgZnJvbSB0aGlzIGNoYW5nZS4gSXQgbG9va3MgbGlrZSB0aGUgdGVhbSBoYXMgYWxyZWFkeSBpZGVudGlmaWVkIHRoYXQgYGF0aDlrYCwgYHVzYnRtY2AsIGFuZCBgc3BjcDh4NWAgVVNCIGRyaXZlcnMgYXJlIGRpcmVjdGx5IGFmZmVjdGVkIGJlY2F1c2UgdGhleSB3ZXJlIHN0b3JpbmcgdGhlIG9sZCBwb2ludGVyLiBTbWFydC4KCkkgY2FuIHNlZSB0aGUgZnV6emluZyBzdHJhdGVneSBpcyBzb3VuZDsgaXQmIzM5O3MgZGVzaWduZWQgdG8gdHJpZ2dlciB0aGVzZSBhZmZlY3RlZCBwYXRocyBkdXJpbmcgVVNCIGRldmljZSBlbnVtZXJhdGlvbiB0byByZWFsbHkgc3RyZXNzLXRlc3QgdGhlIG5ldyBpbXBsZW1lbnRhdGlvbi4gR29vZC4KCkkmIzM5O20gbWFraW5nIGEgbWVudGFsIG5vdGUgb2YgdGhvc2Uga2V5IHN5bWJvbHM6IGB1c2JfcHJvYmVfaW50ZXJmYWNlYCwgYHVzYl9tYXRjaF9keW5hbWljX2lkYCwgYGF0aDlrX2hpZl91c2JfcHJvYmVgLCBgdXNidG1jX3Byb2JlYCwgYHNwY3A4eDVfcHJvYmVgLCBhbmQgYHNwY3A4eDVfcG9ydF9wcm9iZWAuIFRoZXNlIGFyZSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRvIHNjcnV0aW5pemUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgdGhlcmUgYW5kIHRyYWNlIHRoZSBsb2dpYy4KCkJlZm9yZSBJIGRpZyBpbiB0b28gZGVlcCwgSSB3YW50IHRvIGNvbmZpcm0gSSBoYXZlIGFsbCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQuIFRoZXkmIzM5O3ZlIGxpc3RlZCBgQVRIOUtfSFRDYCwgYFVTQl9UTUNgLCBhbmQgYFVTQl9TRVJJQUxfU1BDUDhYNWAuIGBVU0JgIGlzIGFscmVhZHkgYnJvYWRseSBlbmFibGVkLCBzbyB0aGF0JiMzOTtzIGdvb2QuIEFuZCB0aGUgYFVTQl9TRVJJQUxgIGNvbmZpZyBpcyBuZWNlc3NhcnkgZm9yIGBVU0JfU0VSSUFMX1NQQ1A4WDVgLCBzbyBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBpbiB0aGUgYGRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnYCBmaWxlLCBqdXN0IHRvIGJlIHN1cmUuIEkmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIHRob3NlIGFyZSBhbGwgZW5hYmxlZCBpbiBteSB0ZXN0IHNldHVwLiBOb3csIGxldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBjaGFuZ2VkIGFuZCBsb29rIGZvciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNzo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX1NFUklBTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTUtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo2Om1lbnVjb25maWcgVVNCX1NFUklBTFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1VTQiBTZXJpYWwgQ29udmVydGVyIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZz0yMT1pZiBVU0JfU0VSSUFMXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yMi1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjIzOmNvbmZpZyBVU0JfU0VSSUFMX0NPTlNPTEVcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtVU0IgU2VyaWFsIENvbnNvbGUgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00NS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjQ2OmNvbmZpZyBVU0JfU0VSSUFMX0dFTkVSSUNcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ3LVx0Ym9vbCBcJiMzNDtVU0IgR2VuZXJpYyBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTQtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo1NTpjb25maWcgVVNCX1NFUklBTF9TSU1QTEVcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTU2LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIFNlcmlhbCBTaW1wbGUgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNzgtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo3OTpjb25maWcgVVNCX1NFUklBTF9BSVJDQUJMRVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctODAtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgQUlSY2FibGUgQmx1ZXRvb3RoIERvbmdsZSBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy04Ni1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjg3OmNvbmZpZyBVU0JfU0VSSUFMX0FSSzMxMTZcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTg4LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIEFSSyBNaWNybyAzMTE2IFVTQiBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctOTUtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo5Njpjb25maWcgVVNCX1NFUklBTF9CRUxLSU5cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTk3LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIEJlbGtpbiBhbmQgUGVyYWNvbSBTaW5nbGUgUG9ydCBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMTA1LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MTA2OmNvbmZpZyBVU0JfU0VSSUFMX0NIMzQxXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xMDctXHR0cmlzdGF0ZSBcJiMzNDtVU0IgV2luY2hpcGhlYWQgQ0gzNDEgU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTExNC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjExNTpjb25maWcgVVNCX1NFUklBTF9XSElURUhFQVRcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTExNi1cdHRyaXN0YXRlIFwmIzM0O1VTQiBDb25uZWN0VGVjaCBXaGl0ZUhFQVQgU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTEyNC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjEyNTpjb25maWcgVVNCX1NFUklBTF9ESUdJX0FDQ0VMRVBPUlRcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTEyNi1cdHRyaXN0YXRlIFwmIzM0O1VTQiBEaWdpIEludGVybmF0aW9uYWwgQWNjZWxlUG9ydCBVU0IgU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTEzNS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjEzNjpjb25maWcgVVNCX1NFUklBTF9DUDIxMFhcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTEzNy1cdHRyaXN0YXRlIFwmIzM0O1VTQiBDUDIxMHggZmFtaWx5IG9mIFVBUlQgQnJpZGdlIENvbnRyb2xsZXJzXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMTQ0LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MTQ1OmNvbmZpZyBVU0JfU0VSSUFMX0NZUFJFU1NfTThcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTE0Ni1cdHRyaXN0YXRlIFwmIzM0O1VTQiBDeXByZXNzIE04IFVTQiBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMTU4LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MTU5OmNvbmZpZyBVU0JfU0VSSUFMX0VNUEVHXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xNjAtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgRW1wZWcgZW1wZWctY2FyIE1hcmsgSS9JSSBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xNjktXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoxNzA6Y29uZmlnIFVTQl9TRVJJQUxfRlRESV9TSU9cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTE3MS1cdHRyaXN0YXRlIFwmIzM0O1VTQiBGVERJIFNpbmdsZSBQb3J0IFNlcmlhbCBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xODItXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoxODM6Y29uZmlnIFVTQl9TRVJJQUxfVklTT1JcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTE4NC1cdHRyaXN0YXRlIFwmIzM0O1VTQiBIYW5kc3ByaW5nIFZpc29yIC8gUGFsbSBtNTB4IC8gU29ueSBDbGllIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTE5My1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjE5NDpjb25maWcgVVNCX1NFUklBTF9JUEFRXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xOTUtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgUG9ja2V0UEMgUERBIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTIwNC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjIwNTpjb25maWcgVVNCX1NFUklBTF9JUlxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjA2LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIElSIERvbmdsZSBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjE0LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MjE1OmNvbmZpZyBVU0JfU0VSSUFMX0VER0VQT1JUXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yMTYtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgSW5zaWRlIE91dCBFZGdlcG9ydCBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjM5LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MjQwOmNvbmZpZyBVU0JfU0VSSUFMX0VER0VQT1JUX1RJXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yNDEtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgSW5zaWRlIE91dCBFZGdlcG9ydCBTZXJpYWwgRHJpdmVyIChUSSBkZXZpY2VzKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTI0OS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjI1MDpjb25maWcgVVNCX1NFUklBTF9GODEyMzJcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTI1MS1cdHRyaXN0YXRlIFwmIzM0O1VTQiBGaW50ZWsgRjgxMjMyIFNpbmdsZSBQb3J0IFNlcmlhbCBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yNTgtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoyNTk6Y29uZmlnIFVTQl9TRVJJQUxfRjgxNTNYXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yNjAtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgRmludGVrIEY4MTUzMi81MzQgTXVsdGktUG9ydHMgU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTI2OC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjI2OTpjb25maWcgVVNCX1NFUklBTF9HQVJNSU5cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTI3MC1cdHRyaXN0YXRlIFwmIzM0O1VTQiBHYXJtaW4gR1BTIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTI4MC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjI4MTpjb25maWcgVVNCX1NFUklBTF9JUFdcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTI4Mi1cdHRyaXN0YXRlIFwmIzM0O1VTQiBJUFdpcmVsZXNzICgzRyBVTVRTIFRERCkgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjkwLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MjkxOmNvbmZpZyBVU0JfU0VSSUFMX0lVVVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjkyLVx0dHJpc3RhdGUgXCYjMzQ7VVNCIEluZmluaXR5IFVTQiBVbmxpbWl0ZWQgUGhvZW5peCBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zMDAtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzozMDE6Y29uZmlnIFVTQl9TRVJJQUxfS0VZU1BBTl9QREFcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTMwMi1cdHRyaXN0YXRlIFwmIzM0O1VTQiBLZXlzcGFuIFBEQSAvIFhpcmNvbSBTaW5nbGUgUG9ydCBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzExLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MzEyOmNvbmZpZyBVU0JfU0VSSUFMX0tFWVNQQU5cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTMxMy1cdHRyaXN0YXRlIFwmIzM0O1VTQiBLZXlzcGFuIFVTQS14eHggU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTMyNS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjMyNjpjb25maWcgVVNCX1NFUklBTF9LTFNJXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zMjctXHR0cmlzdGF0ZSBcJiMzNDtVU0IgS0w1S1VTQjEwNSAoUGFsbWNvbm5lY3QpIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM0MC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjM0MTpjb25maWcgVVNCX1NFUklBTF9LT0JJTF9TQ1RcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM0Mi1cdHRyaXN0YXRlIFwmIzM0O1VTQiBLT0JJTCBjaGlwY2FyZCByZWFkZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zNTctXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzozNTg6Y29uZmlnIFVTQl9TRVJJQUxfTUNUX1UyMzJcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM1OS1cdHRyaXN0YXRlIFwmIzM0O1VTQiBNQ1QgU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM2OS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjM3MDpjb25maWcgVVNCX1NFUklBTF9NRVRST1xuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzcxLVx0dHJpc3RhdGUgXCYjMzQ7VVNCIE1ldHJvbG9naWMgSW5zdHJ1bWVudHMgVVNCLVBPUyBCYXJjb2RlIFNjYW5uZXIgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzc3LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6Mzc4OmNvbmZpZyBVU0JfU0VSSUFMX01PUzc3MjBcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM3OS1cdHRyaXN0YXRlIFwmIzM0O1VTQiBNb3NjaGlwIDc3MjAgU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM4Ni1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjM4Nzpjb25maWcgVVNCX1NFUklBTF9NT1M3NzE1X1BBUlBPUlRcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM4OC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgcGFyYWxsZWwgcG9ydCBvbiB0aGUgTW9zY2hpcCA3NzE1XCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzk2LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6Mzk3OmNvbmZpZyBVU0JfU0VSSUFMX01PUzc4NDBcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM5OC1cdHRyaXN0YXRlIFwmIzM0O1VTQiBNb3NjaGlwIDc4NDAvNzgyMCBVU0IgU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQxMC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjQxMTpjb25maWcgVVNCX1NFUklBTF9NWFVQT1JUXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00MTItXHR0cmlzdGF0ZSBcJiMzNDtVU0IgTW94YSBVUE9SVCBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDM5LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NDQwOmNvbmZpZyBVU0JfU0VSSUFMX05BVk1BTlxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDQxLVx0dHJpc3RhdGUgXCYjMzQ7VVNCIE5hdm1hbiBHUFMgZGV2aWNlXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDQ1LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NDQ2OmNvbmZpZyBVU0JfU0VSSUFMX1BMMjMwM1xuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDQ3LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIFByb2xpZmljIDIzMDMgU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ1NC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjQ1NTpjb25maWcgVVNCX1NFUklBTF9PVEk2ODU4XG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00NTYtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgT3VycyBUZWNobm9sb2d5IEluYy4gT1RpLTY4NTggVVNCIFRvIFJTMjMyIEJyaWRnZSBDb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDYzLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NDY0OmNvbmZpZyBVU0JfU0VSSUFMX1FDQVVYXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00NjUtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgUXVhbGNvbW0gQXV4aWxpYXJ5IFNlcmlhbCBQb3J0IERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ3NC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjQ3NTpjb25maWcgVVNCX1NFUklBTF9RVUFMQ09NTVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDc2LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIFF1YWxjb21tIFNlcmlhbCBtb2RlbVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ4NC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjQ4NTpjb25maWcgVVNCX1NFUklBTF9TUENQOFg1XG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00ODYtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgU1BDUDh4NSBVU0IgVG8gU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ5My1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjQ5NDpjb25maWcgVVNCX1NFUklBTF9TQUZFXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00OTUtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgU2FmZSBTZXJpYWwgKEVuY2Fwc3VsYXRlZCkgRHJpdmVyXCYjMzQ7XG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00OTYtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo0OTc6Y29uZmlnIFVTQl9TRVJJQUxfU0FGRV9QQURERURcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ5OC1cdGJvb2wgXCYjMzQ7VVNCIFNlY3VyZSBFbmNhcHN1bGF0ZWQgRHJpdmVyIC0gUGFkZGVkXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTAwLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NTAxOmNvbmZpZyBVU0JfU0VSSUFMX1NJRVJSQVdJUkVMRVNTXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01MDItXHR0cmlzdGF0ZSBcJiMzNDtVU0IgU2llcnJhIFdpcmVsZXNzIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTUxMS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjUxMjpjb25maWcgVVNCX1NFUklBTF9TWU1CT0xcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTUxMy1cdHRyaXN0YXRlIFwmIzM0O1VTQiBTeW1ib2wgQmFyY29kZSBkcml2ZXIgKHNlcmlhbCBtb2RlKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTUyMC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjUyMTpjb25maWcgVVNCX1NFUklBTF9USVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTIyLVx0dHJpc3RhdGUgXCYjMzQ7VVNCIFRJIDM0MTAvNTA1MiBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTI5LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NTMwOmNvbmZpZyBVU0JfU0VSSUFMX0NZQkVSSkFDS1xuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTMxLVx0dHJpc3RhdGUgXCYjMzQ7VVNCIFJFSU5FUiBTQ1QgY3liZXJKYWNrIHBpbnBhZC9lLWNvbSBjaGlwY2FyZCByZWFkZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01NDEtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo1NDI6Y29uZmlnIFVTQl9TRVJJQUxfV1dBTlxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTQzLVx0dHJpc3RhdGVcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTU0NC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjU0NTpjb25maWcgVVNCX1NFUklBTF9PUFRJT05cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTU0Ni1cdHRyaXN0YXRlIFwmIzM0O1VTQiBkcml2ZXIgZm9yIEdTTSBhbmQgQ0RNQSBtb2RlbXNcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01NjMtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo1NjQ6Y29uZmlnIFVTQl9TRVJJQUxfT01OSU5FVFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTY1LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIFp5WEVMIG9tbmkubmV0IExDRCBQbHVzIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTU3MS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjU3Mjpjb25maWcgVVNCX1NFUklBTF9PUFRJQ09OXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01NzMtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgT3B0aWNvbiBCYXJjb2RlIGRyaXZlciAoc2VyaWFsIG1vZGUpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTgwLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NTgxOmNvbmZpZyBVU0JfU0VSSUFMX1hTRU5TX01UXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01ODItXHR0cmlzdGF0ZSBcJiMzNDtYc2VucyBtb3Rpb24gdHJhY2tlciBzZXJpYWwgaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTU5Mi1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjU5Mzpjb25maWcgVVNCX1NFUklBTF9XSVNIQk9ORVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTk0LVx0dHJpc3RhdGUgXCYjMzQ7VVNCLVdpc2hib25lIGFkYXB0ZXIgaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTYwOS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjYxMDpjb25maWcgVVNCX1NFUklBTF9TU1UxMDBcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTYxMS1cdHRyaXN0YXRlIFwmIzM0O1VTQiBRdWF0ZWNoIFNTVS0xMDAgU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTYxOC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjYxOTpjb25maWcgVVNCX1NFUklBTF9RVDJcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTYyMC1cdHRyaXN0YXRlIFwmIzM0O1VTQiBRdWF0ZWNoIFNlcmlhbCBEcml2ZXIgZm9yIFVTQiAyIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy02MjctXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo2Mjg6Y29uZmlnIFVTQl9TRVJJQUxfVVBENzhGMDczMFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNjI5LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIFJlbmVzYXMgdVBENzhGMDczMCBTaW5nbGUgUG9ydCBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNjM2LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NjM3OmNvbmZpZyBVU0JfU0VSSUFMX1hSXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy02MzgtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgTWF4TGluZWFyL0V4YXIgVVNCIHRvIFNlcmlhbCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy02NDUtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo2NDY6Y29uZmlnIFVTQl9TRVJJQUxfREVCVUdcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTY0Ny1cdHRyaXN0YXRlIFwmIzM0O1VTQiBEZWJ1Z2dpbmcgRGV2aWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0ODA1CgkJCQkJCQlvdXRwdXQ6IDIzNQoJCQkJCQkJdGhvdWdodHM6IDI4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgVVNCIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIHJldmlld2luZyB0aGlzIHBhdGNoLCBhbmQgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gdGhpbmtpbmcuIEZpcnN0IG9mZiwgSSBzZWUgdGhhdCBgVVNCX1NFUklBTGAgaXMgYSBtZW51Y29uZmlnIG9wdGlvbiwgc28gaXQgbWFrZXMgc2Vuc2UgdG8gaW5jbHVkZSBpdCBpbiB0aGUgbGlzdCBvZiBjb25maWd1cmF0aW9ucyB3ZSBzaG91bGQgZW5hYmxlIGZvciB0ZXN0aW5nLiBTaW1pbGFybHksIGBVU0JfU0VSSUFMX1NQQ1A4WDVgIGlzIGRlcGVuZGVudCBvbiBgVVNCX1NFUklBTGAsIHNvIHdlJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSBib3RoIGFyZSBjb25zaWRlcmVkLgoKTGV0JiMzOTtzIHJlY2FwIHRoZSByZWxldmFudCBjb25maWdzOiBgQVRIOUtfSFRDYCwgYFVTQl9UTUNgLCBgVVNCX1NFUklBTGAsIGFuZCBgVVNCX1NFUklBTF9TUENQOFg1YC4gR290IGl0LgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgc3ltYm9scyB3ZSYjMzk7cmUgZm9jdXNpbmcgb24uIFdlJiMzOTt2ZSBnb3QgYHVzYl9wcm9iZV9pbnRlcmZhY2VgLCBgdXNiX21hdGNoX2R5bmFtaWNfaWRgLCBgYXRoOWtfaGlmX3VzYl9wcm9iZWAsIGB1c2J0bWNfcHJvYmVgLCBgc3BjcDh4NV9wcm9iZWAsIGFuZCBgc3BjcDh4NV9wb3J0X3Byb2JlYC4gVGhlc2Ugc2VlbSB0byBiZSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGludm9sdmVkLgoKVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpcyBhYm91dCBob3cgYHVzYl9kZXZpY2VfaWRgIGlzIGhhbmRsZWQgd2hlbiBwYXNzZWQgdG8gVVNCIGRyaXZlciBgcHJvYmVgIGZ1bmN0aW9ucy4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgY2hhbmdpbmcgaG93IGB1c2JfZGV2aWNlX2lkYCBpcyBhbGxvY2F0ZWQuIE5vdywgaW5zdGVhZCBvZiBhIHBlcnNpc3RlbnQgcG9pbnRlciwgaXQmIzM5O3MgYmVpbmcgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayB3aXRoaW4gYHVzYl9wcm9iZV9pbnRlcmZhY2VgIGFuZCBwYXNzZWQgYXMgYSB0ZW1wb3JhcnkgcG9pbnRlci4gVGhpcyBpcyBhIHN1YnRsZSBidXQgcG90ZW50aWFsbHkgaW1wYWN0ZnVsIGNoYW5nZS4gSXQgYWZmZWN0cyB0aGUgVVNCIGNvcmUmIzM5O3MgbWF0Y2hpbmcgbG9naWMsIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaXQgbWVhbnMgc2V2ZXJhbCBkcml2ZXJzIGhhZCB0byBiZSB1cGRhdGVkIHRvIGFjY291bnQgZm9yIHRoaXMgY2hhbmdlLCBzcGVjaWZpY2FsbHkgYGF0aDlrYCwgYHVzYnRtY2AsIGFuZCBgc3BjcDh4NWAuIFRoZXkgaGFkIHRvIGJlIGFkanVzdGVkIHRvIHByZXZlbnQgc3RvcmluZyB0aGUgKG5vdyBpbnZhbGlkKSBwb2ludGVyLgoKVGhpcyBjaGFuZ2UgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCBvcGVucyB1cCB0aGUgcG9zc2liaWxpdHkgb2YgdHJpZ2dlcmluZyBtZW1vcnkgZXJyb3JzLCBzcGVjaWZpY2FsbHkgdXNlLWFmdGVyLWZyZWUsIHRocm91Z2ggZnV6emluZyBVU0IgZGV2aWNlIGVudW1lcmF0aW9uLiBJIHRoaW5rIHRoZSBrZXkgaGVyZSBpcyB0aGF0IHdlIGNhbiB2ZXJpZnkgdGhlIHBhdGNoIGFuZCB0aGVzZSBkcml2ZXIgdXBkYXRlcyBieSBmdXp6aW5nIHRoZSBwcm9jZXNzLiBJZiB3ZSBjYW4gdHJpZ2dlciB0aGVzZSBjb2RlIHBhdGhzIHdpdGggZnV6emluZywgd2UgY2FuIHZlcmlmeSB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IG1lbW9yeSBpc3N1ZXMgYXMgYSByZXN1bHQgb2YgdGhlIGNoYW5nZS4KCkFscmlnaHQsIEkmIzM5O20gZ29pbmcgdG8gY2FsbCBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTc6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtVU0JfVE1DJiMzNDssCiAgICAmIzM0O1VTQl9TRVJJQUwmIzM0OywKICAgICYjMzQ7VVNCX1NFUklBTF9TUENQOFg1JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXNiX3Byb2JlX2ludGVyZmFjZSYjMzQ7LAogICAgJiMzNDt1c2JfbWF0Y2hfZHluYW1pY19pZCYjMzQ7LAogICAgJiMzNDthdGg5a19oaWZfdXNiX3Byb2JlJiMzNDssCiAgICAmIzM0O3VzYnRtY19wcm9iZSYjMzQ7LAogICAgJiMzNDtzcGNwOHg1X3Byb2JlJiMzNDssCiAgICAmIzM0O3NwY3A4eDVfcG9ydF9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGhvdyBgdXNiX2RldmljZV9pZGAgaXMgcGFzc2VkIHRvIFVTQiBkcml2ZXJzJiMzOTsgYHByb2JlYCBmdW5jdGlvbnMuIEl0IGlzIG5vdyBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrIGluIGB1c2JfcHJvYmVfaW50ZXJmYWNlYCBhbmQgcGFzc2VkIGFzIGEgdGVtcG9yYXJ5IHBvaW50ZXIsIGluc3RlYWQgb2YgYSBwZXJzaXN0ZW50IHBvaW50ZXIuIFRoaXMgYWZmZWN0cyBVU0IgY29yZSBtYXRjaGluZyBhbmQgc2V2ZXJhbCBVU0IgZHJpdmVycyAoYGF0aDlrYCwgYHVzYnRtY2AsIGBzcGNwOHg1YCksIHdoaWNoIGhhZCB0byBiZSB1cGRhdGVkIHRvIHN0b3Agc3RvcmluZyB0aGUgcG9pbnRlci4gRnV6emluZyBVU0IgZGV2aWNlIGVudW1lcmF0aW9uIGNhbiB0cmlnZ2VyIHRoZXNlIHBhdGhzIGFuZCB2ZXJpZnkgdGhhdCBubyB1c2UtYWZ0ZXItZnJlZSBvciBvdGhlciBtZW1vcnkgaXNzdWVzIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEg5S19IVEMmIzM0OywKICAgICYjMzQ7VVNCX1RNQyYjMzQ7LAogICAgJiMzNDtVU0JfU0VSSUFMJiMzNDssCiAgICAmIzM0O1VTQl9TRVJJQUxfU1BDUDhYNSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VzYl9wcm9iZV9pbnRlcmZhY2UmIzM0OywKICAgICYjMzQ7dXNiX21hdGNoX2R5bmFtaWNfaWQmIzM0OywKICAgICYjMzQ7YXRoOWtfaGlmX3VzYl9wcm9iZSYjMzQ7LAogICAgJiMzNDt1c2J0bWNfcHJvYmUmIzM0OywKICAgICYjMzQ7c3BjcDh4NV9wcm9iZSYjMzQ7LAogICAgJiMzNDtzcGNwOHg1X3BvcnRfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBob3cgYHVzYl9kZXZpY2VfaWRgIGlzIHBhc3NlZCB0byBVU0IgZHJpdmVycyYjMzk7IGBwcm9iZWAgZnVuY3Rpb25zLiBJdCBpcyBub3cgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBpbiBgdXNiX3Byb2JlX2ludGVyZmFjZWAgYW5kIHBhc3NlZCBhcyBhIHRlbXBvcmFyeSBwb2ludGVyLCBpbnN0ZWFkIG9mIGEgcGVyc2lzdGVudCBwb2ludGVyLiBUaGlzIGFmZmVjdHMgVVNCIGNvcmUgbWF0Y2hpbmcgYW5kIHNldmVyYWwgVVNCIGRyaXZlcnMgKGBhdGg5a2AsIGB1c2J0bWNgLCBgc3BjcDh4NWApLCB3aGljaCBoYWQgdG8gYmUgdXBkYXRlZCB0byBzdG9wIHN0b3JpbmcgdGhlIHBvaW50ZXIuIEZ1enppbmcgVVNCIGRldmljZSBlbnVtZXJhdGlvbiBjYW4gdHJpZ2dlciB0aGVzZSBwYXRocyBhbmQgdmVyaWZ5IHRoYXQgbm8gdXNlLWFmdGVyLWZyZWUgb3Igb3RoZXIgbWVtb3J5IGlzc3VlcyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE3OjU4OjE4LjQzMzM5MTQ0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NDkyMzMzNDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDlLX0hUQ1wiLFxuICAgIFwiVVNCX1RNQ1wiLFxuICAgIFwiVVNCX1NFUklBTFwiLFxuICAgIFwiVVNCX1NFUklBTF9TUENQOFg1XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNiX3Byb2JlX2ludGVyZmFjZVwiLFxuICAgIFwidXNiX21hdGNoX2R5bmFtaWNfaWRcIixcbiAgICBcImF0aDlrX2hpZl91c2JfcHJvYmVcIixcbiAgICBcInVzYnRtY19wcm9iZVwiLFxuICAgIFwic3BjcDh4NV9wcm9iZVwiLFxuICAgIFwic3BjcDh4NV9wb3J0X3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBob3cgYHVzYl9kZXZpY2VfaWRgIGlzIHBhc3NlZCB0byBVU0IgZHJpdmVycycgYHByb2JlYCBmdW5jdGlvbnMuIEl0IGlzIG5vdyBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrIGluIGB1c2JfcHJvYmVfaW50ZXJmYWNlYCBhbmQgcGFzc2VkIGFzIGEgdGVtcG9yYXJ5IHBvaW50ZXIsIGluc3RlYWQgb2YgYSBwZXJzaXN0ZW50IHBvaW50ZXIuIFRoaXMgYWZmZWN0cyBVU0IgY29yZSBtYXRjaGluZyBhbmQgc2V2ZXJhbCBVU0IgZHJpdmVycyAoYGF0aDlrYCwgYHVzYnRtY2AsIGBzcGNwOHg1YCksIHdoaWNoIGhhZCB0byBiZSB1cGRhdGVkIHRvIHN0b3Agc3RvcmluZyB0aGUgcG9pbnRlci4gRnV6emluZyBVU0IgZGV2aWNlIGVudW1lcmF0aW9uIGNhbiB0cmlnZ2VyIHRoZXNlIHBhdGhzIGFuZCB2ZXJpZnkgdGhhdCBubyB1c2UtYWZ0ZXItZnJlZSBvciBvdGhlciBtZW1vcnkgaXNzdWVzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1ODoxOC40MzM0MDA1MDNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MDQxNDIxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDFmODEzYjM0YjRiZmVlNzk2YTZkMDZkZWI4YmJhZTgzMjkwNmRjNmZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTc6NTg6MTcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcXG5pbmRleCA1MTUyNjdmNDhkODAzZS4uZDY1YzA5YzJiN2ZjYzQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcXG5AQCAtMTA4Nyw3ICsxMDg3LDcgQEAgc3RhdGljIGludCBhdGg5a19oaWZfdXNiX2Rvd25sb2FkX2Z3KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcXG4gXFx0fVxcbiBcXHRrZnJlZShidWYpO1xcbiBcXG4tXFx0aWYgKElTX0FSNzAxMF9ERVZJQ0UoaGlmX2Rldi1cXHUwMDNldXNiX2RldmljZV9pZC1cXHUwMDNlZHJpdmVyX2luZm8pKVxcbitcXHRpZiAoSVNfQVI3MDEwX0RFVklDRShoaWZfZGV2LVxcdTAwM2VpZF9pbmZvKSlcXG4gXFx0XFx0ZmlybV9vZmZzZXQgPSBBUjcwMTBfRklSTVdBUkVfVEVYVDtcXG4gXFx0ZWxzZVxcbiBcXHRcXHRmaXJtX29mZnNldCA9IEFSOTI3MV9GSVJNV0FSRV9URVhUO1xcbkBAIC0xMTgyLDcgKzExODIsNyBAQCBzdGF0aWMgaW50IGF0aDlrX2hpZl9yZXF1ZXN0X2Zpcm13YXJlKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcXG4gXFx0aWYgKE1BSk9SX1ZFUlNJT05fUkVRID09IDEgXFx1MDAyNlxcdTAwMjYgaGlmX2Rldi1cXHUwMDNlZndfbWlub3JfaW5kZXggPT0gMykge1xcbiBcXHRcXHRjb25zdCBjaGFyICpmaWxlbmFtZTtcXG4gXFxuLVxcdFxcdGlmIChJU19BUjcwMTBfREVWSUNFKGhpZl9kZXYtXFx1MDAzZXVzYl9kZXZpY2VfaWQtXFx1MDAzZWRyaXZlcl9pbmZvKSlcXG4rXFx0XFx0aWYgKElTX0FSNzAxMF9ERVZJQ0UoaGlmX2Rldi1cXHUwMDNlaWRfaW5mbykpXFxuIFxcdFxcdFxcdGZpbGVuYW1lID0gRklSTVdBUkVfQVI3MDEwXzFfMTtcXG4gXFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRmaWxlbmFtZSA9IEZJUk1XQVJFX0FSOTI3MTtcXG5AQCAtMTE5OCw3ICsxMTk4LDcgQEAgc3RhdGljIGludCBhdGg5a19oaWZfcmVxdWVzdF9maXJtd2FyZShzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXFxuIFxcbiBcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0aWYgKElTX0FSNzAxMF9ERVZJQ0UoaGlmX2Rldi1cXHUwMDNldXNiX2RldmljZV9pZC1cXHUwMDNlZHJpdmVyX2luZm8pKVxcbitcXHRcXHRpZiAoSVNfQVI3MDEwX0RFVklDRShoaWZfZGV2LVxcdTAwM2VpZF9pbmZvKSlcXG4gXFx0XFx0XFx0Y2hpcCA9IFxcXCI3MDEwXFxcIjtcXG4gXFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRjaGlwID0gXFxcIjkyNzFcXFwiO1xcbkBAIC0xMjYwLDkgKzEyNjAsOSBAQCBzdGF0aWMgdm9pZCBhdGg5a19oaWZfdXNiX2Zpcm13YXJlX2NiKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncsIHZvaWQgKmNvbnRleHQpXFxuIFxcbiBcXHRyZXQgPSBhdGg5a19odGNfaHdfaW5pdChoaWZfZGV2LVxcdTAwM2VodGNfaGFuZGxlLFxcbiBcXHRcXHRcXHRcXHRcXHUwMDI2aGlmX2Rldi1cXHUwMDNlaW50ZXJmYWNlLVxcdTAwM2VkZXYsXFxuLVxcdFxcdFxcdFxcdGhpZl9kZXYtXFx1MDAzZXVzYl9kZXZpY2VfaWQtXFx1MDAzZWlkUHJvZHVjdCxcXG4rXFx0XFx0XFx0XFx0aGlmX2Rldi1cXHUwMDNldWRldi1cXHUwMDNlZGVzY3JpcHRvci5pZFByb2R1Y3QsXFxuIFxcdFxcdFxcdFxcdGhpZl9kZXYtXFx1MDAzZXVkZXYtXFx1MDAzZXByb2R1Y3QsXFxuLVxcdFxcdFxcdFxcdGhpZl9kZXYtXFx1MDAzZXVzYl9kZXZpY2VfaWQtXFx1MDAzZWRyaXZlcl9pbmZvKTtcXG4rXFx0XFx0XFx0XFx0aGlmX2Rldi1cXHUwMDNlaWRfaW5mbyk7XFxuIFxcdGlmIChyZXQpIHtcXG4gXFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gXFx0XFx0Z290byBlcnJfaHRjX2h3X2luaXQ7XFxuQEAgLTEzNzQsNyArMTM3NCw3IEBAIHN0YXRpYyBpbnQgYXRoOWtfaGlmX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxcbiBcXG4gXFx0aGlmX2Rldi1cXHUwMDNldWRldiA9IHVkZXY7XFxuIFxcdGhpZl9kZXYtXFx1MDAzZWludGVyZmFjZSA9IGludGVyZmFjZTtcXG4tXFx0aGlmX2Rldi1cXHUwMDNldXNiX2RldmljZV9pZCA9IGlkO1xcbitcXHRoaWZfZGV2LVxcdTAwM2VpZF9pbmZvID0gaWQtXFx1MDAzZWRyaXZlcl9pbmZvO1xcbiAjaWZkZWYgQ09ORklHX1BNXFxuIFxcdHVkZXYtXFx1MDAzZXJlc2V0X3Jlc3VtZSA9IDE7XFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaFxcbmluZGV4IGRjMGIwZmE1YzMyNTc0Li5iM2U3YjBmYjU0Yjg0MSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaFxcbkBAIC0xMTUsNyArMTE1LDcgQEAgc3RydWN0IGNtZF9idWYge1xcbiBzdHJ1Y3QgaGlmX2RldmljZV91c2Ige1xcbiBcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldjtcXG4gXFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZTtcXG4tXFx0Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnVzYl9kZXZpY2VfaWQ7XFxuK1xcdGludCBpZF9pbmZvO1xcbiBcXHRjb25zdCB2b2lkICpmd19kYXRhO1xcbiBcXHRzaXplX3QgZndfc2l6ZTtcXG4gXFx0c3RydWN0IGNvbXBsZXRpb24gZndfZG9uZTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmMgYi9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuY1xcbmluZGV4IGFmOWFlNTVkYWUxNGUwLi41MWNkOTMyMGE3MzY2YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuY1xcbisrKyBiL2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jXFxuQEAgLTcxLDcgKzcxLDYgQEAgc3RydWN0IHVzYnRtY19kZXZfY2FwYWJpbGl0aWVzIHtcXG4gICogYWxsb2NhdGVkIGZvciBlYWNoIFVTQlRNQyBkZXZpY2UgaW4gdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uLlxcbiAgKi9cXG4gc3RydWN0IHVzYnRtY19kZXZpY2VfZGF0YSB7XFxuLVxcdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZDtcXG4gXFx0c3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXY7XFxuIFxcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmO1xcbiBcXHRzdHJ1Y3QgbGlzdF9oZWFkIGZpbGVfbGlzdDtcXG5AQCAtMjM5NCw3ICsyMzkzLDYgQEAgc3RhdGljIGludCB1c2J0bWNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG4gXFx0ZGF0YS1cXHUwMDNlaW50ZiA9IGludGY7XFxuLVxcdGRhdGEtXFx1MDAzZWlkID0gaWQ7XFxuIFxcdGRhdGEtXFx1MDAzZXVzYl9kZXYgPSB1c2JfZ2V0X2RldihpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpKTtcXG4gXFx0dXNiX3NldF9pbnRmZGF0YShpbnRmLCBkYXRhKTtcXG4gXFx0a3JlZl9pbml0KFxcdTAwMjZkYXRhLVxcdTAwM2VrcmVmKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYyBiL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmNcXG5pbmRleCBmNjMwMDQ0MTcwNThlNi4uYzI2NDEwY2FiZGZlOTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuY1xcbisrKyBiL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmNcXG5AQCAtMjI3LDE4ICsyMjcsMTkgQEAgc3RhdGljIHZvaWQgdXNiX2ZyZWVfZHluaWRzKHN0cnVjdCB1c2JfZHJpdmVyICp1c2JfZHJ2KVxcbiBcXHR9XFxuIH1cXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqdXNiX21hdGNoX2R5bmFtaWNfaWQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCB1c2JfZHJpdmVyICpkcnYpXFxuK3N0YXRpYyBib29sIHVzYl9tYXRjaF9keW5hbWljX2lkKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RyaXZlciAqZHJ2LFxcbitcXHRcXHRcXHRcXHQgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbiB7XFxuIFxcdHN0cnVjdCB1c2JfZHluaWQgKmR5bmlkO1xcbiBcXG4gXFx0Z3VhcmQobXV0ZXgpKFxcdTAwMjZ1c2JfZHluaWRzX2xvY2spO1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGR5bmlkLCBcXHUwMDI2ZHJ2LVxcdTAwM2VkeW5pZHMubGlzdCwgbm9kZSkge1xcbiBcXHRcXHRpZiAodXNiX21hdGNoX29uZV9pZChpbnRmLCBcXHUwMDI2ZHluaWQtXFx1MDAzZWlkKSkge1xcbi1cXHRcXHRcXHRyZXR1cm4gXFx1MDAyNmR5bmlkLVxcdTAwM2VpZDtcXG4rXFx0XFx0XFx0KmlkID0gZHluaWQtXFx1MDAzZWlkO1xcbitcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFx0XFx0fVxcbiBcXHR9XFxuLVxcdHJldHVybiBOVUxMO1xcbitcXHRyZXR1cm4gZmFsc2U7XFxuIH1cXG4gXFxuIFxcbkBAIC0zMjAsNyArMzIxLDggQEAgc3RhdGljIGludCB1c2JfcHJvYmVfaW50ZXJmYWNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0c3RydWN0IHVzYl9kcml2ZXIgKmRyaXZlciA9IHRvX3VzYl9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbiBcXHRzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiA9IHRvX3VzYl9pbnRlcmZhY2UoZGV2KTtcXG4gXFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpO1xcbi1cXHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQ7XFxuK1xcdHN0cnVjdCB1c2JfZGV2aWNlX2lkIGlkO1xcbitcXHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqbWF0Y2hlZF9pZDtcXG4gXFx0aW50IGVycm9yID0gLUVOT0RFVjtcXG4gXFx0aW50IGxwbV9kaXNhYmxlX2Vycm9yID0gLUVOT0RFVjtcXG4gXFxuQEAgLTM0MCwxMSArMzQyLDEyIEBAIHN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdFxcdHJldHVybiBlcnJvcjtcXG4gXFx0fVxcbiBcXG4tXFx0aWQgPSB1c2JfbWF0Y2hfZHluYW1pY19pZChpbnRmLCBkcml2ZXIpO1xcbi1cXHRpZiAoIWlkKVxcbi1cXHRcXHRpZCA9IHVzYl9tYXRjaF9pZChpbnRmLCBkcml2ZXItXFx1MDAzZWlkX3RhYmxlKTtcXG4tXFx0aWYgKCFpZClcXG4tXFx0XFx0cmV0dXJuIGVycm9yO1xcbitcXHRpZiAoIXVzYl9tYXRjaF9keW5hbWljX2lkKGludGYsIGRyaXZlciwgXFx1MDAyNmlkKSkge1xcbitcXHRcXHRtYXRjaGVkX2lkID0gdXNiX21hdGNoX2lkKGludGYsIGRyaXZlci1cXHUwMDNlaWRfdGFibGUpO1xcbitcXHRcXHRpZiAoIW1hdGNoZWRfaWQpXFxuK1xcdFxcdFxcdHJldHVybiBlcnJvcjtcXG4rXFx0XFx0aWQgPSAqbWF0Y2hlZF9pZDtcXG4rXFx0fVxcbiBcXG4gXFx0ZGV2X2RiZyhkZXYsIFxcXCIlcyAtIGdvdCBpZFxcXFxuXFxcIiwgX19mdW5jX18pO1xcbiBcXG5AQCAtMzkzLDcgKzM5Niw3IEBAIHN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdFxcdGludGYtXFx1MDAzZW5lZWRzX2FsdHNldHRpbmcwID0gMDtcXG4gXFx0fVxcbiBcXG4tXFx0ZXJyb3IgPSBkcml2ZXItXFx1MDAzZXByb2JlKGludGYsIGlkKTtcXG4rXFx0ZXJyb3IgPSBkcml2ZXItXFx1MDAzZXByb2JlKGludGYsIFxcdTAwMjZpZCk7XFxuIFxcdGlmIChlcnJvcilcXG4gXFx0XFx0Z290byBlcnI7XFxuIFxcbkBAIC04OTEsNyArODk0LDcgQEAgc3RhdGljIGludCB1c2JfZGV2aWNlX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcXG4gXFx0fSBlbHNlIGlmIChpc191c2JfaW50ZXJmYWNlKGRldikpIHtcXG4gXFx0XFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGY7XFxuIFxcdFxcdGNvbnN0IHN0cnVjdCB1c2JfZHJpdmVyICp1c2JfZHJ2O1xcbi1cXHRcXHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQ7XFxuK1xcdFxcdHN0cnVjdCB1c2JfZGV2aWNlX2lkIGlkO1xcbiBcXG4gXFx0XFx0LyogZGV2aWNlIGRyaXZlcnMgbmV2ZXIgbWF0Y2ggaW50ZXJmYWNlcyAqL1xcbiBcXHRcXHRpZiAoaXNfdXNiX2RldmljZV9kcml2ZXIoZHJ2KSlcXG5AQCAtOTAwLDEyICs5MDMsMTAgQEAgc3RhdGljIGludCB1c2JfZGV2aWNlX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcXG4gXFx0XFx0aW50ZiA9IHRvX3VzYl9pbnRlcmZhY2UoZGV2KTtcXG4gXFx0XFx0dXNiX2RydiA9IHRvX3VzYl9kcml2ZXIoZHJ2KTtcXG4gXFxuLVxcdFxcdGlkID0gdXNiX21hdGNoX2lkKGludGYsIHVzYl9kcnYtXFx1MDAzZWlkX3RhYmxlKTtcXG4tXFx0XFx0aWYgKGlkKVxcbitcXHRcXHRpZiAodXNiX21hdGNoX2lkKGludGYsIHVzYl9kcnYtXFx1MDAzZWlkX3RhYmxlKSlcXG4gXFx0XFx0XFx0cmV0dXJuIDE7XFxuIFxcbi1cXHRcXHRpZCA9IHVzYl9tYXRjaF9keW5hbWljX2lkKGludGYsIHVzYl9kcnYpO1xcbi1cXHRcXHRpZiAoaWQpXFxuK1xcdFxcdGlmICh1c2JfbWF0Y2hfZHluYW1pY19pZChpbnRmLCB1c2JfZHJ2LCBcXHUwMDI2aWQpKVxcbiBcXHRcXHRcXHRyZXR1cm4gMTtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9zcGNwOHg1LmNcXG5pbmRleCBjMTFkNjRiZjA4ZmJhZS4uMGU3NzE1YTAyZGY0Y2MgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuY1xcbisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9zcGNwOHg1LmNcXG5AQCAtMTMzLDE0ICsxMzMsMTQgQEAgc3RydWN0IHNwY3A4eDVfcHJpdmF0ZSB7XFxuIHN0YXRpYyBpbnQgc3BjcDh4NV9wcm9iZShzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuIHtcXG4tXFx0dXNiX3NldF9zZXJpYWxfZGF0YShzZXJpYWwsICh2b2lkICopaWQpO1xcbitcXHR1c2Jfc2V0X3NlcmlhbF9kYXRhKHNlcmlhbCwgKHZvaWQgKilpZC1cXHUwMDNlZHJpdmVyX2luZm8pO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgc3BjcDh4NV9wb3J0X3Byb2JlKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpXFxuIHtcXG4tXFx0Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkID0gdXNiX2dldF9zZXJpYWxfZGF0YShwb3J0LVxcdTAwM2VzZXJpYWwpO1xcbitcXHR1bnNpZ25lZCBpbnQgcXVpcmtzID0gKHVuc2lnbmVkIGludCkodW5zaWduZWQgbG9uZyl1c2JfZ2V0X3NlcmlhbF9kYXRhKHBvcnQtXFx1MDAzZXNlcmlhbCk7XFxuIFxcdHN0cnVjdCBzcGNwOHg1X3ByaXZhdGUgKnByaXY7XFxuIFxcbiBcXHRwcml2ID0ga3phbGxvY19vYmooKnByaXYpO1xcbkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIGludCBzcGNwOHg1X3BvcnRfcHJvYmUoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydClcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbiBcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2cHJpdi1cXHUwMDNlbG9jayk7XFxuLVxcdHByaXYtXFx1MDAzZXF1aXJrcyA9IGlkLVxcdTAwM2Vkcml2ZXJfaW5mbztcXG4rXFx0cHJpdi1cXHUwMDNlcXVpcmtzID0gcXVpcmtzO1xcbiBcXG4gXFx0dXNiX3NldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQsIHByaXYpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IuaCBiL2luY2x1ZGUvbGludXgvdXNiLmhcXG5pbmRleCAxZGE0YWQxNjEwYmNhMC4uNDlhYjhkYmI4ODVmNjUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC91c2IuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvdXNiLmhcXG5AQCAtMTE4NSw3ICsxMTg1LDggQEAgZXh0ZXJuIHNzaXplX3QgdXNiX3Nob3dfZHluaWRzKHN0cnVjdCB1c2JfZHluaWRzICpkeW5pZHMsIGNoYXIgKmJ1Zik7XFxuICAqXFx0aW50ZXJmYWNlLiAgSXQgbWF5IGFsc28gdXNlIHVzYl9zZXRfaW50ZXJmYWNlKCkgdG8gc3BlY2lmeSB0aGVcXG4gICpcXHRhcHByb3ByaWF0ZSBhbHRzZXR0aW5nLiAgSWYgdW53aWxsaW5nIHRvIG1hbmFnZSB0aGUgaW50ZXJmYWNlLFxcbiAgKlxcdHJldHVybiAtRU5PREVWLCBpZiBnZW51aW5lIElPIGVycm9ycyBvY2N1cnJlZCwgYW4gYXBwcm9wcmlhdGVcXG4tICpcXHRuZWdhdGl2ZSBlcnJubyB2YWx1ZS5cXG4rICpcXHRuZWdhdGl2ZSBlcnJubyB2YWx1ZS4gIFRoZSB1c2JfZGV2aWNlX2lkIHBhcmFtZXRlciBpcyBvbmx5IHZhbGlkIGR1cmluZ1xcbisgKlxcdHByb2JlLlxcbiAgKiBAZGlzY29ubmVjdDogQ2FsbGVkIHdoZW4gdGhlIGludGVyZmFjZSBpcyBubyBsb25nZXIgYWNjZXNzaWJsZSwgdXN1YWxseVxcbiAgKlxcdGJlY2F1c2UgaXRzIGRldmljZSBoYXMgYmVlbiAob3IgaXMgYmVpbmcpIGRpc2Nvbm5lY3RlZCBvciB0aGVcXG4gICpcXHRkcml2ZXIgbW9kdWxlIGlzIGJlaW5nIHVubG9hZGVkLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1ODoxOC45MTQ1NTg0MzZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MDExMTUzNjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDlLX0hUQ1wiLFxuICAgIFwiVVNCX1RNQ1wiLFxuICAgIFwiVVNCX1NFUklBTFwiLFxuICAgIFwiVVNCX1NFUklBTF9TUENQOFg1XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNiX3Byb2JlX2ludGVyZmFjZVwiLFxuICAgIFwidXNiX21hdGNoX2R5bmFtaWNfaWRcIixcbiAgICBcImF0aDlrX2hpZl91c2JfcHJvYmVcIixcbiAgICBcInVzYnRtY19wcm9iZVwiLFxuICAgIFwic3BjcDh4NV9wcm9iZVwiLFxuICAgIFwic3BjcDh4NV9wb3J0X3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBob3cgYHVzYl9kZXZpY2VfaWRgIGlzIHBhc3NlZCB0byBVU0IgZHJpdmVycycgYHByb2JlYCBmdW5jdGlvbnMuIEl0IGlzIG5vdyBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrIGluIGB1c2JfcHJvYmVfaW50ZXJmYWNlYCBhbmQgcGFzc2VkIGFzIGEgdGVtcG9yYXJ5IHBvaW50ZXIsIGluc3RlYWQgb2YgYSBwZXJzaXN0ZW50IHBvaW50ZXIuIFRoaXMgYWZmZWN0cyBVU0IgY29yZSBtYXRjaGluZyBhbmQgc2V2ZXJhbCBVU0IgZHJpdmVycyAoYGF0aDlrYCwgYHVzYnRtY2AsIGBzcGNwOHg1YCksIHdoaWNoIGhhZCB0byBiZSB1cGRhdGVkIHRvIHN0b3Agc3RvcmluZyB0aGUgcG9pbnRlci4gRnV6emluZyBVU0IgZGV2aWNlIGVudW1lcmF0aW9uIGNhbiB0cmlnZ2VyIHRoZXNlIHBhdGhzIGFuZCB2ZXJpZnkgdGhhdCBubyB1c2UtYWZ0ZXItZnJlZSBvciBvdGhlciBtZW1vcnkgaXNzdWVzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDFmODEzYjM0YjRiZmVlNzk2YTZkMDZkZWI4YmJhZTgzMjkwNmRjNmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAzMCAxNzo1ODoxNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG5pbmRleCA1MTUyNjdmNDhkODAzZS4uZDY1YzA5YzJiN2ZjYzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG5AQCAtMTA4Nyw3ICsxMDg3LDcgQEAgc3RhdGljIGludCBhdGg5a19oaWZfdXNiX2Rvd25sb2FkX2Z3KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcbiBcdH1cbiBcdGtmcmVlKGJ1Zik7XG4gXG4tXHRpZiAoSVNfQVI3MDEwX0RFVklDRShoaWZfZGV2LVx1MDAzZXVzYl9kZXZpY2VfaWQtXHUwMDNlZHJpdmVyX2luZm8pKVxuK1x0aWYgKElTX0FSNzAxMF9ERVZJQ0UoaGlmX2Rldi1cdTAwM2VpZF9pbmZvKSlcbiBcdFx0ZmlybV9vZmZzZXQgPSBBUjcwMTBfRklSTVdBUkVfVEVYVDtcbiBcdGVsc2VcbiBcdFx0ZmlybV9vZmZzZXQgPSBBUjkyNzFfRklSTVdBUkVfVEVYVDtcbkBAIC0xMTgyLDcgKzExODIsNyBAQCBzdGF0aWMgaW50IGF0aDlrX2hpZl9yZXF1ZXN0X2Zpcm13YXJlKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcbiBcdGlmIChNQUpPUl9WRVJTSU9OX1JFUSA9PSAxIFx1MDAyNlx1MDAyNiBoaWZfZGV2LVx1MDAzZWZ3X21pbm9yX2luZGV4ID09IDMpIHtcbiBcdFx0Y29uc3QgY2hhciAqZmlsZW5hbWU7XG4gXG4tXHRcdGlmIChJU19BUjcwMTBfREVWSUNFKGhpZl9kZXYtXHUwMDNldXNiX2RldmljZV9pZC1cdTAwM2Vkcml2ZXJfaW5mbykpXG4rXHRcdGlmIChJU19BUjcwMTBfREVWSUNFKGhpZl9kZXYtXHUwMDNlaWRfaW5mbykpXG4gXHRcdFx0ZmlsZW5hbWUgPSBGSVJNV0FSRV9BUjcwMTBfMV8xO1xuIFx0XHRlbHNlXG4gXHRcdFx0ZmlsZW5hbWUgPSBGSVJNV0FSRV9BUjkyNzE7XG5AQCAtMTE5OCw3ICsxMTk4LDcgQEAgc3RhdGljIGludCBhdGg5a19oaWZfcmVxdWVzdF9maXJtd2FyZShzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXG4gXG4gXHRcdHJldHVybiAtRU5PRU5UO1xuIFx0fSBlbHNlIHtcbi1cdFx0aWYgKElTX0FSNzAxMF9ERVZJQ0UoaGlmX2Rldi1cdTAwM2V1c2JfZGV2aWNlX2lkLVx1MDAzZWRyaXZlcl9pbmZvKSlcbitcdFx0aWYgKElTX0FSNzAxMF9ERVZJQ0UoaGlmX2Rldi1cdTAwM2VpZF9pbmZvKSlcbiBcdFx0XHRjaGlwID0gXCI3MDEwXCI7XG4gXHRcdGVsc2VcbiBcdFx0XHRjaGlwID0gXCI5MjcxXCI7XG5AQCAtMTI2MCw5ICsxMjYwLDkgQEAgc3RhdGljIHZvaWQgYXRoOWtfaGlmX3VzYl9maXJtd2FyZV9jYihjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3LCB2b2lkICpjb250ZXh0KVxuIFxuIFx0cmV0ID0gYXRoOWtfaHRjX2h3X2luaXQoaGlmX2Rldi1cdTAwM2VodGNfaGFuZGxlLFxuIFx0XHRcdFx0XHUwMDI2aGlmX2Rldi1cdTAwM2VpbnRlcmZhY2UtXHUwMDNlZGV2LFxuLVx0XHRcdFx0aGlmX2Rldi1cdTAwM2V1c2JfZGV2aWNlX2lkLVx1MDAzZWlkUHJvZHVjdCxcbitcdFx0XHRcdGhpZl9kZXYtXHUwMDNldWRldi1cdTAwM2VkZXNjcmlwdG9yLmlkUHJvZHVjdCxcbiBcdFx0XHRcdGhpZl9kZXYtXHUwMDNldWRldi1cdTAwM2Vwcm9kdWN0LFxuLVx0XHRcdFx0aGlmX2Rldi1cdTAwM2V1c2JfZGV2aWNlX2lkLVx1MDAzZWRyaXZlcl9pbmZvKTtcbitcdFx0XHRcdGhpZl9kZXYtXHUwMDNlaWRfaW5mbyk7XG4gXHRpZiAocmV0KSB7XG4gXHRcdHJldCA9IC1FSU5WQUw7XG4gXHRcdGdvdG8gZXJyX2h0Y19od19pbml0O1xuQEAgLTEzNzQsNyArMTM3NCw3IEBAIHN0YXRpYyBpbnQgYXRoOWtfaGlmX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuIFxuIFx0aGlmX2Rldi1cdTAwM2V1ZGV2ID0gdWRldjtcbiBcdGhpZl9kZXYtXHUwMDNlaW50ZXJmYWNlID0gaW50ZXJmYWNlO1xuLVx0aGlmX2Rldi1cdTAwM2V1c2JfZGV2aWNlX2lkID0gaWQ7XG4rXHRoaWZfZGV2LVx1MDAzZWlkX2luZm8gPSBpZC1cdTAwM2Vkcml2ZXJfaW5mbztcbiAjaWZkZWYgQ09ORklHX1BNXG4gXHR1ZGV2LVx1MDAzZXJlc2V0X3Jlc3VtZSA9IDE7XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmhcbmluZGV4IGRjMGIwZmE1YzMyNTc0Li5iM2U3YjBmYjU0Yjg0MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmhcbkBAIC0xMTUsNyArMTE1LDcgQEAgc3RydWN0IGNtZF9idWYge1xuIHN0cnVjdCBoaWZfZGV2aWNlX3VzYiB7XG4gXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldjtcbiBcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7XG4tXHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqdXNiX2RldmljZV9pZDtcbitcdGludCBpZF9pbmZvO1xuIFx0Y29uc3Qgdm9pZCAqZndfZGF0YTtcbiBcdHNpemVfdCBmd19zaXplO1xuIFx0c3RydWN0IGNvbXBsZXRpb24gZndfZG9uZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYyBiL2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jXG5pbmRleCBhZjlhZTU1ZGFlMTRlMC4uNTFjZDkzMjBhNzM2NmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuY1xuKysrIGIvZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmNcbkBAIC03MSw3ICs3MSw2IEBAIHN0cnVjdCB1c2J0bWNfZGV2X2NhcGFiaWxpdGllcyB7XG4gICogYWxsb2NhdGVkIGZvciBlYWNoIFVTQlRNQyBkZXZpY2UgaW4gdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uLlxuICAqL1xuIHN0cnVjdCB1c2J0bWNfZGV2aWNlX2RhdGEge1xuLVx0Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkO1xuIFx0c3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXY7XG4gXHRzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZjtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgZmlsZV9saXN0O1xuQEAgLTIzOTQsNyArMjM5Myw2IEBAIHN0YXRpYyBpbnQgdXNidG1jX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdGRhdGEtXHUwMDNlaW50ZiA9IGludGY7XG4tXHRkYXRhLVx1MDAzZWlkID0gaWQ7XG4gXHRkYXRhLVx1MDAzZXVzYl9kZXYgPSB1c2JfZ2V0X2RldihpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpKTtcbiBcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgZGF0YSk7XG4gXHRrcmVmX2luaXQoXHUwMDI2ZGF0YS1cdTAwM2VrcmVmKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jIGIvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuY1xuaW5kZXggZjYzMDA0NDE3MDU4ZTYuLmMyNjQxMGNhYmRmZTk1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuY1xuKysrIGIvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuY1xuQEAgLTIyNywxOCArMjI3LDE5IEBAIHN0YXRpYyB2b2lkIHVzYl9mcmVlX2R5bmlkcyhzdHJ1Y3QgdXNiX2RyaXZlciAqdXNiX2RydilcbiBcdH1cbiB9XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICp1c2JfbWF0Y2hfZHluYW1pY19pZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi1cdFx0XHRcdFx0XHRcdGNvbnN0IHN0cnVjdCB1c2JfZHJpdmVyICpkcnYpXG4rc3RhdGljIGJvb2wgdXNiX21hdGNoX2R5bmFtaWNfaWQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZHJpdmVyICpkcnYsXG4rXHRcdFx0XHQgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuIHtcbiBcdHN0cnVjdCB1c2JfZHluaWQgKmR5bmlkO1xuIFxuIFx0Z3VhcmQobXV0ZXgpKFx1MDAyNnVzYl9keW5pZHNfbG9jayk7XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGR5bmlkLCBcdTAwMjZkcnYtXHUwMDNlZHluaWRzLmxpc3QsIG5vZGUpIHtcbiBcdFx0aWYgKHVzYl9tYXRjaF9vbmVfaWQoaW50ZiwgXHUwMDI2ZHluaWQtXHUwMDNlaWQpKSB7XG4tXHRcdFx0cmV0dXJuIFx1MDAyNmR5bmlkLVx1MDAzZWlkO1xuK1x0XHRcdCppZCA9IGR5bmlkLVx1MDAzZWlkO1xuK1x0XHRcdHJldHVybiB0cnVlO1xuIFx0XHR9XG4gXHR9XG4tXHRyZXR1cm4gTlVMTDtcbitcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4gXG5AQCAtMzIwLDcgKzMyMSw4IEBAIHN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRzdHJ1Y3QgdXNiX2RyaXZlciAqZHJpdmVyID0gdG9fdXNiX2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbiBcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmID0gdG9fdXNiX2ludGVyZmFjZShkZXYpO1xuIFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpO1xuLVx0Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkO1xuK1x0c3RydWN0IHVzYl9kZXZpY2VfaWQgaWQ7XG4rXHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqbWF0Y2hlZF9pZDtcbiBcdGludCBlcnJvciA9IC1FTk9ERVY7XG4gXHRpbnQgbHBtX2Rpc2FibGVfZXJyb3IgPSAtRU5PREVWO1xuIFxuQEAgLTM0MCwxMSArMzQyLDEyIEBAIHN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdHJldHVybiBlcnJvcjtcbiBcdH1cbiBcbi1cdGlkID0gdXNiX21hdGNoX2R5bmFtaWNfaWQoaW50ZiwgZHJpdmVyKTtcbi1cdGlmICghaWQpXG4tXHRcdGlkID0gdXNiX21hdGNoX2lkKGludGYsIGRyaXZlci1cdTAwM2VpZF90YWJsZSk7XG4tXHRpZiAoIWlkKVxuLVx0XHRyZXR1cm4gZXJyb3I7XG4rXHRpZiAoIXVzYl9tYXRjaF9keW5hbWljX2lkKGludGYsIGRyaXZlciwgXHUwMDI2aWQpKSB7XG4rXHRcdG1hdGNoZWRfaWQgPSB1c2JfbWF0Y2hfaWQoaW50ZiwgZHJpdmVyLVx1MDAzZWlkX3RhYmxlKTtcbitcdFx0aWYgKCFtYXRjaGVkX2lkKVxuK1x0XHRcdHJldHVybiBlcnJvcjtcbitcdFx0aWQgPSAqbWF0Y2hlZF9pZDtcbitcdH1cbiBcbiBcdGRldl9kYmcoZGV2LCBcIiVzIC0gZ290IGlkXFxuXCIsIF9fZnVuY19fKTtcbiBcbkBAIC0zOTMsNyArMzk2LDcgQEAgc3RhdGljIGludCB1c2JfcHJvYmVfaW50ZXJmYWNlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdFx0aW50Zi1cdTAwM2VuZWVkc19hbHRzZXR0aW5nMCA9IDA7XG4gXHR9XG4gXG4tXHRlcnJvciA9IGRyaXZlci1cdTAwM2Vwcm9iZShpbnRmLCBpZCk7XG4rXHRlcnJvciA9IGRyaXZlci1cdTAwM2Vwcm9iZShpbnRmLCBcdTAwMjZpZCk7XG4gXHRpZiAoZXJyb3IpXG4gXHRcdGdvdG8gZXJyO1xuIFxuQEAgLTg5MSw3ICs4OTQsNyBAQCBzdGF0aWMgaW50IHVzYl9kZXZpY2VfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuIFx0fSBlbHNlIGlmIChpc191c2JfaW50ZXJmYWNlKGRldikpIHtcbiBcdFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGY7XG4gXHRcdGNvbnN0IHN0cnVjdCB1c2JfZHJpdmVyICp1c2JfZHJ2O1xuLVx0XHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQ7XG4rXHRcdHN0cnVjdCB1c2JfZGV2aWNlX2lkIGlkO1xuIFxuIFx0XHQvKiBkZXZpY2UgZHJpdmVycyBuZXZlciBtYXRjaCBpbnRlcmZhY2VzICovXG4gXHRcdGlmIChpc191c2JfZGV2aWNlX2RyaXZlcihkcnYpKVxuQEAgLTkwMCwxMiArOTAzLDEwIEBAIHN0YXRpYyBpbnQgdXNiX2RldmljZV9tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG4gXHRcdGludGYgPSB0b191c2JfaW50ZXJmYWNlKGRldik7XG4gXHRcdHVzYl9kcnYgPSB0b191c2JfZHJpdmVyKGRydik7XG4gXG4tXHRcdGlkID0gdXNiX21hdGNoX2lkKGludGYsIHVzYl9kcnYtXHUwMDNlaWRfdGFibGUpO1xuLVx0XHRpZiAoaWQpXG4rXHRcdGlmICh1c2JfbWF0Y2hfaWQoaW50ZiwgdXNiX2Rydi1cdTAwM2VpZF90YWJsZSkpXG4gXHRcdFx0cmV0dXJuIDE7XG4gXG4tXHRcdGlkID0gdXNiX21hdGNoX2R5bmFtaWNfaWQoaW50ZiwgdXNiX2Rydik7XG4tXHRcdGlmIChpZClcbitcdFx0aWYgKHVzYl9tYXRjaF9keW5hbWljX2lkKGludGYsIHVzYl9kcnYsIFx1MDAyNmlkKSlcbiBcdFx0XHRyZXR1cm4gMTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuY1xuaW5kZXggYzExZDY0YmYwOGZiYWUuLjBlNzcxNWEwMmRmNGNjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuY1xuKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuY1xuQEAgLTEzMywxNCArMTMzLDE0IEBAIHN0cnVjdCBzcGNwOHg1X3ByaXZhdGUge1xuIHN0YXRpYyBpbnQgc3BjcDh4NV9wcm9iZShzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsLFxuIFx0XHRcdFx0XHRcdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbiB7XG4tXHR1c2Jfc2V0X3NlcmlhbF9kYXRhKHNlcmlhbCwgKHZvaWQgKilpZCk7XG4rXHR1c2Jfc2V0X3NlcmlhbF9kYXRhKHNlcmlhbCwgKHZvaWQgKilpZC1cdTAwM2Vkcml2ZXJfaW5mbyk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBzcGNwOHg1X3BvcnRfcHJvYmUoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydClcbiB7XG4tXHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQgPSB1c2JfZ2V0X3NlcmlhbF9kYXRhKHBvcnQtXHUwMDNlc2VyaWFsKTtcbitcdHVuc2lnbmVkIGludCBxdWlya3MgPSAodW5zaWduZWQgaW50KSh1bnNpZ25lZCBsb25nKXVzYl9nZXRfc2VyaWFsX2RhdGEocG9ydC1cdTAwM2VzZXJpYWwpO1xuIFx0c3RydWN0IHNwY3A4eDVfcHJpdmF0ZSAqcHJpdjtcbiBcbiBcdHByaXYgPSBremFsbG9jX29iaigqcHJpdik7XG5AQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyBpbnQgc3BjcDh4NV9wb3J0X3Byb2JlKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2cHJpdi1cdTAwM2Vsb2NrKTtcbi1cdHByaXYtXHUwMDNlcXVpcmtzID0gaWQtXHUwMDNlZHJpdmVyX2luZm87XG4rXHRwcml2LVx1MDAzZXF1aXJrcyA9IHF1aXJrcztcbiBcbiBcdHVzYl9zZXRfc2VyaWFsX3BvcnRfZGF0YShwb3J0LCBwcml2KTtcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3VzYi5oIGIvaW5jbHVkZS9saW51eC91c2IuaFxuaW5kZXggMWRhNGFkMTYxMGJjYTAuLjQ5YWI4ZGJiODg1ZjY1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC91c2IuaFxuKysrIGIvaW5jbHVkZS9saW51eC91c2IuaFxuQEAgLTExODUsNyArMTE4NSw4IEBAIGV4dGVybiBzc2l6ZV90IHVzYl9zaG93X2R5bmlkcyhzdHJ1Y3QgdXNiX2R5bmlkcyAqZHluaWRzLCBjaGFyICpidWYpO1xuICAqXHRpbnRlcmZhY2UuICBJdCBtYXkgYWxzbyB1c2UgdXNiX3NldF9pbnRlcmZhY2UoKSB0byBzcGVjaWZ5IHRoZVxuICAqXHRhcHByb3ByaWF0ZSBhbHRzZXR0aW5nLiAgSWYgdW53aWxsaW5nIHRvIG1hbmFnZSB0aGUgaW50ZXJmYWNlLFxuICAqXHRyZXR1cm4gLUVOT0RFViwgaWYgZ2VudWluZSBJTyBlcnJvcnMgb2NjdXJyZWQsIGFuIGFwcHJvcHJpYXRlXG4tICpcdG5lZ2F0aXZlIGVycm5vIHZhbHVlLlxuKyAqXHRuZWdhdGl2ZSBlcnJubyB2YWx1ZS4gIFRoZSB1c2JfZGV2aWNlX2lkIHBhcmFtZXRlciBpcyBvbmx5IHZhbGlkIGR1cmluZ1xuKyAqXHRwcm9iZS5cbiAgKiBAZGlzY29ubmVjdDogQ2FsbGVkIHdoZW4gdGhlIGludGVyZmFjZSBpcyBubyBsb25nZXIgYWNjZXNzaWJsZSwgdXN1YWxseVxuICAqXHRiZWNhdXNlIGl0cyBkZXZpY2UgaGFzIGJlZW4gKG9yIGlzIGJlaW5nKSBkaXNjb25uZWN0ZWQgb3IgdGhlXG4gICpcdGRyaXZlciBtb2R1bGUgaXMgYmVpbmcgdW5sb2FkZWQuXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1ODoxOC45MTQ1NjE4OTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTk2NzYxOTMzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBc3Nlc3NpbmcgdGhlIEltcGFjdCBvZiB0aGUgVVNCIERyaXZlciBJRCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgd2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlc2Uga2VybmVsIHBhdGNoIHNlcmllcyBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgd2FycmFudCBmdXp6aW5nLiBUaGUgZmlsZXMgaW1wYWN0ZWQg4oCTIGBhdGg5ay9oaWZfdXNiLmNgLCBgdXNidG1jLmNgLCBgZHJpdmVyLmNgLCBgc3BjcDh4NS5jYCwgYW5kIGB1c2IuaGAg4oCTIGltbWVkaWF0ZWx5IGZsYWcgdGhpcyBhcyBhIHBvdGVudGlhbGx5IHNpZ25pZmljYW50IGFyZWEgZm9yIHJldmlldywgZXNwZWNpYWxseSBzaW5jZSBgZHJpdmVyLmNgIHRvdWNoZXMgdGhlIFVTQiBjb3JlLlxuXG5Mb29raW5nIGNsb3NlciwgdGhlIGtleSBzaGlmdCBpcyBob3cgYHVzYl9kZXZpY2VfaWRgIGRhdGEgaXMgaGFuZGxlZCBkdXJpbmcgdGhlIFVTQiBwcm9iZSBwcm9jZXNzLiBJdCBzZWVtcyB0aGUgcGF0Y2ggaXMgbW92aW5nIGF3YXkgZnJvbSBwYXNzaW5nIGEgcGVyc2lzdGVudCBwb2ludGVyIHRvIHRoZSBgdXNiX2RldmljZV9pZGAgc3RydWN0dXJlIChlaXRoZXIgZnJvbSB0aGUgZHluYW1pYyBJRCBsaXN0IG9yIHRoZSBkcml2ZXIncyBJRCB0YWJsZSkgdG8gcGFzc2luZyBhIHBvaW50ZXIgdG8gYSBsb2NhbGx5LWFsbG9jYXRlZCwgc3RhY2stYmFzZWQgYHVzYl9kZXZpY2VfaWRgLiBEcml2ZXJzIGNhbiBubyBsb25nZXIgc3RvcmUgdGhpcyBwb2ludGVyIGZvciBsYXRlciB1c2U7IHRoZXkncmUgbm93IGNvbXBlbGxlZCB0byBjb3B5IHRoZSBkYXRhIHRoZXkgbmVlZCBmcm9tIHRoZSBJRCBkdXJpbmcgdGhlIGBwcm9iZWAgY2FsbC4gVGhpcyBpcyBpbnRlcmVzdGluZzogaXQgbG9va3MgbGlrZSB0aGV5IGFyZSBmaXhpbmcgc29tZSBzdWJ0bGUgbWVtb3J5IHNhZmV0eSBpc3N1ZSwgc3BlY2lmaWNhbGx5IGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8uIFRoaXMgbWFrZXMgaXQgbW9yZSByb2J1c3QsIGJ1dCBpdCBtaWdodCBoYXZlIGNoYW5nZWQgaG93IHNvbWUgZHJpdmVycyB3ZXJlIGRlcGVuZGluZyBvbiBgdXNiX2RldmljZV9pZGAgLSB3aGljaCBtaWdodCBpbnRyb2R1Y2UgYSBidWcuXG5cblRoaXMgY2hhbmdlIGlzIG1vcmUgdGhhbiBjb3NtZXRpYy4gSXQgYWx0ZXJzIGNvcmUgVVNCIGRyaXZlciBtYXRjaGluZyBhbmQgcHJvYmluZyBsb2dpYywgYW5kIGl0J3MgZXNzZW50aWFsIHRvIHJlY29nbml6ZSB0aGF0IHRoaXMgaGFzIGZ1bmN0aW9uYWwgaW1wbGljYXRpb25zLiBXZSd2ZSBnb3QgYGF0aDlrYCwgYHVzYnRtY2AsIGFuZCBgc3BjcDh4NWAgZ2V0dGluZyBhZGp1c3RlZCB0byB1c2UgdGhpcyBuZXcgcGF0dGVybi5cblxuR2l2ZW4gdGhhdCB0aGVzZSBhcmUgVVNCIGNvcmUgY2hhbmdlcywgdGhlIGFuc3dlciBpcyBhbiBpbW1lZGlhdGUgeWVzLiBXZSBuZWVkIHRvIGZ1enogdGhpcyEgV2UgY2FuIHRyaWdnZXIgdGhlIGFmZmVjdGVkIGNvZGUgcGF0aHMgYnkgZnV6emluZyBVU0IgZGV2aWNlIGVudW1lcmF0aW9uIHRocm91Z2gsIGZvciBpbnN0YW5jZSwgYGR1bW15X2hjZGAgb3IgYHJhdy1nYWRnZXRgLiBXZSBjYW4gbG9vayBpbnRvIHRyaWdnZXJpbmcgYHVzYl9wcm9iZV9pbnRlcmZhY2VgIGFuZCBhbGwgaXRzIGRlcGVuZGVudHMuXG5cbk5vdywgbGV0J3MgemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBXZSBkZWZpbml0ZWx5IG5lZWQgYFVTQmAgZm9yIGdlbmVyYWwgVVNCIHN1cHBvcnQuIGBBVEg5S19IVENgIHdpbGwgYmUgcmVsZXZhbnQgZm9yIHRoZSBgYXRoOWtgIGNoYW5nZXMsIGBVU0JfVE1DYCBpcyBuZWVkZWQgZm9yIHRoZSBgdXNidG1jYCBjaGFuZ2VzLCBhbmQgYFVTQl9TRVJJQUxfU1BDUDhYNWAgaXMgbmVlZGVkIGZvciB0aGUgYHNwY3A4eDVgIGNoYW5nZXMuIEkgd2lsbCBuZWVkIHRvIHZlcmlmeSB0aG9zZSBhcmUgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgzNSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1ODozMC44ODIxODQyMjRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc4ODE4NzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBBVEg5S19IVENcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTU2PWNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE3OjU4OjMxLjE2MTAxNDQ1N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MDc4NzUzMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IFVTQl9UTUMgVmVyaWZpY2F0aW9uKipcblxuQWxyaWdodCwgKlVTQl9UTUMqLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gcXVpY2tseSBydW4gdGhyb3VnaCBteSBtZW50YWwgY2hlY2tsaXN0LiBCZWZvcmUgZGl2aW5nIGludG8gYW55dGhpbmcgc3BlY2lmaWMsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgcG90ZW50aWFsIHByb2JsZW0uIElzIHRoaXMgYSBzdHJhaWdodGZvcndhcmQgZHJpdmVyIGlzc3VlLCBvciBhcmUgd2UgbG9va2luZyBhdCBzb21ldGhpbmcgZGVlcGVyPyBJcyBpdCB0aGUgaW50ZXJmYWNlIGl0c2VsZiwgdGhlIGluc3RydW1lbnQgb24gdGhlIG90aGVyIGVuZCwgb3IgdGhlIGFwcGxpY2F0aW9uIGNvZGU/IEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBtb3N0IGJhc2ljIGFzc3VtcHRpb246IHRoZSBVU0JfVE1DIGNvbW11bmljYXRpb24gcHJvdG9jb2wgaXMgdGhlIHVuZGVybHlpbmcgaXNzdWUsIGJ1dCBJIHdhbnQgdG8gc3RheSBmbGV4aWJsZS4gVGhpcyB3aWxsIGJlIGEgc3lzdGVtYXRpYyBkaWFnbm9zdGljIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1OTMsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE3OjU4OjM0LjA2ODk2NTA0MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTU4NjgxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX1RNQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9jbGFzcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2NsYXNzL0tjb25maWc9MzE9Y29uZmlnIFVTQl9XRE1cXG4tLVxcbmRyaXZlcnMvdXNiL2NsYXNzL0tjb25maWctNDAtXFxuZHJpdmVycy91c2IvY2xhc3MvS2NvbmZpZzo0MTpjb25maWcgVVNCX1RNQ1xcbmRyaXZlcnMvdXNiL2NsYXNzL0tjb25maWctNDItXFx0dHJpc3RhdGUgXFxcIlVTQiBUZXN0IGFuZCBNZWFzdXJlbWVudCBDbGFzcyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1ODozNC4xMjg1NjE5ODZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODMzNTcyODYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBVU0JfU0VSSUFMX1NQQ1A4WDUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzIFVTQl9TRVJJQUxfU1BDUDhYNSB0aGluZy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiBvciBzb3VyY2UgY29kZSDigJMgSSBrbm93IHRoaXMgbGlrZWx5IHJlZmVyZW5jZXMgc29tZSBzcGVjaWZpYyBoYXJkd2FyZSBvciBkcml2ZXIuIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCB3aGF0IHRoaXMgbGlrZWx5IGlzLCBhbmQgZGV0ZXJtaW5lIGlmIGl0IHBlcnRhaW5zIHRvIG15IGN1cnJlbnQgcHJvamVjdC4gSXMgdGhpcyBhIGN1c3RvbSBkcml2ZXI/IEEgc3RhbmRhcmRpemVkIHByb3RvY29sPyBXaGF0IHBsYXRmb3JtIGFyZSB3ZSBkaXNjdXNzaW5nPyBUaGUgY29udGV4dCBpcyBrZXkgaGVyZS5cblxuTGV0J3MgYmVnaW4gYnkgc2VhcmNoaW5nIGZvciB0aGF0IG5hbWUgd2l0aGluIHRoZSByZWxldmFudCByZXBvc2l0b3JpZXMuIEkgbmVlZCB0byBxdWlja2x5IGdyYXNwIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LCBlc3BlY2lhbGx5IGluIHRoZSBjb250ZXh0IG9mIGFueSBzZXJpYWwgY29tbXVuaWNhdGlvbiBzeXN0ZW1zIEknbSBjdXJyZW50bHkgd29ya2luZyB3aXRoLiBJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCBpdCBpcyBub3Qgc29tZXRoaW5nIEkgYWxyZWFkeSBrbm93IGFib3V0LlxuXG5JJ2xsIGJlIGxvb2tpbmcgZm9yIGhlYWRlciBmaWxlcywgZGVmaW5pdGlvbnMsIGFuZCB1c2FnZSBleGFtcGxlcy4gSSdtIGhvcGluZyB0byBmaW5kIGNsdWVzIGFib3V0IGl0cyB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZSBhbmQgYW55IHBvdGVudGlhbCBnb3RjaGFzLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgaXQncyBzb21ldGhpbmcgSSBuZWVkIHRvIGludGVncmF0ZSwgbW9kaWZ5LCBvciBzaW1wbHkgYmUgYXdhcmUgb2YuIFRoZSBnb2FsIGlzIGEgcXVpY2ssIGluZm9ybWVkIGRlY2lzaW9uIG9uIGhvdyB0byBwcm9jZWVkLCBhbmQgd2hldGhlciB0aGlzIGltcGFjdHMgbXkgb3ZlcmFsbCBkZXNpZ24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NzgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1ODo0MS45NjIxMzc0NzlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkyNTkxMDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9TRVJJQUxfU1BDUDhYNVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZz00NzU9Y29uZmlnIFVTQl9TRVJJQUxfUVVBTENPTU1cXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ4NC1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo0ODU6Y29uZmlnIFVTQl9TRVJJQUxfU1BDUDhYNVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ4Ni1cXHR0cmlzdGF0ZSBcXFwiVVNCIFNQQ1A4eDUgVVNCIFRvIFNlcmlhbCBEcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE3OjU4OjQyLjAyMTQwNjgwNFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NzQwMTgzODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFVTQiBQcm9iZSBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2Ugc3BlY2lmaWMgZnVuY3Rpb25zOiBgdXNiX3Byb2JlX2ludGVyZmFjZWAsIGB1c2JfbWF0Y2hfZHluYW1pY19pZGAsIGBhdGg5a19oaWZfdXNiX3Byb2JlYCwgYHVzYnRtY19wcm9iZWAsIGBzcGNwOHg1X3Byb2JlYCwgYW5kIGBzcGNwOHg1X3BvcnRfcHJvYmVgLiBUaGVzZSBzZWVtIHRvIGJlIHRoZSBrZXkgcGxheWVycyBpbiB0aGUgVVNCIHByb2JpbmcgcHJvY2VzcywgYW5kIHRoZXkncmUgdGhlIG9uZXMgSSBuZWVkIHRvIHplcm8gaW4gb24gdG8gdW5kZXJzdGFuZCB0aGlzIHBhcnRpY3VsYXIgbW9kaWZpY2F0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGV5J3JlIGFjdHVhbGx5IHJlbGV2YW50LCBhbmQgaWYgdGhlIHNjb3BlIG9mIHRoZWlyIGFjdGlvbnMgaXMgdGFyZ2V0ZWQgZW5vdWdoIHRvIHBpbnBvaW50IHRoZSBhbGxvY2F0aW9uIGNoYW5nZXMuXG5cbmB1c2JfcHJvYmVfaW50ZXJmYWNlYCBpcyBhIGNvcmUgZnVuY3Rpb24sIHdoaWNoIG1ha2VzIGl0IHBvdGVudGlhbGx5IHByb2JsZW1hdGljIGJlY2F1c2UgaXQncyB1c2VkICpldmVyeXdoZXJlKiwgYW5kIGl0IGhhbmRsZXMgYSBsb3Qgb2YgZ2VuZXJpYyBVU0IgaW50ZXJhY3Rpb25zLiBIb3dldmVyLCBpdCdzIGFsc28gdGhlIGV4YWN0IHBsYWNlIHdoZXJlIHRoZSBgdXNiX2RldmljZV9pZGAgYWxsb2NhdGlvbiBvY2N1cnMsIHNvIGl0J3MgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGlzIGNoYW5nZS4gU2ltaWxhcmx5LCBgdXNiX21hdGNoX2R5bmFtaWNfaWRgIGhhcyBiZWVuIG1vZGlmaWVkLCB3aGljaCBpcyBhbm90aGVyIHNpZ25pZmljYW50IHBvaW50IHRvIGNvbnNpZGVyLlxuXG5Ob3cgSSdtIGRpdmluZyBkZWVwZXIsIGFuZCBgdXNiX3Byb2JlX2ludGVyZmFjZWAgaXMgdGhlIGZpcnN0IGZ1bmN0aW9uIEkgd2FudCB0byBkaXNzZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Mjg3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE3OjU4OjQ2LjU5NTQyODkwNloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk5MTMyNzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXNiX3Byb2JlX2ludGVyZmFjZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmM9MzA0PXN0YXRpYyBpbnQgdXNiX3VuYmluZF9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYy0zMTgtLyogY2FsbGVkIGZyb20gZHJpdmVyIGNvcmUgd2l0aCBkZXYgbG9ja2VkICovXFxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYzozMTk6c3RhdGljIGludCB1c2JfcHJvYmVfaW50ZXJmYWNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jLTMyMC17XFxuLS1cXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jPTEwNjE9aW50IHVzYl9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHVzYl9kcml2ZXIgKm5ld19kcml2ZXIsIHN0cnVjdCBtb2R1bGUgKm93bmVyLFxcbi0tXFxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYy0xMDcwLVxcdG5ld19kcml2ZXItXFx1MDAzZWRyaXZlci5idXMgPSBcXHUwMDI2dXNiX2J1c190eXBlO1xcbmRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmM6MTA3MTpcXHRuZXdfZHJpdmVyLVxcdTAwM2Vkcml2ZXIucHJvYmUgPSB1c2JfcHJvYmVfaW50ZXJmYWNlO1xcbmRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmMtMTA3Mi1cXHRuZXdfZHJpdmVyLVxcdTAwM2Vkcml2ZXIucmVtb3ZlID0gdXNiX3VuYmluZF9pbnRlcmZhY2U7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE3OjU4OjQ2LjY3NTM0OTcwOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTg1MDgzNjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgdXNiX21hdGNoX2R5bmFtaWNfaWRgKipcblxuT2theSwgdGltZSB0byBkaXNzZWN0IGB1c2JfbWF0Y2hfZHluYW1pY19pZGAuIEknbSBzdGFydGluZyBoZXJlIGJlY2F1c2UgSSBrbm93IGR5bmFtaWMgSURzIGNhbiBiZSB0cmlja3kuIExldCBtZSByZWZyZXNoIG15IG1lbW9yeSBvbiBpdHMgcHVycG9zZS4gQWgsIHllcywgaXQncyB0aGUgZnVuY3Rpb24gdGhhdCB0cmllcyB0byBmaW5kIGEgZHJpdmVyIG1hdGNoIGZvciBhIFVTQiBkZXZpY2Ugd2hlbiB0aGUgdHlwaWNhbCBzdGF0aWMgSUQgdGFibGUgaXNuJ3Qgc3VmZmljaWVudCwgcmlnaHQ/IEl0J3MgdGhlIGZhbGxiYWNrIG1lY2hhbmlzbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSAqaG93KiBpdCdzIGRvaW5nIHRoYXQgZHluYW1pYyBtYXRjaGluZyDigJMgd2hhdCdzIHRoZSBhbGdvcml0aG0/IElzIGl0IHJlbHlpbmcgb24gZGVzY3JpcHRvcnMsIHNvbWUgZm9ybSBvZiBwcm9iaW5nLCBvciBzb21ldGhpbmcgbW9yZSBjbGV2ZXI/IFNwZWNpZmljYWxseSwgSSdtIGludGVyZXN0ZWQgaW4gcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGVkZ2UgY2FzZXMuIEFyZSB0aGVyZSBhbnkga25vd24gaXNzdWVzIHdpdGggdGhpcyBmdW5jdGlvbj8gQW55IHJhY2UgY29uZGl0aW9ucywgcGVyaGFwcz8gQW5kIG1vc3QgaW1wb3J0YW50bHksIGhvdyBpcyBpdCBoYW5kbGluZyB0aGUgdmFyaW91cyBVU0IgdHJhbnNmZXIgdHlwZXM/IERvZXMgaXQgY29ycmVjdGx5IGRpZmZlcmVudGlhdGUgYmV0d2VlbiBjb250cm9sLCBidWxrLCBpbnRlcnJ1cHQgYW5kIGlzb2Nocm9ub3VzIHRyYW5zZmVycyB3aGlsZSBkb2luZyB0aGUgZHluYW1pYyBJRCBtYXRjaGluZz8gSSBuZWVkIHRvIGNoZWNrIGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBVU0IgY29yZSwgdGhlIGRldmljZSdzIGRlc2NyaXB0b3JzLCBhbmQgdGhlIHBvdGVudGlhbCBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbi4gTGV0J3Mgc2VlIGhvdyBpdCBtYWtlcyB0aGUgZGVjaXNpb24sIGVzcGVjaWFsbHkgd2hhdCB0aGUgY3JpdGVyaWEgZm9yIGEgbWF0Y2ggbG9vayBsaWtlLiBBbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5NjYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1ODo1MC42NjA0MzU5OThaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNjc3NzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVzYl9tYXRjaF9keW5hbWljX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYz0yMTk9c3RhdGljIHZvaWQgdXNiX2ZyZWVfZHluaWRzKHN0cnVjdCB1c2JfZHJpdmVyICp1c2JfZHJ2KVxcbi0tXFxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYy0yMjktXFxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYzoyMzA6c3RhdGljIGJvb2wgdXNiX21hdGNoX2R5bmFtaWNfaWQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZHJpdmVyICpkcnYsXFxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYy0yMzEtXFx0XFx0XFx0XFx0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmM9MzE5PXN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jLTM0NC1cXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jOjM0NTpcXHRpZiAoIXVzYl9tYXRjaF9keW5hbWljX2lkKGludGYsIGRyaXZlciwgXFx1MDAyNmlkKSkge1xcbmRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmMtMzQ2LVxcdFxcdG1hdGNoZWRfaWQgPSB1c2JfbWF0Y2hfaWQoaW50ZiwgZHJpdmVyLVxcdTAwM2VpZF90YWJsZSk7XFxuLS1cXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jPTg3MT1zdGF0aWMgaW50IHVzYl9kZXZpY2VfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxcbi0tXFxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYy05MDgtXFxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYzo5MDk6XFx0XFx0aWYgKHVzYl9tYXRjaF9keW5hbWljX2lkKGludGYsIHVzYl9kcnYsIFxcdTAwMjZpZCkpXFxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYy05MTAtXFx0XFx0XFx0cmV0dXJuIDE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE3OjU4OjUwLjcyMTEyMDU4MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzYwMDU1OTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYGF0aDlrX2hpZl91c2JfcHJvYmVgKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gdGhpcy4gVGhlIG1lbnRhbCBjaGVja2xpc3Qgc3RhcnRzIHdpdGggYGF0aDlrX2hpZl91c2JfcHJvYmVgLiBJbW1lZGlhdGVseSwgSeKAmW0gdGhpbmtpbmcg4oCTIHJpZ2h0LCBVU0IgcHJvYmUgZnVuY3Rpb24uIFRoYXTigJlzIHRoZSBlbnRyeSBwb2ludCwgdGhlIGZpcnN0IHBsYWNlIHRoZSBzeXN0ZW0gdHJpZXMgdG8gYnJpbmcgdXAgYW4gQXRoZXJvcyBBUjkwMDAtc2VyaWVzIFdpRmkgZGV2aWNlIGNvbm5lY3RlZCBvdmVyIFVTQi4gR290dGEgYmUgZmFtaWxpYXIgd2l0aCB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLCBwb3dlciBtYW5hZ2VtZW50LCByZXNvdXJjZSBhbGxvY2F0aW9u4oCmIGV2ZXJ5dGhpbmcgaGluZ2VzIG9uIHRoaXMgZnVuY3Rpb24uIEknbSBleHBlY3RpbmcgdG8gc2VlIHRoZSB1c3VhbCBzdXNwZWN0czogZGV2aWNlIElEIG1hdGNoaW5nIGFnYWluc3QgdGhlIFVTQiBkZXZpY2UgdGFibGUsIHJlc291cmNlIHJlcXVlc3RzIGZvciBETUEsIGludGVycnVwdHMsIG1heWJlIHNvbWUgcGxhdGZvcm0tc3BlY2lmaWMgaW5pdGlhbGl6YXRpb25zLCBhbmQgdGhlIGNydWNpYWwgY2FsbCB0byB0aGUgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIgKEhBTCkgZm9yIHRoZSBjaGlwc2V0LiBJJ2xsIG5lZWQgdG8gbG9vayBmb3IgZXJyb3IgaGFuZGxpbmcsIG9mIGNvdXJzZTsgd2hhdCBoYXBwZW5zIGlmIHRoZSBVU0IgZGV2aWNlIGlzbid0IHJlY29nbml6ZWQsIG9yIGlmIHRoZXJlJ3MgYSBwcm9ibGVtIHdpdGggcmVzb3VyY2UgYWxsb2NhdGlvbj8gQW5kLCBob3cgaXMgdGhpcyBwcm9iZSBmdW5jdGlvbiByZWxhdGVkIHRvIHRoZSByZXN0IG9mIHRoZSBhdGg5ayBkcml2ZXI/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2MzksIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1ODo1NC40ODExNzk1MTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMjMyMjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDlrX2hpZl91c2JfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTEyOTA9c3RhdGljIGludCBzZW5kX2VqZWN0X2NvbW1hbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMTM0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjEzNDU6c3RhdGljIGludCBhdGg5a19oaWZfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xMzQ2LVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTE1MDk9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGF0aDlrX2hpZl91c2JfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMTUxMC1cXHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MTUxMTpcXHQucHJvYmUgPSBhdGg5a19oaWZfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMTUxMi1cXHQuZGlzY29ubmVjdCA9IGF0aDlrX2hpZl91c2JfZGlzY29ubmVjdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTc6NTg6NTQuNTQzNDE5Nzg3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5ODYyNzkzNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipEZWJ1Z2dpbmcgdGhlIFVTQlRNQyBQcm9iZSBGdW5jdGlvbioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYHVzYnRtY19wcm9iZWAuIFRoaXMgbGlrZWx5IG1lYW5zIEknbSB0cm91Ymxlc2hvb3Rpbmcgc29tZSBVU0JUTUMgZHJpdmVyLXJlbGF0ZWQgaXNzdWUuIFBlcmhhcHMgYSBkZXZpY2UgaXNuJ3QgYmVpbmcgcmVjb2duaXplZCwgb3IgaXQncyBtaXNiZWhhdmluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyB3aXRoaW4gdGhhdCBwcm9iZSBmdW5jdGlvbi4gSXMgaXQgZmFpbGluZyB0byBtYXRjaCBhIGRldmljZSBJRD8gSXMgdGhlcmUgYW4gZXJyb3IgZHVyaW5nIGluaXRpYWxpemF0aW9uPyBJcyBpdCBldmVuIGJlaW5nIGNhbGxlZCBpbiB0aGUgZmlyc3QgcGxhY2U/IEknbGwgcHJvYmFibHkgc3RhcnQgYnkgc3RlcHBpbmcgdGhyb3VnaCBpdCB3aXRoIGEgZGVidWdnZXIgb3IgYWRkaW5nIHNvbWUgcHJpbnQgc3RhdGVtZW50cyB0byBjaGVjayB3aGF0IGNvbmRpdGlvbnMgYXJlIG1ldCBhbmQgd2hlcmUgdGhlIGNvZGUgYnJhbmNoZXMuIE15IGV4cGVyaWVuY2UgaGFzIHRhdWdodCBtZSB0aGF0IHRoZSBkZXZpbCBpcyB1c3VhbGx5IGluIHRoZSBkZXRhaWxzIHdpdGhpbiB0aGF0IHByb2Jpbmcgc3RhZ2UuIExldCdzIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyNjYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1ODo1Ny41Mjk3MDIwODVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMTc3Mzc3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1c2J0bWNfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmM9MjM2OT1zdGF0aWMgdm9pZCB1c2J0bWNfZnJlZV9pbnQoc3RydWN0IHVzYnRtY19kZXZpY2VfZGF0YSAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jLTIzODAtXFxuZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmM6MjM4MTpzdGF0aWMgaW50IHVzYnRtY19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG5kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYy0yMzgyLVxcdFxcdFxcdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jPTI2MDg9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHVzYnRtY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYy0yNjEwLVxcdC5pZF90YWJsZVxcdD0gdXNidG1jX2RldmljZXMsXFxuZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmM6MjYxMTpcXHQucHJvYmVcXHRcXHQ9IHVzYnRtY19wcm9iZSxcXG5kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYy0yNjEyLVxcdC5kaXNjb25uZWN0XFx0PSB1c2J0bWNfZGlzY29ubmVjdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTc6NTg6NTcuNzQxNDgyMDE0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzIyMzYxOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gd2hhdCBJJ2QgYmUgdGhpbmtpbmcgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDpcblxuKipJbml0aWFsIERpYWdub3N0aWMgU3RlcHMqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwIGludG8gdGhlIGlzc3VlLCBJIG5lZWQgYSBjbGVhciBiYXNlbGluZS4gTXkgZmlyc3Qgc3RlcCBpcyB0byBxdWlja2x5IHZlcmlmeSB0aGUgZnVuZGFtZW50YWwgcHJvYmVzOiBJJ20gZ29pbmcgdG8gY2hlY2sgYm90aCBgc3BjcDh4NV9wcm9iZWAgYW5kIGBzcGNwOHg1X3BvcnRfcHJvYmVgLiBUaGVzZSBhcmUgdGhlIGNydWNpYWwgZW50cnkgcG9pbnRzOyB0aGV5IHRlbGwgbWUgd2hldGhlciB0aGUgY29yZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGluZGl2aWR1YWwgcG9ydCBjb25maWd1cmF0aW9ucyBhcmUgc3VjY2VlZGluZyBvciBmYWlsaW5nLiBHcmFiYmluZyB0aGVzZSBlYXJseSBhbGxvd3MgZm9yIGFuIGluZm9ybWVkIGRpcmVjdGlvbiwgdG8gc2VlIHdoZXJlIHRoZSBwcm9jZXNzIG1heSBiZSBmYWlsaW5nLiBDaGVja2luZyB0aGVtIHdpbGwgcHJldmVudCBhIGxlbmd0aHkgZGVlcCBkaXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzU4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTc6NTk6MDAuOTEzNzIxMTU0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTkxMTkzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzcGNwOHg1X3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL3NlcmlhbC9zcGNwOHg1LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuYz0xMjc9c3RydWN0IHNwY3A4eDVfcHJpdmF0ZSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jLTEzMi1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jOjEzMzpzdGF0aWMgaW50IHNwY3A4eDVfcHJvYmUoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbCxcXG5kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jLTEzNC1cXHRcXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jPTQ1MT1zdGF0aWMgc3RydWN0IHVzYl9zZXJpYWxfZHJpdmVyIHNwY3A4eDVfZGV2aWNlID0ge1xcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuYy00NjUtXFx0LnRpb2Ntc2V0XFx0XFx0PSBzcGNwOHg1X3Rpb2Ntc2V0LFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9zcGNwOHg1LmM6NDY2OlxcdC5wcm9iZVxcdFxcdFxcdD0gc3BjcDh4NV9wcm9iZSxcXG5kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jLTQ2Ny1cXHQucG9ydF9wcm9iZVxcdFxcdD0gc3BjcDh4NV9wb3J0X3Byb2JlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1OTowMC45OTU2NDIyNTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcxNDM2NTM2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBVU0IgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSByZWNvZ25pemUgdGhlIGltcGxpY2F0aW9ucy4gVGhlIGNvcmUgY2hhbmdlIGlzIGhvdyBgdXNiX2RldmljZV9pZGAgaXMgaGFuZGxlZCwgbW92aW5nIGZyb20gYSBwZXJzaXN0ZW50IHBvaW50ZXIgdG8gYSB0ZW1wb3Jhcnkgc3RhY2sgYWxsb2NhdGlvbi4gVGhhdCdzIGEgc2lnbmlmaWNhbnQgc2hpZnQgaW4gbWVtb3J5IG1hbmFnZW1lbnQgYW5kIEknbSBpbnN0YW50bHkgc2VlaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0LiBJdCdzIGVzc2VudGlhbGx5IGFsdGVyaW5nIGhvdyB0aGUgVVNCIGNvcmUgbWF0Y2hlcyBkZXZpY2VzIHRvIGRyaXZlcnMgZHVyaW5nIHByb2JlIG9wZXJhdGlvbnMuXG5cbk5vdywgbXkgZm9jdXMgaXMgb24gZW5zdXJpbmcgbm8gdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIGFyaXNlIGZyb20gdGhpcyBjaGFuZ2UuIEl0IGxvb2tzIGxpa2UgdGhlIHRlYW0gaGFzIGFscmVhZHkgaWRlbnRpZmllZCB0aGF0IGBhdGg5a2AsIGB1c2J0bWNgLCBhbmQgYHNwY3A4eDVgIFVTQiBkcml2ZXJzIGFyZSBkaXJlY3RseSBhZmZlY3RlZCBiZWNhdXNlIHRoZXkgd2VyZSBzdG9yaW5nIHRoZSBvbGQgcG9pbnRlci4gU21hcnQuXG5cbkkgY2FuIHNlZSB0aGUgZnV6emluZyBzdHJhdGVneSBpcyBzb3VuZDsgaXQncyBkZXNpZ25lZCB0byB0cmlnZ2VyIHRoZXNlIGFmZmVjdGVkIHBhdGhzIGR1cmluZyBVU0IgZGV2aWNlIGVudW1lcmF0aW9uIHRvIHJlYWxseSBzdHJlc3MtdGVzdCB0aGUgbmV3IGltcGxlbWVudGF0aW9uLiBHb29kLlxuXG5JJ20gbWFraW5nIGEgbWVudGFsIG5vdGUgb2YgdGhvc2Uga2V5IHN5bWJvbHM6IGB1c2JfcHJvYmVfaW50ZXJmYWNlYCwgYHVzYl9tYXRjaF9keW5hbWljX2lkYCwgYGF0aDlrX2hpZl91c2JfcHJvYmVgLCBgdXNidG1jX3Byb2JlYCwgYHNwY3A4eDVfcHJvYmVgLCBhbmQgYHNwY3A4eDVfcG9ydF9wcm9iZWAuIFRoZXNlIGFyZSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRvIHNjcnV0aW5pemUuIEknbSBnb2luZyB0byBzdGFydCB0aGVyZSBhbmQgdHJhY2UgdGhlIGxvZ2ljLlxuXG5CZWZvcmUgSSBkaWcgaW4gdG9vIGRlZXAsIEkgd2FudCB0byBjb25maXJtIEkgaGF2ZSBhbGwgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucyBlbmFibGVkLiBUaGV5J3ZlIGxpc3RlZCBgQVRIOUtfSFRDYCwgYFVTQl9UTUNgLCBhbmQgYFVTQl9TRVJJQUxfU1BDUDhYNWAuIGBVU0JgIGlzIGFscmVhZHkgYnJvYWRseSBlbmFibGVkLCBzbyB0aGF0J3MgZ29vZC4gQW5kIHRoZSBgVVNCX1NFUklBTGAgY29uZmlnIGlzIG5lY2Vzc2FyeSBmb3IgYFVTQl9TRVJJQUxfU1BDUDhYNWAsIHNvIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGluIHRoZSBgZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWdgIGZpbGUsIGp1c3QgdG8gYmUgc3VyZS4gSSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBhcmUgYWxsIGVuYWJsZWQgaW4gbXkgdGVzdCBzZXR1cC4gTm93LCBsZXQncyBzZWUgd2hhdCdzIGNoYW5nZWQgYW5kIGxvb2sgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjM2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE3OjU5OjA2LjcxMDAxMTI0NloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1NDM4MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfU0VSSUFMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTUtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NjptZW51Y29uZmlnIFVTQl9TRVJJQUxcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJVU0IgU2VyaWFsIENvbnZlcnRlciBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc9MjE9aWYgVVNCX1NFUklBTFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTIyLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjIzOmNvbmZpZyBVU0JfU0VSSUFMX0NPTlNPTEVcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJVU0IgU2VyaWFsIENvbnNvbGUgZGV2aWNlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00NS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo0Njpjb25maWcgVVNCX1NFUklBTF9HRU5FUklDXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDctXFx0Ym9vbCBcXFwiVVNCIEdlbmVyaWMgU2VyaWFsIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTU0LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjU1OmNvbmZpZyBVU0JfU0VSSUFMX1NJTVBMRVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTU2LVxcdHRyaXN0YXRlIFxcXCJVU0IgU2VyaWFsIFNpbXBsZSBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy03OC1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo3OTpjb25maWcgVVNCX1NFUklBTF9BSVJDQUJMRVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTgwLVxcdHRyaXN0YXRlIFxcXCJVU0IgQUlSY2FibGUgQmx1ZXRvb3RoIERvbmdsZSBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy04Ni1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo4Nzpjb25maWcgVVNCX1NFUklBTF9BUkszMTE2XFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctODgtXFx0dHJpc3RhdGUgXFxcIlVTQiBBUksgTWljcm8gMzExNiBVU0IgU2VyaWFsIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTk1LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjk2OmNvbmZpZyBVU0JfU0VSSUFMX0JFTEtJTlxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTk3LVxcdHRyaXN0YXRlIFxcXCJVU0IgQmVsa2luIGFuZCBQZXJhY29tIFNpbmdsZSBQb3J0IFNlcmlhbCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xMDUtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MTA2OmNvbmZpZyBVU0JfU0VSSUFMX0NIMzQxXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMTA3LVxcdHRyaXN0YXRlIFxcXCJVU0IgV2luY2hpcGhlYWQgQ0gzNDEgU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTExNC1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoxMTU6Y29uZmlnIFVTQl9TRVJJQUxfV0hJVEVIRUFUXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMTE2LVxcdHRyaXN0YXRlIFxcXCJVU0IgQ29ubmVjdFRlY2ggV2hpdGVIRUFUIFNlcmlhbCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xMjQtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MTI1OmNvbmZpZyBVU0JfU0VSSUFMX0RJR0lfQUNDRUxFUE9SVFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTEyNi1cXHR0cmlzdGF0ZSBcXFwiVVNCIERpZ2kgSW50ZXJuYXRpb25hbCBBY2NlbGVQb3J0IFVTQiBTZXJpYWwgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMTM1LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjEzNjpjb25maWcgVVNCX1NFUklBTF9DUDIxMFhcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xMzctXFx0dHJpc3RhdGUgXFxcIlVTQiBDUDIxMHggZmFtaWx5IG9mIFVBUlQgQnJpZGdlIENvbnRyb2xsZXJzXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMTQ0LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjE0NTpjb25maWcgVVNCX1NFUklBTF9DWVBSRVNTX004XFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMTQ2LVxcdHRyaXN0YXRlIFxcXCJVU0IgQ3lwcmVzcyBNOCBVU0IgU2VyaWFsIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTE1OC1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoxNTk6Y29uZmlnIFVTQl9TRVJJQUxfRU1QRUdcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xNjAtXFx0dHJpc3RhdGUgXFxcIlVTQiBFbXBlZyBlbXBlZy1jYXIgTWFyayBJL0lJIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTE2OS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoxNzA6Y29uZmlnIFVTQl9TRVJJQUxfRlRESV9TSU9cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xNzEtXFx0dHJpc3RhdGUgXFxcIlVTQiBGVERJIFNpbmdsZSBQb3J0IFNlcmlhbCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xODItXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MTgzOmNvbmZpZyBVU0JfU0VSSUFMX1ZJU09SXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMTg0LVxcdHRyaXN0YXRlIFxcXCJVU0IgSGFuZHNwcmluZyBWaXNvciAvIFBhbG0gbTUweCAvIFNvbnkgQ2xpZSBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xOTMtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MTk0OmNvbmZpZyBVU0JfU0VSSUFMX0lQQVFcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xOTUtXFx0dHJpc3RhdGUgXFxcIlVTQiBQb2NrZXRQQyBQREEgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjA0LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjIwNTpjb25maWcgVVNCX1NFUklBTF9JUlxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTIwNi1cXHR0cmlzdGF0ZSBcXFwiVVNCIElSIERvbmdsZSBTZXJpYWwgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjE0LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjIxNTpjb25maWcgVVNCX1NFUklBTF9FREdFUE9SVFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTIxNi1cXHR0cmlzdGF0ZSBcXFwiVVNCIEluc2lkZSBPdXQgRWRnZXBvcnQgU2VyaWFsIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTIzOS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoyNDA6Y29uZmlnIFVTQl9TRVJJQUxfRURHRVBPUlRfVElcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yNDEtXFx0dHJpc3RhdGUgXFxcIlVTQiBJbnNpZGUgT3V0IEVkZ2Vwb3J0IFNlcmlhbCBEcml2ZXIgKFRJIGRldmljZXMpXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjQ5LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjI1MDpjb25maWcgVVNCX1NFUklBTF9GODEyMzJcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yNTEtXFx0dHJpc3RhdGUgXFxcIlVTQiBGaW50ZWsgRjgxMjMyIFNpbmdsZSBQb3J0IFNlcmlhbCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yNTgtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MjU5OmNvbmZpZyBVU0JfU0VSSUFMX0Y4MTUzWFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTI2MC1cXHR0cmlzdGF0ZSBcXFwiVVNCIEZpbnRlayBGODE1MzIvNTM0IE11bHRpLVBvcnRzIFNlcmlhbCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yNjgtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MjY5OmNvbmZpZyBVU0JfU0VSSUFMX0dBUk1JTlxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTI3MC1cXHR0cmlzdGF0ZSBcXFwiVVNCIEdhcm1pbiBHUFMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjgwLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjI4MTpjb25maWcgVVNCX1NFUklBTF9JUFdcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yODItXFx0dHJpc3RhdGUgXFxcIlVTQiBJUFdpcmVsZXNzICgzRyBVTVRTIFRERCkgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjkwLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjI5MTpjb25maWcgVVNCX1NFUklBTF9JVVVcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yOTItXFx0dHJpc3RhdGUgXFxcIlVTQiBJbmZpbml0eSBVU0IgVW5saW1pdGVkIFBob2VuaXggRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzAwLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjMwMTpjb25maWcgVVNCX1NFUklBTF9LRVlTUEFOX1BEQVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTMwMi1cXHR0cmlzdGF0ZSBcXFwiVVNCIEtleXNwYW4gUERBIC8gWGlyY29tIFNpbmdsZSBQb3J0IFNlcmlhbCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zMTEtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MzEyOmNvbmZpZyBVU0JfU0VSSUFMX0tFWVNQQU5cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zMTMtXFx0dHJpc3RhdGUgXFxcIlVTQiBLZXlzcGFuIFVTQS14eHggU2VyaWFsIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTMyNS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzozMjY6Y29uZmlnIFVTQl9TRVJJQUxfS0xTSVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTMyNy1cXHR0cmlzdGF0ZSBcXFwiVVNCIEtMNUtVU0IxMDUgKFBhbG1jb25uZWN0KSBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zNDAtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MzQxOmNvbmZpZyBVU0JfU0VSSUFMX0tPQklMX1NDVFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM0Mi1cXHR0cmlzdGF0ZSBcXFwiVVNCIEtPQklMIGNoaXBjYXJkIHJlYWRlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM1Ny1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzozNTg6Y29uZmlnIFVTQl9TRVJJQUxfTUNUX1UyMzJcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zNTktXFx0dHJpc3RhdGUgXFxcIlVTQiBNQ1QgU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM2OS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzozNzA6Y29uZmlnIFVTQl9TRVJJQUxfTUVUUk9cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zNzEtXFx0dHJpc3RhdGUgXFxcIlVTQiBNZXRyb2xvZ2ljIEluc3RydW1lbnRzIFVTQi1QT1MgQmFyY29kZSBTY2FubmVyIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM3Ny1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzozNzg6Y29uZmlnIFVTQl9TRVJJQUxfTU9TNzcyMFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM3OS1cXHR0cmlzdGF0ZSBcXFwiVVNCIE1vc2NoaXAgNzcyMCBTZXJpYWwgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzg2LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjM4Nzpjb25maWcgVVNCX1NFUklBTF9NT1M3NzE1X1BBUlBPUlRcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zODgtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgcGFyYWxsZWwgcG9ydCBvbiB0aGUgTW9zY2hpcCA3NzE1XFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzk2LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjM5Nzpjb25maWcgVVNCX1NFUklBTF9NT1M3ODQwXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzk4LVxcdHRyaXN0YXRlIFxcXCJVU0IgTW9zY2hpcCA3ODQwLzc4MjAgVVNCIFNlcmlhbCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00MTAtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NDExOmNvbmZpZyBVU0JfU0VSSUFMX01YVVBPUlRcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00MTItXFx0dHJpc3RhdGUgXFxcIlVTQiBNb3hhIFVQT1JUIFNlcmlhbCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00MzktXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NDQwOmNvbmZpZyBVU0JfU0VSSUFMX05BVk1BTlxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ0MS1cXHR0cmlzdGF0ZSBcXFwiVVNCIE5hdm1hbiBHUFMgZGV2aWNlXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDQ1LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjQ0Njpjb25maWcgVVNCX1NFUklBTF9QTDIzMDNcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00NDctXFx0dHJpc3RhdGUgXFxcIlVTQiBQcm9saWZpYyAyMzAzIFNpbmdsZSBQb3J0IFNlcmlhbCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00NTQtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NDU1OmNvbmZpZyBVU0JfU0VSSUFMX09USTY4NThcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00NTYtXFx0dHJpc3RhdGUgXFxcIlVTQiBPdXJzIFRlY2hub2xvZ3kgSW5jLiBPVGktNjg1OCBVU0IgVG8gUlMyMzIgQnJpZGdlIENvbnRyb2xsZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00NjMtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NDY0OmNvbmZpZyBVU0JfU0VSSUFMX1FDQVVYXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDY1LVxcdHRyaXN0YXRlIFxcXCJVU0IgUXVhbGNvbW0gQXV4aWxpYXJ5IFNlcmlhbCBQb3J0IERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ3NC1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo0NzU6Y29uZmlnIFVTQl9TRVJJQUxfUVVBTENPTU1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00NzYtXFx0dHJpc3RhdGUgXFxcIlVTQiBRdWFsY29tbSBTZXJpYWwgbW9kZW1cXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00ODQtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NDg1OmNvbmZpZyBVU0JfU0VSSUFMX1NQQ1A4WDVcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00ODYtXFx0dHJpc3RhdGUgXFxcIlVTQiBTUENQOHg1IFVTQiBUbyBTZXJpYWwgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDkzLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjQ5NDpjb25maWcgVVNCX1NFUklBTF9TQUZFXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDk1LVxcdHRyaXN0YXRlIFxcXCJVU0IgU2FmZSBTZXJpYWwgKEVuY2Fwc3VsYXRlZCkgRHJpdmVyXFxcIlxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ5Ni1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo0OTc6Y29uZmlnIFVTQl9TRVJJQUxfU0FGRV9QQURERURcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00OTgtXFx0Ym9vbCBcXFwiVVNCIFNlY3VyZSBFbmNhcHN1bGF0ZWQgRHJpdmVyIC0gUGFkZGVkXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTAwLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjUwMTpjb25maWcgVVNCX1NFUklBTF9TSUVSUkFXSVJFTEVTU1xcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTUwMi1cXHR0cmlzdGF0ZSBcXFwiVVNCIFNpZXJyYSBXaXJlbGVzcyBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01MTEtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NTEyOmNvbmZpZyBVU0JfU0VSSUFMX1NZTUJPTFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTUxMy1cXHR0cmlzdGF0ZSBcXFwiVVNCIFN5bWJvbCBCYXJjb2RlIGRyaXZlciAoc2VyaWFsIG1vZGUpXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTIwLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjUyMTpjb25maWcgVVNCX1NFUklBTF9USVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTUyMi1cXHR0cmlzdGF0ZSBcXFwiVVNCIFRJIDM0MTAvNTA1MiBTZXJpYWwgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTI5LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjUzMDpjb25maWcgVVNCX1NFUklBTF9DWUJFUkpBQ0tcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01MzEtXFx0dHJpc3RhdGUgXFxcIlVTQiBSRUlORVIgU0NUIGN5YmVySmFjayBwaW5wYWQvZS1jb20gY2hpcGNhcmQgcmVhZGVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTQxLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjU0Mjpjb25maWcgVVNCX1NFUklBTF9XV0FOXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTQzLVxcdHRyaXN0YXRlXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTQ0LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjU0NTpjb25maWcgVVNCX1NFUklBTF9PUFRJT05cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01NDYtXFx0dHJpc3RhdGUgXFxcIlVTQiBkcml2ZXIgZm9yIEdTTSBhbmQgQ0RNQSBtb2RlbXNcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01NjMtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NTY0OmNvbmZpZyBVU0JfU0VSSUFMX09NTklORVRcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01NjUtXFx0dHJpc3RhdGUgXFxcIlVTQiBaeVhFTCBvbW5pLm5ldCBMQ0QgUGx1cyBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01NzEtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NTcyOmNvbmZpZyBVU0JfU0VSSUFMX09QVElDT05cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01NzMtXFx0dHJpc3RhdGUgXFxcIlVTQiBPcHRpY29uIEJhcmNvZGUgZHJpdmVyIChzZXJpYWwgbW9kZSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01ODAtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NTgxOmNvbmZpZyBVU0JfU0VSSUFMX1hTRU5TX01UXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTgyLVxcdHRyaXN0YXRlIFxcXCJYc2VucyBtb3Rpb24gdHJhY2tlciBzZXJpYWwgaW50ZXJmYWNlIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTU5Mi1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo1OTM6Y29uZmlnIFVTQl9TRVJJQUxfV0lTSEJPTkVcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01OTQtXFx0dHJpc3RhdGUgXFxcIlVTQi1XaXNoYm9uZSBhZGFwdGVyIGludGVyZmFjZSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy02MDktXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NjEwOmNvbmZpZyBVU0JfU0VSSUFMX1NTVTEwMFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTYxMS1cXHR0cmlzdGF0ZSBcXFwiVVNCIFF1YXRlY2ggU1NVLTEwMCBTaW5nbGUgUG9ydCBTZXJpYWwgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNjE4LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjYxOTpjb25maWcgVVNCX1NFUklBTF9RVDJcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy02MjAtXFx0dHJpc3RhdGUgXFxcIlVTQiBRdWF0ZWNoIFNlcmlhbCBEcml2ZXIgZm9yIFVTQiAyIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy02MjctXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NjI4OmNvbmZpZyBVU0JfU0VSSUFMX1VQRDc4RjA3MzBcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy02MjktXFx0dHJpc3RhdGUgXFxcIlVTQiBSZW5lc2FzIHVQRDc4RjA3MzAgU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTYzNi1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo2Mzc6Y29uZmlnIFVTQl9TRVJJQUxfWFJcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy02MzgtXFx0dHJpc3RhdGUgXFxcIlVTQiBNYXhMaW5lYXIvRXhhciBVU0IgdG8gU2VyaWFsIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTY0NS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo2NDY6Y29uZmlnIFVTQl9TRVJJQUxfREVCVUdcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy02NDctXFx0dHJpc3RhdGUgXFxcIlVTQiBEZWJ1Z2dpbmcgRGV2aWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1OTowNi44MTU0NjAxMTZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzAyMzEzOTU0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVVNCIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiByZXZpZXdpbmcgdGhpcyBwYXRjaCwgYW5kIGhlcmUncyB3aGF0IEknbSB0aGlua2luZy4gRmlyc3Qgb2ZmLCBJIHNlZSB0aGF0IGBVU0JfU0VSSUFMYCBpcyBhIG1lbnVjb25maWcgb3B0aW9uLCBzbyBpdCBtYWtlcyBzZW5zZSB0byBpbmNsdWRlIGl0IGluIHRoZSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zIHdlIHNob3VsZCBlbmFibGUgZm9yIHRlc3RpbmcuIFNpbWlsYXJseSwgYFVTQl9TRVJJQUxfU1BDUDhYNWAgaXMgZGVwZW5kZW50IG9uIGBVU0JfU0VSSUFMYCwgc28gd2UnbGwgbmVlZCB0byBtYWtlIHN1cmUgYm90aCBhcmUgY29uc2lkZXJlZC5cblxuTGV0J3MgcmVjYXAgdGhlIHJlbGV2YW50IGNvbmZpZ3M6IGBBVEg5S19IVENgLCBgVVNCX1RNQ2AsIGBVU0JfU0VSSUFMYCwgYW5kIGBVU0JfU0VSSUFMX1NQQ1A4WDVgLiBHb3QgaXQuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgc3ltYm9scyB3ZSdyZSBmb2N1c2luZyBvbi4gV2UndmUgZ290IGB1c2JfcHJvYmVfaW50ZXJmYWNlYCwgYHVzYl9tYXRjaF9keW5hbWljX2lkYCwgYGF0aDlrX2hpZl91c2JfcHJvYmVgLCBgdXNidG1jX3Byb2JlYCwgYHNwY3A4eDVfcHJvYmVgLCBhbmQgYHNwY3A4eDVfcG9ydF9wcm9iZWAuIFRoZXNlIHNlZW0gdG8gYmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBpbnZvbHZlZC5cblxuVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpcyBhYm91dCBob3cgYHVzYl9kZXZpY2VfaWRgIGlzIGhhbmRsZWQgd2hlbiBwYXNzZWQgdG8gVVNCIGRyaXZlciBgcHJvYmVgIGZ1bmN0aW9ucy4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgY2hhbmdpbmcgaG93IGB1c2JfZGV2aWNlX2lkYCBpcyBhbGxvY2F0ZWQuIE5vdywgaW5zdGVhZCBvZiBhIHBlcnNpc3RlbnQgcG9pbnRlciwgaXQncyBiZWluZyBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrIHdpdGhpbiBgdXNiX3Byb2JlX2ludGVyZmFjZWAgYW5kIHBhc3NlZCBhcyBhIHRlbXBvcmFyeSBwb2ludGVyLiBUaGlzIGlzIGEgc3VidGxlIGJ1dCBwb3RlbnRpYWxseSBpbXBhY3RmdWwgY2hhbmdlLiBJdCBhZmZlY3RzIHRoZSBVU0IgY29yZSdzIG1hdGNoaW5nIGxvZ2ljLCBhbmQsIG1vcmUgaW1wb3J0YW50bHksIGl0IG1lYW5zIHNldmVyYWwgZHJpdmVycyBoYWQgdG8gYmUgdXBkYXRlZCB0byBhY2NvdW50IGZvciB0aGlzIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGBhdGg5a2AsIGB1c2J0bWNgLCBhbmQgYHNwY3A4eDVgLiBUaGV5IGhhZCB0byBiZSBhZGp1c3RlZCB0byBwcmV2ZW50IHN0b3JpbmcgdGhlIChub3cgaW52YWxpZCkgcG9pbnRlci5cblxuVGhpcyBjaGFuZ2UgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCBvcGVucyB1cCB0aGUgcG9zc2liaWxpdHkgb2YgdHJpZ2dlcmluZyBtZW1vcnkgZXJyb3JzLCBzcGVjaWZpY2FsbHkgdXNlLWFmdGVyLWZyZWUsIHRocm91Z2ggZnV6emluZyBVU0IgZGV2aWNlIGVudW1lcmF0aW9uLiBJIHRoaW5rIHRoZSBrZXkgaGVyZSBpcyB0aGF0IHdlIGNhbiB2ZXJpZnkgdGhlIHBhdGNoIGFuZCB0aGVzZSBkcml2ZXIgdXBkYXRlcyBieSBmdXp6aW5nIHRoZSBwcm9jZXNzLiBJZiB3ZSBjYW4gdHJpZ2dlciB0aGVzZSBjb2RlIHBhdGhzIHdpdGggZnV6emluZywgd2UgY2FuIHZlcmlmeSB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgbWVtb3J5IGlzc3VlcyBhcyBhIHJlc3VsdCBvZiB0aGUgY2hhbmdlLlxuXG5BbHJpZ2h0LCBJJ20gZ29pbmcgdG8gY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4MDUsIk91dHB1dFRva2VucyI6MjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE3OjU5OjEzLjgzODYwNDk0OFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3MTAxNTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S19IVENcIixcbiAgICBcIlVTQl9UTUNcIixcbiAgICBcIlVTQl9TRVJJQUxcIixcbiAgICBcIlVTQl9TRVJJQUxfU1BDUDhYNVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVzYl9wcm9iZV9pbnRlcmZhY2VcIixcbiAgICBcInVzYl9tYXRjaF9keW5hbWljX2lkXCIsXG4gICAgXCJhdGg5a19oaWZfdXNiX3Byb2JlXCIsXG4gICAgXCJ1c2J0bWNfcHJvYmVcIixcbiAgICBcInNwY3A4eDVfcHJvYmVcIixcbiAgICBcInNwY3A4eDVfcG9ydF9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgaG93IGB1c2JfZGV2aWNlX2lkYCBpcyBwYXNzZWQgdG8gVVNCIGRyaXZlcnMnIGBwcm9iZWAgZnVuY3Rpb25zLiBJdCBpcyBub3cgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBpbiBgdXNiX3Byb2JlX2ludGVyZmFjZWAgYW5kIHBhc3NlZCBhcyBhIHRlbXBvcmFyeSBwb2ludGVyLCBpbnN0ZWFkIG9mIGEgcGVyc2lzdGVudCBwb2ludGVyLiBUaGlzIGFmZmVjdHMgVVNCIGNvcmUgbWF0Y2hpbmcgYW5kIHNldmVyYWwgVVNCIGRyaXZlcnMgKGBhdGg5a2AsIGB1c2J0bWNgLCBgc3BjcDh4NWApLCB3aGljaCBoYWQgdG8gYmUgdXBkYXRlZCB0byBzdG9wIHN0b3JpbmcgdGhlIHBvaW50ZXIuIEZ1enppbmcgVVNCIGRldmljZSBlbnVtZXJhdGlvbiBjYW4gdHJpZ2dlciB0aGVzZSBwYXRocyBhbmQgdmVyaWZ5IHRoYXQgbm8gdXNlLWFmdGVyLWZyZWUgb3Igb3RoZXIgbWVtb3J5IGlzc3VlcyBvY2N1ci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S19IVENcIixcbiAgICBcIlVTQl9UTUNcIixcbiAgICBcIlVTQl9TRVJJQUxcIixcbiAgICBcIlVTQl9TRVJJQUxfU1BDUDhYNVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVzYl9wcm9iZV9pbnRlcmZhY2VcIixcbiAgICBcInVzYl9tYXRjaF9keW5hbWljX2lkXCIsXG4gICAgXCJhdGg5a19oaWZfdXNiX3Byb2JlXCIsXG4gICAgXCJ1c2J0bWNfcHJvYmVcIixcbiAgICBcInNwY3A4eDVfcHJvYmVcIixcbiAgICBcInNwY3A4eDVfcG9ydF9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgaG93IGB1c2JfZGV2aWNlX2lkYCBpcyBwYXNzZWQgdG8gVVNCIGRyaXZlcnMnIGBwcm9iZWAgZnVuY3Rpb25zLiBJdCBpcyBub3cgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBpbiBgdXNiX3Byb2JlX2ludGVyZmFjZWAgYW5kIHBhc3NlZCBhcyBhIHRlbXBvcmFyeSBwb2ludGVyLCBpbnN0ZWFkIG9mIGEgcGVyc2lzdGVudCBwb2ludGVyLiBUaGlzIGFmZmVjdHMgVVNCIGNvcmUgbWF0Y2hpbmcgYW5kIHNldmVyYWwgVVNCIGRyaXZlcnMgKGBhdGg5a2AsIGB1c2J0bWNgLCBgc3BjcDh4NWApLCB3aGljaCBoYWQgdG8gYmUgdXBkYXRlZCB0byBzdG9wIHN0b3JpbmcgdGhlIHBvaW50ZXIuIEZ1enppbmcgVVNCIGRldmljZSBlbnVtZXJhdGlvbiBjYW4gdHJpZ2dlciB0aGVzZSBwYXRocyBhbmQgdmVyaWZ5IHRoYXQgbm8gdXNlLWFmdGVyLWZyZWUgb3Igb3RoZXIgbWVtb3J5IGlzc3VlcyBvY2N1ci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow945f9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-30 17:51:26 +0000 UTC FinishedAt: 2026-06-30 17:59:14 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "7de6ae9e12207ec146f2f3f1e58d1a99317e88bc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K_HTC", "USB_TMC", "USB_SERIAL", "USB_SERIAL_SPCP8X5" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "7de6ae9e12207ec146f2f3f1e58d1a99317e88bc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH9K_HTC", "USB_TMC", "USB_SERIAL", "USB_SERIAL_SPCP8X5" ], "series_id": "b4a8f308-37d5-4dc5-a05d-9a4924780423" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "usb_probe_interface", "usb_match_dynamic_id", "ath9k_hif_usb_probe", "usbtmc_probe", "spcp8x5_probe", "spcp8x5_port_probe" ], "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+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtVU0JfVE1DJiMzNDssCiAgICAmIzM0O1VTQl9TRVJJQUwmIzM0OywKICAgICYjMzQ7VVNCX1NFUklBTF9TUENQOFg1JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXNiX3Byb2JlX2ludGVyZmFjZSYjMzQ7LAogICAgJiMzNDt1c2JfbWF0Y2hfZHluYW1pY19pZCYjMzQ7LAogICAgJiMzNDthdGg5a19oaWZfdXNiX3Byb2JlJiMzNDssCiAgICAmIzM0O3VzYnRtY19wcm9iZSYjMzQ7LAogICAgJiMzNDtzcGNwOHg1X3Byb2JlJiMzNDssCiAgICAmIzM0O3NwY3A4eDVfcG9ydF9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGhvdyBgdXNiX2RldmljZV9pZGAgaXMgcGFzc2VkIHRvIFVTQiBkcml2ZXJzJiMzOTsgYHByb2JlYCBmdW5jdGlvbnMuIEl0IGlzIG5vdyBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrIGluIGB1c2JfcHJvYmVfaW50ZXJmYWNlYCBhbmQgcGFzc2VkIGFzIGEgdGVtcG9yYXJ5IHBvaW50ZXIsIGluc3RlYWQgb2YgYSBwZXJzaXN0ZW50IHBvaW50ZXIuIFRoaXMgYWZmZWN0cyBVU0IgY29yZSBtYXRjaGluZyBhbmQgc2V2ZXJhbCBVU0IgZHJpdmVycyAoYGF0aDlrYCwgYHVzYnRtY2AsIGBzcGNwOHg1YCksIHdoaWNoIGhhZCB0byBiZSB1cGRhdGVkIHRvIHN0b3Agc3RvcmluZyB0aGUgcG9pbnRlci4gRnV6emluZyBVU0IgZGV2aWNlIGVudW1lcmF0aW9uIGNhbiB0cmlnZ2VyIHRoZXNlIHBhdGhzIGFuZCB2ZXJpZnkgdGhhdCBubyB1c2UtYWZ0ZXItZnJlZSBvciBvdGhlciBtZW1vcnkgaXNzdWVzIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMWY4MTNiMzRiNGJmZWU3OTZhNmQwNmRlYjhiYmFlODMyOTA2ZGM2ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDE3OjU4OjE3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG5pbmRleCA1MTUyNjdmNDhkODAzZS4uZDY1YzA5YzJiN2ZjYzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG5AQCAtMTA4Nyw3ICYjNDM7MTA4Nyw3IEBAIHN0YXRpYyBpbnQgYXRoOWtfaGlmX3VzYl9kb3dubG9hZF9mdyhzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpXG4gXHR9XG4gXHRrZnJlZShidWYpO1xuIFxuLVx0aWYgKElTX0FSNzAxMF9ERVZJQ0UoaGlmX2Rldi1cdTAwM2V1c2JfZGV2aWNlX2lkLVx1MDAzZWRyaXZlcl9pbmZvKSlcbiYjNDM7XHRpZiAoSVNfQVI3MDEwX0RFVklDRShoaWZfZGV2LVx1MDAzZWlkX2luZm8pKVxuIFx0XHRmaXJtX29mZnNldCA9IEFSNzAxMF9GSVJNV0FSRV9URVhUO1xuIFx0ZWxzZVxuIFx0XHRmaXJtX29mZnNldCA9IEFSOTI3MV9GSVJNV0FSRV9URVhUO1xuQEAgLTExODIsNyAmIzQzOzExODIsNyBAQCBzdGF0aWMgaW50IGF0aDlrX2hpZl9yZXF1ZXN0X2Zpcm13YXJlKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcbiBcdGlmIChNQUpPUl9WRVJTSU9OX1JFUSA9PSAxIFx1MDAyNlx1MDAyNiBoaWZfZGV2LVx1MDAzZWZ3X21pbm9yX2luZGV4ID09IDMpIHtcbiBcdFx0Y29uc3QgY2hhciAqZmlsZW5hbWU7XG4gXG4tXHRcdGlmIChJU19BUjcwMTBfREVWSUNFKGhpZl9kZXYtXHUwMDNldXNiX2RldmljZV9pZC1cdTAwM2Vkcml2ZXJfaW5mbykpXG4mIzQzO1x0XHRpZiAoSVNfQVI3MDEwX0RFVklDRShoaWZfZGV2LVx1MDAzZWlkX2luZm8pKVxuIFx0XHRcdGZpbGVuYW1lID0gRklSTVdBUkVfQVI3MDEwXzFfMTtcbiBcdFx0ZWxzZVxuIFx0XHRcdGZpbGVuYW1lID0gRklSTVdBUkVfQVI5MjcxO1xuQEAgLTExOTgsNyAmIzQzOzExOTgsNyBAQCBzdGF0aWMgaW50IGF0aDlrX2hpZl9yZXF1ZXN0X2Zpcm13YXJlKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcbiBcbiBcdFx0cmV0dXJuIC1FTk9FTlQ7XG4gXHR9IGVsc2Uge1xuLVx0XHRpZiAoSVNfQVI3MDEwX0RFVklDRShoaWZfZGV2LVx1MDAzZXVzYl9kZXZpY2VfaWQtXHUwMDNlZHJpdmVyX2luZm8pKVxuJiM0MztcdFx0aWYgKElTX0FSNzAxMF9ERVZJQ0UoaGlmX2Rldi1cdTAwM2VpZF9pbmZvKSlcbiBcdFx0XHRjaGlwID0gXCYjMzQ7NzAxMFwmIzM0OztcbiBcdFx0ZWxzZVxuIFx0XHRcdGNoaXAgPSBcJiMzNDs5MjcxXCYjMzQ7O1xuQEAgLTEyNjAsOSAmIzQzOzEyNjAsOSBAQCBzdGF0aWMgdm9pZCBhdGg5a19oaWZfdXNiX2Zpcm13YXJlX2NiKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncsIHZvaWQgKmNvbnRleHQpXG4gXG4gXHRyZXQgPSBhdGg5a19odGNfaHdfaW5pdChoaWZfZGV2LVx1MDAzZWh0Y19oYW5kbGUsXG4gXHRcdFx0XHRcdTAwMjZoaWZfZGV2LVx1MDAzZWludGVyZmFjZS1cdTAwM2VkZXYsXG4tXHRcdFx0XHRoaWZfZGV2LVx1MDAzZXVzYl9kZXZpY2VfaWQtXHUwMDNlaWRQcm9kdWN0LFxuJiM0MztcdFx0XHRcdGhpZl9kZXYtXHUwMDNldWRldi1cdTAwM2VkZXNjcmlwdG9yLmlkUHJvZHVjdCxcbiBcdFx0XHRcdGhpZl9kZXYtXHUwMDNldWRldi1cdTAwM2Vwcm9kdWN0LFxuLVx0XHRcdFx0aGlmX2Rldi1cdTAwM2V1c2JfZGV2aWNlX2lkLVx1MDAzZWRyaXZlcl9pbmZvKTtcbiYjNDM7XHRcdFx0XHRoaWZfZGV2LVx1MDAzZWlkX2luZm8pO1xuIFx0aWYgKHJldCkge1xuIFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHRnb3RvIGVycl9odGNfaHdfaW5pdDtcbkBAIC0xMzc0LDcgJiM0MzsxMzc0LDcgQEAgc3RhdGljIGludCBhdGg5a19oaWZfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsXG4gXG4gXHRoaWZfZGV2LVx1MDAzZXVkZXYgPSB1ZGV2O1xuIFx0aGlmX2Rldi1cdTAwM2VpbnRlcmZhY2UgPSBpbnRlcmZhY2U7XG4tXHRoaWZfZGV2LVx1MDAzZXVzYl9kZXZpY2VfaWQgPSBpZDtcbiYjNDM7XHRoaWZfZGV2LVx1MDAzZWlkX2luZm8gPSBpZC1cdTAwM2Vkcml2ZXJfaW5mbztcbiAjaWZkZWYgQ09ORklHX1BNXG4gXHR1ZGV2LVx1MDAzZXJlc2V0X3Jlc3VtZSA9IDE7XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmhcbmluZGV4IGRjMGIwZmE1YzMyNTc0Li5iM2U3YjBmYjU0Yjg0MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmhcbkBAIC0xMTUsNyAmIzQzOzExNSw3IEBAIHN0cnVjdCBjbWRfYnVmIHtcbiBzdHJ1Y3QgaGlmX2RldmljZV91c2Ige1xuIFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXY7XG4gXHRzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlO1xuLVx0Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnVzYl9kZXZpY2VfaWQ7XG4mIzQzO1x0aW50IGlkX2luZm87XG4gXHRjb25zdCB2b2lkICpmd19kYXRhO1xuIFx0c2l6ZV90IGZ3X3NpemU7XG4gXHRzdHJ1Y3QgY29tcGxldGlvbiBmd19kb25lO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jIGIvZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmNcbmluZGV4IGFmOWFlNTVkYWUxNGUwLi41MWNkOTMyMGE3MzY2YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuY1xuQEAgLTcxLDcgJiM0Mzs3MSw2IEBAIHN0cnVjdCB1c2J0bWNfZGV2X2NhcGFiaWxpdGllcyB7XG4gICogYWxsb2NhdGVkIGZvciBlYWNoIFVTQlRNQyBkZXZpY2UgaW4gdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbi5cbiAgKi9cbiBzdHJ1Y3QgdXNidG1jX2RldmljZV9kYXRhIHtcbi1cdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZDtcbiBcdHN0cnVjdCB1c2JfZGV2aWNlICp1c2JfZGV2O1xuIFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGY7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGZpbGVfbGlzdDtcbkBAIC0yMzk0LDcgJiM0MzsyMzkzLDYgQEAgc3RhdGljIGludCB1c2J0bWNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0ZGF0YS1cdTAwM2VpbnRmID0gaW50Zjtcbi1cdGRhdGEtXHUwMDNlaWQgPSBpZDtcbiBcdGRhdGEtXHUwMDNldXNiX2RldiA9IHVzYl9nZXRfZGV2KGludGVyZmFjZV90b191c2JkZXYoaW50ZikpO1xuIFx0dXNiX3NldF9pbnRmZGF0YShpbnRmLCBkYXRhKTtcbiBcdGtyZWZfaW5pdChcdTAwMjZkYXRhLVx1MDAzZWtyZWYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jXG5pbmRleCBmNjMwMDQ0MTcwNThlNi4uYzI2NDEwY2FiZGZlOTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jXG5AQCAtMjI3LDE4ICYjNDM7MjI3LDE5IEBAIHN0YXRpYyB2b2lkIHVzYl9mcmVlX2R5bmlkcyhzdHJ1Y3QgdXNiX2RyaXZlciAqdXNiX2RydilcbiBcdH1cbiB9XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICp1c2JfbWF0Y2hfZHluYW1pY19pZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi1cdFx0XHRcdFx0XHRcdGNvbnN0IHN0cnVjdCB1c2JfZHJpdmVyICpkcnYpXG4mIzQzO3N0YXRpYyBib29sIHVzYl9tYXRjaF9keW5hbWljX2lkKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RyaXZlciAqZHJ2LFxuJiM0MztcdFx0XHRcdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4ge1xuIFx0c3RydWN0IHVzYl9keW5pZCAqZHluaWQ7XG4gXG4gXHRndWFyZChtdXRleCkoXHUwMDI2dXNiX2R5bmlkc19sb2NrKTtcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkoZHluaWQsIFx1MDAyNmRydi1cdTAwM2VkeW5pZHMubGlzdCwgbm9kZSkge1xuIFx0XHRpZiAodXNiX21hdGNoX29uZV9pZChpbnRmLCBcdTAwMjZkeW5pZC1cdTAwM2VpZCkpIHtcbi1cdFx0XHRyZXR1cm4gXHUwMDI2ZHluaWQtXHUwMDNlaWQ7XG4mIzQzO1x0XHRcdCppZCA9IGR5bmlkLVx1MDAzZWlkO1xuJiM0MztcdFx0XHRyZXR1cm4gdHJ1ZTtcbiBcdFx0fVxuIFx0fVxuLVx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbiBcbkBAIC0zMjAsNyAmIzQzOzMyMSw4IEBAIHN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRzdHJ1Y3QgdXNiX2RyaXZlciAqZHJpdmVyID0gdG9fdXNiX2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbiBcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmID0gdG9fdXNiX2ludGVyZmFjZShkZXYpO1xuIFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpO1xuLVx0Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkO1xuJiM0MztcdHN0cnVjdCB1c2JfZGV2aWNlX2lkIGlkO1xuJiM0MztcdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICptYXRjaGVkX2lkO1xuIFx0aW50IGVycm9yID0gLUVOT0RFVjtcbiBcdGludCBscG1fZGlzYWJsZV9lcnJvciA9IC1FTk9ERVY7XG4gXG5AQCAtMzQwLDExICYjNDM7MzQyLDEyIEBAIHN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdHJldHVybiBlcnJvcjtcbiBcdH1cbiBcbi1cdGlkID0gdXNiX21hdGNoX2R5bmFtaWNfaWQoaW50ZiwgZHJpdmVyKTtcbi1cdGlmICghaWQpXG4tXHRcdGlkID0gdXNiX21hdGNoX2lkKGludGYsIGRyaXZlci1cdTAwM2VpZF90YWJsZSk7XG4tXHRpZiAoIWlkKVxuLVx0XHRyZXR1cm4gZXJyb3I7XG4mIzQzO1x0aWYgKCF1c2JfbWF0Y2hfZHluYW1pY19pZChpbnRmLCBkcml2ZXIsIFx1MDAyNmlkKSkge1xuJiM0MztcdFx0bWF0Y2hlZF9pZCA9IHVzYl9tYXRjaF9pZChpbnRmLCBkcml2ZXItXHUwMDNlaWRfdGFibGUpO1xuJiM0MztcdFx0aWYgKCFtYXRjaGVkX2lkKVxuJiM0MztcdFx0XHRyZXR1cm4gZXJyb3I7XG4mIzQzO1x0XHRpZCA9ICptYXRjaGVkX2lkO1xuJiM0MztcdH1cbiBcbiBcdGRldl9kYmcoZGV2LCBcJiMzNDslcyAtIGdvdCBpZFxcblwmIzM0OywgX19mdW5jX18pO1xuIFxuQEAgLTM5Myw3ICYjNDM7Mzk2LDcgQEAgc3RhdGljIGludCB1c2JfcHJvYmVfaW50ZXJmYWNlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdFx0aW50Zi1cdTAwM2VuZWVkc19hbHRzZXR0aW5nMCA9IDA7XG4gXHR9XG4gXG4tXHRlcnJvciA9IGRyaXZlci1cdTAwM2Vwcm9iZShpbnRmLCBpZCk7XG4mIzQzO1x0ZXJyb3IgPSBkcml2ZXItXHUwMDNlcHJvYmUoaW50ZiwgXHUwMDI2aWQpO1xuIFx0aWYgKGVycm9yKVxuIFx0XHRnb3RvIGVycjtcbiBcbkBAIC04OTEsNyAmIzQzOzg5NCw3IEBAIHN0YXRpYyBpbnQgdXNiX2RldmljZV9tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG4gXHR9IGVsc2UgaWYgKGlzX3VzYl9pbnRlcmZhY2UoZGV2KSkge1xuIFx0XHRzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZjtcbiBcdFx0Y29uc3Qgc3RydWN0IHVzYl9kcml2ZXIgKnVzYl9kcnY7XG4tXHRcdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZDtcbiYjNDM7XHRcdHN0cnVjdCB1c2JfZGV2aWNlX2lkIGlkO1xuIFxuIFx0XHQvKiBkZXZpY2UgZHJpdmVycyBuZXZlciBtYXRjaCBpbnRlcmZhY2VzICovXG4gXHRcdGlmIChpc191c2JfZGV2aWNlX2RyaXZlcihkcnYpKVxuQEAgLTkwMCwxMiAmIzQzOzkwMywxMCBAQCBzdGF0aWMgaW50IHVzYl9kZXZpY2VfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuIFx0XHRpbnRmID0gdG9fdXNiX2ludGVyZmFjZShkZXYpO1xuIFx0XHR1c2JfZHJ2ID0gdG9fdXNiX2RyaXZlcihkcnYpO1xuIFxuLVx0XHRpZCA9IHVzYl9tYXRjaF9pZChpbnRmLCB1c2JfZHJ2LVx1MDAzZWlkX3RhYmxlKTtcbi1cdFx0aWYgKGlkKVxuJiM0MztcdFx0aWYgKHVzYl9tYXRjaF9pZChpbnRmLCB1c2JfZHJ2LVx1MDAzZWlkX3RhYmxlKSlcbiBcdFx0XHRyZXR1cm4gMTtcbiBcbi1cdFx0aWQgPSB1c2JfbWF0Y2hfZHluYW1pY19pZChpbnRmLCB1c2JfZHJ2KTtcbi1cdFx0aWYgKGlkKVxuJiM0MztcdFx0aWYgKHVzYl9tYXRjaF9keW5hbWljX2lkKGludGYsIHVzYl9kcnYsIFx1MDAyNmlkKSlcbiBcdFx0XHRyZXR1cm4gMTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuY1xuaW5kZXggYzExZDY0YmYwOGZiYWUuLjBlNzcxNWEwMmRmNGNjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuY1xuQEAgLTEzMywxNCAmIzQzOzEzMywxNCBAQCBzdHJ1Y3Qgc3BjcDh4NV9wcml2YXRlIHtcbiBzdGF0aWMgaW50IHNwY3A4eDVfcHJvYmUoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbCxcbiBcdFx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4ge1xuLVx0dXNiX3NldF9zZXJpYWxfZGF0YShzZXJpYWwsICh2b2lkICopaWQpO1xuJiM0MztcdHVzYl9zZXRfc2VyaWFsX2RhdGEoc2VyaWFsLCAodm9pZCAqKWlkLVx1MDAzZWRyaXZlcl9pbmZvKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IHNwY3A4eDVfcG9ydF9wcm9iZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KVxuIHtcbi1cdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCA9IHVzYl9nZXRfc2VyaWFsX2RhdGEocG9ydC1cdTAwM2VzZXJpYWwpO1xuJiM0MztcdHVuc2lnbmVkIGludCBxdWlya3MgPSAodW5zaWduZWQgaW50KSh1bnNpZ25lZCBsb25nKXVzYl9nZXRfc2VyaWFsX2RhdGEocG9ydC1cdTAwM2VzZXJpYWwpO1xuIFx0c3RydWN0IHNwY3A4eDVfcHJpdmF0ZSAqcHJpdjtcbiBcbiBcdHByaXYgPSBremFsbG9jX29iaigqcHJpdik7XG5AQCAtMTQ4LDcgJiM0MzsxNDgsNyBAQCBzdGF0aWMgaW50IHNwY3A4eDVfcG9ydF9wcm9iZShzdHJ1Y3QgdXNiX3NlcmlhbF9wb3J0ICpwb3J0KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdHNwaW5fbG9ja19pbml0KFx1MDAyNnByaXYtXHUwMDNlbG9jayk7XG4tXHRwcml2LVx1MDAzZXF1aXJrcyA9IGlkLVx1MDAzZWRyaXZlcl9pbmZvO1xuJiM0MztcdHByaXYtXHUwMDNlcXVpcmtzID0gcXVpcmtzO1xuIFxuIFx0dXNiX3NldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQsIHByaXYpO1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiLmggYi9pbmNsdWRlL2xpbnV4L3VzYi5oXG5pbmRleCAxZGE0YWQxNjEwYmNhMC4uNDlhYjhkYmI4ODVmNjUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3VzYi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3VzYi5oXG5AQCAtMTE4NSw3ICYjNDM7MTE4NSw4IEBAIGV4dGVybiBzc2l6ZV90IHVzYl9zaG93X2R5bmlkcyhzdHJ1Y3QgdXNiX2R5bmlkcyAqZHluaWRzLCBjaGFyICpidWYpO1xuICAqXHRpbnRlcmZhY2UuICBJdCBtYXkgYWxzbyB1c2UgdXNiX3NldF9pbnRlcmZhY2UoKSB0byBzcGVjaWZ5IHRoZVxuICAqXHRhcHByb3ByaWF0ZSBhbHRzZXR0aW5nLiAgSWYgdW53aWxsaW5nIHRvIG1hbmFnZSB0aGUgaW50ZXJmYWNlLFxuICAqXHRyZXR1cm4gLUVOT0RFViwgaWYgZ2VudWluZSBJTyBlcnJvcnMgb2NjdXJyZWQsIGFuIGFwcHJvcHJpYXRlXG4tICpcdG5lZ2F0aXZlIGVycm5vIHZhbHVlLlxuJiM0MzsgKlx0bmVnYXRpdmUgZXJybm8gdmFsdWUuICBUaGUgdXNiX2RldmljZV9pZCBwYXJhbWV0ZXIgaXMgb25seSB2YWxpZCBkdXJpbmdcbiYjNDM7ICpcdHByb2JlLlxuICAqIEBkaXNjb25uZWN0OiBDYWxsZWQgd2hlbiB0aGUgaW50ZXJmYWNlIGlzIG5vIGxvbmdlciBhY2Nlc3NpYmxlLCB1c3VhbGx5XG4gICpcdGJlY2F1c2UgaXRzIGRldmljZSBoYXMgYmVlbiAob3IgaXMgYmVpbmcpIGRpc2Nvbm5lY3RlZCBvciB0aGVcbiAgKlx0ZHJpdmVyIG1vZHVsZSBpcyBiZWluZyB1bmxvYWRlZC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNzo1ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEg5S19IVEMmIzM0OywKICAgICYjMzQ7VVNCX1RNQyYjMzQ7LAogICAgJiMzNDtVU0JfU0VSSUFMJiMzNDssCiAgICAmIzM0O1VTQl9TRVJJQUxfU1BDUDhYNSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VzYl9wcm9iZV9pbnRlcmZhY2UmIzM0OywKICAgICYjMzQ7dXNiX21hdGNoX2R5bmFtaWNfaWQmIzM0OywKICAgICYjMzQ7YXRoOWtfaGlmX3VzYl9wcm9iZSYjMzQ7LAogICAgJiMzNDt1c2J0bWNfcHJvYmUmIzM0OywKICAgICYjMzQ7c3BjcDh4NV9wcm9iZSYjMzQ7LAogICAgJiMzNDtzcGNwOHg1X3BvcnRfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBob3cgYHVzYl9kZXZpY2VfaWRgIGlzIHBhc3NlZCB0byBVU0IgZHJpdmVycyYjMzk7IGBwcm9iZWAgZnVuY3Rpb25zLiBJdCBpcyBub3cgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBpbiBgdXNiX3Byb2JlX2ludGVyZmFjZWAgYW5kIHBhc3NlZCBhcyBhIHRlbXBvcmFyeSBwb2ludGVyLCBpbnN0ZWFkIG9mIGEgcGVyc2lzdGVudCBwb2ludGVyLiBUaGlzIGFmZmVjdHMgVVNCIGNvcmUgbWF0Y2hpbmcgYW5kIHNldmVyYWwgVVNCIGRyaXZlcnMgKGBhdGg5a2AsIGB1c2J0bWNgLCBgc3BjcDh4NWApLCB3aGljaCBoYWQgdG8gYmUgdXBkYXRlZCB0byBzdG9wIHN0b3JpbmcgdGhlIHBvaW50ZXIuIEZ1enppbmcgVVNCIGRldmljZSBlbnVtZXJhdGlvbiBjYW4gdHJpZ2dlciB0aGVzZSBwYXRocyBhbmQgdmVyaWZ5IHRoYXQgbm8gdXNlLWFmdGVyLWZyZWUgb3Igb3RoZXIgbWVtb3J5IGlzc3VlcyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMWY4MTNiMzRiNGJmZWU3OTZhNmQwNmRlYjhiYmFlODMyOTA2ZGM2ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDMwIDE3OjU4OjE3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMKaW5kZXggNTE1MjY3ZjQ4ZDgwM2UuLmQ2NWMwOWMyYjdmY2M0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMKQEAgLTEwODcsNyAmIzQzOzEwODcsNyBAQCBzdGF0aWMgaW50IGF0aDlrX2hpZl91c2JfZG93bmxvYWRfZncoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2KQogCX0KIAlrZnJlZShidWYpOwogCi0JaWYgKElTX0FSNzAxMF9ERVZJQ0UoaGlmX2Rldi0mZ3Q7dXNiX2RldmljZV9pZC0mZ3Q7ZHJpdmVyX2luZm8pKQomIzQzOwlpZiAoSVNfQVI3MDEwX0RFVklDRShoaWZfZGV2LSZndDtpZF9pbmZvKSkKIAkJZmlybV9vZmZzZXQgPSBBUjcwMTBfRklSTVdBUkVfVEVYVDsKIAllbHNlCiAJCWZpcm1fb2Zmc2V0ID0gQVI5MjcxX0ZJUk1XQVJFX1RFWFQ7CkBAIC0xMTgyLDcgJiM0MzsxMTgyLDcgQEAgc3RhdGljIGludCBhdGg5a19oaWZfcmVxdWVzdF9maXJtd2FyZShzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsCiAJaWYgKE1BSk9SX1ZFUlNJT05fUkVRID09IDEgJmFtcDsmYW1wOyBoaWZfZGV2LSZndDtmd19taW5vcl9pbmRleCA9PSAzKSB7CiAJCWNvbnN0IGNoYXIgKmZpbGVuYW1lOwogCi0JCWlmIChJU19BUjcwMTBfREVWSUNFKGhpZl9kZXYtJmd0O3VzYl9kZXZpY2VfaWQtJmd0O2RyaXZlcl9pbmZvKSkKJiM0MzsJCWlmIChJU19BUjcwMTBfREVWSUNFKGhpZl9kZXYtJmd0O2lkX2luZm8pKQogCQkJZmlsZW5hbWUgPSBGSVJNV0FSRV9BUjcwMTBfMV8xOwogCQllbHNlCiAJCQlmaWxlbmFtZSA9IEZJUk1XQVJFX0FSOTI3MTsKQEAgLTExOTgsNyAmIzQzOzExOTgsNyBAQCBzdGF0aWMgaW50IGF0aDlrX2hpZl9yZXF1ZXN0X2Zpcm13YXJlKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldiwKIAogCQlyZXR1cm4gLUVOT0VOVDsKIAl9IGVsc2UgewotCQlpZiAoSVNfQVI3MDEwX0RFVklDRShoaWZfZGV2LSZndDt1c2JfZGV2aWNlX2lkLSZndDtkcml2ZXJfaW5mbykpCiYjNDM7CQlpZiAoSVNfQVI3MDEwX0RFVklDRShoaWZfZGV2LSZndDtpZF9pbmZvKSkKIAkJCWNoaXAgPSAmIzM0OzcwMTAmIzM0OzsKIAkJZWxzZQogCQkJY2hpcCA9ICYjMzQ7OTI3MSYjMzQ7OwpAQCAtMTI2MCw5ICYjNDM7MTI2MCw5IEBAIHN0YXRpYyB2b2lkIGF0aDlrX2hpZl91c2JfZmlybXdhcmVfY2IoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdywgdm9pZCAqY29udGV4dCkKIAogCXJldCA9IGF0aDlrX2h0Y19od19pbml0KGhpZl9kZXYtJmd0O2h0Y19oYW5kbGUsCiAJCQkJJmFtcDtoaWZfZGV2LSZndDtpbnRlcmZhY2UtJmd0O2RldiwKLQkJCQloaWZfZGV2LSZndDt1c2JfZGV2aWNlX2lkLSZndDtpZFByb2R1Y3QsCiYjNDM7CQkJCWhpZl9kZXYtJmd0O3VkZXYtJmd0O2Rlc2NyaXB0b3IuaWRQcm9kdWN0LAogCQkJCWhpZl9kZXYtJmd0O3VkZXYtJmd0O3Byb2R1Y3QsCi0JCQkJaGlmX2Rldi0mZ3Q7dXNiX2RldmljZV9pZC0mZ3Q7ZHJpdmVyX2luZm8pOwomIzQzOwkJCQloaWZfZGV2LSZndDtpZF9pbmZvKTsKIAlpZiAocmV0KSB7CiAJCXJldCA9IC1FSU5WQUw7CiAJCWdvdG8gZXJyX2h0Y19od19pbml0OwpAQCAtMTM3NCw3ICYjNDM7MTM3NCw3IEBAIHN0YXRpYyBpbnQgYXRoOWtfaGlmX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLAogCiAJaGlmX2Rldi0mZ3Q7dWRldiA9IHVkZXY7CiAJaGlmX2Rldi0mZ3Q7aW50ZXJmYWNlID0gaW50ZXJmYWNlOwotCWhpZl9kZXYtJmd0O3VzYl9kZXZpY2VfaWQgPSBpZDsKJiM0MzsJaGlmX2Rldi0mZ3Q7aWRfaW5mbyA9IGlkLSZndDtkcml2ZXJfaW5mbzsKICNpZmRlZiBDT05GSUdfUE0KIAl1ZGV2LSZndDtyZXNldF9yZXN1bWUgPSAxOwogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaAppbmRleCBkYzBiMGZhNWMzMjU3NC4uYjNlN2IwZmI1NGI4NDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaApAQCAtMTE1LDcgJiM0MzsxMTUsNyBAQCBzdHJ1Y3QgY21kX2J1ZiB7CiBzdHJ1Y3QgaGlmX2RldmljZV91c2IgewogCXN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2OwogCXN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7Ci0JY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnVzYl9kZXZpY2VfaWQ7CiYjNDM7CWludCBpZF9pbmZvOwogCWNvbnN0IHZvaWQgKmZ3X2RhdGE7CiAJc2l6ZV90IGZ3X3NpemU7CiAJc3RydWN0IGNvbXBsZXRpb24gZndfZG9uZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jIGIvZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmMKaW5kZXggYWY5YWU1NWRhZTE0ZTAuLjUxY2Q5MzIwYTczNjZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYwpAQCAtNzEsNyAmIzQzOzcxLDYgQEAgc3RydWN0IHVzYnRtY19kZXZfY2FwYWJpbGl0aWVzIHsKICAqIGFsbG9jYXRlZCBmb3IgZWFjaCBVU0JUTUMgZGV2aWNlIGluIHRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24uCiAgKi8KIHN0cnVjdCB1c2J0bWNfZGV2aWNlX2RhdGEgewotCWNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZDsKIAlzdHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldjsKIAlzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZjsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGZpbGVfbGlzdDsKQEAgLTIzOTQsNyAmIzQzOzIzOTMsNiBAQCBzdGF0aWMgaW50IHVzYnRtY19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlkYXRhLSZndDtpbnRmID0gaW50ZjsKLQlkYXRhLSZndDtpZCA9IGlkOwogCWRhdGEtJmd0O3VzYl9kZXYgPSB1c2JfZ2V0X2RldihpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpKTsKIAl1c2Jfc2V0X2ludGZkYXRhKGludGYsIGRhdGEpOwogCWtyZWZfaW5pdCgmYW1wO2RhdGEtJmd0O2tyZWYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYyBiL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmMKaW5kZXggZjYzMDA0NDE3MDU4ZTYuLmMyNjQxMGNhYmRmZTk1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmMKQEAgLTIyNywxOCAmIzQzOzIyNywxOSBAQCBzdGF0aWMgdm9pZCB1c2JfZnJlZV9keW5pZHMoc3RydWN0IHVzYl9kcml2ZXIgKnVzYl9kcnYpCiAJfQogfQogCi1zdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnVzYl9tYXRjaF9keW5hbWljX2lkKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLAotCQkJCQkJCWNvbnN0IHN0cnVjdCB1c2JfZHJpdmVyICpkcnYpCiYjNDM7c3RhdGljIGJvb2wgdXNiX21hdGNoX2R5bmFtaWNfaWQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZHJpdmVyICpkcnYsCiYjNDM7CQkJCSBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpCiB7CiAJc3RydWN0IHVzYl9keW5pZCAqZHluaWQ7CiAKIAlndWFyZChtdXRleCkoJmFtcDt1c2JfZHluaWRzX2xvY2spOwogCWxpc3RfZm9yX2VhY2hfZW50cnkoZHluaWQsICZhbXA7ZHJ2LSZndDtkeW5pZHMubGlzdCwgbm9kZSkgewogCQlpZiAodXNiX21hdGNoX29uZV9pZChpbnRmLCAmYW1wO2R5bmlkLSZndDtpZCkpIHsKLQkJCXJldHVybiAmYW1wO2R5bmlkLSZndDtpZDsKJiM0MzsJCQkqaWQgPSBkeW5pZC0mZ3Q7aWQ7CiYjNDM7CQkJcmV0dXJuIHRydWU7CiAJCX0KIAl9Ci0JcmV0dXJuIE5VTEw7CiYjNDM7CXJldHVybiBmYWxzZTsKIH0KIAogCkBAIC0zMjAsNyAmIzQzOzMyMSw4IEBAIHN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJc3RydWN0IHVzYl9kcml2ZXIgKmRyaXZlciA9IHRvX3VzYl9kcml2ZXIoZGV2LSZndDtkcml2ZXIpOwogCXN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmID0gdG9fdXNiX2ludGVyZmFjZShkZXYpOwogCXN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRmKTsKLQljb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQ7CiYjNDM7CXN0cnVjdCB1c2JfZGV2aWNlX2lkIGlkOwomIzQzOwljb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqbWF0Y2hlZF9pZDsKIAlpbnQgZXJyb3IgPSAtRU5PREVWOwogCWludCBscG1fZGlzYWJsZV9lcnJvciA9IC1FTk9ERVY7CiAKQEAgLTM0MCwxMSAmIzQzOzM0MiwxMiBAQCBzdGF0aWMgaW50IHVzYl9wcm9iZV9pbnRlcmZhY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCQlyZXR1cm4gZXJyb3I7CiAJfQogCi0JaWQgPSB1c2JfbWF0Y2hfZHluYW1pY19pZChpbnRmLCBkcml2ZXIpOwotCWlmICghaWQpCi0JCWlkID0gdXNiX21hdGNoX2lkKGludGYsIGRyaXZlci0mZ3Q7aWRfdGFibGUpOwotCWlmICghaWQpCi0JCXJldHVybiBlcnJvcjsKJiM0MzsJaWYgKCF1c2JfbWF0Y2hfZHluYW1pY19pZChpbnRmLCBkcml2ZXIsICZhbXA7aWQpKSB7CiYjNDM7CQltYXRjaGVkX2lkID0gdXNiX21hdGNoX2lkKGludGYsIGRyaXZlci0mZ3Q7aWRfdGFibGUpOwomIzQzOwkJaWYgKCFtYXRjaGVkX2lkKQomIzQzOwkJCXJldHVybiBlcnJvcjsKJiM0MzsJCWlkID0gKm1hdGNoZWRfaWQ7CiYjNDM7CX0KIAogCWRldl9kYmcoZGV2LCAmIzM0OyVzIC0gZ290IGlkXG4mIzM0OywgX19mdW5jX18pOwogCkBAIC0zOTMsNyAmIzQzOzM5Niw3IEBAIHN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCWludGYtJmd0O25lZWRzX2FsdHNldHRpbmcwID0gMDsKIAl9CiAKLQllcnJvciA9IGRyaXZlci0mZ3Q7cHJvYmUoaW50ZiwgaWQpOwomIzQzOwllcnJvciA9IGRyaXZlci0mZ3Q7cHJvYmUoaW50ZiwgJmFtcDtpZCk7CiAJaWYgKGVycm9yKQogCQlnb3RvIGVycjsKIApAQCAtODkxLDcgJiM0Mzs4OTQsNyBAQCBzdGF0aWMgaW50IHVzYl9kZXZpY2VfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KQogCX0gZWxzZSBpZiAoaXNfdXNiX2ludGVyZmFjZShkZXYpKSB7CiAJCXN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmOwogCQljb25zdCBzdHJ1Y3QgdXNiX2RyaXZlciAqdXNiX2RydjsKLQkJY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkOwomIzQzOwkJc3RydWN0IHVzYl9kZXZpY2VfaWQgaWQ7CiAKIAkJLyogZGV2aWNlIGRyaXZlcnMgbmV2ZXIgbWF0Y2ggaW50ZXJmYWNlcyAqLwogCQlpZiAoaXNfdXNiX2RldmljZV9kcml2ZXIoZHJ2KSkKQEAgLTkwMCwxMiAmIzQzOzkwMywxMCBAQCBzdGF0aWMgaW50IHVzYl9kZXZpY2VfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KQogCQlpbnRmID0gdG9fdXNiX2ludGVyZmFjZShkZXYpOwogCQl1c2JfZHJ2ID0gdG9fdXNiX2RyaXZlcihkcnYpOwogCi0JCWlkID0gdXNiX21hdGNoX2lkKGludGYsIHVzYl9kcnYtJmd0O2lkX3RhYmxlKTsKLQkJaWYgKGlkKQomIzQzOwkJaWYgKHVzYl9tYXRjaF9pZChpbnRmLCB1c2JfZHJ2LSZndDtpZF90YWJsZSkpCiAJCQlyZXR1cm4gMTsKIAotCQlpZCA9IHVzYl9tYXRjaF9keW5hbWljX2lkKGludGYsIHVzYl9kcnYpOwotCQlpZiAoaWQpCiYjNDM7CQlpZiAodXNiX21hdGNoX2R5bmFtaWNfaWQoaW50ZiwgdXNiX2RydiwgJmFtcDtpZCkpCiAJCQlyZXR1cm4gMTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9zcGNwOHg1LmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jCmluZGV4IGMxMWQ2NGJmMDhmYmFlLi4wZTc3MTVhMDJkZjRjYyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jCkBAIC0xMzMsMTQgJiM0MzsxMzMsMTQgQEAgc3RydWN0IHNwY3A4eDVfcHJpdmF0ZSB7CiBzdGF0aWMgaW50IHNwY3A4eDVfcHJvYmUoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbCwKIAkJCQkJCWNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCkKIHsKLQl1c2Jfc2V0X3NlcmlhbF9kYXRhKHNlcmlhbCwgKHZvaWQgKilpZCk7CiYjNDM7CXVzYl9zZXRfc2VyaWFsX2RhdGEoc2VyaWFsLCAodm9pZCAqKWlkLSZndDtkcml2ZXJfaW5mbyk7CiAKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBzcGNwOHg1X3BvcnRfcHJvYmUoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCkKIHsKLQljb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQgPSB1c2JfZ2V0X3NlcmlhbF9kYXRhKHBvcnQtJmd0O3NlcmlhbCk7CiYjNDM7CXVuc2lnbmVkIGludCBxdWlya3MgPSAodW5zaWduZWQgaW50KSh1bnNpZ25lZCBsb25nKXVzYl9nZXRfc2VyaWFsX2RhdGEocG9ydC0mZ3Q7c2VyaWFsKTsKIAlzdHJ1Y3Qgc3BjcDh4NV9wcml2YXRlICpwcml2OwogCiAJcHJpdiA9IGt6YWxsb2Nfb2JqKCpwcml2KTsKQEAgLTE0OCw3ICYjNDM7MTQ4LDcgQEAgc3RhdGljIGludCBzcGNwOHg1X3BvcnRfcHJvYmUoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydCkKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlzcGluX2xvY2tfaW5pdCgmYW1wO3ByaXYtJmd0O2xvY2spOwotCXByaXYtJmd0O3F1aXJrcyA9IGlkLSZndDtkcml2ZXJfaW5mbzsKJiM0MzsJcHJpdi0mZ3Q7cXVpcmtzID0gcXVpcmtzOwogCiAJdXNiX3NldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQsIHByaXYpOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3VzYi5oIGIvaW5jbHVkZS9saW51eC91c2IuaAppbmRleCAxZGE0YWQxNjEwYmNhMC4uNDlhYjhkYmI4ODVmNjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdXNiLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC91c2IuaApAQCAtMTE4NSw3ICYjNDM7MTE4NSw4IEBAIGV4dGVybiBzc2l6ZV90IHVzYl9zaG93X2R5bmlkcyhzdHJ1Y3QgdXNiX2R5bmlkcyAqZHluaWRzLCBjaGFyICpidWYpOwogICoJaW50ZXJmYWNlLiAgSXQgbWF5IGFsc28gdXNlIHVzYl9zZXRfaW50ZXJmYWNlKCkgdG8gc3BlY2lmeSB0aGUKICAqCWFwcHJvcHJpYXRlIGFsdHNldHRpbmcuICBJZiB1bndpbGxpbmcgdG8gbWFuYWdlIHRoZSBpbnRlcmZhY2UsCiAgKglyZXR1cm4gLUVOT0RFViwgaWYgZ2VudWluZSBJTyBlcnJvcnMgb2NjdXJyZWQsIGFuIGFwcHJvcHJpYXRlCi0gKgluZWdhdGl2ZSBlcnJubyB2YWx1ZS4KJiM0MzsgKgluZWdhdGl2ZSBlcnJubyB2YWx1ZS4gIFRoZSB1c2JfZGV2aWNlX2lkIHBhcmFtZXRlciBpcyBvbmx5IHZhbGlkIGR1cmluZwomIzQzOyAqCXByb2JlLgogICogQGRpc2Nvbm5lY3Q6IENhbGxlZCB3aGVuIHRoZSBpbnRlcmZhY2UgaXMgbm8gbG9uZ2VyIGFjY2Vzc2libGUsIHVzdWFsbHkKICAqCWJlY2F1c2UgaXRzIGRldmljZSBoYXMgYmVlbiAob3IgaXMgYmVpbmcpIGRpc2Nvbm5lY3RlZCBvciB0aGUKICAqCWRyaXZlciBtb2R1bGUgaXMgYmVpbmcgdW5sb2FkZWQuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MzUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMDAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgSW1wYWN0IG9mIHRoZSBVU0IgRHJpdmVyIElEIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGtlcm5lbCBwYXRjaCBzZXJpZXMgaW50cm9kdWNlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHdhcnJhbnQgZnV6emluZy4gVGhlIGZpbGVzIGltcGFjdGVkIOKAkyBgYXRoOWsvaGlmX3VzYi5jYCwgYHVzYnRtYy5jYCwgYGRyaXZlci5jYCwgYHNwY3A4eDUuY2AsIGFuZCBgdXNiLmhgIOKAkyBpbW1lZGlhdGVseSBmbGFnIHRoaXMgYXMgYSBwb3RlbnRpYWxseSBzaWduaWZpY2FudCBhcmVhIGZvciByZXZpZXcsIGVzcGVjaWFsbHkgc2luY2UgYGRyaXZlci5jYCB0b3VjaGVzIHRoZSBVU0IgY29yZS4KCkxvb2tpbmcgY2xvc2VyLCB0aGUga2V5IHNoaWZ0IGlzIGhvdyBgdXNiX2RldmljZV9pZGAgZGF0YSBpcyBoYW5kbGVkIGR1cmluZyB0aGUgVVNCIHByb2JlIHByb2Nlc3MuIEl0IHNlZW1zIHRoZSBwYXRjaCBpcyBtb3ZpbmcgYXdheSBmcm9tIHBhc3NpbmcgYSBwZXJzaXN0ZW50IHBvaW50ZXIgdG8gdGhlIGB1c2JfZGV2aWNlX2lkYCBzdHJ1Y3R1cmUgKGVpdGhlciBmcm9tIHRoZSBkeW5hbWljIElEIGxpc3Qgb3IgdGhlIGRyaXZlciYjMzk7cyBJRCB0YWJsZSkgdG8gcGFzc2luZyBhIHBvaW50ZXIgdG8gYSBsb2NhbGx5LWFsbG9jYXRlZCwgc3RhY2stYmFzZWQgYHVzYl9kZXZpY2VfaWRgLiBEcml2ZXJzIGNhbiBubyBsb25nZXIgc3RvcmUgdGhpcyBwb2ludGVyIGZvciBsYXRlciB1c2U7IHRoZXkmIzM5O3JlIG5vdyBjb21wZWxsZWQgdG8gY29weSB0aGUgZGF0YSB0aGV5IG5lZWQgZnJvbSB0aGUgSUQgZHVyaW5nIHRoZSBgcHJvYmVgIGNhbGwuIFRoaXMgaXMgaW50ZXJlc3Rpbmc6IGl0IGxvb2tzIGxpa2UgdGhleSBhcmUgZml4aW5nIHNvbWUgc3VidGxlIG1lbW9yeSBzYWZldHkgaXNzdWUsIHNwZWNpZmljYWxseSBhIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvLiBUaGlzIG1ha2VzIGl0IG1vcmUgcm9idXN0LCBidXQgaXQgbWlnaHQgaGF2ZSBjaGFuZ2VkIGhvdyBzb21lIGRyaXZlcnMgd2VyZSBkZXBlbmRpbmcgb24gYHVzYl9kZXZpY2VfaWRgIC0gd2hpY2ggbWlnaHQgaW50cm9kdWNlIGEgYnVnLgoKVGhpcyBjaGFuZ2UgaXMgbW9yZSB0aGFuIGNvc21ldGljLiBJdCBhbHRlcnMgY29yZSBVU0IgZHJpdmVyIG1hdGNoaW5nIGFuZCBwcm9iaW5nIGxvZ2ljLCBhbmQgaXQmIzM5O3MgZXNzZW50aWFsIHRvIHJlY29nbml6ZSB0aGF0IHRoaXMgaGFzIGZ1bmN0aW9uYWwgaW1wbGljYXRpb25zLiBXZSYjMzk7dmUgZ290IGBhdGg5a2AsIGB1c2J0bWNgLCBhbmQgYHNwY3A4eDVgIGdldHRpbmcgYWRqdXN0ZWQgdG8gdXNlIHRoaXMgbmV3IHBhdHRlcm4uCgpHaXZlbiB0aGF0IHRoZXNlIGFyZSBVU0IgY29yZSBjaGFuZ2VzLCB0aGUgYW5zd2VyIGlzIGFuIGltbWVkaWF0ZSB5ZXMuIFdlIG5lZWQgdG8gZnV6eiB0aGlzISBXZSBjYW4gdHJpZ2dlciB0aGUgYWZmZWN0ZWQgY29kZSBwYXRocyBieSBmdXp6aW5nIFVTQiBkZXZpY2UgZW51bWVyYXRpb24gdGhyb3VnaCwgZm9yIGluc3RhbmNlLCBgZHVtbXlfaGNkYCBvciBgcmF3LWdhZGdldGAuIFdlIGNhbiBsb29rIGludG8gdHJpZ2dlcmluZyBgdXNiX3Byb2JlX2ludGVyZmFjZWAgYW5kIGFsbCBpdHMgZGVwZW5kZW50cy4KCk5vdywgbGV0JiMzOTtzIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gV2UgZGVmaW5pdGVseSBuZWVkIGBVU0JgIGZvciBnZW5lcmFsIFVTQiBzdXBwb3J0LiBgQVRIOUtfSFRDYCB3aWxsIGJlIHJlbGV2YW50IGZvciB0aGUgYGF0aDlrYCBjaGFuZ2VzLCBgVVNCX1RNQ2AgaXMgbmVlZGVkIGZvciB0aGUgYHVzYnRtY2AgY2hhbmdlcywgYW5kIGBVU0JfU0VSSUFMX1NQQ1A4WDVgIGlzIG5lZWRlZCBmb3IgdGhlIGBzcGNwOHg1YCBjaGFuZ2VzLiBJIHdpbGwgbmVlZCB0byB2ZXJpZnkgdGhvc2UgYXJlIGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTc6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFUSDlLX0hUQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnPTE1Nj1jb25maWcgQVRIOUtfUENJX05PX0VFUFJPTVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnOjE3Mjpjb25maWcgQVRIOUtfSFRDXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIEhUQyBiYXNlZCB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWctMTg4LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNzo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTkzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBVU0JfVE1DIFZlcmlmaWNhdGlvbioqCgpBbHJpZ2h0LCAqVVNCX1RNQyouIFRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gcXVpY2tseSBydW4gdGhyb3VnaCBteSBtZW50YWwgY2hlY2tsaXN0LiBCZWZvcmUgZGl2aW5nIGludG8gYW55dGhpbmcgc3BlY2lmaWMsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgcG90ZW50aWFsIHByb2JsZW0uIElzIHRoaXMgYSBzdHJhaWdodGZvcndhcmQgZHJpdmVyIGlzc3VlLCBvciBhcmUgd2UgbG9va2luZyBhdCBzb21ldGhpbmcgZGVlcGVyPyBJcyBpdCB0aGUgaW50ZXJmYWNlIGl0c2VsZiwgdGhlIGluc3RydW1lbnQgb24gdGhlIG90aGVyIGVuZCwgb3IgdGhlIGFwcGxpY2F0aW9uIGNvZGU/IEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgbW9zdCBiYXNpYyBhc3N1bXB0aW9uOiB0aGUgVVNCX1RNQyBjb21tdW5pY2F0aW9uIHByb3RvY29sIGlzIHRoZSB1bmRlcmx5aW5nIGlzc3VlLCBidXQgSSB3YW50IHRvIHN0YXkgZmxleGlibGUuIFRoaXMgd2lsbCBiZSBhIHN5c3RlbWF0aWMgZGlhZ25vc3RpYyBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfVE1DJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvY2xhc3MvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9jbGFzcy9LY29uZmlnPTMxPWNvbmZpZyBVU0JfV0RNXG4tLVxuZHJpdmVycy91c2IvY2xhc3MvS2NvbmZpZy00MC1cbmRyaXZlcnMvdXNiL2NsYXNzL0tjb25maWc6NDE6Y29uZmlnIFVTQl9UTUNcbmRyaXZlcnMvdXNiL2NsYXNzL0tjb25maWctNDItXHR0cmlzdGF0ZSBcJiMzNDtVU0IgVGVzdCBhbmQgTWVhc3VyZW1lbnQgQ2xhc3Mgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4NzgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBVU0JfU0VSSUFMX1NQQ1A4WDUqKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gdGhpcyBVU0JfU0VSSUFMX1NQQ1A4WDUgdGhpbmcuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gb3Igc291cmNlIGNvZGUg4oCTIEkga25vdyB0aGlzIGxpa2VseSByZWZlcmVuY2VzIHNvbWUgc3BlY2lmaWMgaGFyZHdhcmUgb3IgZHJpdmVyLiBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggd2hhdCB0aGlzIGxpa2VseSBpcywgYW5kIGRldGVybWluZSBpZiBpdCBwZXJ0YWlucyB0byBteSBjdXJyZW50IHByb2plY3QuIElzIHRoaXMgYSBjdXN0b20gZHJpdmVyPyBBIHN0YW5kYXJkaXplZCBwcm90b2NvbD8gV2hhdCBwbGF0Zm9ybSBhcmUgd2UgZGlzY3Vzc2luZz8gVGhlIGNvbnRleHQgaXMga2V5IGhlcmUuCgpMZXQmIzM5O3MgYmVnaW4gYnkgc2VhcmNoaW5nIGZvciB0aGF0IG5hbWUgd2l0aGluIHRoZSByZWxldmFudCByZXBvc2l0b3JpZXMuIEkgbmVlZCB0byBxdWlja2x5IGdyYXNwIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LCBlc3BlY2lhbGx5IGluIHRoZSBjb250ZXh0IG9mIGFueSBzZXJpYWwgY29tbXVuaWNhdGlvbiBzeXN0ZW1zIEkmIzM5O20gY3VycmVudGx5IHdvcmtpbmcgd2l0aC4gSSBhbHNvIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaXQgaXMgbm90IHNvbWV0aGluZyBJIGFscmVhZHkga25vdyBhYm91dC4KCkkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGhlYWRlciBmaWxlcywgZGVmaW5pdGlvbnMsIGFuZCB1c2FnZSBleGFtcGxlcy4gSSYjMzk7bSBob3BpbmcgdG8gZmluZCBjbHVlcyBhYm91dCBpdHMgdW5kZXJseWluZyBhcmNoaXRlY3R1cmUgYW5kIGFueSBwb3RlbnRpYWwgZ290Y2hhcy4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIHNvbWV0aGluZyBJIG5lZWQgdG8gaW50ZWdyYXRlLCBtb2RpZnksIG9yIHNpbXBseSBiZSBhd2FyZSBvZi4gVGhlIGdvYWwgaXMgYSBxdWljaywgaW5mb3JtZWQgZGVjaXNpb24gb24gaG93IHRvIHByb2NlZWQsIGFuZCB3aGV0aGVyIHRoaXMgaW1wYWN0cyBteSBvdmVyYWxsIGRlc2lnbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNzo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX1NFUklBTF9TUENQOFg1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc9NDc1PWNvbmZpZyBVU0JfU0VSSUFMX1FVQUxDT01NXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDg0LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NDg1OmNvbmZpZyBVU0JfU0VSSUFMX1NQQ1A4WDVcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ4Ni1cdHRyaXN0YXRlIFwmIzM0O1VTQiBTUENQOHg1IFVTQiBUbyBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTc6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzI4NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVVNCIFByb2JlIEZ1bmN0aW9uYWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9uczogYHVzYl9wcm9iZV9pbnRlcmZhY2VgLCBgdXNiX21hdGNoX2R5bmFtaWNfaWRgLCBgYXRoOWtfaGlmX3VzYl9wcm9iZWAsIGB1c2J0bWNfcHJvYmVgLCBgc3BjcDh4NV9wcm9iZWAsIGFuZCBgc3BjcDh4NV9wb3J0X3Byb2JlYC4gVGhlc2Ugc2VlbSB0byBiZSB0aGUga2V5IHBsYXllcnMgaW4gdGhlIFVTQiBwcm9iaW5nIHByb2Nlc3MsIGFuZCB0aGV5JiMzOTtyZSB0aGUgb25lcyBJIG5lZWQgdG8gemVybyBpbiBvbiB0byB1bmRlcnN0YW5kIHRoaXMgcGFydGljdWxhciBtb2RpZmljYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXkmIzM5O3JlIGFjdHVhbGx5IHJlbGV2YW50LCBhbmQgaWYgdGhlIHNjb3BlIG9mIHRoZWlyIGFjdGlvbnMgaXMgdGFyZ2V0ZWQgZW5vdWdoIHRvIHBpbnBvaW50IHRoZSBhbGxvY2F0aW9uIGNoYW5nZXMuCgpgdXNiX3Byb2JlX2ludGVyZmFjZWAgaXMgYSBjb3JlIGZ1bmN0aW9uLCB3aGljaCBtYWtlcyBpdCBwb3RlbnRpYWxseSBwcm9ibGVtYXRpYyBiZWNhdXNlIGl0JiMzOTtzIHVzZWQgKmV2ZXJ5d2hlcmUqLCBhbmQgaXQgaGFuZGxlcyBhIGxvdCBvZiBnZW5lcmljIFVTQiBpbnRlcmFjdGlvbnMuIEhvd2V2ZXIsIGl0JiMzOTtzIGFsc28gdGhlIGV4YWN0IHBsYWNlIHdoZXJlIHRoZSBgdXNiX2RldmljZV9pZGAgYWxsb2NhdGlvbiBvY2N1cnMsIHNvIGl0JiMzOTtzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgdGhpcyBjaGFuZ2UuIFNpbWlsYXJseSwgYHVzYl9tYXRjaF9keW5hbWljX2lkYCBoYXMgYmVlbiBtb2RpZmllZCwgd2hpY2ggaXMgYW5vdGhlciBzaWduaWZpY2FudCBwb2ludCB0byBjb25zaWRlci4KCk5vdyBJJiMzOTttIGRpdmluZyBkZWVwZXIsIGFuZCBgdXNiX3Byb2JlX2ludGVyZmFjZWAgaXMgdGhlIGZpcnN0IGZ1bmN0aW9uIEkgd2FudCB0byBkaXNzZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNzo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2JfcHJvYmVfaW50ZXJmYWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jPTMwND1zdGF0aWMgaW50IHVzYl91bmJpbmRfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jLTMxOC0vKiBjYWxsZWQgZnJvbSBkcml2ZXIgY29yZSB3aXRoIGRldiBsb2NrZWQgKi9cbmRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmM6MzE5OnN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jLTMyMC17XG4tLVxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYz0xMDYxPWludCB1c2JfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB1c2JfZHJpdmVyICpuZXdfZHJpdmVyLCBzdHJ1Y3QgbW9kdWxlICpvd25lcixcbi0tXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jLTEwNzAtXHRuZXdfZHJpdmVyLVx1MDAzZWRyaXZlci5idXMgPSBcdTAwMjZ1c2JfYnVzX3R5cGU7XG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jOjEwNzE6XHRuZXdfZHJpdmVyLVx1MDAzZWRyaXZlci5wcm9iZSA9IHVzYl9wcm9iZV9pbnRlcmZhY2U7XG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jLTEwNzItXHRuZXdfZHJpdmVyLVx1MDAzZWRyaXZlci5yZW1vdmUgPSB1c2JfdW5iaW5kX2ludGVyZmFjZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTc6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk2NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIGB1c2JfbWF0Y2hfZHluYW1pY19pZGAqKgoKT2theSwgdGltZSB0byBkaXNzZWN0IGB1c2JfbWF0Y2hfZHluYW1pY19pZGAuIEkmIzM5O20gc3RhcnRpbmcgaGVyZSBiZWNhdXNlIEkga25vdyBkeW5hbWljIElEcyBjYW4gYmUgdHJpY2t5LiBMZXQgbWUgcmVmcmVzaCBteSBtZW1vcnkgb24gaXRzIHB1cnBvc2UuIEFoLCB5ZXMsIGl0JiMzOTtzIHRoZSBmdW5jdGlvbiB0aGF0IHRyaWVzIHRvIGZpbmQgYSBkcml2ZXIgbWF0Y2ggZm9yIGEgVVNCIGRldmljZSB3aGVuIHRoZSB0eXBpY2FsIHN0YXRpYyBJRCB0YWJsZSBpc24mIzM5O3Qgc3VmZmljaWVudCwgcmlnaHQ/IEl0JiMzOTtzIHRoZSBmYWxsYmFjayBtZWNoYW5pc20uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgKmhvdyogaXQmIzM5O3MgZG9pbmcgdGhhdCBkeW5hbWljIG1hdGNoaW5nIOKAkyB3aGF0JiMzOTtzIHRoZSBhbGdvcml0aG0/IElzIGl0IHJlbHlpbmcgb24gZGVzY3JpcHRvcnMsIHNvbWUgZm9ybSBvZiBwcm9iaW5nLCBvciBzb21ldGhpbmcgbW9yZSBjbGV2ZXI/IFNwZWNpZmljYWxseSwgSSYjMzk7bSBpbnRlcmVzdGVkIGluIHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBlZGdlIGNhc2VzLiBBcmUgdGhlcmUgYW55IGtub3duIGlzc3VlcyB3aXRoIHRoaXMgZnVuY3Rpb24/IEFueSByYWNlIGNvbmRpdGlvbnMsIHBlcmhhcHM/IEFuZCBtb3N0IGltcG9ydGFudGx5LCBob3cgaXMgaXQgaGFuZGxpbmcgdGhlIHZhcmlvdXMgVVNCIHRyYW5zZmVyIHR5cGVzPyBEb2VzIGl0IGNvcnJlY3RseSBkaWZmZXJlbnRpYXRlIGJldHdlZW4gY29udHJvbCwgYnVsaywgaW50ZXJydXB0IGFuZCBpc29jaHJvbm91cyB0cmFuc2ZlcnMgd2hpbGUgZG9pbmcgdGhlIGR5bmFtaWMgSUQgbWF0Y2hpbmc/IEkgbmVlZCB0byBjaGVjayBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgVVNCIGNvcmUsIHRoZSBkZXZpY2UmIzM5O3MgZGVzY3JpcHRvcnMsIGFuZCB0aGUgcG90ZW50aWFsIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbi4gTGV0JiMzOTtzIHNlZSBob3cgaXQgbWFrZXMgdGhlIGRlY2lzaW9uLCBlc3BlY2lhbGx5IHdoYXQgdGhlIGNyaXRlcmlhIGZvciBhIG1hdGNoIGxvb2sgbGlrZS4gQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTc6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXNiX21hdGNoX2R5bmFtaWNfaWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmM9MjE5PXN0YXRpYyB2b2lkIHVzYl9mcmVlX2R5bmlkcyhzdHJ1Y3QgdXNiX2RyaXZlciAqdXNiX2Rydilcbi0tXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jLTIyOS1cbmRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmM6MjMwOnN0YXRpYyBib29sIHVzYl9tYXRjaF9keW5hbWljX2lkKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RyaXZlciAqZHJ2LFxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYy0yMzEtXHRcdFx0XHQgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmM9MzE5PXN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYy0zNDQtXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jOjM0NTpcdGlmICghdXNiX21hdGNoX2R5bmFtaWNfaWQoaW50ZiwgZHJpdmVyLCBcdTAwMjZpZCkpIHtcbmRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmMtMzQ2LVx0XHRtYXRjaGVkX2lkID0gdXNiX21hdGNoX2lkKGludGYsIGRyaXZlci1cdTAwM2VpZF90YWJsZSk7XG4tLVxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYz04NzE9c3RhdGljIGludCB1c2JfZGV2aWNlX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcbi0tXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jLTkwOC1cbmRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmM6OTA5Olx0XHRpZiAodXNiX21hdGNoX2R5bmFtaWNfaWQoaW50ZiwgdXNiX2RydiwgXHUwMDI2aWQpKVxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYy05MTAtXHRcdFx0cmV0dXJuIDE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MzkKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYGF0aDlrX2hpZl91c2JfcHJvYmVgKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMuIFRoZSBtZW50YWwgY2hlY2tsaXN0IHN0YXJ0cyB3aXRoIGBhdGg5a19oaWZfdXNiX3Byb2JlYC4gSW1tZWRpYXRlbHksIEnigJltIHRoaW5raW5nIOKAkyByaWdodCwgVVNCIHByb2JlIGZ1bmN0aW9uLiBUaGF04oCZcyB0aGUgZW50cnkgcG9pbnQsIHRoZSBmaXJzdCBwbGFjZSB0aGUgc3lzdGVtIHRyaWVzIHRvIGJyaW5nIHVwIGFuIEF0aGVyb3MgQVI5MDAwLXNlcmllcyBXaUZpIGRldmljZSBjb25uZWN0ZWQgb3ZlciBVU0IuIEdvdHRhIGJlIGZhbWlsaWFyIHdpdGggdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgcG93ZXIgbWFuYWdlbWVudCwgcmVzb3VyY2UgYWxsb2NhdGlvbuKApiBldmVyeXRoaW5nIGhpbmdlcyBvbiB0aGlzIGZ1bmN0aW9uLiBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgdGhlIHVzdWFsIHN1c3BlY3RzOiBkZXZpY2UgSUQgbWF0Y2hpbmcgYWdhaW5zdCB0aGUgVVNCIGRldmljZSB0YWJsZSwgcmVzb3VyY2UgcmVxdWVzdHMgZm9yIERNQSwgaW50ZXJydXB0cywgbWF5YmUgc29tZSBwbGF0Zm9ybS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbnMsIGFuZCB0aGUgY3J1Y2lhbCBjYWxsIHRvIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciAoSEFMKSBmb3IgdGhlIGNoaXBzZXQuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBmb3IgZXJyb3IgaGFuZGxpbmcsIG9mIGNvdXJzZTsgd2hhdCBoYXBwZW5zIGlmIHRoZSBVU0IgZGV2aWNlIGlzbiYjMzk7dCByZWNvZ25pemVkLCBvciBpZiB0aGVyZSYjMzk7cyBhIHByb2JsZW0gd2l0aCByZXNvdXJjZSBhbGxvY2F0aW9uPyBBbmQsIGhvdyBpcyB0aGlzIHByb2JlIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gdGhlIHJlc3Qgb2YgdGhlIGF0aDlrIGRyaXZlcj8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTc6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoOWtfaGlmX3VzYl9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0xMjkwPXN0YXRpYyBpbnQgc2VuZF9lamVjdF9jb21tYW5kKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xMzQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYzoxMzQ1OnN0YXRpYyBpbnQgYXRoOWtfaGlmX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xMzQ2LVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYz0xNTA5PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBhdGg5a19oaWZfdXNiX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMTUxMC1cdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjE1MTE6XHQucHJvYmUgPSBhdGg5a19oaWZfdXNiX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xNTEyLVx0LmRpc2Nvbm5lY3QgPSBhdGg5a19oaWZfdXNiX2Rpc2Nvbm5lY3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyNjYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6CgoqKkRlYnVnZ2luZyB0aGUgVVNCVE1DIFByb2JlIEZ1bmN0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYHVzYnRtY19wcm9iZWAuIFRoaXMgbGlrZWx5IG1lYW5zIEkmIzM5O20gdHJvdWJsZXNob290aW5nIHNvbWUgVVNCVE1DIGRyaXZlci1yZWxhdGVkIGlzc3VlLiBQZXJoYXBzIGEgZGV2aWNlIGlzbiYjMzk7dCBiZWluZyByZWNvZ25pemVkLCBvciBpdCYjMzk7cyBtaXNiZWhhdmluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aGluIHRoYXQgcHJvYmUgZnVuY3Rpb24uIElzIGl0IGZhaWxpbmcgdG8gbWF0Y2ggYSBkZXZpY2UgSUQ/IElzIHRoZXJlIGFuIGVycm9yIGR1cmluZyBpbml0aWFsaXphdGlvbj8gSXMgaXQgZXZlbiBiZWluZyBjYWxsZWQgaW4gdGhlIGZpcnN0IHBsYWNlPyBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCBieSBzdGVwcGluZyB0aHJvdWdoIGl0IHdpdGggYSBkZWJ1Z2dlciBvciBhZGRpbmcgc29tZSBwcmludCBzdGF0ZW1lbnRzIHRvIGNoZWNrIHdoYXQgY29uZGl0aW9ucyBhcmUgbWV0IGFuZCB3aGVyZSB0aGUgY29kZSBicmFuY2hlcy4gTXkgZXhwZXJpZW5jZSBoYXMgdGF1Z2h0IG1lIHRoYXQgdGhlIGRldmlsIGlzIHVzdWFsbHkgaW4gdGhlIGRldGFpbHMgd2l0aGluIHRoYXQgcHJvYmluZyBzdGFnZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VzYnRtY19wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jPTIzNjk9c3RhdGljIHZvaWQgdXNidG1jX2ZyZWVfaW50KHN0cnVjdCB1c2J0bWNfZGV2aWNlX2RhdGEgKmRhdGEpXG4tLVxuZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmMtMjM4MC1cbmRyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jOjIzODE6c3RhdGljIGludCB1c2J0bWNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG5kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYy0yMzgyLVx0XHRcdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYz0yNjA4PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciB1c2J0bWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jLTI2MTAtXHQuaWRfdGFibGVcdD0gdXNidG1jX2RldmljZXMsXG5kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYzoyNjExOlx0LnByb2JlXHRcdD0gdXNidG1jX3Byb2JlLFxuZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmMtMjYxMi1cdC5kaXNjb25uZWN0XHQ9IHVzYnRtY19kaXNjb25uZWN0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNzo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NzU4CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3MsIGZvY3VzaW5nIG9uIHdoYXQgSSYjMzk7ZCBiZSB0aGlua2luZyBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipJbml0aWFsIERpYWdub3N0aWMgU3RlcHMqKgoKQWxyaWdodCwgYmVmb3JlIGRpdmluZyB0b28gZGVlcCBpbnRvIHRoZSBpc3N1ZSwgSSBuZWVkIGEgY2xlYXIgYmFzZWxpbmUuIE15IGZpcnN0IHN0ZXAgaXMgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIGZ1bmRhbWVudGFsIHByb2JlczogSSYjMzk7bSBnb2luZyB0byBjaGVjayBib3RoIGBzcGNwOHg1X3Byb2JlYCBhbmQgYHNwY3A4eDVfcG9ydF9wcm9iZWAuIFRoZXNlIGFyZSB0aGUgY3J1Y2lhbCBlbnRyeSBwb2ludHM7IHRoZXkgdGVsbCBtZSB3aGV0aGVyIHRoZSBjb3JlIGRldmljZSBpbml0aWFsaXphdGlvbiBhbmQgaW5kaXZpZHVhbCBwb3J0IGNvbmZpZ3VyYXRpb25zIGFyZSBzdWNjZWVkaW5nIG9yIGZhaWxpbmcuIEdyYWJiaW5nIHRoZXNlIGVhcmx5IGFsbG93cyBmb3IgYW4gaW5mb3JtZWQgZGlyZWN0aW9uLCB0byBzZWUgd2hlcmUgdGhlIHByb2Nlc3MgbWF5IGJlIGZhaWxpbmcuIENoZWNraW5nIHRoZW0gd2lsbCBwcmV2ZW50IGEgbGVuZ3RoeSBkZWVwIGRpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NwY3A4eDVfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL3NlcmlhbC9zcGNwOHg1LmM9MTI3PXN0cnVjdCBzcGNwOHg1X3ByaXZhdGUge1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9zcGNwOHg1LmMtMTMyLVxuZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuYzoxMzM6c3RhdGljIGludCBzcGNwOHg1X3Byb2JlKHN0cnVjdCB1c2Jfc2VyaWFsICpzZXJpYWwsXG5kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jLTEzNC1cdFx0XHRcdFx0XHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuYz00NTE9c3RhdGljIHN0cnVjdCB1c2Jfc2VyaWFsX2RyaXZlciBzcGNwOHg1X2RldmljZSA9IHtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jLTQ2NS1cdC50aW9jbXNldFx0XHQ9IHNwY3A4eDVfdGlvY21zZXQsXG5kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jOjQ2NjpcdC5wcm9iZVx0XHRcdD0gc3BjcDh4NV9wcm9iZSxcbmRyaXZlcnMvdXNiL3NlcmlhbC9zcGNwOHg1LmMtNDY3LVx0LnBvcnRfcHJvYmVcdFx0PSBzcGNwOHg1X3BvcnRfcHJvYmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjM2CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFVTQiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgcmVjb2duaXplIHRoZSBpbXBsaWNhdGlvbnMuIFRoZSBjb3JlIGNoYW5nZSBpcyBob3cgYHVzYl9kZXZpY2VfaWRgIGlzIGhhbmRsZWQsIG1vdmluZyBmcm9tIGEgcGVyc2lzdGVudCBwb2ludGVyIHRvIGEgdGVtcG9yYXJ5IHN0YWNrIGFsbG9jYXRpb24uIFRoYXQmIzM5O3MgYSBzaWduaWZpY2FudCBzaGlmdCBpbiBtZW1vcnkgbWFuYWdlbWVudCBhbmQgSSYjMzk7bSBpbnN0YW50bHkgc2VlaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0LiBJdCYjMzk7cyBlc3NlbnRpYWxseSBhbHRlcmluZyBob3cgdGhlIFVTQiBjb3JlIG1hdGNoZXMgZGV2aWNlcyB0byBkcml2ZXJzIGR1cmluZyBwcm9iZSBvcGVyYXRpb25zLgoKTm93LCBteSBmb2N1cyBpcyBvbiBlbnN1cmluZyBubyB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgYXJpc2UgZnJvbSB0aGlzIGNoYW5nZS4gSXQgbG9va3MgbGlrZSB0aGUgdGVhbSBoYXMgYWxyZWFkeSBpZGVudGlmaWVkIHRoYXQgYGF0aDlrYCwgYHVzYnRtY2AsIGFuZCBgc3BjcDh4NWAgVVNCIGRyaXZlcnMgYXJlIGRpcmVjdGx5IGFmZmVjdGVkIGJlY2F1c2UgdGhleSB3ZXJlIHN0b3JpbmcgdGhlIG9sZCBwb2ludGVyLiBTbWFydC4KCkkgY2FuIHNlZSB0aGUgZnV6emluZyBzdHJhdGVneSBpcyBzb3VuZDsgaXQmIzM5O3MgZGVzaWduZWQgdG8gdHJpZ2dlciB0aGVzZSBhZmZlY3RlZCBwYXRocyBkdXJpbmcgVVNCIGRldmljZSBlbnVtZXJhdGlvbiB0byByZWFsbHkgc3RyZXNzLXRlc3QgdGhlIG5ldyBpbXBsZW1lbnRhdGlvbi4gR29vZC4KCkkmIzM5O20gbWFraW5nIGEgbWVudGFsIG5vdGUgb2YgdGhvc2Uga2V5IHN5bWJvbHM6IGB1c2JfcHJvYmVfaW50ZXJmYWNlYCwgYHVzYl9tYXRjaF9keW5hbWljX2lkYCwgYGF0aDlrX2hpZl91c2JfcHJvYmVgLCBgdXNidG1jX3Byb2JlYCwgYHNwY3A4eDVfcHJvYmVgLCBhbmQgYHNwY3A4eDVfcG9ydF9wcm9iZWAuIFRoZXNlIGFyZSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRvIHNjcnV0aW5pemUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgdGhlcmUgYW5kIHRyYWNlIHRoZSBsb2dpYy4KCkJlZm9yZSBJIGRpZyBpbiB0b28gZGVlcCwgSSB3YW50IHRvIGNvbmZpcm0gSSBoYXZlIGFsbCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQuIFRoZXkmIzM5O3ZlIGxpc3RlZCBgQVRIOUtfSFRDYCwgYFVTQl9UTUNgLCBhbmQgYFVTQl9TRVJJQUxfU1BDUDhYNWAuIGBVU0JgIGlzIGFscmVhZHkgYnJvYWRseSBlbmFibGVkLCBzbyB0aGF0JiMzOTtzIGdvb2QuIEFuZCB0aGUgYFVTQl9TRVJJQUxgIGNvbmZpZyBpcyBuZWNlc3NhcnkgZm9yIGBVU0JfU0VSSUFMX1NQQ1A4WDVgLCBzbyBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBpbiB0aGUgYGRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnYCBmaWxlLCBqdXN0IHRvIGJlIHN1cmUuIEkmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIHRob3NlIGFyZSBhbGwgZW5hYmxlZCBpbiBteSB0ZXN0IHNldHVwLiBOb3csIGxldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBjaGFuZ2VkIGFuZCBsb29rIGZvciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNzo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX1NFUklBTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTUtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo2Om1lbnVjb25maWcgVVNCX1NFUklBTFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1VTQiBTZXJpYWwgQ29udmVydGVyIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZz0yMT1pZiBVU0JfU0VSSUFMXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yMi1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjIzOmNvbmZpZyBVU0JfU0VSSUFMX0NPTlNPTEVcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtVU0IgU2VyaWFsIENvbnNvbGUgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00NS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjQ2OmNvbmZpZyBVU0JfU0VSSUFMX0dFTkVSSUNcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ3LVx0Ym9vbCBcJiMzNDtVU0IgR2VuZXJpYyBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTQtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo1NTpjb25maWcgVVNCX1NFUklBTF9TSU1QTEVcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTU2LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIFNlcmlhbCBTaW1wbGUgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNzgtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo3OTpjb25maWcgVVNCX1NFUklBTF9BSVJDQUJMRVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctODAtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgQUlSY2FibGUgQmx1ZXRvb3RoIERvbmdsZSBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy04Ni1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjg3OmNvbmZpZyBVU0JfU0VSSUFMX0FSSzMxMTZcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTg4LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIEFSSyBNaWNybyAzMTE2IFVTQiBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctOTUtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo5Njpjb25maWcgVVNCX1NFUklBTF9CRUxLSU5cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTk3LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIEJlbGtpbiBhbmQgUGVyYWNvbSBTaW5nbGUgUG9ydCBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMTA1LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MTA2OmNvbmZpZyBVU0JfU0VSSUFMX0NIMzQxXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xMDctXHR0cmlzdGF0ZSBcJiMzNDtVU0IgV2luY2hpcGhlYWQgQ0gzNDEgU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTExNC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjExNTpjb25maWcgVVNCX1NFUklBTF9XSElURUhFQVRcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTExNi1cdHRyaXN0YXRlIFwmIzM0O1VTQiBDb25uZWN0VGVjaCBXaGl0ZUhFQVQgU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTEyNC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjEyNTpjb25maWcgVVNCX1NFUklBTF9ESUdJX0FDQ0VMRVBPUlRcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTEyNi1cdHRyaXN0YXRlIFwmIzM0O1VTQiBEaWdpIEludGVybmF0aW9uYWwgQWNjZWxlUG9ydCBVU0IgU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTEzNS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjEzNjpjb25maWcgVVNCX1NFUklBTF9DUDIxMFhcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTEzNy1cdHRyaXN0YXRlIFwmIzM0O1VTQiBDUDIxMHggZmFtaWx5IG9mIFVBUlQgQnJpZGdlIENvbnRyb2xsZXJzXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMTQ0LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MTQ1OmNvbmZpZyBVU0JfU0VSSUFMX0NZUFJFU1NfTThcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTE0Ni1cdHRyaXN0YXRlIFwmIzM0O1VTQiBDeXByZXNzIE04IFVTQiBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMTU4LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MTU5OmNvbmZpZyBVU0JfU0VSSUFMX0VNUEVHXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xNjAtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgRW1wZWcgZW1wZWctY2FyIE1hcmsgSS9JSSBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xNjktXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoxNzA6Y29uZmlnIFVTQl9TRVJJQUxfRlRESV9TSU9cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTE3MS1cdHRyaXN0YXRlIFwmIzM0O1VTQiBGVERJIFNpbmdsZSBQb3J0IFNlcmlhbCBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xODItXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoxODM6Y29uZmlnIFVTQl9TRVJJQUxfVklTT1JcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTE4NC1cdHRyaXN0YXRlIFwmIzM0O1VTQiBIYW5kc3ByaW5nIFZpc29yIC8gUGFsbSBtNTB4IC8gU29ueSBDbGllIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTE5My1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjE5NDpjb25maWcgVVNCX1NFUklBTF9JUEFRXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xOTUtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgUG9ja2V0UEMgUERBIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTIwNC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjIwNTpjb25maWcgVVNCX1NFUklBTF9JUlxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjA2LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIElSIERvbmdsZSBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjE0LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MjE1OmNvbmZpZyBVU0JfU0VSSUFMX0VER0VQT1JUXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yMTYtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgSW5zaWRlIE91dCBFZGdlcG9ydCBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjM5LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MjQwOmNvbmZpZyBVU0JfU0VSSUFMX0VER0VQT1JUX1RJXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yNDEtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgSW5zaWRlIE91dCBFZGdlcG9ydCBTZXJpYWwgRHJpdmVyIChUSSBkZXZpY2VzKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTI0OS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjI1MDpjb25maWcgVVNCX1NFUklBTF9GODEyMzJcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTI1MS1cdHRyaXN0YXRlIFwmIzM0O1VTQiBGaW50ZWsgRjgxMjMyIFNpbmdsZSBQb3J0IFNlcmlhbCBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yNTgtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoyNTk6Y29uZmlnIFVTQl9TRVJJQUxfRjgxNTNYXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yNjAtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgRmludGVrIEY4MTUzMi81MzQgTXVsdGktUG9ydHMgU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTI2OC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjI2OTpjb25maWcgVVNCX1NFUklBTF9HQVJNSU5cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTI3MC1cdHRyaXN0YXRlIFwmIzM0O1VTQiBHYXJtaW4gR1BTIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTI4MC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjI4MTpjb25maWcgVVNCX1NFUklBTF9JUFdcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTI4Mi1cdHRyaXN0YXRlIFwmIzM0O1VTQiBJUFdpcmVsZXNzICgzRyBVTVRTIFRERCkgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjkwLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MjkxOmNvbmZpZyBVU0JfU0VSSUFMX0lVVVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjkyLVx0dHJpc3RhdGUgXCYjMzQ7VVNCIEluZmluaXR5IFVTQiBVbmxpbWl0ZWQgUGhvZW5peCBEcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zMDAtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzozMDE6Y29uZmlnIFVTQl9TRVJJQUxfS0VZU1BBTl9QREFcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTMwMi1cdHRyaXN0YXRlIFwmIzM0O1VTQiBLZXlzcGFuIFBEQSAvIFhpcmNvbSBTaW5nbGUgUG9ydCBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzExLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MzEyOmNvbmZpZyBVU0JfU0VSSUFMX0tFWVNQQU5cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTMxMy1cdHRyaXN0YXRlIFwmIzM0O1VTQiBLZXlzcGFuIFVTQS14eHggU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTMyNS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjMyNjpjb25maWcgVVNCX1NFUklBTF9LTFNJXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zMjctXHR0cmlzdGF0ZSBcJiMzNDtVU0IgS0w1S1VTQjEwNSAoUGFsbWNvbm5lY3QpIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM0MC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjM0MTpjb25maWcgVVNCX1NFUklBTF9LT0JJTF9TQ1RcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM0Mi1cdHRyaXN0YXRlIFwmIzM0O1VTQiBLT0JJTCBjaGlwY2FyZCByZWFkZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zNTctXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzozNTg6Y29uZmlnIFVTQl9TRVJJQUxfTUNUX1UyMzJcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM1OS1cdHRyaXN0YXRlIFwmIzM0O1VTQiBNQ1QgU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM2OS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjM3MDpjb25maWcgVVNCX1NFUklBTF9NRVRST1xuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzcxLVx0dHJpc3RhdGUgXCYjMzQ7VVNCIE1ldHJvbG9naWMgSW5zdHJ1bWVudHMgVVNCLVBPUyBCYXJjb2RlIFNjYW5uZXIgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzc3LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6Mzc4OmNvbmZpZyBVU0JfU0VSSUFMX01PUzc3MjBcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM3OS1cdHRyaXN0YXRlIFwmIzM0O1VTQiBNb3NjaGlwIDc3MjAgU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM4Ni1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjM4Nzpjb25maWcgVVNCX1NFUklBTF9NT1M3NzE1X1BBUlBPUlRcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM4OC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgcGFyYWxsZWwgcG9ydCBvbiB0aGUgTW9zY2hpcCA3NzE1XCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzk2LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6Mzk3OmNvbmZpZyBVU0JfU0VSSUFMX01PUzc4NDBcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM5OC1cdHRyaXN0YXRlIFwmIzM0O1VTQiBNb3NjaGlwIDc4NDAvNzgyMCBVU0IgU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQxMC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjQxMTpjb25maWcgVVNCX1NFUklBTF9NWFVQT1JUXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00MTItXHR0cmlzdGF0ZSBcJiMzNDtVU0IgTW94YSBVUE9SVCBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDM5LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NDQwOmNvbmZpZyBVU0JfU0VSSUFMX05BVk1BTlxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDQxLVx0dHJpc3RhdGUgXCYjMzQ7VVNCIE5hdm1hbiBHUFMgZGV2aWNlXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDQ1LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NDQ2OmNvbmZpZyBVU0JfU0VSSUFMX1BMMjMwM1xuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDQ3LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIFByb2xpZmljIDIzMDMgU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ1NC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjQ1NTpjb25maWcgVVNCX1NFUklBTF9PVEk2ODU4XG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00NTYtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgT3VycyBUZWNobm9sb2d5IEluYy4gT1RpLTY4NTggVVNCIFRvIFJTMjMyIEJyaWRnZSBDb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDYzLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NDY0OmNvbmZpZyBVU0JfU0VSSUFMX1FDQVVYXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00NjUtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgUXVhbGNvbW0gQXV4aWxpYXJ5IFNlcmlhbCBQb3J0IERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ3NC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjQ3NTpjb25maWcgVVNCX1NFUklBTF9RVUFMQ09NTVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDc2LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIFF1YWxjb21tIFNlcmlhbCBtb2RlbVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ4NC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjQ4NTpjb25maWcgVVNCX1NFUklBTF9TUENQOFg1XG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00ODYtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgU1BDUDh4NSBVU0IgVG8gU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ5My1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjQ5NDpjb25maWcgVVNCX1NFUklBTF9TQUZFXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00OTUtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgU2FmZSBTZXJpYWwgKEVuY2Fwc3VsYXRlZCkgRHJpdmVyXCYjMzQ7XG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00OTYtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo0OTc6Y29uZmlnIFVTQl9TRVJJQUxfU0FGRV9QQURERURcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ5OC1cdGJvb2wgXCYjMzQ7VVNCIFNlY3VyZSBFbmNhcHN1bGF0ZWQgRHJpdmVyIC0gUGFkZGVkXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTAwLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NTAxOmNvbmZpZyBVU0JfU0VSSUFMX1NJRVJSQVdJUkVMRVNTXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01MDItXHR0cmlzdGF0ZSBcJiMzNDtVU0IgU2llcnJhIFdpcmVsZXNzIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTUxMS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjUxMjpjb25maWcgVVNCX1NFUklBTF9TWU1CT0xcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTUxMy1cdHRyaXN0YXRlIFwmIzM0O1VTQiBTeW1ib2wgQmFyY29kZSBkcml2ZXIgKHNlcmlhbCBtb2RlKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTUyMC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjUyMTpjb25maWcgVVNCX1NFUklBTF9USVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTIyLVx0dHJpc3RhdGUgXCYjMzQ7VVNCIFRJIDM0MTAvNTA1MiBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTI5LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NTMwOmNvbmZpZyBVU0JfU0VSSUFMX0NZQkVSSkFDS1xuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTMxLVx0dHJpc3RhdGUgXCYjMzQ7VVNCIFJFSU5FUiBTQ1QgY3liZXJKYWNrIHBpbnBhZC9lLWNvbSBjaGlwY2FyZCByZWFkZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01NDEtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo1NDI6Y29uZmlnIFVTQl9TRVJJQUxfV1dBTlxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTQzLVx0dHJpc3RhdGVcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTU0NC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjU0NTpjb25maWcgVVNCX1NFUklBTF9PUFRJT05cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTU0Ni1cdHRyaXN0YXRlIFwmIzM0O1VTQiBkcml2ZXIgZm9yIEdTTSBhbmQgQ0RNQSBtb2RlbXNcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01NjMtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo1NjQ6Y29uZmlnIFVTQl9TRVJJQUxfT01OSU5FVFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTY1LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIFp5WEVMIG9tbmkubmV0IExDRCBQbHVzIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTU3MS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjU3Mjpjb25maWcgVVNCX1NFUklBTF9PUFRJQ09OXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01NzMtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgT3B0aWNvbiBCYXJjb2RlIGRyaXZlciAoc2VyaWFsIG1vZGUpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTgwLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NTgxOmNvbmZpZyBVU0JfU0VSSUFMX1hTRU5TX01UXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01ODItXHR0cmlzdGF0ZSBcJiMzNDtYc2VucyBtb3Rpb24gdHJhY2tlciBzZXJpYWwgaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTU5Mi1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjU5Mzpjb25maWcgVVNCX1NFUklBTF9XSVNIQk9ORVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTk0LVx0dHJpc3RhdGUgXCYjMzQ7VVNCLVdpc2hib25lIGFkYXB0ZXIgaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTYwOS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjYxMDpjb25maWcgVVNCX1NFUklBTF9TU1UxMDBcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTYxMS1cdHRyaXN0YXRlIFwmIzM0O1VTQiBRdWF0ZWNoIFNTVS0xMDAgU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTYxOC1cbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjYxOTpjb25maWcgVVNCX1NFUklBTF9RVDJcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTYyMC1cdHRyaXN0YXRlIFwmIzM0O1VTQiBRdWF0ZWNoIFNlcmlhbCBEcml2ZXIgZm9yIFVTQiAyIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy02MjctXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo2Mjg6Y29uZmlnIFVTQl9TRVJJQUxfVVBENzhGMDczMFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNjI5LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIFJlbmVzYXMgdVBENzhGMDczMCBTaW5nbGUgUG9ydCBTZXJpYWwgRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNjM2LVxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NjM3OmNvbmZpZyBVU0JfU0VSSUFMX1hSXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy02MzgtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgTWF4TGluZWFyL0V4YXIgVVNCIHRvIFNlcmlhbCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy02NDUtXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo2NDY6Y29uZmlnIFVTQl9TRVJJQUxfREVCVUdcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTY0Ny1cdHRyaXN0YXRlIFwmIzM0O1VTQiBEZWJ1Z2dpbmcgRGV2aWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE3OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0ODA1CgkJCQkJCQlvdXRwdXQ6IDIzNQoJCQkJCQkJdGhvdWdodHM6IDI4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgVVNCIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIHJldmlld2luZyB0aGlzIHBhdGNoLCBhbmQgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gdGhpbmtpbmcuIEZpcnN0IG9mZiwgSSBzZWUgdGhhdCBgVVNCX1NFUklBTGAgaXMgYSBtZW51Y29uZmlnIG9wdGlvbiwgc28gaXQgbWFrZXMgc2Vuc2UgdG8gaW5jbHVkZSBpdCBpbiB0aGUgbGlzdCBvZiBjb25maWd1cmF0aW9ucyB3ZSBzaG91bGQgZW5hYmxlIGZvciB0ZXN0aW5nLiBTaW1pbGFybHksIGBVU0JfU0VSSUFMX1NQQ1A4WDVgIGlzIGRlcGVuZGVudCBvbiBgVVNCX1NFUklBTGAsIHNvIHdlJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSBib3RoIGFyZSBjb25zaWRlcmVkLgoKTGV0JiMzOTtzIHJlY2FwIHRoZSByZWxldmFudCBjb25maWdzOiBgQVRIOUtfSFRDYCwgYFVTQl9UTUNgLCBgVVNCX1NFUklBTGAsIGFuZCBgVVNCX1NFUklBTF9TUENQOFg1YC4gR290IGl0LgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgc3ltYm9scyB3ZSYjMzk7cmUgZm9jdXNpbmcgb24uIFdlJiMzOTt2ZSBnb3QgYHVzYl9wcm9iZV9pbnRlcmZhY2VgLCBgdXNiX21hdGNoX2R5bmFtaWNfaWRgLCBgYXRoOWtfaGlmX3VzYl9wcm9iZWAsIGB1c2J0bWNfcHJvYmVgLCBgc3BjcDh4NV9wcm9iZWAsIGFuZCBgc3BjcDh4NV9wb3J0X3Byb2JlYC4gVGhlc2Ugc2VlbSB0byBiZSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGludm9sdmVkLgoKVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpcyBhYm91dCBob3cgYHVzYl9kZXZpY2VfaWRgIGlzIGhhbmRsZWQgd2hlbiBwYXNzZWQgdG8gVVNCIGRyaXZlciBgcHJvYmVgIGZ1bmN0aW9ucy4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgY2hhbmdpbmcgaG93IGB1c2JfZGV2aWNlX2lkYCBpcyBhbGxvY2F0ZWQuIE5vdywgaW5zdGVhZCBvZiBhIHBlcnNpc3RlbnQgcG9pbnRlciwgaXQmIzM5O3MgYmVpbmcgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayB3aXRoaW4gYHVzYl9wcm9iZV9pbnRlcmZhY2VgIGFuZCBwYXNzZWQgYXMgYSB0ZW1wb3JhcnkgcG9pbnRlci4gVGhpcyBpcyBhIHN1YnRsZSBidXQgcG90ZW50aWFsbHkgaW1wYWN0ZnVsIGNoYW5nZS4gSXQgYWZmZWN0cyB0aGUgVVNCIGNvcmUmIzM5O3MgbWF0Y2hpbmcgbG9naWMsIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaXQgbWVhbnMgc2V2ZXJhbCBkcml2ZXJzIGhhZCB0byBiZSB1cGRhdGVkIHRvIGFjY291bnQgZm9yIHRoaXMgY2hhbmdlLCBzcGVjaWZpY2FsbHkgYGF0aDlrYCwgYHVzYnRtY2AsIGFuZCBgc3BjcDh4NWAuIFRoZXkgaGFkIHRvIGJlIGFkanVzdGVkIHRvIHByZXZlbnQgc3RvcmluZyB0aGUgKG5vdyBpbnZhbGlkKSBwb2ludGVyLgoKVGhpcyBjaGFuZ2UgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCBvcGVucyB1cCB0aGUgcG9zc2liaWxpdHkgb2YgdHJpZ2dlcmluZyBtZW1vcnkgZXJyb3JzLCBzcGVjaWZpY2FsbHkgdXNlLWFmdGVyLWZyZWUsIHRocm91Z2ggZnV6emluZyBVU0IgZGV2aWNlIGVudW1lcmF0aW9uLiBJIHRoaW5rIHRoZSBrZXkgaGVyZSBpcyB0aGF0IHdlIGNhbiB2ZXJpZnkgdGhlIHBhdGNoIGFuZCB0aGVzZSBkcml2ZXIgdXBkYXRlcyBieSBmdXp6aW5nIHRoZSBwcm9jZXNzLiBJZiB3ZSBjYW4gdHJpZ2dlciB0aGVzZSBjb2RlIHBhdGhzIHdpdGggZnV6emluZywgd2UgY2FuIHZlcmlmeSB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IG1lbW9yeSBpc3N1ZXMgYXMgYSByZXN1bHQgb2YgdGhlIGNoYW5nZS4KCkFscmlnaHQsIEkmIzM5O20gZ29pbmcgdG8gY2FsbCBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTc6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDlLX0hUQyYjMzQ7LAogICAgJiMzNDtVU0JfVE1DJiMzNDssCiAgICAmIzM0O1VTQl9TRVJJQUwmIzM0OywKICAgICYjMzQ7VVNCX1NFUklBTF9TUENQOFg1JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXNiX3Byb2JlX2ludGVyZmFjZSYjMzQ7LAogICAgJiMzNDt1c2JfbWF0Y2hfZHluYW1pY19pZCYjMzQ7LAogICAgJiMzNDthdGg5a19oaWZfdXNiX3Byb2JlJiMzNDssCiAgICAmIzM0O3VzYnRtY19wcm9iZSYjMzQ7LAogICAgJiMzNDtzcGNwOHg1X3Byb2JlJiMzNDssCiAgICAmIzM0O3NwY3A4eDVfcG9ydF9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGhvdyBgdXNiX2RldmljZV9pZGAgaXMgcGFzc2VkIHRvIFVTQiBkcml2ZXJzJiMzOTsgYHByb2JlYCBmdW5jdGlvbnMuIEl0IGlzIG5vdyBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrIGluIGB1c2JfcHJvYmVfaW50ZXJmYWNlYCBhbmQgcGFzc2VkIGFzIGEgdGVtcG9yYXJ5IHBvaW50ZXIsIGluc3RlYWQgb2YgYSBwZXJzaXN0ZW50IHBvaW50ZXIuIFRoaXMgYWZmZWN0cyBVU0IgY29yZSBtYXRjaGluZyBhbmQgc2V2ZXJhbCBVU0IgZHJpdmVycyAoYGF0aDlrYCwgYHVzYnRtY2AsIGBzcGNwOHg1YCksIHdoaWNoIGhhZCB0byBiZSB1cGRhdGVkIHRvIHN0b3Agc3RvcmluZyB0aGUgcG9pbnRlci4gRnV6emluZyBVU0IgZGV2aWNlIGVudW1lcmF0aW9uIGNhbiB0cmlnZ2VyIHRoZXNlIHBhdGhzIGFuZCB2ZXJpZnkgdGhhdCBubyB1c2UtYWZ0ZXItZnJlZSBvciBvdGhlciBtZW1vcnkgaXNzdWVzIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEg5S19IVEMmIzM0OywKICAgICYjMzQ7VVNCX1RNQyYjMzQ7LAogICAgJiMzNDtVU0JfU0VSSUFMJiMzNDssCiAgICAmIzM0O1VTQl9TRVJJQUxfU1BDUDhYNSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VzYl9wcm9iZV9pbnRlcmZhY2UmIzM0OywKICAgICYjMzQ7dXNiX21hdGNoX2R5bmFtaWNfaWQmIzM0OywKICAgICYjMzQ7YXRoOWtfaGlmX3VzYl9wcm9iZSYjMzQ7LAogICAgJiMzNDt1c2J0bWNfcHJvYmUmIzM0OywKICAgICYjMzQ7c3BjcDh4NV9wcm9iZSYjMzQ7LAogICAgJiMzNDtzcGNwOHg1X3BvcnRfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBob3cgYHVzYl9kZXZpY2VfaWRgIGlzIHBhc3NlZCB0byBVU0IgZHJpdmVycyYjMzk7IGBwcm9iZWAgZnVuY3Rpb25zLiBJdCBpcyBub3cgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBpbiBgdXNiX3Byb2JlX2ludGVyZmFjZWAgYW5kIHBhc3NlZCBhcyBhIHRlbXBvcmFyeSBwb2ludGVyLCBpbnN0ZWFkIG9mIGEgcGVyc2lzdGVudCBwb2ludGVyLiBUaGlzIGFmZmVjdHMgVVNCIGNvcmUgbWF0Y2hpbmcgYW5kIHNldmVyYWwgVVNCIGRyaXZlcnMgKGBhdGg5a2AsIGB1c2J0bWNgLCBgc3BjcDh4NWApLCB3aGljaCBoYWQgdG8gYmUgdXBkYXRlZCB0byBzdG9wIHN0b3JpbmcgdGhlIHBvaW50ZXIuIEZ1enppbmcgVVNCIGRldmljZSBlbnVtZXJhdGlvbiBjYW4gdHJpZ2dlciB0aGVzZSBwYXRocyBhbmQgdmVyaWZ5IHRoYXQgbm8gdXNlLWFmdGVyLWZyZWUgb3Igb3RoZXIgbWVtb3J5IGlzc3VlcyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE3OjU4OjE4LjQzMzM5MTQ0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NDkyMzMzNDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDlLX0hUQ1wiLFxuICAgIFwiVVNCX1RNQ1wiLFxuICAgIFwiVVNCX1NFUklBTFwiLFxuICAgIFwiVVNCX1NFUklBTF9TUENQOFg1XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNiX3Byb2JlX2ludGVyZmFjZVwiLFxuICAgIFwidXNiX21hdGNoX2R5bmFtaWNfaWRcIixcbiAgICBcImF0aDlrX2hpZl91c2JfcHJvYmVcIixcbiAgICBcInVzYnRtY19wcm9iZVwiLFxuICAgIFwic3BjcDh4NV9wcm9iZVwiLFxuICAgIFwic3BjcDh4NV9wb3J0X3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBob3cgYHVzYl9kZXZpY2VfaWRgIGlzIHBhc3NlZCB0byBVU0IgZHJpdmVycycgYHByb2JlYCBmdW5jdGlvbnMuIEl0IGlzIG5vdyBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrIGluIGB1c2JfcHJvYmVfaW50ZXJmYWNlYCBhbmQgcGFzc2VkIGFzIGEgdGVtcG9yYXJ5IHBvaW50ZXIsIGluc3RlYWQgb2YgYSBwZXJzaXN0ZW50IHBvaW50ZXIuIFRoaXMgYWZmZWN0cyBVU0IgY29yZSBtYXRjaGluZyBhbmQgc2V2ZXJhbCBVU0IgZHJpdmVycyAoYGF0aDlrYCwgYHVzYnRtY2AsIGBzcGNwOHg1YCksIHdoaWNoIGhhZCB0byBiZSB1cGRhdGVkIHRvIHN0b3Agc3RvcmluZyB0aGUgcG9pbnRlci4gRnV6emluZyBVU0IgZGV2aWNlIGVudW1lcmF0aW9uIGNhbiB0cmlnZ2VyIHRoZXNlIHBhdGhzIGFuZCB2ZXJpZnkgdGhhdCBubyB1c2UtYWZ0ZXItZnJlZSBvciBvdGhlciBtZW1vcnkgaXNzdWVzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1ODoxOC40MzM0MDA1MDNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MDQxNDIxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDFmODEzYjM0YjRiZmVlNzk2YTZkMDZkZWI4YmJhZTgzMjkwNmRjNmZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTc6NTg6MTcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcXG5pbmRleCA1MTUyNjdmNDhkODAzZS4uZDY1YzA5YzJiN2ZjYzQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmNcXG5AQCAtMTA4Nyw3ICsxMDg3LDcgQEAgc3RhdGljIGludCBhdGg5a19oaWZfdXNiX2Rvd25sb2FkX2Z3KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcXG4gXFx0fVxcbiBcXHRrZnJlZShidWYpO1xcbiBcXG4tXFx0aWYgKElTX0FSNzAxMF9ERVZJQ0UoaGlmX2Rldi1cXHUwMDNldXNiX2RldmljZV9pZC1cXHUwMDNlZHJpdmVyX2luZm8pKVxcbitcXHRpZiAoSVNfQVI3MDEwX0RFVklDRShoaWZfZGV2LVxcdTAwM2VpZF9pbmZvKSlcXG4gXFx0XFx0ZmlybV9vZmZzZXQgPSBBUjcwMTBfRklSTVdBUkVfVEVYVDtcXG4gXFx0ZWxzZVxcbiBcXHRcXHRmaXJtX29mZnNldCA9IEFSOTI3MV9GSVJNV0FSRV9URVhUO1xcbkBAIC0xMTgyLDcgKzExODIsNyBAQCBzdGF0aWMgaW50IGF0aDlrX2hpZl9yZXF1ZXN0X2Zpcm13YXJlKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcXG4gXFx0aWYgKE1BSk9SX1ZFUlNJT05fUkVRID09IDEgXFx1MDAyNlxcdTAwMjYgaGlmX2Rldi1cXHUwMDNlZndfbWlub3JfaW5kZXggPT0gMykge1xcbiBcXHRcXHRjb25zdCBjaGFyICpmaWxlbmFtZTtcXG4gXFxuLVxcdFxcdGlmIChJU19BUjcwMTBfREVWSUNFKGhpZl9kZXYtXFx1MDAzZXVzYl9kZXZpY2VfaWQtXFx1MDAzZWRyaXZlcl9pbmZvKSlcXG4rXFx0XFx0aWYgKElTX0FSNzAxMF9ERVZJQ0UoaGlmX2Rldi1cXHUwMDNlaWRfaW5mbykpXFxuIFxcdFxcdFxcdGZpbGVuYW1lID0gRklSTVdBUkVfQVI3MDEwXzFfMTtcXG4gXFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRmaWxlbmFtZSA9IEZJUk1XQVJFX0FSOTI3MTtcXG5AQCAtMTE5OCw3ICsxMTk4LDcgQEAgc3RhdGljIGludCBhdGg5a19oaWZfcmVxdWVzdF9maXJtd2FyZShzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXFxuIFxcbiBcXHRcXHRyZXR1cm4gLUVOT0VOVDtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0aWYgKElTX0FSNzAxMF9ERVZJQ0UoaGlmX2Rldi1cXHUwMDNldXNiX2RldmljZV9pZC1cXHUwMDNlZHJpdmVyX2luZm8pKVxcbitcXHRcXHRpZiAoSVNfQVI3MDEwX0RFVklDRShoaWZfZGV2LVxcdTAwM2VpZF9pbmZvKSlcXG4gXFx0XFx0XFx0Y2hpcCA9IFxcXCI3MDEwXFxcIjtcXG4gXFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRjaGlwID0gXFxcIjkyNzFcXFwiO1xcbkBAIC0xMjYwLDkgKzEyNjAsOSBAQCBzdGF0aWMgdm9pZCBhdGg5a19oaWZfdXNiX2Zpcm13YXJlX2NiKGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncsIHZvaWQgKmNvbnRleHQpXFxuIFxcbiBcXHRyZXQgPSBhdGg5a19odGNfaHdfaW5pdChoaWZfZGV2LVxcdTAwM2VodGNfaGFuZGxlLFxcbiBcXHRcXHRcXHRcXHRcXHUwMDI2aGlmX2Rldi1cXHUwMDNlaW50ZXJmYWNlLVxcdTAwM2VkZXYsXFxuLVxcdFxcdFxcdFxcdGhpZl9kZXYtXFx1MDAzZXVzYl9kZXZpY2VfaWQtXFx1MDAzZWlkUHJvZHVjdCxcXG4rXFx0XFx0XFx0XFx0aGlmX2Rldi1cXHUwMDNldWRldi1cXHUwMDNlZGVzY3JpcHRvci5pZFByb2R1Y3QsXFxuIFxcdFxcdFxcdFxcdGhpZl9kZXYtXFx1MDAzZXVkZXYtXFx1MDAzZXByb2R1Y3QsXFxuLVxcdFxcdFxcdFxcdGhpZl9kZXYtXFx1MDAzZXVzYl9kZXZpY2VfaWQtXFx1MDAzZWRyaXZlcl9pbmZvKTtcXG4rXFx0XFx0XFx0XFx0aGlmX2Rldi1cXHUwMDNlaWRfaW5mbyk7XFxuIFxcdGlmIChyZXQpIHtcXG4gXFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gXFx0XFx0Z290byBlcnJfaHRjX2h3X2luaXQ7XFxuQEAgLTEzNzQsNyArMTM3NCw3IEBAIHN0YXRpYyBpbnQgYXRoOWtfaGlmX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxcbiBcXG4gXFx0aGlmX2Rldi1cXHUwMDNldWRldiA9IHVkZXY7XFxuIFxcdGhpZl9kZXYtXFx1MDAzZWludGVyZmFjZSA9IGludGVyZmFjZTtcXG4tXFx0aGlmX2Rldi1cXHUwMDNldXNiX2RldmljZV9pZCA9IGlkO1xcbitcXHRoaWZfZGV2LVxcdTAwM2VpZF9pbmZvID0gaWQtXFx1MDAzZWRyaXZlcl9pbmZvO1xcbiAjaWZkZWYgQ09ORklHX1BNXFxuIFxcdHVkZXYtXFx1MDAzZXJlc2V0X3Jlc3VtZSA9IDE7XFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaFxcbmluZGV4IGRjMGIwZmE1YzMyNTc0Li5iM2U3YjBmYjU0Yjg0MSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaFxcbkBAIC0xMTUsNyArMTE1LDcgQEAgc3RydWN0IGNtZF9idWYge1xcbiBzdHJ1Y3QgaGlmX2RldmljZV91c2Ige1xcbiBcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldjtcXG4gXFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZTtcXG4tXFx0Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKnVzYl9kZXZpY2VfaWQ7XFxuK1xcdGludCBpZF9pbmZvO1xcbiBcXHRjb25zdCB2b2lkICpmd19kYXRhO1xcbiBcXHRzaXplX3QgZndfc2l6ZTtcXG4gXFx0c3RydWN0IGNvbXBsZXRpb24gZndfZG9uZTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmMgYi9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuY1xcbmluZGV4IGFmOWFlNTVkYWUxNGUwLi41MWNkOTMyMGE3MzY2YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuY1xcbisrKyBiL2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jXFxuQEAgLTcxLDcgKzcxLDYgQEAgc3RydWN0IHVzYnRtY19kZXZfY2FwYWJpbGl0aWVzIHtcXG4gICogYWxsb2NhdGVkIGZvciBlYWNoIFVTQlRNQyBkZXZpY2UgaW4gdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uLlxcbiAgKi9cXG4gc3RydWN0IHVzYnRtY19kZXZpY2VfZGF0YSB7XFxuLVxcdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZDtcXG4gXFx0c3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXY7XFxuIFxcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmO1xcbiBcXHRzdHJ1Y3QgbGlzdF9oZWFkIGZpbGVfbGlzdDtcXG5AQCAtMjM5NCw3ICsyMzkzLDYgQEAgc3RhdGljIGludCB1c2J0bWNfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG4gXFx0ZGF0YS1cXHUwMDNlaW50ZiA9IGludGY7XFxuLVxcdGRhdGEtXFx1MDAzZWlkID0gaWQ7XFxuIFxcdGRhdGEtXFx1MDAzZXVzYl9kZXYgPSB1c2JfZ2V0X2RldihpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpKTtcXG4gXFx0dXNiX3NldF9pbnRmZGF0YShpbnRmLCBkYXRhKTtcXG4gXFx0a3JlZl9pbml0KFxcdTAwMjZkYXRhLVxcdTAwM2VrcmVmKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYyBiL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmNcXG5pbmRleCBmNjMwMDQ0MTcwNThlNi4uYzI2NDEwY2FiZGZlOTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuY1xcbisrKyBiL2RyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmNcXG5AQCAtMjI3LDE4ICsyMjcsMTkgQEAgc3RhdGljIHZvaWQgdXNiX2ZyZWVfZHluaWRzKHN0cnVjdCB1c2JfZHJpdmVyICp1c2JfZHJ2KVxcbiBcXHR9XFxuIH1cXG4gXFxuLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqdXNiX21hdGNoX2R5bmFtaWNfaWQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCB1c2JfZHJpdmVyICpkcnYpXFxuK3N0YXRpYyBib29sIHVzYl9tYXRjaF9keW5hbWljX2lkKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RyaXZlciAqZHJ2LFxcbitcXHRcXHRcXHRcXHQgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbiB7XFxuIFxcdHN0cnVjdCB1c2JfZHluaWQgKmR5bmlkO1xcbiBcXG4gXFx0Z3VhcmQobXV0ZXgpKFxcdTAwMjZ1c2JfZHluaWRzX2xvY2spO1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGR5bmlkLCBcXHUwMDI2ZHJ2LVxcdTAwM2VkeW5pZHMubGlzdCwgbm9kZSkge1xcbiBcXHRcXHRpZiAodXNiX21hdGNoX29uZV9pZChpbnRmLCBcXHUwMDI2ZHluaWQtXFx1MDAzZWlkKSkge1xcbi1cXHRcXHRcXHRyZXR1cm4gXFx1MDAyNmR5bmlkLVxcdTAwM2VpZDtcXG4rXFx0XFx0XFx0KmlkID0gZHluaWQtXFx1MDAzZWlkO1xcbitcXHRcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFx0XFx0fVxcbiBcXHR9XFxuLVxcdHJldHVybiBOVUxMO1xcbitcXHRyZXR1cm4gZmFsc2U7XFxuIH1cXG4gXFxuIFxcbkBAIC0zMjAsNyArMzIxLDggQEAgc3RhdGljIGludCB1c2JfcHJvYmVfaW50ZXJmYWNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0c3RydWN0IHVzYl9kcml2ZXIgKmRyaXZlciA9IHRvX3VzYl9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbiBcXHRzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiA9IHRvX3VzYl9pbnRlcmZhY2UoZGV2KTtcXG4gXFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpO1xcbi1cXHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQ7XFxuK1xcdHN0cnVjdCB1c2JfZGV2aWNlX2lkIGlkO1xcbitcXHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqbWF0Y2hlZF9pZDtcXG4gXFx0aW50IGVycm9yID0gLUVOT0RFVjtcXG4gXFx0aW50IGxwbV9kaXNhYmxlX2Vycm9yID0gLUVOT0RFVjtcXG4gXFxuQEAgLTM0MCwxMSArMzQyLDEyIEBAIHN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdFxcdHJldHVybiBlcnJvcjtcXG4gXFx0fVxcbiBcXG4tXFx0aWQgPSB1c2JfbWF0Y2hfZHluYW1pY19pZChpbnRmLCBkcml2ZXIpO1xcbi1cXHRpZiAoIWlkKVxcbi1cXHRcXHRpZCA9IHVzYl9tYXRjaF9pZChpbnRmLCBkcml2ZXItXFx1MDAzZWlkX3RhYmxlKTtcXG4tXFx0aWYgKCFpZClcXG4tXFx0XFx0cmV0dXJuIGVycm9yO1xcbitcXHRpZiAoIXVzYl9tYXRjaF9keW5hbWljX2lkKGludGYsIGRyaXZlciwgXFx1MDAyNmlkKSkge1xcbitcXHRcXHRtYXRjaGVkX2lkID0gdXNiX21hdGNoX2lkKGludGYsIGRyaXZlci1cXHUwMDNlaWRfdGFibGUpO1xcbitcXHRcXHRpZiAoIW1hdGNoZWRfaWQpXFxuK1xcdFxcdFxcdHJldHVybiBlcnJvcjtcXG4rXFx0XFx0aWQgPSAqbWF0Y2hlZF9pZDtcXG4rXFx0fVxcbiBcXG4gXFx0ZGV2X2RiZyhkZXYsIFxcXCIlcyAtIGdvdCBpZFxcXFxuXFxcIiwgX19mdW5jX18pO1xcbiBcXG5AQCAtMzkzLDcgKzM5Niw3IEBAIHN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdFxcdGludGYtXFx1MDAzZW5lZWRzX2FsdHNldHRpbmcwID0gMDtcXG4gXFx0fVxcbiBcXG4tXFx0ZXJyb3IgPSBkcml2ZXItXFx1MDAzZXByb2JlKGludGYsIGlkKTtcXG4rXFx0ZXJyb3IgPSBkcml2ZXItXFx1MDAzZXByb2JlKGludGYsIFxcdTAwMjZpZCk7XFxuIFxcdGlmIChlcnJvcilcXG4gXFx0XFx0Z290byBlcnI7XFxuIFxcbkBAIC04OTEsNyArODk0LDcgQEAgc3RhdGljIGludCB1c2JfZGV2aWNlX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcXG4gXFx0fSBlbHNlIGlmIChpc191c2JfaW50ZXJmYWNlKGRldikpIHtcXG4gXFx0XFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGY7XFxuIFxcdFxcdGNvbnN0IHN0cnVjdCB1c2JfZHJpdmVyICp1c2JfZHJ2O1xcbi1cXHRcXHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQ7XFxuK1xcdFxcdHN0cnVjdCB1c2JfZGV2aWNlX2lkIGlkO1xcbiBcXG4gXFx0XFx0LyogZGV2aWNlIGRyaXZlcnMgbmV2ZXIgbWF0Y2ggaW50ZXJmYWNlcyAqL1xcbiBcXHRcXHRpZiAoaXNfdXNiX2RldmljZV9kcml2ZXIoZHJ2KSlcXG5AQCAtOTAwLDEyICs5MDMsMTAgQEAgc3RhdGljIGludCB1c2JfZGV2aWNlX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcXG4gXFx0XFx0aW50ZiA9IHRvX3VzYl9pbnRlcmZhY2UoZGV2KTtcXG4gXFx0XFx0dXNiX2RydiA9IHRvX3VzYl9kcml2ZXIoZHJ2KTtcXG4gXFxuLVxcdFxcdGlkID0gdXNiX21hdGNoX2lkKGludGYsIHVzYl9kcnYtXFx1MDAzZWlkX3RhYmxlKTtcXG4tXFx0XFx0aWYgKGlkKVxcbitcXHRcXHRpZiAodXNiX21hdGNoX2lkKGludGYsIHVzYl9kcnYtXFx1MDAzZWlkX3RhYmxlKSlcXG4gXFx0XFx0XFx0cmV0dXJuIDE7XFxuIFxcbi1cXHRcXHRpZCA9IHVzYl9tYXRjaF9keW5hbWljX2lkKGludGYsIHVzYl9kcnYpO1xcbi1cXHRcXHRpZiAoaWQpXFxuK1xcdFxcdGlmICh1c2JfbWF0Y2hfZHluYW1pY19pZChpbnRmLCB1c2JfZHJ2LCBcXHUwMDI2aWQpKVxcbiBcXHRcXHRcXHRyZXR1cm4gMTtcXG4gXFx0fVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9zcGNwOHg1LmNcXG5pbmRleCBjMTFkNjRiZjA4ZmJhZS4uMGU3NzE1YTAyZGY0Y2MgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuY1xcbisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9zcGNwOHg1LmNcXG5AQCAtMTMzLDE0ICsxMzMsMTQgQEAgc3RydWN0IHNwY3A4eDVfcHJpdmF0ZSB7XFxuIHN0YXRpYyBpbnQgc3BjcDh4NV9wcm9iZShzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuIHtcXG4tXFx0dXNiX3NldF9zZXJpYWxfZGF0YShzZXJpYWwsICh2b2lkICopaWQpO1xcbitcXHR1c2Jfc2V0X3NlcmlhbF9kYXRhKHNlcmlhbCwgKHZvaWQgKilpZC1cXHUwMDNlZHJpdmVyX2luZm8pO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgc3BjcDh4NV9wb3J0X3Byb2JlKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpXFxuIHtcXG4tXFx0Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkID0gdXNiX2dldF9zZXJpYWxfZGF0YShwb3J0LVxcdTAwM2VzZXJpYWwpO1xcbitcXHR1bnNpZ25lZCBpbnQgcXVpcmtzID0gKHVuc2lnbmVkIGludCkodW5zaWduZWQgbG9uZyl1c2JfZ2V0X3NlcmlhbF9kYXRhKHBvcnQtXFx1MDAzZXNlcmlhbCk7XFxuIFxcdHN0cnVjdCBzcGNwOHg1X3ByaXZhdGUgKnByaXY7XFxuIFxcbiBcXHRwcml2ID0ga3phbGxvY19vYmooKnByaXYpO1xcbkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIGludCBzcGNwOHg1X3BvcnRfcHJvYmUoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydClcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbiBcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2cHJpdi1cXHUwMDNlbG9jayk7XFxuLVxcdHByaXYtXFx1MDAzZXF1aXJrcyA9IGlkLVxcdTAwM2Vkcml2ZXJfaW5mbztcXG4rXFx0cHJpdi1cXHUwMDNlcXVpcmtzID0gcXVpcmtzO1xcbiBcXG4gXFx0dXNiX3NldF9zZXJpYWxfcG9ydF9kYXRhKHBvcnQsIHByaXYpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IuaCBiL2luY2x1ZGUvbGludXgvdXNiLmhcXG5pbmRleCAxZGE0YWQxNjEwYmNhMC4uNDlhYjhkYmI4ODVmNjUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC91c2IuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvdXNiLmhcXG5AQCAtMTE4NSw3ICsxMTg1LDggQEAgZXh0ZXJuIHNzaXplX3QgdXNiX3Nob3dfZHluaWRzKHN0cnVjdCB1c2JfZHluaWRzICpkeW5pZHMsIGNoYXIgKmJ1Zik7XFxuICAqXFx0aW50ZXJmYWNlLiAgSXQgbWF5IGFsc28gdXNlIHVzYl9zZXRfaW50ZXJmYWNlKCkgdG8gc3BlY2lmeSB0aGVcXG4gICpcXHRhcHByb3ByaWF0ZSBhbHRzZXR0aW5nLiAgSWYgdW53aWxsaW5nIHRvIG1hbmFnZSB0aGUgaW50ZXJmYWNlLFxcbiAgKlxcdHJldHVybiAtRU5PREVWLCBpZiBnZW51aW5lIElPIGVycm9ycyBvY2N1cnJlZCwgYW4gYXBwcm9wcmlhdGVcXG4tICpcXHRuZWdhdGl2ZSBlcnJubyB2YWx1ZS5cXG4rICpcXHRuZWdhdGl2ZSBlcnJubyB2YWx1ZS4gIFRoZSB1c2JfZGV2aWNlX2lkIHBhcmFtZXRlciBpcyBvbmx5IHZhbGlkIGR1cmluZ1xcbisgKlxcdHByb2JlLlxcbiAgKiBAZGlzY29ubmVjdDogQ2FsbGVkIHdoZW4gdGhlIGludGVyZmFjZSBpcyBubyBsb25nZXIgYWNjZXNzaWJsZSwgdXN1YWxseVxcbiAgKlxcdGJlY2F1c2UgaXRzIGRldmljZSBoYXMgYmVlbiAob3IgaXMgYmVpbmcpIGRpc2Nvbm5lY3RlZCBvciB0aGVcXG4gICpcXHRkcml2ZXIgbW9kdWxlIGlzIGJlaW5nIHVubG9hZGVkLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1ODoxOC45MTQ1NTg0MzZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MDExMTUzNjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDlLX0hUQ1wiLFxuICAgIFwiVVNCX1RNQ1wiLFxuICAgIFwiVVNCX1NFUklBTFwiLFxuICAgIFwiVVNCX1NFUklBTF9TUENQOFg1XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNiX3Byb2JlX2ludGVyZmFjZVwiLFxuICAgIFwidXNiX21hdGNoX2R5bmFtaWNfaWRcIixcbiAgICBcImF0aDlrX2hpZl91c2JfcHJvYmVcIixcbiAgICBcInVzYnRtY19wcm9iZVwiLFxuICAgIFwic3BjcDh4NV9wcm9iZVwiLFxuICAgIFwic3BjcDh4NV9wb3J0X3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBob3cgYHVzYl9kZXZpY2VfaWRgIGlzIHBhc3NlZCB0byBVU0IgZHJpdmVycycgYHByb2JlYCBmdW5jdGlvbnMuIEl0IGlzIG5vdyBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrIGluIGB1c2JfcHJvYmVfaW50ZXJmYWNlYCBhbmQgcGFzc2VkIGFzIGEgdGVtcG9yYXJ5IHBvaW50ZXIsIGluc3RlYWQgb2YgYSBwZXJzaXN0ZW50IHBvaW50ZXIuIFRoaXMgYWZmZWN0cyBVU0IgY29yZSBtYXRjaGluZyBhbmQgc2V2ZXJhbCBVU0IgZHJpdmVycyAoYGF0aDlrYCwgYHVzYnRtY2AsIGBzcGNwOHg1YCksIHdoaWNoIGhhZCB0byBiZSB1cGRhdGVkIHRvIHN0b3Agc3RvcmluZyB0aGUgcG9pbnRlci4gRnV6emluZyBVU0IgZGV2aWNlIGVudW1lcmF0aW9uIGNhbiB0cmlnZ2VyIHRoZXNlIHBhdGhzIGFuZCB2ZXJpZnkgdGhhdCBubyB1c2UtYWZ0ZXItZnJlZSBvciBvdGhlciBtZW1vcnkgaXNzdWVzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDFmODEzYjM0YjRiZmVlNzk2YTZkMDZkZWI4YmJhZTgzMjkwNmRjNmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAzMCAxNzo1ODoxNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG5pbmRleCA1MTUyNjdmNDhkODAzZS4uZDY1YzA5YzJiN2ZjYzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jXG5AQCAtMTA4Nyw3ICsxMDg3LDcgQEAgc3RhdGljIGludCBhdGg5a19oaWZfdXNiX2Rvd25sb2FkX2Z3KHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldilcbiBcdH1cbiBcdGtmcmVlKGJ1Zik7XG4gXG4tXHRpZiAoSVNfQVI3MDEwX0RFVklDRShoaWZfZGV2LVx1MDAzZXVzYl9kZXZpY2VfaWQtXHUwMDNlZHJpdmVyX2luZm8pKVxuK1x0aWYgKElTX0FSNzAxMF9ERVZJQ0UoaGlmX2Rldi1cdTAwM2VpZF9pbmZvKSlcbiBcdFx0ZmlybV9vZmZzZXQgPSBBUjcwMTBfRklSTVdBUkVfVEVYVDtcbiBcdGVsc2VcbiBcdFx0ZmlybV9vZmZzZXQgPSBBUjkyNzFfRklSTVdBUkVfVEVYVDtcbkBAIC0xMTgyLDcgKzExODIsNyBAQCBzdGF0aWMgaW50IGF0aDlrX2hpZl9yZXF1ZXN0X2Zpcm13YXJlKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldixcbiBcdGlmIChNQUpPUl9WRVJTSU9OX1JFUSA9PSAxIFx1MDAyNlx1MDAyNiBoaWZfZGV2LVx1MDAzZWZ3X21pbm9yX2luZGV4ID09IDMpIHtcbiBcdFx0Y29uc3QgY2hhciAqZmlsZW5hbWU7XG4gXG4tXHRcdGlmIChJU19BUjcwMTBfREVWSUNFKGhpZl9kZXYtXHUwMDNldXNiX2RldmljZV9pZC1cdTAwM2Vkcml2ZXJfaW5mbykpXG4rXHRcdGlmIChJU19BUjcwMTBfREVWSUNFKGhpZl9kZXYtXHUwMDNlaWRfaW5mbykpXG4gXHRcdFx0ZmlsZW5hbWUgPSBGSVJNV0FSRV9BUjcwMTBfMV8xO1xuIFx0XHRlbHNlXG4gXHRcdFx0ZmlsZW5hbWUgPSBGSVJNV0FSRV9BUjkyNzE7XG5AQCAtMTE5OCw3ICsxMTk4LDcgQEAgc3RhdGljIGludCBhdGg5a19oaWZfcmVxdWVzdF9maXJtd2FyZShzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsXG4gXG4gXHRcdHJldHVybiAtRU5PRU5UO1xuIFx0fSBlbHNlIHtcbi1cdFx0aWYgKElTX0FSNzAxMF9ERVZJQ0UoaGlmX2Rldi1cdTAwM2V1c2JfZGV2aWNlX2lkLVx1MDAzZWRyaXZlcl9pbmZvKSlcbitcdFx0aWYgKElTX0FSNzAxMF9ERVZJQ0UoaGlmX2Rldi1cdTAwM2VpZF9pbmZvKSlcbiBcdFx0XHRjaGlwID0gXCI3MDEwXCI7XG4gXHRcdGVsc2VcbiBcdFx0XHRjaGlwID0gXCI5MjcxXCI7XG5AQCAtMTI2MCw5ICsxMjYwLDkgQEAgc3RhdGljIHZvaWQgYXRoOWtfaGlmX3VzYl9maXJtd2FyZV9jYihjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3LCB2b2lkICpjb250ZXh0KVxuIFxuIFx0cmV0ID0gYXRoOWtfaHRjX2h3X2luaXQoaGlmX2Rldi1cdTAwM2VodGNfaGFuZGxlLFxuIFx0XHRcdFx0XHUwMDI2aGlmX2Rldi1cdTAwM2VpbnRlcmZhY2UtXHUwMDNlZGV2LFxuLVx0XHRcdFx0aGlmX2Rldi1cdTAwM2V1c2JfZGV2aWNlX2lkLVx1MDAzZWlkUHJvZHVjdCxcbitcdFx0XHRcdGhpZl9kZXYtXHUwMDNldWRldi1cdTAwM2VkZXNjcmlwdG9yLmlkUHJvZHVjdCxcbiBcdFx0XHRcdGhpZl9kZXYtXHUwMDNldWRldi1cdTAwM2Vwcm9kdWN0LFxuLVx0XHRcdFx0aGlmX2Rldi1cdTAwM2V1c2JfZGV2aWNlX2lkLVx1MDAzZWRyaXZlcl9pbmZvKTtcbitcdFx0XHRcdGhpZl9kZXYtXHUwMDNlaWRfaW5mbyk7XG4gXHRpZiAocmV0KSB7XG4gXHRcdHJldCA9IC1FSU5WQUw7XG4gXHRcdGdvdG8gZXJyX2h0Y19od19pbml0O1xuQEAgLTEzNzQsNyArMTM3NCw3IEBAIHN0YXRpYyBpbnQgYXRoOWtfaGlmX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuIFxuIFx0aGlmX2Rldi1cdTAwM2V1ZGV2ID0gdWRldjtcbiBcdGhpZl9kZXYtXHUwMDNlaW50ZXJmYWNlID0gaW50ZXJmYWNlO1xuLVx0aGlmX2Rldi1cdTAwM2V1c2JfZGV2aWNlX2lkID0gaWQ7XG4rXHRoaWZfZGV2LVx1MDAzZWlkX2luZm8gPSBpZC1cdTAwM2Vkcml2ZXJfaW5mbztcbiAjaWZkZWYgQ09ORklHX1BNXG4gXHR1ZGV2LVx1MDAzZXJlc2V0X3Jlc3VtZSA9IDE7XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmhcbmluZGV4IGRjMGIwZmE1YzMyNTc0Li5iM2U3YjBmYjU0Yjg0MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmhcbkBAIC0xMTUsNyArMTE1LDcgQEAgc3RydWN0IGNtZF9idWYge1xuIHN0cnVjdCBoaWZfZGV2aWNlX3VzYiB7XG4gXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldjtcbiBcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7XG4tXHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqdXNiX2RldmljZV9pZDtcbitcdGludCBpZF9pbmZvO1xuIFx0Y29uc3Qgdm9pZCAqZndfZGF0YTtcbiBcdHNpemVfdCBmd19zaXplO1xuIFx0c3RydWN0IGNvbXBsZXRpb24gZndfZG9uZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYyBiL2RyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jXG5pbmRleCBhZjlhZTU1ZGFlMTRlMC4uNTFjZDkzMjBhNzM2NmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuY1xuKysrIGIvZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmNcbkBAIC03MSw3ICs3MSw2IEBAIHN0cnVjdCB1c2J0bWNfZGV2X2NhcGFiaWxpdGllcyB7XG4gICogYWxsb2NhdGVkIGZvciBlYWNoIFVTQlRNQyBkZXZpY2UgaW4gdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uLlxuICAqL1xuIHN0cnVjdCB1c2J0bWNfZGV2aWNlX2RhdGEge1xuLVx0Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkO1xuIFx0c3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXY7XG4gXHRzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZjtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgZmlsZV9saXN0O1xuQEAgLTIzOTQsNyArMjM5Myw2IEBAIHN0YXRpYyBpbnQgdXNidG1jX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdGRhdGEtXHUwMDNlaW50ZiA9IGludGY7XG4tXHRkYXRhLVx1MDAzZWlkID0gaWQ7XG4gXHRkYXRhLVx1MDAzZXVzYl9kZXYgPSB1c2JfZ2V0X2RldihpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpKTtcbiBcdHVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgZGF0YSk7XG4gXHRrcmVmX2luaXQoXHUwMDI2ZGF0YS1cdTAwM2VrcmVmKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jIGIvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuY1xuaW5kZXggZjYzMDA0NDE3MDU4ZTYuLmMyNjQxMGNhYmRmZTk1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuY1xuKysrIGIvZHJpdmVycy91c2IvY29yZS9kcml2ZXIuY1xuQEAgLTIyNywxOCArMjI3LDE5IEBAIHN0YXRpYyB2b2lkIHVzYl9mcmVlX2R5bmlkcyhzdHJ1Y3QgdXNiX2RyaXZlciAqdXNiX2RydilcbiBcdH1cbiB9XG4gXG4tc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICp1c2JfbWF0Y2hfZHluYW1pY19pZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi1cdFx0XHRcdFx0XHRcdGNvbnN0IHN0cnVjdCB1c2JfZHJpdmVyICpkcnYpXG4rc3RhdGljIGJvb2wgdXNiX21hdGNoX2R5bmFtaWNfaWQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZHJpdmVyICpkcnYsXG4rXHRcdFx0XHQgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuIHtcbiBcdHN0cnVjdCB1c2JfZHluaWQgKmR5bmlkO1xuIFxuIFx0Z3VhcmQobXV0ZXgpKFx1MDAyNnVzYl9keW5pZHNfbG9jayk7XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGR5bmlkLCBcdTAwMjZkcnYtXHUwMDNlZHluaWRzLmxpc3QsIG5vZGUpIHtcbiBcdFx0aWYgKHVzYl9tYXRjaF9vbmVfaWQoaW50ZiwgXHUwMDI2ZHluaWQtXHUwMDNlaWQpKSB7XG4tXHRcdFx0cmV0dXJuIFx1MDAyNmR5bmlkLVx1MDAzZWlkO1xuK1x0XHRcdCppZCA9IGR5bmlkLVx1MDAzZWlkO1xuK1x0XHRcdHJldHVybiB0cnVlO1xuIFx0XHR9XG4gXHR9XG4tXHRyZXR1cm4gTlVMTDtcbitcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4gXG5AQCAtMzIwLDcgKzMyMSw4IEBAIHN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRzdHJ1Y3QgdXNiX2RyaXZlciAqZHJpdmVyID0gdG9fdXNiX2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbiBcdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmID0gdG9fdXNiX2ludGVyZmFjZShkZXYpO1xuIFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpO1xuLVx0Y29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkO1xuK1x0c3RydWN0IHVzYl9kZXZpY2VfaWQgaWQ7XG4rXHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqbWF0Y2hlZF9pZDtcbiBcdGludCBlcnJvciA9IC1FTk9ERVY7XG4gXHRpbnQgbHBtX2Rpc2FibGVfZXJyb3IgPSAtRU5PREVWO1xuIFxuQEAgLTM0MCwxMSArMzQyLDEyIEBAIHN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdHJldHVybiBlcnJvcjtcbiBcdH1cbiBcbi1cdGlkID0gdXNiX21hdGNoX2R5bmFtaWNfaWQoaW50ZiwgZHJpdmVyKTtcbi1cdGlmICghaWQpXG4tXHRcdGlkID0gdXNiX21hdGNoX2lkKGludGYsIGRyaXZlci1cdTAwM2VpZF90YWJsZSk7XG4tXHRpZiAoIWlkKVxuLVx0XHRyZXR1cm4gZXJyb3I7XG4rXHRpZiAoIXVzYl9tYXRjaF9keW5hbWljX2lkKGludGYsIGRyaXZlciwgXHUwMDI2aWQpKSB7XG4rXHRcdG1hdGNoZWRfaWQgPSB1c2JfbWF0Y2hfaWQoaW50ZiwgZHJpdmVyLVx1MDAzZWlkX3RhYmxlKTtcbitcdFx0aWYgKCFtYXRjaGVkX2lkKVxuK1x0XHRcdHJldHVybiBlcnJvcjtcbitcdFx0aWQgPSAqbWF0Y2hlZF9pZDtcbitcdH1cbiBcbiBcdGRldl9kYmcoZGV2LCBcIiVzIC0gZ290IGlkXFxuXCIsIF9fZnVuY19fKTtcbiBcbkBAIC0zOTMsNyArMzk2LDcgQEAgc3RhdGljIGludCB1c2JfcHJvYmVfaW50ZXJmYWNlKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdFx0aW50Zi1cdTAwM2VuZWVkc19hbHRzZXR0aW5nMCA9IDA7XG4gXHR9XG4gXG4tXHRlcnJvciA9IGRyaXZlci1cdTAwM2Vwcm9iZShpbnRmLCBpZCk7XG4rXHRlcnJvciA9IGRyaXZlci1cdTAwM2Vwcm9iZShpbnRmLCBcdTAwMjZpZCk7XG4gXHRpZiAoZXJyb3IpXG4gXHRcdGdvdG8gZXJyO1xuIFxuQEAgLTg5MSw3ICs4OTQsNyBAQCBzdGF0aWMgaW50IHVzYl9kZXZpY2VfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuIFx0fSBlbHNlIGlmIChpc191c2JfaW50ZXJmYWNlKGRldikpIHtcbiBcdFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGY7XG4gXHRcdGNvbnN0IHN0cnVjdCB1c2JfZHJpdmVyICp1c2JfZHJ2O1xuLVx0XHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQ7XG4rXHRcdHN0cnVjdCB1c2JfZGV2aWNlX2lkIGlkO1xuIFxuIFx0XHQvKiBkZXZpY2UgZHJpdmVycyBuZXZlciBtYXRjaCBpbnRlcmZhY2VzICovXG4gXHRcdGlmIChpc191c2JfZGV2aWNlX2RyaXZlcihkcnYpKVxuQEAgLTkwMCwxMiArOTAzLDEwIEBAIHN0YXRpYyBpbnQgdXNiX2RldmljZV9tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG4gXHRcdGludGYgPSB0b191c2JfaW50ZXJmYWNlKGRldik7XG4gXHRcdHVzYl9kcnYgPSB0b191c2JfZHJpdmVyKGRydik7XG4gXG4tXHRcdGlkID0gdXNiX21hdGNoX2lkKGludGYsIHVzYl9kcnYtXHUwMDNlaWRfdGFibGUpO1xuLVx0XHRpZiAoaWQpXG4rXHRcdGlmICh1c2JfbWF0Y2hfaWQoaW50ZiwgdXNiX2Rydi1cdTAwM2VpZF90YWJsZSkpXG4gXHRcdFx0cmV0dXJuIDE7XG4gXG4tXHRcdGlkID0gdXNiX21hdGNoX2R5bmFtaWNfaWQoaW50ZiwgdXNiX2Rydik7XG4tXHRcdGlmIChpZClcbitcdFx0aWYgKHVzYl9tYXRjaF9keW5hbWljX2lkKGludGYsIHVzYl9kcnYsIFx1MDAyNmlkKSlcbiBcdFx0XHRyZXR1cm4gMTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuY1xuaW5kZXggYzExZDY0YmYwOGZiYWUuLjBlNzcxNWEwMmRmNGNjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuY1xuKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuY1xuQEAgLTEzMywxNCArMTMzLDE0IEBAIHN0cnVjdCBzcGNwOHg1X3ByaXZhdGUge1xuIHN0YXRpYyBpbnQgc3BjcDh4NV9wcm9iZShzdHJ1Y3QgdXNiX3NlcmlhbCAqc2VyaWFsLFxuIFx0XHRcdFx0XHRcdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbiB7XG4tXHR1c2Jfc2V0X3NlcmlhbF9kYXRhKHNlcmlhbCwgKHZvaWQgKilpZCk7XG4rXHR1c2Jfc2V0X3NlcmlhbF9kYXRhKHNlcmlhbCwgKHZvaWQgKilpZC1cdTAwM2Vkcml2ZXJfaW5mbyk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBzcGNwOHg1X3BvcnRfcHJvYmUoc3RydWN0IHVzYl9zZXJpYWxfcG9ydCAqcG9ydClcbiB7XG4tXHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQgPSB1c2JfZ2V0X3NlcmlhbF9kYXRhKHBvcnQtXHUwMDNlc2VyaWFsKTtcbitcdHVuc2lnbmVkIGludCBxdWlya3MgPSAodW5zaWduZWQgaW50KSh1bnNpZ25lZCBsb25nKXVzYl9nZXRfc2VyaWFsX2RhdGEocG9ydC1cdTAwM2VzZXJpYWwpO1xuIFx0c3RydWN0IHNwY3A4eDVfcHJpdmF0ZSAqcHJpdjtcbiBcbiBcdHByaXYgPSBremFsbG9jX29iaigqcHJpdik7XG5AQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyBpbnQgc3BjcDh4NV9wb3J0X3Byb2JlKHN0cnVjdCB1c2Jfc2VyaWFsX3BvcnQgKnBvcnQpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2cHJpdi1cdTAwM2Vsb2NrKTtcbi1cdHByaXYtXHUwMDNlcXVpcmtzID0gaWQtXHUwMDNlZHJpdmVyX2luZm87XG4rXHRwcml2LVx1MDAzZXF1aXJrcyA9IHF1aXJrcztcbiBcbiBcdHVzYl9zZXRfc2VyaWFsX3BvcnRfZGF0YShwb3J0LCBwcml2KTtcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3VzYi5oIGIvaW5jbHVkZS9saW51eC91c2IuaFxuaW5kZXggMWRhNGFkMTYxMGJjYTAuLjQ5YWI4ZGJiODg1ZjY1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC91c2IuaFxuKysrIGIvaW5jbHVkZS9saW51eC91c2IuaFxuQEAgLTExODUsNyArMTE4NSw4IEBAIGV4dGVybiBzc2l6ZV90IHVzYl9zaG93X2R5bmlkcyhzdHJ1Y3QgdXNiX2R5bmlkcyAqZHluaWRzLCBjaGFyICpidWYpO1xuICAqXHRpbnRlcmZhY2UuICBJdCBtYXkgYWxzbyB1c2UgdXNiX3NldF9pbnRlcmZhY2UoKSB0byBzcGVjaWZ5IHRoZVxuICAqXHRhcHByb3ByaWF0ZSBhbHRzZXR0aW5nLiAgSWYgdW53aWxsaW5nIHRvIG1hbmFnZSB0aGUgaW50ZXJmYWNlLFxuICAqXHRyZXR1cm4gLUVOT0RFViwgaWYgZ2VudWluZSBJTyBlcnJvcnMgb2NjdXJyZWQsIGFuIGFwcHJvcHJpYXRlXG4tICpcdG5lZ2F0aXZlIGVycm5vIHZhbHVlLlxuKyAqXHRuZWdhdGl2ZSBlcnJubyB2YWx1ZS4gIFRoZSB1c2JfZGV2aWNlX2lkIHBhcmFtZXRlciBpcyBvbmx5IHZhbGlkIGR1cmluZ1xuKyAqXHRwcm9iZS5cbiAgKiBAZGlzY29ubmVjdDogQ2FsbGVkIHdoZW4gdGhlIGludGVyZmFjZSBpcyBubyBsb25nZXIgYWNjZXNzaWJsZSwgdXN1YWxseVxuICAqXHRiZWNhdXNlIGl0cyBkZXZpY2UgaGFzIGJlZW4gKG9yIGlzIGJlaW5nKSBkaXNjb25uZWN0ZWQgb3IgdGhlXG4gICpcdGRyaXZlciBtb2R1bGUgaXMgYmVpbmcgdW5sb2FkZWQuXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1ODoxOC45MTQ1NjE4OTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTk2NzYxOTMzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBc3Nlc3NpbmcgdGhlIEltcGFjdCBvZiB0aGUgVVNCIERyaXZlciBJRCBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgd2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlc2Uga2VybmVsIHBhdGNoIHNlcmllcyBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgd2FycmFudCBmdXp6aW5nLiBUaGUgZmlsZXMgaW1wYWN0ZWQg4oCTIGBhdGg5ay9oaWZfdXNiLmNgLCBgdXNidG1jLmNgLCBgZHJpdmVyLmNgLCBgc3BjcDh4NS5jYCwgYW5kIGB1c2IuaGAg4oCTIGltbWVkaWF0ZWx5IGZsYWcgdGhpcyBhcyBhIHBvdGVudGlhbGx5IHNpZ25pZmljYW50IGFyZWEgZm9yIHJldmlldywgZXNwZWNpYWxseSBzaW5jZSBgZHJpdmVyLmNgIHRvdWNoZXMgdGhlIFVTQiBjb3JlLlxuXG5Mb29raW5nIGNsb3NlciwgdGhlIGtleSBzaGlmdCBpcyBob3cgYHVzYl9kZXZpY2VfaWRgIGRhdGEgaXMgaGFuZGxlZCBkdXJpbmcgdGhlIFVTQiBwcm9iZSBwcm9jZXNzLiBJdCBzZWVtcyB0aGUgcGF0Y2ggaXMgbW92aW5nIGF3YXkgZnJvbSBwYXNzaW5nIGEgcGVyc2lzdGVudCBwb2ludGVyIHRvIHRoZSBgdXNiX2RldmljZV9pZGAgc3RydWN0dXJlIChlaXRoZXIgZnJvbSB0aGUgZHluYW1pYyBJRCBsaXN0IG9yIHRoZSBkcml2ZXIncyBJRCB0YWJsZSkgdG8gcGFzc2luZyBhIHBvaW50ZXIgdG8gYSBsb2NhbGx5LWFsbG9jYXRlZCwgc3RhY2stYmFzZWQgYHVzYl9kZXZpY2VfaWRgLiBEcml2ZXJzIGNhbiBubyBsb25nZXIgc3RvcmUgdGhpcyBwb2ludGVyIGZvciBsYXRlciB1c2U7IHRoZXkncmUgbm93IGNvbXBlbGxlZCB0byBjb3B5IHRoZSBkYXRhIHRoZXkgbmVlZCBmcm9tIHRoZSBJRCBkdXJpbmcgdGhlIGBwcm9iZWAgY2FsbC4gVGhpcyBpcyBpbnRlcmVzdGluZzogaXQgbG9va3MgbGlrZSB0aGV5IGFyZSBmaXhpbmcgc29tZSBzdWJ0bGUgbWVtb3J5IHNhZmV0eSBpc3N1ZSwgc3BlY2lmaWNhbGx5IGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8uIFRoaXMgbWFrZXMgaXQgbW9yZSByb2J1c3QsIGJ1dCBpdCBtaWdodCBoYXZlIGNoYW5nZWQgaG93IHNvbWUgZHJpdmVycyB3ZXJlIGRlcGVuZGluZyBvbiBgdXNiX2RldmljZV9pZGAgLSB3aGljaCBtaWdodCBpbnRyb2R1Y2UgYSBidWcuXG5cblRoaXMgY2hhbmdlIGlzIG1vcmUgdGhhbiBjb3NtZXRpYy4gSXQgYWx0ZXJzIGNvcmUgVVNCIGRyaXZlciBtYXRjaGluZyBhbmQgcHJvYmluZyBsb2dpYywgYW5kIGl0J3MgZXNzZW50aWFsIHRvIHJlY29nbml6ZSB0aGF0IHRoaXMgaGFzIGZ1bmN0aW9uYWwgaW1wbGljYXRpb25zLiBXZSd2ZSBnb3QgYGF0aDlrYCwgYHVzYnRtY2AsIGFuZCBgc3BjcDh4NWAgZ2V0dGluZyBhZGp1c3RlZCB0byB1c2UgdGhpcyBuZXcgcGF0dGVybi5cblxuR2l2ZW4gdGhhdCB0aGVzZSBhcmUgVVNCIGNvcmUgY2hhbmdlcywgdGhlIGFuc3dlciBpcyBhbiBpbW1lZGlhdGUgeWVzLiBXZSBuZWVkIHRvIGZ1enogdGhpcyEgV2UgY2FuIHRyaWdnZXIgdGhlIGFmZmVjdGVkIGNvZGUgcGF0aHMgYnkgZnV6emluZyBVU0IgZGV2aWNlIGVudW1lcmF0aW9uIHRocm91Z2gsIGZvciBpbnN0YW5jZSwgYGR1bW15X2hjZGAgb3IgYHJhdy1nYWRnZXRgLiBXZSBjYW4gbG9vayBpbnRvIHRyaWdnZXJpbmcgYHVzYl9wcm9iZV9pbnRlcmZhY2VgIGFuZCBhbGwgaXRzIGRlcGVuZGVudHMuXG5cbk5vdywgbGV0J3MgemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBXZSBkZWZpbml0ZWx5IG5lZWQgYFVTQmAgZm9yIGdlbmVyYWwgVVNCIHN1cHBvcnQuIGBBVEg5S19IVENgIHdpbGwgYmUgcmVsZXZhbnQgZm9yIHRoZSBgYXRoOWtgIGNoYW5nZXMsIGBVU0JfVE1DYCBpcyBuZWVkZWQgZm9yIHRoZSBgdXNidG1jYCBjaGFuZ2VzLCBhbmQgYFVTQl9TRVJJQUxfU1BDUDhYNWAgaXMgbmVlZGVkIGZvciB0aGUgYHNwY3A4eDVgIGNoYW5nZXMuIEkgd2lsbCBuZWVkIHRvIHZlcmlmeSB0aG9zZSBhcmUgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgzNSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1ODozMC44ODIxODQyMjRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc4ODE4NzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBBVEg5S19IVENcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc9MTU2PWNvbmZpZyBBVEg5S19QQ0lfTk9fRUVQUk9NXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTcyOmNvbmZpZyBBVEg5S19IVENcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgSFRDIGJhc2VkIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvS2NvbmZpZy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL0tjb25maWc6MTg3OmNvbmZpZyBBVEg5S19IVENfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9LY29uZmlnLTE4OC1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDlrX2h0YyBkZWJ1Z2dpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE3OjU4OjMxLjE2MTAxNDQ1N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MDc4NzUzMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IFVTQl9UTUMgVmVyaWZpY2F0aW9uKipcblxuQWxyaWdodCwgKlVTQl9UTUMqLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gcXVpY2tseSBydW4gdGhyb3VnaCBteSBtZW50YWwgY2hlY2tsaXN0LiBCZWZvcmUgZGl2aW5nIGludG8gYW55dGhpbmcgc3BlY2lmaWMsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgcG90ZW50aWFsIHByb2JsZW0uIElzIHRoaXMgYSBzdHJhaWdodGZvcndhcmQgZHJpdmVyIGlzc3VlLCBvciBhcmUgd2UgbG9va2luZyBhdCBzb21ldGhpbmcgZGVlcGVyPyBJcyBpdCB0aGUgaW50ZXJmYWNlIGl0c2VsZiwgdGhlIGluc3RydW1lbnQgb24gdGhlIG90aGVyIGVuZCwgb3IgdGhlIGFwcGxpY2F0aW9uIGNvZGU/IEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBtb3N0IGJhc2ljIGFzc3VtcHRpb246IHRoZSBVU0JfVE1DIGNvbW11bmljYXRpb24gcHJvdG9jb2wgaXMgdGhlIHVuZGVybHlpbmcgaXNzdWUsIGJ1dCBJIHdhbnQgdG8gc3RheSBmbGV4aWJsZS4gVGhpcyB3aWxsIGJlIGEgc3lzdGVtYXRpYyBkaWFnbm9zdGljIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1OTMsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE3OjU4OjM0LjA2ODk2NTA0MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTU4NjgxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX1RNQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9jbGFzcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2NsYXNzL0tjb25maWc9MzE9Y29uZmlnIFVTQl9XRE1cXG4tLVxcbmRyaXZlcnMvdXNiL2NsYXNzL0tjb25maWctNDAtXFxuZHJpdmVycy91c2IvY2xhc3MvS2NvbmZpZzo0MTpjb25maWcgVVNCX1RNQ1xcbmRyaXZlcnMvdXNiL2NsYXNzL0tjb25maWctNDItXFx0dHJpc3RhdGUgXFxcIlVTQiBUZXN0IGFuZCBNZWFzdXJlbWVudCBDbGFzcyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1ODozNC4xMjg1NjE5ODZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODMzNTcyODYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBVU0JfU0VSSUFMX1NQQ1A4WDUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzIFVTQl9TRVJJQUxfU1BDUDhYNSB0aGluZy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiBvciBzb3VyY2UgY29kZSDigJMgSSBrbm93IHRoaXMgbGlrZWx5IHJlZmVyZW5jZXMgc29tZSBzcGVjaWZpYyBoYXJkd2FyZSBvciBkcml2ZXIuIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCB3aGF0IHRoaXMgbGlrZWx5IGlzLCBhbmQgZGV0ZXJtaW5lIGlmIGl0IHBlcnRhaW5zIHRvIG15IGN1cnJlbnQgcHJvamVjdC4gSXMgdGhpcyBhIGN1c3RvbSBkcml2ZXI/IEEgc3RhbmRhcmRpemVkIHByb3RvY29sPyBXaGF0IHBsYXRmb3JtIGFyZSB3ZSBkaXNjdXNzaW5nPyBUaGUgY29udGV4dCBpcyBrZXkgaGVyZS5cblxuTGV0J3MgYmVnaW4gYnkgc2VhcmNoaW5nIGZvciB0aGF0IG5hbWUgd2l0aGluIHRoZSByZWxldmFudCByZXBvc2l0b3JpZXMuIEkgbmVlZCB0byBxdWlja2x5IGdyYXNwIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LCBlc3BlY2lhbGx5IGluIHRoZSBjb250ZXh0IG9mIGFueSBzZXJpYWwgY29tbXVuaWNhdGlvbiBzeXN0ZW1zIEknbSBjdXJyZW50bHkgd29ya2luZyB3aXRoLiBJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCBpdCBpcyBub3Qgc29tZXRoaW5nIEkgYWxyZWFkeSBrbm93IGFib3V0LlxuXG5JJ2xsIGJlIGxvb2tpbmcgZm9yIGhlYWRlciBmaWxlcywgZGVmaW5pdGlvbnMsIGFuZCB1c2FnZSBleGFtcGxlcy4gSSdtIGhvcGluZyB0byBmaW5kIGNsdWVzIGFib3V0IGl0cyB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZSBhbmQgYW55IHBvdGVudGlhbCBnb3RjaGFzLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgaXQncyBzb21ldGhpbmcgSSBuZWVkIHRvIGludGVncmF0ZSwgbW9kaWZ5LCBvciBzaW1wbHkgYmUgYXdhcmUgb2YuIFRoZSBnb2FsIGlzIGEgcXVpY2ssIGluZm9ybWVkIGRlY2lzaW9uIG9uIGhvdyB0byBwcm9jZWVkLCBhbmQgd2hldGhlciB0aGlzIGltcGFjdHMgbXkgb3ZlcmFsbCBkZXNpZ24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NzgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1ODo0MS45NjIxMzc0NzlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkyNTkxMDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9TRVJJQUxfU1BDUDhYNVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZz00NzU9Y29uZmlnIFVTQl9TRVJJQUxfUVVBTENPTU1cXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ4NC1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo0ODU6Y29uZmlnIFVTQl9TRVJJQUxfU1BDUDhYNVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ4Ni1cXHR0cmlzdGF0ZSBcXFwiVVNCIFNQQ1A4eDUgVVNCIFRvIFNlcmlhbCBEcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE3OjU4OjQyLjAyMTQwNjgwNFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NzQwMTgzODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFVTQiBQcm9iZSBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2Ugc3BlY2lmaWMgZnVuY3Rpb25zOiBgdXNiX3Byb2JlX2ludGVyZmFjZWAsIGB1c2JfbWF0Y2hfZHluYW1pY19pZGAsIGBhdGg5a19oaWZfdXNiX3Byb2JlYCwgYHVzYnRtY19wcm9iZWAsIGBzcGNwOHg1X3Byb2JlYCwgYW5kIGBzcGNwOHg1X3BvcnRfcHJvYmVgLiBUaGVzZSBzZWVtIHRvIGJlIHRoZSBrZXkgcGxheWVycyBpbiB0aGUgVVNCIHByb2JpbmcgcHJvY2VzcywgYW5kIHRoZXkncmUgdGhlIG9uZXMgSSBuZWVkIHRvIHplcm8gaW4gb24gdG8gdW5kZXJzdGFuZCB0aGlzIHBhcnRpY3VsYXIgbW9kaWZpY2F0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGV5J3JlIGFjdHVhbGx5IHJlbGV2YW50LCBhbmQgaWYgdGhlIHNjb3BlIG9mIHRoZWlyIGFjdGlvbnMgaXMgdGFyZ2V0ZWQgZW5vdWdoIHRvIHBpbnBvaW50IHRoZSBhbGxvY2F0aW9uIGNoYW5nZXMuXG5cbmB1c2JfcHJvYmVfaW50ZXJmYWNlYCBpcyBhIGNvcmUgZnVuY3Rpb24sIHdoaWNoIG1ha2VzIGl0IHBvdGVudGlhbGx5IHByb2JsZW1hdGljIGJlY2F1c2UgaXQncyB1c2VkICpldmVyeXdoZXJlKiwgYW5kIGl0IGhhbmRsZXMgYSBsb3Qgb2YgZ2VuZXJpYyBVU0IgaW50ZXJhY3Rpb25zLiBIb3dldmVyLCBpdCdzIGFsc28gdGhlIGV4YWN0IHBsYWNlIHdoZXJlIHRoZSBgdXNiX2RldmljZV9pZGAgYWxsb2NhdGlvbiBvY2N1cnMsIHNvIGl0J3MgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGlzIGNoYW5nZS4gU2ltaWxhcmx5LCBgdXNiX21hdGNoX2R5bmFtaWNfaWRgIGhhcyBiZWVuIG1vZGlmaWVkLCB3aGljaCBpcyBhbm90aGVyIHNpZ25pZmljYW50IHBvaW50IHRvIGNvbnNpZGVyLlxuXG5Ob3cgSSdtIGRpdmluZyBkZWVwZXIsIGFuZCBgdXNiX3Byb2JlX2ludGVyZmFjZWAgaXMgdGhlIGZpcnN0IGZ1bmN0aW9uIEkgd2FudCB0byBkaXNzZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Mjg3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE3OjU4OjQ2LjU5NTQyODkwNloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk5MTMyNzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidXNiX3Byb2JlX2ludGVyZmFjZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmM9MzA0PXN0YXRpYyBpbnQgdXNiX3VuYmluZF9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYy0zMTgtLyogY2FsbGVkIGZyb20gZHJpdmVyIGNvcmUgd2l0aCBkZXYgbG9ja2VkICovXFxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYzozMTk6c3RhdGljIGludCB1c2JfcHJvYmVfaW50ZXJmYWNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jLTMyMC17XFxuLS1cXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jPTEwNjE9aW50IHVzYl9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHVzYl9kcml2ZXIgKm5ld19kcml2ZXIsIHN0cnVjdCBtb2R1bGUgKm93bmVyLFxcbi0tXFxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYy0xMDcwLVxcdG5ld19kcml2ZXItXFx1MDAzZWRyaXZlci5idXMgPSBcXHUwMDI2dXNiX2J1c190eXBlO1xcbmRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmM6MTA3MTpcXHRuZXdfZHJpdmVyLVxcdTAwM2Vkcml2ZXIucHJvYmUgPSB1c2JfcHJvYmVfaW50ZXJmYWNlO1xcbmRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmMtMTA3Mi1cXHRuZXdfZHJpdmVyLVxcdTAwM2Vkcml2ZXIucmVtb3ZlID0gdXNiX3VuYmluZF9pbnRlcmZhY2U7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE3OjU4OjQ2LjY3NTM0OTcwOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTg1MDgzNjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgdXNiX21hdGNoX2R5bmFtaWNfaWRgKipcblxuT2theSwgdGltZSB0byBkaXNzZWN0IGB1c2JfbWF0Y2hfZHluYW1pY19pZGAuIEknbSBzdGFydGluZyBoZXJlIGJlY2F1c2UgSSBrbm93IGR5bmFtaWMgSURzIGNhbiBiZSB0cmlja3kuIExldCBtZSByZWZyZXNoIG15IG1lbW9yeSBvbiBpdHMgcHVycG9zZS4gQWgsIHllcywgaXQncyB0aGUgZnVuY3Rpb24gdGhhdCB0cmllcyB0byBmaW5kIGEgZHJpdmVyIG1hdGNoIGZvciBhIFVTQiBkZXZpY2Ugd2hlbiB0aGUgdHlwaWNhbCBzdGF0aWMgSUQgdGFibGUgaXNuJ3Qgc3VmZmljaWVudCwgcmlnaHQ/IEl0J3MgdGhlIGZhbGxiYWNrIG1lY2hhbmlzbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSAqaG93KiBpdCdzIGRvaW5nIHRoYXQgZHluYW1pYyBtYXRjaGluZyDigJMgd2hhdCdzIHRoZSBhbGdvcml0aG0/IElzIGl0IHJlbHlpbmcgb24gZGVzY3JpcHRvcnMsIHNvbWUgZm9ybSBvZiBwcm9iaW5nLCBvciBzb21ldGhpbmcgbW9yZSBjbGV2ZXI/IFNwZWNpZmljYWxseSwgSSdtIGludGVyZXN0ZWQgaW4gcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGVkZ2UgY2FzZXMuIEFyZSB0aGVyZSBhbnkga25vd24gaXNzdWVzIHdpdGggdGhpcyBmdW5jdGlvbj8gQW55IHJhY2UgY29uZGl0aW9ucywgcGVyaGFwcz8gQW5kIG1vc3QgaW1wb3J0YW50bHksIGhvdyBpcyBpdCBoYW5kbGluZyB0aGUgdmFyaW91cyBVU0IgdHJhbnNmZXIgdHlwZXM/IERvZXMgaXQgY29ycmVjdGx5IGRpZmZlcmVudGlhdGUgYmV0d2VlbiBjb250cm9sLCBidWxrLCBpbnRlcnJ1cHQgYW5kIGlzb2Nocm9ub3VzIHRyYW5zZmVycyB3aGlsZSBkb2luZyB0aGUgZHluYW1pYyBJRCBtYXRjaGluZz8gSSBuZWVkIHRvIGNoZWNrIGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBVU0IgY29yZSwgdGhlIGRldmljZSdzIGRlc2NyaXB0b3JzLCBhbmQgdGhlIHBvdGVudGlhbCBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbi4gTGV0J3Mgc2VlIGhvdyBpdCBtYWtlcyB0aGUgZGVjaXNpb24sIGVzcGVjaWFsbHkgd2hhdCB0aGUgY3JpdGVyaWEgZm9yIGEgbWF0Y2ggbG9vayBsaWtlLiBBbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5NjYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1ODo1MC42NjA0MzU5OThaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNjc3NzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVzYl9tYXRjaF9keW5hbWljX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYz0yMTk9c3RhdGljIHZvaWQgdXNiX2ZyZWVfZHluaWRzKHN0cnVjdCB1c2JfZHJpdmVyICp1c2JfZHJ2KVxcbi0tXFxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYy0yMjktXFxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYzoyMzA6c3RhdGljIGJvb2wgdXNiX21hdGNoX2R5bmFtaWNfaWQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZHJpdmVyICpkcnYsXFxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYy0yMzEtXFx0XFx0XFx0XFx0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmM9MzE5PXN0YXRpYyBpbnQgdXNiX3Byb2JlX2ludGVyZmFjZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jLTM0NC1cXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jOjM0NTpcXHRpZiAoIXVzYl9tYXRjaF9keW5hbWljX2lkKGludGYsIGRyaXZlciwgXFx1MDAyNmlkKSkge1xcbmRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmMtMzQ2LVxcdFxcdG1hdGNoZWRfaWQgPSB1c2JfbWF0Y2hfaWQoaW50ZiwgZHJpdmVyLVxcdTAwM2VpZF90YWJsZSk7XFxuLS1cXG5kcml2ZXJzL3VzYi9jb3JlL2RyaXZlci5jPTg3MT1zdGF0aWMgaW50IHVzYl9kZXZpY2VfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxcbi0tXFxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYy05MDgtXFxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYzo5MDk6XFx0XFx0aWYgKHVzYl9tYXRjaF9keW5hbWljX2lkKGludGYsIHVzYl9kcnYsIFxcdTAwMjZpZCkpXFxuZHJpdmVycy91c2IvY29yZS9kcml2ZXIuYy05MTAtXFx0XFx0XFx0cmV0dXJuIDE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE3OjU4OjUwLjcyMTEyMDU4MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzYwMDU1OTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYGF0aDlrX2hpZl91c2JfcHJvYmVgKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGludG8gdGhpcy4gVGhlIG1lbnRhbCBjaGVja2xpc3Qgc3RhcnRzIHdpdGggYGF0aDlrX2hpZl91c2JfcHJvYmVgLiBJbW1lZGlhdGVseSwgSeKAmW0gdGhpbmtpbmcg4oCTIHJpZ2h0LCBVU0IgcHJvYmUgZnVuY3Rpb24uIFRoYXTigJlzIHRoZSBlbnRyeSBwb2ludCwgdGhlIGZpcnN0IHBsYWNlIHRoZSBzeXN0ZW0gdHJpZXMgdG8gYnJpbmcgdXAgYW4gQXRoZXJvcyBBUjkwMDAtc2VyaWVzIFdpRmkgZGV2aWNlIGNvbm5lY3RlZCBvdmVyIFVTQi4gR290dGEgYmUgZmFtaWxpYXIgd2l0aCB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLCBwb3dlciBtYW5hZ2VtZW50LCByZXNvdXJjZSBhbGxvY2F0aW9u4oCmIGV2ZXJ5dGhpbmcgaGluZ2VzIG9uIHRoaXMgZnVuY3Rpb24uIEknbSBleHBlY3RpbmcgdG8gc2VlIHRoZSB1c3VhbCBzdXNwZWN0czogZGV2aWNlIElEIG1hdGNoaW5nIGFnYWluc3QgdGhlIFVTQiBkZXZpY2UgdGFibGUsIHJlc291cmNlIHJlcXVlc3RzIGZvciBETUEsIGludGVycnVwdHMsIG1heWJlIHNvbWUgcGxhdGZvcm0tc3BlY2lmaWMgaW5pdGlhbGl6YXRpb25zLCBhbmQgdGhlIGNydWNpYWwgY2FsbCB0byB0aGUgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIgKEhBTCkgZm9yIHRoZSBjaGlwc2V0LiBJJ2xsIG5lZWQgdG8gbG9vayBmb3IgZXJyb3IgaGFuZGxpbmcsIG9mIGNvdXJzZTsgd2hhdCBoYXBwZW5zIGlmIHRoZSBVU0IgZGV2aWNlIGlzbid0IHJlY29nbml6ZWQsIG9yIGlmIHRoZXJlJ3MgYSBwcm9ibGVtIHdpdGggcmVzb3VyY2UgYWxsb2NhdGlvbj8gQW5kLCBob3cgaXMgdGhpcyBwcm9iZSBmdW5jdGlvbiByZWxhdGVkIHRvIHRoZSByZXN0IG9mIHRoZSBhdGg5ayBkcml2ZXI/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2MzksIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1ODo1NC40ODExNzk1MTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMjMyMjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDlrX2hpZl91c2JfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTEyOTA9c3RhdGljIGludCBzZW5kX2VqZWN0X2NvbW1hbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMTM0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jOjEzNDU6c3RhdGljIGludCBhdGg5a19oaWZfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYy0xMzQ2LVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jPTE1MDk9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGF0aDlrX2hpZl91c2JfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMTUxMC1cXHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmM6MTUxMTpcXHQucHJvYmUgPSBhdGg5a19oaWZfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMtMTUxMi1cXHQuZGlzY29ubmVjdCA9IGF0aDlrX2hpZl91c2JfZGlzY29ubmVjdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTc6NTg6NTQuNTQzNDE5Nzg3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5ODYyNzkzNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipEZWJ1Z2dpbmcgdGhlIFVTQlRNQyBQcm9iZSBGdW5jdGlvbioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYHVzYnRtY19wcm9iZWAuIFRoaXMgbGlrZWx5IG1lYW5zIEknbSB0cm91Ymxlc2hvb3Rpbmcgc29tZSBVU0JUTUMgZHJpdmVyLXJlbGF0ZWQgaXNzdWUuIFBlcmhhcHMgYSBkZXZpY2UgaXNuJ3QgYmVpbmcgcmVjb2duaXplZCwgb3IgaXQncyBtaXNiZWhhdmluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZyB3aXRoaW4gdGhhdCBwcm9iZSBmdW5jdGlvbi4gSXMgaXQgZmFpbGluZyB0byBtYXRjaCBhIGRldmljZSBJRD8gSXMgdGhlcmUgYW4gZXJyb3IgZHVyaW5nIGluaXRpYWxpemF0aW9uPyBJcyBpdCBldmVuIGJlaW5nIGNhbGxlZCBpbiB0aGUgZmlyc3QgcGxhY2U/IEknbGwgcHJvYmFibHkgc3RhcnQgYnkgc3RlcHBpbmcgdGhyb3VnaCBpdCB3aXRoIGEgZGVidWdnZXIgb3IgYWRkaW5nIHNvbWUgcHJpbnQgc3RhdGVtZW50cyB0byBjaGVjayB3aGF0IGNvbmRpdGlvbnMgYXJlIG1ldCBhbmQgd2hlcmUgdGhlIGNvZGUgYnJhbmNoZXMuIE15IGV4cGVyaWVuY2UgaGFzIHRhdWdodCBtZSB0aGF0IHRoZSBkZXZpbCBpcyB1c3VhbGx5IGluIHRoZSBkZXRhaWxzIHdpdGhpbiB0aGF0IHByb2Jpbmcgc3RhZ2UuIExldCdzIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyNjYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1ODo1Ny41Mjk3MDIwODVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMTc3Mzc3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1c2J0bWNfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmM9MjM2OT1zdGF0aWMgdm9pZCB1c2J0bWNfZnJlZV9pbnQoc3RydWN0IHVzYnRtY19kZXZpY2VfZGF0YSAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jLTIzODAtXFxuZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmM6MjM4MTpzdGF0aWMgaW50IHVzYnRtY19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG5kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYy0yMzgyLVxcdFxcdFxcdGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvdXNiL2NsYXNzL3VzYnRtYy5jPTI2MDg9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHVzYnRtY19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYy0yNjEwLVxcdC5pZF90YWJsZVxcdD0gdXNidG1jX2RldmljZXMsXFxuZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmM6MjYxMTpcXHQucHJvYmVcXHRcXHQ9IHVzYnRtY19wcm9iZSxcXG5kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYy0yNjEyLVxcdC5kaXNjb25uZWN0XFx0PSB1c2J0bWNfZGlzY29ubmVjdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTc6NTg6NTcuNzQxNDgyMDE0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzIyMzYxOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gd2hhdCBJJ2QgYmUgdGhpbmtpbmcgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDpcblxuKipJbml0aWFsIERpYWdub3N0aWMgU3RlcHMqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwIGludG8gdGhlIGlzc3VlLCBJIG5lZWQgYSBjbGVhciBiYXNlbGluZS4gTXkgZmlyc3Qgc3RlcCBpcyB0byBxdWlja2x5IHZlcmlmeSB0aGUgZnVuZGFtZW50YWwgcHJvYmVzOiBJJ20gZ29pbmcgdG8gY2hlY2sgYm90aCBgc3BjcDh4NV9wcm9iZWAgYW5kIGBzcGNwOHg1X3BvcnRfcHJvYmVgLiBUaGVzZSBhcmUgdGhlIGNydWNpYWwgZW50cnkgcG9pbnRzOyB0aGV5IHRlbGwgbWUgd2hldGhlciB0aGUgY29yZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gYW5kIGluZGl2aWR1YWwgcG9ydCBjb25maWd1cmF0aW9ucyBhcmUgc3VjY2VlZGluZyBvciBmYWlsaW5nLiBHcmFiYmluZyB0aGVzZSBlYXJseSBhbGxvd3MgZm9yIGFuIGluZm9ybWVkIGRpcmVjdGlvbiwgdG8gc2VlIHdoZXJlIHRoZSBwcm9jZXNzIG1heSBiZSBmYWlsaW5nLiBDaGVja2luZyB0aGVtIHdpbGwgcHJldmVudCBhIGxlbmd0aHkgZGVlcCBkaXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzU4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTc6NTk6MDAuOTEzNzIxMTU0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTkxMTkzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzcGNwOHg1X3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL3NlcmlhbC9zcGNwOHg1LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuYz0xMjc9c3RydWN0IHNwY3A4eDVfcHJpdmF0ZSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jLTEzMi1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jOjEzMzpzdGF0aWMgaW50IHNwY3A4eDVfcHJvYmUoc3RydWN0IHVzYl9zZXJpYWwgKnNlcmlhbCxcXG5kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jLTEzNC1cXHRcXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jPTQ1MT1zdGF0aWMgc3RydWN0IHVzYl9zZXJpYWxfZHJpdmVyIHNwY3A4eDVfZGV2aWNlID0ge1xcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL3NwY3A4eDUuYy00NjUtXFx0LnRpb2Ntc2V0XFx0XFx0PSBzcGNwOHg1X3Rpb2Ntc2V0LFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9zcGNwOHg1LmM6NDY2OlxcdC5wcm9iZVxcdFxcdFxcdD0gc3BjcDh4NV9wcm9iZSxcXG5kcml2ZXJzL3VzYi9zZXJpYWwvc3BjcDh4NS5jLTQ2Ny1cXHQucG9ydF9wcm9iZVxcdFxcdD0gc3BjcDh4NV9wb3J0X3Byb2JlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1OTowMC45OTU2NDIyNTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcxNDM2NTM2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBVU0IgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSByZWNvZ25pemUgdGhlIGltcGxpY2F0aW9ucy4gVGhlIGNvcmUgY2hhbmdlIGlzIGhvdyBgdXNiX2RldmljZV9pZGAgaXMgaGFuZGxlZCwgbW92aW5nIGZyb20gYSBwZXJzaXN0ZW50IHBvaW50ZXIgdG8gYSB0ZW1wb3Jhcnkgc3RhY2sgYWxsb2NhdGlvbi4gVGhhdCdzIGEgc2lnbmlmaWNhbnQgc2hpZnQgaW4gbWVtb3J5IG1hbmFnZW1lbnQgYW5kIEknbSBpbnN0YW50bHkgc2VlaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0LiBJdCdzIGVzc2VudGlhbGx5IGFsdGVyaW5nIGhvdyB0aGUgVVNCIGNvcmUgbWF0Y2hlcyBkZXZpY2VzIHRvIGRyaXZlcnMgZHVyaW5nIHByb2JlIG9wZXJhdGlvbnMuXG5cbk5vdywgbXkgZm9jdXMgaXMgb24gZW5zdXJpbmcgbm8gdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIGFyaXNlIGZyb20gdGhpcyBjaGFuZ2UuIEl0IGxvb2tzIGxpa2UgdGhlIHRlYW0gaGFzIGFscmVhZHkgaWRlbnRpZmllZCB0aGF0IGBhdGg5a2AsIGB1c2J0bWNgLCBhbmQgYHNwY3A4eDVgIFVTQiBkcml2ZXJzIGFyZSBkaXJlY3RseSBhZmZlY3RlZCBiZWNhdXNlIHRoZXkgd2VyZSBzdG9yaW5nIHRoZSBvbGQgcG9pbnRlci4gU21hcnQuXG5cbkkgY2FuIHNlZSB0aGUgZnV6emluZyBzdHJhdGVneSBpcyBzb3VuZDsgaXQncyBkZXNpZ25lZCB0byB0cmlnZ2VyIHRoZXNlIGFmZmVjdGVkIHBhdGhzIGR1cmluZyBVU0IgZGV2aWNlIGVudW1lcmF0aW9uIHRvIHJlYWxseSBzdHJlc3MtdGVzdCB0aGUgbmV3IGltcGxlbWVudGF0aW9uLiBHb29kLlxuXG5JJ20gbWFraW5nIGEgbWVudGFsIG5vdGUgb2YgdGhvc2Uga2V5IHN5bWJvbHM6IGB1c2JfcHJvYmVfaW50ZXJmYWNlYCwgYHVzYl9tYXRjaF9keW5hbWljX2lkYCwgYGF0aDlrX2hpZl91c2JfcHJvYmVgLCBgdXNidG1jX3Byb2JlYCwgYHNwY3A4eDVfcHJvYmVgLCBhbmQgYHNwY3A4eDVfcG9ydF9wcm9iZWAuIFRoZXNlIGFyZSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRvIHNjcnV0aW5pemUuIEknbSBnb2luZyB0byBzdGFydCB0aGVyZSBhbmQgdHJhY2UgdGhlIGxvZ2ljLlxuXG5CZWZvcmUgSSBkaWcgaW4gdG9vIGRlZXAsIEkgd2FudCB0byBjb25maXJtIEkgaGF2ZSBhbGwgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucyBlbmFibGVkLiBUaGV5J3ZlIGxpc3RlZCBgQVRIOUtfSFRDYCwgYFVTQl9UTUNgLCBhbmQgYFVTQl9TRVJJQUxfU1BDUDhYNWAuIGBVU0JgIGlzIGFscmVhZHkgYnJvYWRseSBlbmFibGVkLCBzbyB0aGF0J3MgZ29vZC4gQW5kIHRoZSBgVVNCX1NFUklBTGAgY29uZmlnIGlzIG5lY2Vzc2FyeSBmb3IgYFVTQl9TRVJJQUxfU1BDUDhYNWAsIHNvIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGluIHRoZSBgZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWdgIGZpbGUsIGp1c3QgdG8gYmUgc3VyZS4gSSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBhcmUgYWxsIGVuYWJsZWQgaW4gbXkgdGVzdCBzZXR1cC4gTm93LCBsZXQncyBzZWUgd2hhdCdzIGNoYW5nZWQgYW5kIGxvb2sgZm9yIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjM2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE3OjU5OjA2LjcxMDAxMTI0NloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1NDM4MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfU0VSSUFMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTUtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NjptZW51Y29uZmlnIFVTQl9TRVJJQUxcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJVU0IgU2VyaWFsIENvbnZlcnRlciBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc9MjE9aWYgVVNCX1NFUklBTFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTIyLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjIzOmNvbmZpZyBVU0JfU0VSSUFMX0NPTlNPTEVcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJVU0IgU2VyaWFsIENvbnNvbGUgZGV2aWNlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00NS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo0Njpjb25maWcgVVNCX1NFUklBTF9HRU5FUklDXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDctXFx0Ym9vbCBcXFwiVVNCIEdlbmVyaWMgU2VyaWFsIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTU0LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjU1OmNvbmZpZyBVU0JfU0VSSUFMX1NJTVBMRVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTU2LVxcdHRyaXN0YXRlIFxcXCJVU0IgU2VyaWFsIFNpbXBsZSBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy03OC1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo3OTpjb25maWcgVVNCX1NFUklBTF9BSVJDQUJMRVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTgwLVxcdHRyaXN0YXRlIFxcXCJVU0IgQUlSY2FibGUgQmx1ZXRvb3RoIERvbmdsZSBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy04Ni1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo4Nzpjb25maWcgVVNCX1NFUklBTF9BUkszMTE2XFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctODgtXFx0dHJpc3RhdGUgXFxcIlVTQiBBUksgTWljcm8gMzExNiBVU0IgU2VyaWFsIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTk1LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjk2OmNvbmZpZyBVU0JfU0VSSUFMX0JFTEtJTlxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTk3LVxcdHRyaXN0YXRlIFxcXCJVU0IgQmVsa2luIGFuZCBQZXJhY29tIFNpbmdsZSBQb3J0IFNlcmlhbCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xMDUtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MTA2OmNvbmZpZyBVU0JfU0VSSUFMX0NIMzQxXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMTA3LVxcdHRyaXN0YXRlIFxcXCJVU0IgV2luY2hpcGhlYWQgQ0gzNDEgU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTExNC1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoxMTU6Y29uZmlnIFVTQl9TRVJJQUxfV0hJVEVIRUFUXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMTE2LVxcdHRyaXN0YXRlIFxcXCJVU0IgQ29ubmVjdFRlY2ggV2hpdGVIRUFUIFNlcmlhbCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xMjQtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MTI1OmNvbmZpZyBVU0JfU0VSSUFMX0RJR0lfQUNDRUxFUE9SVFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTEyNi1cXHR0cmlzdGF0ZSBcXFwiVVNCIERpZ2kgSW50ZXJuYXRpb25hbCBBY2NlbGVQb3J0IFVTQiBTZXJpYWwgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMTM1LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjEzNjpjb25maWcgVVNCX1NFUklBTF9DUDIxMFhcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xMzctXFx0dHJpc3RhdGUgXFxcIlVTQiBDUDIxMHggZmFtaWx5IG9mIFVBUlQgQnJpZGdlIENvbnRyb2xsZXJzXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMTQ0LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjE0NTpjb25maWcgVVNCX1NFUklBTF9DWVBSRVNTX004XFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMTQ2LVxcdHRyaXN0YXRlIFxcXCJVU0IgQ3lwcmVzcyBNOCBVU0IgU2VyaWFsIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTE1OC1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoxNTk6Y29uZmlnIFVTQl9TRVJJQUxfRU1QRUdcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xNjAtXFx0dHJpc3RhdGUgXFxcIlVTQiBFbXBlZyBlbXBlZy1jYXIgTWFyayBJL0lJIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTE2OS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoxNzA6Y29uZmlnIFVTQl9TRVJJQUxfRlRESV9TSU9cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xNzEtXFx0dHJpc3RhdGUgXFxcIlVTQiBGVERJIFNpbmdsZSBQb3J0IFNlcmlhbCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xODItXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MTgzOmNvbmZpZyBVU0JfU0VSSUFMX1ZJU09SXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMTg0LVxcdHRyaXN0YXRlIFxcXCJVU0IgSGFuZHNwcmluZyBWaXNvciAvIFBhbG0gbTUweCAvIFNvbnkgQ2xpZSBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xOTMtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MTk0OmNvbmZpZyBVU0JfU0VSSUFMX0lQQVFcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0xOTUtXFx0dHJpc3RhdGUgXFxcIlVTQiBQb2NrZXRQQyBQREEgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjA0LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjIwNTpjb25maWcgVVNCX1NFUklBTF9JUlxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTIwNi1cXHR0cmlzdGF0ZSBcXFwiVVNCIElSIERvbmdsZSBTZXJpYWwgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjE0LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjIxNTpjb25maWcgVVNCX1NFUklBTF9FREdFUE9SVFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTIxNi1cXHR0cmlzdGF0ZSBcXFwiVVNCIEluc2lkZSBPdXQgRWRnZXBvcnQgU2VyaWFsIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTIzOS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzoyNDA6Y29uZmlnIFVTQl9TRVJJQUxfRURHRVBPUlRfVElcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yNDEtXFx0dHJpc3RhdGUgXFxcIlVTQiBJbnNpZGUgT3V0IEVkZ2Vwb3J0IFNlcmlhbCBEcml2ZXIgKFRJIGRldmljZXMpXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjQ5LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjI1MDpjb25maWcgVVNCX1NFUklBTF9GODEyMzJcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yNTEtXFx0dHJpc3RhdGUgXFxcIlVTQiBGaW50ZWsgRjgxMjMyIFNpbmdsZSBQb3J0IFNlcmlhbCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yNTgtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MjU5OmNvbmZpZyBVU0JfU0VSSUFMX0Y4MTUzWFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTI2MC1cXHR0cmlzdGF0ZSBcXFwiVVNCIEZpbnRlayBGODE1MzIvNTM0IE11bHRpLVBvcnRzIFNlcmlhbCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yNjgtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MjY5OmNvbmZpZyBVU0JfU0VSSUFMX0dBUk1JTlxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTI3MC1cXHR0cmlzdGF0ZSBcXFwiVVNCIEdhcm1pbiBHUFMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjgwLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjI4MTpjb25maWcgVVNCX1NFUklBTF9JUFdcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yODItXFx0dHJpc3RhdGUgXFxcIlVTQiBJUFdpcmVsZXNzICgzRyBVTVRTIFRERCkgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMjkwLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjI5MTpjb25maWcgVVNCX1NFUklBTF9JVVVcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0yOTItXFx0dHJpc3RhdGUgXFxcIlVTQiBJbmZpbml0eSBVU0IgVW5saW1pdGVkIFBob2VuaXggRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzAwLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjMwMTpjb25maWcgVVNCX1NFUklBTF9LRVlTUEFOX1BEQVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTMwMi1cXHR0cmlzdGF0ZSBcXFwiVVNCIEtleXNwYW4gUERBIC8gWGlyY29tIFNpbmdsZSBQb3J0IFNlcmlhbCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zMTEtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MzEyOmNvbmZpZyBVU0JfU0VSSUFMX0tFWVNQQU5cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zMTMtXFx0dHJpc3RhdGUgXFxcIlVTQiBLZXlzcGFuIFVTQS14eHggU2VyaWFsIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTMyNS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzozMjY6Y29uZmlnIFVTQl9TRVJJQUxfS0xTSVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTMyNy1cXHR0cmlzdGF0ZSBcXFwiVVNCIEtMNUtVU0IxMDUgKFBhbG1jb25uZWN0KSBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zNDAtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6MzQxOmNvbmZpZyBVU0JfU0VSSUFMX0tPQklMX1NDVFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM0Mi1cXHR0cmlzdGF0ZSBcXFwiVVNCIEtPQklMIGNoaXBjYXJkIHJlYWRlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM1Ny1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzozNTg6Y29uZmlnIFVTQl9TRVJJQUxfTUNUX1UyMzJcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zNTktXFx0dHJpc3RhdGUgXFxcIlVTQiBNQ1QgU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM2OS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzozNzA6Y29uZmlnIFVTQl9TRVJJQUxfTUVUUk9cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zNzEtXFx0dHJpc3RhdGUgXFxcIlVTQiBNZXRyb2xvZ2ljIEluc3RydW1lbnRzIFVTQi1QT1MgQmFyY29kZSBTY2FubmVyIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM3Ny1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzozNzg6Y29uZmlnIFVTQl9TRVJJQUxfTU9TNzcyMFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTM3OS1cXHR0cmlzdGF0ZSBcXFwiVVNCIE1vc2NoaXAgNzcyMCBTZXJpYWwgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzg2LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjM4Nzpjb25maWcgVVNCX1NFUklBTF9NT1M3NzE1X1BBUlBPUlRcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy0zODgtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgcGFyYWxsZWwgcG9ydCBvbiB0aGUgTW9zY2hpcCA3NzE1XFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzk2LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjM5Nzpjb25maWcgVVNCX1NFUklBTF9NT1M3ODQwXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctMzk4LVxcdHRyaXN0YXRlIFxcXCJVU0IgTW9zY2hpcCA3ODQwLzc4MjAgVVNCIFNlcmlhbCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00MTAtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NDExOmNvbmZpZyBVU0JfU0VSSUFMX01YVVBPUlRcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00MTItXFx0dHJpc3RhdGUgXFxcIlVTQiBNb3hhIFVQT1JUIFNlcmlhbCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00MzktXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NDQwOmNvbmZpZyBVU0JfU0VSSUFMX05BVk1BTlxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ0MS1cXHR0cmlzdGF0ZSBcXFwiVVNCIE5hdm1hbiBHUFMgZGV2aWNlXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDQ1LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjQ0Njpjb25maWcgVVNCX1NFUklBTF9QTDIzMDNcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00NDctXFx0dHJpc3RhdGUgXFxcIlVTQiBQcm9saWZpYyAyMzAzIFNpbmdsZSBQb3J0IFNlcmlhbCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00NTQtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NDU1OmNvbmZpZyBVU0JfU0VSSUFMX09USTY4NThcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00NTYtXFx0dHJpc3RhdGUgXFxcIlVTQiBPdXJzIFRlY2hub2xvZ3kgSW5jLiBPVGktNjg1OCBVU0IgVG8gUlMyMzIgQnJpZGdlIENvbnRyb2xsZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00NjMtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NDY0OmNvbmZpZyBVU0JfU0VSSUFMX1FDQVVYXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDY1LVxcdHRyaXN0YXRlIFxcXCJVU0IgUXVhbGNvbW0gQXV4aWxpYXJ5IFNlcmlhbCBQb3J0IERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ3NC1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo0NzU6Y29uZmlnIFVTQl9TRVJJQUxfUVVBTENPTU1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00NzYtXFx0dHJpc3RhdGUgXFxcIlVTQiBRdWFsY29tbSBTZXJpYWwgbW9kZW1cXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00ODQtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NDg1OmNvbmZpZyBVU0JfU0VSSUFMX1NQQ1A4WDVcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00ODYtXFx0dHJpc3RhdGUgXFxcIlVTQiBTUENQOHg1IFVTQiBUbyBTZXJpYWwgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDkzLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjQ5NDpjb25maWcgVVNCX1NFUklBTF9TQUZFXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNDk1LVxcdHRyaXN0YXRlIFxcXCJVU0IgU2FmZSBTZXJpYWwgKEVuY2Fwc3VsYXRlZCkgRHJpdmVyXFxcIlxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTQ5Ni1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo0OTc6Y29uZmlnIFVTQl9TRVJJQUxfU0FGRV9QQURERURcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy00OTgtXFx0Ym9vbCBcXFwiVVNCIFNlY3VyZSBFbmNhcHN1bGF0ZWQgRHJpdmVyIC0gUGFkZGVkXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTAwLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjUwMTpjb25maWcgVVNCX1NFUklBTF9TSUVSUkFXSVJFTEVTU1xcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTUwMi1cXHR0cmlzdGF0ZSBcXFwiVVNCIFNpZXJyYSBXaXJlbGVzcyBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01MTEtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NTEyOmNvbmZpZyBVU0JfU0VSSUFMX1NZTUJPTFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTUxMy1cXHR0cmlzdGF0ZSBcXFwiVVNCIFN5bWJvbCBCYXJjb2RlIGRyaXZlciAoc2VyaWFsIG1vZGUpXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTIwLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjUyMTpjb25maWcgVVNCX1NFUklBTF9USVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTUyMi1cXHR0cmlzdGF0ZSBcXFwiVVNCIFRJIDM0MTAvNTA1MiBTZXJpYWwgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTI5LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjUzMDpjb25maWcgVVNCX1NFUklBTF9DWUJFUkpBQ0tcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01MzEtXFx0dHJpc3RhdGUgXFxcIlVTQiBSRUlORVIgU0NUIGN5YmVySmFjayBwaW5wYWQvZS1jb20gY2hpcGNhcmQgcmVhZGVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTQxLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjU0Mjpjb25maWcgVVNCX1NFUklBTF9XV0FOXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTQzLVxcdHRyaXN0YXRlXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTQ0LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjU0NTpjb25maWcgVVNCX1NFUklBTF9PUFRJT05cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01NDYtXFx0dHJpc3RhdGUgXFxcIlVTQiBkcml2ZXIgZm9yIEdTTSBhbmQgQ0RNQSBtb2RlbXNcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01NjMtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NTY0OmNvbmZpZyBVU0JfU0VSSUFMX09NTklORVRcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01NjUtXFx0dHJpc3RhdGUgXFxcIlVTQiBaeVhFTCBvbW5pLm5ldCBMQ0QgUGx1cyBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01NzEtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NTcyOmNvbmZpZyBVU0JfU0VSSUFMX09QVElDT05cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01NzMtXFx0dHJpc3RhdGUgXFxcIlVTQiBPcHRpY29uIEJhcmNvZGUgZHJpdmVyIChzZXJpYWwgbW9kZSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01ODAtXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NTgxOmNvbmZpZyBVU0JfU0VSSUFMX1hTRU5TX01UXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNTgyLVxcdHRyaXN0YXRlIFxcXCJYc2VucyBtb3Rpb24gdHJhY2tlciBzZXJpYWwgaW50ZXJmYWNlIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTU5Mi1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo1OTM6Y29uZmlnIFVTQl9TRVJJQUxfV0lTSEJPTkVcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy01OTQtXFx0dHJpc3RhdGUgXFxcIlVTQi1XaXNoYm9uZSBhZGFwdGVyIGludGVyZmFjZSBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy02MDktXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NjEwOmNvbmZpZyBVU0JfU0VSSUFMX1NTVTEwMFxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTYxMS1cXHR0cmlzdGF0ZSBcXFwiVVNCIFF1YXRlY2ggU1NVLTEwMCBTaW5nbGUgUG9ydCBTZXJpYWwgRHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWctNjE4LVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnOjYxOTpjb25maWcgVVNCX1NFUklBTF9RVDJcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy02MjAtXFx0dHJpc3RhdGUgXFxcIlVTQiBRdWF0ZWNoIFNlcmlhbCBEcml2ZXIgZm9yIFVTQiAyIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy02MjctXFxuZHJpdmVycy91c2Ivc2VyaWFsL0tjb25maWc6NjI4OmNvbmZpZyBVU0JfU0VSSUFMX1VQRDc4RjA3MzBcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy02MjktXFx0dHJpc3RhdGUgXFxcIlVTQiBSZW5lc2FzIHVQRDc4RjA3MzAgU2luZ2xlIFBvcnQgU2VyaWFsIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTYzNi1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo2Mzc6Y29uZmlnIFVTQl9TRVJJQUxfWFJcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy02MzgtXFx0dHJpc3RhdGUgXFxcIlVTQiBNYXhMaW5lYXIvRXhhciBVU0IgdG8gU2VyaWFsIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3NlcmlhbC9LY29uZmlnLTY0NS1cXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZzo2NDY6Y29uZmlnIFVTQl9TRVJJQUxfREVCVUdcXG5kcml2ZXJzL3VzYi9zZXJpYWwvS2NvbmZpZy02NDctXFx0dHJpc3RhdGUgXFxcIlVTQiBEZWJ1Z2dpbmcgRGV2aWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNzo1OTowNi44MTU0NjAxMTZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzAyMzEzOTU0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVVNCIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiByZXZpZXdpbmcgdGhpcyBwYXRjaCwgYW5kIGhlcmUncyB3aGF0IEknbSB0aGlua2luZy4gRmlyc3Qgb2ZmLCBJIHNlZSB0aGF0IGBVU0JfU0VSSUFMYCBpcyBhIG1lbnVjb25maWcgb3B0aW9uLCBzbyBpdCBtYWtlcyBzZW5zZSB0byBpbmNsdWRlIGl0IGluIHRoZSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zIHdlIHNob3VsZCBlbmFibGUgZm9yIHRlc3RpbmcuIFNpbWlsYXJseSwgYFVTQl9TRVJJQUxfU1BDUDhYNWAgaXMgZGVwZW5kZW50IG9uIGBVU0JfU0VSSUFMYCwgc28gd2UnbGwgbmVlZCB0byBtYWtlIHN1cmUgYm90aCBhcmUgY29uc2lkZXJlZC5cblxuTGV0J3MgcmVjYXAgdGhlIHJlbGV2YW50IGNvbmZpZ3M6IGBBVEg5S19IVENgLCBgVVNCX1RNQ2AsIGBVU0JfU0VSSUFMYCwgYW5kIGBVU0JfU0VSSUFMX1NQQ1A4WDVgLiBHb3QgaXQuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgc3ltYm9scyB3ZSdyZSBmb2N1c2luZyBvbi4gV2UndmUgZ290IGB1c2JfcHJvYmVfaW50ZXJmYWNlYCwgYHVzYl9tYXRjaF9keW5hbWljX2lkYCwgYGF0aDlrX2hpZl91c2JfcHJvYmVgLCBgdXNidG1jX3Byb2JlYCwgYHNwY3A4eDVfcHJvYmVgLCBhbmQgYHNwY3A4eDVfcG9ydF9wcm9iZWAuIFRoZXNlIHNlZW0gdG8gYmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBpbnZvbHZlZC5cblxuVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpcyBhYm91dCBob3cgYHVzYl9kZXZpY2VfaWRgIGlzIGhhbmRsZWQgd2hlbiBwYXNzZWQgdG8gVVNCIGRyaXZlciBgcHJvYmVgIGZ1bmN0aW9ucy4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgY2hhbmdpbmcgaG93IGB1c2JfZGV2aWNlX2lkYCBpcyBhbGxvY2F0ZWQuIE5vdywgaW5zdGVhZCBvZiBhIHBlcnNpc3RlbnQgcG9pbnRlciwgaXQncyBiZWluZyBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrIHdpdGhpbiBgdXNiX3Byb2JlX2ludGVyZmFjZWAgYW5kIHBhc3NlZCBhcyBhIHRlbXBvcmFyeSBwb2ludGVyLiBUaGlzIGlzIGEgc3VidGxlIGJ1dCBwb3RlbnRpYWxseSBpbXBhY3RmdWwgY2hhbmdlLiBJdCBhZmZlY3RzIHRoZSBVU0IgY29yZSdzIG1hdGNoaW5nIGxvZ2ljLCBhbmQsIG1vcmUgaW1wb3J0YW50bHksIGl0IG1lYW5zIHNldmVyYWwgZHJpdmVycyBoYWQgdG8gYmUgdXBkYXRlZCB0byBhY2NvdW50IGZvciB0aGlzIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGBhdGg5a2AsIGB1c2J0bWNgLCBhbmQgYHNwY3A4eDVgLiBUaGV5IGhhZCB0byBiZSBhZGp1c3RlZCB0byBwcmV2ZW50IHN0b3JpbmcgdGhlIChub3cgaW52YWxpZCkgcG9pbnRlci5cblxuVGhpcyBjaGFuZ2UgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCBvcGVucyB1cCB0aGUgcG9zc2liaWxpdHkgb2YgdHJpZ2dlcmluZyBtZW1vcnkgZXJyb3JzLCBzcGVjaWZpY2FsbHkgdXNlLWFmdGVyLWZyZWUsIHRocm91Z2ggZnV6emluZyBVU0IgZGV2aWNlIGVudW1lcmF0aW9uLiBJIHRoaW5rIHRoZSBrZXkgaGVyZSBpcyB0aGF0IHdlIGNhbiB2ZXJpZnkgdGhlIHBhdGNoIGFuZCB0aGVzZSBkcml2ZXIgdXBkYXRlcyBieSBmdXp6aW5nIHRoZSBwcm9jZXNzLiBJZiB3ZSBjYW4gdHJpZ2dlciB0aGVzZSBjb2RlIHBhdGhzIHdpdGggZnV6emluZywgd2UgY2FuIHZlcmlmeSB0aGF0IHRoZXJlIGFyZW4ndCBhbnkgbWVtb3J5IGlzc3VlcyBhcyBhIHJlc3VsdCBvZiB0aGUgY2hhbmdlLlxuXG5BbHJpZ2h0LCBJJ20gZ29pbmcgdG8gY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4MDUsIk91dHB1dFRva2VucyI6MjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE3OjU5OjEzLjgzODYwNDk0OFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3MTAxNTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S19IVENcIixcbiAgICBcIlVTQl9UTUNcIixcbiAgICBcIlVTQl9TRVJJQUxcIixcbiAgICBcIlVTQl9TRVJJQUxfU1BDUDhYNVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVzYl9wcm9iZV9pbnRlcmZhY2VcIixcbiAgICBcInVzYl9tYXRjaF9keW5hbWljX2lkXCIsXG4gICAgXCJhdGg5a19oaWZfdXNiX3Byb2JlXCIsXG4gICAgXCJ1c2J0bWNfcHJvYmVcIixcbiAgICBcInNwY3A4eDVfcHJvYmVcIixcbiAgICBcInNwY3A4eDVfcG9ydF9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgaG93IGB1c2JfZGV2aWNlX2lkYCBpcyBwYXNzZWQgdG8gVVNCIGRyaXZlcnMnIGBwcm9iZWAgZnVuY3Rpb25zLiBJdCBpcyBub3cgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBpbiBgdXNiX3Byb2JlX2ludGVyZmFjZWAgYW5kIHBhc3NlZCBhcyBhIHRlbXBvcmFyeSBwb2ludGVyLCBpbnN0ZWFkIG9mIGEgcGVyc2lzdGVudCBwb2ludGVyLiBUaGlzIGFmZmVjdHMgVVNCIGNvcmUgbWF0Y2hpbmcgYW5kIHNldmVyYWwgVVNCIGRyaXZlcnMgKGBhdGg5a2AsIGB1c2J0bWNgLCBgc3BjcDh4NWApLCB3aGljaCBoYWQgdG8gYmUgdXBkYXRlZCB0byBzdG9wIHN0b3JpbmcgdGhlIHBvaW50ZXIuIEZ1enppbmcgVVNCIGRldmljZSBlbnVtZXJhdGlvbiBjYW4gdHJpZ2dlciB0aGVzZSBwYXRocyBhbmQgdmVyaWZ5IHRoYXQgbm8gdXNlLWFmdGVyLWZyZWUgb3Igb3RoZXIgbWVtb3J5IGlzc3VlcyBvY2N1ci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEg5S19IVENcIixcbiAgICBcIlVTQl9UTUNcIixcbiAgICBcIlVTQl9TRVJJQUxcIixcbiAgICBcIlVTQl9TRVJJQUxfU1BDUDhYNVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVzYl9wcm9iZV9pbnRlcmZhY2VcIixcbiAgICBcInVzYl9tYXRjaF9keW5hbWljX2lkXCIsXG4gICAgXCJhdGg5a19oaWZfdXNiX3Byb2JlXCIsXG4gICAgXCJ1c2J0bWNfcHJvYmVcIixcbiAgICBcInNwY3A4eDVfcHJvYmVcIixcbiAgICBcInNwY3A4eDVfcG9ydF9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgaG93IGB1c2JfZGV2aWNlX2lkYCBpcyBwYXNzZWQgdG8gVVNCIGRyaXZlcnMnIGBwcm9iZWAgZnVuY3Rpb25zLiBJdCBpcyBub3cgYWxsb2NhdGVkIG9uIHRoZSBzdGFjayBpbiBgdXNiX3Byb2JlX2ludGVyZmFjZWAgYW5kIHBhc3NlZCBhcyBhIHRlbXBvcmFyeSBwb2ludGVyLCBpbnN0ZWFkIG9mIGEgcGVyc2lzdGVudCBwb2ludGVyLiBUaGlzIGFmZmVjdHMgVVNCIGNvcmUgbWF0Y2hpbmcgYW5kIHNldmVyYWwgVVNCIGRyaXZlcnMgKGBhdGg5a2AsIGB1c2J0bWNgLCBgc3BjcDh4NWApLCB3aGljaCBoYWQgdG8gYmUgdXBkYXRlZCB0byBzdG9wIHN0b3JpbmcgdGhlIHBvaW50ZXIuIEZ1enppbmcgVVNCIGRldmljZSBlbnVtZXJhdGlvbiBjYW4gdHJpZ2dlciB0aGVzZSBwYXRocyBhbmQgdmVyaWZ5IHRoYXQgbm8gdXNlLWFmdGVyLWZyZWUgb3Igb3RoZXIgbWVtb3J5IGlzc3VlcyBvY2N1ci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow945f9[1] Phase: Succeeded StartedAt: 2026-06-30 18:00:40 +0000 UTC FinishedAt: 2026-06-30 18:00:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-30 18:00:40 +0000 UTC FinishedAt: 2026-06-30 18:00:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[2] Phase: Succeeded StartedAt: 2026-06-30 18:00:40 +0000 UTC FinishedAt: 2026-06-30 20:35:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-30 18:00:40 +0000 UTC FinishedAt: 2026-06-30 20:35:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-30 18:00:40 +0000 UTC FinishedAt: 2026-06-30 18:00:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-30 18:00:40 +0000 UTC FinishedAt: 2026-06-30 18:00:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow945f9/series-workflow945f9-convert-artifact-894656015/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-30 18:00:50 +0000 UTC FinishedAt: 2026-06-30 18:21:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-30 18:00:50 +0000 UTC FinishedAt: 2026-06-30 18:21:41 +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:*218142a9-885e-4e33-b23b-01589ee8cadd,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-workflow945f9/series-workflow945f9-convert-artifact-894656015/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": "1b450e7c-7712-42a7-bf3a-7c2744004f89", "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-workflow945f9/series-workflow945f9-build-action-3833678677/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-30 18:00:50 +0000 UTC FinishedAt: 2026-06-30 18:21:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*218142a9-885e-4e33-b23b-01589ee8cadd,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-workflow945f9/series-workflow945f9-convert-artifact-894656015/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": "1b450e7c-7712-42a7-bf3a-7c2744004f89", "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-workflow945f9/series-workflow945f9-build-action-3833678677/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-30 18:21:41 +0000 UTC FinishedAt: 2026-06-30 18:21:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-30 18:21:41 +0000 UTC FinishedAt: 2026-06-30 18:21:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-30 18:21:41 +0000 UTC FinishedAt: 2026-06-30 18:21:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-30 18:21:41 +0000 UTC FinishedAt: 2026-06-30 18:21:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow945f9/series-workflow945f9-convert-artifact-813446750/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-30 18:21:51 +0000 UTC FinishedAt: 2026-06-30 18:23:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-30 18:21:51 +0000 UTC FinishedAt: 2026-06-30 18:23:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1b450e7c-7712-42a7-bf3a-7c2744004f89,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-workflow945f9/series-workflow945f9-build-action-3833678677/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-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-30 18:23:43 +0000 UTC FinishedAt: 2026-06-30 18:23:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-30 18:23:43 +0000 UTC FinishedAt: 2026-06-30 18:23:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-30 18:23:43 +0000 UTC FinishedAt: 2026-06-30 18:46:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-30 18:23:43 +0000 UTC FinishedAt: 2026-06-30 18:46:08 +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:*218142a9-885e-4e33-b23b-01589ee8cadd,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-workflow945f9/series-workflow945f9-convert-artifact-813446750/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": "eb210468-753b-460c-8146-e06f1992094a", "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-workflow945f9/series-workflow945f9-build-action-324894514/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-30 18:23:43 +0000 UTC FinishedAt: 2026-06-30 18:45:26 +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:*218142a9-885e-4e33-b23b-01589ee8cadd,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-workflow945f9/series-workflow945f9-convert-artifact-813446750/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": "eb210468-753b-460c-8146-e06f1992094a", "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-workflow945f9/series-workflow945f9-build-action-324894514/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-30 18:46:08 +0000 UTC FinishedAt: 2026-06-30 18:46:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-30 18:46:08 +0000 UTC FinishedAt: 2026-06-30 18:46:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-30 18:46:08 +0000 UTC FinishedAt: 2026-06-30 18:48:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-30 18:46:08 +0000 UTC FinishedAt: 2026-06-30 18:47:50 +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:*eb210468-753b-460c-8146-e06f1992094a,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-workflow945f9/series-workflow945f9-build-action-324894514/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-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-30 18:48:00 +0000 UTC FinishedAt: 2026-06-30 20:35:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-30 18:48:00 +0000 UTC FinishedAt: 2026-06-30 20:35:15 +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":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"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:*1b450e7c-7712-42a7-bf3a-7c2744004f89,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*eb210468-753b-460c-8146-e06f1992094a,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-workflow945f9/series-workflow945f9-build-action-3833678677/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-workflow945f9/series-workflow945f9-build-action-324894514/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-30 18:48:00 +0000 UTC FinishedAt: 2026-06-30 18:48:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-30 18:48:00 +0000 UTC FinishedAt: 2026-06-30 18:48:08 +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":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"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-workflow945f9/series-workflow945f9-convert-artifact-3367092323/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-30 18:48:00 +0000 UTC FinishedAt: 2026-06-30 18:48:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-30 18:48:00 +0000 UTC FinishedAt: 2026-06-30 18:48:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-30 18:48:00 +0000 UTC FinishedAt: 2026-06-30 18:48:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-30 18:48:10 +0000 UTC FinishedAt: 2026-06-30 20:35:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow945f9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["usb_probe_interface","usb_match_dynamic_id","ath9k_hif_usb_probe","usbtmc_probe","spcp8x5_probe","spcp8x5_port_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7de6ae9e12207ec146f2f3f1e58d1a99317e88bc","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH9K_HTC","USB_TMC","USB_SERIAL","USB_SERIAL_SPCP8X5"],"series_id":"b4a8f308-37d5-4dc5-a05d-9a4924780423","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-30 18:48:10 +0000 UTC FinishedAt: 2026-06-30 20:35:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1b450e7c-7712-42a7-bf3a-7c2744004f89,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*eb210468-753b-460c-8146-e06f1992094a,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-workflow945f9/series-workflow945f9-build-action-3833678677/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-workflow945f9/series-workflow945f9-build-action-324894514/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-workflow945f9/series-workflow945f9-convert-artifact-3367092323/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,}