Name: series-workflow7bn9b Phase: Succeeded StartedAt: 2026-06-20 08:41:53 +0000 UTC FinishedAt: 2026-06-20 09:55:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[0] Phase: Succeeded StartedAt: 2026-06-20 08:41:53 +0000 UTC FinishedAt: 2026-06-20 09:06:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[0].run-triage Phase: Succeeded StartedAt: 2026-06-20 08:41:53 +0000 UTC FinishedAt: 2026-06-20 09:06:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "b85966adbf5de0668a815c6e3527f87e0c387fb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "LIQUIDIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "b85966adbf5de0668a815c6e3527f87e0c387fb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "LIQUIDIO" ], "series_id": "b0afbc15-0e0c-44de-bffd-4f5b67e7f696" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "setup_cn23xx_octeon_pf_device" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA5OjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0xJUVVJRElPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtaXNzaW5nIFBDSSBCQVIgdW5tYXAgaW4gdGhlIGVycm9yIHBhdGggb2YgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBDYXZpdW0gTGlxdWlkSU8gUEYgZHJpdmVyLiBUaGlzIGVycm9yIHBhdGggY2FuIGJlIHJlYWNoZWQgZHVyaW5nIFBDSSBwcm9iZSBmdXp6aW5nIGJ5IGVtdWxhdGluZyBQQ0kgY29uZmlnIHNwYWNlIHJlYWRzIChlLmcuLCBtYWtpbmcgYGNuMjN4eF9nZXRfcGZfbnVtYCByZXR1cm4gbm9uLXplcm8pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA5OjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZGNjYTcxZWFmYzZkMDRhMjdkMDQ2MTE0MjM2NjRjYWFmMWQwMzU2ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDIwIDA5OjA1OjM5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jXG5pbmRleCA3NWYyMmY3NDc3NGNiMi4uYTE1NDhjYTgxZWNkM2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jXG5AQCAtMTE2Nyw4ICYjNDM7MTE2NywxMSBAQCBpbnQgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2Uoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcbiBcdFx0cmV0dXJuIDE7XG4gXHR9XG4gXG4tXHRpZiAoY24yM3h4X2dldF9wZl9udW0ob2N0KSAhPSAwKVxuJiM0MztcdGlmIChjbjIzeHhfZ2V0X3BmX251bShvY3QpICE9IDApIHtcbiYjNDM7XHRcdG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDApO1xuJiM0MztcdFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMSk7XG4gXHRcdHJldHVybiAxO1xuJiM0MztcdH1cbiBcbiBcdGlmIChjbjIzeHhfc3Jpb3ZfY29uZmlnKG9jdCkpIHtcbiBcdFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDk6MDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TElRVUlESU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1pc3NpbmcgUENJIEJBUiB1bm1hcCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIENhdml1bSBMaXF1aWRJTyBQRiBkcml2ZXIuIFRoaXMgZXJyb3IgcGF0aCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgUENJIHByb2JlIGZ1enppbmcgYnkgZW11bGF0aW5nIFBDSSBjb25maWcgc3BhY2UgcmVhZHMgKGUuZy4sIG1ha2luZyBgY24yM3h4X2dldF9wZl9udW1gIHJldHVybiBub24temVybykuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRjY2E3MWVhZmM2ZDA0YTI3ZDA0NjExNDIzNjY0Y2FhZjFkMDM1NmQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1biAyMCAwOTowNTozOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jCmluZGV4IDc1ZjIyZjc0Nzc0Y2IyLi5hMTU0OGNhODFlY2QzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jCkBAIC0xMTY3LDggJiM0MzsxMTY3LDExIEBAIGludCBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KQogCQlyZXR1cm4gMTsKIAl9CiAKLQlpZiAoY24yM3h4X2dldF9wZl9udW0ob2N0KSAhPSAwKQomIzQzOwlpZiAoY24yM3h4X2dldF9wZl9udW0ob2N0KSAhPSAwKSB7CiYjNDM7CQlvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAwKTsKJiM0MzsJCW9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDEpOwogCQlyZXR1cm4gMTsKJiM0MzsJfQogCiAJaWYgKGNuMjN4eF9zcmlvdl9jb25maWcob2N0KSkgewogCQlvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAwKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDk6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk2MQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZGluZyBgb2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7IG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDEpO2AgYmVmb3JlIHJldHVybmluZyAxIGluIHRoZSBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7SG1tLCB3aGF0JiMzOTtzIHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcyBjaGFuZ2UsIHBhcnRpY3VsYXJseSBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQ/JiMzNDsgV2UgYWxsIGtub3cgdGhlc2Ugc29ydHMgb2YgZGV2aWNlcyBjYW4gYmUgdHJpY2t5LgoKVGhlIGRyaXZlciBpdHNlbGYsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW9gLCBpcyBwcmV0dHkgc3BlY2lmaWM6IGEgUENJIGRldmljZSBkcml2ZXIgZm9yIHRoZSBDYXZpdW0gTGlxdWlkSU8gSW50ZWxsaWdlbnQgU2VydmVyIEFkYXB0ZXIuIFRoYXQmIzM5O3MgbXkgZmlyc3QgY2x1ZS4gIEkmIzM5O20gYmV0dGluZyB0aGlzIGlzbiYjMzk7dCBzb21ldGhpbmcgZWFzaWx5IGVtdWxhdGVkLCBhdCBsZWFzdCBub3QgaW4gYSBnZW5lcmFsLXB1cnBvc2Ugd2F5IHdpdGggc29tZXRoaW5nIGxpa2UgUUVNVS4gIEkgbWVhbiwgeW91ICpjb3VsZCogZW11bGF0ZSBpdCwgYnV0IGl0IHdvdWxkIHRha2UgY29uc2lkZXJhYmxlIGVmZm9ydC4gIEkmIzM5O20gZ3Vlc3NpbmcgdGhlcmUmIzM5O3Mgbm8gZGlyZWN0IFFFTVUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlLiBUaGUgbGV2ZWwgb2YgZGV0YWlsIHJlcXVpcmVkIGZvciBhIGNvcnJlY3QgZW11bGF0aW9uIGlzIHVzdWFsbHkgcHJldHR5IGhpZ2gsIGFuZCB2ZW5kb3JzIHRlbmQgdG8gaGFuZGxlIHRoZWlyIG93biBzb2x1dGlvbnMgaWYgdGhleSBuZWVkIGFuIGVtdWxhdG9yLgoKTGV0JiMzOTtzIGRvIGEgcXVpY2sgZG91YmxlLWNoZWNrIHdpdGggdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vS2NvbmZpZ2AgZmlsZSwgYnV0IEkmIzM5O20gbm90IGV4cGVjdGluZyBhbnl0aGluZyBvdXQgb2YgdGhlIG9yZGluYXJ5IHRoZXJlLiBMZXQgbWUgY29uZmlybSBteSBleHBlY3RhdGlvbnMgb2Ygc3BlY2lhbGl6ZWQgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDk6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTElRVUlESU8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDk6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU4MAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIHNpdHVhdGlvbiBteXNlbGY6CgoqKktjb25maWcgQ2hlY2sqKgoKT2theSwgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIgZG93biB0aGlzIHJhYmJpdCBob2xlLCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBzb21ldGhpbmcgZnVuZGFtZW50YWwuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgYmUgbG9va2luZyBhdCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBMZXQmIzM5O3MgcHVsbCB1cCB0aGUgYEtjb25maWdgIGZpbGUuIEkmIzM5O20gdGhpbmtpbmcgdGhlIG9uZSBzcGVjaWZpY2FsbHkgaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZ2AgZGlyZWN0b3J5IHNob3VsZCBwcm92aWRlIG1lIHdpdGggYWxsIHRoZSBuZWNlc3NhcnkgZGVwZW5kZW5jaWVzLCB2aXNpYmlsaXR5LCBhbmQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHJlbGV2YW50IHRvIHRoZSBldGhlcm5ldCBkZXZpY2UgSSBhbSB3b3JraW5nIHdpdGguIEkgbmVlZCB0byBxdWlja2x5IHNjYW4gdGhyb3VnaCBpdCwgbG9va2luZyBmb3IgYW55IGNvbmRpdGlvbmFsIGJ1aWxkcyBvciBwb3RlbnRpYWwgZ290Y2hhcyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiBJdCYjMzk7cyBiZXN0IHRvIHN0YXJ0IHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gZmlyc3QgYmVmb3JlIHdhc3RpbmcgdGltZSBsb29raW5nIGF0IHRoZSByZXN0IG9mIHRoZSBjb2RlLiBUaGlzIHdpbGwgc2F2ZSBzb21lIHBvdGVudGlhbCBoZWFkYWNoZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwOTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTElRVUlESU8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZz01ND1jb25maWcgQ0FWSVVNX1BUUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6NjU6Y29uZmlnIExJUVVJRElPX0NPUkVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTY2LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6Njg6Y29uZmlnIExJUVVJRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy02OS1cdHRyaXN0YXRlIFwmIzM0O0Nhdml1bSBMaXF1aWRJTyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc9ODQ9Y29uZmlnIE9DVEVPTl9NR01UX0VUSEVSTkVUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctOTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo5NTpjb25maWcgTElRVUlESU9fVkZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTk2LVx0dHJpc3RhdGUgXCYjMzQ7Q2F2aXVtIExpcXVpZElPIFZGIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwOTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDgwCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgRnV6emFiaWxpdHkgb2YgdGhlIENhdml1bSBMaXF1aWRJTyBEcml2ZXIqKgoKT2theSwgc28gdGhpcyBDYXZpdW0gTGlxdWlkSU8gZHJpdmVyLi4uaXQmIzM5O3MgYSBQQ0kgZGV2aWNlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBzeXprYWxsZXIgZnV6eiB0aGlzIHRoaW5nPyBBbmQgaG93PyBTeXprYWxsZXImIzM5O3MgZ290IGl0cyBwc2V1ZG8tUENJIGJ1cyBmdW5jdGlvbmFsaXR5LCBhbmQgaXQgY2FuIGFsc28gaW5qZWN0IFBDSSBjb25maWcgc3BhY2UgcmVhZHMgYW5kIHdyaXRlcyDigJMgdGhhdCYjMzk7cyB0aGUgb2J2aW91cyBhcHByb2FjaC4gTm93LCBJIHJlbWVtYmVyIHNlZWluZyBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VgIGluIHN5emthbGxlciYjMzk7cyBjb2RlYmFzZS4gQnV0LCB0eXBpY2FsbHksIHN5emthbGxlciBpcyBwcmV0dHkgdGFyZ2V0ZWQgd2l0aCBQQ0kgZGV2aWNlcywgYW5kIGdlbmVyYWxseSBvbmx5IGZ1enplcyBleHBsaWNpdGx5IHN1cHBvcnRlZCBvbmVzIG9yIGlmIGdlbmVyaWMgUENJIGZ1enppbmcgaXMgZW5hYmxlZCwgcmlnaHQ/CgpCdXQgdGhlbiBJIHNlZSB0aGUgY2x1ZTogJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uJiMzNDsgVGhpcyBnZXRzIG1lIHRoaW5raW5nIOKAkyBpcyB0aGUgQ2F2aXVtIExpcXVpZElPIGhhcmR3YXJlIGVtdWxhdGVkIGluIG91ciB0eXBpY2FsIHRlc3QgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVU/IEkgZG9uJiMzOTt0ICp0aGluayogc28uIEhvd2V2ZXIsIHRoZSBtZW50aW9uIG9mIGBtYWM4MDIxMV9od3NpbWAgcmVtaW5kcyBtZSB0aGF0IHN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIsIHdoaWNoIGNhbiBwcm9iZSBwcmV0dHkgbXVjaCBhbnkgUENJIGRyaXZlciBieSBlbXVsYXRpbmcgUENJIGRldmljZXMgYXQgdGhlIGNvbmZpZyBzcGFjZSBhbmQgTU1JTyBsZXZlbC4gU28sIHRoZSBrZXkgaXMgd2hldGhlciB0aGF0IGZ1enplciBhY3R1YWxseSByZWFjaGVzIHRoaXMgQ2F2aXVtIExpcXVpZElPLgoKQWxyaWdodCwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgYW5kIGRpdmUgaW50byB0aGUgY29kZS4uLiBJIHN1c3BlY3QgdGhlIGFuc3dlciBpcyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwOTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYz0xMDgwPWludCBjbjIzeHhfc3Jpb3ZfY29uZmlnKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0xMTM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYzoxMTM4OmludCBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0xMTM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTEyMTEtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYzoxMjEyOkVYUE9SVF9TWU1CT0xfR1BMKHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMTIxMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5oPTQ2PXN0cnVjdCBvY3RfdmZfc3RhdHMge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmgtNTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5oOjU1OmludCBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmgtNTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9MTMzNj1zdGF0aWMgaW50IG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTM1Ny1cdFx0b2N0LVx1MDAzZWNoaXBfaWQgPSBPQ1RFT05fQ04yM1hYX1BGX1ZJRDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjEzNTg6XHRcdHJldCA9IHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKG9jdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0xMzU5LVx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA5OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNzkKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29kZSBzbmlwcGV0LCB0aGlua2luZyBsaWtlIGFuIGV4cGVydDoKCioqVHJhY2luZyB0aGUgRGV2aWNlIEluaXRpYWxpemF0aW9uIEZsb3cqKgoKT2theSwgc28gYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBpcyB0aGUgZnVuY3Rpb24gb2YgaW50ZXJlc3QgaGVyZS4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgb2N0ZW9uX2NoaXBfc3BlY2lmaWNfc2V0dXBgIGlzIGltcG9ydGFudCwgYmVjYXVzZSB0aGlzIGltcGxpZXMgdGhlIHNldHVwIGlzIHZlcnkgc3BlY2lmaWMgdG8gdGhlIENOMjN4eCBPY3Rlb24gY2hpcCBmYW1pbHkuIEFuZCBgb2N0ZW9uX2NoaXBfc3BlY2lmaWNfc2V0dXBgIGl0c2VsZiBpcyBjYWxsZWQgZnJvbSBgb2N0ZW9uX2RldmljZV9pbml0YC4gTm93LCAqdGhhdCYjMzk7cyogYSBrZXkgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dC4gYG9jdGVvbl9kZXZpY2VfaW5pdGAgaXMgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4gVGhpcyBpcyB3aGVyZSB0aGUgd2hvbGUgZHJpdmVyIHN0cnVjdHVyZSBnZXRzIGJ1aWx0LiBUaGlzIGlzIHRoZSByb290IG9mIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGZvciB0aGUgZGV2aWNlLiBJIG5lZWQgdG8gc3RhcnQgbXkgZGVidWdnaW5nIHdpdGggYG9jdGVvbl9kZXZpY2VfaW5pdGAgYW5kIHVuZGVyc3RhbmQgd2hlcmUgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBmaXRzIHdpdGhpbiBpdHMgY29udHJvbCBmbG93LiBMZXQmIzM5O3Mgc3RhcnQgZGlzc2VjdGluZyBgb2N0ZW9uX2RldmljZV9pbml0YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDk6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2N0ZW9uX2RldmljZV9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0xMzk9c3RhdGljIGludCBvY3Rlb25fZGJnX2NvbnNvbGVfcHJpbnQoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdCwgdTMyIGNvbnNvbGVfbnVtLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTE0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjE0MjpzdGF0aWMgaW50IG9jdGVvbl9kZXZpY2VfaW5pdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTE0My1zdGF0aWMgaW50IGxpcXVpZGlvX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9ODIzPWxpcXVpZGlvX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBfX21heWJlX3VudXNlZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTg2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjg2NjpcdGlmIChvY3Rlb25fZGV2aWNlX2luaXQob2N0X2RldikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTg2Ny1cdFx0Y29tcGxldGUoXHUwMDI2aHMtXHUwMDNlaW5pdCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9Mzk4MD1vY3Rlb25fcmVjdl92Zl9kcnZfbm90aWNlKHN0cnVjdCBvY3Rlb25fcmVjdl9pbmZvICpyZWN2X2luZm8sIHZvaWQgKmJ1Zilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy00MDMwLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6NDAzMTogKiBvY3Rlb25fZGV2aWNlX2luaXQgLSBEZXZpY2UgaW5pdGlhbGl6YXRpb24gZm9yIGVhY2ggT2N0ZW9uIGRldmljZSB0aGF0IGlzIHByb2JlZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDAzMi0gKiBAb2N0ZW9uX2RldjogIG9jdGVvbiBkZXZpY2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTQwMzMtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzo0MDM0OnN0YXRpYyBpbnQgb2N0ZW9uX2RldmljZV9pbml0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3Rlb25fZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDAzNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9Njk9c3RhdGljIHZvaWQgbGlxdWlkaW9fdmZfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjcwOnN0YXRpYyBpbnQgb2N0ZW9uX2RldmljZV9pbml0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtNzEtc3RhdGljIGludCBsaXF1aWRpb19zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTM3OT1saXF1aWRpb192Zl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy00MDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzo0MDU6XHRpZiAob2N0ZW9uX2RldmljZV9pbml0KG9jdF9kZXYpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy00MDYtXHRcdGxpcXVpZGlvX3ZmX3JlbW92ZShwZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz0yMjMwPXN0YXRpYyBpbnQgbGlxdWlkaW9faW5pdF9uaWNfbW9kdWxlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjI2NC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjIyNjU6ICogb2N0ZW9uX2RldmljZV9pbml0IC0gRGV2aWNlIGluaXRpYWxpemF0aW9uIGZvciBlYWNoIE9jdGVvbiBkZXZpY2UgdGhhdCBpcyBwcm9iZWRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTIyNjYtICogQG9jdDogIG9jdGVvbiBkZXZpY2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTIyNjctICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoyMjY4OnN0YXRpYyBpbnQgb2N0ZW9uX2RldmljZV9pbml0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0yMjY5LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDk6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTczOQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDM5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgUENJIFByb2JlIEZ1enppbmcgd2l0aCBTeXprYWxsZXIqKgoKT2theSwgc28gYGxpcXVpZGlvX3Byb2JlYCB0cmlnZ2VycyB0aGlzIGNhbGwgY2hhaW46IGBvY3Rlb25fZGV2aWNlX2luaXRgIC0mZ3Q7IGBvY3Rlb25fY2hpcF9zcGVjaWZpY19zZXR1cGAgLSZndDsgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYC4gVGhhdCBsYXN0IGZ1bmN0aW9uIGlzIGEgUENJIHByb2JlIGZ1bmN0aW9uLCBhbmQgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgU3l6a2FsbGVyLiBJdCBoYXMgYSBQQ0kgZnV6emVyLCB3aGljaCBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gdGFyZ2V0IHRoZXNlIHByb2JlIGZ1bmN0aW9ucyBieSBzaW11bGF0aW5nIFBDSSBkZXZpY2VzLiBBIHF1aWNrIHNhbml0eSBjaGVjazogaXMgYExJUVVJRElPYCBhY3R1YWxseSBlbmFibGVkIGluIHRoZSB0eXBpY2FsIFN5emthbGxlciBjb25maWd1cmF0aW9ucz8gR2l2ZW4gaG93IGNvbXByZWhlbnNpdmUgU3l6a2FsbGVyIGlzIHdpdGggUENJIGRyaXZlciBmdXp6aW5nLCBJJiMzOTtkIGV4cGVjdCBpdCB0byBiZS4KCldhaXQsIGhvbGQgb24uIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgdW5yZWFjaGFibGUgY29kZSBwYXRocy4gSXQgYWR2aXNlcyB2ZXJpZnlpbmcgdGhhdCB0aGUgY29kZSBjYW4gYWN0dWFsbHkgKmJlKiBleGVjdXRlZCwgd2hpY2ggdGhyb3dzIGEgZmxhZy4gSG93ZXZlciwgdGhlIFBDSSBmdXp6ZXIgaXMgZGVzaWduZWQgdG8gcHJvYmUgY29kZSB0aGF0IGlzIHJlYWNoZWQgdmlhIGEgUENJIGRldmljZS4gU28gY2FuIFN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyIGFjdHVhbGx5IHJlYWNoIHRoaXMgY29kZT8gVGhlIGFuc3dlciBpcyB5ZXMsIHRoYXQmIzM5O3Mgd2hhdCBpdCYjMzk7cyBmb3IuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBwYXRjaCBpdHNlbGYuIEl0JiMzOTtzIGEgZml4IGZvciBhIG1lbW9yeSBsZWFrIG9yIG1pc3NpbmcgdW5tYXAgaW4gdGhlIGVycm9yIHBhdGggb2YgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZzsgZXJyb3IgcGF0aHMgYXJlICpwcmltZSogZnV6emluZyB0YXJnZXRzIGJlY2F1c2UgdGhleSBhcmUgb2Z0ZW4gbGVzcyBleGVyY2lzZWQgYW5kIG1vcmUgcHJvbmUgdG8gZXJyb3JzLiBTcGVjaWZpY2FsbHksIHRoZSBlcnJvciBwYXRoIGludm9sdmVzIGBjbjIzeHhfZ2V0X3BmX251bWAuCgpgYGBjCglpZiAoY24yM3h4X2dldF9wZl9udW0ob2N0KSAhPSAwKSB7CgkJb2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7CgkJb2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMSk7CgkJcmV0dXJuIDE7Cgl9CmBgYAoKVGhpcyBlcnJvciBwYXRoIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGR1cmluZyBQQ0kgcHJvYmUgZnV6emluZyBiZWNhdXNlIGl0JiMzOTtzIHBhcnQgb2YgdGhlIHByb2JlIGZ1bmN0aW9uIGl0c2VsZi4gV2UgZGVmaW5pdGVseSBuZWVkIHRvIGNoZWNrIHdoYXQgYGNuMjN4eF9nZXRfcGZfbnVtYCBkb2VzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoaXMgdW5tYXAgYW5kIHJldHVybi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDk6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y24yM3h4X2dldF9wZl9udW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM9OTc3PXN0YXRpYyB2b2lkIGNuMjN4eF9nZXRfcGNpZV9xbG1wb3J0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy05ODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jOjk4NTpzdGF0aWMgaW50IGNuMjN4eF9nZXRfcGZfbnVtKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTk4Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYz0xMTM4PWludCBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMTE2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM6MTE3MDpcdGlmIChjbjIzeHhfZ2V0X3BmX251bShvY3QpICE9IDApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMTE3MS1cdFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA5OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5OTYKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB3aGF0IEkmIzM5O20gYWJvdXQgdG8gZG8sIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDoKCioqRGVjb25zdHJ1Y3RpbmcgYGNuMjN4eF9nZXRfcGZfbnVtYCoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgYGNuMjN4eF9nZXRfcGZfbnVtYCBmdW5jdGlvbiBpcyBhbGwgYWJvdXQuIEJhc2VkIG9uIHRoZSBuYW1lIGFsb25lLCBteSBpbml0aWFsIGFzc3VtcHRpb25zIGFyZSBpdCYjMzk7cyBsaWtlbHkgcGFydCBvZiBhIENOMjN4eC1yZWxhdGVkIGRyaXZlciwgbGlrZWx5IGRlYWxpbmcgd2l0aCBhIHBoeXNpY2FsIGZ1bmN0aW9uIG51bWJlciBpbiBhIG11bHRpLWZ1bmN0aW9uIGRldmljZSBjb250ZXh0LCBwb3RlbnRpYWxseSByZWxhdGVkIHRvIG5ldHdvcmsgY2FyZHMuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBhdCBpdHMgZGVmaW5pdGlvbiwgdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQgaXMgdXNlZCwgYW5kIHdoYXQgaXRzIHJldHVybiB2YWx1ZSByZXByZXNlbnRzLiBJJiMzOTtsbCBtZW50YWxseSBtYXAgdGhpcyB0byB0aGUgaGFyZHdhcmUgSSBhbSBmYW1pbGlhciB3aXRoIGFuZCBjb25zaWRlciB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLCBsaWtlIHRoZSBkcml2ZXImIzM5O3MgZGV2aWNlIHN0cnVjdHVyZSwgYW5kIGFueSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycy4gSG9wZWZ1bGx5LCB0aGUgY29kZSBjb21tZW50cyBhcmUgZ29vZCBlbm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA5OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDk4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgOTg1Olx0c3RhdGljIGludCBjbjIzeHhfZ2V0X3BmX251bShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuIDk4NjpcdHtcbiA5ODc6XHRcdHUzMiBmZGxfYml0ID0gMDtcbiA5ODg6XHRcdHU2NCBwa3QwX2luX2N0bCwgZDY0O1xuIDk4OTpcdFx0aW50IHBmbnVtLCBtYWMsIHRycywgcmV0O1xuIDk5MDpcdFxuIDk5MTpcdFx0cmV0ID0gMDtcbiA5OTI6XHRcbiA5OTM6XHRcdC8qIFJlYWQgRnVuY3Rpb24gRGVwZW5kZW5jeSBMaW5rIHJlZyB0byBnZXQgdGhlIGZ1bmN0aW9uIG51bWJlciAqL1xuIDk5NDpcdFx0aWYgKHBjaV9yZWFkX2NvbmZpZ19kd29yZChvY3QtXHUwMDNlcGNpX2RldiwgQ04yM1hYX1BDSUVfU1JJT1ZfRkRMLFxuIDk5NTpcdFx0XHRcdFx0ICBcdTAwMjZmZGxfYml0KSA9PSAwKSB7XG4gOTk2Olx0XHRcdG9jdC1cdTAwM2VwZl9udW0gPSAoKGZkbF9iaXQgXHUwMDNlXHUwMDNlIENOMjNYWF9QQ0lFX1NSSU9WX0ZETF9CSVRfUE9TKSBcdTAwMjZcbiA5OTc6XHRcdFx0XHQgICAgICAgQ04yM1hYX1BDSUVfU1JJT1ZfRkRMX01BU0spO1xuIDk5ODpcdFx0fSBlbHNlIHtcbiA5OTk6XHRcdFx0cmV0ID0gLUVJTlZBTDtcbjEwMDA6XHRcbjEwMDE6XHRcdFx0LyogVW5kZXIgc29tZSB2aXJ0dWFsIGVudmlyb25tZW50cywgZXh0ZW5kZWQgUENJIHJlZ3MgYXJlXG4xMDAyOlx0XHRcdCAqIGluYWNjZXNzaWJsZSwgaW4gd2hpY2ggY2FzZSB0aGUgYWJvdmUgcmVhZCB3aWxsIGhhdmUgZmFpbGVkLlxuMTAwMzpcdFx0XHQgKiBJbiB0aGlzIGNhc2UsIHJlYWQgdGhlIFBGIG51bWJlciBmcm9tIHRoZVxuMTAwNDpcdFx0XHQgKiBTTElfUEtUMF9JTlBVVF9DT05UUk9MIHJlZyAod3JpdHRlbiBieSBmL3cpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA5OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NDMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFBvdGVudGlhbDogUENJIENvbmZpZyBTcGFjZSBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSBhIHBvdGVudGlhbCBnb2xkbWluZSBmb3IgZnV6emluZy4gSXQmIzM5O3MgcmVhZGluZyBkaXJlY3RseSBmcm9tIHRoZSBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZS4gV2Uga25vdyBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciBoYXMgY29udHJvbCBvdmVyIHRoYXQgYXJlYSwgc28gd2UgY2FuIGFic29sdXRlbHkgZmVlZCBpdCBtYWxpY2lvdXMsIG5vbi16ZXJvIHZhbHVlcyB0byB0cmlnZ2VyIHRoZSBlcnJvciBwYXRoLiBUaGlzIGlzIHByYWN0aWNhbGx5IGJlZ2dpbmcgdG8gYmUgZnV6emVkLgoKTm93LCB0byBnZXQgdGhpcyBydW5uaW5nIGluIGEgdGVzdCBlbnZpcm9ubWVudCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIG1pbmltYWwgY29uZmlndXJhdGlvbi4gSSByZW1lbWJlciBzZWVpbmcgYSBgQ09ORklHX0xJUVVJRElPYCBvcHRpb24gbWVudGlvbmVkLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnYCDigJMgSSBuZWVkIHRvIGVuc3VyZSB0aGF0IGBMSVFVSURJT2AgYW5kIGFueSBzdXBwb3J0aW5nIGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwOTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA2NTpcdGNvbmZpZyBMSVFVSURJT19DT1JFXG4gIDY2Olx0XHR0cmlzdGF0ZVxuICA2NzpcdFxuICA2ODpcdGNvbmZpZyBMSVFVSURJT1xuICA2OTpcdFx0dHJpc3RhdGUgXCYjMzQ7Q2F2aXVtIExpcXVpZElPIHN1cHBvcnRcJiMzNDtcbiAgNzA6XHRcdGRlcGVuZHMgb24gNjRCSVQgXHUwMDI2XHUwMDI2IFBDSVxuICA3MTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNzI6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgNzM6XHRcdHNlbGVjdCBDUkMzMlxuICA3NDpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICA3NTpcdFx0c2VsZWN0IExJUVVJRElPX0NPUkVcbiAgNzY6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICA3NzpcdFx0aGVscFxuICA3ODpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBDYXZpdW0gTGlxdWlkSU8gSW50ZWxsaWdlbnQgU2VydmVyIEFkYXB0ZXJzXG4gIDc5Olx0XHQgIGJhc2VkIG9uIENONjZYWCwgQ042OFhYIGFuZCBDTjIzWFggY2hpcHMuXG4gIDgwOlx0XG4gIDgxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgODI6XHRcdCAgd2lsbCBiZSBjYWxsZWQgbGlxdWlkaW8uICBUaGlzIGlzIHJlY29tbWVuZGVkLlxuICA4MzpcdFxuICA4NDpcdGNvbmZpZyBPQ1RFT05fTUdNVF9FVEhFUk5FVFxuICA4NTpcdFx0dHJpc3RhdGUgXCYjMzQ7T2N0ZW9uIE1hbmFnZW1lbnQgcG9ydCBldGhlcm5ldCBkcml2ZXIgKENONVhYWCwgQ042WFhYKVwmIzM0O1xuICA4NjpcdFx0ZGVwZW5kcyBvbiBDQVZJVU1fT0NURU9OX1NPQ1xuICA4NzpcdFx0c2VsZWN0IFBIWUxJQlxuICA4ODpcdFx0c2VsZWN0IE1ESU9fT0NURU9OXG4gIDg5Olx0XHRkZWZhdWx0IHlcbiAgOTA6XHRcdGhlbHBcbiAgOTE6XHRcdCAgRW5hYmxlIHRoZSBldGhlcm5ldCBkcml2ZXIgZm9yIHRoZSBtYW5hZ2VtZW50XG4gIDkyOlx0XHQgIHBvcnQgb24gQ2F2aXVtIE5ldHdvcmtzJiMzOTsgT2N0ZW9uIENONTdYWCwgQ041NlhYLCBDTjU1WFgsXG4gIDkzOlx0XHQgIENONTRYWCwgQ041MlhYLCBhbmQgQ042WFhYIGNoaXBzLlxuICA5NDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwOTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzU0CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVjb2RpbmcgdGhlIExpcXVpZElPIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBMSVFVSURJT2AgY29uZmlndXJhdGlvbi4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIHRoYXQgYExJUVVJRElPYCByZXByZXNlbnRzIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb24uIEJ1dCB3aGF0IGFib3V0IGBMSVFVSURJT19WRmA/IFRoYXQgc3VmZml4IHNlZW1zIGltcG9ydGFudCwgYW5kIHRoZSBtb2RpZmljYXRpb24gdG8gYGNuMjN4eF9wZl9kZXZpY2UuY2AgaW4gdGhlIHBhdGNoIGlzIG1ha2luZyBtZSB0aGluayB0aGlzIHJlbGF0ZXMgdG8gdGhlIFBoeXNpY2FsIEZ1bmN0aW9uIChQRikgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZXNlIHR3byBmbGFncy4KCk15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtsbCBmaW5kIGhvdyB0aGVzZSBgTElRVUlESU9gIG9wdGlvbnMgYXJlIHVzZWQgdG8gY29tcGlsZSB0aGUgbmVjZXNzYXJ5IG1vZHVsZXMgYW5kLCBob3BlZnVsbHksIGdldCBzb21lIGNsYXJpdHkgb24gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSBWaXJ0dWFsIEZ1bmN0aW9uIChWRikgYXNwZWN0LiBUaGUgTWFrZWZpbGUgd2lsbCBsaWtlbHkgcmV2ZWFsIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9yIGRlcGVuZGVuY3kgZGVmaW5pdGlvbnMuIEkgbmVlZCB0byB1bnJhdmVsIHRoZXNlIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDk6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgQ2F2aXVtIExpcXVpZGlvIGV0aGVybmV0IGRldmljZSBkcml2ZXJcbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0b2JqLSQoQ09ORklHX0xJUVVJRElPX0NPUkUpICYjNDM7PSBsaXF1aWRpby1jb3JlLm9cbiAgIDc6XHRsaXF1aWRpby1jb3JlLXkgOj0gXFxcbiAgIDg6XHRcdFx0bGlvX2V0aHRvb2wub1x0XHRcXFxuICAgOTpcdFx0XHRsaW9fY29yZS5vXHRcdFxcXG4gIDEwOlx0XHRcdHJlcXVlc3RfbWFuYWdlci5vXHRcXFxuICAxMTpcdFx0XHRyZXNwb25zZV9tYW5hZ2VyLm9cdFxcXG4gIDEyOlx0XHRcdG9jdGVvbl9kZXZpY2Uub1x0XHRcXFxuICAxMzpcdFx0XHRjbjY2eHhfZGV2aWNlLm9cdFx0XFxcbiAgMTQ6XHRcdFx0Y242OHh4X2RldmljZS5vXHRcdFxcXG4gIDE1Olx0XHRcdGNuMjN4eF9wZl9kZXZpY2Uub1x0XFxcbiAgMTY6XHRcdFx0Y24yM3h4X3ZmX2RldmljZS5vXHRcXFxuICAxNzpcdFx0XHRvY3Rlb25fbWFpbGJveC5vXHRcXFxuICAxODpcdFx0XHRvY3Rlb25fbWVtX29wcy5vXHRcXFxuICAxOTpcdFx0XHRvY3Rlb25fZHJvcS5vXHRcdFxcXG4gIDIwOlx0XHRcdG9jdGVvbl9uaWMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwOTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTQ0CgkJCQkJCQlvdXRwdXQ6IDEzNQoJCQkJCQkJdGhvdWdodHM6IDM1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENhdml1bSBMaXF1aWRJTyBQRiBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gaGVyZSYjMzk7cyB0aGUgYnJlYWtkb3duIG9mIHdoYXQgSSYjMzk7bSBsb29raW5nIGF0LiBgY24yM3h4X3BmX2RldmljZS5vYCBpcyBwYXJ0IG9mIGBsaXF1aWRpby1jb3JlLm9gLCB3aGljaCBpcyBvbmx5IGJ1aWx0IGlmIGBDT05GSUdfTElRVUlESU9fQ09SRWAgaXMgZW5hYmxlZC4gQW5kLCBjcnVjaWFsbHksIGBDT05GSUdfTElRVUlESU9fQ09SRWAgaXMgKnNlbGVjdGVkKiBieSBlaXRoZXIgYENPTkZJR19MSVFVSURJT2Agb3IgYENPTkZJR19MSVFVSURJT19WRmAuIFJpZ2h0LCBzbyBlbmFibGluZyBqdXN0IGBMSVFVSURJT2AgaXMgc3VmZmljaWVudCB0byBicmluZyBpbiB0aGUgcmVsZXZhbnQgY29kZSBwYXRoLiBFeGNlbGxlbnQuIFRoYXQgc2ltcGxpZmllcyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiB0byBjb25zaWRlci4KCk5vdywgbGV0JiMzOTtzIHplcm8gaW4gb24gdGhlIGtleSBmdW5jdGlvbnMuIFRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYC4gSSB3YW50IHRvIGludmVzdGlnYXRlIHRoaXMgYW5kIG90aGVyIGZ1bmN0aW9ucywgc3VjaCBhcyBgY24yM3h4X2dldF9wZl9udW1gLCBidXQgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBpcyBkZWZpbml0ZWx5IHRoZSBtYWluIG9uZS4KCkEgcXVpY2sgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGluIGEgaG90IHBhdGgsIHRoaXMgaXMgYSBwYXJ0IG9mIGluaXRpYWxpemF0aW9uLCBub3QgYW4gaW50ZXJydXB0IG9yIGRhdGEgcHJvY2Vzc2luZyBmdW5jdGlvbi4gSXQgaXMgY2FsbGVkIGZyb20gYG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwYCwgd2hpY2ggaXMsIGluIHR1cm4sIGNhbGxlZCBieSBgb2N0ZW9uX2RldmljZV9pbml0YCwgYW5kIHRoYXQmIzM5O3MgdWx0aW1hdGVseSBjYWxsZWQgYnkgYGxpcXVpZGlvX3Byb2JlYC4gVGhpcyByZWluZm9yY2VzIGl0JiMzOTtzIGFuIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLgoKTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGFuIGVycm9yIGluIGhvdyBQQ0kgQkFScyBhcmUgaGFuZGxlZCBpbiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgLiBJdCBzZWVtcyB0aGVyZSYjMzk7cyBhIG1pc3NpbmcgdW5tYXAgaW4gdGhlIGVycm9yIHBhdGguIFRoaXMgZXJyb3IgcGF0aCBjYW4gYmUgdHJpZ2dlcmVkIGR1cmluZyBQQ0kgcHJvYmUgZnV6emluZy4gV2hlbiBwcm9iaW5nLCB0aGUgc3lzdGVtIG1heSBlbXVsYXRlIFBDSSBjb25maWcgc3BhY2UgcmVhZHMsIGFuZCB0aGF0IG1pZ2h0IGNhdXNlIGBjbjIzeHhfZ2V0X3BmX251bWAgdG8gcmV0dXJuIG5vbi16ZXJvIGluIHRoZSBlcnJvciBwYXRoLiBUaGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgb2YgaW50ZXJlc3QgaXMgdGhlcmVmb3JlIGBMSVFVSURJT2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA5OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtMSVFVSURJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWlzc2luZyBQQ0kgQkFSIHVubWFwIGluIHRoZSBlcnJvciBwYXRoIG9mIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgQ2F2aXVtIExpcXVpZElPIFBGIGRyaXZlci4gVGhpcyBlcnJvciBwYXRoIGNhbiBiZSByZWFjaGVkIGR1cmluZyBQQ0kgcHJvYmUgZnV6emluZyBieSBlbXVsYXRpbmcgUENJIGNvbmZpZyBzcGFjZSByZWFkcyAoZS5nLiwgbWFraW5nIGBjbjIzeHhfZ2V0X3BmX251bWAgcmV0dXJuIG5vbi16ZXJvKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TElRVUlESU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1pc3NpbmcgUENJIEJBUiB1bm1hcCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIENhdml1bSBMaXF1aWRJTyBQRiBkcml2ZXIuIFRoaXMgZXJyb3IgcGF0aCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgUENJIHByb2JlIGZ1enppbmcgYnkgZW11bGF0aW5nIFBDSSBjb25maWcgc3BhY2UgcmVhZHMgKGUuZy4sIG1ha2luZyBgY24yM3h4X2dldF9wZl9udW1gIHJldHVybiBub24temVybykuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwOTowNTo0MC4yOTY3ODI3MDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTEwNjM0MzI0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJMSVFVSURJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtaXNzaW5nIFBDSSBCQVIgdW5tYXAgaW4gdGhlIGVycm9yIHBhdGggb2YgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBDYXZpdW0gTGlxdWlkSU8gUEYgZHJpdmVyLiBUaGlzIGVycm9yIHBhdGggY2FuIGJlIHJlYWNoZWQgZHVyaW5nIFBDSSBwcm9iZSBmdXp6aW5nIGJ5IGVtdWxhdGluZyBQQ0kgY29uZmlnIHNwYWNlIHJlYWRzIChlLmcuLCBtYWtpbmcgYGNuMjN4eF9nZXRfcGZfbnVtYCByZXR1cm4gbm9uLXplcm8pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwOTowNTo0MC4yOTY3ODc1MjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjU5NjQxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGRjY2E3MWVhZmM2ZDA0YTI3ZDA0NjExNDIzNjY0Y2FhZjFkMDM1NmRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdW4gMjAgMDk6MDU6MzkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcXG5pbmRleCA3NWYyMmY3NDc3NGNiMi4uYTE1NDhjYTgxZWNkM2IgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcXG5AQCAtMTE2Nyw4ICsxMTY3LDExIEBAIGludCBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxcbiBcXHRcXHRyZXR1cm4gMTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGNuMjN4eF9nZXRfcGZfbnVtKG9jdCkgIT0gMClcXG4rXFx0aWYgKGNuMjN4eF9nZXRfcGZfbnVtKG9jdCkgIT0gMCkge1xcbitcXHRcXHRvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAwKTtcXG4rXFx0XFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMSk7XFxuIFxcdFxcdHJldHVybiAxO1xcbitcXHR9XFxuIFxcbiBcXHRpZiAoY24yM3h4X3NyaW92X2NvbmZpZyhvY3QpKSB7XFxuIFxcdFxcdG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwOTowNTo0MC43NzAyNDIwNjVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNjMyODc0NTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkxJUVVJRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1pc3NpbmcgUENJIEJBUiB1bm1hcCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIENhdml1bSBMaXF1aWRJTyBQRiBkcml2ZXIuIFRoaXMgZXJyb3IgcGF0aCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgUENJIHByb2JlIGZ1enppbmcgYnkgZW11bGF0aW5nIFBDSSBjb25maWcgc3BhY2UgcmVhZHMgKGUuZy4sIG1ha2luZyBgY24yM3h4X2dldF9wZl9udW1gIHJldHVybiBub24temVybykuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGNjYTcxZWFmYzZkMDRhMjdkMDQ2MTE0MjM2NjRjYWFmMWQwMzU2ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDIwIDA5OjA1OjM5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcbmluZGV4IDc1ZjIyZjc0Nzc0Y2IyLi5hMTU0OGNhODFlY2QzYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcbkBAIC0xMTY3LDggKzExNjcsMTEgQEAgaW50IHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4gXHRcdHJldHVybiAxO1xuIFx0fVxuIFxuLVx0aWYgKGNuMjN4eF9nZXRfcGZfbnVtKG9jdCkgIT0gMClcbitcdGlmIChjbjIzeHhfZ2V0X3BmX251bShvY3QpICE9IDApIHtcbitcdFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7XG4rXHRcdG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDEpO1xuIFx0XHRyZXR1cm4gMTtcbitcdH1cbiBcbiBcdGlmIChjbjIzeHhfc3Jpb3ZfY29uZmlnKG9jdCkpIHtcbiBcdFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwOTowNTo0MC43NzAyNDM1NTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTU1NjM0MDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNgLiBJdCBsb29rcyBsaWtlIGl0J3MgYWRkaW5nIGBvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAwKTsgb2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMSk7YCBiZWZvcmUgcmV0dXJuaW5nIDEgaW4gdGhlIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJIbW0sIHdoYXQncyB0aGUgcmVhY2hhYmlsaXR5IG9mIHRoaXMgY2hhbmdlLCBwYXJ0aWN1bGFybHkgaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0P1wiIFdlIGFsbCBrbm93IHRoZXNlIHNvcnRzIG9mIGRldmljZXMgY2FuIGJlIHRyaWNreS5cblxuVGhlIGRyaXZlciBpdHNlbGYsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW9gLCBpcyBwcmV0dHkgc3BlY2lmaWM6IGEgUENJIGRldmljZSBkcml2ZXIgZm9yIHRoZSBDYXZpdW0gTGlxdWlkSU8gSW50ZWxsaWdlbnQgU2VydmVyIEFkYXB0ZXIuIFRoYXQncyBteSBmaXJzdCBjbHVlLiAgSSdtIGJldHRpbmcgdGhpcyBpc24ndCBzb21ldGhpbmcgZWFzaWx5IGVtdWxhdGVkLCBhdCBsZWFzdCBub3QgaW4gYSBnZW5lcmFsLXB1cnBvc2Ugd2F5IHdpdGggc29tZXRoaW5nIGxpa2UgUUVNVS4gIEkgbWVhbiwgeW91ICpjb3VsZCogZW11bGF0ZSBpdCwgYnV0IGl0IHdvdWxkIHRha2UgY29uc2lkZXJhYmxlIGVmZm9ydC4gIEknbSBndWVzc2luZyB0aGVyZSdzIG5vIGRpcmVjdCBRRU1VIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZS4gVGhlIGxldmVsIG9mIGRldGFpbCByZXF1aXJlZCBmb3IgYSBjb3JyZWN0IGVtdWxhdGlvbiBpcyB1c3VhbGx5IHByZXR0eSBoaWdoLCBhbmQgdmVuZG9ycyB0ZW5kIHRvIGhhbmRsZSB0aGVpciBvd24gc29sdXRpb25zIGlmIHRoZXkgbmVlZCBhbiBlbXVsYXRvci5cblxuTGV0J3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgd2l0aCB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9LY29uZmlnYCBmaWxlLCBidXQgSSdtIG5vdCBleHBlY3RpbmcgYW55dGhpbmcgb3V0IG9mIHRoZSBvcmRpbmFyeSB0aGVyZS4gTGV0IG1lIGNvbmZpcm0gbXkgZXhwZWN0YXRpb25zIG9mIHNwZWNpYWxpemVkIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTYxLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDk6MDU6NDUuNzI1ODc5ODEzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MzYwMDE5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTElRVUlESU9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDA5OjA1OjQ1Ljc4MTI0NTkyMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MjYwODQ1ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBzaXR1YXRpb24gbXlzZWxmOlxuXG4qKktjb25maWcgQ2hlY2sqKlxuXG5Pa2F5LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBkb3duIHRoaXMgcmFiYml0IGhvbGUsIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBtYWtlIGFic29sdXRlbHkgc3VyZSBJJ20gbm90IG1pc3Npbmcgc29tZXRoaW5nIGZ1bmRhbWVudGFsLiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTGV0J3MgcHVsbCB1cCB0aGUgYEtjb25maWdgIGZpbGUuIEknbSB0aGlua2luZyB0aGUgb25lIHNwZWNpZmljYWxseSBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnYCBkaXJlY3Rvcnkgc2hvdWxkIHByb3ZpZGUgbWUgd2l0aCBhbGwgdGhlIG5lY2Vzc2FyeSBkZXBlbmRlbmNpZXMsIHZpc2liaWxpdHksIGFuZCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgcmVsZXZhbnQgdG8gdGhlIGV0aGVybmV0IGRldmljZSBJIGFtIHdvcmtpbmcgd2l0aC4gSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiB0aHJvdWdoIGl0LCBsb29raW5nIGZvciBhbnkgY29uZGl0aW9uYWwgYnVpbGRzIG9yIHBvdGVudGlhbCBnb3RjaGFzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuIEl0J3MgYmVzdCB0byBzdGFydCB3aXRoIHRoZSBjb25maWd1cmF0aW9uIGZpcnN0IGJlZm9yZSB3YXN0aW5nIHRpbWUgbG9va2luZyBhdCB0aGUgcmVzdCBvZiB0aGUgY29kZS4gVGhpcyB3aWxsIHNhdmUgc29tZSBwb3RlbnRpYWwgaGVhZGFjaGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1ODAsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwOTowNTo0OC43MDczMzIzMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTE4ODA2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTElRVUlESU9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc9NTQ9Y29uZmlnIENBVklVTV9QVFBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjY1OmNvbmZpZyBMSVFVSURJT19DT1JFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctNjYtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy02Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo2ODpjb25maWcgTElRVUlESU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy02OS1cXHR0cmlzdGF0ZSBcXFwiQ2F2aXVtIExpcXVpZElPIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZz04ND1jb25maWcgT0NURU9OX01HTVRfRVRIRVJORVRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjk1OmNvbmZpZyBMSVFVSURJT19WRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTk2LVxcdHRyaXN0YXRlIFxcXCJDYXZpdW0gTGlxdWlkSU8gVkYgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDk6MDU6NDguNzYyNTI3MjA4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUwMzY3MTE3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIHRoZSBDYXZpdW0gTGlxdWlkSU8gRHJpdmVyKipcblxuT2theSwgc28gdGhpcyBDYXZpdW0gTGlxdWlkSU8gZHJpdmVyLi4uaXQncyBhIFBDSSBkZXZpY2UuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHN5emthbGxlciBmdXp6IHRoaXMgdGhpbmc/IEFuZCBob3c/IFN5emthbGxlcidzIGdvdCBpdHMgcHNldWRvLVBDSSBidXMgZnVuY3Rpb25hbGl0eSwgYW5kIGl0IGNhbiBhbHNvIGluamVjdCBQQ0kgY29uZmlnIHNwYWNlIHJlYWRzIGFuZCB3cml0ZXMg4oCTIHRoYXQncyB0aGUgb2J2aW91cyBhcHByb2FjaC4gTm93LCBJIHJlbWVtYmVyIHNlZWluZyBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VgIGluIHN5emthbGxlcidzIGNvZGViYXNlLiBCdXQsIHR5cGljYWxseSwgc3l6a2FsbGVyIGlzIHByZXR0eSB0YXJnZXRlZCB3aXRoIFBDSSBkZXZpY2VzLCBhbmQgZ2VuZXJhbGx5IG9ubHkgZnV6emVzIGV4cGxpY2l0bHkgc3VwcG9ydGVkIG9uZXMgb3IgaWYgZ2VuZXJpYyBQQ0kgZnV6emluZyBpcyBlbmFibGVkLCByaWdodD9cblxuQnV0IHRoZW4gSSBzZWUgdGhlIGNsdWU6IFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLlwiIFRoaXMgZ2V0cyBtZSB0aGlua2luZyDigJMgaXMgdGhlIENhdml1bSBMaXF1aWRJTyBoYXJkd2FyZSBlbXVsYXRlZCBpbiBvdXIgdHlwaWNhbCB0ZXN0IGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VPyBJIGRvbid0ICp0aGluayogc28uIEhvd2V2ZXIsIHRoZSBtZW50aW9uIG9mIGBtYWM4MDIxMV9od3NpbWAgcmVtaW5kcyBtZSB0aGF0IHN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIsIHdoaWNoIGNhbiBwcm9iZSBwcmV0dHkgbXVjaCBhbnkgUENJIGRyaXZlciBieSBlbXVsYXRpbmcgUENJIGRldmljZXMgYXQgdGhlIGNvbmZpZyBzcGFjZSBhbmQgTU1JTyBsZXZlbC4gU28sIHRoZSBrZXkgaXMgd2hldGhlciB0aGF0IGZ1enplciBhY3R1YWxseSByZWFjaGVzIHRoaXMgQ2F2aXVtIExpcXVpZElPLlxuXG5BbHJpZ2h0LCBsZXQncyB0YWtlIGEgbG9vayBhdCBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGFuZCBkaXZlIGludG8gdGhlIGNvZGUuLi4gSSBzdXNwZWN0IHRoZSBhbnN3ZXIgaXMgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwODAsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDk6MDU6NTQuMjY2MjAzMzIyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0ODE1NDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYz0xMDgwPWludCBjbjIzeHhfc3Jpb3ZfY29uZmlnKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTExMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYzoxMTM4OmludCBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMTEzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTEyMTEtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM6MTIxMjpFWFBPUlRfU1lNQk9MX0dQTChzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0xMjEzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuaD00Nj1zdHJ1Y3Qgb2N0X3ZmX3N0YXRzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmgtNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuaDo1NTppbnQgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2Uoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuaC01Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTEzMzY9c3RhdGljIGludCBvY3Rlb25fY2hpcF9zcGVjaWZpY19zZXR1cChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTM1Ny1cXHRcXHRvY3QtXFx1MDAzZWNoaXBfaWQgPSBPQ1RFT05fQ04yM1hYX1BGX1ZJRDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoxMzU4OlxcdFxcdHJldCA9IHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKG9jdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTM1OS1cXHRcXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwOTowNTo1NC4zMjEwMjQ1OTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjA1Nzc3ODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGNvZGUgc25pcHBldCwgdGhpbmtpbmcgbGlrZSBhbiBleHBlcnQ6XG5cbioqVHJhY2luZyB0aGUgRGV2aWNlIEluaXRpYWxpemF0aW9uIEZsb3cqKlxuXG5Pa2F5LCBzbyBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGlzIHRoZSBmdW5jdGlvbiBvZiBpbnRlcmVzdCBoZXJlLiBUaGUgZmFjdCB0aGF0IGl0J3MgY2FsbGVkIGZyb20gYG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwYCBpcyBpbXBvcnRhbnQsIGJlY2F1c2UgdGhpcyBpbXBsaWVzIHRoZSBzZXR1cCBpcyB2ZXJ5IHNwZWNpZmljIHRvIHRoZSBDTjIzeHggT2N0ZW9uIGNoaXAgZmFtaWx5LiBBbmQgYG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwYCBpdHNlbGYgaXMgY2FsbGVkIGZyb20gYG9jdGVvbl9kZXZpY2VfaW5pdGAuIE5vdywgKnRoYXQncyogYSBrZXkgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dC4gYG9jdGVvbl9kZXZpY2VfaW5pdGAgaXMgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4gVGhpcyBpcyB3aGVyZSB0aGUgd2hvbGUgZHJpdmVyIHN0cnVjdHVyZSBnZXRzIGJ1aWx0LiBUaGlzIGlzIHRoZSByb290IG9mIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGZvciB0aGUgZGV2aWNlLiBJIG5lZWQgdG8gc3RhcnQgbXkgZGVidWdnaW5nIHdpdGggYG9jdGVvbl9kZXZpY2VfaW5pdGAgYW5kIHVuZGVyc3RhbmQgd2hlcmUgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBmaXRzIHdpdGhpbiBpdHMgY29udHJvbCBmbG93LiBMZXQncyBzdGFydCBkaXNzZWN0aW5nIGBvY3Rlb25fZGV2aWNlX2luaXRgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjc5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDk6MDU6NTcuNTI2ODA1NDgyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDY0ODUwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvY3Rlb25fZGV2aWNlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0xMzk9c3RhdGljIGludCBvY3Rlb25fZGJnX2NvbnNvbGVfcHJpbnQoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdCwgdTMyIGNvbnNvbGVfbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjE0MjpzdGF0aWMgaW50IG9jdGVvbl9kZXZpY2VfaW5pdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0xNDMtc3RhdGljIGludCBsaXF1aWRpb19zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9ODIzPWxpcXVpZGlvX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBfX21heWJlX3VudXNlZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtODY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjg2NjpcXHRpZiAob2N0ZW9uX2RldmljZV9pbml0KG9jdF9kZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtODY3LVxcdFxcdGNvbXBsZXRlKFxcdTAwMjZocy1cXHUwMDNlaW5pdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0zOTgwPW9jdGVvbl9yZWN2X3ZmX2Rydl9ub3RpY2Uoc3RydWN0IG9jdGVvbl9yZWN2X2luZm8gKnJlY3ZfaW5mbywgdm9pZCAqYnVmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDAzMC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzo0MDMxOiAqIG9jdGVvbl9kZXZpY2VfaW5pdCAtIERldmljZSBpbml0aWFsaXphdGlvbiBmb3IgZWFjaCBPY3Rlb24gZGV2aWNlIHRoYXQgaXMgcHJvYmVkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDAzMi0gKiBAb2N0ZW9uX2RldjogIG9jdGVvbiBkZXZpY2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy00MDMzLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjQwMzQ6c3RhdGljIGludCBvY3Rlb25fZGV2aWNlX2luaXQoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdGVvbl9kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDAzNS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz02OT1zdGF0aWMgdm9pZCBsaXF1aWRpb192Zl9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjcwOnN0YXRpYyBpbnQgb2N0ZW9uX2RldmljZV9pbml0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTcxLXN0YXRpYyBpbnQgbGlxdWlkaW9fc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTM3OT1saXF1aWRpb192Zl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTQwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzo0MDU6XFx0aWYgKG9jdGVvbl9kZXZpY2VfaW5pdChvY3RfZGV2KSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTQwNi1cXHRcXHRsaXF1aWRpb192Zl9yZW1vdmUocGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz0yMjMwPXN0YXRpYyBpbnQgbGlxdWlkaW9faW5pdF9uaWNfbW9kdWxlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0yMjY0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjIyNjU6ICogb2N0ZW9uX2RldmljZV9pbml0IC0gRGV2aWNlIGluaXRpYWxpemF0aW9uIGZvciBlYWNoIE9jdGVvbiBkZXZpY2UgdGhhdCBpcyBwcm9iZWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0yMjY2LSAqIEBvY3Q6ICBvY3Rlb24gZGV2aWNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjI2Ny0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoyMjY4OnN0YXRpYyBpbnQgb2N0ZW9uX2RldmljZV9pbml0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjI2OS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDA5OjA1OjU3LjU4MTQ1OTkzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3NDE4NTg2NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIFBDSSBQcm9iZSBGdXp6aW5nIHdpdGggU3l6a2FsbGVyKipcblxuT2theSwgc28gYGxpcXVpZGlvX3Byb2JlYCB0cmlnZ2VycyB0aGlzIGNhbGwgY2hhaW46IGBvY3Rlb25fZGV2aWNlX2luaXRgIC1cdTAwM2UgYG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwYCAtXHUwMDNlIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAuIFRoYXQgbGFzdCBmdW5jdGlvbiBpcyBhIFBDSSBwcm9iZSBmdW5jdGlvbiwgYW5kIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIFN5emthbGxlci4gSXQgaGFzIGEgUENJIGZ1enplciwgd2hpY2ggaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHRhcmdldCB0aGVzZSBwcm9iZSBmdW5jdGlvbnMgYnkgc2ltdWxhdGluZyBQQ0kgZGV2aWNlcy4gQSBxdWljayBzYW5pdHkgY2hlY2s6IGlzIGBMSVFVSURJT2AgYWN0dWFsbHkgZW5hYmxlZCBpbiB0aGUgdHlwaWNhbCBTeXprYWxsZXIgY29uZmlndXJhdGlvbnM/IEdpdmVuIGhvdyBjb21wcmVoZW5zaXZlIFN5emthbGxlciBpcyB3aXRoIFBDSSBkcml2ZXIgZnV6emluZywgSSdkIGV4cGVjdCBpdCB0byBiZS5cblxuV2FpdCwgaG9sZCBvbi4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzLiBJdCBhZHZpc2VzIHZlcmlmeWluZyB0aGF0IHRoZSBjb2RlIGNhbiBhY3R1YWxseSAqYmUqIGV4ZWN1dGVkLCB3aGljaCB0aHJvd3MgYSBmbGFnLiBIb3dldmVyLCB0aGUgUENJIGZ1enplciBpcyBkZXNpZ25lZCB0byBwcm9iZSBjb2RlIHRoYXQgaXMgcmVhY2hlZCB2aWEgYSBQQ0kgZGV2aWNlLiBTbyBjYW4gU3l6a2FsbGVyJ3MgUENJIGZ1enplciBhY3R1YWxseSByZWFjaCB0aGlzIGNvZGU/IFRoZSBhbnN3ZXIgaXMgeWVzLCB0aGF0J3Mgd2hhdCBpdCdzIGZvci5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBwYXRjaCBpdHNlbGYuIEl0J3MgYSBmaXggZm9yIGEgbWVtb3J5IGxlYWsgb3IgbWlzc2luZyB1bm1hcCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgLiBUaGF0J3MgaW50ZXJlc3Rpbmc7IGVycm9yIHBhdGhzIGFyZSAqcHJpbWUqIGZ1enppbmcgdGFyZ2V0cyBiZWNhdXNlIHRoZXkgYXJlIG9mdGVuIGxlc3MgZXhlcmNpc2VkIGFuZCBtb3JlIHByb25lIHRvIGVycm9ycy4gU3BlY2lmaWNhbGx5LCB0aGUgZXJyb3IgcGF0aCBpbnZvbHZlcyBgY24yM3h4X2dldF9wZl9udW1gLlxuXG5gYGBjXG5cdGlmIChjbjIzeHhfZ2V0X3BmX251bShvY3QpICE9IDApIHtcblx0XHRvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAwKTtcblx0XHRvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAxKTtcblx0XHRyZXR1cm4gMTtcblx0fVxuYGBgXG5cblRoaXMgZXJyb3IgcGF0aCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBkdXJpbmcgUENJIHByb2JlIGZ1enppbmcgYmVjYXVzZSBpdCdzIHBhcnQgb2YgdGhlIHByb2JlIGZ1bmN0aW9uIGl0c2VsZi4gV2UgZGVmaW5pdGVseSBuZWVkIHRvIGNoZWNrIHdoYXQgYGNuMjN4eF9nZXRfcGZfbnVtYCBkb2VzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoaXMgdW5tYXAgYW5kIHJldHVybi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTczOSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwOTowNjowNC4zMjMzMjA5MDRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2OTg5ODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNuMjN4eF9nZXRfcGZfbnVtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYz05Nzc9c3RhdGljIHZvaWQgY24yM3h4X2dldF9wY2llX3FsbXBvcnQoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtOTg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM6OTg1OnN0YXRpYyBpbnQgY24yM3h4X2dldF9wZl9udW0oc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTk4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jPTExMzg9aW50IHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTExNjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYzoxMTcwOlxcdGlmIChjbjIzeHhfZ2V0X3BmX251bShvY3QpICE9IDApIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTExNzEtXFx0XFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDA5OjA2OjA0LjM4MDMxNjMyM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzIzNTQ3MDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB3aGF0IEknbSBhYm91dCB0byBkbywgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOlxuXG4qKkRlY29uc3RydWN0aW5nIGBjbjIzeHhfZ2V0X3BmX251bWAqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgYGNuMjN4eF9nZXRfcGZfbnVtYCBmdW5jdGlvbiBpcyBhbGwgYWJvdXQuIEJhc2VkIG9uIHRoZSBuYW1lIGFsb25lLCBteSBpbml0aWFsIGFzc3VtcHRpb25zIGFyZSBpdCdzIGxpa2VseSBwYXJ0IG9mIGEgQ04yM3h4LXJlbGF0ZWQgZHJpdmVyLCBsaWtlbHkgZGVhbGluZyB3aXRoIGEgcGh5c2ljYWwgZnVuY3Rpb24gbnVtYmVyIGluIGEgbXVsdGktZnVuY3Rpb24gZGV2aWNlIGNvbnRleHQsIHBvdGVudGlhbGx5IHJlbGF0ZWQgdG8gbmV0d29yayBjYXJkcy4gSSdtIGdvaW5nIHRvIGxvb2sgYXQgaXRzIGRlZmluaXRpb24sIHRoZSBjb250ZXh0IGluIHdoaWNoIGl0IGlzIHVzZWQsIGFuZCB3aGF0IGl0cyByZXR1cm4gdmFsdWUgcmVwcmVzZW50cy4gSSdsbCBtZW50YWxseSBtYXAgdGhpcyB0byB0aGUgaGFyZHdhcmUgSSBhbSBmYW1pbGlhciB3aXRoIGFuZCBjb25zaWRlciB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLCBsaWtlIHRoZSBkcml2ZXIncyBkZXZpY2Ugc3RydWN0dXJlLCBhbmQgYW55IGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzLiBIb3BlZnVsbHksIHRoZSBjb2RlIGNvbW1lbnRzIGFyZSBnb29kIGVub3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk5NiwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDA5OjA2OjA3LjcwMzg2NTM3MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg1NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA5ODUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA5ODU6XFx0c3RhdGljIGludCBjbjIzeHhfZ2V0X3BmX251bShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxcbiA5ODY6XFx0e1xcbiA5ODc6XFx0XFx0dTMyIGZkbF9iaXQgPSAwO1xcbiA5ODg6XFx0XFx0dTY0IHBrdDBfaW5fY3RsLCBkNjQ7XFxuIDk4OTpcXHRcXHRpbnQgcGZudW0sIG1hYywgdHJzLCByZXQ7XFxuIDk5MDpcXHRcXG4gOTkxOlxcdFxcdHJldCA9IDA7XFxuIDk5MjpcXHRcXG4gOTkzOlxcdFxcdC8qIFJlYWQgRnVuY3Rpb24gRGVwZW5kZW5jeSBMaW5rIHJlZyB0byBnZXQgdGhlIGZ1bmN0aW9uIG51bWJlciAqL1xcbiA5OTQ6XFx0XFx0aWYgKHBjaV9yZWFkX2NvbmZpZ19kd29yZChvY3QtXFx1MDAzZXBjaV9kZXYsIENOMjNYWF9QQ0lFX1NSSU9WX0ZETCxcXG4gOTk1OlxcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNmZkbF9iaXQpID09IDApIHtcXG4gOTk2OlxcdFxcdFxcdG9jdC1cXHUwMDNlcGZfbnVtID0gKChmZGxfYml0IFxcdTAwM2VcXHUwMDNlIENOMjNYWF9QQ0lFX1NSSU9WX0ZETF9CSVRfUE9TKSBcXHUwMDI2XFxuIDk5NzpcXHRcXHRcXHRcXHQgICAgICAgQ04yM1hYX1BDSUVfU1JJT1ZfRkRMX01BU0spO1xcbiA5OTg6XFx0XFx0fSBlbHNlIHtcXG4gOTk5OlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuMTAwMDpcXHRcXG4xMDAxOlxcdFxcdFxcdC8qIFVuZGVyIHNvbWUgdmlydHVhbCBlbnZpcm9ubWVudHMsIGV4dGVuZGVkIFBDSSByZWdzIGFyZVxcbjEwMDI6XFx0XFx0XFx0ICogaW5hY2Nlc3NpYmxlLCBpbiB3aGljaCBjYXNlIHRoZSBhYm92ZSByZWFkIHdpbGwgaGF2ZSBmYWlsZWQuXFxuMTAwMzpcXHRcXHRcXHQgKiBJbiB0aGlzIGNhc2UsIHJlYWQgdGhlIFBGIG51bWJlciBmcm9tIHRoZVxcbjEwMDQ6XFx0XFx0XFx0ICogU0xJX1BLVDBfSU5QVVRfQ09OVFJPTCByZWcgKHdyaXR0ZW4gYnkgZi93KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwOTowNjowNy43MDM5NzUyMjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUwMTU0NzM1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFBvdGVudGlhbDogUENJIENvbmZpZyBTcGFjZSBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgYSBwb3RlbnRpYWwgZ29sZG1pbmUgZm9yIGZ1enppbmcuIEl0J3MgcmVhZGluZyBkaXJlY3RseSBmcm9tIHRoZSBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZS4gV2Uga25vdyBTeXprYWxsZXIncyBQQ0kgZnV6emVyIGhhcyBjb250cm9sIG92ZXIgdGhhdCBhcmVhLCBzbyB3ZSBjYW4gYWJzb2x1dGVseSBmZWVkIGl0IG1hbGljaW91cywgbm9uLXplcm8gdmFsdWVzIHRvIHRyaWdnZXIgdGhlIGVycm9yIHBhdGguIFRoaXMgaXMgcHJhY3RpY2FsbHkgYmVnZ2luZyB0byBiZSBmdXp6ZWQuXG5cbk5vdywgdG8gZ2V0IHRoaXMgcnVubmluZyBpbiBhIHRlc3QgZW52aXJvbm1lbnQsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBtaW5pbWFsIGNvbmZpZ3VyYXRpb24uIEkgcmVtZW1iZXIgc2VlaW5nIGEgYENPTkZJR19MSVFVSURJT2Agb3B0aW9uIG1lbnRpb25lZC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZ2Ag4oCTIEkgbmVlZCB0byBlbnN1cmUgdGhhdCBgTElRVUlESU9gIGFuZCBhbnkgc3VwcG9ydGluZyBjb25maWd1cmF0aW9ucyBhcmUgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY0MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDk6MDY6MTEuMjA1NTI0Njk0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4MjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDY1OlxcdGNvbmZpZyBMSVFVSURJT19DT1JFXFxuICA2NjpcXHRcXHR0cmlzdGF0ZVxcbiAgNjc6XFx0XFxuICA2ODpcXHRjb25maWcgTElRVUlESU9cXG4gIDY5OlxcdFxcdHRyaXN0YXRlIFxcXCJDYXZpdW0gTGlxdWlkSU8gc3VwcG9ydFxcXCJcXG4gIDcwOlxcdFxcdGRlcGVuZHMgb24gNjRCSVQgXFx1MDAyNlxcdTAwMjYgUENJXFxuICA3MTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgNzI6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgNzM6XFx0XFx0c2VsZWN0IENSQzMyXFxuICA3NDpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICA3NTpcXHRcXHRzZWxlY3QgTElRVUlESU9fQ09SRVxcbiAgNzY6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICA3NzpcXHRcXHRoZWxwXFxuICA3ODpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIENhdml1bSBMaXF1aWRJTyBJbnRlbGxpZ2VudCBTZXJ2ZXIgQWRhcHRlcnNcXG4gIDc5OlxcdFxcdCAgYmFzZWQgb24gQ042NlhYLCBDTjY4WFggYW5kIENOMjNYWCBjaGlwcy5cXG4gIDgwOlxcdFxcbiAgODE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuICA4MjpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGxpcXVpZGlvLiAgVGhpcyBpcyByZWNvbW1lbmRlZC5cXG4gIDgzOlxcdFxcbiAgODQ6XFx0Y29uZmlnIE9DVEVPTl9NR01UX0VUSEVSTkVUXFxuICA4NTpcXHRcXHR0cmlzdGF0ZSBcXFwiT2N0ZW9uIE1hbmFnZW1lbnQgcG9ydCBldGhlcm5ldCBkcml2ZXIgKENONVhYWCwgQ042WFhYKVxcXCJcXG4gIDg2OlxcdFxcdGRlcGVuZHMgb24gQ0FWSVVNX09DVEVPTl9TT0NcXG4gIDg3OlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gIDg4OlxcdFxcdHNlbGVjdCBNRElPX09DVEVPTlxcbiAgODk6XFx0XFx0ZGVmYXVsdCB5XFxuICA5MDpcXHRcXHRoZWxwXFxuICA5MTpcXHRcXHQgIEVuYWJsZSB0aGUgZXRoZXJuZXQgZHJpdmVyIGZvciB0aGUgbWFuYWdlbWVudFxcbiAgOTI6XFx0XFx0ICBwb3J0IG9uIENhdml1bSBOZXR3b3JrcycgT2N0ZW9uIENONTdYWCwgQ041NlhYLCBDTjU1WFgsXFxuICA5MzpcXHRcXHQgIENONTRYWCwgQ041MlhYLCBhbmQgQ042WFhYIGNoaXBzLlxcbiAgOTQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDA5OjA2OjExLjIwNTU5NDM4NVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDU3Mzk2OTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlY29kaW5nIHRoZSBMaXF1aWRJTyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYExJUVVJRElPYCBjb25maWd1cmF0aW9uLiBNeSBpbml0aWFsIGFzc3VtcHRpb24gaXMgdGhhdCBgTElRVUlESU9gIHJlcHJlc2VudHMgdGhlIGJhc2UgY29uZmlndXJhdGlvbi4gQnV0IHdoYXQgYWJvdXQgYExJUVVJRElPX1ZGYD8gVGhhdCBzdWZmaXggc2VlbXMgaW1wb3J0YW50LCBhbmQgdGhlIG1vZGlmaWNhdGlvbiB0byBgY24yM3h4X3BmX2RldmljZS5jYCBpbiB0aGUgcGF0Y2ggaXMgbWFraW5nIG1lIHRoaW5rIHRoaXMgcmVsYXRlcyB0byB0aGUgUGh5c2ljYWwgRnVuY3Rpb24gKFBGKSBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlc2UgdHdvIGZsYWdzLlxuXG5NeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSBJJ2xsIGZpbmQgaG93IHRoZXNlIGBMSVFVSURJT2Agb3B0aW9ucyBhcmUgdXNlZCB0byBjb21waWxlIHRoZSBuZWNlc3NhcnkgbW9kdWxlcyBhbmQsIGhvcGVmdWxseSwgZ2V0IHNvbWUgY2xhcml0eSBvbiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGJhc2UgY29uZmlndXJhdGlvbiBhbmQgdGhlIFZpcnR1YWwgRnVuY3Rpb24gKFZGKSBhc3BlY3QuIFRoZSBNYWtlZmlsZSB3aWxsIGxpa2VseSByZXZlYWwgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gb3IgZGVwZW5kZW5jeSBkZWZpbml0aW9ucy4gSSBuZWVkIHRvIHVucmF2ZWwgdGhlc2UgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MzU0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwOTowNjoxNC42NjI5OTQyMDlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBDYXZpdW0gTGlxdWlkaW8gZXRoZXJuZXQgZGV2aWNlIGRyaXZlclxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRvYmotJChDT05GSUdfTElRVUlESU9fQ09SRSkgKz0gbGlxdWlkaW8tY29yZS5vXFxuICAgNzpcXHRsaXF1aWRpby1jb3JlLXkgOj0gXFxcXFxcbiAgIDg6XFx0XFx0XFx0bGlvX2V0aHRvb2wub1xcdFxcdFxcXFxcXG4gICA5OlxcdFxcdFxcdGxpb19jb3JlLm9cXHRcXHRcXFxcXFxuICAxMDpcXHRcXHRcXHRyZXF1ZXN0X21hbmFnZXIub1xcdFxcXFxcXG4gIDExOlxcdFxcdFxcdHJlc3BvbnNlX21hbmFnZXIub1xcdFxcXFxcXG4gIDEyOlxcdFxcdFxcdG9jdGVvbl9kZXZpY2Uub1xcdFxcdFxcXFxcXG4gIDEzOlxcdFxcdFxcdGNuNjZ4eF9kZXZpY2Uub1xcdFxcdFxcXFxcXG4gIDE0OlxcdFxcdFxcdGNuNjh4eF9kZXZpY2Uub1xcdFxcdFxcXFxcXG4gIDE1OlxcdFxcdFxcdGNuMjN4eF9wZl9kZXZpY2Uub1xcdFxcXFxcXG4gIDE2OlxcdFxcdFxcdGNuMjN4eF92Zl9kZXZpY2Uub1xcdFxcXFxcXG4gIDE3OlxcdFxcdFxcdG9jdGVvbl9tYWlsYm94Lm9cXHRcXFxcXFxuICAxODpcXHRcXHRcXHRvY3Rlb25fbWVtX29wcy5vXFx0XFxcXFxcbiAgMTk6XFx0XFx0XFx0b2N0ZW9uX2Ryb3Eub1xcdFxcdFxcXFxcXG4gIDIwOlxcdFxcdFxcdG9jdGVvbl9uaWMub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwOTowNjoxNC42NjMwNTk4OTlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY2MTAwNzc4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENhdml1bSBMaXF1aWRJTyBQRiBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgdGhlIGJyZWFrZG93biBvZiB3aGF0IEknbSBsb29raW5nIGF0LiBgY24yM3h4X3BmX2RldmljZS5vYCBpcyBwYXJ0IG9mIGBsaXF1aWRpby1jb3JlLm9gLCB3aGljaCBpcyBvbmx5IGJ1aWx0IGlmIGBDT05GSUdfTElRVUlESU9fQ09SRWAgaXMgZW5hYmxlZC4gQW5kLCBjcnVjaWFsbHksIGBDT05GSUdfTElRVUlESU9fQ09SRWAgaXMgKnNlbGVjdGVkKiBieSBlaXRoZXIgYENPTkZJR19MSVFVSURJT2Agb3IgYENPTkZJR19MSVFVSURJT19WRmAuIFJpZ2h0LCBzbyBlbmFibGluZyBqdXN0IGBMSVFVSURJT2AgaXMgc3VmZmljaWVudCB0byBicmluZyBpbiB0aGUgcmVsZXZhbnQgY29kZSBwYXRoLiBFeGNlbGxlbnQuIFRoYXQgc2ltcGxpZmllcyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiB0byBjb25zaWRlci5cblxuTm93LCBsZXQncyB6ZXJvIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAuIEkgd2FudCB0byBpbnZlc3RpZ2F0ZSB0aGlzIGFuZCBvdGhlciBmdW5jdGlvbnMsIHN1Y2ggYXMgYGNuMjN4eF9nZXRfcGZfbnVtYCwgYnV0IGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgaXMgZGVmaW5pdGVseSB0aGUgbWFpbiBvbmUuXG5cbkEgcXVpY2sgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgaW4gYSBob3QgcGF0aCwgdGhpcyBpcyBhIHBhcnQgb2YgaW5pdGlhbGl6YXRpb24sIG5vdCBhbiBpbnRlcnJ1cHQgb3IgZGF0YSBwcm9jZXNzaW5nIGZ1bmN0aW9uLiBJdCBpcyBjYWxsZWQgZnJvbSBgb2N0ZW9uX2NoaXBfc3BlY2lmaWNfc2V0dXBgLCB3aGljaCBpcywgaW4gdHVybiwgY2FsbGVkIGJ5IGBvY3Rlb25fZGV2aWNlX2luaXRgLCBhbmQgdGhhdCdzIHVsdGltYXRlbHkgY2FsbGVkIGJ5IGBsaXF1aWRpb19wcm9iZWAuIFRoaXMgcmVpbmZvcmNlcyBpdCdzIGFuIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLlxuXG5NeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhpcyBwYXRjaCBhZGRyZXNzZXMgYW4gZXJyb3IgaW4gaG93IFBDSSBCQVJzIGFyZSBoYW5kbGVkIGluIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAuIEl0IHNlZW1zIHRoZXJlJ3MgYSBtaXNzaW5nIHVubWFwIGluIHRoZSBlcnJvciBwYXRoLiBUaGlzIGVycm9yIHBhdGggY2FuIGJlIHRyaWdnZXJlZCBkdXJpbmcgUENJIHByb2JlIGZ1enppbmcuIFdoZW4gcHJvYmluZywgdGhlIHN5c3RlbSBtYXkgZW11bGF0ZSBQQ0kgY29uZmlnIHNwYWNlIHJlYWRzLCBhbmQgdGhhdCBtaWdodCBjYXVzZSBgY24yM3h4X2dldF9wZl9udW1gIHRvIHJldHVybiBub24temVybyBpbiB0aGUgZXJyb3IgcGF0aC4gVGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIG9mIGludGVyZXN0IGlzIHRoZXJlZm9yZSBgTElRVUlESU9gLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTQ0LCJPdXRwdXRUb2tlbnMiOjEzNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDA5OjA2OjIxLjMyNDA3MTAzNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5MDQyMjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJMSVFVSURJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtaXNzaW5nIFBDSSBCQVIgdW5tYXAgaW4gdGhlIGVycm9yIHBhdGggb2YgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBDYXZpdW0gTGlxdWlkSU8gUEYgZHJpdmVyLiBUaGlzIGVycm9yIHBhdGggY2FuIGJlIHJlYWNoZWQgZHVyaW5nIFBDSSBwcm9iZSBmdXp6aW5nIGJ5IGVtdWxhdGluZyBQQ0kgY29uZmlnIHNwYWNlIHJlYWRzIChlLmcuLCBtYWtpbmcgYGNuMjN4eF9nZXRfcGZfbnVtYCByZXR1cm4gbm9uLXplcm8pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkxJUVVJRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1pc3NpbmcgUENJIEJBUiB1bm1hcCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIENhdml1bSBMaXF1aWRJTyBQRiBkcml2ZXIuIFRoaXMgZXJyb3IgcGF0aCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgUENJIHByb2JlIGZ1enppbmcgYnkgZW11bGF0aW5nIFBDSSBjb25maWcgc3BhY2UgcmVhZHMgKGUuZy4sIG1ha2luZyBgY24yM3h4X2dldF9wZl9udW1gIHJldHVybiBub24temVybykuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow7bn9b[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-20 08:41:53 +0000 UTC FinishedAt: 2026-06-20 09:06:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "b85966adbf5de0668a815c6e3527f87e0c387fb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "LIQUIDIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "b85966adbf5de0668a815c6e3527f87e0c387fb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "LIQUIDIO" ], "series_id": "b0afbc15-0e0c-44de-bffd-4f5b67e7f696" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "setup_cn23xx_octeon_pf_device" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA5OjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0xJUVVJRElPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtaXNzaW5nIFBDSSBCQVIgdW5tYXAgaW4gdGhlIGVycm9yIHBhdGggb2YgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBDYXZpdW0gTGlxdWlkSU8gUEYgZHJpdmVyLiBUaGlzIGVycm9yIHBhdGggY2FuIGJlIHJlYWNoZWQgZHVyaW5nIFBDSSBwcm9iZSBmdXp6aW5nIGJ5IGVtdWxhdGluZyBQQ0kgY29uZmlnIHNwYWNlIHJlYWRzIChlLmcuLCBtYWtpbmcgYGNuMjN4eF9nZXRfcGZfbnVtYCByZXR1cm4gbm9uLXplcm8pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA5OjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZGNjYTcxZWFmYzZkMDRhMjdkMDQ2MTE0MjM2NjRjYWFmMWQwMzU2ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDIwIDA5OjA1OjM5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jXG5pbmRleCA3NWYyMmY3NDc3NGNiMi4uYTE1NDhjYTgxZWNkM2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jXG5AQCAtMTE2Nyw4ICYjNDM7MTE2NywxMSBAQCBpbnQgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2Uoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcbiBcdFx0cmV0dXJuIDE7XG4gXHR9XG4gXG4tXHRpZiAoY24yM3h4X2dldF9wZl9udW0ob2N0KSAhPSAwKVxuJiM0MztcdGlmIChjbjIzeHhfZ2V0X3BmX251bShvY3QpICE9IDApIHtcbiYjNDM7XHRcdG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDApO1xuJiM0MztcdFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMSk7XG4gXHRcdHJldHVybiAxO1xuJiM0MztcdH1cbiBcbiBcdGlmIChjbjIzeHhfc3Jpb3ZfY29uZmlnKG9jdCkpIHtcbiBcdFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDk6MDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TElRVUlESU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1pc3NpbmcgUENJIEJBUiB1bm1hcCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIENhdml1bSBMaXF1aWRJTyBQRiBkcml2ZXIuIFRoaXMgZXJyb3IgcGF0aCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgUENJIHByb2JlIGZ1enppbmcgYnkgZW11bGF0aW5nIFBDSSBjb25maWcgc3BhY2UgcmVhZHMgKGUuZy4sIG1ha2luZyBgY24yM3h4X2dldF9wZl9udW1gIHJldHVybiBub24temVybykuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRjY2E3MWVhZmM2ZDA0YTI3ZDA0NjExNDIzNjY0Y2FhZjFkMDM1NmQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1biAyMCAwOTowNTozOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jCmluZGV4IDc1ZjIyZjc0Nzc0Y2IyLi5hMTU0OGNhODFlY2QzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jCkBAIC0xMTY3LDggJiM0MzsxMTY3LDExIEBAIGludCBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KQogCQlyZXR1cm4gMTsKIAl9CiAKLQlpZiAoY24yM3h4X2dldF9wZl9udW0ob2N0KSAhPSAwKQomIzQzOwlpZiAoY24yM3h4X2dldF9wZl9udW0ob2N0KSAhPSAwKSB7CiYjNDM7CQlvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAwKTsKJiM0MzsJCW9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDEpOwogCQlyZXR1cm4gMTsKJiM0MzsJfQogCiAJaWYgKGNuMjN4eF9zcmlvdl9jb25maWcob2N0KSkgewogCQlvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAwKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDk6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk2MQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZGluZyBgb2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7IG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDEpO2AgYmVmb3JlIHJldHVybmluZyAxIGluIHRoZSBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7SG1tLCB3aGF0JiMzOTtzIHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcyBjaGFuZ2UsIHBhcnRpY3VsYXJseSBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQ/JiMzNDsgV2UgYWxsIGtub3cgdGhlc2Ugc29ydHMgb2YgZGV2aWNlcyBjYW4gYmUgdHJpY2t5LgoKVGhlIGRyaXZlciBpdHNlbGYsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW9gLCBpcyBwcmV0dHkgc3BlY2lmaWM6IGEgUENJIGRldmljZSBkcml2ZXIgZm9yIHRoZSBDYXZpdW0gTGlxdWlkSU8gSW50ZWxsaWdlbnQgU2VydmVyIEFkYXB0ZXIuIFRoYXQmIzM5O3MgbXkgZmlyc3QgY2x1ZS4gIEkmIzM5O20gYmV0dGluZyB0aGlzIGlzbiYjMzk7dCBzb21ldGhpbmcgZWFzaWx5IGVtdWxhdGVkLCBhdCBsZWFzdCBub3QgaW4gYSBnZW5lcmFsLXB1cnBvc2Ugd2F5IHdpdGggc29tZXRoaW5nIGxpa2UgUUVNVS4gIEkgbWVhbiwgeW91ICpjb3VsZCogZW11bGF0ZSBpdCwgYnV0IGl0IHdvdWxkIHRha2UgY29uc2lkZXJhYmxlIGVmZm9ydC4gIEkmIzM5O20gZ3Vlc3NpbmcgdGhlcmUmIzM5O3Mgbm8gZGlyZWN0IFFFTVUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlLiBUaGUgbGV2ZWwgb2YgZGV0YWlsIHJlcXVpcmVkIGZvciBhIGNvcnJlY3QgZW11bGF0aW9uIGlzIHVzdWFsbHkgcHJldHR5IGhpZ2gsIGFuZCB2ZW5kb3JzIHRlbmQgdG8gaGFuZGxlIHRoZWlyIG93biBzb2x1dGlvbnMgaWYgdGhleSBuZWVkIGFuIGVtdWxhdG9yLgoKTGV0JiMzOTtzIGRvIGEgcXVpY2sgZG91YmxlLWNoZWNrIHdpdGggdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vS2NvbmZpZ2AgZmlsZSwgYnV0IEkmIzM5O20gbm90IGV4cGVjdGluZyBhbnl0aGluZyBvdXQgb2YgdGhlIG9yZGluYXJ5IHRoZXJlLiBMZXQgbWUgY29uZmlybSBteSBleHBlY3RhdGlvbnMgb2Ygc3BlY2lhbGl6ZWQgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDk6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTElRVUlESU8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDk6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU4MAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIHNpdHVhdGlvbiBteXNlbGY6CgoqKktjb25maWcgQ2hlY2sqKgoKT2theSwgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIgZG93biB0aGlzIHJhYmJpdCBob2xlLCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBzb21ldGhpbmcgZnVuZGFtZW50YWwuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgYmUgbG9va2luZyBhdCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBMZXQmIzM5O3MgcHVsbCB1cCB0aGUgYEtjb25maWdgIGZpbGUuIEkmIzM5O20gdGhpbmtpbmcgdGhlIG9uZSBzcGVjaWZpY2FsbHkgaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZ2AgZGlyZWN0b3J5IHNob3VsZCBwcm92aWRlIG1lIHdpdGggYWxsIHRoZSBuZWNlc3NhcnkgZGVwZW5kZW5jaWVzLCB2aXNpYmlsaXR5LCBhbmQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHJlbGV2YW50IHRvIHRoZSBldGhlcm5ldCBkZXZpY2UgSSBhbSB3b3JraW5nIHdpdGguIEkgbmVlZCB0byBxdWlja2x5IHNjYW4gdGhyb3VnaCBpdCwgbG9va2luZyBmb3IgYW55IGNvbmRpdGlvbmFsIGJ1aWxkcyBvciBwb3RlbnRpYWwgZ290Y2hhcyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiBJdCYjMzk7cyBiZXN0IHRvIHN0YXJ0IHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gZmlyc3QgYmVmb3JlIHdhc3RpbmcgdGltZSBsb29raW5nIGF0IHRoZSByZXN0IG9mIHRoZSBjb2RlLiBUaGlzIHdpbGwgc2F2ZSBzb21lIHBvdGVudGlhbCBoZWFkYWNoZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwOTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTElRVUlESU8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZz01ND1jb25maWcgQ0FWSVVNX1BUUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6NjU6Y29uZmlnIExJUVVJRElPX0NPUkVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTY2LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc6Njg6Y29uZmlnIExJUVVJRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy02OS1cdHRyaXN0YXRlIFwmIzM0O0Nhdml1bSBMaXF1aWRJTyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc9ODQ9Y29uZmlnIE9DVEVPTl9NR01UX0VUSEVSTkVUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctOTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo5NTpjb25maWcgTElRVUlESU9fVkZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTk2LVx0dHJpc3RhdGUgXCYjMzQ7Q2F2aXVtIExpcXVpZElPIFZGIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwOTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDgwCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFzc2Vzc2luZyB0aGUgRnV6emFiaWxpdHkgb2YgdGhlIENhdml1bSBMaXF1aWRJTyBEcml2ZXIqKgoKT2theSwgc28gdGhpcyBDYXZpdW0gTGlxdWlkSU8gZHJpdmVyLi4uaXQmIzM5O3MgYSBQQ0kgZGV2aWNlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiBzeXprYWxsZXIgZnV6eiB0aGlzIHRoaW5nPyBBbmQgaG93PyBTeXprYWxsZXImIzM5O3MgZ290IGl0cyBwc2V1ZG8tUENJIGJ1cyBmdW5jdGlvbmFsaXR5LCBhbmQgaXQgY2FuIGFsc28gaW5qZWN0IFBDSSBjb25maWcgc3BhY2UgcmVhZHMgYW5kIHdyaXRlcyDigJMgdGhhdCYjMzk7cyB0aGUgb2J2aW91cyBhcHByb2FjaC4gTm93LCBJIHJlbWVtYmVyIHNlZWluZyBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VgIGluIHN5emthbGxlciYjMzk7cyBjb2RlYmFzZS4gQnV0LCB0eXBpY2FsbHksIHN5emthbGxlciBpcyBwcmV0dHkgdGFyZ2V0ZWQgd2l0aCBQQ0kgZGV2aWNlcywgYW5kIGdlbmVyYWxseSBvbmx5IGZ1enplcyBleHBsaWNpdGx5IHN1cHBvcnRlZCBvbmVzIG9yIGlmIGdlbmVyaWMgUENJIGZ1enppbmcgaXMgZW5hYmxlZCwgcmlnaHQ/CgpCdXQgdGhlbiBJIHNlZSB0aGUgY2x1ZTogJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLi4uJiMzNDsgVGhpcyBnZXRzIG1lIHRoaW5raW5nIOKAkyBpcyB0aGUgQ2F2aXVtIExpcXVpZElPIGhhcmR3YXJlIGVtdWxhdGVkIGluIG91ciB0eXBpY2FsIHRlc3QgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVU/IEkgZG9uJiMzOTt0ICp0aGluayogc28uIEhvd2V2ZXIsIHRoZSBtZW50aW9uIG9mIGBtYWM4MDIxMV9od3NpbWAgcmVtaW5kcyBtZSB0aGF0IHN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIsIHdoaWNoIGNhbiBwcm9iZSBwcmV0dHkgbXVjaCBhbnkgUENJIGRyaXZlciBieSBlbXVsYXRpbmcgUENJIGRldmljZXMgYXQgdGhlIGNvbmZpZyBzcGFjZSBhbmQgTU1JTyBsZXZlbC4gU28sIHRoZSBrZXkgaXMgd2hldGhlciB0aGF0IGZ1enplciBhY3R1YWxseSByZWFjaGVzIHRoaXMgQ2F2aXVtIExpcXVpZElPLgoKQWxyaWdodCwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgYW5kIGRpdmUgaW50byB0aGUgY29kZS4uLiBJIHN1c3BlY3QgdGhlIGFuc3dlciBpcyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwOTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYz0xMDgwPWludCBjbjIzeHhfc3Jpb3ZfY29uZmlnKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0xMTM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYzoxMTM4OmludCBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0xMTM5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTEyMTEtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYzoxMjEyOkVYUE9SVF9TWU1CT0xfR1BMKHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMTIxMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5oPTQ2PXN0cnVjdCBvY3RfdmZfc3RhdHMge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmgtNTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5oOjU1OmludCBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmgtNTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9MTMzNj1zdGF0aWMgaW50IG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTM1Ny1cdFx0b2N0LVx1MDAzZWNoaXBfaWQgPSBPQ1RFT05fQ04yM1hYX1BGX1ZJRDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjEzNTg6XHRcdHJldCA9IHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKG9jdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0xMzU5LVx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA5OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNzkKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29kZSBzbmlwcGV0LCB0aGlua2luZyBsaWtlIGFuIGV4cGVydDoKCioqVHJhY2luZyB0aGUgRGV2aWNlIEluaXRpYWxpemF0aW9uIEZsb3cqKgoKT2theSwgc28gYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBpcyB0aGUgZnVuY3Rpb24gb2YgaW50ZXJlc3QgaGVyZS4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgb2N0ZW9uX2NoaXBfc3BlY2lmaWNfc2V0dXBgIGlzIGltcG9ydGFudCwgYmVjYXVzZSB0aGlzIGltcGxpZXMgdGhlIHNldHVwIGlzIHZlcnkgc3BlY2lmaWMgdG8gdGhlIENOMjN4eCBPY3Rlb24gY2hpcCBmYW1pbHkuIEFuZCBgb2N0ZW9uX2NoaXBfc3BlY2lmaWNfc2V0dXBgIGl0c2VsZiBpcyBjYWxsZWQgZnJvbSBgb2N0ZW9uX2RldmljZV9pbml0YC4gTm93LCAqdGhhdCYjMzk7cyogYSBrZXkgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dC4gYG9jdGVvbl9kZXZpY2VfaW5pdGAgaXMgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4gVGhpcyBpcyB3aGVyZSB0aGUgd2hvbGUgZHJpdmVyIHN0cnVjdHVyZSBnZXRzIGJ1aWx0LiBUaGlzIGlzIHRoZSByb290IG9mIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGZvciB0aGUgZGV2aWNlLiBJIG5lZWQgdG8gc3RhcnQgbXkgZGVidWdnaW5nIHdpdGggYG9jdGVvbl9kZXZpY2VfaW5pdGAgYW5kIHVuZGVyc3RhbmQgd2hlcmUgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBmaXRzIHdpdGhpbiBpdHMgY29udHJvbCBmbG93LiBMZXQmIzM5O3Mgc3RhcnQgZGlzc2VjdGluZyBgb2N0ZW9uX2RldmljZV9pbml0YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDk6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2N0ZW9uX2RldmljZV9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0xMzk9c3RhdGljIGludCBvY3Rlb25fZGJnX2NvbnNvbGVfcHJpbnQoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdCwgdTMyIGNvbnNvbGVfbnVtLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTE0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjE0MjpzdGF0aWMgaW50IG9jdGVvbl9kZXZpY2VfaW5pdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTE0My1zdGF0aWMgaW50IGxpcXVpZGlvX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9ODIzPWxpcXVpZGlvX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBfX21heWJlX3VudXNlZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTg2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjg2NjpcdGlmIChvY3Rlb25fZGV2aWNlX2luaXQob2N0X2RldikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTg2Ny1cdFx0Y29tcGxldGUoXHUwMDI2aHMtXHUwMDNlaW5pdCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9Mzk4MD1vY3Rlb25fcmVjdl92Zl9kcnZfbm90aWNlKHN0cnVjdCBvY3Rlb25fcmVjdl9pbmZvICpyZWN2X2luZm8sIHZvaWQgKmJ1Zilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy00MDMwLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM6NDAzMTogKiBvY3Rlb25fZGV2aWNlX2luaXQgLSBEZXZpY2UgaW5pdGlhbGl6YXRpb24gZm9yIGVhY2ggT2N0ZW9uIGRldmljZSB0aGF0IGlzIHByb2JlZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDAzMi0gKiBAb2N0ZW9uX2RldjogIG9jdGVvbiBkZXZpY2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTQwMzMtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzo0MDM0OnN0YXRpYyBpbnQgb2N0ZW9uX2RldmljZV9pbml0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3Rlb25fZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDAzNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9Njk9c3RhdGljIHZvaWQgbGlxdWlkaW9fdmZfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjcwOnN0YXRpYyBpbnQgb2N0ZW9uX2RldmljZV9pbml0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtNzEtc3RhdGljIGludCBsaXF1aWRpb19zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTM3OT1saXF1aWRpb192Zl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy00MDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzo0MDU6XHRpZiAob2N0ZW9uX2RldmljZV9pbml0KG9jdF9kZXYpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy00MDYtXHRcdGxpcXVpZGlvX3ZmX3JlbW92ZShwZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz0yMjMwPXN0YXRpYyBpbnQgbGlxdWlkaW9faW5pdF9uaWNfbW9kdWxlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjI2NC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjIyNjU6ICogb2N0ZW9uX2RldmljZV9pbml0IC0gRGV2aWNlIGluaXRpYWxpemF0aW9uIGZvciBlYWNoIE9jdGVvbiBkZXZpY2UgdGhhdCBpcyBwcm9iZWRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTIyNjYtICogQG9jdDogIG9jdGVvbiBkZXZpY2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTIyNjctICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoyMjY4OnN0YXRpYyBpbnQgb2N0ZW9uX2RldmljZV9pbml0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0yMjY5LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDk6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTczOQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDM5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBmb3IgUENJIFByb2JlIEZ1enppbmcgd2l0aCBTeXprYWxsZXIqKgoKT2theSwgc28gYGxpcXVpZGlvX3Byb2JlYCB0cmlnZ2VycyB0aGlzIGNhbGwgY2hhaW46IGBvY3Rlb25fZGV2aWNlX2luaXRgIC0mZ3Q7IGBvY3Rlb25fY2hpcF9zcGVjaWZpY19zZXR1cGAgLSZndDsgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYC4gVGhhdCBsYXN0IGZ1bmN0aW9uIGlzIGEgUENJIHByb2JlIGZ1bmN0aW9uLCBhbmQgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgU3l6a2FsbGVyLiBJdCBoYXMgYSBQQ0kgZnV6emVyLCB3aGljaCBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gdGFyZ2V0IHRoZXNlIHByb2JlIGZ1bmN0aW9ucyBieSBzaW11bGF0aW5nIFBDSSBkZXZpY2VzLiBBIHF1aWNrIHNhbml0eSBjaGVjazogaXMgYExJUVVJRElPYCBhY3R1YWxseSBlbmFibGVkIGluIHRoZSB0eXBpY2FsIFN5emthbGxlciBjb25maWd1cmF0aW9ucz8gR2l2ZW4gaG93IGNvbXByZWhlbnNpdmUgU3l6a2FsbGVyIGlzIHdpdGggUENJIGRyaXZlciBmdXp6aW5nLCBJJiMzOTtkIGV4cGVjdCBpdCB0byBiZS4KCldhaXQsIGhvbGQgb24uIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgdW5yZWFjaGFibGUgY29kZSBwYXRocy4gSXQgYWR2aXNlcyB2ZXJpZnlpbmcgdGhhdCB0aGUgY29kZSBjYW4gYWN0dWFsbHkgKmJlKiBleGVjdXRlZCwgd2hpY2ggdGhyb3dzIGEgZmxhZy4gSG93ZXZlciwgdGhlIFBDSSBmdXp6ZXIgaXMgZGVzaWduZWQgdG8gcHJvYmUgY29kZSB0aGF0IGlzIHJlYWNoZWQgdmlhIGEgUENJIGRldmljZS4gU28gY2FuIFN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyIGFjdHVhbGx5IHJlYWNoIHRoaXMgY29kZT8gVGhlIGFuc3dlciBpcyB5ZXMsIHRoYXQmIzM5O3Mgd2hhdCBpdCYjMzk7cyBmb3IuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBwYXRjaCBpdHNlbGYuIEl0JiMzOTtzIGEgZml4IGZvciBhIG1lbW9yeSBsZWFrIG9yIG1pc3NpbmcgdW5tYXAgaW4gdGhlIGVycm9yIHBhdGggb2YgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZzsgZXJyb3IgcGF0aHMgYXJlICpwcmltZSogZnV6emluZyB0YXJnZXRzIGJlY2F1c2UgdGhleSBhcmUgb2Z0ZW4gbGVzcyBleGVyY2lzZWQgYW5kIG1vcmUgcHJvbmUgdG8gZXJyb3JzLiBTcGVjaWZpY2FsbHksIHRoZSBlcnJvciBwYXRoIGludm9sdmVzIGBjbjIzeHhfZ2V0X3BmX251bWAuCgpgYGBjCglpZiAoY24yM3h4X2dldF9wZl9udW0ob2N0KSAhPSAwKSB7CgkJb2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7CgkJb2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMSk7CgkJcmV0dXJuIDE7Cgl9CmBgYAoKVGhpcyBlcnJvciBwYXRoIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGR1cmluZyBQQ0kgcHJvYmUgZnV6emluZyBiZWNhdXNlIGl0JiMzOTtzIHBhcnQgb2YgdGhlIHByb2JlIGZ1bmN0aW9uIGl0c2VsZi4gV2UgZGVmaW5pdGVseSBuZWVkIHRvIGNoZWNrIHdoYXQgYGNuMjN4eF9nZXRfcGZfbnVtYCBkb2VzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoaXMgdW5tYXAgYW5kIHJldHVybi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDk6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y24yM3h4X2dldF9wZl9udW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM9OTc3PXN0YXRpYyB2b2lkIGNuMjN4eF9nZXRfcGNpZV9xbG1wb3J0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy05ODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jOjk4NTpzdGF0aWMgaW50IGNuMjN4eF9nZXRfcGZfbnVtKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTk4Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYz0xMTM4PWludCBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMTE2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM6MTE3MDpcdGlmIChjbjIzeHhfZ2V0X3BmX251bShvY3QpICE9IDApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMTE3MS1cdFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA5OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5OTYKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB3aGF0IEkmIzM5O20gYWJvdXQgdG8gZG8sIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDoKCioqRGVjb25zdHJ1Y3RpbmcgYGNuMjN4eF9nZXRfcGZfbnVtYCoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgYGNuMjN4eF9nZXRfcGZfbnVtYCBmdW5jdGlvbiBpcyBhbGwgYWJvdXQuIEJhc2VkIG9uIHRoZSBuYW1lIGFsb25lLCBteSBpbml0aWFsIGFzc3VtcHRpb25zIGFyZSBpdCYjMzk7cyBsaWtlbHkgcGFydCBvZiBhIENOMjN4eC1yZWxhdGVkIGRyaXZlciwgbGlrZWx5IGRlYWxpbmcgd2l0aCBhIHBoeXNpY2FsIGZ1bmN0aW9uIG51bWJlciBpbiBhIG11bHRpLWZ1bmN0aW9uIGRldmljZSBjb250ZXh0LCBwb3RlbnRpYWxseSByZWxhdGVkIHRvIG5ldHdvcmsgY2FyZHMuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBhdCBpdHMgZGVmaW5pdGlvbiwgdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQgaXMgdXNlZCwgYW5kIHdoYXQgaXRzIHJldHVybiB2YWx1ZSByZXByZXNlbnRzLiBJJiMzOTtsbCBtZW50YWxseSBtYXAgdGhpcyB0byB0aGUgaGFyZHdhcmUgSSBhbSBmYW1pbGlhciB3aXRoIGFuZCBjb25zaWRlciB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLCBsaWtlIHRoZSBkcml2ZXImIzM5O3MgZGV2aWNlIHN0cnVjdHVyZSwgYW5kIGFueSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycy4gSG9wZWZ1bGx5LCB0aGUgY29kZSBjb21tZW50cyBhcmUgZ29vZCBlbm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA5OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDk4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgOTg1Olx0c3RhdGljIGludCBjbjIzeHhfZ2V0X3BmX251bShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxuIDk4NjpcdHtcbiA5ODc6XHRcdHUzMiBmZGxfYml0ID0gMDtcbiA5ODg6XHRcdHU2NCBwa3QwX2luX2N0bCwgZDY0O1xuIDk4OTpcdFx0aW50IHBmbnVtLCBtYWMsIHRycywgcmV0O1xuIDk5MDpcdFxuIDk5MTpcdFx0cmV0ID0gMDtcbiA5OTI6XHRcbiA5OTM6XHRcdC8qIFJlYWQgRnVuY3Rpb24gRGVwZW5kZW5jeSBMaW5rIHJlZyB0byBnZXQgdGhlIGZ1bmN0aW9uIG51bWJlciAqL1xuIDk5NDpcdFx0aWYgKHBjaV9yZWFkX2NvbmZpZ19kd29yZChvY3QtXHUwMDNlcGNpX2RldiwgQ04yM1hYX1BDSUVfU1JJT1ZfRkRMLFxuIDk5NTpcdFx0XHRcdFx0ICBcdTAwMjZmZGxfYml0KSA9PSAwKSB7XG4gOTk2Olx0XHRcdG9jdC1cdTAwM2VwZl9udW0gPSAoKGZkbF9iaXQgXHUwMDNlXHUwMDNlIENOMjNYWF9QQ0lFX1NSSU9WX0ZETF9CSVRfUE9TKSBcdTAwMjZcbiA5OTc6XHRcdFx0XHQgICAgICAgQ04yM1hYX1BDSUVfU1JJT1ZfRkRMX01BU0spO1xuIDk5ODpcdFx0fSBlbHNlIHtcbiA5OTk6XHRcdFx0cmV0ID0gLUVJTlZBTDtcbjEwMDA6XHRcbjEwMDE6XHRcdFx0LyogVW5kZXIgc29tZSB2aXJ0dWFsIGVudmlyb25tZW50cywgZXh0ZW5kZWQgUENJIHJlZ3MgYXJlXG4xMDAyOlx0XHRcdCAqIGluYWNjZXNzaWJsZSwgaW4gd2hpY2ggY2FzZSB0aGUgYWJvdmUgcmVhZCB3aWxsIGhhdmUgZmFpbGVkLlxuMTAwMzpcdFx0XHQgKiBJbiB0aGlzIGNhc2UsIHJlYWQgdGhlIFBGIG51bWJlciBmcm9tIHRoZVxuMTAwNDpcdFx0XHQgKiBTTElfUEtUMF9JTlBVVF9DT05UUk9MIHJlZyAod3JpdHRlbiBieSBmL3cpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA5OjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NDMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFBvdGVudGlhbDogUENJIENvbmZpZyBTcGFjZSBWdWxuZXJhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSBhIHBvdGVudGlhbCBnb2xkbWluZSBmb3IgZnV6emluZy4gSXQmIzM5O3MgcmVhZGluZyBkaXJlY3RseSBmcm9tIHRoZSBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZS4gV2Uga25vdyBTeXprYWxsZXImIzM5O3MgUENJIGZ1enplciBoYXMgY29udHJvbCBvdmVyIHRoYXQgYXJlYSwgc28gd2UgY2FuIGFic29sdXRlbHkgZmVlZCBpdCBtYWxpY2lvdXMsIG5vbi16ZXJvIHZhbHVlcyB0byB0cmlnZ2VyIHRoZSBlcnJvciBwYXRoLiBUaGlzIGlzIHByYWN0aWNhbGx5IGJlZ2dpbmcgdG8gYmUgZnV6emVkLgoKTm93LCB0byBnZXQgdGhpcyBydW5uaW5nIGluIGEgdGVzdCBlbnZpcm9ubWVudCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIG1pbmltYWwgY29uZmlndXJhdGlvbi4gSSByZW1lbWJlciBzZWVpbmcgYSBgQ09ORklHX0xJUVVJRElPYCBvcHRpb24gbWVudGlvbmVkLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnYCDigJMgSSBuZWVkIHRvIGVuc3VyZSB0aGF0IGBMSVFVSURJT2AgYW5kIGFueSBzdXBwb3J0aW5nIGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwOTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA2NTpcdGNvbmZpZyBMSVFVSURJT19DT1JFXG4gIDY2Olx0XHR0cmlzdGF0ZVxuICA2NzpcdFxuICA2ODpcdGNvbmZpZyBMSVFVSURJT1xuICA2OTpcdFx0dHJpc3RhdGUgXCYjMzQ7Q2F2aXVtIExpcXVpZElPIHN1cHBvcnRcJiMzNDtcbiAgNzA6XHRcdGRlcGVuZHMgb24gNjRCSVQgXHUwMDI2XHUwMDI2IFBDSVxuICA3MTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNzI6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbiAgNzM6XHRcdHNlbGVjdCBDUkMzMlxuICA3NDpcdFx0c2VsZWN0IEZXX0xPQURFUlxuICA3NTpcdFx0c2VsZWN0IExJUVVJRElPX0NPUkVcbiAgNzY6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICA3NzpcdFx0aGVscFxuICA3ODpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBDYXZpdW0gTGlxdWlkSU8gSW50ZWxsaWdlbnQgU2VydmVyIEFkYXB0ZXJzXG4gIDc5Olx0XHQgIGJhc2VkIG9uIENONjZYWCwgQ042OFhYIGFuZCBDTjIzWFggY2hpcHMuXG4gIDgwOlx0XG4gIDgxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgODI6XHRcdCAgd2lsbCBiZSBjYWxsZWQgbGlxdWlkaW8uICBUaGlzIGlzIHJlY29tbWVuZGVkLlxuICA4MzpcdFxuICA4NDpcdGNvbmZpZyBPQ1RFT05fTUdNVF9FVEhFUk5FVFxuICA4NTpcdFx0dHJpc3RhdGUgXCYjMzQ7T2N0ZW9uIE1hbmFnZW1lbnQgcG9ydCBldGhlcm5ldCBkcml2ZXIgKENONVhYWCwgQ042WFhYKVwmIzM0O1xuICA4NjpcdFx0ZGVwZW5kcyBvbiBDQVZJVU1fT0NURU9OX1NPQ1xuICA4NzpcdFx0c2VsZWN0IFBIWUxJQlxuICA4ODpcdFx0c2VsZWN0IE1ESU9fT0NURU9OXG4gIDg5Olx0XHRkZWZhdWx0IHlcbiAgOTA6XHRcdGhlbHBcbiAgOTE6XHRcdCAgRW5hYmxlIHRoZSBldGhlcm5ldCBkcml2ZXIgZm9yIHRoZSBtYW5hZ2VtZW50XG4gIDkyOlx0XHQgIHBvcnQgb24gQ2F2aXVtIE5ldHdvcmtzJiMzOTsgT2N0ZW9uIENONTdYWCwgQ041NlhYLCBDTjU1WFgsXG4gIDkzOlx0XHQgIENONTRYWCwgQ041MlhYLCBhbmQgQ042WFhYIGNoaXBzLlxuICA5NDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwOTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzU0CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVjb2RpbmcgdGhlIExpcXVpZElPIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBMSVFVSURJT2AgY29uZmlndXJhdGlvbi4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIHRoYXQgYExJUVVJRElPYCByZXByZXNlbnRzIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb24uIEJ1dCB3aGF0IGFib3V0IGBMSVFVSURJT19WRmA/IFRoYXQgc3VmZml4IHNlZW1zIGltcG9ydGFudCwgYW5kIHRoZSBtb2RpZmljYXRpb24gdG8gYGNuMjN4eF9wZl9kZXZpY2UuY2AgaW4gdGhlIHBhdGNoIGlzIG1ha2luZyBtZSB0aGluayB0aGlzIHJlbGF0ZXMgdG8gdGhlIFBoeXNpY2FsIEZ1bmN0aW9uIChQRikgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZXNlIHR3byBmbGFncy4KCk15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtsbCBmaW5kIGhvdyB0aGVzZSBgTElRVUlESU9gIG9wdGlvbnMgYXJlIHVzZWQgdG8gY29tcGlsZSB0aGUgbmVjZXNzYXJ5IG1vZHVsZXMgYW5kLCBob3BlZnVsbHksIGdldCBzb21lIGNsYXJpdHkgb24gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSBWaXJ0dWFsIEZ1bmN0aW9uIChWRikgYXNwZWN0LiBUaGUgTWFrZWZpbGUgd2lsbCBsaWtlbHkgcmV2ZWFsIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9yIGRlcGVuZGVuY3kgZGVmaW5pdGlvbnMuIEkgbmVlZCB0byB1bnJhdmVsIHRoZXNlIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDk6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgQ2F2aXVtIExpcXVpZGlvIGV0aGVybmV0IGRldmljZSBkcml2ZXJcbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0b2JqLSQoQ09ORklHX0xJUVVJRElPX0NPUkUpICYjNDM7PSBsaXF1aWRpby1jb3JlLm9cbiAgIDc6XHRsaXF1aWRpby1jb3JlLXkgOj0gXFxcbiAgIDg6XHRcdFx0bGlvX2V0aHRvb2wub1x0XHRcXFxuICAgOTpcdFx0XHRsaW9fY29yZS5vXHRcdFxcXG4gIDEwOlx0XHRcdHJlcXVlc3RfbWFuYWdlci5vXHRcXFxuICAxMTpcdFx0XHRyZXNwb25zZV9tYW5hZ2VyLm9cdFxcXG4gIDEyOlx0XHRcdG9jdGVvbl9kZXZpY2Uub1x0XHRcXFxuICAxMzpcdFx0XHRjbjY2eHhfZGV2aWNlLm9cdFx0XFxcbiAgMTQ6XHRcdFx0Y242OHh4X2RldmljZS5vXHRcdFxcXG4gIDE1Olx0XHRcdGNuMjN4eF9wZl9kZXZpY2Uub1x0XFxcbiAgMTY6XHRcdFx0Y24yM3h4X3ZmX2RldmljZS5vXHRcXFxuICAxNzpcdFx0XHRvY3Rlb25fbWFpbGJveC5vXHRcXFxuICAxODpcdFx0XHRvY3Rlb25fbWVtX29wcy5vXHRcXFxuICAxOTpcdFx0XHRvY3Rlb25fZHJvcS5vXHRcdFxcXG4gIDIwOlx0XHRcdG9jdGVvbl9uaWMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwOTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTQ0CgkJCQkJCQlvdXRwdXQ6IDEzNQoJCQkJCQkJdGhvdWdodHM6IDM1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENhdml1bSBMaXF1aWRJTyBQRiBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gaGVyZSYjMzk7cyB0aGUgYnJlYWtkb3duIG9mIHdoYXQgSSYjMzk7bSBsb29raW5nIGF0LiBgY24yM3h4X3BmX2RldmljZS5vYCBpcyBwYXJ0IG9mIGBsaXF1aWRpby1jb3JlLm9gLCB3aGljaCBpcyBvbmx5IGJ1aWx0IGlmIGBDT05GSUdfTElRVUlESU9fQ09SRWAgaXMgZW5hYmxlZC4gQW5kLCBjcnVjaWFsbHksIGBDT05GSUdfTElRVUlESU9fQ09SRWAgaXMgKnNlbGVjdGVkKiBieSBlaXRoZXIgYENPTkZJR19MSVFVSURJT2Agb3IgYENPTkZJR19MSVFVSURJT19WRmAuIFJpZ2h0LCBzbyBlbmFibGluZyBqdXN0IGBMSVFVSURJT2AgaXMgc3VmZmljaWVudCB0byBicmluZyBpbiB0aGUgcmVsZXZhbnQgY29kZSBwYXRoLiBFeGNlbGxlbnQuIFRoYXQgc2ltcGxpZmllcyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiB0byBjb25zaWRlci4KCk5vdywgbGV0JiMzOTtzIHplcm8gaW4gb24gdGhlIGtleSBmdW5jdGlvbnMuIFRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgbW9kaWZpZXMgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYC4gSSB3YW50IHRvIGludmVzdGlnYXRlIHRoaXMgYW5kIG90aGVyIGZ1bmN0aW9ucywgc3VjaCBhcyBgY24yM3h4X2dldF9wZl9udW1gLCBidXQgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBpcyBkZWZpbml0ZWx5IHRoZSBtYWluIG9uZS4KCkEgcXVpY2sgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGluIGEgaG90IHBhdGgsIHRoaXMgaXMgYSBwYXJ0IG9mIGluaXRpYWxpemF0aW9uLCBub3QgYW4gaW50ZXJydXB0IG9yIGRhdGEgcHJvY2Vzc2luZyBmdW5jdGlvbi4gSXQgaXMgY2FsbGVkIGZyb20gYG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwYCwgd2hpY2ggaXMsIGluIHR1cm4sIGNhbGxlZCBieSBgb2N0ZW9uX2RldmljZV9pbml0YCwgYW5kIHRoYXQmIzM5O3MgdWx0aW1hdGVseSBjYWxsZWQgYnkgYGxpcXVpZGlvX3Byb2JlYC4gVGhpcyByZWluZm9yY2VzIGl0JiMzOTtzIGFuIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLgoKTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGFuIGVycm9yIGluIGhvdyBQQ0kgQkFScyBhcmUgaGFuZGxlZCBpbiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgLiBJdCBzZWVtcyB0aGVyZSYjMzk7cyBhIG1pc3NpbmcgdW5tYXAgaW4gdGhlIGVycm9yIHBhdGguIFRoaXMgZXJyb3IgcGF0aCBjYW4gYmUgdHJpZ2dlcmVkIGR1cmluZyBQQ0kgcHJvYmUgZnV6emluZy4gV2hlbiBwcm9iaW5nLCB0aGUgc3lzdGVtIG1heSBlbXVsYXRlIFBDSSBjb25maWcgc3BhY2UgcmVhZHMsIGFuZCB0aGF0IG1pZ2h0IGNhdXNlIGBjbjIzeHhfZ2V0X3BmX251bWAgdG8gcmV0dXJuIG5vbi16ZXJvIGluIHRoZSBlcnJvciBwYXRoLiBUaGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgb2YgaW50ZXJlc3QgaXMgdGhlcmVmb3JlIGBMSVFVSURJT2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDA5OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtMSVFVSURJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWlzc2luZyBQQ0kgQkFSIHVubWFwIGluIHRoZSBlcnJvciBwYXRoIG9mIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgQ2F2aXVtIExpcXVpZElPIFBGIGRyaXZlci4gVGhpcyBlcnJvciBwYXRoIGNhbiBiZSByZWFjaGVkIGR1cmluZyBQQ0kgcHJvYmUgZnV6emluZyBieSBlbXVsYXRpbmcgUENJIGNvbmZpZyBzcGFjZSByZWFkcyAoZS5nLiwgbWFraW5nIGBjbjIzeHhfZ2V0X3BmX251bWAgcmV0dXJuIG5vbi16ZXJvKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TElRVUlESU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1pc3NpbmcgUENJIEJBUiB1bm1hcCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIENhdml1bSBMaXF1aWRJTyBQRiBkcml2ZXIuIFRoaXMgZXJyb3IgcGF0aCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgUENJIHByb2JlIGZ1enppbmcgYnkgZW11bGF0aW5nIFBDSSBjb25maWcgc3BhY2UgcmVhZHMgKGUuZy4sIG1ha2luZyBgY24yM3h4X2dldF9wZl9udW1gIHJldHVybiBub24temVybykuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwOTowNTo0MC4yOTY3ODI3MDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTEwNjM0MzI0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJMSVFVSURJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtaXNzaW5nIFBDSSBCQVIgdW5tYXAgaW4gdGhlIGVycm9yIHBhdGggb2YgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBDYXZpdW0gTGlxdWlkSU8gUEYgZHJpdmVyLiBUaGlzIGVycm9yIHBhdGggY2FuIGJlIHJlYWNoZWQgZHVyaW5nIFBDSSBwcm9iZSBmdXp6aW5nIGJ5IGVtdWxhdGluZyBQQ0kgY29uZmlnIHNwYWNlIHJlYWRzIChlLmcuLCBtYWtpbmcgYGNuMjN4eF9nZXRfcGZfbnVtYCByZXR1cm4gbm9uLXplcm8pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwOTowNTo0MC4yOTY3ODc1MjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjU5NjQxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGRjY2E3MWVhZmM2ZDA0YTI3ZDA0NjExNDIzNjY0Y2FhZjFkMDM1NmRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdW4gMjAgMDk6MDU6MzkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcXG5pbmRleCA3NWYyMmY3NDc3NGNiMi4uYTE1NDhjYTgxZWNkM2IgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcXG5AQCAtMTE2Nyw4ICsxMTY3LDExIEBAIGludCBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxcbiBcXHRcXHRyZXR1cm4gMTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGNuMjN4eF9nZXRfcGZfbnVtKG9jdCkgIT0gMClcXG4rXFx0aWYgKGNuMjN4eF9nZXRfcGZfbnVtKG9jdCkgIT0gMCkge1xcbitcXHRcXHRvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAwKTtcXG4rXFx0XFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMSk7XFxuIFxcdFxcdHJldHVybiAxO1xcbitcXHR9XFxuIFxcbiBcXHRpZiAoY24yM3h4X3NyaW92X2NvbmZpZyhvY3QpKSB7XFxuIFxcdFxcdG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwOTowNTo0MC43NzAyNDIwNjVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNjMyODc0NTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkxJUVVJRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1pc3NpbmcgUENJIEJBUiB1bm1hcCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIENhdml1bSBMaXF1aWRJTyBQRiBkcml2ZXIuIFRoaXMgZXJyb3IgcGF0aCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgUENJIHByb2JlIGZ1enppbmcgYnkgZW11bGF0aW5nIFBDSSBjb25maWcgc3BhY2UgcmVhZHMgKGUuZy4sIG1ha2luZyBgY24yM3h4X2dldF9wZl9udW1gIHJldHVybiBub24temVybykuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGNjYTcxZWFmYzZkMDRhMjdkMDQ2MTE0MjM2NjRjYWFmMWQwMzU2ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDIwIDA5OjA1OjM5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcbmluZGV4IDc1ZjIyZjc0Nzc0Y2IyLi5hMTU0OGNhODFlY2QzYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNcbkBAIC0xMTY3LDggKzExNjcsMTEgQEAgaW50IHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4gXHRcdHJldHVybiAxO1xuIFx0fVxuIFxuLVx0aWYgKGNuMjN4eF9nZXRfcGZfbnVtKG9jdCkgIT0gMClcbitcdGlmIChjbjIzeHhfZ2V0X3BmX251bShvY3QpICE9IDApIHtcbitcdFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7XG4rXHRcdG9jdGVvbl91bm1hcF9wY2lfYmFyeChvY3QsIDEpO1xuIFx0XHRyZXR1cm4gMTtcbitcdH1cbiBcbiBcdGlmIChjbjIzeHhfc3Jpb3ZfY29uZmlnKG9jdCkpIHtcbiBcdFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwOTowNTo0MC43NzAyNDM1NTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTU1NjM0MDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmNgLiBJdCBsb29rcyBsaWtlIGl0J3MgYWRkaW5nIGBvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAwKTsgb2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMSk7YCBiZWZvcmUgcmV0dXJuaW5nIDEgaW4gdGhlIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJIbW0sIHdoYXQncyB0aGUgcmVhY2hhYmlsaXR5IG9mIHRoaXMgY2hhbmdlLCBwYXJ0aWN1bGFybHkgaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0P1wiIFdlIGFsbCBrbm93IHRoZXNlIHNvcnRzIG9mIGRldmljZXMgY2FuIGJlIHRyaWNreS5cblxuVGhlIGRyaXZlciBpdHNlbGYsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW9gLCBpcyBwcmV0dHkgc3BlY2lmaWM6IGEgUENJIGRldmljZSBkcml2ZXIgZm9yIHRoZSBDYXZpdW0gTGlxdWlkSU8gSW50ZWxsaWdlbnQgU2VydmVyIEFkYXB0ZXIuIFRoYXQncyBteSBmaXJzdCBjbHVlLiAgSSdtIGJldHRpbmcgdGhpcyBpc24ndCBzb21ldGhpbmcgZWFzaWx5IGVtdWxhdGVkLCBhdCBsZWFzdCBub3QgaW4gYSBnZW5lcmFsLXB1cnBvc2Ugd2F5IHdpdGggc29tZXRoaW5nIGxpa2UgUUVNVS4gIEkgbWVhbiwgeW91ICpjb3VsZCogZW11bGF0ZSBpdCwgYnV0IGl0IHdvdWxkIHRha2UgY29uc2lkZXJhYmxlIGVmZm9ydC4gIEknbSBndWVzc2luZyB0aGVyZSdzIG5vIGRpcmVjdCBRRU1VIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZS4gVGhlIGxldmVsIG9mIGRldGFpbCByZXF1aXJlZCBmb3IgYSBjb3JyZWN0IGVtdWxhdGlvbiBpcyB1c3VhbGx5IHByZXR0eSBoaWdoLCBhbmQgdmVuZG9ycyB0ZW5kIHRvIGhhbmRsZSB0aGVpciBvd24gc29sdXRpb25zIGlmIHRoZXkgbmVlZCBhbiBlbXVsYXRvci5cblxuTGV0J3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgd2l0aCB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9LY29uZmlnYCBmaWxlLCBidXQgSSdtIG5vdCBleHBlY3RpbmcgYW55dGhpbmcgb3V0IG9mIHRoZSBvcmRpbmFyeSB0aGVyZS4gTGV0IG1lIGNvbmZpcm0gbXkgZXhwZWN0YXRpb25zIG9mIHNwZWNpYWxpemVkIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTYxLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDk6MDU6NDUuNzI1ODc5ODEzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MzYwMDE5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTElRVUlESU9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDA5OjA1OjQ1Ljc4MTI0NTkyMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MjYwODQ1ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBzaXR1YXRpb24gbXlzZWxmOlxuXG4qKktjb25maWcgQ2hlY2sqKlxuXG5Pa2F5LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBkb3duIHRoaXMgcmFiYml0IGhvbGUsIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBtYWtlIGFic29sdXRlbHkgc3VyZSBJJ20gbm90IG1pc3Npbmcgc29tZXRoaW5nIGZ1bmRhbWVudGFsLiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTGV0J3MgcHVsbCB1cCB0aGUgYEtjb25maWdgIGZpbGUuIEknbSB0aGlua2luZyB0aGUgb25lIHNwZWNpZmljYWxseSBpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnYCBkaXJlY3Rvcnkgc2hvdWxkIHByb3ZpZGUgbWUgd2l0aCBhbGwgdGhlIG5lY2Vzc2FyeSBkZXBlbmRlbmNpZXMsIHZpc2liaWxpdHksIGFuZCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgcmVsZXZhbnQgdG8gdGhlIGV0aGVybmV0IGRldmljZSBJIGFtIHdvcmtpbmcgd2l0aC4gSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiB0aHJvdWdoIGl0LCBsb29raW5nIGZvciBhbnkgY29uZGl0aW9uYWwgYnVpbGRzIG9yIHBvdGVudGlhbCBnb3RjaGFzIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQuIEl0J3MgYmVzdCB0byBzdGFydCB3aXRoIHRoZSBjb25maWd1cmF0aW9uIGZpcnN0IGJlZm9yZSB3YXN0aW5nIHRpbWUgbG9va2luZyBhdCB0aGUgcmVzdCBvZiB0aGUgY29kZS4gVGhpcyB3aWxsIHNhdmUgc29tZSBwb3RlbnRpYWwgaGVhZGFjaGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1ODAsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwOTowNTo0OC43MDczMzIzMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTE4ODA2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTElRVUlESU9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWc9NTQ9Y29uZmlnIENBVklVTV9QVFBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjY1OmNvbmZpZyBMSVFVSURJT19DT1JFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL0tjb25maWctNjYtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy02Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZzo2ODpjb25maWcgTElRVUlESU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZy02OS1cXHR0cmlzdGF0ZSBcXFwiQ2F2aXVtIExpcXVpZElPIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZz04ND1jb25maWcgT0NURU9OX01HTVRfRVRIRVJORVRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnOjk1OmNvbmZpZyBMSVFVSURJT19WRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnLTk2LVxcdHRyaXN0YXRlIFxcXCJDYXZpdW0gTGlxdWlkSU8gVkYgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDk6MDU6NDguNzYyNTI3MjA4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUwMzY3MTE3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIHRoZSBDYXZpdW0gTGlxdWlkSU8gRHJpdmVyKipcblxuT2theSwgc28gdGhpcyBDYXZpdW0gTGlxdWlkSU8gZHJpdmVyLi4uaXQncyBhIFBDSSBkZXZpY2UuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHN5emthbGxlciBmdXp6IHRoaXMgdGhpbmc/IEFuZCBob3c/IFN5emthbGxlcidzIGdvdCBpdHMgcHNldWRvLVBDSSBidXMgZnVuY3Rpb25hbGl0eSwgYW5kIGl0IGNhbiBhbHNvIGluamVjdCBQQ0kgY29uZmlnIHNwYWNlIHJlYWRzIGFuZCB3cml0ZXMg4oCTIHRoYXQncyB0aGUgb2J2aW91cyBhcHByb2FjaC4gTm93LCBJIHJlbWVtYmVyIHNlZWluZyBzb21ldGhpbmcgbGlrZSBgc3l6X3BjaV9kZXZpY2VgIGluIHN5emthbGxlcidzIGNvZGViYXNlLiBCdXQsIHR5cGljYWxseSwgc3l6a2FsbGVyIGlzIHByZXR0eSB0YXJnZXRlZCB3aXRoIFBDSSBkZXZpY2VzLCBhbmQgZ2VuZXJhbGx5IG9ubHkgZnV6emVzIGV4cGxpY2l0bHkgc3VwcG9ydGVkIG9uZXMgb3IgaWYgZ2VuZXJpYyBQQ0kgZnV6emluZyBpcyBlbmFibGVkLCByaWdodD9cblxuQnV0IHRoZW4gSSBzZWUgdGhlIGNsdWU6IFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLlwiIFRoaXMgZ2V0cyBtZSB0aGlua2luZyDigJMgaXMgdGhlIENhdml1bSBMaXF1aWRJTyBoYXJkd2FyZSBlbXVsYXRlZCBpbiBvdXIgdHlwaWNhbCB0ZXN0IGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VPyBJIGRvbid0ICp0aGluayogc28uIEhvd2V2ZXIsIHRoZSBtZW50aW9uIG9mIGBtYWM4MDIxMV9od3NpbWAgcmVtaW5kcyBtZSB0aGF0IHN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIsIHdoaWNoIGNhbiBwcm9iZSBwcmV0dHkgbXVjaCBhbnkgUENJIGRyaXZlciBieSBlbXVsYXRpbmcgUENJIGRldmljZXMgYXQgdGhlIGNvbmZpZyBzcGFjZSBhbmQgTU1JTyBsZXZlbC4gU28sIHRoZSBrZXkgaXMgd2hldGhlciB0aGF0IGZ1enplciBhY3R1YWxseSByZWFjaGVzIHRoaXMgQ2F2aXVtIExpcXVpZElPLlxuXG5BbHJpZ2h0LCBsZXQncyB0YWtlIGEgbG9vayBhdCBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGFuZCBkaXZlIGludG8gdGhlIGNvZGUuLi4gSSBzdXNwZWN0IHRoZSBhbnN3ZXIgaXMgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwODAsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDk6MDU6NTQuMjY2MjAzMzIyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0ODE1NDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYz0xMDgwPWludCBjbjIzeHhfc3Jpb3ZfY29uZmlnKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTExMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYzoxMTM4OmludCBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtMTEzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTEyMTEtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM6MTIxMjpFWFBPUlRfU1lNQk9MX0dQTChzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYy0xMjEzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuaD00Nj1zdHJ1Y3Qgb2N0X3ZmX3N0YXRzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmgtNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuaDo1NTppbnQgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2Uoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuaC01Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jPTEzMzY9c3RhdGljIGludCBvY3Rlb25fY2hpcF9zcGVjaWZpY19zZXR1cChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTM1Ny1cXHRcXHRvY3QtXFx1MDAzZWNoaXBfaWQgPSBPQ1RFT05fQ04yM1hYX1BGX1ZJRDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoxMzU4OlxcdFxcdHJldCA9IHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKG9jdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTM1OS1cXHRcXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwOTowNTo1NC4zMjEwMjQ1OTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjA1Nzc3ODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGNvZGUgc25pcHBldCwgdGhpbmtpbmcgbGlrZSBhbiBleHBlcnQ6XG5cbioqVHJhY2luZyB0aGUgRGV2aWNlIEluaXRpYWxpemF0aW9uIEZsb3cqKlxuXG5Pa2F5LCBzbyBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGlzIHRoZSBmdW5jdGlvbiBvZiBpbnRlcmVzdCBoZXJlLiBUaGUgZmFjdCB0aGF0IGl0J3MgY2FsbGVkIGZyb20gYG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwYCBpcyBpbXBvcnRhbnQsIGJlY2F1c2UgdGhpcyBpbXBsaWVzIHRoZSBzZXR1cCBpcyB2ZXJ5IHNwZWNpZmljIHRvIHRoZSBDTjIzeHggT2N0ZW9uIGNoaXAgZmFtaWx5LiBBbmQgYG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwYCBpdHNlbGYgaXMgY2FsbGVkIGZyb20gYG9jdGVvbl9kZXZpY2VfaW5pdGAuIE5vdywgKnRoYXQncyogYSBrZXkgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dC4gYG9jdGVvbl9kZXZpY2VfaW5pdGAgaXMgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4gVGhpcyBpcyB3aGVyZSB0aGUgd2hvbGUgZHJpdmVyIHN0cnVjdHVyZSBnZXRzIGJ1aWx0LiBUaGlzIGlzIHRoZSByb290IG9mIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGZvciB0aGUgZGV2aWNlLiBJIG5lZWQgdG8gc3RhcnQgbXkgZGVidWdnaW5nIHdpdGggYG9jdGVvbl9kZXZpY2VfaW5pdGAgYW5kIHVuZGVyc3RhbmQgd2hlcmUgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBmaXRzIHdpdGhpbiBpdHMgY29udHJvbCBmbG93LiBMZXQncyBzdGFydCBkaXNzZWN0aW5nIGBvY3Rlb25fZGV2aWNlX2luaXRgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjc5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDk6MDU6NTcuNTI2ODA1NDgyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDY0ODUwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvY3Rlb25fZGV2aWNlX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0xMzk9c3RhdGljIGludCBvY3Rlb25fZGJnX2NvbnNvbGVfcHJpbnQoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdCwgdTMyIGNvbnNvbGVfbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMTQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjE0MjpzdGF0aWMgaW50IG9jdGVvbl9kZXZpY2VfaW5pdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0xNDMtc3RhdGljIGludCBsaXF1aWRpb19zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9ODIzPWxpcXVpZGlvX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBfX21heWJlX3VudXNlZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtODY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjg2NjpcXHRpZiAob2N0ZW9uX2RldmljZV9pbml0KG9jdF9kZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtODY3LVxcdFxcdGNvbXBsZXRlKFxcdTAwMjZocy1cXHUwMDNlaW5pdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0zOTgwPW9jdGVvbl9yZWN2X3ZmX2Rydl9ub3RpY2Uoc3RydWN0IG9jdGVvbl9yZWN2X2luZm8gKnJlY3ZfaW5mbywgdm9pZCAqYnVmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDAzMC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzo0MDMxOiAqIG9jdGVvbl9kZXZpY2VfaW5pdCAtIERldmljZSBpbml0aWFsaXphdGlvbiBmb3IgZWFjaCBPY3Rlb24gZGV2aWNlIHRoYXQgaXMgcHJvYmVkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDAzMi0gKiBAb2N0ZW9uX2RldjogIG9jdGVvbiBkZXZpY2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy00MDMzLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjQwMzQ6c3RhdGljIGludCBvY3Rlb25fZGV2aWNlX2luaXQoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdGVvbl9kZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtNDAzNS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz02OT1zdGF0aWMgdm9pZCBsaXF1aWRpb192Zl9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjcwOnN0YXRpYyBpbnQgb2N0ZW9uX2RldmljZV9pbml0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTcxLXN0YXRpYyBpbnQgbGlxdWlkaW9fc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTM3OT1saXF1aWRpb192Zl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTQwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzo0MDU6XFx0aWYgKG9jdGVvbl9kZXZpY2VfaW5pdChvY3RfZGV2KSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTQwNi1cXHRcXHRsaXF1aWRpb192Zl9yZW1vdmUocGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYz0yMjMwPXN0YXRpYyBpbnQgbGlxdWlkaW9faW5pdF9uaWNfbW9kdWxlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0yMjY0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjIyNjU6ICogb2N0ZW9uX2RldmljZV9pbml0IC0gRGV2aWNlIGluaXRpYWxpemF0aW9uIGZvciBlYWNoIE9jdGVvbiBkZXZpY2UgdGhhdCBpcyBwcm9iZWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0yMjY2LSAqIEBvY3Q6ICBvY3Rlb24gZGV2aWNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjI2Ny0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoyMjY4OnN0YXRpYyBpbnQgb2N0ZW9uX2RldmljZV9pbml0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjI2OS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDA5OjA1OjU3LjU4MTQ1OTkzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3NDE4NTg2NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIFBDSSBQcm9iZSBGdXp6aW5nIHdpdGggU3l6a2FsbGVyKipcblxuT2theSwgc28gYGxpcXVpZGlvX3Byb2JlYCB0cmlnZ2VycyB0aGlzIGNhbGwgY2hhaW46IGBvY3Rlb25fZGV2aWNlX2luaXRgIC1cdTAwM2UgYG9jdGVvbl9jaGlwX3NwZWNpZmljX3NldHVwYCAtXHUwMDNlIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAuIFRoYXQgbGFzdCBmdW5jdGlvbiBpcyBhIFBDSSBwcm9iZSBmdW5jdGlvbiwgYW5kIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIFN5emthbGxlci4gSXQgaGFzIGEgUENJIGZ1enplciwgd2hpY2ggaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHRhcmdldCB0aGVzZSBwcm9iZSBmdW5jdGlvbnMgYnkgc2ltdWxhdGluZyBQQ0kgZGV2aWNlcy4gQSBxdWljayBzYW5pdHkgY2hlY2s6IGlzIGBMSVFVSURJT2AgYWN0dWFsbHkgZW5hYmxlZCBpbiB0aGUgdHlwaWNhbCBTeXprYWxsZXIgY29uZmlndXJhdGlvbnM/IEdpdmVuIGhvdyBjb21wcmVoZW5zaXZlIFN5emthbGxlciBpcyB3aXRoIFBDSSBkcml2ZXIgZnV6emluZywgSSdkIGV4cGVjdCBpdCB0byBiZS5cblxuV2FpdCwgaG9sZCBvbi4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzLiBJdCBhZHZpc2VzIHZlcmlmeWluZyB0aGF0IHRoZSBjb2RlIGNhbiBhY3R1YWxseSAqYmUqIGV4ZWN1dGVkLCB3aGljaCB0aHJvd3MgYSBmbGFnLiBIb3dldmVyLCB0aGUgUENJIGZ1enplciBpcyBkZXNpZ25lZCB0byBwcm9iZSBjb2RlIHRoYXQgaXMgcmVhY2hlZCB2aWEgYSBQQ0kgZGV2aWNlLiBTbyBjYW4gU3l6a2FsbGVyJ3MgUENJIGZ1enplciBhY3R1YWxseSByZWFjaCB0aGlzIGNvZGU/IFRoZSBhbnN3ZXIgaXMgeWVzLCB0aGF0J3Mgd2hhdCBpdCdzIGZvci5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBwYXRjaCBpdHNlbGYuIEl0J3MgYSBmaXggZm9yIGEgbWVtb3J5IGxlYWsgb3IgbWlzc2luZyB1bm1hcCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgLiBUaGF0J3MgaW50ZXJlc3Rpbmc7IGVycm9yIHBhdGhzIGFyZSAqcHJpbWUqIGZ1enppbmcgdGFyZ2V0cyBiZWNhdXNlIHRoZXkgYXJlIG9mdGVuIGxlc3MgZXhlcmNpc2VkIGFuZCBtb3JlIHByb25lIHRvIGVycm9ycy4gU3BlY2lmaWNhbGx5LCB0aGUgZXJyb3IgcGF0aCBpbnZvbHZlcyBgY24yM3h4X2dldF9wZl9udW1gLlxuXG5gYGBjXG5cdGlmIChjbjIzeHhfZ2V0X3BmX251bShvY3QpICE9IDApIHtcblx0XHRvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAwKTtcblx0XHRvY3Rlb25fdW5tYXBfcGNpX2Jhcngob2N0LCAxKTtcblx0XHRyZXR1cm4gMTtcblx0fVxuYGBgXG5cblRoaXMgZXJyb3IgcGF0aCBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBkdXJpbmcgUENJIHByb2JlIGZ1enppbmcgYmVjYXVzZSBpdCdzIHBhcnQgb2YgdGhlIHByb2JlIGZ1bmN0aW9uIGl0c2VsZi4gV2UgZGVmaW5pdGVseSBuZWVkIHRvIGNoZWNrIHdoYXQgYGNuMjN4eF9nZXRfcGZfbnVtYCBkb2VzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoaXMgdW5tYXAgYW5kIHJldHVybi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTczOSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwOTowNjowNC4zMjMzMjA5MDRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2OTg5ODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNuMjN4eF9nZXRfcGZfbnVtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYz05Nzc9c3RhdGljIHZvaWQgY24yM3h4X2dldF9wY2llX3FsbXBvcnQoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmMtOTg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjIzeHhfcGZfZGV2aWNlLmM6OTg1OnN0YXRpYyBpbnQgY24yM3h4X2dldF9wZl9udW0oc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTk4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jPTExMzg9aW50IHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTExNjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuYzoxMTcwOlxcdGlmIChjbjIzeHhfZ2V0X3BmX251bShvY3QpICE9IDApIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY24yM3h4X3BmX2RldmljZS5jLTExNzEtXFx0XFx0b2N0ZW9uX3VubWFwX3BjaV9iYXJ4KG9jdCwgMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDA5OjA2OjA0LjM4MDMxNjMyM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzIzNTQ3MDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB3aGF0IEknbSBhYm91dCB0byBkbywgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOlxuXG4qKkRlY29uc3RydWN0aW5nIGBjbjIzeHhfZ2V0X3BmX251bWAqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgYGNuMjN4eF9nZXRfcGZfbnVtYCBmdW5jdGlvbiBpcyBhbGwgYWJvdXQuIEJhc2VkIG9uIHRoZSBuYW1lIGFsb25lLCBteSBpbml0aWFsIGFzc3VtcHRpb25zIGFyZSBpdCdzIGxpa2VseSBwYXJ0IG9mIGEgQ04yM3h4LXJlbGF0ZWQgZHJpdmVyLCBsaWtlbHkgZGVhbGluZyB3aXRoIGEgcGh5c2ljYWwgZnVuY3Rpb24gbnVtYmVyIGluIGEgbXVsdGktZnVuY3Rpb24gZGV2aWNlIGNvbnRleHQsIHBvdGVudGlhbGx5IHJlbGF0ZWQgdG8gbmV0d29yayBjYXJkcy4gSSdtIGdvaW5nIHRvIGxvb2sgYXQgaXRzIGRlZmluaXRpb24sIHRoZSBjb250ZXh0IGluIHdoaWNoIGl0IGlzIHVzZWQsIGFuZCB3aGF0IGl0cyByZXR1cm4gdmFsdWUgcmVwcmVzZW50cy4gSSdsbCBtZW50YWxseSBtYXAgdGhpcyB0byB0aGUgaGFyZHdhcmUgSSBhbSBmYW1pbGlhciB3aXRoIGFuZCBjb25zaWRlciB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLCBsaWtlIHRoZSBkcml2ZXIncyBkZXZpY2Ugc3RydWN0dXJlLCBhbmQgYW55IGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzLiBIb3BlZnVsbHksIHRoZSBjb2RlIGNvbW1lbnRzIGFyZSBnb29kIGVub3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk5NiwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDA5OjA2OjA3LjcwMzg2NTM3MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg1NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuMjN4eF9wZl9kZXZpY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA5ODUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA5ODU6XFx0c3RhdGljIGludCBjbjIzeHhfZ2V0X3BmX251bShzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxcbiA5ODY6XFx0e1xcbiA5ODc6XFx0XFx0dTMyIGZkbF9iaXQgPSAwO1xcbiA5ODg6XFx0XFx0dTY0IHBrdDBfaW5fY3RsLCBkNjQ7XFxuIDk4OTpcXHRcXHRpbnQgcGZudW0sIG1hYywgdHJzLCByZXQ7XFxuIDk5MDpcXHRcXG4gOTkxOlxcdFxcdHJldCA9IDA7XFxuIDk5MjpcXHRcXG4gOTkzOlxcdFxcdC8qIFJlYWQgRnVuY3Rpb24gRGVwZW5kZW5jeSBMaW5rIHJlZyB0byBnZXQgdGhlIGZ1bmN0aW9uIG51bWJlciAqL1xcbiA5OTQ6XFx0XFx0aWYgKHBjaV9yZWFkX2NvbmZpZ19kd29yZChvY3QtXFx1MDAzZXBjaV9kZXYsIENOMjNYWF9QQ0lFX1NSSU9WX0ZETCxcXG4gOTk1OlxcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNmZkbF9iaXQpID09IDApIHtcXG4gOTk2OlxcdFxcdFxcdG9jdC1cXHUwMDNlcGZfbnVtID0gKChmZGxfYml0IFxcdTAwM2VcXHUwMDNlIENOMjNYWF9QQ0lFX1NSSU9WX0ZETF9CSVRfUE9TKSBcXHUwMDI2XFxuIDk5NzpcXHRcXHRcXHRcXHQgICAgICAgQ04yM1hYX1BDSUVfU1JJT1ZfRkRMX01BU0spO1xcbiA5OTg6XFx0XFx0fSBlbHNlIHtcXG4gOTk5OlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuMTAwMDpcXHRcXG4xMDAxOlxcdFxcdFxcdC8qIFVuZGVyIHNvbWUgdmlydHVhbCBlbnZpcm9ubWVudHMsIGV4dGVuZGVkIFBDSSByZWdzIGFyZVxcbjEwMDI6XFx0XFx0XFx0ICogaW5hY2Nlc3NpYmxlLCBpbiB3aGljaCBjYXNlIHRoZSBhYm92ZSByZWFkIHdpbGwgaGF2ZSBmYWlsZWQuXFxuMTAwMzpcXHRcXHRcXHQgKiBJbiB0aGlzIGNhc2UsIHJlYWQgdGhlIFBGIG51bWJlciBmcm9tIHRoZVxcbjEwMDQ6XFx0XFx0XFx0ICogU0xJX1BLVDBfSU5QVVRfQ09OVFJPTCByZWcgKHdyaXR0ZW4gYnkgZi93KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwOTowNjowNy43MDM5NzUyMjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUwMTU0NzM1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFBvdGVudGlhbDogUENJIENvbmZpZyBTcGFjZSBWdWxuZXJhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgYSBwb3RlbnRpYWwgZ29sZG1pbmUgZm9yIGZ1enppbmcuIEl0J3MgcmVhZGluZyBkaXJlY3RseSBmcm9tIHRoZSBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZS4gV2Uga25vdyBTeXprYWxsZXIncyBQQ0kgZnV6emVyIGhhcyBjb250cm9sIG92ZXIgdGhhdCBhcmVhLCBzbyB3ZSBjYW4gYWJzb2x1dGVseSBmZWVkIGl0IG1hbGljaW91cywgbm9uLXplcm8gdmFsdWVzIHRvIHRyaWdnZXIgdGhlIGVycm9yIHBhdGguIFRoaXMgaXMgcHJhY3RpY2FsbHkgYmVnZ2luZyB0byBiZSBmdXp6ZWQuXG5cbk5vdywgdG8gZ2V0IHRoaXMgcnVubmluZyBpbiBhIHRlc3QgZW52aXJvbm1lbnQsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBtaW5pbWFsIGNvbmZpZ3VyYXRpb24uIEkgcmVtZW1iZXIgc2VlaW5nIGEgYENPTkZJR19MSVFVSURJT2Agb3B0aW9uIG1lbnRpb25lZC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vS2NvbmZpZ2Ag4oCTIEkgbmVlZCB0byBlbnN1cmUgdGhhdCBgTElRVUlESU9gIGFuZCBhbnkgc3VwcG9ydGluZyBjb25maWd1cmF0aW9ucyBhcmUgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY0MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDk6MDY6MTEuMjA1NTI0Njk0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4MjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDY1OlxcdGNvbmZpZyBMSVFVSURJT19DT1JFXFxuICA2NjpcXHRcXHR0cmlzdGF0ZVxcbiAgNjc6XFx0XFxuICA2ODpcXHRjb25maWcgTElRVUlESU9cXG4gIDY5OlxcdFxcdHRyaXN0YXRlIFxcXCJDYXZpdW0gTGlxdWlkSU8gc3VwcG9ydFxcXCJcXG4gIDcwOlxcdFxcdGRlcGVuZHMgb24gNjRCSVQgXFx1MDAyNlxcdTAwMjYgUENJXFxuICA3MTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgNzI6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgNzM6XFx0XFx0c2VsZWN0IENSQzMyXFxuICA3NDpcXHRcXHRzZWxlY3QgRldfTE9BREVSXFxuICA3NTpcXHRcXHRzZWxlY3QgTElRVUlESU9fQ09SRVxcbiAgNzY6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICA3NzpcXHRcXHRoZWxwXFxuICA3ODpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIENhdml1bSBMaXF1aWRJTyBJbnRlbGxpZ2VudCBTZXJ2ZXIgQWRhcHRlcnNcXG4gIDc5OlxcdFxcdCAgYmFzZWQgb24gQ042NlhYLCBDTjY4WFggYW5kIENOMjNYWCBjaGlwcy5cXG4gIDgwOlxcdFxcbiAgODE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuICA4MjpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGxpcXVpZGlvLiAgVGhpcyBpcyByZWNvbW1lbmRlZC5cXG4gIDgzOlxcdFxcbiAgODQ6XFx0Y29uZmlnIE9DVEVPTl9NR01UX0VUSEVSTkVUXFxuICA4NTpcXHRcXHR0cmlzdGF0ZSBcXFwiT2N0ZW9uIE1hbmFnZW1lbnQgcG9ydCBldGhlcm5ldCBkcml2ZXIgKENONVhYWCwgQ042WFhYKVxcXCJcXG4gIDg2OlxcdFxcdGRlcGVuZHMgb24gQ0FWSVVNX09DVEVPTl9TT0NcXG4gIDg3OlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gIDg4OlxcdFxcdHNlbGVjdCBNRElPX09DVEVPTlxcbiAgODk6XFx0XFx0ZGVmYXVsdCB5XFxuICA5MDpcXHRcXHRoZWxwXFxuICA5MTpcXHRcXHQgIEVuYWJsZSB0aGUgZXRoZXJuZXQgZHJpdmVyIGZvciB0aGUgbWFuYWdlbWVudFxcbiAgOTI6XFx0XFx0ICBwb3J0IG9uIENhdml1bSBOZXR3b3JrcycgT2N0ZW9uIENONTdYWCwgQ041NlhYLCBDTjU1WFgsXFxuICA5MzpcXHRcXHQgIENONTRYWCwgQ041MlhYLCBhbmQgQ042WFhYIGNoaXBzLlxcbiAgOTQ6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDA5OjA2OjExLjIwNTU5NDM4NVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDU3Mzk2OTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlY29kaW5nIHRoZSBMaXF1aWRJTyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYExJUVVJRElPYCBjb25maWd1cmF0aW9uLiBNeSBpbml0aWFsIGFzc3VtcHRpb24gaXMgdGhhdCBgTElRVUlESU9gIHJlcHJlc2VudHMgdGhlIGJhc2UgY29uZmlndXJhdGlvbi4gQnV0IHdoYXQgYWJvdXQgYExJUVVJRElPX1ZGYD8gVGhhdCBzdWZmaXggc2VlbXMgaW1wb3J0YW50LCBhbmQgdGhlIG1vZGlmaWNhdGlvbiB0byBgY24yM3h4X3BmX2RldmljZS5jYCBpbiB0aGUgcGF0Y2ggaXMgbWFraW5nIG1lIHRoaW5rIHRoaXMgcmVsYXRlcyB0byB0aGUgUGh5c2ljYWwgRnVuY3Rpb24gKFBGKSBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlc2UgdHdvIGZsYWdzLlxuXG5NeSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSBJJ2xsIGZpbmQgaG93IHRoZXNlIGBMSVFVSURJT2Agb3B0aW9ucyBhcmUgdXNlZCB0byBjb21waWxlIHRoZSBuZWNlc3NhcnkgbW9kdWxlcyBhbmQsIGhvcGVmdWxseSwgZ2V0IHNvbWUgY2xhcml0eSBvbiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGJhc2UgY29uZmlndXJhdGlvbiBhbmQgdGhlIFZpcnR1YWwgRnVuY3Rpb24gKFZGKSBhc3BlY3QuIFRoZSBNYWtlZmlsZSB3aWxsIGxpa2VseSByZXZlYWwgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gb3IgZGVwZW5kZW5jeSBkZWZpbml0aW9ucy4gSSBuZWVkIHRvIHVucmF2ZWwgdGhlc2UgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MzU0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwOTowNjoxNC42NjI5OTQyMDlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBDYXZpdW0gTGlxdWlkaW8gZXRoZXJuZXQgZGV2aWNlIGRyaXZlclxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRvYmotJChDT05GSUdfTElRVUlESU9fQ09SRSkgKz0gbGlxdWlkaW8tY29yZS5vXFxuICAgNzpcXHRsaXF1aWRpby1jb3JlLXkgOj0gXFxcXFxcbiAgIDg6XFx0XFx0XFx0bGlvX2V0aHRvb2wub1xcdFxcdFxcXFxcXG4gICA5OlxcdFxcdFxcdGxpb19jb3JlLm9cXHRcXHRcXFxcXFxuICAxMDpcXHRcXHRcXHRyZXF1ZXN0X21hbmFnZXIub1xcdFxcXFxcXG4gIDExOlxcdFxcdFxcdHJlc3BvbnNlX21hbmFnZXIub1xcdFxcXFxcXG4gIDEyOlxcdFxcdFxcdG9jdGVvbl9kZXZpY2Uub1xcdFxcdFxcXFxcXG4gIDEzOlxcdFxcdFxcdGNuNjZ4eF9kZXZpY2Uub1xcdFxcdFxcXFxcXG4gIDE0OlxcdFxcdFxcdGNuNjh4eF9kZXZpY2Uub1xcdFxcdFxcXFxcXG4gIDE1OlxcdFxcdFxcdGNuMjN4eF9wZl9kZXZpY2Uub1xcdFxcXFxcXG4gIDE2OlxcdFxcdFxcdGNuMjN4eF92Zl9kZXZpY2Uub1xcdFxcXFxcXG4gIDE3OlxcdFxcdFxcdG9jdGVvbl9tYWlsYm94Lm9cXHRcXFxcXFxuICAxODpcXHRcXHRcXHRvY3Rlb25fbWVtX29wcy5vXFx0XFxcXFxcbiAgMTk6XFx0XFx0XFx0b2N0ZW9uX2Ryb3Eub1xcdFxcdFxcXFxcXG4gIDIwOlxcdFxcdFxcdG9jdGVvbl9uaWMub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwOTowNjoxNC42NjMwNTk4OTlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY2MTAwNzc4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENhdml1bSBMaXF1aWRJTyBQRiBEcml2ZXIgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBoZXJlJ3MgdGhlIGJyZWFrZG93biBvZiB3aGF0IEknbSBsb29raW5nIGF0LiBgY24yM3h4X3BmX2RldmljZS5vYCBpcyBwYXJ0IG9mIGBsaXF1aWRpby1jb3JlLm9gLCB3aGljaCBpcyBvbmx5IGJ1aWx0IGlmIGBDT05GSUdfTElRVUlESU9fQ09SRWAgaXMgZW5hYmxlZC4gQW5kLCBjcnVjaWFsbHksIGBDT05GSUdfTElRVUlESU9fQ09SRWAgaXMgKnNlbGVjdGVkKiBieSBlaXRoZXIgYENPTkZJR19MSVFVSURJT2Agb3IgYENPTkZJR19MSVFVSURJT19WRmAuIFJpZ2h0LCBzbyBlbmFibGluZyBqdXN0IGBMSVFVSURJT2AgaXMgc3VmZmljaWVudCB0byBicmluZyBpbiB0aGUgcmVsZXZhbnQgY29kZSBwYXRoLiBFeGNlbGxlbnQuIFRoYXQgc2ltcGxpZmllcyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiB0byBjb25zaWRlci5cblxuTm93LCBsZXQncyB6ZXJvIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAuIEkgd2FudCB0byBpbnZlc3RpZ2F0ZSB0aGlzIGFuZCBvdGhlciBmdW5jdGlvbnMsIHN1Y2ggYXMgYGNuMjN4eF9nZXRfcGZfbnVtYCwgYnV0IGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAgaXMgZGVmaW5pdGVseSB0aGUgbWFpbiBvbmUuXG5cbkEgcXVpY2sgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgaW4gYSBob3QgcGF0aCwgdGhpcyBpcyBhIHBhcnQgb2YgaW5pdGlhbGl6YXRpb24sIG5vdCBhbiBpbnRlcnJ1cHQgb3IgZGF0YSBwcm9jZXNzaW5nIGZ1bmN0aW9uLiBJdCBpcyBjYWxsZWQgZnJvbSBgb2N0ZW9uX2NoaXBfc3BlY2lmaWNfc2V0dXBgLCB3aGljaCBpcywgaW4gdHVybiwgY2FsbGVkIGJ5IGBvY3Rlb25fZGV2aWNlX2luaXRgLCBhbmQgdGhhdCdzIHVsdGltYXRlbHkgY2FsbGVkIGJ5IGBsaXF1aWRpb19wcm9iZWAuIFRoaXMgcmVpbmZvcmNlcyBpdCdzIGFuIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLlxuXG5NeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhpcyBwYXRjaCBhZGRyZXNzZXMgYW4gZXJyb3IgaW4gaG93IFBDSSBCQVJzIGFyZSBoYW5kbGVkIGluIGBzZXR1cF9jbjIzeHhfb2N0ZW9uX3BmX2RldmljZWAuIEl0IHNlZW1zIHRoZXJlJ3MgYSBtaXNzaW5nIHVubWFwIGluIHRoZSBlcnJvciBwYXRoLiBUaGlzIGVycm9yIHBhdGggY2FuIGJlIHRyaWdnZXJlZCBkdXJpbmcgUENJIHByb2JlIGZ1enppbmcuIFdoZW4gcHJvYmluZywgdGhlIHN5c3RlbSBtYXkgZW11bGF0ZSBQQ0kgY29uZmlnIHNwYWNlIHJlYWRzLCBhbmQgdGhhdCBtaWdodCBjYXVzZSBgY24yM3h4X2dldF9wZl9udW1gIHRvIHJldHVybiBub24temVybyBpbiB0aGUgZXJyb3IgcGF0aC4gVGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIG9mIGludGVyZXN0IGlzIHRoZXJlZm9yZSBgTElRVUlESU9gLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTQ0LCJPdXRwdXRUb2tlbnMiOjEzNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDA5OjA2OjIxLjMyNDA3MTAzNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5MDQyMjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJMSVFVSURJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtaXNzaW5nIFBDSSBCQVIgdW5tYXAgaW4gdGhlIGVycm9yIHBhdGggb2YgYHNldHVwX2NuMjN4eF9vY3Rlb25fcGZfZGV2aWNlYCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBDYXZpdW0gTGlxdWlkSU8gUEYgZHJpdmVyLiBUaGlzIGVycm9yIHBhdGggY2FuIGJlIHJlYWNoZWQgZHVyaW5nIFBDSSBwcm9iZSBmdXp6aW5nIGJ5IGVtdWxhdGluZyBQQ0kgY29uZmlnIHNwYWNlIHJlYWRzIChlLmcuLCBtYWtpbmcgYGNuMjN4eF9nZXRfcGZfbnVtYCByZXR1cm4gbm9uLXplcm8pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkxJUVVJRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1pc3NpbmcgUENJIEJBUiB1bm1hcCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgc2V0dXBfY24yM3h4X29jdGVvbl9wZl9kZXZpY2VgIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIENhdml1bSBMaXF1aWRJTyBQRiBkcml2ZXIuIFRoaXMgZXJyb3IgcGF0aCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgUENJIHByb2JlIGZ1enppbmcgYnkgZW11bGF0aW5nIFBDSSBjb25maWcgc3BhY2UgcmVhZHMgKGUuZy4sIG1ha2luZyBgY24yM3h4X2dldF9wZl9udW1gIHJldHVybiBub24temVybykuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow7bn9b[1] Phase: Succeeded StartedAt: 2026-06-20 09:06:33 +0000 UTC FinishedAt: 2026-06-20 09:06:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-20 09:06:33 +0000 UTC FinishedAt: 2026-06-20 09:06:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[2] Phase: Succeeded StartedAt: 2026-06-20 09:06:33 +0000 UTC FinishedAt: 2026-06-20 09:55:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-20 09:06:33 +0000 UTC FinishedAt: 2026-06-20 09:55:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-20 09:06:33 +0000 UTC FinishedAt: 2026-06-20 09:06:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-20 09:06:33 +0000 UTC FinishedAt: 2026-06-20 09:06:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7bn9b/series-workflow7bn9b-convert-artifact-2151368784/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-20 09:06:43 +0000 UTC FinishedAt: 2026-06-20 09:27:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-20 09:06:43 +0000 UTC FinishedAt: 2026-06-20 09:27:30 +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:*ef3bfeab-9072-44ee-a8c9-216e30682561,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-workflow7bn9b/series-workflow7bn9b-convert-artifact-2151368784/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": "95018601-1673-4a8e-8bee-760bec213bd4", "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-workflow7bn9b/series-workflow7bn9b-build-action-3266197206/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-20 09:06:43 +0000 UTC FinishedAt: 2026-06-20 09:27:20 +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:*ef3bfeab-9072-44ee-a8c9-216e30682561,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-workflow7bn9b/series-workflow7bn9b-convert-artifact-2151368784/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": "95018601-1673-4a8e-8bee-760bec213bd4", "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-workflow7bn9b/series-workflow7bn9b-build-action-3266197206/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-20 09:27:30 +0000 UTC FinishedAt: 2026-06-20 09:27:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-20 09:27:30 +0000 UTC FinishedAt: 2026-06-20 09:27:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-20 09:27:30 +0000 UTC FinishedAt: 2026-06-20 09:27:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-20 09:27:30 +0000 UTC FinishedAt: 2026-06-20 09:27:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7bn9b/series-workflow7bn9b-convert-artifact-272822711/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-20 09:27:40 +0000 UTC FinishedAt: 2026-06-20 09:29:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-20 09:27:40 +0000 UTC FinishedAt: 2026-06-20 09:29:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*95018601-1673-4a8e-8bee-760bec213bd4,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-workflow7bn9b/series-workflow7bn9b-build-action-3266197206/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-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-20 09:29:27 +0000 UTC FinishedAt: 2026-06-20 09:29:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-20 09:29:27 +0000 UTC FinishedAt: 2026-06-20 09:29:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-20 09:29:27 +0000 UTC FinishedAt: 2026-06-20 09:50:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-20 09:29:27 +0000 UTC FinishedAt: 2026-06-20 09:50:30 +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:*ef3bfeab-9072-44ee-a8c9-216e30682561,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-workflow7bn9b/series-workflow7bn9b-convert-artifact-272822711/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": "10339ed6-3f56-4f37-b049-5e4b972556f6", "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-workflow7bn9b/series-workflow7bn9b-build-action-2041991547/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-20 09:29:27 +0000 UTC FinishedAt: 2026-06-20 09:50:20 +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:*ef3bfeab-9072-44ee-a8c9-216e30682561,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-workflow7bn9b/series-workflow7bn9b-convert-artifact-272822711/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": "10339ed6-3f56-4f37-b049-5e4b972556f6", "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-workflow7bn9b/series-workflow7bn9b-build-action-2041991547/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-20 09:50:30 +0000 UTC FinishedAt: 2026-06-20 09:50:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-20 09:50:30 +0000 UTC FinishedAt: 2026-06-20 09:50:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-20 09:50:30 +0000 UTC FinishedAt: 2026-06-20 09:52:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-20 09:50:30 +0000 UTC FinishedAt: 2026-06-20 09:52:10 +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:*10339ed6-3f56-4f37-b049-5e4b972556f6,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-workflow7bn9b/series-workflow7bn9b-build-action-2041991547/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-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-20 09:52:20 +0000 UTC FinishedAt: 2026-06-20 09:55:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-20 09:52:20 +0000 UTC FinishedAt: 2026-06-20 09:55:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"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:*95018601-1673-4a8e-8bee-760bec213bd4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*10339ed6-3f56-4f37-b049-5e4b972556f6,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-workflow7bn9b/series-workflow7bn9b-build-action-3266197206/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-workflow7bn9b/series-workflow7bn9b-build-action-2041991547/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-20 09:52:20 +0000 UTC FinishedAt: 2026-06-20 09:52:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-20 09:52:20 +0000 UTC FinishedAt: 2026-06-20 09:52:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"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-workflow7bn9b/series-workflow7bn9b-convert-artifact-4048311280/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-20 09:52:20 +0000 UTC FinishedAt: 2026-06-20 09:52:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-20 09:52:20 +0000 UTC FinishedAt: 2026-06-20 09:52:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-20 09:52:20 +0000 UTC FinishedAt: 2026-06-20 09:52:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-20 09:52:30 +0000 UTC FinishedAt: 2026-06-20 09:55:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bn9b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["setup_cn23xx_octeon_pf_device"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b85966adbf5de0668a815c6e3527f87e0c387fb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["LIQUIDIO"],"series_id":"b0afbc15-0e0c-44de-bffd-4f5b67e7f696","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-20 09:52:30 +0000 UTC FinishedAt: 2026-06-20 09:54:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*95018601-1673-4a8e-8bee-760bec213bd4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*10339ed6-3f56-4f37-b049-5e4b972556f6,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-workflow7bn9b/series-workflow7bn9b-build-action-3266197206/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-workflow7bn9b/series-workflow7bn9b-build-action-2041991547/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-workflow7bn9b/series-workflow7bn9b-convert-artifact-4048311280/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,}