Name: series-workflowjzctw Phase: Succeeded StartedAt: 2026-07-26 10:43:36 +0000 UTC FinishedAt: 2026-07-26 15:37:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[0] Phase: Succeeded StartedAt: 2026-07-26 10:43:36 +0000 UTC FinishedAt: 2026-07-26 11:14:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[0].run-triage Phase: Succeeded StartedAt: 2026-07-26 10:43:36 +0000 UTC FinishedAt: 2026-07-26 11:14:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "03b0bcd2440b4ace0fb4bdf93e444db6454e7370", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "03b0bcd2440b4ace0fb4bdf93e444db6454e7370", "config_name": "upstream-apparmor-kasan.config", "series_id": "2d188174-f80c-482b-bf14-6502e838acd2" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "blkdev_ioctl", "compat_blkdev_ioctl" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YmxrZGV2X2lvY3RsJiMzNDssCiAgICAmIzM0O2NvbXBhdF9ibGtkZXZfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJMS1NFQ0RJU0NBUkQgaW9jdGwgaGFuZGxlciB0byB1c2UgYmxrX3ZhbGlkYXRlX2J5dGVfcmFuZ2UgZm9yIGJvdW5kcyBjaGVja2luZyBhbmQgZml4ZXMgdGhlIGVuZCByYW5nZSBjYWxjdWxhdGlvbiBmb3IgdHJ1bmNhdGVfYmRldl9yYW5nZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgZGV2aWNlIGlvY3RsIGhhbmRsaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjEzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2YzYWJhM2YwYTJmMzgzYTRiZDRhNzY4Yzc4ODcxNzU5NjFjZmQ1Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDI2IDExOjEzOjMzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2Jsb2NrL2lvY3RsLmMgYi9ibG9jay9pb2N0bC5jXG5pbmRleCAzZDRlYTE1Mzc0NTdkNS4uM2I3ZDMzYTczN2U4ZDUgMTAwNjQ0XG4tLS0gYS9ibG9jay9pb2N0bC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9pb2N0bC5jXG5AQCAtMTc2LDggJiM0MzsxNzYsNyBAQCBzdGF0aWMgaW50IGJsa19pb2N0bF9kaXNjYXJkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcbiBzdGF0aWMgaW50IGJsa19pb2N0bF9zZWN1cmVfZXJhc2Uoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxuIFx0XHR2b2lkIF9fdXNlciAqYXJncClcbiB7XG4tXHR1aW50NjRfdCBzdGFydCwgbGVuLCBlbmQ7XG4tXHR1aW50NjRfdCByYW5nZVsyXTtcbiYjNDM7XHR1aW50NjRfdCByYW5nZVsyXSwgc3RhcnQsIGxlbjtcbiBcdGludCBlcnI7XG4gXG4gXHRpZiAoIShtb2RlIFx1MDAyNiBCTEtfT1BFTl9XUklURSkpXG5AQCAtMTg5LDE1ICYjNDM7MTg4LDEzIEBAIHN0YXRpYyBpbnQgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXG4gXG4gXHRzdGFydCA9IHJhbmdlWzBdO1xuIFx0bGVuID0gcmFuZ2VbMV07XG4tXHRpZiAoKHN0YXJ0IFx1MDAyNiA1MTEpIHx8IChsZW4gXHUwMDI2IDUxMSkpXG4tXHRcdHJldHVybiAtRUlOVkFMO1xuLVx0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdyhzdGFydCwgbGVuLCBcdTAwMjZlbmQpIHx8XG4tXHQgICAgZW5kIFx1MDAzZSBiZGV2X25yX2J5dGVzKGJkZXYpKVxuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRlcnIgPSBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZShiZGV2LCBzdGFydCwgbGVuKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiBcbiBcdGlub2RlX2xvY2soYmRldi1cdTAwM2ViZF9tYXBwaW5nLVx1MDAzZWhvc3QpO1xuIFx0ZmlsZW1hcF9pbnZhbGlkYXRlX2xvY2soYmRldi1cdTAwM2ViZF9tYXBwaW5nKTtcbi1cdGVyciA9IHRydW5jYXRlX2JkZXZfcmFuZ2UoYmRldiwgbW9kZSwgc3RhcnQsIGVuZCAtIDEpO1xuJiM0MztcdGVyciA9IHRydW5jYXRlX2JkZXZfcmFuZ2UoYmRldiwgbW9kZSwgc3RhcnQsIHN0YXJ0ICYjNDM7IGxlbiAtIDEpO1xuIFx0aWYgKCFlcnIpXG4gXHRcdGVyciA9IGJsa2Rldl9pc3N1ZV9zZWN1cmVfZXJhc2UoYmRldiwgc3RhcnQgXHUwMDNlXHUwMDNlIDksIGxlbiBcdTAwM2VcdTAwM2UgOSxcbiBcdFx0XHRcdFx0XHRHRlBfS0VSTkVMKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMToxMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibGtkZXZfaW9jdGwmIzM0OywKICAgICYjMzQ7Y29tcGF0X2Jsa2Rldl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQkxLU0VDRElTQ0FSRCBpb2N0bCBoYW5kbGVyIHRvIHVzZSBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZSBmb3IgYm91bmRzIGNoZWNraW5nIGFuZCBmaXhlcyB0aGUgZW5kIHJhbmdlIGNhbGN1bGF0aW9uIGZvciB0cnVuY2F0ZV9iZGV2X3JhbmdlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBibG9jayBkZXZpY2UgaW9jdGwgaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzZjNhYmEzZjBhMmYzODNhNGJkNGE3NjhjNzg4NzE3NTk2MWNmZDVjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMjYgMTE6MTM6MzMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9ibG9jay9pb2N0bC5jIGIvYmxvY2svaW9jdGwuYwppbmRleCAzZDRlYTE1Mzc0NTdkNS4uM2I3ZDMzYTczN2U4ZDUgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2lvY3RsLmMKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svaW9jdGwuYwpAQCAtMTc2LDggJiM0MzsxNzYsNyBAQCBzdGF0aWMgaW50IGJsa19pb2N0bF9kaXNjYXJkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSwKIHN0YXRpYyBpbnQgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsCiAJCXZvaWQgX191c2VyICphcmdwKQogewotCXVpbnQ2NF90IHN0YXJ0LCBsZW4sIGVuZDsKLQl1aW50NjRfdCByYW5nZVsyXTsKJiM0MzsJdWludDY0X3QgcmFuZ2VbMl0sIHN0YXJ0LCBsZW47CiAJaW50IGVycjsKIAogCWlmICghKG1vZGUgJmFtcDsgQkxLX09QRU5fV1JJVEUpKQpAQCAtMTg5LDE1ICYjNDM7MTg4LDEzIEBAIHN0YXRpYyBpbnQgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsCiAKIAlzdGFydCA9IHJhbmdlWzBdOwogCWxlbiA9IHJhbmdlWzFdOwotCWlmICgoc3RhcnQgJmFtcDsgNTExKSB8fCAobGVuICZhbXA7IDUxMSkpCi0JCXJldHVybiAtRUlOVkFMOwotCWlmIChjaGVja19hZGRfb3ZlcmZsb3coc3RhcnQsIGxlbiwgJmFtcDtlbmQpIHx8Ci0JICAgIGVuZCAmZ3Q7IGJkZXZfbnJfYnl0ZXMoYmRldikpCi0JCXJldHVybiAtRUlOVkFMOwomIzQzOwllcnIgPSBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZShiZGV2LCBzdGFydCwgbGVuKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiAKIAlpbm9kZV9sb2NrKGJkZXYtJmd0O2JkX21hcHBpbmctJmd0O2hvc3QpOwogCWZpbGVtYXBfaW52YWxpZGF0ZV9sb2NrKGJkZXYtJmd0O2JkX21hcHBpbmcpOwotCWVyciA9IHRydW5jYXRlX2JkZXZfcmFuZ2UoYmRldiwgbW9kZSwgc3RhcnQsIGVuZCAtIDEpOwomIzQzOwllcnIgPSB0cnVuY2F0ZV9iZGV2X3JhbmdlKGJkZXYsIG1vZGUsIHN0YXJ0LCBzdGFydCAmIzQzOyBsZW4gLSAxKTsKIAlpZiAoIWVycikKIAkJZXJyID0gYmxrZGV2X2lzc3VlX3NlY3VyZV9lcmFzZShiZGV2LCBzdGFydCAmZ3Q7Jmd0OyA5LCBsZW4gJmd0OyZndDsgOSwKIAkJCQkJCUdGUF9LRVJORUwpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzU1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2VjdXJlIEVyYXNlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgYmxvY2svaW9jdGwuY2AsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZWAuIFRoaXMgc2VlbXMgdG8gYmUgdGhlIGNvcmUgb2YgdGhlIGBCTEtTRUNESVNDQVJEYCBpb2N0bCBoYW5kbGluZy4gVGhlIHBhdGNoIGFwcGVhcnMgdG8gYmUgY2xlYW5pbmcgdXAgdGhlIHZhbGlkYXRpb24gbG9naWMuIEluc3RlYWQgb2YgdGhlIG1hbnVhbCBjaGVja3MgcHJldmlvdXNseSBpbiBwbGFjZSwgaXQmIzM5O3Mgbm93IGxldmVyYWdpbmcgYGJsa192YWxpZGF0ZV9ieXRlX3JhbmdlKGJkZXYsIHN0YXJ0LCBsZW4pYC4gVGhhdCYjMzk7cyBhIGdvb2QgbW92ZTsgYSBkZWRpY2F0ZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiBpcyBhbG1vc3QgYWx3YXlzIHByZWZlcmFibGUgZm9yIG1haW50YWluYWJpbGl0eSBhbmQgY29ycmVjdG5lc3MuIEl0IGFic3RyYWN0cyB0aGUgY29tcGxleGl0aWVzIG9mIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3MsIGFuZCBpZiBpdCYjMzk7cyB3ZWxsLXRlc3RlZCwgcmVkdWNlcyB0aGUgcmlzayBvZiBpbnRyb2R1Y2luZyBzdWJ0bGUgYnVncy4KClRoZSBjaGFuZ2UgYWxzbyBhZmZlY3RzIGhvdyB0aGUgdHJ1bmNhdGlvbiBpcyBoYW5kbGVkLiBQcmV2aW91c2x5LCB0aGVyZSB3YXMgc29tZSBvZmZzZXQgY2FsY3VsYXRpb24gYXJvdW5kIHRoZSBgZW5kYCBwb2ludC4gTm93LCBpdCB1c2VzIGBzdGFydCAmIzQzOyBsZW4gLSAxYCBmb3IgYHRydW5jYXRlX2JkZXZfcmFuZ2VgLCB3aGljaCBpcyBhIGNvbW1vbiBhbmQgdXN1YWxseSBtb3JlIGRpcmVjdCBhcHByb2FjaCB0byBkZWZpbmluZyBhIHJhbmdlIGJvdW5kYXJ5IGluIHRoaXMgY29udGV4dC4gSXQmIzM5O3MgbWFraW5nIHRoZSBsb2dpYyBjbGVhcmVyIGFuZCBlYXNpZXIgdG8gcmVhc29uIGFib3V0LCBzbyBpdCBtYWtlcyBzZW5zZS4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgaW9jdGxgIGNvZGUgaXRzZWxmIHRvIGZ1bGx5IGFwcHJlY2lhdGUgdGhlIGNoYW5nZSBhbmQgd2hhdCBzZWN1cmUgZGlzY2FyZCBhY3R1YWxseSBkb2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Jsa19pb2N0bF9zZWN1cmVfZXJhc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9pb2N0bC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL2lvY3RsLmM9MTIxPXN0YXRpYyBpbnQgYmxrX2lvY3RsX2Rpc2NhcmQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxuLS1cbmJsb2NrL2lvY3RsLmMtMTc1LVxuYmxvY2svaW9jdGwuYzoxNzY6c3RhdGljIGludCBibGtfaW9jdGxfc2VjdXJlX2VyYXNlKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcbmJsb2NrL2lvY3RsLmMtMTc3LVx0XHR2b2lkIF9fdXNlciAqYXJncClcbi0tXG5ibG9jay9pb2N0bC5jPTY0Nz1zdGF0aWMgaW50IGJsa2Rldl9jb21tb25faW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxuLS1cbmJsb2NrL2lvY3RsLmMtNjYwLVx0Y2FzZSBCTEtTRUNESVNDQVJEOlxuYmxvY2svaW9jdGwuYzo2NjE6XHRcdHJldHVybiBibGtfaW9jdGxfc2VjdXJlX2VyYXNlKGJkZXYsIG1vZGUsIGFyZ3ApO1xuYmxvY2svaW9jdGwuYy02NjItXHRjYXNlIEJMS1pFUk9PVVQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwMQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgZGVlcGx5IGZhbWlsaWFyIHdpdGggdGhpcyBsZXZlbCBvZiBrZXJuZWwgZGV2ZWxvcG1lbnQ6CgoqKkRpc3NlY3RpbmcgYSBCTEtTRUNESVNDQVJEIEltcGxlbWVudGF0aW9uKioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgY2FsbCBvcmlnaW5hdGluZyBmcm9tIGBibGtkZXZfY29tbW9uX2lvY3RsYCwgc3BlY2lmaWNhbGx5IGZvciBhIGBCTEtTRUNESVNDQVJEYCBvcGVyYXRpb24uIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHJlY29nbml6ZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGEgcmVmYWN0b3JpbmcsIGxpa2VseSBhaW1lZCBhdCBpbXByb3ZpbmcgY29kZSBjbGFyaXR5IGFuZCBtYWludGFpbmFiaWxpdHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgbmV3IGhlcmUuIEl0IGFwcGVhcnMgdGhleSYjMzk7dmUgcmVwbGFjZWQgb3Blbi1jb2RlZCB2YWxpZGF0aW9uIOKAkyB3aGljaCBpcyBvZnRlbiBhIGJpdCBtZXNzeSBhbmQgZXJyb3ItcHJvbmUg4oCTIHdpdGggYSBjYWxsIHRvIGBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZWAuIFRoYXQmIzM5O3Mgc21hcnQuIFV0aWxpemluZyBhIGRlZGljYXRlZCB2YWxpZGF0aW9uIGZ1bmN0aW9uIHN1Z2dlc3RzIHRoZXkmIzM5O3JlIGNvbnNvbGlkYXRpbmcgdGhpcyBjcnVjaWFsIGNoZWNrIGludG8gYSByZXVzYWJsZSBtb2R1bGUuIE5vdyBJJiMzOTttIGluc3RhbnRseSB3b25kZXJpbmcgd2hhdCB0aGUgZGV0YWlscyBvZiBgYmxrX3ZhbGlkYXRlX2J5dGVfcmFuZ2VgIGFyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzcGVjaWZpYyB2YWxpZGF0aW9ucyBpdCBwZXJmb3JtcyB0byBmdWxseSBncmFzcCB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlIGFuZCB3aGV0aGVyIGl0IGFsaWducyB3aXRoIGJlc3QgcHJhY3RpY2VzIGZvciBibG9jayBkZXZpY2UgaW50ZXJhY3Rpb25zLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgZXhhY3RseSB3aGF0JiMzOTtzIGVuY2Fwc3VsYXRlZCB3aXRoaW4gYGJsa192YWxpZGF0ZV9ieXRlX3JhbmdlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9pb2N0bC5jPTg3PXN0YXRpYyBpbnQgY29tcGF0X2Jsa3BnX2lvY3RsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsXG4tLVxuYmxvY2svaW9jdGwuYy0xMDQtICovXG5ibG9jay9pb2N0bC5jOjEwNTpzdGF0aWMgaW50IGJsa192YWxpZGF0ZV9ieXRlX3JhbmdlKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsXG5ibG9jay9pb2N0bC5jLTEwNi1cdFx0XHRcdCAgIHVpbnQ2NF90IHN0YXJ0LCB1aW50NjRfdCBsZW4pXG4tLVxuYmxvY2svaW9jdGwuYz0xMjE9c3RhdGljIGludCBibGtfaW9jdGxfZGlzY2FyZChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXG4tLVxuYmxvY2svaW9jdGwuYy0xNDEtXHRcdHJldHVybiAtRVBFUk07XG5ibG9jay9pb2N0bC5jOjE0MjpcdGVyciA9IGJsa192YWxpZGF0ZV9ieXRlX3JhbmdlKGJkZXYsIHN0YXJ0LCBsZW4pO1xuYmxvY2svaW9jdGwuYy0xNDMtXHRpZiAoZXJyKVxuLS1cbmJsb2NrL2lvY3RsLmM9MTc2PXN0YXRpYyBpbnQgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXG4tLVxuYmxvY2svaW9jdGwuYy0xOTAtXHRsZW4gPSByYW5nZVsxXTtcbmJsb2NrL2lvY3RsLmM6MTkxOlx0ZXJyID0gYmxrX3ZhbGlkYXRlX2J5dGVfcmFuZ2UoYmRldiwgc3RhcnQsIGxlbik7XG5ibG9jay9pb2N0bC5jLTE5Mi1cdGlmIChlcnIpXG4tLVxuYmxvY2svaW9jdGwuYz04ODc9c3RhdGljIGludCBibGtkZXZfY21kX2Rpc2NhcmQoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLFxuLS1cbmJsb2NrL2lvY3RsLmMtOTAzLVx0XHRyZXR1cm4gLUVQRVJNO1xuYmxvY2svaW9jdGwuYzo5MDQ6XHRlcnIgPSBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZShiZGV2LCBzdGFydCwgbGVuKTtcbmJsb2NrL2lvY3RsLmMtOTA1LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzYyCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIEJsb2NrIElPQ1RMIEhhbmRsaW5nKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBjaGFuZ2VzIHRvIGJsb2NrIElPQ1RMIGhhbmRsaW5nIHVzaW5nIGBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZWAsIHdoaWNoIHZlcmlmaWVzIGFsaWdubWVudCBhbmQgYm91bmRzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXM6ICppcyB0aGlzIGZ1enphYmxlPyogR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCB0aGUgYW5zd2VyIGlzIGEgcmVzb3VuZGluZyAqeWVzKi4gV2UmIzM5O3ZlIGdvdCBhIHByaW1lIHRhcmdldC4KCk15IG1haW4gZm9jdXMgd2lsbCBiZSBvbiBgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZWAgYW5kIGBibGtkZXZfY29tbW9uX2lvY3RsYCDigJMgdGhvc2UgYXJlIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gZGlnIGludG8uIFdlIG5lZWQgdG8gYmUgdGhvcm91Z2guCgpGcm9tIGEgY29uZmlndXJhdGlvbiBwZXJzcGVjdGl2ZSwgYEJMT0NLYCBpcyBhbHdheXMgZW5hYmxlZCwgd2hpY2ggaXMgaGVscGZ1bC4gV2UgaGF2ZSBmbGV4aWJpbGl0eTsgd2UgY2FuIHNwZWNpZnkgbm90aGluZyBvciBqdXN0IGBCTE9DS2AuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgY2hlY2sgaWYgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLCBsaWtlIGBCTEtTRUNESVNDQVJEYCBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLCBpbXBhY3Qgb3IgZGlyZWN0bHkgcmVsYXRlIHRvIGBibGtfaW9jdGxfc2VjdXJlX2VyYXNlYCwgdG8ga25vdyBpZiB0aGVyZSYjMzk7cyBhbnkgY29uZmlnLXNwZWNpZmljIGJlaGF2aW9yIHdlIG5lZWQgdG8gYWNjb3VudCBmb3IgaW4gdGhlIGZ1enplci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCTEtTRUNESVNDQVJEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL2lvY3RsLmM9NjQ3PXN0YXRpYyBpbnQgYmxrZGV2X2NvbW1vbl9pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXG4tLVxuYmxvY2svaW9jdGwuYy02NTktXHRcdHJldHVybiBibGtfaW9jdGxfZGlzY2FyZChiZGV2LCBtb2RlLCBhcmcpO1xuYmxvY2svaW9jdGwuYzo2NjA6XHRjYXNlIEJMS1NFQ0RJU0NBUkQ6XG5ibG9jay9pb2N0bC5jLTY2MS1cdFx0cmV0dXJuIGJsa19pb2N0bF9zZWN1cmVfZXJhc2UoYmRldiwgbW9kZSwgYXJncCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIzOQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENoYW5nZSBpbiBCbG9jayBEZXZpY2UgSU9DVEwgSGFuZGxpbmcqKgoKT2theSwgc28gdGhlcmUmIzM5O3MgYSBjaGFuZ2UgcmVsYXRlZCB0byBgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZWAsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBgQkxPQ0tgIGNvbmZpZy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBkaWcgaW50byB0aGUgYGJsa19pb2N0bF9zZWN1cmVfZXJhc2VgIGZ1bmN0aW9uIGl0c2VsZi4gTGV0JiMzOTtzIHNlZS4uLiBhIHF1aWNrIGNoZWNrIGluIGBibG9jay9pb2N0bC5jYCB3aWxsIHRlbGwgbWUgaWYgaXQmIzM5O3Mgc3RhdGljLiBIbW0sIHllcCwgaXQmIzM5O3Mgc3RhdGljLiBUaGF0JiMzOTtzIGEga2V5IGRldGFpbCEgU2luY2UgaXQmIzM5O3Mgc3RhdGljLCBpdCYjMzk7cyBsaWtlbHkgbm90IHRoZSBkaXJlY3QgZW50cnkgcG9pbnQuIFRoYXQgbWVhbnMgSSBuZWVkIHRvIGJyb2FkZW4gbXkgZm9jdXMuIFRoZSBzdGF0aWMgbmF0dXJlIHN1Z2dlc3RzIHRoYXQgdGhlIGNhbGxpbmcgbWVjaGFuaXNtIG1pZ2h0IGJlIG1vcmUgcmVsZXZhbnQuIEdpdmVuIHRoYXQsIGxldCBtZSBzaGlmdCBteSBhdHRlbnRpb24gdG8gYGJsa2Rldl9jb21tb25faW9jdGxgLiBJdCYjMzk7cyBsaWtlbHkgdGhhdCYjMzk7cyB3aGVyZSB0aGUgY2FsbCB0byBgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZWAgb3JpZ2luYXRlcy4gTm93LCBJIGhhdmUgYSBuZXcgYW5nbGUgdG8gZXhwbG9yZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrZGV2X2NvbW1vbl9pb2N0bCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9pb2N0bC5jPTYxNT1zdGF0aWMgaW50IGJsa2Rldl9ic3pzZXQoc3RydWN0IGZpbGUgKmZpbGUsIGJsa19tb2RlX3QgbW9kZSxcbi0tXG5ibG9jay9pb2N0bC5jLTY0Ni0gKi9cbmJsb2NrL2lvY3RsLmM6NjQ3OnN0YXRpYyBpbnQgYmxrZGV2X2NvbW1vbl9pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXG5ibG9jay9pb2N0bC5jLTY0OC1cdFx0XHQgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcsXG4tLVxuYmxvY2svaW9jdGwuYy03NDMtICpcbmJsb2NrL2lvY3RsLmM6NzQ0OiAqIE5ldyBjb21tYW5kcyBtdXN0IGJlIGNvbXBhdGlibGUgYW5kIGdvIGludG8gYmxrZGV2X2NvbW1vbl9pb2N0bFxuYmxvY2svaW9jdGwuYy03NDUtICovXG5ibG9jay9pb2N0bC5jPTc0Nj1sb25nIGJsa2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5ibG9jay9pb2N0bC5jLTc4Ny1cbmJsb2NrL2lvY3RsLmM6Nzg4Olx0cmV0ID0gYmxrZGV2X2NvbW1vbl9pb2N0bChiZGV2LCBtb2RlLCBjbWQsIGFyZywgYXJncCk7XG5ibG9jay9pb2N0bC5jLTc4OS1cdGlmIChyZXQgIT0gLUVOT0lPQ1RMQ01EKVxuLS1cbmJsb2NrL2lvY3RsLmM9ODA2PWxvbmcgY29tcGF0X2Jsa2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5ibG9jay9pb2N0bC5jLTg0Ny1cbmJsb2NrL2lvY3RsLmM6ODQ4Olx0cmV0ID0gYmxrZGV2X2NvbW1vbl9pb2N0bChiZGV2LCBtb2RlLCBjbWQsIGFyZywgYXJncCk7XG5ibG9jay9pb2N0bC5jLTg0OS1cdGlmIChyZXQgPT0gLUVOT0lPQ1RMQ01EIFx1MDAyNlx1MDAyNiBkaXNrLVx1MDAzZWZvcHMtXHUwMDNlY29tcGF0X2lvY3RsKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTM1CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgQmxvY2sgRGV2aWNlIElPQ1RMIEhhbmRsaW5nKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGJsb2NrIGRldmljZSBJT0NUTCBmdW5jdGlvbnMuIEkgc2VlIGBibGtkZXZfY29tbW9uX2lvY3RsYCBpcyBkZWZpbmVkIGFzIGBzdGF0aWNgLCB3aGljaCBpc24mIzM5O3QgdW51c3VhbC4gSXQmIzM5O3Mgb2Z0ZW4gdXNlZCBpbnRlcm5hbGx5IHdpdGhpbiB0aGUgYmxvY2sgZGV2aWNlIGxheWVyIGl0c2VsZiwgc28gaXQgbWFrZXMgc2Vuc2UuIEhvd2V2ZXIsIGBibGtkZXZfaW9jdGxgIGlzbiYjMzk7dCBgc3RhdGljYCwgd2hpY2ggaW1tZWRpYXRlbHkgZ3JhYnMgbXkgYXR0ZW50aW9uLiBUaGF0IG1lYW5zIGl0JiMzOTtzIGxpa2VseSB0aGUgcHVibGljIGludGVyZmFjZSwgdGhlIGVudHJ5IHBvaW50IGZvciBJT0NUTCBjYWxscyBmcm9tIHVzZXJzcGFjZS4gSG1tLCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBCZXR0ZXIgZGl2ZSBpbiBhbmQgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBibGtkZXZfaW9jdGxgIHRvIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIHJvdXRpbmcgdGhlc2UgY2FsbHMgYW5kIGhhbmRsaW5nIGRpZmZlcmVudCBJT0NUTCBjb21tYW5kcy4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgbG9naWMgd2lsbCByZXNpZGUuIFRpbWUgdG8gZGlzc2VjdCB0aGlzIGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtibGtkZXZfaW9jdGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svYmxrLXpvbmVkLmM9MzU0PXN0YXRpYyBpbnQgYmxrZGV2X2NvcHlfem9uZV90b191c2VyKHN0cnVjdCBibGtfem9uZSAqem9uZSwgdW5zaWduZWQgaW50IGlkeCxcbi0tXG5ibG9jay9ibGstem9uZWQuYy0zNzAtICogQkxLUkVQT1JUWk9ORSBhbmQgQkxLUkVQT1JUWk9ORVYyIGlvY3RsIHByb2Nlc3NpbmcuXG5ibG9jay9ibGstem9uZWQuYzozNzE6ICogQ2FsbGVkIGZyb20gYmxrZGV2X2lvY3RsLlxuYmxvY2svYmxrLXpvbmVkLmMtMzcyLSAqL1xuLS1cbmJsb2NrL2Jsay16b25lZC5jPTQyMD1zdGF0aWMgaW50IGJsa2Rldl9yZXNldF96b25lKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcbi0tXG5ibG9jay9ibGstem9uZWQuYy00NDktICogQkxLUkVTRVRaT05FLCBCTEtPUEVOWk9ORSwgQkxLQ0xPU0VaT05FIGFuZCBCTEtGSU5JU0haT05FIGlvY3RsIHByb2Nlc3NpbmcuXG5ibG9jay9ibGstem9uZWQuYzo0NTA6ICogQ2FsbGVkIGZyb20gYmxrZGV2X2lvY3RsLlxuYmxvY2svYmxrLXpvbmVkLmMtNDUxLSAqL1xuLS1cbmJsb2NrL2Jsay5oPTY2ND1pbnQgdHJ1bmNhdGVfYmRldl9yYW5nZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXG5ibG9jay9ibGsuaC02NjUtXHRcdGxvZmZfdCBsc3RhcnQsIGxvZmZfdCBsZW5kKTtcbmJsb2NrL2Jsay5oOjY2Njpsb25nIGJsa2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7XG5ibG9jay9ibGsuaC02NjctaW50IGJsa2Rldl91cmluZ19jbWQoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpO1xuYmxvY2svYmxrLmg6NjY4OmxvbmcgY29tcGF0X2Jsa2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7XG5ibG9jay9ibGsuaC02NjktXG4tLVxuYmxvY2svZm9wcy5jPTkyNz1jb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRlZl9ibGtfZm9wcyA9IHtcbi0tXG5ibG9jay9mb3BzLmMtOTM1LVx0LmZzeW5jXHRcdD0gYmxrZGV2X2ZzeW5jLFxuYmxvY2svZm9wcy5jOjkzNjpcdC51bmxvY2tlZF9pb2N0bFx0PSBibGtkZXZfaW9jdGwsXG5ibG9jay9mb3BzLmMtOTM3LSNpZmRlZiBDT05GSUdfQ09NUEFUXG5ibG9jay9mb3BzLmM6OTM4Olx0LmNvbXBhdF9pb2N0bFx0PSBjb21wYXRfYmxrZGV2X2lvY3RsLFxuYmxvY2svZm9wcy5jLTkzOS0jZW5kaWZcbi0tXG5ibG9jay9pb2N0bC5jPTY0Nz1zdGF0aWMgaW50IGJsa2Rldl9jb21tb25faW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxuLS1cbmJsb2NrL2lvY3RsLmMtNzQwLS8qXG5ibG9jay9pb2N0bC5jOjc0MTogKiBBbHdheXMga2VlcCB0aGlzIGluIHN5bmMgd2l0aCBjb21wYXRfYmxrZGV2X2lvY3RsKClcbmJsb2NrL2lvY3RsLmMtNzQyLSAqIHRvIGhhbmRsZSBhbGwgaW5jb21wYXRpYmxlIGNvbW1hbmRzIGluIGJvdGggZnVuY3Rpb25zLlxuLS1cbmJsb2NrL2lvY3RsLmMtNzQ1LSAqL1xuYmxvY2svaW9jdGwuYzo3NDY6bG9uZyBibGtkZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXG5ibG9jay9pb2N0bC5jLTc0Ny17XG4tLVxuYmxvY2svaW9jdGwuYy04MDUtICAgRU5PSU9DVExDTUQgZm9yIHVua25vd24gaW9jdGxzLiAqL1xuYmxvY2svaW9jdGwuYzo4MDY6bG9uZyBjb21wYXRfYmxrZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKVxuYmxvY2svaW9jdGwuYy04MDcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTQ4CgkJCQkJCQlvdXRwdXQ6IDk5CgkJCQkJCQl0aG91Z2h0czogMTc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgVGhpcyBCbG9jayBEZXZpY2UgSU9DVEwgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgc2VlIGhlcmUsIHRoZSBrZXkgZW50cnkgcG9pbnRzIGludG8gdGhpcyBmdW5jdGlvbmFsaXR5IGFyZSBgYmxrZGV2X2lvY3RsYCBhbmQgYGNvbXBhdF9ibGtkZXZfaW9jdGxgLiBJJiMzOTttIG1hcmtpbmcgdGhvc2UgYXMgYEZvY3VzU3ltYm9sc2AsIGFzIHRoZXkgYXJlIHRoZSBzdGFydGluZyBwb2ludHMgZm9yIHRoZSBpb2N0bCBjYWxscyB0aGF0IHdlJiMzOTtyZSBleGFtaW5pbmcuCgpUaGlzIHBhdGNoLCBhcHBhcmVudGx5LCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgYnVnIHdpdGhpbiBgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZWAuIFNwZWNpZmljYWxseSwgaXQgY29uY2VybnMgdGhlIHBvdGVudGlhbCBmb3IgaW50ZWdlciBvdmVyZmxvd3Mgb3IgaW5jb3JyZWN0IGNhbGN1bGF0aW9ucyByZWxhdGVkIHRvIHRoZSBgZW5kYCBwYXJhbWV0ZXIuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHZ1bG5lcmFiaWxpdHkgcG9pbnQgd2hlbiBkZWFsaW5nIHdpdGggcmFuZ2UgY2FsY3VsYXRpb25zLCBzbyB0aGF0JiMzOTtzIGdvb2QgaXQmIzM5O3MgYmVpbmcgYWRkcmVzc2VkLgoKRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHdpdGhpbiB0aGUgaW9jdGwgaGFuZGxpbmcgZm9yIGJsb2NrIGRldmljZXMsIGEgZmFpcmx5IGNlbnRyYWwgcGllY2Ugb2YgdGhlIGtlcm5lbC4gU2luY2UgaXQgZGVhbHMgd2l0aCBzZWN1cmUgZXJhc2UgYW5kIHJhbmdlIGNhbGN1bGF0aW9uLCBmdXp6aW5nIHRoaXMgYXJlYSBzb3VuZHMgbGlrZSBhIHZlcnkgZ29vZCBpZGVhOyBJJiMzOTttIG1hcmtpbmcgdGhhdCBhcyBgdHJ1ZWAuIEkmIzM5O2xsIHdhbnQgdG8gcHJpb3JpdGl6ZSB0aGlzIGFyZWEgaW4gbXkgdGVzdGluZyByZWdpbWUuCgpUaGUgYEVuYWJsZUNvbmZpZ3NgIGFyZSBsaXN0ZWQgYXMgYEJMT0NLYCwgd2hpY2ggaXMgcHJldHR5IG11Y2ggZXhwZWN0ZWQsIGJ1dCBnb29kIHRvIGhhdmUgaXQgZXhwbGljaXRseSBzdGF0ZWQuCgpUaGUgY29yZSBvZiB0aGUgcmVhc29uaW5nIGlzIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgQkxLU0VDRElTQ0FSRGAgaW9jdGwgaGFuZGxlciB0byB1c2UgYGJsa192YWxpZGF0ZV9ieXRlX3JhbmdlYCBmb3IgYm91bmRzIGNoZWNraW5nIGFuZCBmaXhlcyBhbiBlbmQgcmFuZ2UgY2FsY3VsYXRpb24gaXNzdWUgdGhhdCBhZmZlY3RzIGB0cnVuY2F0ZV9iZGV2X3JhbmdlYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFuZCBpbXBhY3RzIGNvcmUgYmxvY2sgZGV2aWNlIElPQ1RMIGhhbmRsaW5nLiBJbiBlc3NlbmNlLCB0aGV5JiMzOTtyZSBzaG9yaW5nIHVwIHNvbWUgd2Vha25lc3NlcyBpbiB0aGUgcmFuZ2UgdmFsaWRhdGlvbiBsb2dpYy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgYGJsa192YWxpZGF0ZV9ieXRlX3JhbmdlYCBpbXBsZW1lbnRhdGlvbiBpdHNlbGYgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLiBEZWZpbml0ZWx5IHdvcnRoIGEgZGVlcGVyIGRpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibGtkZXZfaW9jdGwmIzM0OywKICAgICYjMzQ7Y29tcGF0X2Jsa2Rldl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQkxLU0VDRElTQ0FSRCBpb2N0bCBoYW5kbGVyIHRvIHVzZSBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZSBmb3IgYm91bmRzIGNoZWNraW5nIGFuZCBmaXhlcyB0aGUgZW5kIHJhbmdlIGNhbGN1bGF0aW9uIGZvciB0cnVuY2F0ZV9iZGV2X3JhbmdlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBibG9jayBkZXZpY2UgaW9jdGwgaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YmxrZGV2X2lvY3RsJiMzNDssCiAgICAmIzM0O2NvbXBhdF9ibGtkZXZfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJMS1NFQ0RJU0NBUkQgaW9jdGwgaGFuZGxlciB0byB1c2UgYmxrX3ZhbGlkYXRlX2J5dGVfcmFuZ2UgZm9yIGJvdW5kcyBjaGVja2luZyBhbmQgZml4ZXMgdGhlIGVuZCByYW5nZSBjYWxjdWxhdGlvbiBmb3IgdHJ1bmNhdGVfYmRldl9yYW5nZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgZGV2aWNlIGlvY3RsIGhhbmRsaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6MTM6MzQuNjI3OTU1MTc4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4MjQ5ODg2NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmxrZGV2X2lvY3RsXCIsXG4gICAgXCJjb21wYXRfYmxrZGV2X2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJMS1NFQ0RJU0NBUkQgaW9jdGwgaGFuZGxlciB0byB1c2UgYmxrX3ZhbGlkYXRlX2J5dGVfcmFuZ2UgZm9yIGJvdW5kcyBjaGVja2luZyBhbmQgZml4ZXMgdGhlIGVuZCByYW5nZSBjYWxjdWxhdGlvbiBmb3IgdHJ1bmNhdGVfYmRldl9yYW5nZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgZGV2aWNlIGlvY3RsIGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMToxMzozNC42Mjc5NjE3OThaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4ODM0NDAwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDNmM2FiYTNmMGEyZjM4M2E0YmQ0YTc2OGM3ODg3MTc1OTYxY2ZkNWNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMjYgMTE6MTM6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYmxvY2svaW9jdGwuYyBiL2Jsb2NrL2lvY3RsLmNcXG5pbmRleCAzZDRlYTE1Mzc0NTdkNS4uM2I3ZDMzYTczN2U4ZDUgMTAwNjQ0XFxuLS0tIGEvYmxvY2svaW9jdGwuY1xcbisrKyBiL2Jsb2NrL2lvY3RsLmNcXG5AQCAtMTc2LDggKzE3Niw3IEBAIHN0YXRpYyBpbnQgYmxrX2lvY3RsX2Rpc2NhcmQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxcbiBzdGF0aWMgaW50IGJsa19pb2N0bF9zZWN1cmVfZXJhc2Uoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxcbiBcXHRcXHR2b2lkIF9fdXNlciAqYXJncClcXG4ge1xcbi1cXHR1aW50NjRfdCBzdGFydCwgbGVuLCBlbmQ7XFxuLVxcdHVpbnQ2NF90IHJhbmdlWzJdO1xcbitcXHR1aW50NjRfdCByYW5nZVsyXSwgc3RhcnQsIGxlbjtcXG4gXFx0aW50IGVycjtcXG4gXFxuIFxcdGlmICghKG1vZGUgXFx1MDAyNiBCTEtfT1BFTl9XUklURSkpXFxuQEAgLTE4OSwxNSArMTg4LDEzIEBAIHN0YXRpYyBpbnQgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXFxuIFxcbiBcXHRzdGFydCA9IHJhbmdlWzBdO1xcbiBcXHRsZW4gPSByYW5nZVsxXTtcXG4tXFx0aWYgKChzdGFydCBcXHUwMDI2IDUxMSkgfHwgKGxlbiBcXHUwMDI2IDUxMSkpXFxuLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi1cXHRpZiAoY2hlY2tfYWRkX292ZXJmbG93KHN0YXJ0LCBsZW4sIFxcdTAwMjZlbmQpIHx8XFxuLVxcdCAgICBlbmQgXFx1MDAzZSBiZGV2X25yX2J5dGVzKGJkZXYpKVxcbi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0ZXJyID0gYmxrX3ZhbGlkYXRlX2J5dGVfcmFuZ2UoYmRldiwgc3RhcnQsIGxlbik7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuIFxcbiBcXHRpbm9kZV9sb2NrKGJkZXYtXFx1MDAzZWJkX21hcHBpbmctXFx1MDAzZWhvc3QpO1xcbiBcXHRmaWxlbWFwX2ludmFsaWRhdGVfbG9jayhiZGV2LVxcdTAwM2ViZF9tYXBwaW5nKTtcXG4tXFx0ZXJyID0gdHJ1bmNhdGVfYmRldl9yYW5nZShiZGV2LCBtb2RlLCBzdGFydCwgZW5kIC0gMSk7XFxuK1xcdGVyciA9IHRydW5jYXRlX2JkZXZfcmFuZ2UoYmRldiwgbW9kZSwgc3RhcnQsIHN0YXJ0ICsgbGVuIC0gMSk7XFxuIFxcdGlmICghZXJyKVxcbiBcXHRcXHRlcnIgPSBibGtkZXZfaXNzdWVfc2VjdXJlX2VyYXNlKGJkZXYsIHN0YXJ0IFxcdTAwM2VcXHUwMDNlIDksIGxlbiBcXHUwMDNlXFx1MDAzZSA5LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRHRlBfS0VSTkVMKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6MTM6MzUuMDE3MzAwMzQ3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjY0MzU2MzgxNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmxrZGV2X2lvY3RsXCIsXG4gICAgXCJjb21wYXRfYmxrZGV2X2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJMS1NFQ0RJU0NBUkQgaW9jdGwgaGFuZGxlciB0byB1c2UgYmxrX3ZhbGlkYXRlX2J5dGVfcmFuZ2UgZm9yIGJvdW5kcyBjaGVja2luZyBhbmQgZml4ZXMgdGhlIGVuZCByYW5nZSBjYWxjdWxhdGlvbiBmb3IgdHJ1bmNhdGVfYmRldl9yYW5nZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgZGV2aWNlIGlvY3RsIGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzZjNhYmEzZjBhMmYzODNhNGJkNGE3NjhjNzg4NzE3NTk2MWNmZDVjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMTE6MTM6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9ibG9jay9pb2N0bC5jIGIvYmxvY2svaW9jdGwuY1xuaW5kZXggM2Q0ZWExNTM3NDU3ZDUuLjNiN2QzM2E3MzdlOGQ1IDEwMDY0NFxuLS0tIGEvYmxvY2svaW9jdGwuY1xuKysrIGIvYmxvY2svaW9jdGwuY1xuQEAgLTE3Niw4ICsxNzYsNyBAQCBzdGF0aWMgaW50IGJsa19pb2N0bF9kaXNjYXJkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcbiBzdGF0aWMgaW50IGJsa19pb2N0bF9zZWN1cmVfZXJhc2Uoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxuIFx0XHR2b2lkIF9fdXNlciAqYXJncClcbiB7XG4tXHR1aW50NjRfdCBzdGFydCwgbGVuLCBlbmQ7XG4tXHR1aW50NjRfdCByYW5nZVsyXTtcbitcdHVpbnQ2NF90IHJhbmdlWzJdLCBzdGFydCwgbGVuO1xuIFx0aW50IGVycjtcbiBcbiBcdGlmICghKG1vZGUgXHUwMDI2IEJMS19PUEVOX1dSSVRFKSlcbkBAIC0xODksMTUgKzE4OCwxMyBAQCBzdGF0aWMgaW50IGJsa19pb2N0bF9zZWN1cmVfZXJhc2Uoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxuIFxuIFx0c3RhcnQgPSByYW5nZVswXTtcbiBcdGxlbiA9IHJhbmdlWzFdO1xuLVx0aWYgKChzdGFydCBcdTAwMjYgNTExKSB8fCAobGVuIFx1MDAyNiA1MTEpKVxuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdGlmIChjaGVja19hZGRfb3ZlcmZsb3coc3RhcnQsIGxlbiwgXHUwMDI2ZW5kKSB8fFxuLVx0ICAgIGVuZCBcdTAwM2UgYmRldl9ucl9ieXRlcyhiZGV2KSlcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRlcnIgPSBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZShiZGV2LCBzdGFydCwgbGVuKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4gXG4gXHRpbm9kZV9sb2NrKGJkZXYtXHUwMDNlYmRfbWFwcGluZy1cdTAwM2Vob3N0KTtcbiBcdGZpbGVtYXBfaW52YWxpZGF0ZV9sb2NrKGJkZXYtXHUwMDNlYmRfbWFwcGluZyk7XG4tXHRlcnIgPSB0cnVuY2F0ZV9iZGV2X3JhbmdlKGJkZXYsIG1vZGUsIHN0YXJ0LCBlbmQgLSAxKTtcbitcdGVyciA9IHRydW5jYXRlX2JkZXZfcmFuZ2UoYmRldiwgbW9kZSwgc3RhcnQsIHN0YXJ0ICsgbGVuIC0gMSk7XG4gXHRpZiAoIWVycilcbiBcdFx0ZXJyID0gYmxrZGV2X2lzc3VlX3NlY3VyZV9lcmFzZShiZGV2LCBzdGFydCBcdTAwM2VcdTAwM2UgOSwgbGVuIFx1MDAzZVx1MDAzZSA5LFxuIFx0XHRcdFx0XHRcdEdGUF9LRVJORUwpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6MTM6MzUuMDE3MzAyNDI3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgzMDA1ODY3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNlY3VyZSBFcmFzZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBibG9jay9pb2N0bC5jYCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBibGtfaW9jdGxfc2VjdXJlX2VyYXNlYC4gVGhpcyBzZWVtcyB0byBiZSB0aGUgY29yZSBvZiB0aGUgYEJMS1NFQ0RJU0NBUkRgIGlvY3RsIGhhbmRsaW5nLiBUaGUgcGF0Y2ggYXBwZWFycyB0byBiZSBjbGVhbmluZyB1cCB0aGUgdmFsaWRhdGlvbiBsb2dpYy4gSW5zdGVhZCBvZiB0aGUgbWFudWFsIGNoZWNrcyBwcmV2aW91c2x5IGluIHBsYWNlLCBpdCdzIG5vdyBsZXZlcmFnaW5nIGBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZShiZGV2LCBzdGFydCwgbGVuKWAuIFRoYXQncyBhIGdvb2QgbW92ZTsgYSBkZWRpY2F0ZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiBpcyBhbG1vc3QgYWx3YXlzIHByZWZlcmFibGUgZm9yIG1haW50YWluYWJpbGl0eSBhbmQgY29ycmVjdG5lc3MuIEl0IGFic3RyYWN0cyB0aGUgY29tcGxleGl0aWVzIG9mIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3MsIGFuZCBpZiBpdCdzIHdlbGwtdGVzdGVkLCByZWR1Y2VzIHRoZSByaXNrIG9mIGludHJvZHVjaW5nIHN1YnRsZSBidWdzLlxuXG5UaGUgY2hhbmdlIGFsc28gYWZmZWN0cyBob3cgdGhlIHRydW5jYXRpb24gaXMgaGFuZGxlZC4gUHJldmlvdXNseSwgdGhlcmUgd2FzIHNvbWUgb2Zmc2V0IGNhbGN1bGF0aW9uIGFyb3VuZCB0aGUgYGVuZGAgcG9pbnQuIE5vdywgaXQgdXNlcyBgc3RhcnQgKyBsZW4gLSAxYCBmb3IgYHRydW5jYXRlX2JkZXZfcmFuZ2VgLCB3aGljaCBpcyBhIGNvbW1vbiBhbmQgdXN1YWxseSBtb3JlIGRpcmVjdCBhcHByb2FjaCB0byBkZWZpbmluZyBhIHJhbmdlIGJvdW5kYXJ5IGluIHRoaXMgY29udGV4dC4gSXQncyBtYWtpbmcgdGhlIGxvZ2ljIGNsZWFyZXIgYW5kIGVhc2llciB0byByZWFzb24gYWJvdXQsIHNvIGl0IG1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGBpb2N0bGAgY29kZSBpdHNlbGYgdG8gZnVsbHkgYXBwcmVjaWF0ZSB0aGUgY2hhbmdlIGFuZCB3aGF0IHNlY3VyZSBkaXNjYXJkIGFjdHVhbGx5IGRvZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNTUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMToxMzozOC44NDczNjM0OTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcxMTQ5MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmxrX2lvY3RsX3NlY3VyZV9lcmFzZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9pb2N0bC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL2lvY3RsLmM9MTIxPXN0YXRpYyBpbnQgYmxrX2lvY3RsX2Rpc2NhcmQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxcbi0tXFxuYmxvY2svaW9jdGwuYy0xNzUtXFxuYmxvY2svaW9jdGwuYzoxNzY6c3RhdGljIGludCBibGtfaW9jdGxfc2VjdXJlX2VyYXNlKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcXG5ibG9jay9pb2N0bC5jLTE3Ny1cXHRcXHR2b2lkIF9fdXNlciAqYXJncClcXG4tLVxcbmJsb2NrL2lvY3RsLmM9NjQ3PXN0YXRpYyBpbnQgYmxrZGV2X2NvbW1vbl9pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXFxuLS1cXG5ibG9jay9pb2N0bC5jLTY2MC1cXHRjYXNlIEJMS1NFQ0RJU0NBUkQ6XFxuYmxvY2svaW9jdGwuYzo2NjE6XFx0XFx0cmV0dXJuIGJsa19pb2N0bF9zZWN1cmVfZXJhc2UoYmRldiwgbW9kZSwgYXJncCk7XFxuYmxvY2svaW9jdGwuYy02NjItXFx0Y2FzZSBCTEtaRVJPT1VUOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMToxMzozOC45MDQ0ODMzNFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODEwNDIyMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGRlZXBseSBmYW1pbGlhciB3aXRoIHRoaXMgbGV2ZWwgb2Yga2VybmVsIGRldmVsb3BtZW50OlxuXG4qKkRpc3NlY3RpbmcgYSBCTEtTRUNESVNDQVJEIEltcGxlbWVudGF0aW9uKipcblxuQWxyaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBhIGNhbGwgb3JpZ2luYXRpbmcgZnJvbSBgYmxrZGV2X2NvbW1vbl9pb2N0bGAsIHNwZWNpZmljYWxseSBmb3IgYSBgQkxLU0VDRElTQ0FSRGAgb3BlcmF0aW9uLiBSaWdodCBvZmYgdGhlIGJhdCwgSSByZWNvZ25pemUgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBhIHJlZmFjdG9yaW5nLCBsaWtlbHkgYWltZWQgYXQgaW1wcm92aW5nIGNvZGUgY2xhcml0eSBhbmQgbWFpbnRhaW5hYmlsaXR5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB3aGF0J3MgbmV3IGhlcmUuIEl0IGFwcGVhcnMgdGhleSd2ZSByZXBsYWNlZCBvcGVuLWNvZGVkIHZhbGlkYXRpb24g4oCTIHdoaWNoIGlzIG9mdGVuIGEgYml0IG1lc3N5IGFuZCBlcnJvci1wcm9uZSDigJMgd2l0aCBhIGNhbGwgdG8gYGJsa192YWxpZGF0ZV9ieXRlX3JhbmdlYC4gVGhhdCdzIHNtYXJ0LiBVdGlsaXppbmcgYSBkZWRpY2F0ZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiBzdWdnZXN0cyB0aGV5J3JlIGNvbnNvbGlkYXRpbmcgdGhpcyBjcnVjaWFsIGNoZWNrIGludG8gYSByZXVzYWJsZSBtb2R1bGUuIE5vdyBJJ20gaW5zdGFudGx5IHdvbmRlcmluZyB3aGF0IHRoZSBkZXRhaWxzIG9mIGBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZWAgYXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHNwZWNpZmljIHZhbGlkYXRpb25zIGl0IHBlcmZvcm1zIHRvIGZ1bGx5IGdyYXNwIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UgYW5kIHdoZXRoZXIgaXQgYWxpZ25zIHdpdGggYmVzdCBwcmFjdGljZXMgZm9yIGJsb2NrIGRldmljZSBpbnRlcmFjdGlvbnMuIExldCdzIGRpZyBpbiBhbmQgc2VlIGV4YWN0bHkgd2hhdCdzIGVuY2Fwc3VsYXRlZCB3aXRoaW4gYGJsa192YWxpZGF0ZV9ieXRlX3JhbmdlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAwMSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjEzOjQyLjI4NTUyODA0N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTQxMTUxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svaW9jdGwuYz04Nz1zdGF0aWMgaW50IGNvbXBhdF9ibGtwZ19pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LFxcbi0tXFxuYmxvY2svaW9jdGwuYy0xMDQtICovXFxuYmxvY2svaW9jdGwuYzoxMDU6c3RhdGljIGludCBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LFxcbmJsb2NrL2lvY3RsLmMtMTA2LVxcdFxcdFxcdFxcdCAgIHVpbnQ2NF90IHN0YXJ0LCB1aW50NjRfdCBsZW4pXFxuLS1cXG5ibG9jay9pb2N0bC5jPTEyMT1zdGF0aWMgaW50IGJsa19pb2N0bF9kaXNjYXJkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcXG4tLVxcbmJsb2NrL2lvY3RsLmMtMTQxLVxcdFxcdHJldHVybiAtRVBFUk07XFxuYmxvY2svaW9jdGwuYzoxNDI6XFx0ZXJyID0gYmxrX3ZhbGlkYXRlX2J5dGVfcmFuZ2UoYmRldiwgc3RhcnQsIGxlbik7XFxuYmxvY2svaW9jdGwuYy0xNDMtXFx0aWYgKGVycilcXG4tLVxcbmJsb2NrL2lvY3RsLmM9MTc2PXN0YXRpYyBpbnQgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXFxuLS1cXG5ibG9jay9pb2N0bC5jLTE5MC1cXHRsZW4gPSByYW5nZVsxXTtcXG5ibG9jay9pb2N0bC5jOjE5MTpcXHRlcnIgPSBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZShiZGV2LCBzdGFydCwgbGVuKTtcXG5ibG9jay9pb2N0bC5jLTE5Mi1cXHRpZiAoZXJyKVxcbi0tXFxuYmxvY2svaW9jdGwuYz04ODc9c3RhdGljIGludCBibGtkZXZfY21kX2Rpc2NhcmQoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLFxcbi0tXFxuYmxvY2svaW9jdGwuYy05MDMtXFx0XFx0cmV0dXJuIC1FUEVSTTtcXG5ibG9jay9pb2N0bC5jOjkwNDpcXHRlcnIgPSBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZShiZGV2LCBzdGFydCwgbGVuKTtcXG5ibG9jay9pb2N0bC5jLTkwNS1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMToxMzo0Mi4zNDQ5NDQwNzVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjg3ODg3MTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIEJsb2NrIElPQ1RMIEhhbmRsaW5nKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGNoYW5nZXMgdG8gYmxvY2sgSU9DVEwgaGFuZGxpbmcgdXNpbmcgYGJsa192YWxpZGF0ZV9ieXRlX3JhbmdlYCwgd2hpY2ggdmVyaWZpZXMgYWxpZ25tZW50IGFuZCBib3VuZHMuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpczogKmlzIHRoaXMgZnV6emFibGU/KiBHaXZlbiB0aGF0IGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgdGhlIGFuc3dlciBpcyBhIHJlc291bmRpbmcgKnllcyouIFdlJ3ZlIGdvdCBhIHByaW1lIHRhcmdldC5cblxuTXkgbWFpbiBmb2N1cyB3aWxsIGJlIG9uIGBibGtfaW9jdGxfc2VjdXJlX2VyYXNlYCBhbmQgYGJsa2Rldl9jb21tb25faW9jdGxgIOKAkyB0aG9zZSBhcmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyB0byBkaWcgaW50by4gV2UgbmVlZCB0byBiZSB0aG9yb3VnaC5cblxuRnJvbSBhIGNvbmZpZ3VyYXRpb24gcGVyc3BlY3RpdmUsIGBCTE9DS2AgaXMgYWx3YXlzIGVuYWJsZWQsIHdoaWNoIGlzIGhlbHBmdWwuIFdlIGhhdmUgZmxleGliaWxpdHk7IHdlIGNhbiBzcGVjaWZ5IG5vdGhpbmcgb3IganVzdCBgQkxPQ0tgLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IGNoZWNrIGlmIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucywgbGlrZSBgQkxLU0VDRElTQ0FSRGAgb3IgcmVsYXRlZCBjb25maWd1cmF0aW9ucywgaW1wYWN0IG9yIGRpcmVjdGx5IHJlbGF0ZSB0byBgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZWAsIHRvIGtub3cgaWYgdGhlcmUncyBhbnkgY29uZmlnLXNwZWNpZmljIGJlaGF2aW9yIHdlIG5lZWQgdG8gYWNjb3VudCBmb3IgaW4gdGhlIGZ1enplci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc2MiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMToxMzo0Ni4wMzI4MzM1NjRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc5NjkwODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQkxLU0VDRElTQ0FSRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svaW9jdGwuYz02NDc9c3RhdGljIGludCBibGtkZXZfY29tbW9uX2lvY3RsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcXG4tLVxcbmJsb2NrL2lvY3RsLmMtNjU5LVxcdFxcdHJldHVybiBibGtfaW9jdGxfZGlzY2FyZChiZGV2LCBtb2RlLCBhcmcpO1xcbmJsb2NrL2lvY3RsLmM6NjYwOlxcdGNhc2UgQkxLU0VDRElTQ0FSRDpcXG5ibG9jay9pb2N0bC5jLTY2MS1cXHRcXHRyZXR1cm4gYmxrX2lvY3RsX3NlY3VyZV9lcmFzZShiZGV2LCBtb2RlLCBhcmdwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6MTM6NDYuMDkwODA3MTkyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE0MTA4NzQzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDaGFuZ2UgaW4gQmxvY2sgRGV2aWNlIElPQ1RMIEhhbmRsaW5nKipcblxuT2theSwgc28gdGhlcmUncyBhIGNoYW5nZSByZWxhdGVkIHRvIGBibGtfaW9jdGxfc2VjdXJlX2VyYXNlYCwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIGBCTE9DS2AgY29uZmlnLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZWAgZnVuY3Rpb24gaXRzZWxmLiBMZXQncyBzZWUuLi4gYSBxdWljayBjaGVjayBpbiBgYmxvY2svaW9jdGwuY2Agd2lsbCB0ZWxsIG1lIGlmIGl0J3Mgc3RhdGljLiBIbW0sIHllcCwgaXQncyBzdGF0aWMuIFRoYXQncyBhIGtleSBkZXRhaWwhIFNpbmNlIGl0J3Mgc3RhdGljLCBpdCdzIGxpa2VseSBub3QgdGhlIGRpcmVjdCBlbnRyeSBwb2ludC4gVGhhdCBtZWFucyBJIG5lZWQgdG8gYnJvYWRlbiBteSBmb2N1cy4gVGhlIHN0YXRpYyBuYXR1cmUgc3VnZ2VzdHMgdGhhdCB0aGUgY2FsbGluZyBtZWNoYW5pc20gbWlnaHQgYmUgbW9yZSByZWxldmFudC4gR2l2ZW4gdGhhdCwgbGV0IG1lIHNoaWZ0IG15IGF0dGVudGlvbiB0byBgYmxrZGV2X2NvbW1vbl9pb2N0bGAuIEl0J3MgbGlrZWx5IHRoYXQncyB3aGVyZSB0aGUgY2FsbCB0byBgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZWAgb3JpZ2luYXRlcy4gTm93LCBJIGhhdmUgYSBuZXcgYW5nbGUgdG8gZXhwbG9yZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIzOSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjEzOjUzLjIzMTg5NjU1NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc0NjYxNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmxrZGV2X2NvbW1vbl9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svaW9jdGwuYz02MTU9c3RhdGljIGludCBibGtkZXZfYnN6c2V0KHN0cnVjdCBmaWxlICpmaWxlLCBibGtfbW9kZV90IG1vZGUsXFxuLS1cXG5ibG9jay9pb2N0bC5jLTY0Ni0gKi9cXG5ibG9jay9pb2N0bC5jOjY0NzpzdGF0aWMgaW50IGJsa2Rldl9jb21tb25faW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxcbmJsb2NrL2lvY3RsLmMtNjQ4LVxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyxcXG4tLVxcbmJsb2NrL2lvY3RsLmMtNzQzLSAqXFxuYmxvY2svaW9jdGwuYzo3NDQ6ICogTmV3IGNvbW1hbmRzIG11c3QgYmUgY29tcGF0aWJsZSBhbmQgZ28gaW50byBibGtkZXZfY29tbW9uX2lvY3RsXFxuYmxvY2svaW9jdGwuYy03NDUtICovXFxuYmxvY2svaW9jdGwuYz03NDY9bG9uZyBibGtkZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5ibG9jay9pb2N0bC5jLTc4Ny1cXG5ibG9jay9pb2N0bC5jOjc4ODpcXHRyZXQgPSBibGtkZXZfY29tbW9uX2lvY3RsKGJkZXYsIG1vZGUsIGNtZCwgYXJnLCBhcmdwKTtcXG5ibG9jay9pb2N0bC5jLTc4OS1cXHRpZiAocmV0ICE9IC1FTk9JT0NUTENNRClcXG4tLVxcbmJsb2NrL2lvY3RsLmM9ODA2PWxvbmcgY29tcGF0X2Jsa2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmJsb2NrL2lvY3RsLmMtODQ3LVxcbmJsb2NrL2lvY3RsLmM6ODQ4OlxcdHJldCA9IGJsa2Rldl9jb21tb25faW9jdGwoYmRldiwgbW9kZSwgY21kLCBhcmcsIGFyZ3ApO1xcbmJsb2NrL2lvY3RsLmMtODQ5LVxcdGlmIChyZXQgPT0gLUVOT0lPQ1RMQ01EIFxcdTAwMjZcXHUwMDI2IGRpc2stXFx1MDAzZWZvcHMtXFx1MDAzZWNvbXBhdF9pb2N0bClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6MTM6NTMuMjg5MzY3NTk0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NzA1NDY3OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgQmxvY2sgRGV2aWNlIElPQ1RMIEhhbmRsaW5nKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLi4uIEknbSBsb29raW5nIGF0IHRoZXNlIGJsb2NrIGRldmljZSBJT0NUTCBmdW5jdGlvbnMuIEkgc2VlIGBibGtkZXZfY29tbW9uX2lvY3RsYCBpcyBkZWZpbmVkIGFzIGBzdGF0aWNgLCB3aGljaCBpc24ndCB1bnVzdWFsLiBJdCdzIG9mdGVuIHVzZWQgaW50ZXJuYWxseSB3aXRoaW4gdGhlIGJsb2NrIGRldmljZSBsYXllciBpdHNlbGYsIHNvIGl0IG1ha2VzIHNlbnNlLiBIb3dldmVyLCBgYmxrZGV2X2lvY3RsYCBpc24ndCBgc3RhdGljYCwgd2hpY2ggaW1tZWRpYXRlbHkgZ3JhYnMgbXkgYXR0ZW50aW9uLiBUaGF0IG1lYW5zIGl0J3MgbGlrZWx5IHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB0aGUgZW50cnkgcG9pbnQgZm9yIElPQ1RMIGNhbGxzIGZyb20gdXNlcnNwYWNlLiBIbW0sIHRoYXQncyBpbnRlcmVzdGluZy4gQmV0dGVyIGRpdmUgaW4gYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgYmxrZGV2X2lvY3RsYCB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIHJvdXRpbmcgdGhlc2UgY2FsbHMgYW5kIGhhbmRsaW5nIGRpZmZlcmVudCBJT0NUTCBjb21tYW5kcy4gVGhhdCdzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBsb2dpYyB3aWxsIHJlc2lkZS4gVGltZSB0byBkaXNzZWN0IHRoaXMgZnVuY3Rpb24gYW5kIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkzNSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjEzOjU2LjI1OTkxNjU2MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYxMTQ5MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmxrZGV2X2lvY3RsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9ibGstem9uZWQuYz0zNTQ9c3RhdGljIGludCBibGtkZXZfY29weV96b25lX3RvX3VzZXIoc3RydWN0IGJsa196b25lICp6b25lLCB1bnNpZ25lZCBpbnQgaWR4LFxcbi0tXFxuYmxvY2svYmxrLXpvbmVkLmMtMzcwLSAqIEJMS1JFUE9SVFpPTkUgYW5kIEJMS1JFUE9SVFpPTkVWMiBpb2N0bCBwcm9jZXNzaW5nLlxcbmJsb2NrL2Jsay16b25lZC5jOjM3MTogKiBDYWxsZWQgZnJvbSBibGtkZXZfaW9jdGwuXFxuYmxvY2svYmxrLXpvbmVkLmMtMzcyLSAqL1xcbi0tXFxuYmxvY2svYmxrLXpvbmVkLmM9NDIwPXN0YXRpYyBpbnQgYmxrZGV2X3Jlc2V0X3pvbmUoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxcbi0tXFxuYmxvY2svYmxrLXpvbmVkLmMtNDQ5LSAqIEJMS1JFU0VUWk9ORSwgQkxLT1BFTlpPTkUsIEJMS0NMT1NFWk9ORSBhbmQgQkxLRklOSVNIWk9ORSBpb2N0bCBwcm9jZXNzaW5nLlxcbmJsb2NrL2Jsay16b25lZC5jOjQ1MDogKiBDYWxsZWQgZnJvbSBibGtkZXZfaW9jdGwuXFxuYmxvY2svYmxrLXpvbmVkLmMtNDUxLSAqL1xcbi0tXFxuYmxvY2svYmxrLmg9NjY0PWludCB0cnVuY2F0ZV9iZGV2X3JhbmdlKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcXG5ibG9jay9ibGsuaC02NjUtXFx0XFx0bG9mZl90IGxzdGFydCwgbG9mZl90IGxlbmQpO1xcbmJsb2NrL2Jsay5oOjY2Njpsb25nIGJsa2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7XFxuYmxvY2svYmxrLmgtNjY3LWludCBibGtkZXZfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTtcXG5ibG9jay9ibGsuaDo2Njg6bG9uZyBjb21wYXRfYmxrZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTtcXG5ibG9jay9ibGsuaC02NjktXFxuLS1cXG5ibG9jay9mb3BzLmM9OTI3PWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZGVmX2Jsa19mb3BzID0ge1xcbi0tXFxuYmxvY2svZm9wcy5jLTkzNS1cXHQuZnN5bmNcXHRcXHQ9IGJsa2Rldl9mc3luYyxcXG5ibG9jay9mb3BzLmM6OTM2OlxcdC51bmxvY2tlZF9pb2N0bFxcdD0gYmxrZGV2X2lvY3RsLFxcbmJsb2NrL2ZvcHMuYy05MzctI2lmZGVmIENPTkZJR19DT01QQVRcXG5ibG9jay9mb3BzLmM6OTM4OlxcdC5jb21wYXRfaW9jdGxcXHQ9IGNvbXBhdF9ibGtkZXZfaW9jdGwsXFxuYmxvY2svZm9wcy5jLTkzOS0jZW5kaWZcXG4tLVxcbmJsb2NrL2lvY3RsLmM9NjQ3PXN0YXRpYyBpbnQgYmxrZGV2X2NvbW1vbl9pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXFxuLS1cXG5ibG9jay9pb2N0bC5jLTc0MC0vKlxcbmJsb2NrL2lvY3RsLmM6NzQxOiAqIEFsd2F5cyBrZWVwIHRoaXMgaW4gc3luYyB3aXRoIGNvbXBhdF9ibGtkZXZfaW9jdGwoKVxcbmJsb2NrL2lvY3RsLmMtNzQyLSAqIHRvIGhhbmRsZSBhbGwgaW5jb21wYXRpYmxlIGNvbW1hbmRzIGluIGJvdGggZnVuY3Rpb25zLlxcbi0tXFxuYmxvY2svaW9jdGwuYy03NDUtICovXFxuYmxvY2svaW9jdGwuYzo3NDY6bG9uZyBibGtkZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuYmxvY2svaW9jdGwuYy03NDcte1xcbi0tXFxuYmxvY2svaW9jdGwuYy04MDUtICAgRU5PSU9DVExDTUQgZm9yIHVua25vd24gaW9jdGxzLiAqL1xcbmJsb2NrL2lvY3RsLmM6ODA2OmxvbmcgY29tcGF0X2Jsa2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcXG5ibG9jay9pb2N0bC5jLTgwNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjEzOjU2LjMxNjA0MTU2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMzY4Njk4NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBUaGlzIEJsb2NrIERldmljZSBJT0NUTCBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgc2VlIGhlcmUsIHRoZSBrZXkgZW50cnkgcG9pbnRzIGludG8gdGhpcyBmdW5jdGlvbmFsaXR5IGFyZSBgYmxrZGV2X2lvY3RsYCBhbmQgYGNvbXBhdF9ibGtkZXZfaW9jdGxgLiBJJ20gbWFya2luZyB0aG9zZSBhcyBgRm9jdXNTeW1ib2xzYCwgYXMgdGhleSBhcmUgdGhlIHN0YXJ0aW5nIHBvaW50cyBmb3IgdGhlIGlvY3RsIGNhbGxzIHRoYXQgd2UncmUgZXhhbWluaW5nLlxuXG5UaGlzIHBhdGNoLCBhcHBhcmVudGx5LCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgYnVnIHdpdGhpbiBgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZWAuIFNwZWNpZmljYWxseSwgaXQgY29uY2VybnMgdGhlIHBvdGVudGlhbCBmb3IgaW50ZWdlciBvdmVyZmxvd3Mgb3IgaW5jb3JyZWN0IGNhbGN1bGF0aW9ucyByZWxhdGVkIHRvIHRoZSBgZW5kYCBwYXJhbWV0ZXIuIFRoYXQncyBhIGNsYXNzaWMgdnVsbmVyYWJpbGl0eSBwb2ludCB3aGVuIGRlYWxpbmcgd2l0aCByYW5nZSBjYWxjdWxhdGlvbnMsIHNvIHRoYXQncyBnb29kIGl0J3MgYmVpbmcgYWRkcmVzc2VkLlxuXG5GdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjaGFuZ2Ugd2l0aGluIHRoZSBpb2N0bCBoYW5kbGluZyBmb3IgYmxvY2sgZGV2aWNlcywgYSBmYWlybHkgY2VudHJhbCBwaWVjZSBvZiB0aGUga2VybmVsLiBTaW5jZSBpdCBkZWFscyB3aXRoIHNlY3VyZSBlcmFzZSBhbmQgcmFuZ2UgY2FsY3VsYXRpb24sIGZ1enppbmcgdGhpcyBhcmVhIHNvdW5kcyBsaWtlIGEgdmVyeSBnb29kIGlkZWE7IEknbSBtYXJraW5nIHRoYXQgYXMgYHRydWVgLiBJJ2xsIHdhbnQgdG8gcHJpb3JpdGl6ZSB0aGlzIGFyZWEgaW4gbXkgdGVzdGluZyByZWdpbWUuXG5cblRoZSBgRW5hYmxlQ29uZmlnc2AgYXJlIGxpc3RlZCBhcyBgQkxPQ0tgLCB3aGljaCBpcyBwcmV0dHkgbXVjaCBleHBlY3RlZCwgYnV0IGdvb2QgdG8gaGF2ZSBpdCBleHBsaWNpdGx5IHN0YXRlZC5cblxuVGhlIGNvcmUgb2YgdGhlIHJlYXNvbmluZyBpcyB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYEJMS1NFQ0RJU0NBUkRgIGlvY3RsIGhhbmRsZXIgdG8gdXNlIGBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZWAgZm9yIGJvdW5kcyBjaGVja2luZyBhbmQgZml4ZXMgYW4gZW5kIHJhbmdlIGNhbGN1bGF0aW9uIGlzc3VlIHRoYXQgYWZmZWN0cyBgdHJ1bmNhdGVfYmRldl9yYW5nZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgaW1wYWN0cyBjb3JlIGJsb2NrIGRldmljZSBJT0NUTCBoYW5kbGluZy4gSW4gZXNzZW5jZSwgdGhleSdyZSBzaG9yaW5nIHVwIHNvbWUgd2Vha25lc3NlcyBpbiB0aGUgcmFuZ2UgdmFsaWRhdGlvbiBsb2dpYy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgYmxrX3ZhbGlkYXRlX2J5dGVfcmFuZ2VgIGltcGxlbWVudGF0aW9uIGl0c2VsZiB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMuIERlZmluaXRlbHkgd29ydGggYSBkZWVwZXIgZGl2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk0OCwiT3V0cHV0VG9rZW5zIjo5OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMToxNDowMS40NTI5MTMzNjhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDA4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJsa2Rldl9pb2N0bFwiLFxuICAgIFwiY29tcGF0X2Jsa2Rldl9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCTEtTRUNESVNDQVJEIGlvY3RsIGhhbmRsZXIgdG8gdXNlIGJsa192YWxpZGF0ZV9ieXRlX3JhbmdlIGZvciBib3VuZHMgY2hlY2tpbmcgYW5kIGZpeGVzIHRoZSBlbmQgcmFuZ2UgY2FsY3VsYXRpb24gZm9yIHRydW5jYXRlX2JkZXZfcmFuZ2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGJsb2NrIGRldmljZSBpb2N0bCBoYW5kbGluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibGtkZXZfaW9jdGxcIixcbiAgICBcImNvbXBhdF9ibGtkZXZfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQkxLU0VDRElTQ0FSRCBpb2N0bCBoYW5kbGVyIHRvIHVzZSBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZSBmb3IgYm91bmRzIGNoZWNraW5nIGFuZCBmaXhlcyB0aGUgZW5kIHJhbmdlIGNhbGN1bGF0aW9uIGZvciB0cnVuY2F0ZV9iZGV2X3JhbmdlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBibG9jayBkZXZpY2UgaW9jdGwgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjzctw[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-26 10:43:36 +0000 UTC FinishedAt: 2026-07-26 11:14:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "03b0bcd2440b4ace0fb4bdf93e444db6454e7370", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "03b0bcd2440b4ace0fb4bdf93e444db6454e7370", "config_name": "upstream-apparmor-kasan.config", "series_id": "2d188174-f80c-482b-bf14-6502e838acd2" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "blkdev_ioctl", "compat_blkdev_ioctl" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YmxrZGV2X2lvY3RsJiMzNDssCiAgICAmIzM0O2NvbXBhdF9ibGtkZXZfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJMS1NFQ0RJU0NBUkQgaW9jdGwgaGFuZGxlciB0byB1c2UgYmxrX3ZhbGlkYXRlX2J5dGVfcmFuZ2UgZm9yIGJvdW5kcyBjaGVja2luZyBhbmQgZml4ZXMgdGhlIGVuZCByYW5nZSBjYWxjdWxhdGlvbiBmb3IgdHJ1bmNhdGVfYmRldl9yYW5nZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgZGV2aWNlIGlvY3RsIGhhbmRsaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjEzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2YzYWJhM2YwYTJmMzgzYTRiZDRhNzY4Yzc4ODcxNzU5NjFjZmQ1Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDI2IDExOjEzOjMzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2Jsb2NrL2lvY3RsLmMgYi9ibG9jay9pb2N0bC5jXG5pbmRleCAzZDRlYTE1Mzc0NTdkNS4uM2I3ZDMzYTczN2U4ZDUgMTAwNjQ0XG4tLS0gYS9ibG9jay9pb2N0bC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9pb2N0bC5jXG5AQCAtMTc2LDggJiM0MzsxNzYsNyBAQCBzdGF0aWMgaW50IGJsa19pb2N0bF9kaXNjYXJkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcbiBzdGF0aWMgaW50IGJsa19pb2N0bF9zZWN1cmVfZXJhc2Uoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxuIFx0XHR2b2lkIF9fdXNlciAqYXJncClcbiB7XG4tXHR1aW50NjRfdCBzdGFydCwgbGVuLCBlbmQ7XG4tXHR1aW50NjRfdCByYW5nZVsyXTtcbiYjNDM7XHR1aW50NjRfdCByYW5nZVsyXSwgc3RhcnQsIGxlbjtcbiBcdGludCBlcnI7XG4gXG4gXHRpZiAoIShtb2RlIFx1MDAyNiBCTEtfT1BFTl9XUklURSkpXG5AQCAtMTg5LDE1ICYjNDM7MTg4LDEzIEBAIHN0YXRpYyBpbnQgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXG4gXG4gXHRzdGFydCA9IHJhbmdlWzBdO1xuIFx0bGVuID0gcmFuZ2VbMV07XG4tXHRpZiAoKHN0YXJ0IFx1MDAyNiA1MTEpIHx8IChsZW4gXHUwMDI2IDUxMSkpXG4tXHRcdHJldHVybiAtRUlOVkFMO1xuLVx0aWYgKGNoZWNrX2FkZF9vdmVyZmxvdyhzdGFydCwgbGVuLCBcdTAwMjZlbmQpIHx8XG4tXHQgICAgZW5kIFx1MDAzZSBiZGV2X25yX2J5dGVzKGJkZXYpKVxuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRlcnIgPSBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZShiZGV2LCBzdGFydCwgbGVuKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiBcbiBcdGlub2RlX2xvY2soYmRldi1cdTAwM2ViZF9tYXBwaW5nLVx1MDAzZWhvc3QpO1xuIFx0ZmlsZW1hcF9pbnZhbGlkYXRlX2xvY2soYmRldi1cdTAwM2ViZF9tYXBwaW5nKTtcbi1cdGVyciA9IHRydW5jYXRlX2JkZXZfcmFuZ2UoYmRldiwgbW9kZSwgc3RhcnQsIGVuZCAtIDEpO1xuJiM0MztcdGVyciA9IHRydW5jYXRlX2JkZXZfcmFuZ2UoYmRldiwgbW9kZSwgc3RhcnQsIHN0YXJ0ICYjNDM7IGxlbiAtIDEpO1xuIFx0aWYgKCFlcnIpXG4gXHRcdGVyciA9IGJsa2Rldl9pc3N1ZV9zZWN1cmVfZXJhc2UoYmRldiwgc3RhcnQgXHUwMDNlXHUwMDNlIDksIGxlbiBcdTAwM2VcdTAwM2UgOSxcbiBcdFx0XHRcdFx0XHRHRlBfS0VSTkVMKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMToxMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibGtkZXZfaW9jdGwmIzM0OywKICAgICYjMzQ7Y29tcGF0X2Jsa2Rldl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQkxLU0VDRElTQ0FSRCBpb2N0bCBoYW5kbGVyIHRvIHVzZSBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZSBmb3IgYm91bmRzIGNoZWNraW5nIGFuZCBmaXhlcyB0aGUgZW5kIHJhbmdlIGNhbGN1bGF0aW9uIGZvciB0cnVuY2F0ZV9iZGV2X3JhbmdlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBibG9jayBkZXZpY2UgaW9jdGwgaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzZjNhYmEzZjBhMmYzODNhNGJkNGE3NjhjNzg4NzE3NTk2MWNmZDVjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMjYgMTE6MTM6MzMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9ibG9jay9pb2N0bC5jIGIvYmxvY2svaW9jdGwuYwppbmRleCAzZDRlYTE1Mzc0NTdkNS4uM2I3ZDMzYTczN2U4ZDUgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2lvY3RsLmMKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svaW9jdGwuYwpAQCAtMTc2LDggJiM0MzsxNzYsNyBAQCBzdGF0aWMgaW50IGJsa19pb2N0bF9kaXNjYXJkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSwKIHN0YXRpYyBpbnQgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsCiAJCXZvaWQgX191c2VyICphcmdwKQogewotCXVpbnQ2NF90IHN0YXJ0LCBsZW4sIGVuZDsKLQl1aW50NjRfdCByYW5nZVsyXTsKJiM0MzsJdWludDY0X3QgcmFuZ2VbMl0sIHN0YXJ0LCBsZW47CiAJaW50IGVycjsKIAogCWlmICghKG1vZGUgJmFtcDsgQkxLX09QRU5fV1JJVEUpKQpAQCAtMTg5LDE1ICYjNDM7MTg4LDEzIEBAIHN0YXRpYyBpbnQgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsCiAKIAlzdGFydCA9IHJhbmdlWzBdOwogCWxlbiA9IHJhbmdlWzFdOwotCWlmICgoc3RhcnQgJmFtcDsgNTExKSB8fCAobGVuICZhbXA7IDUxMSkpCi0JCXJldHVybiAtRUlOVkFMOwotCWlmIChjaGVja19hZGRfb3ZlcmZsb3coc3RhcnQsIGxlbiwgJmFtcDtlbmQpIHx8Ci0JICAgIGVuZCAmZ3Q7IGJkZXZfbnJfYnl0ZXMoYmRldikpCi0JCXJldHVybiAtRUlOVkFMOwomIzQzOwllcnIgPSBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZShiZGV2LCBzdGFydCwgbGVuKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiAKIAlpbm9kZV9sb2NrKGJkZXYtJmd0O2JkX21hcHBpbmctJmd0O2hvc3QpOwogCWZpbGVtYXBfaW52YWxpZGF0ZV9sb2NrKGJkZXYtJmd0O2JkX21hcHBpbmcpOwotCWVyciA9IHRydW5jYXRlX2JkZXZfcmFuZ2UoYmRldiwgbW9kZSwgc3RhcnQsIGVuZCAtIDEpOwomIzQzOwllcnIgPSB0cnVuY2F0ZV9iZGV2X3JhbmdlKGJkZXYsIG1vZGUsIHN0YXJ0LCBzdGFydCAmIzQzOyBsZW4gLSAxKTsKIAlpZiAoIWVycikKIAkJZXJyID0gYmxrZGV2X2lzc3VlX3NlY3VyZV9lcmFzZShiZGV2LCBzdGFydCAmZ3Q7Jmd0OyA5LCBsZW4gJmd0OyZndDsgOSwKIAkJCQkJCUdGUF9LRVJORUwpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzU1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2VjdXJlIEVyYXNlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgYmxvY2svaW9jdGwuY2AsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZWAuIFRoaXMgc2VlbXMgdG8gYmUgdGhlIGNvcmUgb2YgdGhlIGBCTEtTRUNESVNDQVJEYCBpb2N0bCBoYW5kbGluZy4gVGhlIHBhdGNoIGFwcGVhcnMgdG8gYmUgY2xlYW5pbmcgdXAgdGhlIHZhbGlkYXRpb24gbG9naWMuIEluc3RlYWQgb2YgdGhlIG1hbnVhbCBjaGVja3MgcHJldmlvdXNseSBpbiBwbGFjZSwgaXQmIzM5O3Mgbm93IGxldmVyYWdpbmcgYGJsa192YWxpZGF0ZV9ieXRlX3JhbmdlKGJkZXYsIHN0YXJ0LCBsZW4pYC4gVGhhdCYjMzk7cyBhIGdvb2QgbW92ZTsgYSBkZWRpY2F0ZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiBpcyBhbG1vc3QgYWx3YXlzIHByZWZlcmFibGUgZm9yIG1haW50YWluYWJpbGl0eSBhbmQgY29ycmVjdG5lc3MuIEl0IGFic3RyYWN0cyB0aGUgY29tcGxleGl0aWVzIG9mIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3MsIGFuZCBpZiBpdCYjMzk7cyB3ZWxsLXRlc3RlZCwgcmVkdWNlcyB0aGUgcmlzayBvZiBpbnRyb2R1Y2luZyBzdWJ0bGUgYnVncy4KClRoZSBjaGFuZ2UgYWxzbyBhZmZlY3RzIGhvdyB0aGUgdHJ1bmNhdGlvbiBpcyBoYW5kbGVkLiBQcmV2aW91c2x5LCB0aGVyZSB3YXMgc29tZSBvZmZzZXQgY2FsY3VsYXRpb24gYXJvdW5kIHRoZSBgZW5kYCBwb2ludC4gTm93LCBpdCB1c2VzIGBzdGFydCAmIzQzOyBsZW4gLSAxYCBmb3IgYHRydW5jYXRlX2JkZXZfcmFuZ2VgLCB3aGljaCBpcyBhIGNvbW1vbiBhbmQgdXN1YWxseSBtb3JlIGRpcmVjdCBhcHByb2FjaCB0byBkZWZpbmluZyBhIHJhbmdlIGJvdW5kYXJ5IGluIHRoaXMgY29udGV4dC4gSXQmIzM5O3MgbWFraW5nIHRoZSBsb2dpYyBjbGVhcmVyIGFuZCBlYXNpZXIgdG8gcmVhc29uIGFib3V0LCBzbyBpdCBtYWtlcyBzZW5zZS4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgaW9jdGxgIGNvZGUgaXRzZWxmIHRvIGZ1bGx5IGFwcHJlY2lhdGUgdGhlIGNoYW5nZSBhbmQgd2hhdCBzZWN1cmUgZGlzY2FyZCBhY3R1YWxseSBkb2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Jsa19pb2N0bF9zZWN1cmVfZXJhc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9pb2N0bC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL2lvY3RsLmM9MTIxPXN0YXRpYyBpbnQgYmxrX2lvY3RsX2Rpc2NhcmQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxuLS1cbmJsb2NrL2lvY3RsLmMtMTc1LVxuYmxvY2svaW9jdGwuYzoxNzY6c3RhdGljIGludCBibGtfaW9jdGxfc2VjdXJlX2VyYXNlKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcbmJsb2NrL2lvY3RsLmMtMTc3LVx0XHR2b2lkIF9fdXNlciAqYXJncClcbi0tXG5ibG9jay9pb2N0bC5jPTY0Nz1zdGF0aWMgaW50IGJsa2Rldl9jb21tb25faW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxuLS1cbmJsb2NrL2lvY3RsLmMtNjYwLVx0Y2FzZSBCTEtTRUNESVNDQVJEOlxuYmxvY2svaW9jdGwuYzo2NjE6XHRcdHJldHVybiBibGtfaW9jdGxfc2VjdXJlX2VyYXNlKGJkZXYsIG1vZGUsIGFyZ3ApO1xuYmxvY2svaW9jdGwuYy02NjItXHRjYXNlIEJMS1pFUk9PVVQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwMQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIHNvbWVvbmUgZGVlcGx5IGZhbWlsaWFyIHdpdGggdGhpcyBsZXZlbCBvZiBrZXJuZWwgZGV2ZWxvcG1lbnQ6CgoqKkRpc3NlY3RpbmcgYSBCTEtTRUNESVNDQVJEIEltcGxlbWVudGF0aW9uKioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgY2FsbCBvcmlnaW5hdGluZyBmcm9tIGBibGtkZXZfY29tbW9uX2lvY3RsYCwgc3BlY2lmaWNhbGx5IGZvciBhIGBCTEtTRUNESVNDQVJEYCBvcGVyYXRpb24uIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHJlY29nbml6ZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGEgcmVmYWN0b3JpbmcsIGxpa2VseSBhaW1lZCBhdCBpbXByb3ZpbmcgY29kZSBjbGFyaXR5IGFuZCBtYWludGFpbmFiaWxpdHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgbmV3IGhlcmUuIEl0IGFwcGVhcnMgdGhleSYjMzk7dmUgcmVwbGFjZWQgb3Blbi1jb2RlZCB2YWxpZGF0aW9uIOKAkyB3aGljaCBpcyBvZnRlbiBhIGJpdCBtZXNzeSBhbmQgZXJyb3ItcHJvbmUg4oCTIHdpdGggYSBjYWxsIHRvIGBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZWAuIFRoYXQmIzM5O3Mgc21hcnQuIFV0aWxpemluZyBhIGRlZGljYXRlZCB2YWxpZGF0aW9uIGZ1bmN0aW9uIHN1Z2dlc3RzIHRoZXkmIzM5O3JlIGNvbnNvbGlkYXRpbmcgdGhpcyBjcnVjaWFsIGNoZWNrIGludG8gYSByZXVzYWJsZSBtb2R1bGUuIE5vdyBJJiMzOTttIGluc3RhbnRseSB3b25kZXJpbmcgd2hhdCB0aGUgZGV0YWlscyBvZiBgYmxrX3ZhbGlkYXRlX2J5dGVfcmFuZ2VgIGFyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzcGVjaWZpYyB2YWxpZGF0aW9ucyBpdCBwZXJmb3JtcyB0byBmdWxseSBncmFzcCB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlIGFuZCB3aGV0aGVyIGl0IGFsaWducyB3aXRoIGJlc3QgcHJhY3RpY2VzIGZvciBibG9jayBkZXZpY2UgaW50ZXJhY3Rpb25zLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgZXhhY3RseSB3aGF0JiMzOTtzIGVuY2Fwc3VsYXRlZCB3aXRoaW4gYGJsa192YWxpZGF0ZV9ieXRlX3JhbmdlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9pb2N0bC5jPTg3PXN0YXRpYyBpbnQgY29tcGF0X2Jsa3BnX2lvY3RsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsXG4tLVxuYmxvY2svaW9jdGwuYy0xMDQtICovXG5ibG9jay9pb2N0bC5jOjEwNTpzdGF0aWMgaW50IGJsa192YWxpZGF0ZV9ieXRlX3JhbmdlKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsXG5ibG9jay9pb2N0bC5jLTEwNi1cdFx0XHRcdCAgIHVpbnQ2NF90IHN0YXJ0LCB1aW50NjRfdCBsZW4pXG4tLVxuYmxvY2svaW9jdGwuYz0xMjE9c3RhdGljIGludCBibGtfaW9jdGxfZGlzY2FyZChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXG4tLVxuYmxvY2svaW9jdGwuYy0xNDEtXHRcdHJldHVybiAtRVBFUk07XG5ibG9jay9pb2N0bC5jOjE0MjpcdGVyciA9IGJsa192YWxpZGF0ZV9ieXRlX3JhbmdlKGJkZXYsIHN0YXJ0LCBsZW4pO1xuYmxvY2svaW9jdGwuYy0xNDMtXHRpZiAoZXJyKVxuLS1cbmJsb2NrL2lvY3RsLmM9MTc2PXN0YXRpYyBpbnQgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXG4tLVxuYmxvY2svaW9jdGwuYy0xOTAtXHRsZW4gPSByYW5nZVsxXTtcbmJsb2NrL2lvY3RsLmM6MTkxOlx0ZXJyID0gYmxrX3ZhbGlkYXRlX2J5dGVfcmFuZ2UoYmRldiwgc3RhcnQsIGxlbik7XG5ibG9jay9pb2N0bC5jLTE5Mi1cdGlmIChlcnIpXG4tLVxuYmxvY2svaW9jdGwuYz04ODc9c3RhdGljIGludCBibGtkZXZfY21kX2Rpc2NhcmQoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLFxuLS1cbmJsb2NrL2lvY3RsLmMtOTAzLVx0XHRyZXR1cm4gLUVQRVJNO1xuYmxvY2svaW9jdGwuYzo5MDQ6XHRlcnIgPSBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZShiZGV2LCBzdGFydCwgbGVuKTtcbmJsb2NrL2lvY3RsLmMtOTA1LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzYyCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIEJsb2NrIElPQ1RMIEhhbmRsaW5nKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBjaGFuZ2VzIHRvIGJsb2NrIElPQ1RMIGhhbmRsaW5nIHVzaW5nIGBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZWAsIHdoaWNoIHZlcmlmaWVzIGFsaWdubWVudCBhbmQgYm91bmRzLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXM6ICppcyB0aGlzIGZ1enphYmxlPyogR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCB0aGUgYW5zd2VyIGlzIGEgcmVzb3VuZGluZyAqeWVzKi4gV2UmIzM5O3ZlIGdvdCBhIHByaW1lIHRhcmdldC4KCk15IG1haW4gZm9jdXMgd2lsbCBiZSBvbiBgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZWAgYW5kIGBibGtkZXZfY29tbW9uX2lvY3RsYCDigJMgdGhvc2UgYXJlIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gZGlnIGludG8uIFdlIG5lZWQgdG8gYmUgdGhvcm91Z2guCgpGcm9tIGEgY29uZmlndXJhdGlvbiBwZXJzcGVjdGl2ZSwgYEJMT0NLYCBpcyBhbHdheXMgZW5hYmxlZCwgd2hpY2ggaXMgaGVscGZ1bC4gV2UgaGF2ZSBmbGV4aWJpbGl0eTsgd2UgY2FuIHNwZWNpZnkgbm90aGluZyBvciBqdXN0IGBCTE9DS2AuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgY2hlY2sgaWYgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLCBsaWtlIGBCTEtTRUNESVNDQVJEYCBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLCBpbXBhY3Qgb3IgZGlyZWN0bHkgcmVsYXRlIHRvIGBibGtfaW9jdGxfc2VjdXJlX2VyYXNlYCwgdG8ga25vdyBpZiB0aGVyZSYjMzk7cyBhbnkgY29uZmlnLXNwZWNpZmljIGJlaGF2aW9yIHdlIG5lZWQgdG8gYWNjb3VudCBmb3IgaW4gdGhlIGZ1enplci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCTEtTRUNESVNDQVJEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL2lvY3RsLmM9NjQ3PXN0YXRpYyBpbnQgYmxrZGV2X2NvbW1vbl9pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXG4tLVxuYmxvY2svaW9jdGwuYy02NTktXHRcdHJldHVybiBibGtfaW9jdGxfZGlzY2FyZChiZGV2LCBtb2RlLCBhcmcpO1xuYmxvY2svaW9jdGwuYzo2NjA6XHRjYXNlIEJMS1NFQ0RJU0NBUkQ6XG5ibG9jay9pb2N0bC5jLTY2MS1cdFx0cmV0dXJuIGJsa19pb2N0bF9zZWN1cmVfZXJhc2UoYmRldiwgbW9kZSwgYXJncCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIzOQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENoYW5nZSBpbiBCbG9jayBEZXZpY2UgSU9DVEwgSGFuZGxpbmcqKgoKT2theSwgc28gdGhlcmUmIzM5O3MgYSBjaGFuZ2UgcmVsYXRlZCB0byBgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZWAsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBgQkxPQ0tgIGNvbmZpZy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBkaWcgaW50byB0aGUgYGJsa19pb2N0bF9zZWN1cmVfZXJhc2VgIGZ1bmN0aW9uIGl0c2VsZi4gTGV0JiMzOTtzIHNlZS4uLiBhIHF1aWNrIGNoZWNrIGluIGBibG9jay9pb2N0bC5jYCB3aWxsIHRlbGwgbWUgaWYgaXQmIzM5O3Mgc3RhdGljLiBIbW0sIHllcCwgaXQmIzM5O3Mgc3RhdGljLiBUaGF0JiMzOTtzIGEga2V5IGRldGFpbCEgU2luY2UgaXQmIzM5O3Mgc3RhdGljLCBpdCYjMzk7cyBsaWtlbHkgbm90IHRoZSBkaXJlY3QgZW50cnkgcG9pbnQuIFRoYXQgbWVhbnMgSSBuZWVkIHRvIGJyb2FkZW4gbXkgZm9jdXMuIFRoZSBzdGF0aWMgbmF0dXJlIHN1Z2dlc3RzIHRoYXQgdGhlIGNhbGxpbmcgbWVjaGFuaXNtIG1pZ2h0IGJlIG1vcmUgcmVsZXZhbnQuIEdpdmVuIHRoYXQsIGxldCBtZSBzaGlmdCBteSBhdHRlbnRpb24gdG8gYGJsa2Rldl9jb21tb25faW9jdGxgLiBJdCYjMzk7cyBsaWtlbHkgdGhhdCYjMzk7cyB3aGVyZSB0aGUgY2FsbCB0byBgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZWAgb3JpZ2luYXRlcy4gTm93LCBJIGhhdmUgYSBuZXcgYW5nbGUgdG8gZXhwbG9yZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTE6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmxrZGV2X2NvbW1vbl9pb2N0bCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9pb2N0bC5jPTYxNT1zdGF0aWMgaW50IGJsa2Rldl9ic3pzZXQoc3RydWN0IGZpbGUgKmZpbGUsIGJsa19tb2RlX3QgbW9kZSxcbi0tXG5ibG9jay9pb2N0bC5jLTY0Ni0gKi9cbmJsb2NrL2lvY3RsLmM6NjQ3OnN0YXRpYyBpbnQgYmxrZGV2X2NvbW1vbl9pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXG5ibG9jay9pb2N0bC5jLTY0OC1cdFx0XHQgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcsXG4tLVxuYmxvY2svaW9jdGwuYy03NDMtICpcbmJsb2NrL2lvY3RsLmM6NzQ0OiAqIE5ldyBjb21tYW5kcyBtdXN0IGJlIGNvbXBhdGlibGUgYW5kIGdvIGludG8gYmxrZGV2X2NvbW1vbl9pb2N0bFxuYmxvY2svaW9jdGwuYy03NDUtICovXG5ibG9jay9pb2N0bC5jPTc0Nj1sb25nIGJsa2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5ibG9jay9pb2N0bC5jLTc4Ny1cbmJsb2NrL2lvY3RsLmM6Nzg4Olx0cmV0ID0gYmxrZGV2X2NvbW1vbl9pb2N0bChiZGV2LCBtb2RlLCBjbWQsIGFyZywgYXJncCk7XG5ibG9jay9pb2N0bC5jLTc4OS1cdGlmIChyZXQgIT0gLUVOT0lPQ1RMQ01EKVxuLS1cbmJsb2NrL2lvY3RsLmM9ODA2PWxvbmcgY29tcGF0X2Jsa2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5ibG9jay9pb2N0bC5jLTg0Ny1cbmJsb2NrL2lvY3RsLmM6ODQ4Olx0cmV0ID0gYmxrZGV2X2NvbW1vbl9pb2N0bChiZGV2LCBtb2RlLCBjbWQsIGFyZywgYXJncCk7XG5ibG9jay9pb2N0bC5jLTg0OS1cdGlmIChyZXQgPT0gLUVOT0lPQ1RMQ01EIFx1MDAyNlx1MDAyNiBkaXNrLVx1MDAzZWZvcHMtXHUwMDNlY29tcGF0X2lvY3RsKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTM1CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgQmxvY2sgRGV2aWNlIElPQ1RMIEhhbmRsaW5nKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGJsb2NrIGRldmljZSBJT0NUTCBmdW5jdGlvbnMuIEkgc2VlIGBibGtkZXZfY29tbW9uX2lvY3RsYCBpcyBkZWZpbmVkIGFzIGBzdGF0aWNgLCB3aGljaCBpc24mIzM5O3QgdW51c3VhbC4gSXQmIzM5O3Mgb2Z0ZW4gdXNlZCBpbnRlcm5hbGx5IHdpdGhpbiB0aGUgYmxvY2sgZGV2aWNlIGxheWVyIGl0c2VsZiwgc28gaXQgbWFrZXMgc2Vuc2UuIEhvd2V2ZXIsIGBibGtkZXZfaW9jdGxgIGlzbiYjMzk7dCBgc3RhdGljYCwgd2hpY2ggaW1tZWRpYXRlbHkgZ3JhYnMgbXkgYXR0ZW50aW9uLiBUaGF0IG1lYW5zIGl0JiMzOTtzIGxpa2VseSB0aGUgcHVibGljIGludGVyZmFjZSwgdGhlIGVudHJ5IHBvaW50IGZvciBJT0NUTCBjYWxscyBmcm9tIHVzZXJzcGFjZS4gSG1tLCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBCZXR0ZXIgZGl2ZSBpbiBhbmQgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBibGtkZXZfaW9jdGxgIHRvIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIHJvdXRpbmcgdGhlc2UgY2FsbHMgYW5kIGhhbmRsaW5nIGRpZmZlcmVudCBJT0NUTCBjb21tYW5kcy4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgbG9naWMgd2lsbCByZXNpZGUuIFRpbWUgdG8gZGlzc2VjdCB0aGlzIGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtibGtkZXZfaW9jdGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svYmxrLXpvbmVkLmM9MzU0PXN0YXRpYyBpbnQgYmxrZGV2X2NvcHlfem9uZV90b191c2VyKHN0cnVjdCBibGtfem9uZSAqem9uZSwgdW5zaWduZWQgaW50IGlkeCxcbi0tXG5ibG9jay9ibGstem9uZWQuYy0zNzAtICogQkxLUkVQT1JUWk9ORSBhbmQgQkxLUkVQT1JUWk9ORVYyIGlvY3RsIHByb2Nlc3NpbmcuXG5ibG9jay9ibGstem9uZWQuYzozNzE6ICogQ2FsbGVkIGZyb20gYmxrZGV2X2lvY3RsLlxuYmxvY2svYmxrLXpvbmVkLmMtMzcyLSAqL1xuLS1cbmJsb2NrL2Jsay16b25lZC5jPTQyMD1zdGF0aWMgaW50IGJsa2Rldl9yZXNldF96b25lKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcbi0tXG5ibG9jay9ibGstem9uZWQuYy00NDktICogQkxLUkVTRVRaT05FLCBCTEtPUEVOWk9ORSwgQkxLQ0xPU0VaT05FIGFuZCBCTEtGSU5JU0haT05FIGlvY3RsIHByb2Nlc3NpbmcuXG5ibG9jay9ibGstem9uZWQuYzo0NTA6ICogQ2FsbGVkIGZyb20gYmxrZGV2X2lvY3RsLlxuYmxvY2svYmxrLXpvbmVkLmMtNDUxLSAqL1xuLS1cbmJsb2NrL2Jsay5oPTY2ND1pbnQgdHJ1bmNhdGVfYmRldl9yYW5nZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXG5ibG9jay9ibGsuaC02NjUtXHRcdGxvZmZfdCBsc3RhcnQsIGxvZmZfdCBsZW5kKTtcbmJsb2NrL2Jsay5oOjY2Njpsb25nIGJsa2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7XG5ibG9jay9ibGsuaC02NjctaW50IGJsa2Rldl91cmluZ19jbWQoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpO1xuYmxvY2svYmxrLmg6NjY4OmxvbmcgY29tcGF0X2Jsa2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7XG5ibG9jay9ibGsuaC02NjktXG4tLVxuYmxvY2svZm9wcy5jPTkyNz1jb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRlZl9ibGtfZm9wcyA9IHtcbi0tXG5ibG9jay9mb3BzLmMtOTM1LVx0LmZzeW5jXHRcdD0gYmxrZGV2X2ZzeW5jLFxuYmxvY2svZm9wcy5jOjkzNjpcdC51bmxvY2tlZF9pb2N0bFx0PSBibGtkZXZfaW9jdGwsXG5ibG9jay9mb3BzLmMtOTM3LSNpZmRlZiBDT05GSUdfQ09NUEFUXG5ibG9jay9mb3BzLmM6OTM4Olx0LmNvbXBhdF9pb2N0bFx0PSBjb21wYXRfYmxrZGV2X2lvY3RsLFxuYmxvY2svZm9wcy5jLTkzOS0jZW5kaWZcbi0tXG5ibG9jay9pb2N0bC5jPTY0Nz1zdGF0aWMgaW50IGJsa2Rldl9jb21tb25faW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxuLS1cbmJsb2NrL2lvY3RsLmMtNzQwLS8qXG5ibG9jay9pb2N0bC5jOjc0MTogKiBBbHdheXMga2VlcCB0aGlzIGluIHN5bmMgd2l0aCBjb21wYXRfYmxrZGV2X2lvY3RsKClcbmJsb2NrL2lvY3RsLmMtNzQyLSAqIHRvIGhhbmRsZSBhbGwgaW5jb21wYXRpYmxlIGNvbW1hbmRzIGluIGJvdGggZnVuY3Rpb25zLlxuLS1cbmJsb2NrL2lvY3RsLmMtNzQ1LSAqL1xuYmxvY2svaW9jdGwuYzo3NDY6bG9uZyBibGtkZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXG5ibG9jay9pb2N0bC5jLTc0Ny17XG4tLVxuYmxvY2svaW9jdGwuYy04MDUtICAgRU5PSU9DVExDTUQgZm9yIHVua25vd24gaW9jdGxzLiAqL1xuYmxvY2svaW9jdGwuYzo4MDY6bG9uZyBjb21wYXRfYmxrZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKVxuYmxvY2svaW9jdGwuYy04MDcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxMToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTQ4CgkJCQkJCQlvdXRwdXQ6IDk5CgkJCQkJCQl0aG91Z2h0czogMTc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgVGhpcyBCbG9jayBEZXZpY2UgSU9DVEwgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgc2VlIGhlcmUsIHRoZSBrZXkgZW50cnkgcG9pbnRzIGludG8gdGhpcyBmdW5jdGlvbmFsaXR5IGFyZSBgYmxrZGV2X2lvY3RsYCBhbmQgYGNvbXBhdF9ibGtkZXZfaW9jdGxgLiBJJiMzOTttIG1hcmtpbmcgdGhvc2UgYXMgYEZvY3VzU3ltYm9sc2AsIGFzIHRoZXkgYXJlIHRoZSBzdGFydGluZyBwb2ludHMgZm9yIHRoZSBpb2N0bCBjYWxscyB0aGF0IHdlJiMzOTtyZSBleGFtaW5pbmcuCgpUaGlzIHBhdGNoLCBhcHBhcmVudGx5LCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgYnVnIHdpdGhpbiBgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZWAuIFNwZWNpZmljYWxseSwgaXQgY29uY2VybnMgdGhlIHBvdGVudGlhbCBmb3IgaW50ZWdlciBvdmVyZmxvd3Mgb3IgaW5jb3JyZWN0IGNhbGN1bGF0aW9ucyByZWxhdGVkIHRvIHRoZSBgZW5kYCBwYXJhbWV0ZXIuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHZ1bG5lcmFiaWxpdHkgcG9pbnQgd2hlbiBkZWFsaW5nIHdpdGggcmFuZ2UgY2FsY3VsYXRpb25zLCBzbyB0aGF0JiMzOTtzIGdvb2QgaXQmIzM5O3MgYmVpbmcgYWRkcmVzc2VkLgoKRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHdpdGhpbiB0aGUgaW9jdGwgaGFuZGxpbmcgZm9yIGJsb2NrIGRldmljZXMsIGEgZmFpcmx5IGNlbnRyYWwgcGllY2Ugb2YgdGhlIGtlcm5lbC4gU2luY2UgaXQgZGVhbHMgd2l0aCBzZWN1cmUgZXJhc2UgYW5kIHJhbmdlIGNhbGN1bGF0aW9uLCBmdXp6aW5nIHRoaXMgYXJlYSBzb3VuZHMgbGlrZSBhIHZlcnkgZ29vZCBpZGVhOyBJJiMzOTttIG1hcmtpbmcgdGhhdCBhcyBgdHJ1ZWAuIEkmIzM5O2xsIHdhbnQgdG8gcHJpb3JpdGl6ZSB0aGlzIGFyZWEgaW4gbXkgdGVzdGluZyByZWdpbWUuCgpUaGUgYEVuYWJsZUNvbmZpZ3NgIGFyZSBsaXN0ZWQgYXMgYEJMT0NLYCwgd2hpY2ggaXMgcHJldHR5IG11Y2ggZXhwZWN0ZWQsIGJ1dCBnb29kIHRvIGhhdmUgaXQgZXhwbGljaXRseSBzdGF0ZWQuCgpUaGUgY29yZSBvZiB0aGUgcmVhc29uaW5nIGlzIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgQkxLU0VDRElTQ0FSRGAgaW9jdGwgaGFuZGxlciB0byB1c2UgYGJsa192YWxpZGF0ZV9ieXRlX3JhbmdlYCBmb3IgYm91bmRzIGNoZWNraW5nIGFuZCBmaXhlcyBhbiBlbmQgcmFuZ2UgY2FsY3VsYXRpb24gaXNzdWUgdGhhdCBhZmZlY3RzIGB0cnVuY2F0ZV9iZGV2X3JhbmdlYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFuZCBpbXBhY3RzIGNvcmUgYmxvY2sgZGV2aWNlIElPQ1RMIGhhbmRsaW5nLiBJbiBlc3NlbmNlLCB0aGV5JiMzOTtyZSBzaG9yaW5nIHVwIHNvbWUgd2Vha25lc3NlcyBpbiB0aGUgcmFuZ2UgdmFsaWRhdGlvbiBsb2dpYy4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgYGJsa192YWxpZGF0ZV9ieXRlX3JhbmdlYCBpbXBsZW1lbnRhdGlvbiBpdHNlbGYgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLiBEZWZpbml0ZWx5IHdvcnRoIGEgZGVlcGVyIGRpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDExOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibGtkZXZfaW9jdGwmIzM0OywKICAgICYjMzQ7Y29tcGF0X2Jsa2Rldl9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQkxLU0VDRElTQ0FSRCBpb2N0bCBoYW5kbGVyIHRvIHVzZSBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZSBmb3IgYm91bmRzIGNoZWNraW5nIGFuZCBmaXhlcyB0aGUgZW5kIHJhbmdlIGNhbGN1bGF0aW9uIGZvciB0cnVuY2F0ZV9iZGV2X3JhbmdlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBibG9jayBkZXZpY2UgaW9jdGwgaGFuZGxpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YmxrZGV2X2lvY3RsJiMzNDssCiAgICAmIzM0O2NvbXBhdF9ibGtkZXZfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJMS1NFQ0RJU0NBUkQgaW9jdGwgaGFuZGxlciB0byB1c2UgYmxrX3ZhbGlkYXRlX2J5dGVfcmFuZ2UgZm9yIGJvdW5kcyBjaGVja2luZyBhbmQgZml4ZXMgdGhlIGVuZCByYW5nZSBjYWxjdWxhdGlvbiBmb3IgdHJ1bmNhdGVfYmRldl9yYW5nZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgZGV2aWNlIGlvY3RsIGhhbmRsaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6MTM6MzQuNjI3OTU1MTc4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4MjQ5ODg2NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmxrZGV2X2lvY3RsXCIsXG4gICAgXCJjb21wYXRfYmxrZGV2X2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJMS1NFQ0RJU0NBUkQgaW9jdGwgaGFuZGxlciB0byB1c2UgYmxrX3ZhbGlkYXRlX2J5dGVfcmFuZ2UgZm9yIGJvdW5kcyBjaGVja2luZyBhbmQgZml4ZXMgdGhlIGVuZCByYW5nZSBjYWxjdWxhdGlvbiBmb3IgdHJ1bmNhdGVfYmRldl9yYW5nZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgZGV2aWNlIGlvY3RsIGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMToxMzozNC42Mjc5NjE3OThaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4ODM0NDAwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDNmM2FiYTNmMGEyZjM4M2E0YmQ0YTc2OGM3ODg3MTc1OTYxY2ZkNWNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMjYgMTE6MTM6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYmxvY2svaW9jdGwuYyBiL2Jsb2NrL2lvY3RsLmNcXG5pbmRleCAzZDRlYTE1Mzc0NTdkNS4uM2I3ZDMzYTczN2U4ZDUgMTAwNjQ0XFxuLS0tIGEvYmxvY2svaW9jdGwuY1xcbisrKyBiL2Jsb2NrL2lvY3RsLmNcXG5AQCAtMTc2LDggKzE3Niw3IEBAIHN0YXRpYyBpbnQgYmxrX2lvY3RsX2Rpc2NhcmQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxcbiBzdGF0aWMgaW50IGJsa19pb2N0bF9zZWN1cmVfZXJhc2Uoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxcbiBcXHRcXHR2b2lkIF9fdXNlciAqYXJncClcXG4ge1xcbi1cXHR1aW50NjRfdCBzdGFydCwgbGVuLCBlbmQ7XFxuLVxcdHVpbnQ2NF90IHJhbmdlWzJdO1xcbitcXHR1aW50NjRfdCByYW5nZVsyXSwgc3RhcnQsIGxlbjtcXG4gXFx0aW50IGVycjtcXG4gXFxuIFxcdGlmICghKG1vZGUgXFx1MDAyNiBCTEtfT1BFTl9XUklURSkpXFxuQEAgLTE4OSwxNSArMTg4LDEzIEBAIHN0YXRpYyBpbnQgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXFxuIFxcbiBcXHRzdGFydCA9IHJhbmdlWzBdO1xcbiBcXHRsZW4gPSByYW5nZVsxXTtcXG4tXFx0aWYgKChzdGFydCBcXHUwMDI2IDUxMSkgfHwgKGxlbiBcXHUwMDI2IDUxMSkpXFxuLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi1cXHRpZiAoY2hlY2tfYWRkX292ZXJmbG93KHN0YXJ0LCBsZW4sIFxcdTAwMjZlbmQpIHx8XFxuLVxcdCAgICBlbmQgXFx1MDAzZSBiZGV2X25yX2J5dGVzKGJkZXYpKVxcbi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0ZXJyID0gYmxrX3ZhbGlkYXRlX2J5dGVfcmFuZ2UoYmRldiwgc3RhcnQsIGxlbik7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHJldHVybiBlcnI7XFxuIFxcbiBcXHRpbm9kZV9sb2NrKGJkZXYtXFx1MDAzZWJkX21hcHBpbmctXFx1MDAzZWhvc3QpO1xcbiBcXHRmaWxlbWFwX2ludmFsaWRhdGVfbG9jayhiZGV2LVxcdTAwM2ViZF9tYXBwaW5nKTtcXG4tXFx0ZXJyID0gdHJ1bmNhdGVfYmRldl9yYW5nZShiZGV2LCBtb2RlLCBzdGFydCwgZW5kIC0gMSk7XFxuK1xcdGVyciA9IHRydW5jYXRlX2JkZXZfcmFuZ2UoYmRldiwgbW9kZSwgc3RhcnQsIHN0YXJ0ICsgbGVuIC0gMSk7XFxuIFxcdGlmICghZXJyKVxcbiBcXHRcXHRlcnIgPSBibGtkZXZfaXNzdWVfc2VjdXJlX2VyYXNlKGJkZXYsIHN0YXJ0IFxcdTAwM2VcXHUwMDNlIDksIGxlbiBcXHUwMDNlXFx1MDAzZSA5LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRHRlBfS0VSTkVMKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6MTM6MzUuMDE3MzAwMzQ3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjY0MzU2MzgxNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmxrZGV2X2lvY3RsXCIsXG4gICAgXCJjb21wYXRfYmxrZGV2X2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJMS1NFQ0RJU0NBUkQgaW9jdGwgaGFuZGxlciB0byB1c2UgYmxrX3ZhbGlkYXRlX2J5dGVfcmFuZ2UgZm9yIGJvdW5kcyBjaGVja2luZyBhbmQgZml4ZXMgdGhlIGVuZCByYW5nZSBjYWxjdWxhdGlvbiBmb3IgdHJ1bmNhdGVfYmRldl9yYW5nZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgZGV2aWNlIGlvY3RsIGhhbmRsaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzZjNhYmEzZjBhMmYzODNhNGJkNGE3NjhjNzg4NzE3NTk2MWNmZDVjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMTE6MTM6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9ibG9jay9pb2N0bC5jIGIvYmxvY2svaW9jdGwuY1xuaW5kZXggM2Q0ZWExNTM3NDU3ZDUuLjNiN2QzM2E3MzdlOGQ1IDEwMDY0NFxuLS0tIGEvYmxvY2svaW9jdGwuY1xuKysrIGIvYmxvY2svaW9jdGwuY1xuQEAgLTE3Niw4ICsxNzYsNyBAQCBzdGF0aWMgaW50IGJsa19pb2N0bF9kaXNjYXJkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcbiBzdGF0aWMgaW50IGJsa19pb2N0bF9zZWN1cmVfZXJhc2Uoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxuIFx0XHR2b2lkIF9fdXNlciAqYXJncClcbiB7XG4tXHR1aW50NjRfdCBzdGFydCwgbGVuLCBlbmQ7XG4tXHR1aW50NjRfdCByYW5nZVsyXTtcbitcdHVpbnQ2NF90IHJhbmdlWzJdLCBzdGFydCwgbGVuO1xuIFx0aW50IGVycjtcbiBcbiBcdGlmICghKG1vZGUgXHUwMDI2IEJMS19PUEVOX1dSSVRFKSlcbkBAIC0xODksMTUgKzE4OCwxMyBAQCBzdGF0aWMgaW50IGJsa19pb2N0bF9zZWN1cmVfZXJhc2Uoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxuIFxuIFx0c3RhcnQgPSByYW5nZVswXTtcbiBcdGxlbiA9IHJhbmdlWzFdO1xuLVx0aWYgKChzdGFydCBcdTAwMjYgNTExKSB8fCAobGVuIFx1MDAyNiA1MTEpKVxuLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdGlmIChjaGVja19hZGRfb3ZlcmZsb3coc3RhcnQsIGxlbiwgXHUwMDI2ZW5kKSB8fFxuLVx0ICAgIGVuZCBcdTAwM2UgYmRldl9ucl9ieXRlcyhiZGV2KSlcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRlcnIgPSBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZShiZGV2LCBzdGFydCwgbGVuKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4gXG4gXHRpbm9kZV9sb2NrKGJkZXYtXHUwMDNlYmRfbWFwcGluZy1cdTAwM2Vob3N0KTtcbiBcdGZpbGVtYXBfaW52YWxpZGF0ZV9sb2NrKGJkZXYtXHUwMDNlYmRfbWFwcGluZyk7XG4tXHRlcnIgPSB0cnVuY2F0ZV9iZGV2X3JhbmdlKGJkZXYsIG1vZGUsIHN0YXJ0LCBlbmQgLSAxKTtcbitcdGVyciA9IHRydW5jYXRlX2JkZXZfcmFuZ2UoYmRldiwgbW9kZSwgc3RhcnQsIHN0YXJ0ICsgbGVuIC0gMSk7XG4gXHRpZiAoIWVycilcbiBcdFx0ZXJyID0gYmxrZGV2X2lzc3VlX3NlY3VyZV9lcmFzZShiZGV2LCBzdGFydCBcdTAwM2VcdTAwM2UgOSwgbGVuIFx1MDAzZVx1MDAzZSA5LFxuIFx0XHRcdFx0XHRcdEdGUF9LRVJORUwpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6MTM6MzUuMDE3MzAyNDI3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgzMDA1ODY3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNlY3VyZSBFcmFzZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBibG9jay9pb2N0bC5jYCwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBibGtfaW9jdGxfc2VjdXJlX2VyYXNlYC4gVGhpcyBzZWVtcyB0byBiZSB0aGUgY29yZSBvZiB0aGUgYEJMS1NFQ0RJU0NBUkRgIGlvY3RsIGhhbmRsaW5nLiBUaGUgcGF0Y2ggYXBwZWFycyB0byBiZSBjbGVhbmluZyB1cCB0aGUgdmFsaWRhdGlvbiBsb2dpYy4gSW5zdGVhZCBvZiB0aGUgbWFudWFsIGNoZWNrcyBwcmV2aW91c2x5IGluIHBsYWNlLCBpdCdzIG5vdyBsZXZlcmFnaW5nIGBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZShiZGV2LCBzdGFydCwgbGVuKWAuIFRoYXQncyBhIGdvb2QgbW92ZTsgYSBkZWRpY2F0ZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiBpcyBhbG1vc3QgYWx3YXlzIHByZWZlcmFibGUgZm9yIG1haW50YWluYWJpbGl0eSBhbmQgY29ycmVjdG5lc3MuIEl0IGFic3RyYWN0cyB0aGUgY29tcGxleGl0aWVzIG9mIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3MsIGFuZCBpZiBpdCdzIHdlbGwtdGVzdGVkLCByZWR1Y2VzIHRoZSByaXNrIG9mIGludHJvZHVjaW5nIHN1YnRsZSBidWdzLlxuXG5UaGUgY2hhbmdlIGFsc28gYWZmZWN0cyBob3cgdGhlIHRydW5jYXRpb24gaXMgaGFuZGxlZC4gUHJldmlvdXNseSwgdGhlcmUgd2FzIHNvbWUgb2Zmc2V0IGNhbGN1bGF0aW9uIGFyb3VuZCB0aGUgYGVuZGAgcG9pbnQuIE5vdywgaXQgdXNlcyBgc3RhcnQgKyBsZW4gLSAxYCBmb3IgYHRydW5jYXRlX2JkZXZfcmFuZ2VgLCB3aGljaCBpcyBhIGNvbW1vbiBhbmQgdXN1YWxseSBtb3JlIGRpcmVjdCBhcHByb2FjaCB0byBkZWZpbmluZyBhIHJhbmdlIGJvdW5kYXJ5IGluIHRoaXMgY29udGV4dC4gSXQncyBtYWtpbmcgdGhlIGxvZ2ljIGNsZWFyZXIgYW5kIGVhc2llciB0byByZWFzb24gYWJvdXQsIHNvIGl0IG1ha2VzIHNlbnNlLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGBpb2N0bGAgY29kZSBpdHNlbGYgdG8gZnVsbHkgYXBwcmVjaWF0ZSB0aGUgY2hhbmdlIGFuZCB3aGF0IHNlY3VyZSBkaXNjYXJkIGFjdHVhbGx5IGRvZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNTUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMToxMzozOC44NDczNjM0OTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcxMTQ5MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmxrX2lvY3RsX3NlY3VyZV9lcmFzZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9pb2N0bC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL2lvY3RsLmM9MTIxPXN0YXRpYyBpbnQgYmxrX2lvY3RsX2Rpc2NhcmQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxcbi0tXFxuYmxvY2svaW9jdGwuYy0xNzUtXFxuYmxvY2svaW9jdGwuYzoxNzY6c3RhdGljIGludCBibGtfaW9jdGxfc2VjdXJlX2VyYXNlKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcXG5ibG9jay9pb2N0bC5jLTE3Ny1cXHRcXHR2b2lkIF9fdXNlciAqYXJncClcXG4tLVxcbmJsb2NrL2lvY3RsLmM9NjQ3PXN0YXRpYyBpbnQgYmxrZGV2X2NvbW1vbl9pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXFxuLS1cXG5ibG9jay9pb2N0bC5jLTY2MC1cXHRjYXNlIEJMS1NFQ0RJU0NBUkQ6XFxuYmxvY2svaW9jdGwuYzo2NjE6XFx0XFx0cmV0dXJuIGJsa19pb2N0bF9zZWN1cmVfZXJhc2UoYmRldiwgbW9kZSwgYXJncCk7XFxuYmxvY2svaW9jdGwuYy02NjItXFx0Y2FzZSBCTEtaRVJPT1VUOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMToxMzozOC45MDQ0ODMzNFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODEwNDIyMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGRlZXBseSBmYW1pbGlhciB3aXRoIHRoaXMgbGV2ZWwgb2Yga2VybmVsIGRldmVsb3BtZW50OlxuXG4qKkRpc3NlY3RpbmcgYSBCTEtTRUNESVNDQVJEIEltcGxlbWVudGF0aW9uKipcblxuQWxyaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBhIGNhbGwgb3JpZ2luYXRpbmcgZnJvbSBgYmxrZGV2X2NvbW1vbl9pb2N0bGAsIHNwZWNpZmljYWxseSBmb3IgYSBgQkxLU0VDRElTQ0FSRGAgb3BlcmF0aW9uLiBSaWdodCBvZmYgdGhlIGJhdCwgSSByZWNvZ25pemUgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyBhIHJlZmFjdG9yaW5nLCBsaWtlbHkgYWltZWQgYXQgaW1wcm92aW5nIGNvZGUgY2xhcml0eSBhbmQgbWFpbnRhaW5hYmlsaXR5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB3aGF0J3MgbmV3IGhlcmUuIEl0IGFwcGVhcnMgdGhleSd2ZSByZXBsYWNlZCBvcGVuLWNvZGVkIHZhbGlkYXRpb24g4oCTIHdoaWNoIGlzIG9mdGVuIGEgYml0IG1lc3N5IGFuZCBlcnJvci1wcm9uZSDigJMgd2l0aCBhIGNhbGwgdG8gYGJsa192YWxpZGF0ZV9ieXRlX3JhbmdlYC4gVGhhdCdzIHNtYXJ0LiBVdGlsaXppbmcgYSBkZWRpY2F0ZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiBzdWdnZXN0cyB0aGV5J3JlIGNvbnNvbGlkYXRpbmcgdGhpcyBjcnVjaWFsIGNoZWNrIGludG8gYSByZXVzYWJsZSBtb2R1bGUuIE5vdyBJJ20gaW5zdGFudGx5IHdvbmRlcmluZyB3aGF0IHRoZSBkZXRhaWxzIG9mIGBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZWAgYXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHNwZWNpZmljIHZhbGlkYXRpb25zIGl0IHBlcmZvcm1zIHRvIGZ1bGx5IGdyYXNwIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UgYW5kIHdoZXRoZXIgaXQgYWxpZ25zIHdpdGggYmVzdCBwcmFjdGljZXMgZm9yIGJsb2NrIGRldmljZSBpbnRlcmFjdGlvbnMuIExldCdzIGRpZyBpbiBhbmQgc2VlIGV4YWN0bHkgd2hhdCdzIGVuY2Fwc3VsYXRlZCB3aXRoaW4gYGJsa192YWxpZGF0ZV9ieXRlX3JhbmdlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAwMSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjEzOjQyLjI4NTUyODA0N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTQxMTUxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svaW9jdGwuYz04Nz1zdGF0aWMgaW50IGNvbXBhdF9ibGtwZ19pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LFxcbi0tXFxuYmxvY2svaW9jdGwuYy0xMDQtICovXFxuYmxvY2svaW9jdGwuYzoxMDU6c3RhdGljIGludCBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LFxcbmJsb2NrL2lvY3RsLmMtMTA2LVxcdFxcdFxcdFxcdCAgIHVpbnQ2NF90IHN0YXJ0LCB1aW50NjRfdCBsZW4pXFxuLS1cXG5ibG9jay9pb2N0bC5jPTEyMT1zdGF0aWMgaW50IGJsa19pb2N0bF9kaXNjYXJkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcXG4tLVxcbmJsb2NrL2lvY3RsLmMtMTQxLVxcdFxcdHJldHVybiAtRVBFUk07XFxuYmxvY2svaW9jdGwuYzoxNDI6XFx0ZXJyID0gYmxrX3ZhbGlkYXRlX2J5dGVfcmFuZ2UoYmRldiwgc3RhcnQsIGxlbik7XFxuYmxvY2svaW9jdGwuYy0xNDMtXFx0aWYgKGVycilcXG4tLVxcbmJsb2NrL2lvY3RsLmM9MTc2PXN0YXRpYyBpbnQgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXFxuLS1cXG5ibG9jay9pb2N0bC5jLTE5MC1cXHRsZW4gPSByYW5nZVsxXTtcXG5ibG9jay9pb2N0bC5jOjE5MTpcXHRlcnIgPSBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZShiZGV2LCBzdGFydCwgbGVuKTtcXG5ibG9jay9pb2N0bC5jLTE5Mi1cXHRpZiAoZXJyKVxcbi0tXFxuYmxvY2svaW9jdGwuYz04ODc9c3RhdGljIGludCBibGtkZXZfY21kX2Rpc2NhcmQoc3RydWN0IGlvX3VyaW5nX2NtZCAqY21kLFxcbi0tXFxuYmxvY2svaW9jdGwuYy05MDMtXFx0XFx0cmV0dXJuIC1FUEVSTTtcXG5ibG9jay9pb2N0bC5jOjkwNDpcXHRlcnIgPSBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZShiZGV2LCBzdGFydCwgbGVuKTtcXG5ibG9jay9pb2N0bC5jLTkwNS1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMToxMzo0Mi4zNDQ5NDQwNzVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjg3ODg3MTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIEJsb2NrIElPQ1RMIEhhbmRsaW5nKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGNoYW5nZXMgdG8gYmxvY2sgSU9DVEwgaGFuZGxpbmcgdXNpbmcgYGJsa192YWxpZGF0ZV9ieXRlX3JhbmdlYCwgd2hpY2ggdmVyaWZpZXMgYWxpZ25tZW50IGFuZCBib3VuZHMuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpczogKmlzIHRoaXMgZnV6emFibGU/KiBHaXZlbiB0aGF0IGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgdGhlIGFuc3dlciBpcyBhIHJlc291bmRpbmcgKnllcyouIFdlJ3ZlIGdvdCBhIHByaW1lIHRhcmdldC5cblxuTXkgbWFpbiBmb2N1cyB3aWxsIGJlIG9uIGBibGtfaW9jdGxfc2VjdXJlX2VyYXNlYCBhbmQgYGJsa2Rldl9jb21tb25faW9jdGxgIOKAkyB0aG9zZSBhcmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyB0byBkaWcgaW50by4gV2UgbmVlZCB0byBiZSB0aG9yb3VnaC5cblxuRnJvbSBhIGNvbmZpZ3VyYXRpb24gcGVyc3BlY3RpdmUsIGBCTE9DS2AgaXMgYWx3YXlzIGVuYWJsZWQsIHdoaWNoIGlzIGhlbHBmdWwuIFdlIGhhdmUgZmxleGliaWxpdHk7IHdlIGNhbiBzcGVjaWZ5IG5vdGhpbmcgb3IganVzdCBgQkxPQ0tgLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IGNoZWNrIGlmIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucywgbGlrZSBgQkxLU0VDRElTQ0FSRGAgb3IgcmVsYXRlZCBjb25maWd1cmF0aW9ucywgaW1wYWN0IG9yIGRpcmVjdGx5IHJlbGF0ZSB0byBgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZWAsIHRvIGtub3cgaWYgdGhlcmUncyBhbnkgY29uZmlnLXNwZWNpZmljIGJlaGF2aW9yIHdlIG5lZWQgdG8gYWNjb3VudCBmb3IgaW4gdGhlIGZ1enplci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc2MiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMToxMzo0Ni4wMzI4MzM1NjRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc5NjkwODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQkxLU0VDRElTQ0FSRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svaW9jdGwuYz02NDc9c3RhdGljIGludCBibGtkZXZfY29tbW9uX2lvY3RsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcXG4tLVxcbmJsb2NrL2lvY3RsLmMtNjU5LVxcdFxcdHJldHVybiBibGtfaW9jdGxfZGlzY2FyZChiZGV2LCBtb2RlLCBhcmcpO1xcbmJsb2NrL2lvY3RsLmM6NjYwOlxcdGNhc2UgQkxLU0VDRElTQ0FSRDpcXG5ibG9jay9pb2N0bC5jLTY2MS1cXHRcXHRyZXR1cm4gYmxrX2lvY3RsX3NlY3VyZV9lcmFzZShiZGV2LCBtb2RlLCBhcmdwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6MTM6NDYuMDkwODA3MTkyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE0MTA4NzQzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDaGFuZ2UgaW4gQmxvY2sgRGV2aWNlIElPQ1RMIEhhbmRsaW5nKipcblxuT2theSwgc28gdGhlcmUncyBhIGNoYW5nZSByZWxhdGVkIHRvIGBibGtfaW9jdGxfc2VjdXJlX2VyYXNlYCwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gdGhlIGBCTE9DS2AgY29uZmlnLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZWAgZnVuY3Rpb24gaXRzZWxmLiBMZXQncyBzZWUuLi4gYSBxdWljayBjaGVjayBpbiBgYmxvY2svaW9jdGwuY2Agd2lsbCB0ZWxsIG1lIGlmIGl0J3Mgc3RhdGljLiBIbW0sIHllcCwgaXQncyBzdGF0aWMuIFRoYXQncyBhIGtleSBkZXRhaWwhIFNpbmNlIGl0J3Mgc3RhdGljLCBpdCdzIGxpa2VseSBub3QgdGhlIGRpcmVjdCBlbnRyeSBwb2ludC4gVGhhdCBtZWFucyBJIG5lZWQgdG8gYnJvYWRlbiBteSBmb2N1cy4gVGhlIHN0YXRpYyBuYXR1cmUgc3VnZ2VzdHMgdGhhdCB0aGUgY2FsbGluZyBtZWNoYW5pc20gbWlnaHQgYmUgbW9yZSByZWxldmFudC4gR2l2ZW4gdGhhdCwgbGV0IG1lIHNoaWZ0IG15IGF0dGVudGlvbiB0byBgYmxrZGV2X2NvbW1vbl9pb2N0bGAuIEl0J3MgbGlrZWx5IHRoYXQncyB3aGVyZSB0aGUgY2FsbCB0byBgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZWAgb3JpZ2luYXRlcy4gTm93LCBJIGhhdmUgYSBuZXcgYW5nbGUgdG8gZXhwbG9yZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIzOSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjEzOjUzLjIzMTg5NjU1NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc0NjYxNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmxrZGV2X2NvbW1vbl9pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svaW9jdGwuYz02MTU9c3RhdGljIGludCBibGtkZXZfYnN6c2V0KHN0cnVjdCBmaWxlICpmaWxlLCBibGtfbW9kZV90IG1vZGUsXFxuLS1cXG5ibG9jay9pb2N0bC5jLTY0Ni0gKi9cXG5ibG9jay9pb2N0bC5jOjY0NzpzdGF0aWMgaW50IGJsa2Rldl9jb21tb25faW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxcbmJsb2NrL2lvY3RsLmMtNjQ4LVxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyxcXG4tLVxcbmJsb2NrL2lvY3RsLmMtNzQzLSAqXFxuYmxvY2svaW9jdGwuYzo3NDQ6ICogTmV3IGNvbW1hbmRzIG11c3QgYmUgY29tcGF0aWJsZSBhbmQgZ28gaW50byBibGtkZXZfY29tbW9uX2lvY3RsXFxuYmxvY2svaW9jdGwuYy03NDUtICovXFxuYmxvY2svaW9jdGwuYz03NDY9bG9uZyBibGtkZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5ibG9jay9pb2N0bC5jLTc4Ny1cXG5ibG9jay9pb2N0bC5jOjc4ODpcXHRyZXQgPSBibGtkZXZfY29tbW9uX2lvY3RsKGJkZXYsIG1vZGUsIGNtZCwgYXJnLCBhcmdwKTtcXG5ibG9jay9pb2N0bC5jLTc4OS1cXHRpZiAocmV0ICE9IC1FTk9JT0NUTENNRClcXG4tLVxcbmJsb2NrL2lvY3RsLmM9ODA2PWxvbmcgY29tcGF0X2Jsa2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmJsb2NrL2lvY3RsLmMtODQ3LVxcbmJsb2NrL2lvY3RsLmM6ODQ4OlxcdHJldCA9IGJsa2Rldl9jb21tb25faW9jdGwoYmRldiwgbW9kZSwgY21kLCBhcmcsIGFyZ3ApO1xcbmJsb2NrL2lvY3RsLmMtODQ5LVxcdGlmIChyZXQgPT0gLUVOT0lPQ1RMQ01EIFxcdTAwMjZcXHUwMDI2IGRpc2stXFx1MDAzZWZvcHMtXFx1MDAzZWNvbXBhdF9pb2N0bClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTE6MTM6NTMuMjg5MzY3NTk0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NzA1NDY3OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgQmxvY2sgRGV2aWNlIElPQ1RMIEhhbmRsaW5nKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLi4uIEknbSBsb29raW5nIGF0IHRoZXNlIGJsb2NrIGRldmljZSBJT0NUTCBmdW5jdGlvbnMuIEkgc2VlIGBibGtkZXZfY29tbW9uX2lvY3RsYCBpcyBkZWZpbmVkIGFzIGBzdGF0aWNgLCB3aGljaCBpc24ndCB1bnVzdWFsLiBJdCdzIG9mdGVuIHVzZWQgaW50ZXJuYWxseSB3aXRoaW4gdGhlIGJsb2NrIGRldmljZSBsYXllciBpdHNlbGYsIHNvIGl0IG1ha2VzIHNlbnNlLiBIb3dldmVyLCBgYmxrZGV2X2lvY3RsYCBpc24ndCBgc3RhdGljYCwgd2hpY2ggaW1tZWRpYXRlbHkgZ3JhYnMgbXkgYXR0ZW50aW9uLiBUaGF0IG1lYW5zIGl0J3MgbGlrZWx5IHRoZSBwdWJsaWMgaW50ZXJmYWNlLCB0aGUgZW50cnkgcG9pbnQgZm9yIElPQ1RMIGNhbGxzIGZyb20gdXNlcnNwYWNlLiBIbW0sIHRoYXQncyBpbnRlcmVzdGluZy4gQmV0dGVyIGRpdmUgaW4gYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgYmxrZGV2X2lvY3RsYCB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIHJvdXRpbmcgdGhlc2UgY2FsbHMgYW5kIGhhbmRsaW5nIGRpZmZlcmVudCBJT0NUTCBjb21tYW5kcy4gVGhhdCdzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBsb2dpYyB3aWxsIHJlc2lkZS4gVGltZSB0byBkaXNzZWN0IHRoaXMgZnVuY3Rpb24gYW5kIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkzNSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjEzOjU2LjI1OTkxNjU2MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYxMTQ5MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmxrZGV2X2lvY3RsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJibG9jay9ibGstem9uZWQuYz0zNTQ9c3RhdGljIGludCBibGtkZXZfY29weV96b25lX3RvX3VzZXIoc3RydWN0IGJsa196b25lICp6b25lLCB1bnNpZ25lZCBpbnQgaWR4LFxcbi0tXFxuYmxvY2svYmxrLXpvbmVkLmMtMzcwLSAqIEJMS1JFUE9SVFpPTkUgYW5kIEJMS1JFUE9SVFpPTkVWMiBpb2N0bCBwcm9jZXNzaW5nLlxcbmJsb2NrL2Jsay16b25lZC5jOjM3MTogKiBDYWxsZWQgZnJvbSBibGtkZXZfaW9jdGwuXFxuYmxvY2svYmxrLXpvbmVkLmMtMzcyLSAqL1xcbi0tXFxuYmxvY2svYmxrLXpvbmVkLmM9NDIwPXN0YXRpYyBpbnQgYmxrZGV2X3Jlc2V0X3pvbmUoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxcbi0tXFxuYmxvY2svYmxrLXpvbmVkLmMtNDQ5LSAqIEJMS1JFU0VUWk9ORSwgQkxLT1BFTlpPTkUsIEJMS0NMT1NFWk9ORSBhbmQgQkxLRklOSVNIWk9ORSBpb2N0bCBwcm9jZXNzaW5nLlxcbmJsb2NrL2Jsay16b25lZC5jOjQ1MDogKiBDYWxsZWQgZnJvbSBibGtkZXZfaW9jdGwuXFxuYmxvY2svYmxrLXpvbmVkLmMtNDUxLSAqL1xcbi0tXFxuYmxvY2svYmxrLmg9NjY0PWludCB0cnVuY2F0ZV9iZGV2X3JhbmdlKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcXG5ibG9jay9ibGsuaC02NjUtXFx0XFx0bG9mZl90IGxzdGFydCwgbG9mZl90IGxlbmQpO1xcbmJsb2NrL2Jsay5oOjY2Njpsb25nIGJsa2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7XFxuYmxvY2svYmxrLmgtNjY3LWludCBibGtkZXZfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTtcXG5ibG9jay9ibGsuaDo2Njg6bG9uZyBjb21wYXRfYmxrZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKTtcXG5ibG9jay9ibGsuaC02NjktXFxuLS1cXG5ibG9jay9mb3BzLmM9OTI3PWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZGVmX2Jsa19mb3BzID0ge1xcbi0tXFxuYmxvY2svZm9wcy5jLTkzNS1cXHQuZnN5bmNcXHRcXHQ9IGJsa2Rldl9mc3luYyxcXG5ibG9jay9mb3BzLmM6OTM2OlxcdC51bmxvY2tlZF9pb2N0bFxcdD0gYmxrZGV2X2lvY3RsLFxcbmJsb2NrL2ZvcHMuYy05MzctI2lmZGVmIENPTkZJR19DT01QQVRcXG5ibG9jay9mb3BzLmM6OTM4OlxcdC5jb21wYXRfaW9jdGxcXHQ9IGNvbXBhdF9ibGtkZXZfaW9jdGwsXFxuYmxvY2svZm9wcy5jLTkzOS0jZW5kaWZcXG4tLVxcbmJsb2NrL2lvY3RsLmM9NjQ3PXN0YXRpYyBpbnQgYmxrZGV2X2NvbW1vbl9pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXFxuLS1cXG5ibG9jay9pb2N0bC5jLTc0MC0vKlxcbmJsb2NrL2lvY3RsLmM6NzQxOiAqIEFsd2F5cyBrZWVwIHRoaXMgaW4gc3luYyB3aXRoIGNvbXBhdF9ibGtkZXZfaW9jdGwoKVxcbmJsb2NrL2lvY3RsLmMtNzQyLSAqIHRvIGhhbmRsZSBhbGwgaW5jb21wYXRpYmxlIGNvbW1hbmRzIGluIGJvdGggZnVuY3Rpb25zLlxcbi0tXFxuYmxvY2svaW9jdGwuYy03NDUtICovXFxuYmxvY2svaW9jdGwuYzo3NDY6bG9uZyBibGtkZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuYmxvY2svaW9jdGwuYy03NDcte1xcbi0tXFxuYmxvY2svaW9jdGwuYy04MDUtICAgRU5PSU9DVExDTUQgZm9yIHVua25vd24gaW9jdGxzLiAqL1xcbmJsb2NrL2lvY3RsLmM6ODA2OmxvbmcgY29tcGF0X2Jsa2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcXG5ibG9jay9pb2N0bC5jLTgwNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDExOjEzOjU2LjMxNjA0MTU2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMzY4Njk4NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBUaGlzIEJsb2NrIERldmljZSBJT0NUTCBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgc2VlIGhlcmUsIHRoZSBrZXkgZW50cnkgcG9pbnRzIGludG8gdGhpcyBmdW5jdGlvbmFsaXR5IGFyZSBgYmxrZGV2X2lvY3RsYCBhbmQgYGNvbXBhdF9ibGtkZXZfaW9jdGxgLiBJJ20gbWFya2luZyB0aG9zZSBhcyBgRm9jdXNTeW1ib2xzYCwgYXMgdGhleSBhcmUgdGhlIHN0YXJ0aW5nIHBvaW50cyBmb3IgdGhlIGlvY3RsIGNhbGxzIHRoYXQgd2UncmUgZXhhbWluaW5nLlxuXG5UaGlzIHBhdGNoLCBhcHBhcmVudGx5LCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgYnVnIHdpdGhpbiBgYmxrX2lvY3RsX3NlY3VyZV9lcmFzZWAuIFNwZWNpZmljYWxseSwgaXQgY29uY2VybnMgdGhlIHBvdGVudGlhbCBmb3IgaW50ZWdlciBvdmVyZmxvd3Mgb3IgaW5jb3JyZWN0IGNhbGN1bGF0aW9ucyByZWxhdGVkIHRvIHRoZSBgZW5kYCBwYXJhbWV0ZXIuIFRoYXQncyBhIGNsYXNzaWMgdnVsbmVyYWJpbGl0eSBwb2ludCB3aGVuIGRlYWxpbmcgd2l0aCByYW5nZSBjYWxjdWxhdGlvbnMsIHNvIHRoYXQncyBnb29kIGl0J3MgYmVpbmcgYWRkcmVzc2VkLlxuXG5GdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjaGFuZ2Ugd2l0aGluIHRoZSBpb2N0bCBoYW5kbGluZyBmb3IgYmxvY2sgZGV2aWNlcywgYSBmYWlybHkgY2VudHJhbCBwaWVjZSBvZiB0aGUga2VybmVsLiBTaW5jZSBpdCBkZWFscyB3aXRoIHNlY3VyZSBlcmFzZSBhbmQgcmFuZ2UgY2FsY3VsYXRpb24sIGZ1enppbmcgdGhpcyBhcmVhIHNvdW5kcyBsaWtlIGEgdmVyeSBnb29kIGlkZWE7IEknbSBtYXJraW5nIHRoYXQgYXMgYHRydWVgLiBJJ2xsIHdhbnQgdG8gcHJpb3JpdGl6ZSB0aGlzIGFyZWEgaW4gbXkgdGVzdGluZyByZWdpbWUuXG5cblRoZSBgRW5hYmxlQ29uZmlnc2AgYXJlIGxpc3RlZCBhcyBgQkxPQ0tgLCB3aGljaCBpcyBwcmV0dHkgbXVjaCBleHBlY3RlZCwgYnV0IGdvb2QgdG8gaGF2ZSBpdCBleHBsaWNpdGx5IHN0YXRlZC5cblxuVGhlIGNvcmUgb2YgdGhlIHJlYXNvbmluZyBpcyB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYEJMS1NFQ0RJU0NBUkRgIGlvY3RsIGhhbmRsZXIgdG8gdXNlIGBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZWAgZm9yIGJvdW5kcyBjaGVja2luZyBhbmQgZml4ZXMgYW4gZW5kIHJhbmdlIGNhbGN1bGF0aW9uIGlzc3VlIHRoYXQgYWZmZWN0cyBgdHJ1bmNhdGVfYmRldl9yYW5nZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgaW1wYWN0cyBjb3JlIGJsb2NrIGRldmljZSBJT0NUTCBoYW5kbGluZy4gSW4gZXNzZW5jZSwgdGhleSdyZSBzaG9yaW5nIHVwIHNvbWUgd2Vha25lc3NlcyBpbiB0aGUgcmFuZ2UgdmFsaWRhdGlvbiBsb2dpYy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgYmxrX3ZhbGlkYXRlX2J5dGVfcmFuZ2VgIGltcGxlbWVudGF0aW9uIGl0c2VsZiB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMuIERlZmluaXRlbHkgd29ydGggYSBkZWVwZXIgZGl2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk0OCwiT3V0cHV0VG9rZW5zIjo5OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxMToxNDowMS40NTI5MTMzNjhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDA4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJsa2Rldl9pb2N0bFwiLFxuICAgIFwiY29tcGF0X2Jsa2Rldl9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCTEtTRUNESVNDQVJEIGlvY3RsIGhhbmRsZXIgdG8gdXNlIGJsa192YWxpZGF0ZV9ieXRlX3JhbmdlIGZvciBib3VuZHMgY2hlY2tpbmcgYW5kIGZpeGVzIHRoZSBlbmQgcmFuZ2UgY2FsY3VsYXRpb24gZm9yIHRydW5jYXRlX2JkZXZfcmFuZ2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGJsb2NrIGRldmljZSBpb2N0bCBoYW5kbGluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibGtkZXZfaW9jdGxcIixcbiAgICBcImNvbXBhdF9ibGtkZXZfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQkxLU0VDRElTQ0FSRCBpb2N0bCBoYW5kbGVyIHRvIHVzZSBibGtfdmFsaWRhdGVfYnl0ZV9yYW5nZSBmb3IgYm91bmRzIGNoZWNraW5nIGFuZCBmaXhlcyB0aGUgZW5kIHJhbmdlIGNhbGN1bGF0aW9uIGZvciB0cnVuY2F0ZV9iZGV2X3JhbmdlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBibG9jayBkZXZpY2UgaW9jdGwgaGFuZGxpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjzctw[1] Phase: Succeeded StartedAt: 2026-07-26 11:14:13 +0000 UTC FinishedAt: 2026-07-26 11:14:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-26 11:14:13 +0000 UTC FinishedAt: 2026-07-26 11:14:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[2] Phase: Succeeded StartedAt: 2026-07-26 11:14:13 +0000 UTC FinishedAt: 2026-07-26 15:37:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-26 11:14:13 +0000 UTC FinishedAt: 2026-07-26 15:37:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-26 11:14:13 +0000 UTC FinishedAt: 2026-07-26 11:14:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-26 11:14:13 +0000 UTC FinishedAt: 2026-07-26 11:14:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjzctw/series-workflowjzctw-convert-artifact-29675399/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-26 11:14:23 +0000 UTC FinishedAt: 2026-07-26 11:50:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-26 11:14:23 +0000 UTC FinishedAt: 2026-07-26 11:50:24 +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:*3e608fd5-7682-470f-b79b-72a1d63f565d,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-workflowjzctw/series-workflowjzctw-convert-artifact-29675399/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": "80fd2473-0cba-4877-aad4-a90e3e339dc6", "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-workflowjzctw/series-workflowjzctw-build-action-3384155677/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-26 11:14:23 +0000 UTC FinishedAt: 2026-07-26 11:50:14 +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:*3e608fd5-7682-470f-b79b-72a1d63f565d,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-workflowjzctw/series-workflowjzctw-convert-artifact-29675399/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": "80fd2473-0cba-4877-aad4-a90e3e339dc6", "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-workflowjzctw/series-workflowjzctw-build-action-3384155677/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-26 11:50:24 +0000 UTC FinishedAt: 2026-07-26 11:50:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-26 11:50:24 +0000 UTC FinishedAt: 2026-07-26 11:50:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-26 11:50:24 +0000 UTC FinishedAt: 2026-07-26 11:50:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-26 11:50:24 +0000 UTC FinishedAt: 2026-07-26 11:50:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjzctw/series-workflowjzctw-convert-artifact-1491607734/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-26 11:50:34 +0000 UTC FinishedAt: 2026-07-26 11:52:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-26 11:50:34 +0000 UTC FinishedAt: 2026-07-26 11:52:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*80fd2473-0cba-4877-aad4-a90e3e339dc6,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-workflowjzctw/series-workflowjzctw-build-action-3384155677/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-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-26 11:52:30 +0000 UTC FinishedAt: 2026-07-26 11:52:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-26 11:52:30 +0000 UTC FinishedAt: 2026-07-26 11:52:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-26 11:52:30 +0000 UTC FinishedAt: 2026-07-26 12:29:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-26 11:52:30 +0000 UTC FinishedAt: 2026-07-26 12:29:21 +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:*3e608fd5-7682-470f-b79b-72a1d63f565d,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-workflowjzctw/series-workflowjzctw-convert-artifact-1491607734/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": "5118d6cd-6f13-4de1-8765-83c9eb738f41", "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-workflowjzctw/series-workflowjzctw-build-action-3135268282/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-26 11:52:30 +0000 UTC FinishedAt: 2026-07-26 12:29:11 +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:*3e608fd5-7682-470f-b79b-72a1d63f565d,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-workflowjzctw/series-workflowjzctw-convert-artifact-1491607734/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": "5118d6cd-6f13-4de1-8765-83c9eb738f41", "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-workflowjzctw/series-workflowjzctw-build-action-3135268282/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-26 12:29:21 +0000 UTC FinishedAt: 2026-07-26 12:29:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-26 12:29:21 +0000 UTC FinishedAt: 2026-07-26 12:29:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-26 12:29:21 +0000 UTC FinishedAt: 2026-07-26 12:31:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-26 12:29:21 +0000 UTC FinishedAt: 2026-07-26 12:31:38 +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:*5118d6cd-6f13-4de1-8765-83c9eb738f41,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-workflowjzctw/series-workflowjzctw-build-action-3135268282/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-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-26 12:31:48 +0000 UTC FinishedAt: 2026-07-26 15:37:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-26 12:31:48 +0000 UTC FinishedAt: 2026-07-26 15:37:49 +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":["blkdev_ioctl","compat_blkdev_ioctl"],"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:*80fd2473-0cba-4877-aad4-a90e3e339dc6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5118d6cd-6f13-4de1-8765-83c9eb738f41,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-workflowjzctw/series-workflowjzctw-build-action-3384155677/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-workflowjzctw/series-workflowjzctw-build-action-3135268282/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-26 12:31:48 +0000 UTC FinishedAt: 2026-07-26 12:31:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-26 12:31:48 +0000 UTC FinishedAt: 2026-07-26 12:31:53 +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":["blkdev_ioctl","compat_blkdev_ioctl"],"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-workflowjzctw/series-workflowjzctw-convert-artifact-3861680603/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-26 12:31:48 +0000 UTC FinishedAt: 2026-07-26 12:31:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-26 12:31:48 +0000 UTC FinishedAt: 2026-07-26 12:31:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-26 12:31:49 +0000 UTC FinishedAt: 2026-07-26 12:31:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-26 12:31:59 +0000 UTC FinishedAt: 2026-07-26 15:37:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjzctw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["blkdev_ioctl","compat_blkdev_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"03b0bcd2440b4ace0fb4bdf93e444db6454e7370","config_name":"upstream-apparmor-kasan.config","series_id":"2d188174-f80c-482b-bf14-6502e838acd2","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-26 12:31:59 +0000 UTC FinishedAt: 2026-07-26 15:37:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*80fd2473-0cba-4877-aad4-a90e3e339dc6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5118d6cd-6f13-4de1-8765-83c9eb738f41,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-workflowjzctw/series-workflowjzctw-build-action-3384155677/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-workflowjzctw/series-workflowjzctw-build-action-3135268282/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-workflowjzctw/series-workflowjzctw-convert-artifact-3861680603/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,}