Name: series-workflowbf67c Phase: Succeeded StartedAt: 2026-07-08 16:30:50 +0000 UTC FinishedAt: 2026-07-08 21:24:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[0] Phase: Succeeded StartedAt: 2026-07-08 16:30:50 +0000 UTC FinishedAt: 2026-07-08 16:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[0].run-triage Phase: Succeeded StartedAt: 2026-07-08 16:30:50 +0000 UTC FinishedAt: 2026-07-08 16:53:40 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CHR_DEV_SG" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CHR_DEV_SG" ], "series_id": "5e65c586-b7bd-4bdf-9929-f80d4ea2c812" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "sg_build_indirect", "scatter_elem_sz_set" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NIUl9ERVZfU0cmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzZ19idWlsZF9pbmRpcmVjdCYjMzQ7LAogICAgJiMzNDtzY2F0dGVyX2VsZW1fc3pfc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyBhbmQgdmFsaWRhdGluZyB0aGUgYHNjYXR0ZXJfZWxlbV9zemAgbW9kdWxlIHBhcmFtZXRlciBhbmQgaG93IGl0IGlzIHVzZWQgaW4gYHNnX2J1aWxkX2luZGlyZWN0YCB0byBhbGxvY2F0ZSBzY2F0dGVyLWdhdGhlciBsaXN0cy4gVGhpcyBhZmZlY3RzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFNDU0kgZ2VuZXJpYyAoc2cpIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBgL2Rldi9zZypgIGRldmljZXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBzZ19idWlsZF9pbmRpcmVjdGAgYW5kIHRoZSBwYXJhbWV0ZXIgc2V0dGVyIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBtZW1vcnkgaXNzdWVzIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjE0YTM1YmY0YjhmODk5MDNjZjk0YmFhNTlkNzJhMmMxYzVlM2EyNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTY6NTI6NDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3NnLmMgYi9kcml2ZXJzL3Njc2kvc2cuY1xuaW5kZXggNzRjZDRlOGE2MWMyYTAuLjM3N2MzZTFkZWU3ZmY5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zY3NpL3NnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvc2NzaS9zZy5jXG5AQCAtOTIsNyAmIzQzOzkyLDYgQEAgc3RhdGljIGludCBkZWZfcmVzZXJ2ZWRfc2l6ZSA9IFNHX0RFRl9SRVNFUlZFRF9TSVpFO1xuIHN0YXRpYyBpbnQgc2dfYWxsb3dfZGlvID0gU0dfQUxMT1dfRElPX0RFRjtcbiBcbiBzdGF0aWMgaW50IHNjYXR0ZXJfZWxlbV9zeiA9IFNHX1NDQVRURVJfU1o7XG4tc3RhdGljIGludCBzY2F0dGVyX2VsZW1fc3pfcHJldiA9IFNHX1NDQVRURVJfU1o7XG4gXG4gI2RlZmluZSBTR19TRUNUT1JfU1ogNTEyXG4gXG5AQCAtMTYyMiw4ICYjNDM7MTYyMSwzNCBAQCBzZ19yZW1vdmVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmNsX2RldilcbiBcdGtyZWZfcHV0KFx1MDAyNnNkcC1cdTAwM2VkX3JlZiwgc2dfZGV2aWNlX2Rlc3Ryb3kpO1xuIH1cbiBcbi1tb2R1bGVfcGFyYW1fbmFtZWQoc2NhdHRlcl9lbGVtX3N6LCBzY2F0dGVyX2VsZW1fc3osIGludCwgU19JUlVHTyB8IFNfSVdVU1IpO1xuLW1vZHVsZV9wYXJhbV9uYW1lZChhbGxvd19kaW8sIHNnX2FsbG93X2RpbywgaW50LCBTX0lSVUdPIHwgU19JV1VTUik7XG4mIzQzO3N0YXRpYyBpbnQgc2NhdHRlcl9lbGVtX3N6X3NldChjb25zdCBjaGFyICp2YWwsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxuJiM0Mzt7XG4mIzQzO1x0aW50IHJldCwgbmV3X3ZhbCwgb3JkZXI7XG4mIzQzO1xuJiM0MztcdHJldCA9IGtzdHJ0b2ludCh2YWwsIDAsIFx1MDAyNm5ld192YWwpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRpZiAobmV3X3ZhbCBcdTAwM2M9IDApIHtcbiYjNDM7XHRcdHByX2VycihcJiMzNDtzZzogc2NhdHRlcl9lbGVtX3N6IG11c3QgYmUgcG9zaXRpdmUsIGdvdCAlZFxcblwmIzM0OywgbmV3X3ZhbCk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdG9yZGVyID0gZ2V0X29yZGVyKG5ld192YWwpO1xuJiM0MztcdGlmIChvcmRlciBcdTAwM2UgTUFYX1BBR0VfT1JERVIpIHtcbiYjNDM7XHRcdHByX2VycihcJiMzNDtzZzogc2NhdHRlcl9lbGVtX3N6IHRvbyBsYXJnZSAob3JkZXIgJWQgXHUwMDNlIE1BWF9QQUdFX09SREVSICVkKVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0b3JkZXIsIE1BWF9QQUdFX09SREVSKTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0c2NhdHRlcl9lbGVtX3N6ID0gMSBcdTAwM2NcdTAwM2MgKFBBR0VfU0hJRlQgJiM0Mzsgb3JkZXIpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzttb2R1bGVfcGFyYW1fY2FsbChzY2F0dGVyX2VsZW1fc3osIHNjYXR0ZXJfZWxlbV9zel9zZXQsIHBhcmFtX2dldF9pbnQsXG4mIzQzO1x0XHQgIFx1MDAyNnNjYXR0ZXJfZWxlbV9zeiwgMDY0NCk7XG4mIzQzO1xuJiM0Mzttb2R1bGVfcGFyYW1fbmFtZWQoYWxsb3dfZGlvLCBzZ19hbGxvd19kaW8sIGludCwgMDY0NCk7XG4gXG4gc3RhdGljIGludCBkZWZfcmVzZXJ2ZWRfc2l6ZV9zZXQoY29uc3QgY2hhciAqdmFsLCBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcClcbiB7XG5AQCAtMTY0OSw4ICYjNDM7MTY3NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtX29wcyBkZWZfcmVzZXJ2ZWRfc2l6ZV9vcHMgPSB7XG4gXHQuZ2V0XHQ9IHBhcmFtX2dldF9pbnQsXG4gfTtcbiBcbi1tb2R1bGVfcGFyYW1fY2IoZGVmX3Jlc2VydmVkX3NpemUsIFx1MDAyNmRlZl9yZXNlcnZlZF9zaXplX29wcywgXHUwMDI2ZGVmX3Jlc2VydmVkX3NpemUsXG4tXHRcdCAgIFNfSVJVR08gfCBTX0lXVVNSKTtcbiYjNDM7bW9kdWxlX3BhcmFtX2NiKGRlZl9yZXNlcnZlZF9zaXplLCBcdTAwMjZkZWZfcmVzZXJ2ZWRfc2l6ZV9vcHMsIFx1MDAyNmRlZl9yZXNlcnZlZF9zaXplLCAwNjQ0KTtcbiBcbiBNT0RVTEVfQVVUSE9SKFwmIzM0O0RvdWdsYXMgR2lsYmVydFwmIzM0Oyk7XG4gTU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O1NDU0kgZ2VuZXJpYyAoc2cpIGRyaXZlclwmIzM0Oyk7XG5AQCAtMTY2OCwxMSAmIzQzOzE2OTIsNiBAQCBpbml0X3NnKHZvaWQpXG4ge1xuIFx0aW50IHJjO1xuIFxuLVx0aWYgKHNjYXR0ZXJfZWxlbV9zeiBcdTAwM2MgUEFHRV9TSVpFKSB7XG4tXHRcdHNjYXR0ZXJfZWxlbV9zeiA9IFBBR0VfU0laRTtcbi1cdFx0c2NhdHRlcl9lbGVtX3N6X3ByZXYgPSBzY2F0dGVyX2VsZW1fc3o7XG4tXHR9XG4tXG4gXHRyYyA9IHJlZ2lzdGVyX2NocmRldl9yZWdpb24oTUtERVYoU0NTSV9HRU5FUklDX01BSk9SLCAwKSwgXG4gXHRcdFx0XHQgICAgU0dfTUFYX0RFVlMsIFwmIzM0O3NnXCYjMzQ7KTtcbiBcdGlmIChyYylcbkBAIC0xODU0LDkgJiM0MzsxODczLDEwIEBAIHNnX2J1aWxkX3NnYXQoU2dfc2NhdHRlcl9ob2xkICogc2NocCwgY29uc3QgU2dfZmQgKiBzZnAsIGludCB0YWJsZXNpemUpXG4gc3RhdGljIGludFxuIHNnX2J1aWxkX2luZGlyZWN0KFNnX3NjYXR0ZXJfaG9sZCAqIHNjaHAsIFNnX2ZkICogc2ZwLCBpbnQgYnVmZl9zaXplKVxuIHtcbi1cdGludCByZXRfc3ogPSAwLCBpLCBrLCByZW1fc3osIG51bSwgbXhfc2NfZWxlbXM7XG4mIzQzO1x0aW50IHJldF9zeiA9IDAsIGksIGssIHJlbV9zeiwgbXhfc2NfZWxlbXM7XG4gXHRpbnQgc2dfdGFibGVzaXplID0gc2ZwLVx1MDAzZXBhcmVudGRwLVx1MDAzZXNnX3RhYmxlc2l6ZTtcbiBcdGludCBibGtfc2l6ZSA9IGJ1ZmZfc2l6ZSwgb3JkZXI7XG4mIzQzO1x0aW50IGVsZW1fc3ogPSBzY2F0dGVyX2VsZW1fc3o7XG4gXHRnZnBfdCBnZnBfbWFzayA9IEdGUF9BVE9NSUMgfCBfX0dGUF9DT01QIHwgX19HRlBfTk9XQVJOIHwgX19HRlBfWkVSTztcbiBcbiBcdGlmIChibGtfc2l6ZSBcdTAwM2MgMClcbkBAIC0xODc0LDM5ICYjNDM7MTg5NCwxOSBAQCBzZ19idWlsZF9pbmRpcmVjdChTZ19zY2F0dGVyX2hvbGQgKiBzY2hwLCBTZ19mZCAqIHNmcCwgaW50IGJ1ZmZfc2l6ZSlcbiBcdGlmIChteF9zY19lbGVtcyBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIG14X3NjX2VsZW1zO1x0LyogbW9zdCBsaWtlbHkgLUVOT01FTSAqL1xuIFxuLVx0bnVtID0gc2NhdHRlcl9lbGVtX3N6O1xuLVx0aWYgKHVubGlrZWx5KG51bSAhPSBzY2F0dGVyX2VsZW1fc3pfcHJldikpIHtcbi1cdFx0aWYgKG51bSBcdTAwM2MgUEFHRV9TSVpFKSB7XG4tXHRcdFx0c2NhdHRlcl9lbGVtX3N6ID0gUEFHRV9TSVpFO1xuLVx0XHRcdHNjYXR0ZXJfZWxlbV9zel9wcmV2ID0gUEFHRV9TSVpFO1xuLVx0XHR9IGVsc2Vcbi1cdFx0XHRzY2F0dGVyX2VsZW1fc3pfcHJldiA9IG51bTtcbi1cdH1cbi1cbi1cdG9yZGVyID0gZ2V0X29yZGVyKG51bSk7XG4mIzQzO1x0b3JkZXIgPSBnZXRfb3JkZXIoZWxlbV9zeik7XG4gcmV0cnk6XG4gXHRyZXRfc3ogPSAxIFx1MDAzY1x1MDAzYyAoUEFHRV9TSElGVCAmIzQzOyBvcmRlcik7XG4gXG4gXHRmb3IgKGsgPSAwLCByZW1fc3ogPSBibGtfc2l6ZTsgcmVtX3N6IFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBrIFx1MDAzYyBteF9zY19lbGVtcztcbiBcdCAgICAgayYjNDM7JiM0MzssIHJlbV9zeiAtPSByZXRfc3opIHtcbi1cbi1cdFx0bnVtID0gKHJlbV9zeiBcdTAwM2Ugc2NhdHRlcl9lbGVtX3N6X3ByZXYpID9cbi1cdFx0XHRzY2F0dGVyX2VsZW1fc3pfcHJldiA6IHJlbV9zejtcbi1cbiBcdFx0c2NocC1cdTAwM2VwYWdlc1trXSA9IGFsbG9jX3BhZ2VzKGdmcF9tYXNrLCBvcmRlcik7XG4gXHRcdGlmICghc2NocC1cdTAwM2VwYWdlc1trXSlcbiBcdFx0XHRnb3RvIG91dDtcbiBcbi1cdFx0aWYgKG51bSA9PSBzY2F0dGVyX2VsZW1fc3pfcHJldikge1xuLVx0XHRcdGlmICh1bmxpa2VseShyZXRfc3ogXHUwMDNlIHNjYXR0ZXJfZWxlbV9zel9wcmV2KSkge1xuLVx0XHRcdFx0c2NhdHRlcl9lbGVtX3N6ID0gcmV0X3N6O1xuLVx0XHRcdFx0c2NhdHRlcl9lbGVtX3N6X3ByZXYgPSByZXRfc3o7XG4tXHRcdFx0fVxuLVx0XHR9XG4tXG4gXHRcdFNDU0lfTE9HX1RJTUVPVVQoNSwgc2dfcHJpbnRrKEtFUk5fSU5GTywgc2ZwLVx1MDAzZXBhcmVudGRwLFxuLVx0XHRcdFx0IFwmIzM0O3NnX2J1aWxkX2luZGlyZWN0OiBrPSVkLCBudW09JWQsIHJldF9zej0lZFxcblwmIzM0Oyxcbi1cdFx0XHRcdCBrLCBudW0sIHJldF9zeikpO1xuJiM0MztcdFx0XHRcdCBcJiMzNDslczogaz0lZCwgcmV0X3N6PSVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCBfX2Z1bmNfXywgaywgcmV0X3N6KSk7XG4gXHR9XHRcdC8qIGVuZCBvZiBmb3IgbG9vcCAqL1xuIFxuIFx0c2NocC1cdTAwM2VwYWdlX29yZGVyID0gb3JkZXI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0hSX0RFVl9TRyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NnX2J1aWxkX2luZGlyZWN0JiMzNDssCiAgICAmIzM0O3NjYXR0ZXJfZWxlbV9zel9zZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIGFuZCB2YWxpZGF0aW5nIHRoZSBgc2NhdHRlcl9lbGVtX3N6YCBtb2R1bGUgcGFyYW1ldGVyIGFuZCBob3cgaXQgaXMgdXNlZCBpbiBgc2dfYnVpbGRfaW5kaXJlY3RgIHRvIGFsbG9jYXRlIHNjYXR0ZXItZ2F0aGVyIGxpc3RzLiBUaGlzIGFmZmVjdHMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgU0NTSSBnZW5lcmljIChzZykgZHJpdmVyLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGAvZGV2L3NnKmAgZGV2aWNlcy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYHNnX2J1aWxkX2luZGlyZWN0YCBhbmQgdGhlIHBhcmFtZXRlciBzZXR0ZXIgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBpc3N1ZXMgb2NjdXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDYxNGEzNWJmNGI4Zjg5OTAzY2Y5NGJhYTU5ZDcyYTJjMWM1ZTNhMjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCA4IDE2OjUyOjQ2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3NnLmMgYi9kcml2ZXJzL3Njc2kvc2cuYwppbmRleCA3NGNkNGU4YTYxYzJhMC4uMzc3YzNlMWRlZTdmZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zZy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvc2NzaS9zZy5jCkBAIC05Miw3ICYjNDM7OTIsNiBAQCBzdGF0aWMgaW50IGRlZl9yZXNlcnZlZF9zaXplID0gU0dfREVGX1JFU0VSVkVEX1NJWkU7CiBzdGF0aWMgaW50IHNnX2FsbG93X2RpbyA9IFNHX0FMTE9XX0RJT19ERUY7CiAKIHN0YXRpYyBpbnQgc2NhdHRlcl9lbGVtX3N6ID0gU0dfU0NBVFRFUl9TWjsKLXN0YXRpYyBpbnQgc2NhdHRlcl9lbGVtX3N6X3ByZXYgPSBTR19TQ0FUVEVSX1NaOwogCiAjZGVmaW5lIFNHX1NFQ1RPUl9TWiA1MTIKIApAQCAtMTYyMiw4ICYjNDM7MTYyMSwzNCBAQCBzZ19yZW1vdmVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmNsX2RldikKIAlrcmVmX3B1dCgmYW1wO3NkcC0mZ3Q7ZF9yZWYsIHNnX2RldmljZV9kZXN0cm95KTsKIH0KIAotbW9kdWxlX3BhcmFtX25hbWVkKHNjYXR0ZXJfZWxlbV9zeiwgc2NhdHRlcl9lbGVtX3N6LCBpbnQsIFNfSVJVR08gfCBTX0lXVVNSKTsKLW1vZHVsZV9wYXJhbV9uYW1lZChhbGxvd19kaW8sIHNnX2FsbG93X2RpbywgaW50LCBTX0lSVUdPIHwgU19JV1VTUik7CiYjNDM7c3RhdGljIGludCBzY2F0dGVyX2VsZW1fc3pfc2V0KGNvbnN0IGNoYXIgKnZhbCwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApCiYjNDM7ewomIzQzOwlpbnQgcmV0LCBuZXdfdmFsLCBvcmRlcjsKJiM0MzsKJiM0MzsJcmV0ID0ga3N0cnRvaW50KHZhbCwgMCwgJmFtcDtuZXdfdmFsKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CWlmIChuZXdfdmFsICZsdDs9IDApIHsKJiM0MzsJCXByX2VycigmIzM0O3NnOiBzY2F0dGVyX2VsZW1fc3ogbXVzdCBiZSBwb3NpdGl2ZSwgZ290ICVkXG4mIzM0OywgbmV3X3ZhbCk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwomIzQzOwlvcmRlciA9IGdldF9vcmRlcihuZXdfdmFsKTsKJiM0MzsJaWYgKG9yZGVyICZndDsgTUFYX1BBR0VfT1JERVIpIHsKJiM0MzsJCXByX2VycigmIzM0O3NnOiBzY2F0dGVyX2VsZW1fc3ogdG9vIGxhcmdlIChvcmRlciAlZCAmZ3Q7IE1BWF9QQUdFX09SREVSICVkKVxuJiMzNDssCiYjNDM7CQkJb3JkZXIsIE1BWF9QQUdFX09SREVSKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiYjNDM7CXNjYXR0ZXJfZWxlbV9zeiA9IDEgJmx0OyZsdDsgKFBBR0VfU0hJRlQgJiM0Mzsgb3JkZXIpOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7bW9kdWxlX3BhcmFtX2NhbGwoc2NhdHRlcl9lbGVtX3N6LCBzY2F0dGVyX2VsZW1fc3pfc2V0LCBwYXJhbV9nZXRfaW50LAomIzQzOwkJICAmYW1wO3NjYXR0ZXJfZWxlbV9zeiwgMDY0NCk7CiYjNDM7CiYjNDM7bW9kdWxlX3BhcmFtX25hbWVkKGFsbG93X2Rpbywgc2dfYWxsb3dfZGlvLCBpbnQsIDA2NDQpOwogCiBzdGF0aWMgaW50IGRlZl9yZXNlcnZlZF9zaXplX3NldChjb25zdCBjaGFyICp2YWwsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKQogewpAQCAtMTY0OSw4ICYjNDM7MTY3NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtX29wcyBkZWZfcmVzZXJ2ZWRfc2l6ZV9vcHMgPSB7CiAJLmdldAk9IHBhcmFtX2dldF9pbnQsCiB9OwogCi1tb2R1bGVfcGFyYW1fY2IoZGVmX3Jlc2VydmVkX3NpemUsICZhbXA7ZGVmX3Jlc2VydmVkX3NpemVfb3BzLCAmYW1wO2RlZl9yZXNlcnZlZF9zaXplLAotCQkgICBTX0lSVUdPIHwgU19JV1VTUik7CiYjNDM7bW9kdWxlX3BhcmFtX2NiKGRlZl9yZXNlcnZlZF9zaXplLCAmYW1wO2RlZl9yZXNlcnZlZF9zaXplX29wcywgJmFtcDtkZWZfcmVzZXJ2ZWRfc2l6ZSwgMDY0NCk7CiAKIE1PRFVMRV9BVVRIT1IoJiMzNDtEb3VnbGFzIEdpbGJlcnQmIzM0Oyk7CiBNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtTQ1NJIGdlbmVyaWMgKHNnKSBkcml2ZXImIzM0Oyk7CkBAIC0xNjY4LDExICYjNDM7MTY5Miw2IEBAIGluaXRfc2codm9pZCkKIHsKIAlpbnQgcmM7CiAKLQlpZiAoc2NhdHRlcl9lbGVtX3N6ICZsdDsgUEFHRV9TSVpFKSB7Ci0JCXNjYXR0ZXJfZWxlbV9zeiA9IFBBR0VfU0laRTsKLQkJc2NhdHRlcl9lbGVtX3N6X3ByZXYgPSBzY2F0dGVyX2VsZW1fc3o7Ci0JfQotCiAJcmMgPSByZWdpc3Rlcl9jaHJkZXZfcmVnaW9uKE1LREVWKFNDU0lfR0VORVJJQ19NQUpPUiwgMCksIAogCQkJCSAgICBTR19NQVhfREVWUywgJiMzNDtzZyYjMzQ7KTsKIAlpZiAocmMpCkBAIC0xODU0LDkgJiM0MzsxODczLDEwIEBAIHNnX2J1aWxkX3NnYXQoU2dfc2NhdHRlcl9ob2xkICogc2NocCwgY29uc3QgU2dfZmQgKiBzZnAsIGludCB0YWJsZXNpemUpCiBzdGF0aWMgaW50CiBzZ19idWlsZF9pbmRpcmVjdChTZ19zY2F0dGVyX2hvbGQgKiBzY2hwLCBTZ19mZCAqIHNmcCwgaW50IGJ1ZmZfc2l6ZSkKIHsKLQlpbnQgcmV0X3N6ID0gMCwgaSwgaywgcmVtX3N6LCBudW0sIG14X3NjX2VsZW1zOwomIzQzOwlpbnQgcmV0X3N6ID0gMCwgaSwgaywgcmVtX3N6LCBteF9zY19lbGVtczsKIAlpbnQgc2dfdGFibGVzaXplID0gc2ZwLSZndDtwYXJlbnRkcC0mZ3Q7c2dfdGFibGVzaXplOwogCWludCBibGtfc2l6ZSA9IGJ1ZmZfc2l6ZSwgb3JkZXI7CiYjNDM7CWludCBlbGVtX3N6ID0gc2NhdHRlcl9lbGVtX3N6OwogCWdmcF90IGdmcF9tYXNrID0gR0ZQX0FUT01JQyB8IF9fR0ZQX0NPTVAgfCBfX0dGUF9OT1dBUk4gfCBfX0dGUF9aRVJPOwogCiAJaWYgKGJsa19zaXplICZsdDsgMCkKQEAgLTE4NzQsMzkgJiM0MzsxODk0LDE5IEBAIHNnX2J1aWxkX2luZGlyZWN0KFNnX3NjYXR0ZXJfaG9sZCAqIHNjaHAsIFNnX2ZkICogc2ZwLCBpbnQgYnVmZl9zaXplKQogCWlmIChteF9zY19lbGVtcyAmbHQ7IDApCiAJCXJldHVybiBteF9zY19lbGVtczsJLyogbW9zdCBsaWtlbHkgLUVOT01FTSAqLwogCi0JbnVtID0gc2NhdHRlcl9lbGVtX3N6OwotCWlmICh1bmxpa2VseShudW0gIT0gc2NhdHRlcl9lbGVtX3N6X3ByZXYpKSB7Ci0JCWlmIChudW0gJmx0OyBQQUdFX1NJWkUpIHsKLQkJCXNjYXR0ZXJfZWxlbV9zeiA9IFBBR0VfU0laRTsKLQkJCXNjYXR0ZXJfZWxlbV9zel9wcmV2ID0gUEFHRV9TSVpFOwotCQl9IGVsc2UKLQkJCXNjYXR0ZXJfZWxlbV9zel9wcmV2ID0gbnVtOwotCX0KLQotCW9yZGVyID0gZ2V0X29yZGVyKG51bSk7CiYjNDM7CW9yZGVyID0gZ2V0X29yZGVyKGVsZW1fc3opOwogcmV0cnk6CiAJcmV0X3N6ID0gMSAmbHQ7Jmx0OyAoUEFHRV9TSElGVCAmIzQzOyBvcmRlcik7CiAKIAlmb3IgKGsgPSAwLCByZW1fc3ogPSBibGtfc2l6ZTsgcmVtX3N6ICZndDsgMCAmYW1wOyZhbXA7IGsgJmx0OyBteF9zY19lbGVtczsKIAkgICAgIGsmIzQzOyYjNDM7LCByZW1fc3ogLT0gcmV0X3N6KSB7Ci0KLQkJbnVtID0gKHJlbV9zeiAmZ3Q7IHNjYXR0ZXJfZWxlbV9zel9wcmV2KSA/Ci0JCQlzY2F0dGVyX2VsZW1fc3pfcHJldiA6IHJlbV9zejsKLQogCQlzY2hwLSZndDtwYWdlc1trXSA9IGFsbG9jX3BhZ2VzKGdmcF9tYXNrLCBvcmRlcik7CiAJCWlmICghc2NocC0mZ3Q7cGFnZXNba10pCiAJCQlnb3RvIG91dDsKIAotCQlpZiAobnVtID09IHNjYXR0ZXJfZWxlbV9zel9wcmV2KSB7Ci0JCQlpZiAodW5saWtlbHkocmV0X3N6ICZndDsgc2NhdHRlcl9lbGVtX3N6X3ByZXYpKSB7Ci0JCQkJc2NhdHRlcl9lbGVtX3N6ID0gcmV0X3N6OwotCQkJCXNjYXR0ZXJfZWxlbV9zel9wcmV2ID0gcmV0X3N6OwotCQkJfQotCQl9Ci0KIAkJU0NTSV9MT0dfVElNRU9VVCg1LCBzZ19wcmludGsoS0VSTl9JTkZPLCBzZnAtJmd0O3BhcmVudGRwLAotCQkJCSAmIzM0O3NnX2J1aWxkX2luZGlyZWN0OiBrPSVkLCBudW09JWQsIHJldF9zej0lZFxuJiMzNDssCi0JCQkJIGssIG51bSwgcmV0X3N6KSk7CiYjNDM7CQkJCSAmIzM0OyVzOiBrPSVkLCByZXRfc3o9JWRcbiYjMzQ7LAomIzQzOwkJCQkgX19mdW5jX18sIGssIHJldF9zeikpOwogCX0JCS8qIGVuZCBvZiBmb3IgbG9vcCAqLwogCiAJc2NocC0mZ3Q7cGFnZV9vcmRlciA9IG9yZGVyOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzM4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIFNHIERyaXZlcjogQSBDbG9zZXIgTG9vayoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdHdlYWtpbmcgdGhlIGBkcml2ZXJzL3Njc2kvc2cuY2AgY29kZS4gSXQmIzM5O3MgZm9jdXNlZCBvbiBob3cgdGhlIGBzY2F0dGVyX2VsZW1fc3pgIG1vZHVsZSBwYXJhbWV0ZXIgd29ya3MuIEkgc2VlIHRoZXkmIzM5O3ZlIGFkZGVkIGEgYHNjYXR0ZXJfZWxlbV9zel9zZXRgIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIHRoZSBwYXJhbWV0ZXIgd2hlbiBpdCYjMzk7cyBjaGFuZ2VkLiBTbWFydCBtb3ZlIOKAkyBnb3R0YSBrZWVwIHRob3NlIHBhcmFtZXRlcnMgaW4gY2hlY2suCgpUaGUgbW9zdCBpbnRlcmVzdGluZyBwYXJ0IGlzIHRoZSBjaGFuZ2UgdG8gYHNnX2J1aWxkX2luZGlyZWN0YC4gVGhleSYjMzk7dmUgcmVtb3ZlZCB0aGUgbG9jYWwgdmFsaWRhdGlvbiBvZiBgc2NhdHRlcl9lbGVtX3N6X3ByZXZgLCBhbmQgYXJlIG5vdyByZWx5aW5nIG9uIHRoZSB2YWxpZGF0ZWQgYHNjYXR0ZXJfZWxlbV9zemAgZGlyZWN0bHkuIFRoaXMgaXMgYSBzaWduaWZpY2FudCBsb2dpYyBzaGlmdCBpbiB0aGF0IGZ1bmN0aW9uLgoKTXkgaW5pdGlhbCB0aG91Z2h0PyBBYnNvbHV0ZWx5LCB0aGlzIHdhcnJhbnRzIGZ1enppbmchIGBzZ19idWlsZF9pbmRpcmVjdGAgaXMgYSBrZXkgZnVuY3Rpb24gaW4gY29uc3RydWN0aW5nIHRob3NlIHNjYXR0ZXItZ2F0aGVyIGxpc3RzIGZvciBTQ1NJIGdlbmVyaWMgcmVxdWVzdHMuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgYHNnYCBkcml2ZXIg4oCTIHRoaW5rIGBpb2N0bChTR19JTylgIGFuZCBgd3JpdGUoKWAgY2FsbHMgdG8gYC9kZXYvc2cqYCDigJMgbWFrZXMgaXQgYSBwZXJmZWN0IHRhcmdldC4gV2UmIzM5O3JlIHBvdGVudGlhbGx5IGxvb2tpbmcgYXQgbWVtb3J5IGNvcnJ1cHRpb24sIGJ1ZmZlciBvdmVyZmxvd3MsIG9yIGV2ZW4gZGF0YSB2YWxpZGF0aW9uIGlzc3VlcyBpZiB0aGV5IG1pc3NlZCBzb21ldGhpbmcuCgpOb3csIGxldCYjMzk7cyB0YWtlIGEgZGVlcCBkaXZlLiBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgYm90aCBgc2dfYnVpbGRfaW5kaXJlY3RgIGFuZCB0aGlzIG5ldyBgc2NhdHRlcl9lbGVtX3N6X3NldGAgZnVuY3Rpb24uIFRoZSBtb2R1bGUgcGFyYW1ldGVyIHNldHRlciwgYHNjYXR0ZXJfZWxlbV9zel9zZXRgLCBpcyB3aGVyZSB0aGUgdmFsaWRhdGlvbiBpcyBoYXBwZW5pbmcsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG5ldyBjb2RlIGludGVyYWN0cyB3aXRoIHRoZSBleGlzdGluZyBsb2dpYy4KCkkgc2hvdWxkIHZlcmlmeSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIHRvby4gTG9va3MgbGlrZSBgZHJpdmVycy9zY3NpL3NnLmNgIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19DSFJfREVWX1NHYCBpcyBlbmFibGVkLiBUaW1lIHRvIG1ha2Ugc3VyZSBteSBmdXp6aW5nIGVudmlyb25tZW50IGhhcyB0aGlzIGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2dcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zY3NpL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc2NzaS9NYWtlZmlsZT0xNDk9b2JqLSQoQ09ORklHX0JMS19ERVZfU1IpXHQmIzQzOz0gc3JfbW9kLm9cbmRyaXZlcnMvc2NzaS9NYWtlZmlsZToxNTA6b2JqLSQoQ09ORklHX0NIUl9ERVZfU0cpXHQmIzQzOz0gc2cub1xuZHJpdmVycy9zY3NpL01ha2VmaWxlLTE1MS1vYmotJChDT05GSUdfQ0hSX0RFVl9TQ0gpXHQmIzQzOz0gY2gub1xuLS1cbmRyaXZlcnMvc2NzaS9NYWtlZmlsZT0xNjk9c2NzaV9tb2QtJChDT05GSUdfU0NTSV9ESClcdCYjNDM7PSBzY3NpX2RoLm9cbmRyaXZlcnMvc2NzaS9NYWtlZmlsZToxNzA6c2NzaV9tb2QtJChDT05GSUdfQkxLX0RFVl9CU0cpXHQmIzQzOz0gc2NzaV9ic2cub1xuZHJpdmVycy9zY3NpL01ha2VmaWxlLTE3MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjIwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIFNjYXR0ZXItR2F0aGVyIERldmljZSBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIEkgc2VlIHRoZSBwcm9qZWN0IHJlcXVpcmVzIGBDT05GSUdfQ0hSX0RFVl9TR2AuIFRoYXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzb21lIHNjYXR0ZXItZ2F0aGVyIGZ1bmN0aW9uYWxpdHksIGxpa2VseSBpbnZvbHZpbmcgY2hhcmFjdGVyIGRldmljZXMuIE15IG5leHQgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgZmxvdyDigJMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYHNnX2J1aWxkX2luZGlyZWN0YCBpcyB0cnVseSBiZWluZyB1dGlsaXplZCBpbiB0aGUgc3lzdGVtLiBXaGVyZSBpcyBpdCBiZWluZyBjYWxsZWQgZnJvbT8gSSBrbm93IGBzZ19idWlsZF9zZ2F0YCBpcyBhIGNvbW1vbiBlbnRyeSBwb2ludCwgb3Igc29tZXRoaW5nIHZlcnkgc2ltaWxhciwgc28gSSBzaG91bGQgYmUgYWJsZSB0byBnZXQgYSBxdWljayBoYW5kbGUgb24gd2hldGhlciBpdCYjMzk7cyBvbiB0aGUgY2FsbCBzdGFjay4gTGV0JiMzOTtzIHNlZSBpZiB0aGUgY29kZSBjb25maXJtcyB0aGlzIHJlYWNoYWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZ19idWlsZF9pbmRpcmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc2NzaS9zZy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc2NzaS9zZy5jPTE4Mj1zdGF0aWMgaW50IHNnX2ZpbmlzaF9yZW1fcmVxKFNnX3JlcXVlc3QgKiBzcnApO1xuZHJpdmVycy9zY3NpL3NnLmM6MTgzOnN0YXRpYyBpbnQgc2dfYnVpbGRfaW5kaXJlY3QoU2dfc2NhdHRlcl9ob2xkICogc2NocCwgU2dfZmQgKiBzZnAsIGludCBidWZmX3NpemUpO1xuZHJpdmVycy9zY3NpL3NnLmMtMTg0LXN0YXRpYyBzc2l6ZV90IHNnX25ld19yZWFkKFNnX2ZkICogc2ZwLCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY291bnQsXG4tLVxuZHJpdmVycy9zY3NpL3NnLmM9MTczMT1zZ19zdGFydF9yZXEoU2dfcmVxdWVzdCAqc3JwLCB1bnNpZ25lZCBjaGFyICpjbWQpXG4tLVxuZHJpdmVycy9zY3NpL3NnLmMtMTgwMi1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvc2NzaS9zZy5jOjE4MDM6XHRcdFx0cmVzID0gc2dfYnVpbGRfaW5kaXJlY3QocmVxX3NjaHAsIHNmcCwgZHhmZXJfbGVuKTtcbmRyaXZlcnMvc2NzaS9zZy5jLTE4MDQtXHRcdFx0aWYgKHJlcykge1xuLS1cbmRyaXZlcnMvc2NzaS9zZy5jPTE4NzM9c3RhdGljIGludFxuZHJpdmVycy9zY3NpL3NnLmM6MTg3NDpzZ19idWlsZF9pbmRpcmVjdChTZ19zY2F0dGVyX2hvbGQgKiBzY2hwLCBTZ19mZCAqIHNmcCwgaW50IGJ1ZmZfc2l6ZSlcbmRyaXZlcnMvc2NzaS9zZy5jLTE4NzUte1xuLS1cbmRyaXZlcnMvc2NzaS9zZy5jLTE4ODgtXHRTQ1NJX0xPR19USU1FT1VUKDQsIHNnX3ByaW50ayhLRVJOX0lORk8sIHNmcC1cdTAwM2VwYXJlbnRkcCxcbmRyaXZlcnMvc2NzaS9zZy5jOjE4ODk6XHRcdFwmIzM0O3NnX2J1aWxkX2luZGlyZWN0OiBidWZmX3NpemU9JWQsIGJsa19zaXplPSVkXFxuXCYjMzQ7LFxuZHJpdmVycy9zY3NpL3NnLmMtMTg5MC1cdFx0YnVmZl9zaXplLCBibGtfc2l6ZSkpO1xuLS1cbmRyaXZlcnMvc2NzaS9zZy5jLTE5MTQtXHRTQ1NJX0xPR19USU1FT1VUKDUsIHNnX3ByaW50ayhLRVJOX0lORk8sIHNmcC1cdTAwM2VwYXJlbnRkcCxcbmRyaXZlcnMvc2NzaS9zZy5jOjE5MTU6XHRcdFx0IFwmIzM0O3NnX2J1aWxkX2luZGlyZWN0OiBrX3VzZV9zZz0lZCwgcmVtX3N6PSVkXFxuXCYjMzQ7LFxuZHJpdmVycy9zY3NpL3NnLmMtMTkxNi1cdFx0XHQgaywgcmVtX3N6KSk7XG4tLVxuZHJpdmVycy9zY3NpL3NnLmM9MTk4OT1zZ19idWlsZF9yZXNlcnZlKFNnX2ZkICogc2ZwLCBpbnQgcmVxX3NpemUpXG4tLVxuZHJpdmVycy9zY3NpL3NnLmMtMTk5Ny1cdFx0XHRyZXFfc2l6ZSA9IFBBR0VfU0laRTtcbmRyaXZlcnMvc2NzaS9zZy5jOjE5OTg6XHRcdGlmICgwID09IHNnX2J1aWxkX2luZGlyZWN0KHNjaHAsIHNmcCwgcmVxX3NpemUpKVxuZHJpdmVycy9zY3NpL3NnLmMtMTk5OS1cdFx0XHRyZXR1cm47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA5OAoJCQkJCQkJb3V0cHV0OiAxNDkKCQkJCQkJCXRob3VnaHRzOiAzMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFNDU0kgR2VuZXJpYyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgU0NTSSBnZW5lcmljIGRyaXZlciwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgcHJldHR5IGltcG9ydGFudC4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyAqZGVmaW5pdGVseSogc29tZXRoaW5nIHdlIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0bywgYXMgaXQmIzM5O3MgZGlyZWN0bHkgaW1wYWN0aW5nIGNvcmUgZnVuY3Rpb25hbGl0eSBhY2Nlc3NpYmxlIHZpYSBgL2Rldi9zZypgIGRldmljZXMuIEl0IGxvb2tzIGxpa2UgYHNnX2J1aWxkX2luZGlyZWN0YCBpcyBhIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbiwgYXMgaXQmIzM5O3MgdGhlIHRhcmdldCBvZiB0aGUgY2hhbmdlcy4gSSBjYW4gc2VlIHRoYXQgaXQmIzM5O3MgY2FsbGVkIGZyb20gYm90aCBgc2dfc3RhcnRfcmVxYCBhbmQgYHNnX2J1aWxkX3Jlc2VydmVgLCBhbmQsIGluIHR1cm4sIGBzZ19zdGFydF9yZXFgIGl0c2VsZiBpcyBjYWxsZWQgYnkgYHNnX25ld193cml0ZWAgYW5kIGFsc28sIGltcG9ydGFudGx5LCB2aWEgYHNnX2lvY3RsYCBmb3IgYFNHX0lPYCByZXF1ZXN0cy4gVGhpcyBjb25maXJtcyB0aGF0IHRoZXNlIGNvZGUgcGF0aHMgYXJlIGxpdmUgYW5kIGNhbiBiZSB0ZXN0ZWQuCgpUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgYWJvdXQgbW9kaWZ5aW5nIGhvdyB3ZSBzZXQgYW5kIHZhbGlkYXRlIGBzY2F0dGVyX2VsZW1fc3pgLCBhIG1vZHVsZSBwYXJhbWV0ZXIsIGFuZCBob3cgdGhpcyBzaXplIHZhbHVlIGlzIHRoZW4gdXNlZCB3aXRoaW4gYHNnX2J1aWxkX2luZGlyZWN0YCB3aGVuIGFsbG9jYXRpbmcgc2NhdHRlci1nYXRoZXIgbGlzdHMuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCBgc2NhdHRlcl9lbGVtX3N6YCBpcyBhbHNvIGEgZm9jdXMgaGVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZnV6emluZyBmb2N1c2VzIG9uIHRob3NlLCBhcyB3ZWxsLgoKSSBjYW4gY29uZmlybSB0aGF0IGBzY2F0dGVyX2VsZW1fc3pfc2V0YCBpcyBhIHZhbGlkIHN5bWJvbCBhbmQgaXMsIGluIGZhY3QsIGEgc3RhdGljIGZ1bmN0aW9uIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoLiBUaGlzIGNvbmZpcm1zIEkgc2hvdWxkIGtlZXAgYW4gZXllIG9uIGl0LiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gaWYgYW55IG90aGVyIHJlbGV2YW50IGZ1bmN0aW9ucyBhcmUgaW1wYWN0ZWQuIE9rYXksIGBzZ19yZW1vdmVfZGV2aWNlYCBhbmQgYGRlZl9yZXNlcnZlZF9zaXplX3NldGAgYXJlIHVudG91Y2hlZCwgYWx0aG91Z2ggdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgY29udGV4dC4gYGluaXRfc2dgIGlzIG1vZGlmaWVkIChzcGVjaWZpY2FsbHksIHNvbWUgbG9naWMgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIGl0KS4KCkFscmlnaHQsIHNvIHRoZSBtYWpvciB0YXJnZXRzIGZvciBmdXp6aW5nIGFuZCB0ZXN0aW5nIGFyZSBgc2dfYnVpbGRfaW5kaXJlY3RgIGFuZCBgc2NhdHRlcl9lbGVtX3N6X3NldGAuIEl0JiMzOTtzIGEgaGlnaC1wcmlvcml0eSBpdGVtIGdpdmVuIGl0JiMzOTtzIGZ1bmRhbWVudGFsIHRvIHNnIGRyaXZlciBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gc2V0IHRob3NlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NIUl9ERVZfU0cmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzZ19idWlsZF9pbmRpcmVjdCYjMzQ7LAogICAgJiMzNDtzY2F0dGVyX2VsZW1fc3pfc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyBhbmQgdmFsaWRhdGluZyB0aGUgYHNjYXR0ZXJfZWxlbV9zemAgbW9kdWxlIHBhcmFtZXRlciBhbmQgaG93IGl0IGlzIHVzZWQgaW4gYHNnX2J1aWxkX2luZGlyZWN0YCB0byBhbGxvY2F0ZSBzY2F0dGVyLWdhdGhlciBsaXN0cy4gVGhpcyBhZmZlY3RzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFNDU0kgZ2VuZXJpYyAoc2cpIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBgL2Rldi9zZypgIGRldmljZXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBzZ19idWlsZF9pbmRpcmVjdGAgYW5kIHRoZSBwYXJhbWV0ZXIgc2V0dGVyIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBtZW1vcnkgaXNzdWVzIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDSFJfREVWX1NHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2dfYnVpbGRfaW5kaXJlY3QmIzM0OywKICAgICYjMzQ7c2NhdHRlcl9lbGVtX3N6X3NldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNldHRpbmcgYW5kIHZhbGlkYXRpbmcgdGhlIGBzY2F0dGVyX2VsZW1fc3pgIG1vZHVsZSBwYXJhbWV0ZXIgYW5kIGhvdyBpdCBpcyB1c2VkIGluIGBzZ19idWlsZF9pbmRpcmVjdGAgdG8gYWxsb2NhdGUgc2NhdHRlci1nYXRoZXIgbGlzdHMuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBTQ1NJIGdlbmVyaWMgKHNnKSBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYC9kZXYvc2cqYCBkZXZpY2VzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBgc2dfYnVpbGRfaW5kaXJlY3RgIGFuZCB0aGUgcGFyYW1ldGVyIHNldHRlciB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbWVtb3J5IGlzc3VlcyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUyOjQ4LjA4NzMyNzYwNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NjMwOTQ5MTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNIUl9ERVZfU0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzZ19idWlsZF9pbmRpcmVjdFwiLFxuICAgIFwic2NhdHRlcl9lbGVtX3N6X3NldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyBhbmQgdmFsaWRhdGluZyB0aGUgYHNjYXR0ZXJfZWxlbV9zemAgbW9kdWxlIHBhcmFtZXRlciBhbmQgaG93IGl0IGlzIHVzZWQgaW4gYHNnX2J1aWxkX2luZGlyZWN0YCB0byBhbGxvY2F0ZSBzY2F0dGVyLWdhdGhlciBsaXN0cy4gVGhpcyBhZmZlY3RzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFNDU0kgZ2VuZXJpYyAoc2cpIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBgL2Rldi9zZypgIGRldmljZXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBzZ19idWlsZF9pbmRpcmVjdGAgYW5kIHRoZSBwYXJhbWV0ZXIgc2V0dGVyIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBtZW1vcnkgaXNzdWVzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1Mjo0OC4wODczNDA3NDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNTQzNjY3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDYxNGEzNWJmNGI4Zjg5OTAzY2Y5NGJhYTU5ZDcyYTJjMWM1ZTNhMjZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgOCAxNjo1Mjo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2cuYyBiL2RyaXZlcnMvc2NzaS9zZy5jXFxuaW5kZXggNzRjZDRlOGE2MWMyYTAuLjM3N2MzZTFkZWU3ZmY5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvc2NzaS9zZy5jXFxuKysrIGIvZHJpdmVycy9zY3NpL3NnLmNcXG5AQCAtOTIsNyArOTIsNiBAQCBzdGF0aWMgaW50IGRlZl9yZXNlcnZlZF9zaXplID0gU0dfREVGX1JFU0VSVkVEX1NJWkU7XFxuIHN0YXRpYyBpbnQgc2dfYWxsb3dfZGlvID0gU0dfQUxMT1dfRElPX0RFRjtcXG4gXFxuIHN0YXRpYyBpbnQgc2NhdHRlcl9lbGVtX3N6ID0gU0dfU0NBVFRFUl9TWjtcXG4tc3RhdGljIGludCBzY2F0dGVyX2VsZW1fc3pfcHJldiA9IFNHX1NDQVRURVJfU1o7XFxuIFxcbiAjZGVmaW5lIFNHX1NFQ1RPUl9TWiA1MTJcXG4gXFxuQEAgLTE2MjIsOCArMTYyMSwzNCBAQCBzZ19yZW1vdmVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmNsX2RldilcXG4gXFx0a3JlZl9wdXQoXFx1MDAyNnNkcC1cXHUwMDNlZF9yZWYsIHNnX2RldmljZV9kZXN0cm95KTtcXG4gfVxcbiBcXG4tbW9kdWxlX3BhcmFtX25hbWVkKHNjYXR0ZXJfZWxlbV9zeiwgc2NhdHRlcl9lbGVtX3N6LCBpbnQsIFNfSVJVR08gfCBTX0lXVVNSKTtcXG4tbW9kdWxlX3BhcmFtX25hbWVkKGFsbG93X2Rpbywgc2dfYWxsb3dfZGlvLCBpbnQsIFNfSVJVR08gfCBTX0lXVVNSKTtcXG4rc3RhdGljIGludCBzY2F0dGVyX2VsZW1fc3pfc2V0KGNvbnN0IGNoYXIgKnZhbCwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXFxuK3tcXG4rXFx0aW50IHJldCwgbmV3X3ZhbCwgb3JkZXI7XFxuK1xcbitcXHRyZXQgPSBrc3RydG9pbnQodmFsLCAwLCBcXHUwMDI2bmV3X3ZhbCk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRpZiAobmV3X3ZhbCBcXHUwMDNjPSAwKSB7XFxuK1xcdFxcdHByX2VycihcXFwic2c6IHNjYXR0ZXJfZWxlbV9zeiBtdXN0IGJlIHBvc2l0aXZlLCBnb3QgJWRcXFxcblxcXCIsIG5ld192YWwpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4rXFx0b3JkZXIgPSBnZXRfb3JkZXIobmV3X3ZhbCk7XFxuK1xcdGlmIChvcmRlciBcXHUwMDNlIE1BWF9QQUdFX09SREVSKSB7XFxuK1xcdFxcdHByX2VycihcXFwic2c6IHNjYXR0ZXJfZWxlbV9zeiB0b28gbGFyZ2UgKG9yZGVyICVkIFxcdTAwM2UgTUFYX1BBR0VfT1JERVIgJWQpXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRvcmRlciwgTUFYX1BBR0VfT1JERVIpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4rXFx0c2NhdHRlcl9lbGVtX3N6ID0gMSBcXHUwMDNjXFx1MDAzYyAoUEFHRV9TSElGVCArIG9yZGVyKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK21vZHVsZV9wYXJhbV9jYWxsKHNjYXR0ZXJfZWxlbV9zeiwgc2NhdHRlcl9lbGVtX3N6X3NldCwgcGFyYW1fZ2V0X2ludCxcXG4rXFx0XFx0ICBcXHUwMDI2c2NhdHRlcl9lbGVtX3N6LCAwNjQ0KTtcXG4rXFxuK21vZHVsZV9wYXJhbV9uYW1lZChhbGxvd19kaW8sIHNnX2FsbG93X2RpbywgaW50LCAwNjQ0KTtcXG4gXFxuIHN0YXRpYyBpbnQgZGVmX3Jlc2VydmVkX3NpemVfc2V0KGNvbnN0IGNoYXIgKnZhbCwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXFxuIHtcXG5AQCAtMTY0OSw4ICsxNjc0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGRlZl9yZXNlcnZlZF9zaXplX29wcyA9IHtcXG4gXFx0LmdldFxcdD0gcGFyYW1fZ2V0X2ludCxcXG4gfTtcXG4gXFxuLW1vZHVsZV9wYXJhbV9jYihkZWZfcmVzZXJ2ZWRfc2l6ZSwgXFx1MDAyNmRlZl9yZXNlcnZlZF9zaXplX29wcywgXFx1MDAyNmRlZl9yZXNlcnZlZF9zaXplLFxcbi1cXHRcXHQgICBTX0lSVUdPIHwgU19JV1VTUik7XFxuK21vZHVsZV9wYXJhbV9jYihkZWZfcmVzZXJ2ZWRfc2l6ZSwgXFx1MDAyNmRlZl9yZXNlcnZlZF9zaXplX29wcywgXFx1MDAyNmRlZl9yZXNlcnZlZF9zaXplLCAwNjQ0KTtcXG4gXFxuIE1PRFVMRV9BVVRIT1IoXFxcIkRvdWdsYXMgR2lsYmVydFxcXCIpO1xcbiBNT0RVTEVfREVTQ1JJUFRJT04oXFxcIlNDU0kgZ2VuZXJpYyAoc2cpIGRyaXZlclxcXCIpO1xcbkBAIC0xNjY4LDExICsxNjkyLDYgQEAgaW5pdF9zZyh2b2lkKVxcbiB7XFxuIFxcdGludCByYztcXG4gXFxuLVxcdGlmIChzY2F0dGVyX2VsZW1fc3ogXFx1MDAzYyBQQUdFX1NJWkUpIHtcXG4tXFx0XFx0c2NhdHRlcl9lbGVtX3N6ID0gUEFHRV9TSVpFO1xcbi1cXHRcXHRzY2F0dGVyX2VsZW1fc3pfcHJldiA9IHNjYXR0ZXJfZWxlbV9zejtcXG4tXFx0fVxcbi1cXG4gXFx0cmMgPSByZWdpc3Rlcl9jaHJkZXZfcmVnaW9uKE1LREVWKFNDU0lfR0VORVJJQ19NQUpPUiwgMCksIFxcbiBcXHRcXHRcXHRcXHQgICAgU0dfTUFYX0RFVlMsIFxcXCJzZ1xcXCIpO1xcbiBcXHRpZiAocmMpXFxuQEAgLTE4NTQsOSArMTg3MywxMCBAQCBzZ19idWlsZF9zZ2F0KFNnX3NjYXR0ZXJfaG9sZCAqIHNjaHAsIGNvbnN0IFNnX2ZkICogc2ZwLCBpbnQgdGFibGVzaXplKVxcbiBzdGF0aWMgaW50XFxuIHNnX2J1aWxkX2luZGlyZWN0KFNnX3NjYXR0ZXJfaG9sZCAqIHNjaHAsIFNnX2ZkICogc2ZwLCBpbnQgYnVmZl9zaXplKVxcbiB7XFxuLVxcdGludCByZXRfc3ogPSAwLCBpLCBrLCByZW1fc3osIG51bSwgbXhfc2NfZWxlbXM7XFxuK1xcdGludCByZXRfc3ogPSAwLCBpLCBrLCByZW1fc3osIG14X3NjX2VsZW1zO1xcbiBcXHRpbnQgc2dfdGFibGVzaXplID0gc2ZwLVxcdTAwM2VwYXJlbnRkcC1cXHUwMDNlc2dfdGFibGVzaXplO1xcbiBcXHRpbnQgYmxrX3NpemUgPSBidWZmX3NpemUsIG9yZGVyO1xcbitcXHRpbnQgZWxlbV9zeiA9IHNjYXR0ZXJfZWxlbV9zejtcXG4gXFx0Z2ZwX3QgZ2ZwX21hc2sgPSBHRlBfQVRPTUlDIHwgX19HRlBfQ09NUCB8IF9fR0ZQX05PV0FSTiB8IF9fR0ZQX1pFUk87XFxuIFxcbiBcXHRpZiAoYmxrX3NpemUgXFx1MDAzYyAwKVxcbkBAIC0xODc0LDM5ICsxODk0LDE5IEBAIHNnX2J1aWxkX2luZGlyZWN0KFNnX3NjYXR0ZXJfaG9sZCAqIHNjaHAsIFNnX2ZkICogc2ZwLCBpbnQgYnVmZl9zaXplKVxcbiBcXHRpZiAobXhfc2NfZWxlbXMgXFx1MDAzYyAwKVxcbiBcXHRcXHRyZXR1cm4gbXhfc2NfZWxlbXM7XFx0LyogbW9zdCBsaWtlbHkgLUVOT01FTSAqL1xcbiBcXG4tXFx0bnVtID0gc2NhdHRlcl9lbGVtX3N6O1xcbi1cXHRpZiAodW5saWtlbHkobnVtICE9IHNjYXR0ZXJfZWxlbV9zel9wcmV2KSkge1xcbi1cXHRcXHRpZiAobnVtIFxcdTAwM2MgUEFHRV9TSVpFKSB7XFxuLVxcdFxcdFxcdHNjYXR0ZXJfZWxlbV9zeiA9IFBBR0VfU0laRTtcXG4tXFx0XFx0XFx0c2NhdHRlcl9lbGVtX3N6X3ByZXYgPSBQQUdFX1NJWkU7XFxuLVxcdFxcdH0gZWxzZVxcbi1cXHRcXHRcXHRzY2F0dGVyX2VsZW1fc3pfcHJldiA9IG51bTtcXG4tXFx0fVxcbi1cXG4tXFx0b3JkZXIgPSBnZXRfb3JkZXIobnVtKTtcXG4rXFx0b3JkZXIgPSBnZXRfb3JkZXIoZWxlbV9zeik7XFxuIHJldHJ5OlxcbiBcXHRyZXRfc3ogPSAxIFxcdTAwM2NcXHUwMDNjIChQQUdFX1NISUZUICsgb3JkZXIpO1xcbiBcXG4gXFx0Zm9yIChrID0gMCwgcmVtX3N6ID0gYmxrX3NpemU7IHJlbV9zeiBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgayBcXHUwMDNjIG14X3NjX2VsZW1zO1xcbiBcXHQgICAgIGsrKywgcmVtX3N6IC09IHJldF9zeikge1xcbi1cXG4tXFx0XFx0bnVtID0gKHJlbV9zeiBcXHUwMDNlIHNjYXR0ZXJfZWxlbV9zel9wcmV2KSA/XFxuLVxcdFxcdFxcdHNjYXR0ZXJfZWxlbV9zel9wcmV2IDogcmVtX3N6O1xcbi1cXG4gXFx0XFx0c2NocC1cXHUwMDNlcGFnZXNba10gPSBhbGxvY19wYWdlcyhnZnBfbWFzaywgb3JkZXIpO1xcbiBcXHRcXHRpZiAoIXNjaHAtXFx1MDAzZXBhZ2VzW2tdKVxcbiBcXHRcXHRcXHRnb3RvIG91dDtcXG4gXFxuLVxcdFxcdGlmIChudW0gPT0gc2NhdHRlcl9lbGVtX3N6X3ByZXYpIHtcXG4tXFx0XFx0XFx0aWYgKHVubGlrZWx5KHJldF9zeiBcXHUwMDNlIHNjYXR0ZXJfZWxlbV9zel9wcmV2KSkge1xcbi1cXHRcXHRcXHRcXHRzY2F0dGVyX2VsZW1fc3ogPSByZXRfc3o7XFxuLVxcdFxcdFxcdFxcdHNjYXR0ZXJfZWxlbV9zel9wcmV2ID0gcmV0X3N6O1xcbi1cXHRcXHRcXHR9XFxuLVxcdFxcdH1cXG4tXFxuIFxcdFxcdFNDU0lfTE9HX1RJTUVPVVQoNSwgc2dfcHJpbnRrKEtFUk5fSU5GTywgc2ZwLVxcdTAwM2VwYXJlbnRkcCxcXG4tXFx0XFx0XFx0XFx0IFxcXCJzZ19idWlsZF9pbmRpcmVjdDogaz0lZCwgbnVtPSVkLCByZXRfc3o9JWRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdCBrLCBudW0sIHJldF9zeikpO1xcbitcXHRcXHRcXHRcXHQgXFxcIiVzOiBrPSVkLCByZXRfc3o9JWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCBfX2Z1bmNfXywgaywgcmV0X3N6KSk7XFxuIFxcdH1cXHRcXHQvKiBlbmQgb2YgZm9yIGxvb3AgKi9cXG4gXFxuIFxcdHNjaHAtXFx1MDAzZXBhZ2Vfb3JkZXIgPSBvcmRlcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTI6NDguODk3MTAzNDg3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODgyMTE1OTU5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDSFJfREVWX1NHXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2dfYnVpbGRfaW5kaXJlY3RcIixcbiAgICBcInNjYXR0ZXJfZWxlbV9zel9zZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNldHRpbmcgYW5kIHZhbGlkYXRpbmcgdGhlIGBzY2F0dGVyX2VsZW1fc3pgIG1vZHVsZSBwYXJhbWV0ZXIgYW5kIGhvdyBpdCBpcyB1c2VkIGluIGBzZ19idWlsZF9pbmRpcmVjdGAgdG8gYWxsb2NhdGUgc2NhdHRlci1nYXRoZXIgbGlzdHMuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBTQ1NJIGdlbmVyaWMgKHNnKSBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYC9kZXYvc2cqYCBkZXZpY2VzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBgc2dfYnVpbGRfaW5kaXJlY3RgIGFuZCB0aGUgcGFyYW1ldGVyIHNldHRlciB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbWVtb3J5IGlzc3VlcyBvY2N1ci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2MTRhMzViZjRiOGY4OTkwM2NmOTRiYWE1OWQ3MmEyYzFjNWUzYTI2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAxNjo1Mjo0NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zZy5jIGIvZHJpdmVycy9zY3NpL3NnLmNcbmluZGV4IDc0Y2Q0ZThhNjFjMmEwLi4zNzdjM2UxZGVlN2ZmOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvc2NzaS9zZy5jXG4rKysgYi9kcml2ZXJzL3Njc2kvc2cuY1xuQEAgLTkyLDcgKzkyLDYgQEAgc3RhdGljIGludCBkZWZfcmVzZXJ2ZWRfc2l6ZSA9IFNHX0RFRl9SRVNFUlZFRF9TSVpFO1xuIHN0YXRpYyBpbnQgc2dfYWxsb3dfZGlvID0gU0dfQUxMT1dfRElPX0RFRjtcbiBcbiBzdGF0aWMgaW50IHNjYXR0ZXJfZWxlbV9zeiA9IFNHX1NDQVRURVJfU1o7XG4tc3RhdGljIGludCBzY2F0dGVyX2VsZW1fc3pfcHJldiA9IFNHX1NDQVRURVJfU1o7XG4gXG4gI2RlZmluZSBTR19TRUNUT1JfU1ogNTEyXG4gXG5AQCAtMTYyMiw4ICsxNjIxLDM0IEBAIHNnX3JlbW92ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqY2xfZGV2KVxuIFx0a3JlZl9wdXQoXHUwMDI2c2RwLVx1MDAzZWRfcmVmLCBzZ19kZXZpY2VfZGVzdHJveSk7XG4gfVxuIFxuLW1vZHVsZV9wYXJhbV9uYW1lZChzY2F0dGVyX2VsZW1fc3osIHNjYXR0ZXJfZWxlbV9zeiwgaW50LCBTX0lSVUdPIHwgU19JV1VTUik7XG4tbW9kdWxlX3BhcmFtX25hbWVkKGFsbG93X2Rpbywgc2dfYWxsb3dfZGlvLCBpbnQsIFNfSVJVR08gfCBTX0lXVVNSKTtcbitzdGF0aWMgaW50IHNjYXR0ZXJfZWxlbV9zel9zZXQoY29uc3QgY2hhciAqdmFsLCBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcClcbit7XG4rXHRpbnQgcmV0LCBuZXdfdmFsLCBvcmRlcjtcbitcbitcdHJldCA9IGtzdHJ0b2ludCh2YWwsIDAsIFx1MDAyNm5ld192YWwpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdGlmIChuZXdfdmFsIFx1MDAzYz0gMCkge1xuK1x0XHRwcl9lcnIoXCJzZzogc2NhdHRlcl9lbGVtX3N6IG11c3QgYmUgcG9zaXRpdmUsIGdvdCAlZFxcblwiLCBuZXdfdmFsKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRvcmRlciA9IGdldF9vcmRlcihuZXdfdmFsKTtcbitcdGlmIChvcmRlciBcdTAwM2UgTUFYX1BBR0VfT1JERVIpIHtcbitcdFx0cHJfZXJyKFwic2c6IHNjYXR0ZXJfZWxlbV9zeiB0b28gbGFyZ2UgKG9yZGVyICVkIFx1MDAzZSBNQVhfUEFHRV9PUkRFUiAlZClcXG5cIixcbitcdFx0XHRvcmRlciwgTUFYX1BBR0VfT1JERVIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbitcdHNjYXR0ZXJfZWxlbV9zeiA9IDEgXHUwMDNjXHUwMDNjIChQQUdFX1NISUZUICsgb3JkZXIpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK21vZHVsZV9wYXJhbV9jYWxsKHNjYXR0ZXJfZWxlbV9zeiwgc2NhdHRlcl9lbGVtX3N6X3NldCwgcGFyYW1fZ2V0X2ludCxcbitcdFx0ICBcdTAwMjZzY2F0dGVyX2VsZW1fc3osIDA2NDQpO1xuK1xuK21vZHVsZV9wYXJhbV9uYW1lZChhbGxvd19kaW8sIHNnX2FsbG93X2RpbywgaW50LCAwNjQ0KTtcbiBcbiBzdGF0aWMgaW50IGRlZl9yZXNlcnZlZF9zaXplX3NldChjb25zdCBjaGFyICp2YWwsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxuIHtcbkBAIC0xNjQ5LDggKzE2NzQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbV9vcHMgZGVmX3Jlc2VydmVkX3NpemVfb3BzID0ge1xuIFx0LmdldFx0PSBwYXJhbV9nZXRfaW50LFxuIH07XG4gXG4tbW9kdWxlX3BhcmFtX2NiKGRlZl9yZXNlcnZlZF9zaXplLCBcdTAwMjZkZWZfcmVzZXJ2ZWRfc2l6ZV9vcHMsIFx1MDAyNmRlZl9yZXNlcnZlZF9zaXplLFxuLVx0XHQgICBTX0lSVUdPIHwgU19JV1VTUik7XG4rbW9kdWxlX3BhcmFtX2NiKGRlZl9yZXNlcnZlZF9zaXplLCBcdTAwMjZkZWZfcmVzZXJ2ZWRfc2l6ZV9vcHMsIFx1MDAyNmRlZl9yZXNlcnZlZF9zaXplLCAwNjQ0KTtcbiBcbiBNT0RVTEVfQVVUSE9SKFwiRG91Z2xhcyBHaWxiZXJ0XCIpO1xuIE1PRFVMRV9ERVNDUklQVElPTihcIlNDU0kgZ2VuZXJpYyAoc2cpIGRyaXZlclwiKTtcbkBAIC0xNjY4LDExICsxNjkyLDYgQEAgaW5pdF9zZyh2b2lkKVxuIHtcbiBcdGludCByYztcbiBcbi1cdGlmIChzY2F0dGVyX2VsZW1fc3ogXHUwMDNjIFBBR0VfU0laRSkge1xuLVx0XHRzY2F0dGVyX2VsZW1fc3ogPSBQQUdFX1NJWkU7XG4tXHRcdHNjYXR0ZXJfZWxlbV9zel9wcmV2ID0gc2NhdHRlcl9lbGVtX3N6O1xuLVx0fVxuLVxuIFx0cmMgPSByZWdpc3Rlcl9jaHJkZXZfcmVnaW9uKE1LREVWKFNDU0lfR0VORVJJQ19NQUpPUiwgMCksIFxuIFx0XHRcdFx0ICAgIFNHX01BWF9ERVZTLCBcInNnXCIpO1xuIFx0aWYgKHJjKVxuQEAgLTE4NTQsOSArMTg3MywxMCBAQCBzZ19idWlsZF9zZ2F0KFNnX3NjYXR0ZXJfaG9sZCAqIHNjaHAsIGNvbnN0IFNnX2ZkICogc2ZwLCBpbnQgdGFibGVzaXplKVxuIHN0YXRpYyBpbnRcbiBzZ19idWlsZF9pbmRpcmVjdChTZ19zY2F0dGVyX2hvbGQgKiBzY2hwLCBTZ19mZCAqIHNmcCwgaW50IGJ1ZmZfc2l6ZSlcbiB7XG4tXHRpbnQgcmV0X3N6ID0gMCwgaSwgaywgcmVtX3N6LCBudW0sIG14X3NjX2VsZW1zO1xuK1x0aW50IHJldF9zeiA9IDAsIGksIGssIHJlbV9zeiwgbXhfc2NfZWxlbXM7XG4gXHRpbnQgc2dfdGFibGVzaXplID0gc2ZwLVx1MDAzZXBhcmVudGRwLVx1MDAzZXNnX3RhYmxlc2l6ZTtcbiBcdGludCBibGtfc2l6ZSA9IGJ1ZmZfc2l6ZSwgb3JkZXI7XG4rXHRpbnQgZWxlbV9zeiA9IHNjYXR0ZXJfZWxlbV9zejtcbiBcdGdmcF90IGdmcF9tYXNrID0gR0ZQX0FUT01JQyB8IF9fR0ZQX0NPTVAgfCBfX0dGUF9OT1dBUk4gfCBfX0dGUF9aRVJPO1xuIFxuIFx0aWYgKGJsa19zaXplIFx1MDAzYyAwKVxuQEAgLTE4NzQsMzkgKzE4OTQsMTkgQEAgc2dfYnVpbGRfaW5kaXJlY3QoU2dfc2NhdHRlcl9ob2xkICogc2NocCwgU2dfZmQgKiBzZnAsIGludCBidWZmX3NpemUpXG4gXHRpZiAobXhfc2NfZWxlbXMgXHUwMDNjIDApXG4gXHRcdHJldHVybiBteF9zY19lbGVtcztcdC8qIG1vc3QgbGlrZWx5IC1FTk9NRU0gKi9cbiBcbi1cdG51bSA9IHNjYXR0ZXJfZWxlbV9zejtcbi1cdGlmICh1bmxpa2VseShudW0gIT0gc2NhdHRlcl9lbGVtX3N6X3ByZXYpKSB7XG4tXHRcdGlmIChudW0gXHUwMDNjIFBBR0VfU0laRSkge1xuLVx0XHRcdHNjYXR0ZXJfZWxlbV9zeiA9IFBBR0VfU0laRTtcbi1cdFx0XHRzY2F0dGVyX2VsZW1fc3pfcHJldiA9IFBBR0VfU0laRTtcbi1cdFx0fSBlbHNlXG4tXHRcdFx0c2NhdHRlcl9lbGVtX3N6X3ByZXYgPSBudW07XG4tXHR9XG4tXG4tXHRvcmRlciA9IGdldF9vcmRlcihudW0pO1xuK1x0b3JkZXIgPSBnZXRfb3JkZXIoZWxlbV9zeik7XG4gcmV0cnk6XG4gXHRyZXRfc3ogPSAxIFx1MDAzY1x1MDAzYyAoUEFHRV9TSElGVCArIG9yZGVyKTtcbiBcbiBcdGZvciAoayA9IDAsIHJlbV9zeiA9IGJsa19zaXplOyByZW1fc3ogXHUwMDNlIDAgXHUwMDI2XHUwMDI2IGsgXHUwMDNjIG14X3NjX2VsZW1zO1xuIFx0ICAgICBrKyssIHJlbV9zeiAtPSByZXRfc3opIHtcbi1cbi1cdFx0bnVtID0gKHJlbV9zeiBcdTAwM2Ugc2NhdHRlcl9lbGVtX3N6X3ByZXYpID9cbi1cdFx0XHRzY2F0dGVyX2VsZW1fc3pfcHJldiA6IHJlbV9zejtcbi1cbiBcdFx0c2NocC1cdTAwM2VwYWdlc1trXSA9IGFsbG9jX3BhZ2VzKGdmcF9tYXNrLCBvcmRlcik7XG4gXHRcdGlmICghc2NocC1cdTAwM2VwYWdlc1trXSlcbiBcdFx0XHRnb3RvIG91dDtcbiBcbi1cdFx0aWYgKG51bSA9PSBzY2F0dGVyX2VsZW1fc3pfcHJldikge1xuLVx0XHRcdGlmICh1bmxpa2VseShyZXRfc3ogXHUwMDNlIHNjYXR0ZXJfZWxlbV9zel9wcmV2KSkge1xuLVx0XHRcdFx0c2NhdHRlcl9lbGVtX3N6ID0gcmV0X3N6O1xuLVx0XHRcdFx0c2NhdHRlcl9lbGVtX3N6X3ByZXYgPSByZXRfc3o7XG4tXHRcdFx0fVxuLVx0XHR9XG4tXG4gXHRcdFNDU0lfTE9HX1RJTUVPVVQoNSwgc2dfcHJpbnRrKEtFUk5fSU5GTywgc2ZwLVx1MDAzZXBhcmVudGRwLFxuLVx0XHRcdFx0IFwic2dfYnVpbGRfaW5kaXJlY3Q6IGs9JWQsIG51bT0lZCwgcmV0X3N6PSVkXFxuXCIsXG4tXHRcdFx0XHQgaywgbnVtLCByZXRfc3opKTtcbitcdFx0XHRcdCBcIiVzOiBrPSVkLCByZXRfc3o9JWRcXG5cIixcbitcdFx0XHRcdCBfX2Z1bmNfXywgaywgcmV0X3N6KSk7XG4gXHR9XHRcdC8qIGVuZCBvZiBmb3IgbG9vcCAqL1xuIFxuIFx0c2NocC1cdTAwM2VwYWdlX29yZGVyID0gb3JkZXI7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1Mjo0OC44OTcxMDY2MjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzU0MjE0OTM1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBTRyBEcml2ZXI6IEEgQ2xvc2VyIExvb2sqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIHR3ZWFraW5nIHRoZSBgZHJpdmVycy9zY3NpL3NnLmNgIGNvZGUuIEl0J3MgZm9jdXNlZCBvbiBob3cgdGhlIGBzY2F0dGVyX2VsZW1fc3pgIG1vZHVsZSBwYXJhbWV0ZXIgd29ya3MuIEkgc2VlIHRoZXkndmUgYWRkZWQgYSBgc2NhdHRlcl9lbGVtX3N6X3NldGAgZnVuY3Rpb24gdG8gdmFsaWRhdGUgdGhlIHBhcmFtZXRlciB3aGVuIGl0J3MgY2hhbmdlZC4gU21hcnQgbW92ZSDigJMgZ290dGEga2VlcCB0aG9zZSBwYXJhbWV0ZXJzIGluIGNoZWNrLlxuXG5UaGUgbW9zdCBpbnRlcmVzdGluZyBwYXJ0IGlzIHRoZSBjaGFuZ2UgdG8gYHNnX2J1aWxkX2luZGlyZWN0YC4gVGhleSd2ZSByZW1vdmVkIHRoZSBsb2NhbCB2YWxpZGF0aW9uIG9mIGBzY2F0dGVyX2VsZW1fc3pfcHJldmAsIGFuZCBhcmUgbm93IHJlbHlpbmcgb24gdGhlIHZhbGlkYXRlZCBgc2NhdHRlcl9lbGVtX3N6YCBkaXJlY3RseS4gVGhpcyBpcyBhIHNpZ25pZmljYW50IGxvZ2ljIHNoaWZ0IGluIHRoYXQgZnVuY3Rpb24uXG5cbk15IGluaXRpYWwgdGhvdWdodD8gQWJzb2x1dGVseSwgdGhpcyB3YXJyYW50cyBmdXp6aW5nISBgc2dfYnVpbGRfaW5kaXJlY3RgIGlzIGEga2V5IGZ1bmN0aW9uIGluIGNvbnN0cnVjdGluZyB0aG9zZSBzY2F0dGVyLWdhdGhlciBsaXN0cyBmb3IgU0NTSSBnZW5lcmljIHJlcXVlc3RzLiBUaGUgZmFjdCB0aGF0IGl0J3MgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgYHNnYCBkcml2ZXIg4oCTIHRoaW5rIGBpb2N0bChTR19JTylgIGFuZCBgd3JpdGUoKWAgY2FsbHMgdG8gYC9kZXYvc2cqYCDigJMgbWFrZXMgaXQgYSBwZXJmZWN0IHRhcmdldC4gV2UncmUgcG90ZW50aWFsbHkgbG9va2luZyBhdCBtZW1vcnkgY29ycnVwdGlvbiwgYnVmZmVyIG92ZXJmbG93cywgb3IgZXZlbiBkYXRhIHZhbGlkYXRpb24gaXNzdWVzIGlmIHRoZXkgbWlzc2VkIHNvbWV0aGluZy5cblxuTm93LCBsZXQncyB0YWtlIGEgZGVlcCBkaXZlLiBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSBib3RoIGBzZ19idWlsZF9pbmRpcmVjdGAgYW5kIHRoaXMgbmV3IGBzY2F0dGVyX2VsZW1fc3pfc2V0YCBmdW5jdGlvbi4gVGhlIG1vZHVsZSBwYXJhbWV0ZXIgc2V0dGVyLCBgc2NhdHRlcl9lbGVtX3N6X3NldGAsIGlzIHdoZXJlIHRoZSB2YWxpZGF0aW9uIGlzIGhhcHBlbmluZywgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV3IGNvZGUgaW50ZXJhY3RzIHdpdGggdGhlIGV4aXN0aW5nIGxvZ2ljLlxuXG5JIHNob3VsZCB2ZXJpZnkgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucyB0b28uIExvb2tzIGxpa2UgYGRyaXZlcnMvc2NzaS9zZy5jYCBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfQ0hSX0RFVl9TR2AgaXMgZW5hYmxlZC4gVGltZSB0byBtYWtlIHN1cmUgbXkgZnV6emluZyBlbnZpcm9ubWVudCBoYXMgdGhpcyBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzM4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjkyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTM6MDYuNDM5MjU4NjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc4NjMwOTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNnXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc2NzaS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Njc2kvTWFrZWZpbGU9MTQ5PW9iai0kKENPTkZJR19CTEtfREVWX1NSKVxcdCs9IHNyX21vZC5vXFxuZHJpdmVycy9zY3NpL01ha2VmaWxlOjE1MDpvYmotJChDT05GSUdfQ0hSX0RFVl9TRylcXHQrPSBzZy5vXFxuZHJpdmVycy9zY3NpL01ha2VmaWxlLTE1MS1vYmotJChDT05GSUdfQ0hSX0RFVl9TQ0gpXFx0Kz0gY2gub1xcbi0tXFxuZHJpdmVycy9zY3NpL01ha2VmaWxlPTE2OT1zY3NpX21vZC0kKENPTkZJR19TQ1NJX0RIKVxcdCs9IHNjc2lfZGgub1xcbmRyaXZlcnMvc2NzaS9NYWtlZmlsZToxNzA6c2NzaV9tb2QtJChDT05GSUdfQkxLX0RFVl9CU0cpXFx0Kz0gc2NzaV9ic2cub1xcbmRyaXZlcnMvc2NzaS9NYWtlZmlsZS0xNzEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUzOjA3LjAxNzg5NzU2MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NzIxNTk2MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBTY2F0dGVyLUdhdGhlciBEZXZpY2UgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIEkgc2VlIHRoZSBwcm9qZWN0IHJlcXVpcmVzIGBDT05GSUdfQ0hSX0RFVl9TR2AuIFRoYXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgd2UncmUgZGVhbGluZyB3aXRoIHNvbWUgc2NhdHRlci1nYXRoZXIgZnVuY3Rpb25hbGl0eSwgbGlrZWx5IGludm9sdmluZyBjaGFyYWN0ZXIgZGV2aWNlcy4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBmbG93IOKAkyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBgc2dfYnVpbGRfaW5kaXJlY3RgIGlzIHRydWx5IGJlaW5nIHV0aWxpemVkIGluIHRoZSBzeXN0ZW0uIFdoZXJlIGlzIGl0IGJlaW5nIGNhbGxlZCBmcm9tPyBJIGtub3cgYHNnX2J1aWxkX3NnYXRgIGlzIGEgY29tbW9uIGVudHJ5IHBvaW50LCBvciBzb21ldGhpbmcgdmVyeSBzaW1pbGFyLCBzbyBJIHNob3VsZCBiZSBhYmxlIHRvIGdldCBhIHF1aWNrIGhhbmRsZSBvbiB3aGV0aGVyIGl0J3Mgb24gdGhlIGNhbGwgc3RhY2suIExldCdzIHNlZSBpZiB0aGUgY29kZSBjb25maXJtcyB0aGlzIHJlYWNoYWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIyMCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUzOjEwLjQ5MDA2MDQ2NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE0MzY4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2dfYnVpbGRfaW5kaXJlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zY3NpL3NnLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zY3NpL3NnLmM9MTgyPXN0YXRpYyBpbnQgc2dfZmluaXNoX3JlbV9yZXEoU2dfcmVxdWVzdCAqIHNycCk7XFxuZHJpdmVycy9zY3NpL3NnLmM6MTgzOnN0YXRpYyBpbnQgc2dfYnVpbGRfaW5kaXJlY3QoU2dfc2NhdHRlcl9ob2xkICogc2NocCwgU2dfZmQgKiBzZnAsIGludCBidWZmX3NpemUpO1xcbmRyaXZlcnMvc2NzaS9zZy5jLTE4NC1zdGF0aWMgc3NpemVfdCBzZ19uZXdfcmVhZChTZ19mZCAqIHNmcCwgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGNvdW50LFxcbi0tXFxuZHJpdmVycy9zY3NpL3NnLmM9MTczMT1zZ19zdGFydF9yZXEoU2dfcmVxdWVzdCAqc3JwLCB1bnNpZ25lZCBjaGFyICpjbWQpXFxuLS1cXG5kcml2ZXJzL3Njc2kvc2cuYy0xODAyLVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9zY3NpL3NnLmM6MTgwMzpcXHRcXHRcXHRyZXMgPSBzZ19idWlsZF9pbmRpcmVjdChyZXFfc2NocCwgc2ZwLCBkeGZlcl9sZW4pO1xcbmRyaXZlcnMvc2NzaS9zZy5jLTE4MDQtXFx0XFx0XFx0aWYgKHJlcykge1xcbi0tXFxuZHJpdmVycy9zY3NpL3NnLmM9MTg3Mz1zdGF0aWMgaW50XFxuZHJpdmVycy9zY3NpL3NnLmM6MTg3NDpzZ19idWlsZF9pbmRpcmVjdChTZ19zY2F0dGVyX2hvbGQgKiBzY2hwLCBTZ19mZCAqIHNmcCwgaW50IGJ1ZmZfc2l6ZSlcXG5kcml2ZXJzL3Njc2kvc2cuYy0xODc1LXtcXG4tLVxcbmRyaXZlcnMvc2NzaS9zZy5jLTE4ODgtXFx0U0NTSV9MT0dfVElNRU9VVCg0LCBzZ19wcmludGsoS0VSTl9JTkZPLCBzZnAtXFx1MDAzZXBhcmVudGRwLFxcbmRyaXZlcnMvc2NzaS9zZy5jOjE4ODk6XFx0XFx0XFxcInNnX2J1aWxkX2luZGlyZWN0OiBidWZmX3NpemU9JWQsIGJsa19zaXplPSVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvc2NzaS9zZy5jLTE4OTAtXFx0XFx0YnVmZl9zaXplLCBibGtfc2l6ZSkpO1xcbi0tXFxuZHJpdmVycy9zY3NpL3NnLmMtMTkxNC1cXHRTQ1NJX0xPR19USU1FT1VUKDUsIHNnX3ByaW50ayhLRVJOX0lORk8sIHNmcC1cXHUwMDNlcGFyZW50ZHAsXFxuZHJpdmVycy9zY3NpL3NnLmM6MTkxNTpcXHRcXHRcXHQgXFxcInNnX2J1aWxkX2luZGlyZWN0OiBrX3VzZV9zZz0lZCwgcmVtX3N6PSVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvc2NzaS9zZy5jLTE5MTYtXFx0XFx0XFx0IGssIHJlbV9zeikpO1xcbi0tXFxuZHJpdmVycy9zY3NpL3NnLmM9MTk4OT1zZ19idWlsZF9yZXNlcnZlKFNnX2ZkICogc2ZwLCBpbnQgcmVxX3NpemUpXFxuLS1cXG5kcml2ZXJzL3Njc2kvc2cuYy0xOTk3LVxcdFxcdFxcdHJlcV9zaXplID0gUEFHRV9TSVpFO1xcbmRyaXZlcnMvc2NzaS9zZy5jOjE5OTg6XFx0XFx0aWYgKDAgPT0gc2dfYnVpbGRfaW5kaXJlY3Qoc2NocCwgc2ZwLCByZXFfc2l6ZSkpXFxuZHJpdmVycy9zY3NpL3NnLmMtMTk5OS1cXHRcXHRcXHRyZXR1cm47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUzOjEwLjU5MTUxMzA5NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MTI3MjY5MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFNDU0kgR2VuZXJpYyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBTQ1NJIGdlbmVyaWMgZHJpdmVyLCB3aGljaCBtZWFucyBpdCdzIHByZXR0eSBpbXBvcnRhbnQuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgKmRlZmluaXRlbHkqIHNvbWV0aGluZyB3ZSBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8sIGFzIGl0J3MgZGlyZWN0bHkgaW1wYWN0aW5nIGNvcmUgZnVuY3Rpb25hbGl0eSBhY2Nlc3NpYmxlIHZpYSBgL2Rldi9zZypgIGRldmljZXMuIEl0IGxvb2tzIGxpa2UgYHNnX2J1aWxkX2luZGlyZWN0YCBpcyBhIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbiwgYXMgaXQncyB0aGUgdGFyZ2V0IG9mIHRoZSBjaGFuZ2VzLiBJIGNhbiBzZWUgdGhhdCBpdCdzIGNhbGxlZCBmcm9tIGJvdGggYHNnX3N0YXJ0X3JlcWAgYW5kIGBzZ19idWlsZF9yZXNlcnZlYCwgYW5kLCBpbiB0dXJuLCBgc2dfc3RhcnRfcmVxYCBpdHNlbGYgaXMgY2FsbGVkIGJ5IGBzZ19uZXdfd3JpdGVgIGFuZCBhbHNvLCBpbXBvcnRhbnRseSwgdmlhIGBzZ19pb2N0bGAgZm9yIGBTR19JT2AgcmVxdWVzdHMuIFRoaXMgY29uZmlybXMgdGhhdCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBsaXZlIGFuZCBjYW4gYmUgdGVzdGVkLlxuXG5UaGUgcGF0Y2ggc2VlbXMgdG8gYmUgYWJvdXQgbW9kaWZ5aW5nIGhvdyB3ZSBzZXQgYW5kIHZhbGlkYXRlIGBzY2F0dGVyX2VsZW1fc3pgLCBhIG1vZHVsZSBwYXJhbWV0ZXIsIGFuZCBob3cgdGhpcyBzaXplIHZhbHVlIGlzIHRoZW4gdXNlZCB3aXRoaW4gYHNnX2J1aWxkX2luZGlyZWN0YCB3aGVuIGFsbG9jYXRpbmcgc2NhdHRlci1nYXRoZXIgbGlzdHMuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCBgc2NhdHRlcl9lbGVtX3N6YCBpcyBhbHNvIGEgZm9jdXMgaGVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZnV6emluZyBmb2N1c2VzIG9uIHRob3NlLCBhcyB3ZWxsLlxuXG5JIGNhbiBjb25maXJtIHRoYXQgYHNjYXR0ZXJfZWxlbV9zel9zZXRgIGlzIGEgdmFsaWQgc3ltYm9sIGFuZCBpcywgaW4gZmFjdCwgYSBzdGF0aWMgZnVuY3Rpb24gaW50cm9kdWNlZCBieSB0aGUgcGF0Y2guIFRoaXMgY29uZmlybXMgSSBzaG91bGQga2VlcCBhbiBleWUgb24gaXQuIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSBpZiBhbnkgb3RoZXIgcmVsZXZhbnQgZnVuY3Rpb25zIGFyZSBpbXBhY3RlZC4gT2theSwgYHNnX3JlbW92ZV9kZXZpY2VgIGFuZCBgZGVmX3Jlc2VydmVkX3NpemVfc2V0YCBhcmUgdW50b3VjaGVkLCBhbHRob3VnaCB0aGV5IGFyZSBwcmVzZW50IGluIHRoZSBjb250ZXh0LiBgaW5pdF9zZ2AgaXMgbW9kaWZpZWQgKHNwZWNpZmljYWxseSwgc29tZSBsb2dpYyBoYXMgYmVlbiByZW1vdmVkIGZyb20gaXQpLlxuXG5BbHJpZ2h0LCBzbyB0aGUgbWFqb3IgdGFyZ2V0cyBmb3IgZnV6emluZyBhbmQgdGVzdGluZyBhcmUgYHNnX2J1aWxkX2luZGlyZWN0YCBhbmQgYHNjYXR0ZXJfZWxlbV9zel9zZXRgLiBJdCdzIGEgaGlnaC1wcmlvcml0eSBpdGVtIGdpdmVuIGl0J3MgZnVuZGFtZW50YWwgdG8gc2cgZHJpdmVyIGZ1bmN0aW9uYWxpdHkuIEkgbmVlZCB0byBzZXQgdGhvc2UgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA5OCwiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTM6MTcuNTA0MjQ0NDU3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTQwMTE0ODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNIUl9ERVZfU0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzZ19idWlsZF9pbmRpcmVjdFwiLFxuICAgIFwic2NhdHRlcl9lbGVtX3N6X3NldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyBhbmQgdmFsaWRhdGluZyB0aGUgYHNjYXR0ZXJfZWxlbV9zemAgbW9kdWxlIHBhcmFtZXRlciBhbmQgaG93IGl0IGlzIHVzZWQgaW4gYHNnX2J1aWxkX2luZGlyZWN0YCB0byBhbGxvY2F0ZSBzY2F0dGVyLWdhdGhlciBsaXN0cy4gVGhpcyBhZmZlY3RzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFNDU0kgZ2VuZXJpYyAoc2cpIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBgL2Rldi9zZypgIGRldmljZXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBzZ19idWlsZF9pbmRpcmVjdGAgYW5kIHRoZSBwYXJhbWV0ZXIgc2V0dGVyIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBtZW1vcnkgaXNzdWVzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNIUl9ERVZfU0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzZ19idWlsZF9pbmRpcmVjdFwiLFxuICAgIFwic2NhdHRlcl9lbGVtX3N6X3NldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyBhbmQgdmFsaWRhdGluZyB0aGUgYHNjYXR0ZXJfZWxlbV9zemAgbW9kdWxlIHBhcmFtZXRlciBhbmQgaG93IGl0IGlzIHVzZWQgaW4gYHNnX2J1aWxkX2luZGlyZWN0YCB0byBhbGxvY2F0ZSBzY2F0dGVyLWdhdGhlciBsaXN0cy4gVGhpcyBhZmZlY3RzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFNDU0kgZ2VuZXJpYyAoc2cpIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBgL2Rldi9zZypgIGRldmljZXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBzZ19idWlsZF9pbmRpcmVjdGAgYW5kIHRoZSBwYXJhbWV0ZXIgc2V0dGVyIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBtZW1vcnkgaXNzdWVzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowbf67c[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-08 16:30:50 +0000 UTC FinishedAt: 2026-07-08 16:53:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CHR_DEV_SG" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CHR_DEV_SG" ], "series_id": "5e65c586-b7bd-4bdf-9929-f80d4ea2c812" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "sg_build_indirect", "scatter_elem_sz_set" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NIUl9ERVZfU0cmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzZ19idWlsZF9pbmRpcmVjdCYjMzQ7LAogICAgJiMzNDtzY2F0dGVyX2VsZW1fc3pfc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyBhbmQgdmFsaWRhdGluZyB0aGUgYHNjYXR0ZXJfZWxlbV9zemAgbW9kdWxlIHBhcmFtZXRlciBhbmQgaG93IGl0IGlzIHVzZWQgaW4gYHNnX2J1aWxkX2luZGlyZWN0YCB0byBhbGxvY2F0ZSBzY2F0dGVyLWdhdGhlciBsaXN0cy4gVGhpcyBhZmZlY3RzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFNDU0kgZ2VuZXJpYyAoc2cpIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBgL2Rldi9zZypgIGRldmljZXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBzZ19idWlsZF9pbmRpcmVjdGAgYW5kIHRoZSBwYXJhbWV0ZXIgc2V0dGVyIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBtZW1vcnkgaXNzdWVzIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjUyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjE0YTM1YmY0YjhmODk5MDNjZjk0YmFhNTlkNzJhMmMxYzVlM2EyNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTY6NTI6NDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3NnLmMgYi9kcml2ZXJzL3Njc2kvc2cuY1xuaW5kZXggNzRjZDRlOGE2MWMyYTAuLjM3N2MzZTFkZWU3ZmY5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zY3NpL3NnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvc2NzaS9zZy5jXG5AQCAtOTIsNyAmIzQzOzkyLDYgQEAgc3RhdGljIGludCBkZWZfcmVzZXJ2ZWRfc2l6ZSA9IFNHX0RFRl9SRVNFUlZFRF9TSVpFO1xuIHN0YXRpYyBpbnQgc2dfYWxsb3dfZGlvID0gU0dfQUxMT1dfRElPX0RFRjtcbiBcbiBzdGF0aWMgaW50IHNjYXR0ZXJfZWxlbV9zeiA9IFNHX1NDQVRURVJfU1o7XG4tc3RhdGljIGludCBzY2F0dGVyX2VsZW1fc3pfcHJldiA9IFNHX1NDQVRURVJfU1o7XG4gXG4gI2RlZmluZSBTR19TRUNUT1JfU1ogNTEyXG4gXG5AQCAtMTYyMiw4ICYjNDM7MTYyMSwzNCBAQCBzZ19yZW1vdmVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmNsX2RldilcbiBcdGtyZWZfcHV0KFx1MDAyNnNkcC1cdTAwM2VkX3JlZiwgc2dfZGV2aWNlX2Rlc3Ryb3kpO1xuIH1cbiBcbi1tb2R1bGVfcGFyYW1fbmFtZWQoc2NhdHRlcl9lbGVtX3N6LCBzY2F0dGVyX2VsZW1fc3osIGludCwgU19JUlVHTyB8IFNfSVdVU1IpO1xuLW1vZHVsZV9wYXJhbV9uYW1lZChhbGxvd19kaW8sIHNnX2FsbG93X2RpbywgaW50LCBTX0lSVUdPIHwgU19JV1VTUik7XG4mIzQzO3N0YXRpYyBpbnQgc2NhdHRlcl9lbGVtX3N6X3NldChjb25zdCBjaGFyICp2YWwsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxuJiM0Mzt7XG4mIzQzO1x0aW50IHJldCwgbmV3X3ZhbCwgb3JkZXI7XG4mIzQzO1xuJiM0MztcdHJldCA9IGtzdHJ0b2ludCh2YWwsIDAsIFx1MDAyNm5ld192YWwpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRpZiAobmV3X3ZhbCBcdTAwM2M9IDApIHtcbiYjNDM7XHRcdHByX2VycihcJiMzNDtzZzogc2NhdHRlcl9lbGVtX3N6IG11c3QgYmUgcG9zaXRpdmUsIGdvdCAlZFxcblwmIzM0OywgbmV3X3ZhbCk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdG9yZGVyID0gZ2V0X29yZGVyKG5ld192YWwpO1xuJiM0MztcdGlmIChvcmRlciBcdTAwM2UgTUFYX1BBR0VfT1JERVIpIHtcbiYjNDM7XHRcdHByX2VycihcJiMzNDtzZzogc2NhdHRlcl9lbGVtX3N6IHRvbyBsYXJnZSAob3JkZXIgJWQgXHUwMDNlIE1BWF9QQUdFX09SREVSICVkKVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0b3JkZXIsIE1BWF9QQUdFX09SREVSKTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0c2NhdHRlcl9lbGVtX3N6ID0gMSBcdTAwM2NcdTAwM2MgKFBBR0VfU0hJRlQgJiM0Mzsgb3JkZXIpO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzttb2R1bGVfcGFyYW1fY2FsbChzY2F0dGVyX2VsZW1fc3osIHNjYXR0ZXJfZWxlbV9zel9zZXQsIHBhcmFtX2dldF9pbnQsXG4mIzQzO1x0XHQgIFx1MDAyNnNjYXR0ZXJfZWxlbV9zeiwgMDY0NCk7XG4mIzQzO1xuJiM0Mzttb2R1bGVfcGFyYW1fbmFtZWQoYWxsb3dfZGlvLCBzZ19hbGxvd19kaW8sIGludCwgMDY0NCk7XG4gXG4gc3RhdGljIGludCBkZWZfcmVzZXJ2ZWRfc2l6ZV9zZXQoY29uc3QgY2hhciAqdmFsLCBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcClcbiB7XG5AQCAtMTY0OSw4ICYjNDM7MTY3NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtX29wcyBkZWZfcmVzZXJ2ZWRfc2l6ZV9vcHMgPSB7XG4gXHQuZ2V0XHQ9IHBhcmFtX2dldF9pbnQsXG4gfTtcbiBcbi1tb2R1bGVfcGFyYW1fY2IoZGVmX3Jlc2VydmVkX3NpemUsIFx1MDAyNmRlZl9yZXNlcnZlZF9zaXplX29wcywgXHUwMDI2ZGVmX3Jlc2VydmVkX3NpemUsXG4tXHRcdCAgIFNfSVJVR08gfCBTX0lXVVNSKTtcbiYjNDM7bW9kdWxlX3BhcmFtX2NiKGRlZl9yZXNlcnZlZF9zaXplLCBcdTAwMjZkZWZfcmVzZXJ2ZWRfc2l6ZV9vcHMsIFx1MDAyNmRlZl9yZXNlcnZlZF9zaXplLCAwNjQ0KTtcbiBcbiBNT0RVTEVfQVVUSE9SKFwmIzM0O0RvdWdsYXMgR2lsYmVydFwmIzM0Oyk7XG4gTU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O1NDU0kgZ2VuZXJpYyAoc2cpIGRyaXZlclwmIzM0Oyk7XG5AQCAtMTY2OCwxMSAmIzQzOzE2OTIsNiBAQCBpbml0X3NnKHZvaWQpXG4ge1xuIFx0aW50IHJjO1xuIFxuLVx0aWYgKHNjYXR0ZXJfZWxlbV9zeiBcdTAwM2MgUEFHRV9TSVpFKSB7XG4tXHRcdHNjYXR0ZXJfZWxlbV9zeiA9IFBBR0VfU0laRTtcbi1cdFx0c2NhdHRlcl9lbGVtX3N6X3ByZXYgPSBzY2F0dGVyX2VsZW1fc3o7XG4tXHR9XG4tXG4gXHRyYyA9IHJlZ2lzdGVyX2NocmRldl9yZWdpb24oTUtERVYoU0NTSV9HRU5FUklDX01BSk9SLCAwKSwgXG4gXHRcdFx0XHQgICAgU0dfTUFYX0RFVlMsIFwmIzM0O3NnXCYjMzQ7KTtcbiBcdGlmIChyYylcbkBAIC0xODU0LDkgJiM0MzsxODczLDEwIEBAIHNnX2J1aWxkX3NnYXQoU2dfc2NhdHRlcl9ob2xkICogc2NocCwgY29uc3QgU2dfZmQgKiBzZnAsIGludCB0YWJsZXNpemUpXG4gc3RhdGljIGludFxuIHNnX2J1aWxkX2luZGlyZWN0KFNnX3NjYXR0ZXJfaG9sZCAqIHNjaHAsIFNnX2ZkICogc2ZwLCBpbnQgYnVmZl9zaXplKVxuIHtcbi1cdGludCByZXRfc3ogPSAwLCBpLCBrLCByZW1fc3osIG51bSwgbXhfc2NfZWxlbXM7XG4mIzQzO1x0aW50IHJldF9zeiA9IDAsIGksIGssIHJlbV9zeiwgbXhfc2NfZWxlbXM7XG4gXHRpbnQgc2dfdGFibGVzaXplID0gc2ZwLVx1MDAzZXBhcmVudGRwLVx1MDAzZXNnX3RhYmxlc2l6ZTtcbiBcdGludCBibGtfc2l6ZSA9IGJ1ZmZfc2l6ZSwgb3JkZXI7XG4mIzQzO1x0aW50IGVsZW1fc3ogPSBzY2F0dGVyX2VsZW1fc3o7XG4gXHRnZnBfdCBnZnBfbWFzayA9IEdGUF9BVE9NSUMgfCBfX0dGUF9DT01QIHwgX19HRlBfTk9XQVJOIHwgX19HRlBfWkVSTztcbiBcbiBcdGlmIChibGtfc2l6ZSBcdTAwM2MgMClcbkBAIC0xODc0LDM5ICYjNDM7MTg5NCwxOSBAQCBzZ19idWlsZF9pbmRpcmVjdChTZ19zY2F0dGVyX2hvbGQgKiBzY2hwLCBTZ19mZCAqIHNmcCwgaW50IGJ1ZmZfc2l6ZSlcbiBcdGlmIChteF9zY19lbGVtcyBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIG14X3NjX2VsZW1zO1x0LyogbW9zdCBsaWtlbHkgLUVOT01FTSAqL1xuIFxuLVx0bnVtID0gc2NhdHRlcl9lbGVtX3N6O1xuLVx0aWYgKHVubGlrZWx5KG51bSAhPSBzY2F0dGVyX2VsZW1fc3pfcHJldikpIHtcbi1cdFx0aWYgKG51bSBcdTAwM2MgUEFHRV9TSVpFKSB7XG4tXHRcdFx0c2NhdHRlcl9lbGVtX3N6ID0gUEFHRV9TSVpFO1xuLVx0XHRcdHNjYXR0ZXJfZWxlbV9zel9wcmV2ID0gUEFHRV9TSVpFO1xuLVx0XHR9IGVsc2Vcbi1cdFx0XHRzY2F0dGVyX2VsZW1fc3pfcHJldiA9IG51bTtcbi1cdH1cbi1cbi1cdG9yZGVyID0gZ2V0X29yZGVyKG51bSk7XG4mIzQzO1x0b3JkZXIgPSBnZXRfb3JkZXIoZWxlbV9zeik7XG4gcmV0cnk6XG4gXHRyZXRfc3ogPSAxIFx1MDAzY1x1MDAzYyAoUEFHRV9TSElGVCAmIzQzOyBvcmRlcik7XG4gXG4gXHRmb3IgKGsgPSAwLCByZW1fc3ogPSBibGtfc2l6ZTsgcmVtX3N6IFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBrIFx1MDAzYyBteF9zY19lbGVtcztcbiBcdCAgICAgayYjNDM7JiM0MzssIHJlbV9zeiAtPSByZXRfc3opIHtcbi1cbi1cdFx0bnVtID0gKHJlbV9zeiBcdTAwM2Ugc2NhdHRlcl9lbGVtX3N6X3ByZXYpID9cbi1cdFx0XHRzY2F0dGVyX2VsZW1fc3pfcHJldiA6IHJlbV9zejtcbi1cbiBcdFx0c2NocC1cdTAwM2VwYWdlc1trXSA9IGFsbG9jX3BhZ2VzKGdmcF9tYXNrLCBvcmRlcik7XG4gXHRcdGlmICghc2NocC1cdTAwM2VwYWdlc1trXSlcbiBcdFx0XHRnb3RvIG91dDtcbiBcbi1cdFx0aWYgKG51bSA9PSBzY2F0dGVyX2VsZW1fc3pfcHJldikge1xuLVx0XHRcdGlmICh1bmxpa2VseShyZXRfc3ogXHUwMDNlIHNjYXR0ZXJfZWxlbV9zel9wcmV2KSkge1xuLVx0XHRcdFx0c2NhdHRlcl9lbGVtX3N6ID0gcmV0X3N6O1xuLVx0XHRcdFx0c2NhdHRlcl9lbGVtX3N6X3ByZXYgPSByZXRfc3o7XG4tXHRcdFx0fVxuLVx0XHR9XG4tXG4gXHRcdFNDU0lfTE9HX1RJTUVPVVQoNSwgc2dfcHJpbnRrKEtFUk5fSU5GTywgc2ZwLVx1MDAzZXBhcmVudGRwLFxuLVx0XHRcdFx0IFwmIzM0O3NnX2J1aWxkX2luZGlyZWN0OiBrPSVkLCBudW09JWQsIHJldF9zej0lZFxcblwmIzM0Oyxcbi1cdFx0XHRcdCBrLCBudW0sIHJldF9zeikpO1xuJiM0MztcdFx0XHRcdCBcJiMzNDslczogaz0lZCwgcmV0X3N6PSVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRcdCBfX2Z1bmNfXywgaywgcmV0X3N6KSk7XG4gXHR9XHRcdC8qIGVuZCBvZiBmb3IgbG9vcCAqL1xuIFxuIFx0c2NocC1cdTAwM2VwYWdlX29yZGVyID0gb3JkZXI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0hSX0RFVl9TRyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NnX2J1aWxkX2luZGlyZWN0JiMzNDssCiAgICAmIzM0O3NjYXR0ZXJfZWxlbV9zel9zZXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBzZXR0aW5nIGFuZCB2YWxpZGF0aW5nIHRoZSBgc2NhdHRlcl9lbGVtX3N6YCBtb2R1bGUgcGFyYW1ldGVyIGFuZCBob3cgaXQgaXMgdXNlZCBpbiBgc2dfYnVpbGRfaW5kaXJlY3RgIHRvIGFsbG9jYXRlIHNjYXR0ZXItZ2F0aGVyIGxpc3RzLiBUaGlzIGFmZmVjdHMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgU0NTSSBnZW5lcmljIChzZykgZHJpdmVyLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGAvZGV2L3NnKmAgZGV2aWNlcy4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gYHNnX2J1aWxkX2luZGlyZWN0YCBhbmQgdGhlIHBhcmFtZXRlciBzZXR0ZXIgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBpc3N1ZXMgb2NjdXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDYxNGEzNWJmNGI4Zjg5OTAzY2Y5NGJhYTU5ZDcyYTJjMWM1ZTNhMjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCA4IDE2OjUyOjQ2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3NnLmMgYi9kcml2ZXJzL3Njc2kvc2cuYwppbmRleCA3NGNkNGU4YTYxYzJhMC4uMzc3YzNlMWRlZTdmZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zZy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvc2NzaS9zZy5jCkBAIC05Miw3ICYjNDM7OTIsNiBAQCBzdGF0aWMgaW50IGRlZl9yZXNlcnZlZF9zaXplID0gU0dfREVGX1JFU0VSVkVEX1NJWkU7CiBzdGF0aWMgaW50IHNnX2FsbG93X2RpbyA9IFNHX0FMTE9XX0RJT19ERUY7CiAKIHN0YXRpYyBpbnQgc2NhdHRlcl9lbGVtX3N6ID0gU0dfU0NBVFRFUl9TWjsKLXN0YXRpYyBpbnQgc2NhdHRlcl9lbGVtX3N6X3ByZXYgPSBTR19TQ0FUVEVSX1NaOwogCiAjZGVmaW5lIFNHX1NFQ1RPUl9TWiA1MTIKIApAQCAtMTYyMiw4ICYjNDM7MTYyMSwzNCBAQCBzZ19yZW1vdmVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmNsX2RldikKIAlrcmVmX3B1dCgmYW1wO3NkcC0mZ3Q7ZF9yZWYsIHNnX2RldmljZV9kZXN0cm95KTsKIH0KIAotbW9kdWxlX3BhcmFtX25hbWVkKHNjYXR0ZXJfZWxlbV9zeiwgc2NhdHRlcl9lbGVtX3N6LCBpbnQsIFNfSVJVR08gfCBTX0lXVVNSKTsKLW1vZHVsZV9wYXJhbV9uYW1lZChhbGxvd19kaW8sIHNnX2FsbG93X2RpbywgaW50LCBTX0lSVUdPIHwgU19JV1VTUik7CiYjNDM7c3RhdGljIGludCBzY2F0dGVyX2VsZW1fc3pfc2V0KGNvbnN0IGNoYXIgKnZhbCwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApCiYjNDM7ewomIzQzOwlpbnQgcmV0LCBuZXdfdmFsLCBvcmRlcjsKJiM0MzsKJiM0MzsJcmV0ID0ga3N0cnRvaW50KHZhbCwgMCwgJmFtcDtuZXdfdmFsKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CWlmIChuZXdfdmFsICZsdDs9IDApIHsKJiM0MzsJCXByX2VycigmIzM0O3NnOiBzY2F0dGVyX2VsZW1fc3ogbXVzdCBiZSBwb3NpdGl2ZSwgZ290ICVkXG4mIzM0OywgbmV3X3ZhbCk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwomIzQzOwlvcmRlciA9IGdldF9vcmRlcihuZXdfdmFsKTsKJiM0MzsJaWYgKG9yZGVyICZndDsgTUFYX1BBR0VfT1JERVIpIHsKJiM0MzsJCXByX2VycigmIzM0O3NnOiBzY2F0dGVyX2VsZW1fc3ogdG9vIGxhcmdlIChvcmRlciAlZCAmZ3Q7IE1BWF9QQUdFX09SREVSICVkKVxuJiMzNDssCiYjNDM7CQkJb3JkZXIsIE1BWF9QQUdFX09SREVSKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiYjNDM7CXNjYXR0ZXJfZWxlbV9zeiA9IDEgJmx0OyZsdDsgKFBBR0VfU0hJRlQgJiM0Mzsgb3JkZXIpOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7bW9kdWxlX3BhcmFtX2NhbGwoc2NhdHRlcl9lbGVtX3N6LCBzY2F0dGVyX2VsZW1fc3pfc2V0LCBwYXJhbV9nZXRfaW50LAomIzQzOwkJICAmYW1wO3NjYXR0ZXJfZWxlbV9zeiwgMDY0NCk7CiYjNDM7CiYjNDM7bW9kdWxlX3BhcmFtX25hbWVkKGFsbG93X2Rpbywgc2dfYWxsb3dfZGlvLCBpbnQsIDA2NDQpOwogCiBzdGF0aWMgaW50IGRlZl9yZXNlcnZlZF9zaXplX3NldChjb25zdCBjaGFyICp2YWwsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKQogewpAQCAtMTY0OSw4ICYjNDM7MTY3NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtX29wcyBkZWZfcmVzZXJ2ZWRfc2l6ZV9vcHMgPSB7CiAJLmdldAk9IHBhcmFtX2dldF9pbnQsCiB9OwogCi1tb2R1bGVfcGFyYW1fY2IoZGVmX3Jlc2VydmVkX3NpemUsICZhbXA7ZGVmX3Jlc2VydmVkX3NpemVfb3BzLCAmYW1wO2RlZl9yZXNlcnZlZF9zaXplLAotCQkgICBTX0lSVUdPIHwgU19JV1VTUik7CiYjNDM7bW9kdWxlX3BhcmFtX2NiKGRlZl9yZXNlcnZlZF9zaXplLCAmYW1wO2RlZl9yZXNlcnZlZF9zaXplX29wcywgJmFtcDtkZWZfcmVzZXJ2ZWRfc2l6ZSwgMDY0NCk7CiAKIE1PRFVMRV9BVVRIT1IoJiMzNDtEb3VnbGFzIEdpbGJlcnQmIzM0Oyk7CiBNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtTQ1NJIGdlbmVyaWMgKHNnKSBkcml2ZXImIzM0Oyk7CkBAIC0xNjY4LDExICYjNDM7MTY5Miw2IEBAIGluaXRfc2codm9pZCkKIHsKIAlpbnQgcmM7CiAKLQlpZiAoc2NhdHRlcl9lbGVtX3N6ICZsdDsgUEFHRV9TSVpFKSB7Ci0JCXNjYXR0ZXJfZWxlbV9zeiA9IFBBR0VfU0laRTsKLQkJc2NhdHRlcl9lbGVtX3N6X3ByZXYgPSBzY2F0dGVyX2VsZW1fc3o7Ci0JfQotCiAJcmMgPSByZWdpc3Rlcl9jaHJkZXZfcmVnaW9uKE1LREVWKFNDU0lfR0VORVJJQ19NQUpPUiwgMCksIAogCQkJCSAgICBTR19NQVhfREVWUywgJiMzNDtzZyYjMzQ7KTsKIAlpZiAocmMpCkBAIC0xODU0LDkgJiM0MzsxODczLDEwIEBAIHNnX2J1aWxkX3NnYXQoU2dfc2NhdHRlcl9ob2xkICogc2NocCwgY29uc3QgU2dfZmQgKiBzZnAsIGludCB0YWJsZXNpemUpCiBzdGF0aWMgaW50CiBzZ19idWlsZF9pbmRpcmVjdChTZ19zY2F0dGVyX2hvbGQgKiBzY2hwLCBTZ19mZCAqIHNmcCwgaW50IGJ1ZmZfc2l6ZSkKIHsKLQlpbnQgcmV0X3N6ID0gMCwgaSwgaywgcmVtX3N6LCBudW0sIG14X3NjX2VsZW1zOwomIzQzOwlpbnQgcmV0X3N6ID0gMCwgaSwgaywgcmVtX3N6LCBteF9zY19lbGVtczsKIAlpbnQgc2dfdGFibGVzaXplID0gc2ZwLSZndDtwYXJlbnRkcC0mZ3Q7c2dfdGFibGVzaXplOwogCWludCBibGtfc2l6ZSA9IGJ1ZmZfc2l6ZSwgb3JkZXI7CiYjNDM7CWludCBlbGVtX3N6ID0gc2NhdHRlcl9lbGVtX3N6OwogCWdmcF90IGdmcF9tYXNrID0gR0ZQX0FUT01JQyB8IF9fR0ZQX0NPTVAgfCBfX0dGUF9OT1dBUk4gfCBfX0dGUF9aRVJPOwogCiAJaWYgKGJsa19zaXplICZsdDsgMCkKQEAgLTE4NzQsMzkgJiM0MzsxODk0LDE5IEBAIHNnX2J1aWxkX2luZGlyZWN0KFNnX3NjYXR0ZXJfaG9sZCAqIHNjaHAsIFNnX2ZkICogc2ZwLCBpbnQgYnVmZl9zaXplKQogCWlmIChteF9zY19lbGVtcyAmbHQ7IDApCiAJCXJldHVybiBteF9zY19lbGVtczsJLyogbW9zdCBsaWtlbHkgLUVOT01FTSAqLwogCi0JbnVtID0gc2NhdHRlcl9lbGVtX3N6OwotCWlmICh1bmxpa2VseShudW0gIT0gc2NhdHRlcl9lbGVtX3N6X3ByZXYpKSB7Ci0JCWlmIChudW0gJmx0OyBQQUdFX1NJWkUpIHsKLQkJCXNjYXR0ZXJfZWxlbV9zeiA9IFBBR0VfU0laRTsKLQkJCXNjYXR0ZXJfZWxlbV9zel9wcmV2ID0gUEFHRV9TSVpFOwotCQl9IGVsc2UKLQkJCXNjYXR0ZXJfZWxlbV9zel9wcmV2ID0gbnVtOwotCX0KLQotCW9yZGVyID0gZ2V0X29yZGVyKG51bSk7CiYjNDM7CW9yZGVyID0gZ2V0X29yZGVyKGVsZW1fc3opOwogcmV0cnk6CiAJcmV0X3N6ID0gMSAmbHQ7Jmx0OyAoUEFHRV9TSElGVCAmIzQzOyBvcmRlcik7CiAKIAlmb3IgKGsgPSAwLCByZW1fc3ogPSBibGtfc2l6ZTsgcmVtX3N6ICZndDsgMCAmYW1wOyZhbXA7IGsgJmx0OyBteF9zY19lbGVtczsKIAkgICAgIGsmIzQzOyYjNDM7LCByZW1fc3ogLT0gcmV0X3N6KSB7Ci0KLQkJbnVtID0gKHJlbV9zeiAmZ3Q7IHNjYXR0ZXJfZWxlbV9zel9wcmV2KSA/Ci0JCQlzY2F0dGVyX2VsZW1fc3pfcHJldiA6IHJlbV9zejsKLQogCQlzY2hwLSZndDtwYWdlc1trXSA9IGFsbG9jX3BhZ2VzKGdmcF9tYXNrLCBvcmRlcik7CiAJCWlmICghc2NocC0mZ3Q7cGFnZXNba10pCiAJCQlnb3RvIG91dDsKIAotCQlpZiAobnVtID09IHNjYXR0ZXJfZWxlbV9zel9wcmV2KSB7Ci0JCQlpZiAodW5saWtlbHkocmV0X3N6ICZndDsgc2NhdHRlcl9lbGVtX3N6X3ByZXYpKSB7Ci0JCQkJc2NhdHRlcl9lbGVtX3N6ID0gcmV0X3N6OwotCQkJCXNjYXR0ZXJfZWxlbV9zel9wcmV2ID0gcmV0X3N6OwotCQkJfQotCQl9Ci0KIAkJU0NTSV9MT0dfVElNRU9VVCg1LCBzZ19wcmludGsoS0VSTl9JTkZPLCBzZnAtJmd0O3BhcmVudGRwLAotCQkJCSAmIzM0O3NnX2J1aWxkX2luZGlyZWN0OiBrPSVkLCBudW09JWQsIHJldF9zej0lZFxuJiMzNDssCi0JCQkJIGssIG51bSwgcmV0X3N6KSk7CiYjNDM7CQkJCSAmIzM0OyVzOiBrPSVkLCByZXRfc3o9JWRcbiYjMzQ7LAomIzQzOwkJCQkgX19mdW5jX18sIGssIHJldF9zeikpOwogCX0JCS8qIGVuZCBvZiBmb3IgbG9vcCAqLwogCiAJc2NocC0mZ3Q7cGFnZV9vcmRlciA9IG9yZGVyOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzM4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIFNHIERyaXZlcjogQSBDbG9zZXIgTG9vayoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdHdlYWtpbmcgdGhlIGBkcml2ZXJzL3Njc2kvc2cuY2AgY29kZS4gSXQmIzM5O3MgZm9jdXNlZCBvbiBob3cgdGhlIGBzY2F0dGVyX2VsZW1fc3pgIG1vZHVsZSBwYXJhbWV0ZXIgd29ya3MuIEkgc2VlIHRoZXkmIzM5O3ZlIGFkZGVkIGEgYHNjYXR0ZXJfZWxlbV9zel9zZXRgIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIHRoZSBwYXJhbWV0ZXIgd2hlbiBpdCYjMzk7cyBjaGFuZ2VkLiBTbWFydCBtb3ZlIOKAkyBnb3R0YSBrZWVwIHRob3NlIHBhcmFtZXRlcnMgaW4gY2hlY2suCgpUaGUgbW9zdCBpbnRlcmVzdGluZyBwYXJ0IGlzIHRoZSBjaGFuZ2UgdG8gYHNnX2J1aWxkX2luZGlyZWN0YC4gVGhleSYjMzk7dmUgcmVtb3ZlZCB0aGUgbG9jYWwgdmFsaWRhdGlvbiBvZiBgc2NhdHRlcl9lbGVtX3N6X3ByZXZgLCBhbmQgYXJlIG5vdyByZWx5aW5nIG9uIHRoZSB2YWxpZGF0ZWQgYHNjYXR0ZXJfZWxlbV9zemAgZGlyZWN0bHkuIFRoaXMgaXMgYSBzaWduaWZpY2FudCBsb2dpYyBzaGlmdCBpbiB0aGF0IGZ1bmN0aW9uLgoKTXkgaW5pdGlhbCB0aG91Z2h0PyBBYnNvbHV0ZWx5LCB0aGlzIHdhcnJhbnRzIGZ1enppbmchIGBzZ19idWlsZF9pbmRpcmVjdGAgaXMgYSBrZXkgZnVuY3Rpb24gaW4gY29uc3RydWN0aW5nIHRob3NlIHNjYXR0ZXItZ2F0aGVyIGxpc3RzIGZvciBTQ1NJIGdlbmVyaWMgcmVxdWVzdHMuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgYHNnYCBkcml2ZXIg4oCTIHRoaW5rIGBpb2N0bChTR19JTylgIGFuZCBgd3JpdGUoKWAgY2FsbHMgdG8gYC9kZXYvc2cqYCDigJMgbWFrZXMgaXQgYSBwZXJmZWN0IHRhcmdldC4gV2UmIzM5O3JlIHBvdGVudGlhbGx5IGxvb2tpbmcgYXQgbWVtb3J5IGNvcnJ1cHRpb24sIGJ1ZmZlciBvdmVyZmxvd3MsIG9yIGV2ZW4gZGF0YSB2YWxpZGF0aW9uIGlzc3VlcyBpZiB0aGV5IG1pc3NlZCBzb21ldGhpbmcuCgpOb3csIGxldCYjMzk7cyB0YWtlIGEgZGVlcCBkaXZlLiBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgYm90aCBgc2dfYnVpbGRfaW5kaXJlY3RgIGFuZCB0aGlzIG5ldyBgc2NhdHRlcl9lbGVtX3N6X3NldGAgZnVuY3Rpb24uIFRoZSBtb2R1bGUgcGFyYW1ldGVyIHNldHRlciwgYHNjYXR0ZXJfZWxlbV9zel9zZXRgLCBpcyB3aGVyZSB0aGUgdmFsaWRhdGlvbiBpcyBoYXBwZW5pbmcsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG5ldyBjb2RlIGludGVyYWN0cyB3aXRoIHRoZSBleGlzdGluZyBsb2dpYy4KCkkgc2hvdWxkIHZlcmlmeSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIHRvby4gTG9va3MgbGlrZSBgZHJpdmVycy9zY3NpL3NnLmNgIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19DSFJfREVWX1NHYCBpcyBlbmFibGVkLiBUaW1lIHRvIG1ha2Ugc3VyZSBteSBmdXp6aW5nIGVudmlyb25tZW50IGhhcyB0aGlzIGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2dcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9zY3NpL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc2NzaS9NYWtlZmlsZT0xNDk9b2JqLSQoQ09ORklHX0JMS19ERVZfU1IpXHQmIzQzOz0gc3JfbW9kLm9cbmRyaXZlcnMvc2NzaS9NYWtlZmlsZToxNTA6b2JqLSQoQ09ORklHX0NIUl9ERVZfU0cpXHQmIzQzOz0gc2cub1xuZHJpdmVycy9zY3NpL01ha2VmaWxlLTE1MS1vYmotJChDT05GSUdfQ0hSX0RFVl9TQ0gpXHQmIzQzOz0gY2gub1xuLS1cbmRyaXZlcnMvc2NzaS9NYWtlZmlsZT0xNjk9c2NzaV9tb2QtJChDT05GSUdfU0NTSV9ESClcdCYjNDM7PSBzY3NpX2RoLm9cbmRyaXZlcnMvc2NzaS9NYWtlZmlsZToxNzA6c2NzaV9tb2QtJChDT05GSUdfQkxLX0RFVl9CU0cpXHQmIzQzOz0gc2NzaV9ic2cub1xuZHJpdmVycy9zY3NpL01ha2VmaWxlLTE3MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjIwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIFNjYXR0ZXItR2F0aGVyIERldmljZSBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIEkgc2VlIHRoZSBwcm9qZWN0IHJlcXVpcmVzIGBDT05GSUdfQ0hSX0RFVl9TR2AuIFRoYXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzb21lIHNjYXR0ZXItZ2F0aGVyIGZ1bmN0aW9uYWxpdHksIGxpa2VseSBpbnZvbHZpbmcgY2hhcmFjdGVyIGRldmljZXMuIE15IG5leHQgdGhvdWdodCBpcyB0byB0cmFjZSB0aGUgZmxvdyDigJMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgYHNnX2J1aWxkX2luZGlyZWN0YCBpcyB0cnVseSBiZWluZyB1dGlsaXplZCBpbiB0aGUgc3lzdGVtLiBXaGVyZSBpcyBpdCBiZWluZyBjYWxsZWQgZnJvbT8gSSBrbm93IGBzZ19idWlsZF9zZ2F0YCBpcyBhIGNvbW1vbiBlbnRyeSBwb2ludCwgb3Igc29tZXRoaW5nIHZlcnkgc2ltaWxhciwgc28gSSBzaG91bGQgYmUgYWJsZSB0byBnZXQgYSBxdWljayBoYW5kbGUgb24gd2hldGhlciBpdCYjMzk7cyBvbiB0aGUgY2FsbCBzdGFjay4gTGV0JiMzOTtzIHNlZSBpZiB0aGUgY29kZSBjb25maXJtcyB0aGlzIHJlYWNoYWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZ19idWlsZF9pbmRpcmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvc2NzaS9zZy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvc2NzaS9zZy5jPTE4Mj1zdGF0aWMgaW50IHNnX2ZpbmlzaF9yZW1fcmVxKFNnX3JlcXVlc3QgKiBzcnApO1xuZHJpdmVycy9zY3NpL3NnLmM6MTgzOnN0YXRpYyBpbnQgc2dfYnVpbGRfaW5kaXJlY3QoU2dfc2NhdHRlcl9ob2xkICogc2NocCwgU2dfZmQgKiBzZnAsIGludCBidWZmX3NpemUpO1xuZHJpdmVycy9zY3NpL3NnLmMtMTg0LXN0YXRpYyBzc2l6ZV90IHNnX25ld19yZWFkKFNnX2ZkICogc2ZwLCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY291bnQsXG4tLVxuZHJpdmVycy9zY3NpL3NnLmM9MTczMT1zZ19zdGFydF9yZXEoU2dfcmVxdWVzdCAqc3JwLCB1bnNpZ25lZCBjaGFyICpjbWQpXG4tLVxuZHJpdmVycy9zY3NpL3NnLmMtMTgwMi1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvc2NzaS9zZy5jOjE4MDM6XHRcdFx0cmVzID0gc2dfYnVpbGRfaW5kaXJlY3QocmVxX3NjaHAsIHNmcCwgZHhmZXJfbGVuKTtcbmRyaXZlcnMvc2NzaS9zZy5jLTE4MDQtXHRcdFx0aWYgKHJlcykge1xuLS1cbmRyaXZlcnMvc2NzaS9zZy5jPTE4NzM9c3RhdGljIGludFxuZHJpdmVycy9zY3NpL3NnLmM6MTg3NDpzZ19idWlsZF9pbmRpcmVjdChTZ19zY2F0dGVyX2hvbGQgKiBzY2hwLCBTZ19mZCAqIHNmcCwgaW50IGJ1ZmZfc2l6ZSlcbmRyaXZlcnMvc2NzaS9zZy5jLTE4NzUte1xuLS1cbmRyaXZlcnMvc2NzaS9zZy5jLTE4ODgtXHRTQ1NJX0xPR19USU1FT1VUKDQsIHNnX3ByaW50ayhLRVJOX0lORk8sIHNmcC1cdTAwM2VwYXJlbnRkcCxcbmRyaXZlcnMvc2NzaS9zZy5jOjE4ODk6XHRcdFwmIzM0O3NnX2J1aWxkX2luZGlyZWN0OiBidWZmX3NpemU9JWQsIGJsa19zaXplPSVkXFxuXCYjMzQ7LFxuZHJpdmVycy9zY3NpL3NnLmMtMTg5MC1cdFx0YnVmZl9zaXplLCBibGtfc2l6ZSkpO1xuLS1cbmRyaXZlcnMvc2NzaS9zZy5jLTE5MTQtXHRTQ1NJX0xPR19USU1FT1VUKDUsIHNnX3ByaW50ayhLRVJOX0lORk8sIHNmcC1cdTAwM2VwYXJlbnRkcCxcbmRyaXZlcnMvc2NzaS9zZy5jOjE5MTU6XHRcdFx0IFwmIzM0O3NnX2J1aWxkX2luZGlyZWN0OiBrX3VzZV9zZz0lZCwgcmVtX3N6PSVkXFxuXCYjMzQ7LFxuZHJpdmVycy9zY3NpL3NnLmMtMTkxNi1cdFx0XHQgaywgcmVtX3N6KSk7XG4tLVxuZHJpdmVycy9zY3NpL3NnLmM9MTk4OT1zZ19idWlsZF9yZXNlcnZlKFNnX2ZkICogc2ZwLCBpbnQgcmVxX3NpemUpXG4tLVxuZHJpdmVycy9zY3NpL3NnLmMtMTk5Ny1cdFx0XHRyZXFfc2l6ZSA9IFBBR0VfU0laRTtcbmRyaXZlcnMvc2NzaS9zZy5jOjE5OTg6XHRcdGlmICgwID09IHNnX2J1aWxkX2luZGlyZWN0KHNjaHAsIHNmcCwgcmVxX3NpemUpKVxuZHJpdmVycy9zY3NpL3NnLmMtMTk5OS1cdFx0XHRyZXR1cm47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA5OAoJCQkJCQkJb3V0cHV0OiAxNDkKCQkJCQkJCXRob3VnaHRzOiAzMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFNDU0kgR2VuZXJpYyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgU0NTSSBnZW5lcmljIGRyaXZlciwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgcHJldHR5IGltcG9ydGFudC4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyAqZGVmaW5pdGVseSogc29tZXRoaW5nIHdlIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0bywgYXMgaXQmIzM5O3MgZGlyZWN0bHkgaW1wYWN0aW5nIGNvcmUgZnVuY3Rpb25hbGl0eSBhY2Nlc3NpYmxlIHZpYSBgL2Rldi9zZypgIGRldmljZXMuIEl0IGxvb2tzIGxpa2UgYHNnX2J1aWxkX2luZGlyZWN0YCBpcyBhIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbiwgYXMgaXQmIzM5O3MgdGhlIHRhcmdldCBvZiB0aGUgY2hhbmdlcy4gSSBjYW4gc2VlIHRoYXQgaXQmIzM5O3MgY2FsbGVkIGZyb20gYm90aCBgc2dfc3RhcnRfcmVxYCBhbmQgYHNnX2J1aWxkX3Jlc2VydmVgLCBhbmQsIGluIHR1cm4sIGBzZ19zdGFydF9yZXFgIGl0c2VsZiBpcyBjYWxsZWQgYnkgYHNnX25ld193cml0ZWAgYW5kIGFsc28sIGltcG9ydGFudGx5LCB2aWEgYHNnX2lvY3RsYCBmb3IgYFNHX0lPYCByZXF1ZXN0cy4gVGhpcyBjb25maXJtcyB0aGF0IHRoZXNlIGNvZGUgcGF0aHMgYXJlIGxpdmUgYW5kIGNhbiBiZSB0ZXN0ZWQuCgpUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgYWJvdXQgbW9kaWZ5aW5nIGhvdyB3ZSBzZXQgYW5kIHZhbGlkYXRlIGBzY2F0dGVyX2VsZW1fc3pgLCBhIG1vZHVsZSBwYXJhbWV0ZXIsIGFuZCBob3cgdGhpcyBzaXplIHZhbHVlIGlzIHRoZW4gdXNlZCB3aXRoaW4gYHNnX2J1aWxkX2luZGlyZWN0YCB3aGVuIGFsbG9jYXRpbmcgc2NhdHRlci1nYXRoZXIgbGlzdHMuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCBgc2NhdHRlcl9lbGVtX3N6YCBpcyBhbHNvIGEgZm9jdXMgaGVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZnV6emluZyBmb2N1c2VzIG9uIHRob3NlLCBhcyB3ZWxsLgoKSSBjYW4gY29uZmlybSB0aGF0IGBzY2F0dGVyX2VsZW1fc3pfc2V0YCBpcyBhIHZhbGlkIHN5bWJvbCBhbmQgaXMsIGluIGZhY3QsIGEgc3RhdGljIGZ1bmN0aW9uIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoLiBUaGlzIGNvbmZpcm1zIEkgc2hvdWxkIGtlZXAgYW4gZXllIG9uIGl0LiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gaWYgYW55IG90aGVyIHJlbGV2YW50IGZ1bmN0aW9ucyBhcmUgaW1wYWN0ZWQuIE9rYXksIGBzZ19yZW1vdmVfZGV2aWNlYCBhbmQgYGRlZl9yZXNlcnZlZF9zaXplX3NldGAgYXJlIHVudG91Y2hlZCwgYWx0aG91Z2ggdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgY29udGV4dC4gYGluaXRfc2dgIGlzIG1vZGlmaWVkIChzcGVjaWZpY2FsbHksIHNvbWUgbG9naWMgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIGl0KS4KCkFscmlnaHQsIHNvIHRoZSBtYWpvciB0YXJnZXRzIGZvciBmdXp6aW5nIGFuZCB0ZXN0aW5nIGFyZSBgc2dfYnVpbGRfaW5kaXJlY3RgIGFuZCBgc2NhdHRlcl9lbGVtX3N6X3NldGAuIEl0JiMzOTtzIGEgaGlnaC1wcmlvcml0eSBpdGVtIGdpdmVuIGl0JiMzOTtzIGZ1bmRhbWVudGFsIHRvIHNnIGRyaXZlciBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gc2V0IHRob3NlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NIUl9ERVZfU0cmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzZ19idWlsZF9pbmRpcmVjdCYjMzQ7LAogICAgJiMzNDtzY2F0dGVyX2VsZW1fc3pfc2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyBhbmQgdmFsaWRhdGluZyB0aGUgYHNjYXR0ZXJfZWxlbV9zemAgbW9kdWxlIHBhcmFtZXRlciBhbmQgaG93IGl0IGlzIHVzZWQgaW4gYHNnX2J1aWxkX2luZGlyZWN0YCB0byBhbGxvY2F0ZSBzY2F0dGVyLWdhdGhlciBsaXN0cy4gVGhpcyBhZmZlY3RzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFNDU0kgZ2VuZXJpYyAoc2cpIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBgL2Rldi9zZypgIGRldmljZXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBzZ19idWlsZF9pbmRpcmVjdGAgYW5kIHRoZSBwYXJhbWV0ZXIgc2V0dGVyIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBtZW1vcnkgaXNzdWVzIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDSFJfREVWX1NHJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2dfYnVpbGRfaW5kaXJlY3QmIzM0OywKICAgICYjMzQ7c2NhdHRlcl9lbGVtX3N6X3NldCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNldHRpbmcgYW5kIHZhbGlkYXRpbmcgdGhlIGBzY2F0dGVyX2VsZW1fc3pgIG1vZHVsZSBwYXJhbWV0ZXIgYW5kIGhvdyBpdCBpcyB1c2VkIGluIGBzZ19idWlsZF9pbmRpcmVjdGAgdG8gYWxsb2NhdGUgc2NhdHRlci1nYXRoZXIgbGlzdHMuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBTQ1NJIGdlbmVyaWMgKHNnKSBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYC9kZXYvc2cqYCBkZXZpY2VzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBgc2dfYnVpbGRfaW5kaXJlY3RgIGFuZCB0aGUgcGFyYW1ldGVyIHNldHRlciB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbWVtb3J5IGlzc3VlcyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUyOjQ4LjA4NzMyNzYwNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NjMwOTQ5MTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNIUl9ERVZfU0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzZ19idWlsZF9pbmRpcmVjdFwiLFxuICAgIFwic2NhdHRlcl9lbGVtX3N6X3NldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyBhbmQgdmFsaWRhdGluZyB0aGUgYHNjYXR0ZXJfZWxlbV9zemAgbW9kdWxlIHBhcmFtZXRlciBhbmQgaG93IGl0IGlzIHVzZWQgaW4gYHNnX2J1aWxkX2luZGlyZWN0YCB0byBhbGxvY2F0ZSBzY2F0dGVyLWdhdGhlciBsaXN0cy4gVGhpcyBhZmZlY3RzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFNDU0kgZ2VuZXJpYyAoc2cpIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBgL2Rldi9zZypgIGRldmljZXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBzZ19idWlsZF9pbmRpcmVjdGAgYW5kIHRoZSBwYXJhbWV0ZXIgc2V0dGVyIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBtZW1vcnkgaXNzdWVzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1Mjo0OC4wODczNDA3NDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNTQzNjY3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDYxNGEzNWJmNGI4Zjg5OTAzY2Y5NGJhYTU5ZDcyYTJjMWM1ZTNhMjZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgOCAxNjo1Mjo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2cuYyBiL2RyaXZlcnMvc2NzaS9zZy5jXFxuaW5kZXggNzRjZDRlOGE2MWMyYTAuLjM3N2MzZTFkZWU3ZmY5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvc2NzaS9zZy5jXFxuKysrIGIvZHJpdmVycy9zY3NpL3NnLmNcXG5AQCAtOTIsNyArOTIsNiBAQCBzdGF0aWMgaW50IGRlZl9yZXNlcnZlZF9zaXplID0gU0dfREVGX1JFU0VSVkVEX1NJWkU7XFxuIHN0YXRpYyBpbnQgc2dfYWxsb3dfZGlvID0gU0dfQUxMT1dfRElPX0RFRjtcXG4gXFxuIHN0YXRpYyBpbnQgc2NhdHRlcl9lbGVtX3N6ID0gU0dfU0NBVFRFUl9TWjtcXG4tc3RhdGljIGludCBzY2F0dGVyX2VsZW1fc3pfcHJldiA9IFNHX1NDQVRURVJfU1o7XFxuIFxcbiAjZGVmaW5lIFNHX1NFQ1RPUl9TWiA1MTJcXG4gXFxuQEAgLTE2MjIsOCArMTYyMSwzNCBAQCBzZ19yZW1vdmVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmNsX2RldilcXG4gXFx0a3JlZl9wdXQoXFx1MDAyNnNkcC1cXHUwMDNlZF9yZWYsIHNnX2RldmljZV9kZXN0cm95KTtcXG4gfVxcbiBcXG4tbW9kdWxlX3BhcmFtX25hbWVkKHNjYXR0ZXJfZWxlbV9zeiwgc2NhdHRlcl9lbGVtX3N6LCBpbnQsIFNfSVJVR08gfCBTX0lXVVNSKTtcXG4tbW9kdWxlX3BhcmFtX25hbWVkKGFsbG93X2Rpbywgc2dfYWxsb3dfZGlvLCBpbnQsIFNfSVJVR08gfCBTX0lXVVNSKTtcXG4rc3RhdGljIGludCBzY2F0dGVyX2VsZW1fc3pfc2V0KGNvbnN0IGNoYXIgKnZhbCwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXFxuK3tcXG4rXFx0aW50IHJldCwgbmV3X3ZhbCwgb3JkZXI7XFxuK1xcbitcXHRyZXQgPSBrc3RydG9pbnQodmFsLCAwLCBcXHUwMDI2bmV3X3ZhbCk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHRpZiAobmV3X3ZhbCBcXHUwMDNjPSAwKSB7XFxuK1xcdFxcdHByX2VycihcXFwic2c6IHNjYXR0ZXJfZWxlbV9zeiBtdXN0IGJlIHBvc2l0aXZlLCBnb3QgJWRcXFxcblxcXCIsIG5ld192YWwpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4rXFx0b3JkZXIgPSBnZXRfb3JkZXIobmV3X3ZhbCk7XFxuK1xcdGlmIChvcmRlciBcXHUwMDNlIE1BWF9QQUdFX09SREVSKSB7XFxuK1xcdFxcdHByX2VycihcXFwic2c6IHNjYXR0ZXJfZWxlbV9zeiB0b28gbGFyZ2UgKG9yZGVyICVkIFxcdTAwM2UgTUFYX1BBR0VfT1JERVIgJWQpXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRvcmRlciwgTUFYX1BBR0VfT1JERVIpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4rXFx0c2NhdHRlcl9lbGVtX3N6ID0gMSBcXHUwMDNjXFx1MDAzYyAoUEFHRV9TSElGVCArIG9yZGVyKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK21vZHVsZV9wYXJhbV9jYWxsKHNjYXR0ZXJfZWxlbV9zeiwgc2NhdHRlcl9lbGVtX3N6X3NldCwgcGFyYW1fZ2V0X2ludCxcXG4rXFx0XFx0ICBcXHUwMDI2c2NhdHRlcl9lbGVtX3N6LCAwNjQ0KTtcXG4rXFxuK21vZHVsZV9wYXJhbV9uYW1lZChhbGxvd19kaW8sIHNnX2FsbG93X2RpbywgaW50LCAwNjQ0KTtcXG4gXFxuIHN0YXRpYyBpbnQgZGVmX3Jlc2VydmVkX3NpemVfc2V0KGNvbnN0IGNoYXIgKnZhbCwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXFxuIHtcXG5AQCAtMTY0OSw4ICsxNjc0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIGRlZl9yZXNlcnZlZF9zaXplX29wcyA9IHtcXG4gXFx0LmdldFxcdD0gcGFyYW1fZ2V0X2ludCxcXG4gfTtcXG4gXFxuLW1vZHVsZV9wYXJhbV9jYihkZWZfcmVzZXJ2ZWRfc2l6ZSwgXFx1MDAyNmRlZl9yZXNlcnZlZF9zaXplX29wcywgXFx1MDAyNmRlZl9yZXNlcnZlZF9zaXplLFxcbi1cXHRcXHQgICBTX0lSVUdPIHwgU19JV1VTUik7XFxuK21vZHVsZV9wYXJhbV9jYihkZWZfcmVzZXJ2ZWRfc2l6ZSwgXFx1MDAyNmRlZl9yZXNlcnZlZF9zaXplX29wcywgXFx1MDAyNmRlZl9yZXNlcnZlZF9zaXplLCAwNjQ0KTtcXG4gXFxuIE1PRFVMRV9BVVRIT1IoXFxcIkRvdWdsYXMgR2lsYmVydFxcXCIpO1xcbiBNT0RVTEVfREVTQ1JJUFRJT04oXFxcIlNDU0kgZ2VuZXJpYyAoc2cpIGRyaXZlclxcXCIpO1xcbkBAIC0xNjY4LDExICsxNjkyLDYgQEAgaW5pdF9zZyh2b2lkKVxcbiB7XFxuIFxcdGludCByYztcXG4gXFxuLVxcdGlmIChzY2F0dGVyX2VsZW1fc3ogXFx1MDAzYyBQQUdFX1NJWkUpIHtcXG4tXFx0XFx0c2NhdHRlcl9lbGVtX3N6ID0gUEFHRV9TSVpFO1xcbi1cXHRcXHRzY2F0dGVyX2VsZW1fc3pfcHJldiA9IHNjYXR0ZXJfZWxlbV9zejtcXG4tXFx0fVxcbi1cXG4gXFx0cmMgPSByZWdpc3Rlcl9jaHJkZXZfcmVnaW9uKE1LREVWKFNDU0lfR0VORVJJQ19NQUpPUiwgMCksIFxcbiBcXHRcXHRcXHRcXHQgICAgU0dfTUFYX0RFVlMsIFxcXCJzZ1xcXCIpO1xcbiBcXHRpZiAocmMpXFxuQEAgLTE4NTQsOSArMTg3MywxMCBAQCBzZ19idWlsZF9zZ2F0KFNnX3NjYXR0ZXJfaG9sZCAqIHNjaHAsIGNvbnN0IFNnX2ZkICogc2ZwLCBpbnQgdGFibGVzaXplKVxcbiBzdGF0aWMgaW50XFxuIHNnX2J1aWxkX2luZGlyZWN0KFNnX3NjYXR0ZXJfaG9sZCAqIHNjaHAsIFNnX2ZkICogc2ZwLCBpbnQgYnVmZl9zaXplKVxcbiB7XFxuLVxcdGludCByZXRfc3ogPSAwLCBpLCBrLCByZW1fc3osIG51bSwgbXhfc2NfZWxlbXM7XFxuK1xcdGludCByZXRfc3ogPSAwLCBpLCBrLCByZW1fc3osIG14X3NjX2VsZW1zO1xcbiBcXHRpbnQgc2dfdGFibGVzaXplID0gc2ZwLVxcdTAwM2VwYXJlbnRkcC1cXHUwMDNlc2dfdGFibGVzaXplO1xcbiBcXHRpbnQgYmxrX3NpemUgPSBidWZmX3NpemUsIG9yZGVyO1xcbitcXHRpbnQgZWxlbV9zeiA9IHNjYXR0ZXJfZWxlbV9zejtcXG4gXFx0Z2ZwX3QgZ2ZwX21hc2sgPSBHRlBfQVRPTUlDIHwgX19HRlBfQ09NUCB8IF9fR0ZQX05PV0FSTiB8IF9fR0ZQX1pFUk87XFxuIFxcbiBcXHRpZiAoYmxrX3NpemUgXFx1MDAzYyAwKVxcbkBAIC0xODc0LDM5ICsxODk0LDE5IEBAIHNnX2J1aWxkX2luZGlyZWN0KFNnX3NjYXR0ZXJfaG9sZCAqIHNjaHAsIFNnX2ZkICogc2ZwLCBpbnQgYnVmZl9zaXplKVxcbiBcXHRpZiAobXhfc2NfZWxlbXMgXFx1MDAzYyAwKVxcbiBcXHRcXHRyZXR1cm4gbXhfc2NfZWxlbXM7XFx0LyogbW9zdCBsaWtlbHkgLUVOT01FTSAqL1xcbiBcXG4tXFx0bnVtID0gc2NhdHRlcl9lbGVtX3N6O1xcbi1cXHRpZiAodW5saWtlbHkobnVtICE9IHNjYXR0ZXJfZWxlbV9zel9wcmV2KSkge1xcbi1cXHRcXHRpZiAobnVtIFxcdTAwM2MgUEFHRV9TSVpFKSB7XFxuLVxcdFxcdFxcdHNjYXR0ZXJfZWxlbV9zeiA9IFBBR0VfU0laRTtcXG4tXFx0XFx0XFx0c2NhdHRlcl9lbGVtX3N6X3ByZXYgPSBQQUdFX1NJWkU7XFxuLVxcdFxcdH0gZWxzZVxcbi1cXHRcXHRcXHRzY2F0dGVyX2VsZW1fc3pfcHJldiA9IG51bTtcXG4tXFx0fVxcbi1cXG4tXFx0b3JkZXIgPSBnZXRfb3JkZXIobnVtKTtcXG4rXFx0b3JkZXIgPSBnZXRfb3JkZXIoZWxlbV9zeik7XFxuIHJldHJ5OlxcbiBcXHRyZXRfc3ogPSAxIFxcdTAwM2NcXHUwMDNjIChQQUdFX1NISUZUICsgb3JkZXIpO1xcbiBcXG4gXFx0Zm9yIChrID0gMCwgcmVtX3N6ID0gYmxrX3NpemU7IHJlbV9zeiBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgayBcXHUwMDNjIG14X3NjX2VsZW1zO1xcbiBcXHQgICAgIGsrKywgcmVtX3N6IC09IHJldF9zeikge1xcbi1cXG4tXFx0XFx0bnVtID0gKHJlbV9zeiBcXHUwMDNlIHNjYXR0ZXJfZWxlbV9zel9wcmV2KSA/XFxuLVxcdFxcdFxcdHNjYXR0ZXJfZWxlbV9zel9wcmV2IDogcmVtX3N6O1xcbi1cXG4gXFx0XFx0c2NocC1cXHUwMDNlcGFnZXNba10gPSBhbGxvY19wYWdlcyhnZnBfbWFzaywgb3JkZXIpO1xcbiBcXHRcXHRpZiAoIXNjaHAtXFx1MDAzZXBhZ2VzW2tdKVxcbiBcXHRcXHRcXHRnb3RvIG91dDtcXG4gXFxuLVxcdFxcdGlmIChudW0gPT0gc2NhdHRlcl9lbGVtX3N6X3ByZXYpIHtcXG4tXFx0XFx0XFx0aWYgKHVubGlrZWx5KHJldF9zeiBcXHUwMDNlIHNjYXR0ZXJfZWxlbV9zel9wcmV2KSkge1xcbi1cXHRcXHRcXHRcXHRzY2F0dGVyX2VsZW1fc3ogPSByZXRfc3o7XFxuLVxcdFxcdFxcdFxcdHNjYXR0ZXJfZWxlbV9zel9wcmV2ID0gcmV0X3N6O1xcbi1cXHRcXHRcXHR9XFxuLVxcdFxcdH1cXG4tXFxuIFxcdFxcdFNDU0lfTE9HX1RJTUVPVVQoNSwgc2dfcHJpbnRrKEtFUk5fSU5GTywgc2ZwLVxcdTAwM2VwYXJlbnRkcCxcXG4tXFx0XFx0XFx0XFx0IFxcXCJzZ19idWlsZF9pbmRpcmVjdDogaz0lZCwgbnVtPSVkLCByZXRfc3o9JWRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdCBrLCBudW0sIHJldF9zeikpO1xcbitcXHRcXHRcXHRcXHQgXFxcIiVzOiBrPSVkLCByZXRfc3o9JWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCBfX2Z1bmNfXywgaywgcmV0X3N6KSk7XFxuIFxcdH1cXHRcXHQvKiBlbmQgb2YgZm9yIGxvb3AgKi9cXG4gXFxuIFxcdHNjaHAtXFx1MDAzZXBhZ2Vfb3JkZXIgPSBvcmRlcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTI6NDguODk3MTAzNDg3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODgyMTE1OTU5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDSFJfREVWX1NHXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2dfYnVpbGRfaW5kaXJlY3RcIixcbiAgICBcInNjYXR0ZXJfZWxlbV9zel9zZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNldHRpbmcgYW5kIHZhbGlkYXRpbmcgdGhlIGBzY2F0dGVyX2VsZW1fc3pgIG1vZHVsZSBwYXJhbWV0ZXIgYW5kIGhvdyBpdCBpcyB1c2VkIGluIGBzZ19idWlsZF9pbmRpcmVjdGAgdG8gYWxsb2NhdGUgc2NhdHRlci1nYXRoZXIgbGlzdHMuIFRoaXMgYWZmZWN0cyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBTQ1NJIGdlbmVyaWMgKHNnKSBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYC9kZXYvc2cqYCBkZXZpY2VzLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiBgc2dfYnVpbGRfaW5kaXJlY3RgIGFuZCB0aGUgcGFyYW1ldGVyIHNldHRlciB0byBlbnN1cmUgbm8gcmVncmVzc2lvbnMgb3IgbWVtb3J5IGlzc3VlcyBvY2N1ci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2MTRhMzViZjRiOGY4OTkwM2NmOTRiYWE1OWQ3MmEyYzFjNWUzYTI2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAxNjo1Mjo0NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zZy5jIGIvZHJpdmVycy9zY3NpL3NnLmNcbmluZGV4IDc0Y2Q0ZThhNjFjMmEwLi4zNzdjM2UxZGVlN2ZmOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvc2NzaS9zZy5jXG4rKysgYi9kcml2ZXJzL3Njc2kvc2cuY1xuQEAgLTkyLDcgKzkyLDYgQEAgc3RhdGljIGludCBkZWZfcmVzZXJ2ZWRfc2l6ZSA9IFNHX0RFRl9SRVNFUlZFRF9TSVpFO1xuIHN0YXRpYyBpbnQgc2dfYWxsb3dfZGlvID0gU0dfQUxMT1dfRElPX0RFRjtcbiBcbiBzdGF0aWMgaW50IHNjYXR0ZXJfZWxlbV9zeiA9IFNHX1NDQVRURVJfU1o7XG4tc3RhdGljIGludCBzY2F0dGVyX2VsZW1fc3pfcHJldiA9IFNHX1NDQVRURVJfU1o7XG4gXG4gI2RlZmluZSBTR19TRUNUT1JfU1ogNTEyXG4gXG5AQCAtMTYyMiw4ICsxNjIxLDM0IEBAIHNnX3JlbW92ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqY2xfZGV2KVxuIFx0a3JlZl9wdXQoXHUwMDI2c2RwLVx1MDAzZWRfcmVmLCBzZ19kZXZpY2VfZGVzdHJveSk7XG4gfVxuIFxuLW1vZHVsZV9wYXJhbV9uYW1lZChzY2F0dGVyX2VsZW1fc3osIHNjYXR0ZXJfZWxlbV9zeiwgaW50LCBTX0lSVUdPIHwgU19JV1VTUik7XG4tbW9kdWxlX3BhcmFtX25hbWVkKGFsbG93X2Rpbywgc2dfYWxsb3dfZGlvLCBpbnQsIFNfSVJVR08gfCBTX0lXVVNSKTtcbitzdGF0aWMgaW50IHNjYXR0ZXJfZWxlbV9zel9zZXQoY29uc3QgY2hhciAqdmFsLCBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICprcClcbit7XG4rXHRpbnQgcmV0LCBuZXdfdmFsLCBvcmRlcjtcbitcbitcdHJldCA9IGtzdHJ0b2ludCh2YWwsIDAsIFx1MDAyNm5ld192YWwpO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcbitcdGlmIChuZXdfdmFsIFx1MDAzYz0gMCkge1xuK1x0XHRwcl9lcnIoXCJzZzogc2NhdHRlcl9lbGVtX3N6IG11c3QgYmUgcG9zaXRpdmUsIGdvdCAlZFxcblwiLCBuZXdfdmFsKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRvcmRlciA9IGdldF9vcmRlcihuZXdfdmFsKTtcbitcdGlmIChvcmRlciBcdTAwM2UgTUFYX1BBR0VfT1JERVIpIHtcbitcdFx0cHJfZXJyKFwic2c6IHNjYXR0ZXJfZWxlbV9zeiB0b28gbGFyZ2UgKG9yZGVyICVkIFx1MDAzZSBNQVhfUEFHRV9PUkRFUiAlZClcXG5cIixcbitcdFx0XHRvcmRlciwgTUFYX1BBR0VfT1JERVIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbitcdHNjYXR0ZXJfZWxlbV9zeiA9IDEgXHUwMDNjXHUwMDNjIChQQUdFX1NISUZUICsgb3JkZXIpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK21vZHVsZV9wYXJhbV9jYWxsKHNjYXR0ZXJfZWxlbV9zeiwgc2NhdHRlcl9lbGVtX3N6X3NldCwgcGFyYW1fZ2V0X2ludCxcbitcdFx0ICBcdTAwMjZzY2F0dGVyX2VsZW1fc3osIDA2NDQpO1xuK1xuK21vZHVsZV9wYXJhbV9uYW1lZChhbGxvd19kaW8sIHNnX2FsbG93X2RpbywgaW50LCAwNjQ0KTtcbiBcbiBzdGF0aWMgaW50IGRlZl9yZXNlcnZlZF9zaXplX3NldChjb25zdCBjaGFyICp2YWwsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxuIHtcbkBAIC0xNjQ5LDggKzE2NzQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbV9vcHMgZGVmX3Jlc2VydmVkX3NpemVfb3BzID0ge1xuIFx0LmdldFx0PSBwYXJhbV9nZXRfaW50LFxuIH07XG4gXG4tbW9kdWxlX3BhcmFtX2NiKGRlZl9yZXNlcnZlZF9zaXplLCBcdTAwMjZkZWZfcmVzZXJ2ZWRfc2l6ZV9vcHMsIFx1MDAyNmRlZl9yZXNlcnZlZF9zaXplLFxuLVx0XHQgICBTX0lSVUdPIHwgU19JV1VTUik7XG4rbW9kdWxlX3BhcmFtX2NiKGRlZl9yZXNlcnZlZF9zaXplLCBcdTAwMjZkZWZfcmVzZXJ2ZWRfc2l6ZV9vcHMsIFx1MDAyNmRlZl9yZXNlcnZlZF9zaXplLCAwNjQ0KTtcbiBcbiBNT0RVTEVfQVVUSE9SKFwiRG91Z2xhcyBHaWxiZXJ0XCIpO1xuIE1PRFVMRV9ERVNDUklQVElPTihcIlNDU0kgZ2VuZXJpYyAoc2cpIGRyaXZlclwiKTtcbkBAIC0xNjY4LDExICsxNjkyLDYgQEAgaW5pdF9zZyh2b2lkKVxuIHtcbiBcdGludCByYztcbiBcbi1cdGlmIChzY2F0dGVyX2VsZW1fc3ogXHUwMDNjIFBBR0VfU0laRSkge1xuLVx0XHRzY2F0dGVyX2VsZW1fc3ogPSBQQUdFX1NJWkU7XG4tXHRcdHNjYXR0ZXJfZWxlbV9zel9wcmV2ID0gc2NhdHRlcl9lbGVtX3N6O1xuLVx0fVxuLVxuIFx0cmMgPSByZWdpc3Rlcl9jaHJkZXZfcmVnaW9uKE1LREVWKFNDU0lfR0VORVJJQ19NQUpPUiwgMCksIFxuIFx0XHRcdFx0ICAgIFNHX01BWF9ERVZTLCBcInNnXCIpO1xuIFx0aWYgKHJjKVxuQEAgLTE4NTQsOSArMTg3MywxMCBAQCBzZ19idWlsZF9zZ2F0KFNnX3NjYXR0ZXJfaG9sZCAqIHNjaHAsIGNvbnN0IFNnX2ZkICogc2ZwLCBpbnQgdGFibGVzaXplKVxuIHN0YXRpYyBpbnRcbiBzZ19idWlsZF9pbmRpcmVjdChTZ19zY2F0dGVyX2hvbGQgKiBzY2hwLCBTZ19mZCAqIHNmcCwgaW50IGJ1ZmZfc2l6ZSlcbiB7XG4tXHRpbnQgcmV0X3N6ID0gMCwgaSwgaywgcmVtX3N6LCBudW0sIG14X3NjX2VsZW1zO1xuK1x0aW50IHJldF9zeiA9IDAsIGksIGssIHJlbV9zeiwgbXhfc2NfZWxlbXM7XG4gXHRpbnQgc2dfdGFibGVzaXplID0gc2ZwLVx1MDAzZXBhcmVudGRwLVx1MDAzZXNnX3RhYmxlc2l6ZTtcbiBcdGludCBibGtfc2l6ZSA9IGJ1ZmZfc2l6ZSwgb3JkZXI7XG4rXHRpbnQgZWxlbV9zeiA9IHNjYXR0ZXJfZWxlbV9zejtcbiBcdGdmcF90IGdmcF9tYXNrID0gR0ZQX0FUT01JQyB8IF9fR0ZQX0NPTVAgfCBfX0dGUF9OT1dBUk4gfCBfX0dGUF9aRVJPO1xuIFxuIFx0aWYgKGJsa19zaXplIFx1MDAzYyAwKVxuQEAgLTE4NzQsMzkgKzE4OTQsMTkgQEAgc2dfYnVpbGRfaW5kaXJlY3QoU2dfc2NhdHRlcl9ob2xkICogc2NocCwgU2dfZmQgKiBzZnAsIGludCBidWZmX3NpemUpXG4gXHRpZiAobXhfc2NfZWxlbXMgXHUwMDNjIDApXG4gXHRcdHJldHVybiBteF9zY19lbGVtcztcdC8qIG1vc3QgbGlrZWx5IC1FTk9NRU0gKi9cbiBcbi1cdG51bSA9IHNjYXR0ZXJfZWxlbV9zejtcbi1cdGlmICh1bmxpa2VseShudW0gIT0gc2NhdHRlcl9lbGVtX3N6X3ByZXYpKSB7XG4tXHRcdGlmIChudW0gXHUwMDNjIFBBR0VfU0laRSkge1xuLVx0XHRcdHNjYXR0ZXJfZWxlbV9zeiA9IFBBR0VfU0laRTtcbi1cdFx0XHRzY2F0dGVyX2VsZW1fc3pfcHJldiA9IFBBR0VfU0laRTtcbi1cdFx0fSBlbHNlXG4tXHRcdFx0c2NhdHRlcl9lbGVtX3N6X3ByZXYgPSBudW07XG4tXHR9XG4tXG4tXHRvcmRlciA9IGdldF9vcmRlcihudW0pO1xuK1x0b3JkZXIgPSBnZXRfb3JkZXIoZWxlbV9zeik7XG4gcmV0cnk6XG4gXHRyZXRfc3ogPSAxIFx1MDAzY1x1MDAzYyAoUEFHRV9TSElGVCArIG9yZGVyKTtcbiBcbiBcdGZvciAoayA9IDAsIHJlbV9zeiA9IGJsa19zaXplOyByZW1fc3ogXHUwMDNlIDAgXHUwMDI2XHUwMDI2IGsgXHUwMDNjIG14X3NjX2VsZW1zO1xuIFx0ICAgICBrKyssIHJlbV9zeiAtPSByZXRfc3opIHtcbi1cbi1cdFx0bnVtID0gKHJlbV9zeiBcdTAwM2Ugc2NhdHRlcl9lbGVtX3N6X3ByZXYpID9cbi1cdFx0XHRzY2F0dGVyX2VsZW1fc3pfcHJldiA6IHJlbV9zejtcbi1cbiBcdFx0c2NocC1cdTAwM2VwYWdlc1trXSA9IGFsbG9jX3BhZ2VzKGdmcF9tYXNrLCBvcmRlcik7XG4gXHRcdGlmICghc2NocC1cdTAwM2VwYWdlc1trXSlcbiBcdFx0XHRnb3RvIG91dDtcbiBcbi1cdFx0aWYgKG51bSA9PSBzY2F0dGVyX2VsZW1fc3pfcHJldikge1xuLVx0XHRcdGlmICh1bmxpa2VseShyZXRfc3ogXHUwMDNlIHNjYXR0ZXJfZWxlbV9zel9wcmV2KSkge1xuLVx0XHRcdFx0c2NhdHRlcl9lbGVtX3N6ID0gcmV0X3N6O1xuLVx0XHRcdFx0c2NhdHRlcl9lbGVtX3N6X3ByZXYgPSByZXRfc3o7XG4tXHRcdFx0fVxuLVx0XHR9XG4tXG4gXHRcdFNDU0lfTE9HX1RJTUVPVVQoNSwgc2dfcHJpbnRrKEtFUk5fSU5GTywgc2ZwLVx1MDAzZXBhcmVudGRwLFxuLVx0XHRcdFx0IFwic2dfYnVpbGRfaW5kaXJlY3Q6IGs9JWQsIG51bT0lZCwgcmV0X3N6PSVkXFxuXCIsXG4tXHRcdFx0XHQgaywgbnVtLCByZXRfc3opKTtcbitcdFx0XHRcdCBcIiVzOiBrPSVkLCByZXRfc3o9JWRcXG5cIixcbitcdFx0XHRcdCBfX2Z1bmNfXywgaywgcmV0X3N6KSk7XG4gXHR9XHRcdC8qIGVuZCBvZiBmb3IgbG9vcCAqL1xuIFxuIFx0c2NocC1cdTAwM2VwYWdlX29yZGVyID0gb3JkZXI7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjo1Mjo0OC44OTcxMDY2MjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzU0MjE0OTM1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBTRyBEcml2ZXI6IEEgQ2xvc2VyIExvb2sqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIHR3ZWFraW5nIHRoZSBgZHJpdmVycy9zY3NpL3NnLmNgIGNvZGUuIEl0J3MgZm9jdXNlZCBvbiBob3cgdGhlIGBzY2F0dGVyX2VsZW1fc3pgIG1vZHVsZSBwYXJhbWV0ZXIgd29ya3MuIEkgc2VlIHRoZXkndmUgYWRkZWQgYSBgc2NhdHRlcl9lbGVtX3N6X3NldGAgZnVuY3Rpb24gdG8gdmFsaWRhdGUgdGhlIHBhcmFtZXRlciB3aGVuIGl0J3MgY2hhbmdlZC4gU21hcnQgbW92ZSDigJMgZ290dGEga2VlcCB0aG9zZSBwYXJhbWV0ZXJzIGluIGNoZWNrLlxuXG5UaGUgbW9zdCBpbnRlcmVzdGluZyBwYXJ0IGlzIHRoZSBjaGFuZ2UgdG8gYHNnX2J1aWxkX2luZGlyZWN0YC4gVGhleSd2ZSByZW1vdmVkIHRoZSBsb2NhbCB2YWxpZGF0aW9uIG9mIGBzY2F0dGVyX2VsZW1fc3pfcHJldmAsIGFuZCBhcmUgbm93IHJlbHlpbmcgb24gdGhlIHZhbGlkYXRlZCBgc2NhdHRlcl9lbGVtX3N6YCBkaXJlY3RseS4gVGhpcyBpcyBhIHNpZ25pZmljYW50IGxvZ2ljIHNoaWZ0IGluIHRoYXQgZnVuY3Rpb24uXG5cbk15IGluaXRpYWwgdGhvdWdodD8gQWJzb2x1dGVseSwgdGhpcyB3YXJyYW50cyBmdXp6aW5nISBgc2dfYnVpbGRfaW5kaXJlY3RgIGlzIGEga2V5IGZ1bmN0aW9uIGluIGNvbnN0cnVjdGluZyB0aG9zZSBzY2F0dGVyLWdhdGhlciBsaXN0cyBmb3IgU0NTSSBnZW5lcmljIHJlcXVlc3RzLiBUaGUgZmFjdCB0aGF0IGl0J3MgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgYHNnYCBkcml2ZXIg4oCTIHRoaW5rIGBpb2N0bChTR19JTylgIGFuZCBgd3JpdGUoKWAgY2FsbHMgdG8gYC9kZXYvc2cqYCDigJMgbWFrZXMgaXQgYSBwZXJmZWN0IHRhcmdldC4gV2UncmUgcG90ZW50aWFsbHkgbG9va2luZyBhdCBtZW1vcnkgY29ycnVwdGlvbiwgYnVmZmVyIG92ZXJmbG93cywgb3IgZXZlbiBkYXRhIHZhbGlkYXRpb24gaXNzdWVzIGlmIHRoZXkgbWlzc2VkIHNvbWV0aGluZy5cblxuTm93LCBsZXQncyB0YWtlIGEgZGVlcCBkaXZlLiBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSBib3RoIGBzZ19idWlsZF9pbmRpcmVjdGAgYW5kIHRoaXMgbmV3IGBzY2F0dGVyX2VsZW1fc3pfc2V0YCBmdW5jdGlvbi4gVGhlIG1vZHVsZSBwYXJhbWV0ZXIgc2V0dGVyLCBgc2NhdHRlcl9lbGVtX3N6X3NldGAsIGlzIHdoZXJlIHRoZSB2YWxpZGF0aW9uIGlzIGhhcHBlbmluZywgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV3IGNvZGUgaW50ZXJhY3RzIHdpdGggdGhlIGV4aXN0aW5nIGxvZ2ljLlxuXG5JIHNob3VsZCB2ZXJpZnkgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucyB0b28uIExvb2tzIGxpa2UgYGRyaXZlcnMvc2NzaS9zZy5jYCBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfQ0hSX0RFVl9TR2AgaXMgZW5hYmxlZC4gVGltZSB0byBtYWtlIHN1cmUgbXkgZnV6emluZyBlbnZpcm9ubWVudCBoYXMgdGhpcyBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzM4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjkyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTM6MDYuNDM5MjU4NjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc4NjMwOTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNnXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvc2NzaS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Njc2kvTWFrZWZpbGU9MTQ5PW9iai0kKENPTkZJR19CTEtfREVWX1NSKVxcdCs9IHNyX21vZC5vXFxuZHJpdmVycy9zY3NpL01ha2VmaWxlOjE1MDpvYmotJChDT05GSUdfQ0hSX0RFVl9TRylcXHQrPSBzZy5vXFxuZHJpdmVycy9zY3NpL01ha2VmaWxlLTE1MS1vYmotJChDT05GSUdfQ0hSX0RFVl9TQ0gpXFx0Kz0gY2gub1xcbi0tXFxuZHJpdmVycy9zY3NpL01ha2VmaWxlPTE2OT1zY3NpX21vZC0kKENPTkZJR19TQ1NJX0RIKVxcdCs9IHNjc2lfZGgub1xcbmRyaXZlcnMvc2NzaS9NYWtlZmlsZToxNzA6c2NzaV9tb2QtJChDT05GSUdfQkxLX0RFVl9CU0cpXFx0Kz0gc2NzaV9ic2cub1xcbmRyaXZlcnMvc2NzaS9NYWtlZmlsZS0xNzEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUzOjA3LjAxNzg5NzU2MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NzIxNTk2MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBTY2F0dGVyLUdhdGhlciBEZXZpY2UgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIEkgc2VlIHRoZSBwcm9qZWN0IHJlcXVpcmVzIGBDT05GSUdfQ0hSX0RFVl9TR2AuIFRoYXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgd2UncmUgZGVhbGluZyB3aXRoIHNvbWUgc2NhdHRlci1nYXRoZXIgZnVuY3Rpb25hbGl0eSwgbGlrZWx5IGludm9sdmluZyBjaGFyYWN0ZXIgZGV2aWNlcy4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBmbG93IOKAkyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiBgc2dfYnVpbGRfaW5kaXJlY3RgIGlzIHRydWx5IGJlaW5nIHV0aWxpemVkIGluIHRoZSBzeXN0ZW0uIFdoZXJlIGlzIGl0IGJlaW5nIGNhbGxlZCBmcm9tPyBJIGtub3cgYHNnX2J1aWxkX3NnYXRgIGlzIGEgY29tbW9uIGVudHJ5IHBvaW50LCBvciBzb21ldGhpbmcgdmVyeSBzaW1pbGFyLCBzbyBJIHNob3VsZCBiZSBhYmxlIHRvIGdldCBhIHF1aWNrIGhhbmRsZSBvbiB3aGV0aGVyIGl0J3Mgb24gdGhlIGNhbGwgc3RhY2suIExldCdzIHNlZSBpZiB0aGUgY29kZSBjb25maXJtcyB0aGlzIHJlYWNoYWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIyMCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUzOjEwLjQ5MDA2MDQ2NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE0MzY4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2dfYnVpbGRfaW5kaXJlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zY3NpL3NnLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zY3NpL3NnLmM9MTgyPXN0YXRpYyBpbnQgc2dfZmluaXNoX3JlbV9yZXEoU2dfcmVxdWVzdCAqIHNycCk7XFxuZHJpdmVycy9zY3NpL3NnLmM6MTgzOnN0YXRpYyBpbnQgc2dfYnVpbGRfaW5kaXJlY3QoU2dfc2NhdHRlcl9ob2xkICogc2NocCwgU2dfZmQgKiBzZnAsIGludCBidWZmX3NpemUpO1xcbmRyaXZlcnMvc2NzaS9zZy5jLTE4NC1zdGF0aWMgc3NpemVfdCBzZ19uZXdfcmVhZChTZ19mZCAqIHNmcCwgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGNvdW50LFxcbi0tXFxuZHJpdmVycy9zY3NpL3NnLmM9MTczMT1zZ19zdGFydF9yZXEoU2dfcmVxdWVzdCAqc3JwLCB1bnNpZ25lZCBjaGFyICpjbWQpXFxuLS1cXG5kcml2ZXJzL3Njc2kvc2cuYy0xODAyLVxcdFxcdH0gZWxzZSB7XFxuZHJpdmVycy9zY3NpL3NnLmM6MTgwMzpcXHRcXHRcXHRyZXMgPSBzZ19idWlsZF9pbmRpcmVjdChyZXFfc2NocCwgc2ZwLCBkeGZlcl9sZW4pO1xcbmRyaXZlcnMvc2NzaS9zZy5jLTE4MDQtXFx0XFx0XFx0aWYgKHJlcykge1xcbi0tXFxuZHJpdmVycy9zY3NpL3NnLmM9MTg3Mz1zdGF0aWMgaW50XFxuZHJpdmVycy9zY3NpL3NnLmM6MTg3NDpzZ19idWlsZF9pbmRpcmVjdChTZ19zY2F0dGVyX2hvbGQgKiBzY2hwLCBTZ19mZCAqIHNmcCwgaW50IGJ1ZmZfc2l6ZSlcXG5kcml2ZXJzL3Njc2kvc2cuYy0xODc1LXtcXG4tLVxcbmRyaXZlcnMvc2NzaS9zZy5jLTE4ODgtXFx0U0NTSV9MT0dfVElNRU9VVCg0LCBzZ19wcmludGsoS0VSTl9JTkZPLCBzZnAtXFx1MDAzZXBhcmVudGRwLFxcbmRyaXZlcnMvc2NzaS9zZy5jOjE4ODk6XFx0XFx0XFxcInNnX2J1aWxkX2luZGlyZWN0OiBidWZmX3NpemU9JWQsIGJsa19zaXplPSVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvc2NzaS9zZy5jLTE4OTAtXFx0XFx0YnVmZl9zaXplLCBibGtfc2l6ZSkpO1xcbi0tXFxuZHJpdmVycy9zY3NpL3NnLmMtMTkxNC1cXHRTQ1NJX0xPR19USU1FT1VUKDUsIHNnX3ByaW50ayhLRVJOX0lORk8sIHNmcC1cXHUwMDNlcGFyZW50ZHAsXFxuZHJpdmVycy9zY3NpL3NnLmM6MTkxNTpcXHRcXHRcXHQgXFxcInNnX2J1aWxkX2luZGlyZWN0OiBrX3VzZV9zZz0lZCwgcmVtX3N6PSVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvc2NzaS9zZy5jLTE5MTYtXFx0XFx0XFx0IGssIHJlbV9zeikpO1xcbi0tXFxuZHJpdmVycy9zY3NpL3NnLmM9MTk4OT1zZ19idWlsZF9yZXNlcnZlKFNnX2ZkICogc2ZwLCBpbnQgcmVxX3NpemUpXFxuLS1cXG5kcml2ZXJzL3Njc2kvc2cuYy0xOTk3LVxcdFxcdFxcdHJlcV9zaXplID0gUEFHRV9TSVpFO1xcbmRyaXZlcnMvc2NzaS9zZy5jOjE5OTg6XFx0XFx0aWYgKDAgPT0gc2dfYnVpbGRfaW5kaXJlY3Qoc2NocCwgc2ZwLCByZXFfc2l6ZSkpXFxuZHJpdmVycy9zY3NpL3NnLmMtMTk5OS1cXHRcXHRcXHRyZXR1cm47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjUzOjEwLjU5MTUxMzA5NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MTI3MjY5MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFNDU0kgR2VuZXJpYyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBTQ1NJIGdlbmVyaWMgZHJpdmVyLCB3aGljaCBtZWFucyBpdCdzIHByZXR0eSBpbXBvcnRhbnQuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgKmRlZmluaXRlbHkqIHNvbWV0aGluZyB3ZSBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8sIGFzIGl0J3MgZGlyZWN0bHkgaW1wYWN0aW5nIGNvcmUgZnVuY3Rpb25hbGl0eSBhY2Nlc3NpYmxlIHZpYSBgL2Rldi9zZypgIGRldmljZXMuIEl0IGxvb2tzIGxpa2UgYHNnX2J1aWxkX2luZGlyZWN0YCBpcyBhIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbiwgYXMgaXQncyB0aGUgdGFyZ2V0IG9mIHRoZSBjaGFuZ2VzLiBJIGNhbiBzZWUgdGhhdCBpdCdzIGNhbGxlZCBmcm9tIGJvdGggYHNnX3N0YXJ0X3JlcWAgYW5kIGBzZ19idWlsZF9yZXNlcnZlYCwgYW5kLCBpbiB0dXJuLCBgc2dfc3RhcnRfcmVxYCBpdHNlbGYgaXMgY2FsbGVkIGJ5IGBzZ19uZXdfd3JpdGVgIGFuZCBhbHNvLCBpbXBvcnRhbnRseSwgdmlhIGBzZ19pb2N0bGAgZm9yIGBTR19JT2AgcmVxdWVzdHMuIFRoaXMgY29uZmlybXMgdGhhdCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBsaXZlIGFuZCBjYW4gYmUgdGVzdGVkLlxuXG5UaGUgcGF0Y2ggc2VlbXMgdG8gYmUgYWJvdXQgbW9kaWZ5aW5nIGhvdyB3ZSBzZXQgYW5kIHZhbGlkYXRlIGBzY2F0dGVyX2VsZW1fc3pgLCBhIG1vZHVsZSBwYXJhbWV0ZXIsIGFuZCBob3cgdGhpcyBzaXplIHZhbHVlIGlzIHRoZW4gdXNlZCB3aXRoaW4gYHNnX2J1aWxkX2luZGlyZWN0YCB3aGVuIGFsbG9jYXRpbmcgc2NhdHRlci1nYXRoZXIgbGlzdHMuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhhdCBgc2NhdHRlcl9lbGVtX3N6YCBpcyBhbHNvIGEgZm9jdXMgaGVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZnV6emluZyBmb2N1c2VzIG9uIHRob3NlLCBhcyB3ZWxsLlxuXG5JIGNhbiBjb25maXJtIHRoYXQgYHNjYXR0ZXJfZWxlbV9zel9zZXRgIGlzIGEgdmFsaWQgc3ltYm9sIGFuZCBpcywgaW4gZmFjdCwgYSBzdGF0aWMgZnVuY3Rpb24gaW50cm9kdWNlZCBieSB0aGUgcGF0Y2guIFRoaXMgY29uZmlybXMgSSBzaG91bGQga2VlcCBhbiBleWUgb24gaXQuIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSBpZiBhbnkgb3RoZXIgcmVsZXZhbnQgZnVuY3Rpb25zIGFyZSBpbXBhY3RlZC4gT2theSwgYHNnX3JlbW92ZV9kZXZpY2VgIGFuZCBgZGVmX3Jlc2VydmVkX3NpemVfc2V0YCBhcmUgdW50b3VjaGVkLCBhbHRob3VnaCB0aGV5IGFyZSBwcmVzZW50IGluIHRoZSBjb250ZXh0LiBgaW5pdF9zZ2AgaXMgbW9kaWZpZWQgKHNwZWNpZmljYWxseSwgc29tZSBsb2dpYyBoYXMgYmVlbiByZW1vdmVkIGZyb20gaXQpLlxuXG5BbHJpZ2h0LCBzbyB0aGUgbWFqb3IgdGFyZ2V0cyBmb3IgZnV6emluZyBhbmQgdGVzdGluZyBhcmUgYHNnX2J1aWxkX2luZGlyZWN0YCBhbmQgYHNjYXR0ZXJfZWxlbV9zel9zZXRgLiBJdCdzIGEgaGlnaC1wcmlvcml0eSBpdGVtIGdpdmVuIGl0J3MgZnVuZGFtZW50YWwgdG8gc2cgZHJpdmVyIGZ1bmN0aW9uYWxpdHkuIEkgbmVlZCB0byBzZXQgdGhvc2UgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA5OCwiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6NTM6MTcuNTA0MjQ0NDU3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTQwMTE0ODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNIUl9ERVZfU0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzZ19idWlsZF9pbmRpcmVjdFwiLFxuICAgIFwic2NhdHRlcl9lbGVtX3N6X3NldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyBhbmQgdmFsaWRhdGluZyB0aGUgYHNjYXR0ZXJfZWxlbV9zemAgbW9kdWxlIHBhcmFtZXRlciBhbmQgaG93IGl0IGlzIHVzZWQgaW4gYHNnX2J1aWxkX2luZGlyZWN0YCB0byBhbGxvY2F0ZSBzY2F0dGVyLWdhdGhlciBsaXN0cy4gVGhpcyBhZmZlY3RzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFNDU0kgZ2VuZXJpYyAoc2cpIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBgL2Rldi9zZypgIGRldmljZXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBzZ19idWlsZF9pbmRpcmVjdGAgYW5kIHRoZSBwYXJhbWV0ZXIgc2V0dGVyIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBtZW1vcnkgaXNzdWVzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNIUl9ERVZfU0dcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzZ19idWlsZF9pbmRpcmVjdFwiLFxuICAgIFwic2NhdHRlcl9lbGVtX3N6X3NldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyBhbmQgdmFsaWRhdGluZyB0aGUgYHNjYXR0ZXJfZWxlbV9zemAgbW9kdWxlIHBhcmFtZXRlciBhbmQgaG93IGl0IGlzIHVzZWQgaW4gYHNnX2J1aWxkX2luZGlyZWN0YCB0byBhbGxvY2F0ZSBzY2F0dGVyLWdhdGhlciBsaXN0cy4gVGhpcyBhZmZlY3RzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFNDU0kgZ2VuZXJpYyAoc2cpIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBgL2Rldi9zZypgIGRldmljZXMuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIGBzZ19idWlsZF9pbmRpcmVjdGAgYW5kIHRoZSBwYXJhbWV0ZXIgc2V0dGVyIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBtZW1vcnkgaXNzdWVzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowbf67c[1] Phase: Succeeded StartedAt: 2026-07-08 16:53:40 +0000 UTC FinishedAt: 2026-07-08 16:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-08 16:53:40 +0000 UTC FinishedAt: 2026-07-08 16:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[2] Phase: Succeeded StartedAt: 2026-07-08 16:53:40 +0000 UTC FinishedAt: 2026-07-08 21:24:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-08 16:53:40 +0000 UTC FinishedAt: 2026-07-08 21:24:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-08 16:53:40 +0000 UTC FinishedAt: 2026-07-08 16:54:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-08 16:53:40 +0000 UTC FinishedAt: 2026-07-08 16:53:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbf67c/series-workflowbf67c-convert-artifact-1272228608/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-08 16:54:02 +0000 UTC FinishedAt: 2026-07-08 17:43:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-08 16:54:02 +0000 UTC FinishedAt: 2026-07-08 17:43:35 +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:*1b801089-9dad-4f07-bdc4-a9dcce0856a6,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-workflowbf67c/series-workflowbf67c-convert-artifact-1272228608/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": "cf22b7f4-5844-49db-a33c-4ae7ba555b26", "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-workflowbf67c/series-workflowbf67c-build-action-702674374/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-08 16:54:02 +0000 UTC FinishedAt: 2026-07-08 17:43:12 +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:*1b801089-9dad-4f07-bdc4-a9dcce0856a6,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-workflowbf67c/series-workflowbf67c-convert-artifact-1272228608/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": "cf22b7f4-5844-49db-a33c-4ae7ba555b26", "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-workflowbf67c/series-workflowbf67c-build-action-702674374/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-08 17:43:35 +0000 UTC FinishedAt: 2026-07-08 17:43:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-08 17:43:35 +0000 UTC FinishedAt: 2026-07-08 17:43:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-08 17:43:35 +0000 UTC FinishedAt: 2026-07-08 17:43:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-08 17:43:35 +0000 UTC FinishedAt: 2026-07-08 17:43:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbf67c/series-workflowbf67c-convert-artifact-1190989991/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-08 17:43:56 +0000 UTC FinishedAt: 2026-07-08 17:46:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-08 17:43:56 +0000 UTC FinishedAt: 2026-07-08 17:46:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cf22b7f4-5844-49db-a33c-4ae7ba555b26,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-workflowbf67c/series-workflowbf67c-build-action-702674374/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-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-08 17:46:14 +0000 UTC FinishedAt: 2026-07-08 17:46:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-08 17:46:14 +0000 UTC FinishedAt: 2026-07-08 17:46:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-08 17:46:14 +0000 UTC FinishedAt: 2026-07-08 18:20:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-08 17:46:14 +0000 UTC FinishedAt: 2026-07-08 18:20:32 +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:*1b801089-9dad-4f07-bdc4-a9dcce0856a6,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-workflowbf67c/series-workflowbf67c-convert-artifact-1190989991/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": "44bc906b-04c8-4e2f-baa8-575760a3c551", "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-workflowbf67c/series-workflowbf67c-build-action-2538439211/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-08 17:46:14 +0000 UTC FinishedAt: 2026-07-08 18:20:22 +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:*1b801089-9dad-4f07-bdc4-a9dcce0856a6,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-workflowbf67c/series-workflowbf67c-convert-artifact-1190989991/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": "44bc906b-04c8-4e2f-baa8-575760a3c551", "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-workflowbf67c/series-workflowbf67c-build-action-2538439211/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-08 18:20:32 +0000 UTC FinishedAt: 2026-07-08 18:20:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-08 18:20:32 +0000 UTC FinishedAt: 2026-07-08 18:20:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-08 18:20:32 +0000 UTC FinishedAt: 2026-07-08 18:22:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-08 18:20:32 +0000 UTC FinishedAt: 2026-07-08 18:22:21 +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:*44bc906b-04c8-4e2f-baa8-575760a3c551,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-workflowbf67c/series-workflowbf67c-build-action-2538439211/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-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-08 18:22:31 +0000 UTC FinishedAt: 2026-07-08 21:24:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-08 18:22:31 +0000 UTC FinishedAt: 2026-07-08 21:24:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"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:*cf22b7f4-5844-49db-a33c-4ae7ba555b26,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*44bc906b-04c8-4e2f-baa8-575760a3c551,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-workflowbf67c/series-workflowbf67c-build-action-702674374/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-workflowbf67c/series-workflowbf67c-build-action-2538439211/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-08 18:22:31 +0000 UTC FinishedAt: 2026-07-08 18:22:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-08 18:22:31 +0000 UTC FinishedAt: 2026-07-08 18:22:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"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-workflowbf67c/series-workflowbf67c-convert-artifact-3744698880/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-08 18:22:31 +0000 UTC FinishedAt: 2026-07-08 18:22:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-08 18:22:31 +0000 UTC FinishedAt: 2026-07-08 18:22:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-08 18:22:31 +0000 UTC FinishedAt: 2026-07-08 18:22:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-08 18:22:52 +0000 UTC FinishedAt: 2026-07-08 21:24:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbf67c[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["sg_build_indirect","scatter_elem_sz_set"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["CHR_DEV_SG"],"series_id":"5e65c586-b7bd-4bdf-9929-f80d4ea2c812","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-08 18:22:52 +0000 UTC FinishedAt: 2026-07-08 21:24:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cf22b7f4-5844-49db-a33c-4ae7ba555b26,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*44bc906b-04c8-4e2f-baa8-575760a3c551,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-workflowbf67c/series-workflowbf67c-build-action-702674374/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-workflowbf67c/series-workflowbf67c-build-action-2538439211/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-workflowbf67c/series-workflowbf67c-convert-artifact-3744698880/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,}