Name: series-workflow58bwx Phase: Succeeded StartedAt: 2026-07-24 11:37:34 +0000 UTC FinishedAt: 2026-07-24 14:32:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[0] Phase: Succeeded StartedAt: 2026-07-24 11:37:34 +0000 UTC FinishedAt: 2026-07-24 12:26:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[0].run-triage Phase: Succeeded StartedAt: 2026-07-24 11:37:34 +0000 UTC FinishedAt: 2026-07-24 12:26:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "78f75d632f74b8de0f081a128588f7c37d0d1164", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CAN_CTUCANFD", "CAN_CTUCANFD_PCI", "CAN_CTUCANFD_PLATFORM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "78f75d632f74b8de0f081a128588f7c37d0d1164", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CAN_CTUCANFD", "CAN_CTUCANFD_PCI", "CAN_CTUCANFD_PLATFORM" ], "series_id": "2cedf19b-81d8-4e44-9fa4-c09defcb61f1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ctucan_interrupt" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI0IDEyOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NBTl9DVFVDQU5GRCYjMzQ7LAogICAgJiMzNDtDQU5fQ1RVQ0FORkRfUENJJiMzNDssCiAgICAmIzM0O0NBTl9DVFVDQU5GRF9QTEFURk9STSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2N0dWNhbl9pbnRlcnJ1cHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGludGVycnVwdCBoYW5kbGVyIG9mIHRoZSBDVFUgQ0FOIEZEIGRyaXZlciB0byBoYW5kbGUgdGhlIEJ1cyBFcnJvciBJbnRlcnJ1cHQgKEJFSSkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBQQ0kgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMjoyNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDZkZTI4ZTFkN2RmZWJhNDBjYzk5MGU2Mjg3ZDQxNjIwZjVmNGQyYjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAxMjoyNDoyMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jIGIvZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuY1xuaW5kZXggMGVhMWZmMjhkZmNlOGIuLjBjZDJkNDI4YzFmMTU4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuY1xuQEAgLTExMzYsOCAmIzQzOzExMzYsMTIgQEAgc3RhdGljIGlycXJldHVybl90IGN0dWNhbl9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuIFx0XHQvKiBFcnJvciBpbnRlcnJ1cHRzICovXG4gXHRcdGlmIChGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX0VXTEksIGlzcikgfHxcbiBcdFx0ICAgIEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfRkNTSSwgaXNyKSB8fFxuLVx0XHQgICAgRklFTERfR0VUKFJFR19JTlRfU1RBVF9BTEksIGlzcikpIHtcbi1cdFx0XHRpY3IgPSBpc3IgXHUwMDI2IChSRUdfSU5UX1NUQVRfRVdMSSB8IFJFR19JTlRfU1RBVF9GQ1NJIHwgUkVHX0lOVF9TVEFUX0FMSSk7XG4mIzQzO1x0XHQgICAgRklFTERfR0VUKFJFR19JTlRfU1RBVF9BTEksIGlzcikgfHxcbiYjNDM7XHRcdCAgICBGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX0JFSSwgaXNyKSkge1xuJiM0MztcdFx0XHRpY3IgPSBpc3IgXHUwMDI2IChSRUdfSU5UX1NUQVRfRVdMSSB8XG4mIzQzO1x0XHRcdFx0ICAgICBSRUdfSU5UX1NUQVRfRkNTSSB8XG4mIzQzO1x0XHRcdFx0ICAgICBSRUdfSU5UX1NUQVRfQUxJIHxcbiYjNDM7XHRcdFx0XHQgICAgIFJFR19JTlRfU1RBVF9CRUkpO1xuIFxuIFx0XHRcdGN0dWNhbl9uZXRkZXZfZGJnKG5kZXYsIFwmIzM0O3NvbWUgRVJSIGludGVycnVwdDogY2xlYXJpbmcgMHglMDh4XFxuXCYjMzQ7LCBpY3IpO1xuIFx0XHRcdGN0dWNhbl93cml0ZTMyKHByaXYsIENUVUNBTkZEX0lOVF9TVEFULCBpY3IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDEyOjI0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDQU5fQ1RVQ0FORkQmIzM0OywKICAgICYjMzQ7Q0FOX0NUVUNBTkZEX1BDSSYjMzQ7LAogICAgJiMzNDtDQU5fQ1RVQ0FORkRfUExBVEZPUk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjdHVjYW5faW50ZXJydXB0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBvZiB0aGUgQ1RVIENBTiBGRCBkcml2ZXIgdG8gaGFuZGxlIHRoZSBCdXMgRXJyb3IgSW50ZXJydXB0IChCRUkpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgUENJIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDZkZTI4ZTFkN2RmZWJhNDBjYzk5MGU2Mjg3ZDQxNjIwZjVmNGQyYjkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAyNCAxMjoyNDoyMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmMgYi9kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jCmluZGV4IDBlYTFmZjI4ZGZjZThiLi4wY2QyZDQyOGMxZjE1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jCkBAIC0xMTM2LDggJiM0MzsxMTM2LDEyIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBjdHVjYW5faW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pZCkKIAkJLyogRXJyb3IgaW50ZXJydXB0cyAqLwogCQlpZiAoRklFTERfR0VUKFJFR19JTlRfU1RBVF9FV0xJLCBpc3IpIHx8CiAJCSAgICBGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX0ZDU0ksIGlzcikgfHwKLQkJICAgIEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfQUxJLCBpc3IpKSB7Ci0JCQlpY3IgPSBpc3IgJmFtcDsgKFJFR19JTlRfU1RBVF9FV0xJIHwgUkVHX0lOVF9TVEFUX0ZDU0kgfCBSRUdfSU5UX1NUQVRfQUxJKTsKJiM0MzsJCSAgICBGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX0FMSSwgaXNyKSB8fAomIzQzOwkJICAgIEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfQkVJLCBpc3IpKSB7CiYjNDM7CQkJaWNyID0gaXNyICZhbXA7IChSRUdfSU5UX1NUQVRfRVdMSSB8CiYjNDM7CQkJCSAgICAgUkVHX0lOVF9TVEFUX0ZDU0kgfAomIzQzOwkJCQkgICAgIFJFR19JTlRfU1RBVF9BTEkgfAomIzQzOwkJCQkgICAgIFJFR19JTlRfU1RBVF9CRUkpOwogCiAJCQljdHVjYW5fbmV0ZGV2X2RiZyhuZGV2LCAmIzM0O3NvbWUgRVJSIGludGVycnVwdDogY2xlYXJpbmcgMHglMDh4XG4mIzM0OywgaWNyKTsKIAkJCWN0dWNhbl93cml0ZTMyKHByaXYsIENUVUNBTkZEX0lOVF9TVEFULCBpY3IpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTE3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENBTiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jYC4gSXQmIzM5O3MgYWRkaW5nIGBSRUdfSU5UX1NUQVRfQkVJYCB0byB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIHdpdGhpbiB0aGUgYGN0dWNhbl9pbnRlcnJ1cHRgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7Q2FuIHdlIGFjdHVhbGx5IHRlc3QgdGhpcywgYW5kIGlzIHRoaXMgZXZlbiBhIHJlbGV2YW50IGNoYW5nZT8mIzM0OyBUaGlzIGlzIGEgQ0FOIGRyaXZlciwgc28gbXkgbWluZCBpbW1lZGlhdGVseSBnb2VzIHRvIGZ1enppbmcuIENBTiBkcml2ZXJzIGFyZSBvZnRlbiB2dWxuZXJhYmxlIGlmIHRoZXJlJiMzOTtzIGEgdmlydHVhbCBDQU4gc2V0dXAgb3IgYSB3YXkgdG8gdHJpZ2dlciBldmVudHMuIEJ1dCwgaG9sZCBvbuKApiBgY3R1Y2FuZmRgIHNwZWNpZmljYWxseSwgdGhhdOKAmXMgYSAqaGFyZHdhcmUqIENBTiBkcml2ZXIuIFRoYXQgcmFpc2VzIGEgc2lnbmlmaWNhbnQgcXVlc3Rpb246IGNhbiB3ZSBldmVuICpyZWFjaCogdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB3aGljaCBpcyB3aGVyZSBhIGxvdCBvZiBvdXIgdGVzdGluZyBpcyBkb25lPyBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhpcyBkcml2ZXIgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGFuZCBhbnkgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIGJlIGNoZWNraW5nIGBkcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZ2AgdG8gc2VlIHdoYXQgSSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjdHVjYW5mZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnPTE9Y29uZmlnIENBTl9DVFVDQU5GRFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnLTUtXHQgIE1vcmUgZG9jdW1lbnRhdGlvbiBhbmQgY29yZSBzb3VyY2VzIGF0IHByb2plY3QgcGFnZVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWc6NjpcdCAgKGh0dHBzOi8vZ2l0bGFiLmZlbC5jdnV0LmN6L2NhbmJ1cy9jdHVjYW5mZF9pcF9jb3JlKS5cbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnLTctXHQgIFRoZSBjb3JlIGludGVncmF0aW9uIHRvIFhpbGlueCBaeW5xIHN5c3RlbSBhcyBwbGF0Zm9ybSBkcml2ZXJcbi0tXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZy05LVx0ICBJbXBsZW1lbnRhdGlvbiBvbiBJbnRlbCBGUEdBLWJhc2VkIFBDSSBFeHByZXNzIGJvYXJkIGlzIGF2YWlsYWJsZVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWc6MTA6XHQgIGZyb20gcHJvamVjdCAoaHR0cHM6Ly9naXRsYWIuZmVsLmN2dXQuY3ovY2FuYnVzL3BjaWUtY3R1Y2FuZmQpIGFuZFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWc6MTE6XHQgIG9uIEludGVsIFNvQyBmcm9tIHByb2plY3QgKGh0dHBzOi8vZ2l0bGFiLmZlbC5jdnV0LmN6L2NhbmJ1cy9pbnRlbC1zb2MtY3R1Y2FuZmQpLlxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMTItXHQgIEd1aWRlcG9zdCBDVFUgRkVFIENBTiBidXMgcHJvamVjdHMgcGFnZSBodHRwczovL2NhbmJ1cy5wYWdlcy5mZWwuY3Z1dC5jei8gLlxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnPTE0PWNvbmZpZyBDQU5fQ1RVQ0FORkRfUENJXG4tLVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMjEtXHQgIFBDSWUgYm9hcmQgd2l0aCBQaUtST04uY29tIGRlc2lnbmVkIHRyYW5zY2VpdmVyIHJpc2VyIHNoaWVsZCBpcyBhdmFpbGFibGVcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnOjIyOlx0ICBhdCBodHRwczovL2dpdGxhYi5mZWwuY3Z1dC5jei9jYW5idXMvcGNpZS1jdHVjYW5mZCAuXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZy0yMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTY3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIENUVSBDQU4gRkQgSVAgQ29yZSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgaGFyZHdhcmUgQ0FOIGRyaXZlciBmb3IgdGhlIENUVSBDQU4gRkQgSVAgY29yZS4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpbiBteSBtaW5kIGlzLCBjYW4gSSBlZmZlY3RpdmVseSBmdXp6IHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSSYjMzk7bSBnZW5lcmFsbHkgd2FyeSBvZiBoYXJkd2FyZSBkcml2ZXJzIHRoYXQgYXJlbiYjMzk7dCBlbXVsYXRlZCBvciB2aXJ0dWFsaXplZCwgYmVjYXVzZSwgbGV0JiMzOTtzIGZhY2UgaXQsIHRoZXkmIzM5O3JlIHVzdWFsbHkgdW5yZWFjaGFibGUgaW4gdGhlIHR5cGljYWwgc2V0dXAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGEgUENJIGRyaXZlciBhc3NvY2lhdGVkIHdpdGggaXQuIEFoYSwgeWVzISBUaGVyZSYjMzk7cyBgQ0FOX0NUVUNBTkZEX1BDSWAuIFRoaXMgaXMgcHJvbWlzaW5nLiBTeXprYWxsZXIsIHdpdGggaXRzIHZpcnR1YWwgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzIOKAkyB0aGluayBgc3l6X3BjaV9kZXZpY2VfYWRkYCBhbmQgc2ltaWxhciBhcHByb2FjaGVzLCBvciBzaW1wbHkgdGhlIGdlbmVyYWwgUENJIGZ1enppbmcgaWYgZW5hYmxlZCDigJMgY291bGQgYmUgYSB2aWFibGUgcGF0aC4gU28sIGxldCYjMzk7cyBjb25maXJtIHRoZSBleGlzdGVuY2UgYW5kIHBvdGVudGlhbCBvZiB0aGlzIFBDSSBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jPTI2ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgY3R1Y2FuX3BjaV90YmxbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfcGNpLmMtMjY5LVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jOjI3MDpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgY3R1Y2FuX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfcGNpLmMtMjcxLVx0Lm5hbWUgPSBLQlVJTERfTU9ETkFNRSxcbi0tXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfcGNpLmMtMjc3LVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jOjI3ODptb2R1bGVfcGNpX2RyaXZlcihjdHVjYW5fcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfcGNpLmMtMjc5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDEyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NzUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQQ0kgRnV6emluZyB3aXRoIFN5emthbGxlcjogRW5hYmxpbmcgQ0FOLUNUVUNBTkZEKioKCk9rYXksIHNvIHRoZXJlICppcyogYSBQQ0kgZHJpdmVyIGluIHBsYXkgaGVyZSDigJMgZ29vZCB0byBrbm93LiBBbmQgdGhlIGdvb2QgbmV3cyBpcywgc3l6a2FsbGVyICpjYW4qIGhhbmRsZSBQQ0kgZGV2aWNlIGZ1enppbmcuIEkgcmVjYWxsIHRoYXQgaXQmIzM5O3Mgc2V0IHVwIHRvIHNpbXVsYXRlIFBDSSBkZXZpY2VzIHRvIGRvIHRoaXMuCgpUaGF0IHRyaWdnZXJzIHNvbWV0aGluZzogIGdpdmVuIHRoYXQgd2UgaGF2ZSBQQ0kgY2FwYWJpbGl0eSB3aXRoIHN5emthbGxlciwgd2UgcmVhbGx5IG5lZWQgdG8gZ2V0IGBDQU5fQ1RVQ0FORkRfUENJYCBlbmFibGVkLCBhbmQgb2YgY291cnNlIGBDQU5fQ1RVQ0FORkRgIG5lZWRzIHRvIGJlIHRoZXJlLCB0b28uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlaXIgS2NvbmZpZyBlbnRyaWVzIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIGV2ZXJ5dGhpbmcgaXMgYXMgaXQgc2hvdWxkIGJlLiBMZXQmIzM5O3MgbG9vayBhdCB0aGUgY29uZmlnIG9wdGlvbnMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHRjb25maWcgQ0FOX0NUVUNBTkZEXG4gICAyOlx0XHR0cmlzdGF0ZSBcJiMzNDtDVFUgQ0FOLUZEIElQIGNvcmVcJiMzNDsgaWYgQ09NUElMRV9URVNUXG4gICAzOlx0XHRoZWxwXG4gICA0Olx0XHQgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgdGhlIENUVSBDQU4gRkQgb3Blbi1zb3VyY2UgSVAgY29yZS5cbiAgIDU6XHRcdCAgTW9yZSBkb2N1bWVudGF0aW9uIGFuZCBjb3JlIHNvdXJjZXMgYXQgcHJvamVjdCBwYWdlXG4gICA2Olx0XHQgIChodHRwczovL2dpdGxhYi5mZWwuY3Z1dC5jei9jYW5idXMvY3R1Y2FuZmRfaXBfY29yZSkuXG4gICA3Olx0XHQgIFRoZSBjb3JlIGludGVncmF0aW9uIHRvIFhpbGlueCBaeW5xIHN5c3RlbSBhcyBwbGF0Zm9ybSBkcml2ZXJcbiAgIDg6XHRcdCAgaXMgYXZhaWxhYmxlIChodHRwczovL2dpdGxhYi5mZWwuY3Z1dC5jei9jYW5idXMvenlucS96eW5xLWNhbi1zamExMDAwLXRvcCkuXG4gICA5Olx0XHQgIEltcGxlbWVudGF0aW9uIG9uIEludGVsIEZQR0EtYmFzZWQgUENJIEV4cHJlc3MgYm9hcmQgaXMgYXZhaWxhYmxlXG4gIDEwOlx0XHQgIGZyb20gcHJvamVjdCAoaHR0cHM6Ly9naXRsYWIuZmVsLmN2dXQuY3ovY2FuYnVzL3BjaWUtY3R1Y2FuZmQpIGFuZFxuICAxMTpcdFx0ICBvbiBJbnRlbCBTb0MgZnJvbSBwcm9qZWN0IChodHRwczovL2dpdGxhYi5mZWwuY3Z1dC5jei9jYW5idXMvaW50ZWwtc29jLWN0dWNhbmZkKS5cbiAgMTI6XHRcdCAgR3VpZGVwb3N0IENUVSBGRUUgQ0FOIGJ1cyBwcm9qZWN0cyBwYWdlIGh0dHBzOi8vY2FuYnVzLnBhZ2VzLmZlbC5jdnV0LmN6LyAuXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIENBTl9DVFVDQU5GRF9QQ0lcbiAgMTU6XHRcdHRyaXN0YXRlIFwmIzM0O0NUVSBDQU4tRkQgSVAgY29yZSBQQ0kvUENJZSBkcml2ZXJcJiMzNDtcbiAgMTY6XHRcdGRlcGVuZHMgb24gUENJXG4gIDE3Olx0XHRzZWxlY3QgQ0FOX0NUVUNBTkZEXG4gIDE4Olx0XHRoZWxwXG4gIDE5Olx0XHQgIFRoaXMgZHJpdmVyIGFkZHMgUENJL1BDSWUgc3VwcG9ydCBmb3IgQ1RVIENBTi1GRCBJUCBjb3JlLlxuICAyMDpcdFx0ICBUaGUgcHJvamVjdCBwcm92aWRpbmcgRlBHQSBkZXNpZ24gZm9yIEludGVsIEVQNENHWDE1IGJhc2VkIERCNENHWDE1XG4gIDIxOlx0XHQgIFBDSWUgYm9hcmQgd2l0aCBQaUtST04uY29tIGRlc2lnbmVkIHRyYW5zY2VpdmVyIHJpc2VyIHNoaWVsZCBpcyBhdmFpbGFibGVcbiAgMjI6XHRcdCAgYXQgaHR0cHM6Ly9naXRsYWIuZmVsLmN2dXQuY3ovY2FuYnVzL3BjaWUtY3R1Y2FuZmQgLlxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBDQU5fQ1RVQ0FORkRfUExBVEZPUk1cbiAgMjU6XHRcdHRyaXN0YXRlIFwmIzM0O0NUVSBDQU4tRkQgSVAgY29yZSBwbGF0Zm9ybSAoRlBHQSwgU29DKSBkcml2ZXJcJiMzNDtcbiAgMjY6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBPRlxuICAyNzpcdFx0c2VsZWN0IENBTl9DVFVDQU5GRFxuICAyODpcdFx0aGVscFxuICAyOTpcdFx0ICBUaGUgY29yZSBoYXMgYmVlbiB0ZXN0ZWQgdG9nZXRoZXIgd2l0aCBPcGVuQ29yZXMgU0pBMTAwMFxuICAzMDpcdFx0ICBtb2RpZmllZCB0byBiZSBDQU4gRkQgZnJhbWVzIHRvbGVyYW50IG9uIE1pY3JvWmVkIFp5bnEgYmFzZWRcbiAgMzE6XHRcdCAgTVpfQVBPIGVkdWNhdGlvbiBraXRzIGRlc2lnbmVkIGJ5IFBldHIgUG9yYXppbCBmcm9tIFBpS1JPTi5jb21cbiAgMzI6XHRcdCAgY29tcGFueS4gRlBHQSBkZXNpZ24gaHR0cHM6Ly9naXRsYWIuZmVsLmN2dXQuY3ovY2FuYnVzL3p5bnEvenlucS1jYW4tc2phMTAwMC10b3AuXG4gIDMzOlx0XHQgIFRoZSBraXQgZGVzY3JpcHRpb24gYXQgdGhlIENvbXB1dGVyIEFyY2hpdGVjdHVyZXMgY291cnNlIHBhZ2VzXG4gIDM0Olx0XHQgIGh0dHBzOi8vY3cuZmVsLmN2dXQuY3ovd2lraS9jb3Vyc2VzL2IzNWFwby9kb2N1bWVudGF0aW9uL216X2Fwby9zdGFydCAuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU3OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnRlcnJ1cHQgSGFuZGxlciBJbnZlc3RpZ2F0aW9uKioKCkFscmlnaHQsIGl0IGxvb2tzIGxpa2UgYENBTl9DVFVDQU5GRF9QQ0lgIGlzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0JiMzOTtzIHRyaWdnZXJpbmcgdGhlIGluY2x1c2lvbiBvZiBgQ0FOX0NUVUNBTkZEYC4gVGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IGZvY3VzIGlzIG5vdyBvbiB0aGUgYGN0dWNhbl9pbnRlcnJ1cHRgIGZ1bmN0aW9uLCB3aGljaCByZXNpZGVzIHdpdGhpbiBgZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gd2hldGhlciBgY3R1Y2FuX2ludGVycnVwdGAgaXMgaW5kZWVkIHRoZSBwcmltYXJ5IGludGVycnVwdCBoYW5kbGVyIGZvciB0aGlzIENBTiBjb250cm9sbGVyLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYXNzdW1wdGlvbiBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIGFueSBkZWVwZXIgYW5hbHlzaXMuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgZmxvdyB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjdHVjYW5faW50ZXJydXB0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jPTk5NT1zdGF0aWMgdm9pZCBjdHVjYW5fdHhfaW50ZXJydXB0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmMtMTA5MS0vKipcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmM6MTA5MjogKiBjdHVjYW5faW50ZXJydXB0KCkgLSBDQU4gSXNyXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jLTEwOTMtICogQGlycTpcdGlycSBudW1iZXJcbi0tXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jLTExMDEtICovXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jOjExMDI6c3RhdGljIGlycXJldHVybl90IGN0dWNhbl9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuYy0xMTAzLXtcbi0tXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jPTEyMDQ9c3RhdGljIGludCBjdHVjYW5fb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jLTEyMjctXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jOjEyMjg6XHRyZXQgPSByZXF1ZXN0X2lycShuZGV2LVx1MDAzZWlycSwgY3R1Y2FuX2ludGVycnVwdCwgcHJpdi1cdTAwM2VpcnFfZmxhZ3MsIG5kZXYtXHUwMDNlbmFtZSwgbmRldik7XG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jLTEyMjktXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDEyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNjUKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYGN0dWNhbl9pbnRlcnJ1cHRgIEhhbmRsZXIqKgoKT2theSwgc28gYGN0dWNhbl9pbnRlcnJ1cHRgIGlzIHRoZSBjZW50cmFsIGludGVycnVwdCBoYW5kbGVyLCB0aGF0IG11Y2ggaXMgY2xlYXIuIFRoZSBxdWVzdGlvbiBub3cgaXMgd2hldGhlciBpdCYjMzk7cyBmdXp6YWJsZS4gU3l6a2FsbGVyIGlzIHRoZSBvYnZpb3VzIHRvb2wsIGVzcGVjaWFsbHkgc2luY2UgaXQgY2FuIGZ1enogUENJIGRldmljZXMsIHdoaWNoIG9mdGVuIGludm9sdmVzIGluamVjdGluZyBpbnRlcnJ1cHRzLiBCdXQgd2FpdCwgZG9lcyBTeXprYWxsZXIgYWN0dWFsbHkgaW5qZWN0IGludGVycnVwdHMgaW50byBQQ0kgZGV2aWNlcyBkaXJlY3RseT8gSSBrbm93IGl0ICpzdXBwb3J0cyogUENJIGZ1enppbmcsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSBpZiB0aGF0IGluY2x1ZGVzIGludGVycnVwdCBpbmplY3Rpb24uIElmIGl0JiMzOTtzIGEgUENJIGRyaXZlciwgdGhlbiBpdCBzaG91bGQgYmUgcmVhY2hhYmxlIGJ5IHN5emthbGxlciBvbmUgd2F5IG9yIGFub3RoZXIuCgpMZXQmIzM5O3Mgc2VlLCB0aGlzIHBhdGNoIHNwZWNpZmljYWxseSBhZGRzIGBSRUdfSU5UX1NUQVRfQkVJYCB0byB0aGUgZXJyb3IgaW50ZXJydXB0cyBoYW5kbGVkIGluIGBjdHVjYW5faW50ZXJydXB0YC4gSG1tbSwgaXMgdGhpcyBlbm91Z2ggb2YgYSBjaGFuZ2UgdG8gd2FycmFudCBmdXp6aW5nPyBJdCAqaXMqIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgZHJpdmVyLCBzbyB0aGUgYW5zd2VyIGlzIHByb2JhYmx5IHllcy4KClNpbmNlIGBjdHVjYW5faW50ZXJydXB0YCBpcyB0aGUgaW50ZXJydXB0IGhhbmRsZXIsIEkgc2hvdWxkIGxvb2sgYXQgYGN0dWNhbl9lcnJfaW50ZXJydXB0YCBvciBhbnkgc2ltaWxhcmx5IG5hbWVkIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGN0dWNhbl9pbnRlcnJ1cHRgLCBzbyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBmb2N1cyBuZWVkcyB0byBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTEyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMTIwOlx0XHRcdFx0LyogTWFzayBSWEJORUkgdGhlIGZpcnN0LCB0aGVuIGNsZWFyIGludGVycnVwdCBhbmQgc2NoZWR1bGUgTkFQSS4gRXZlbiBpZlxuMTEyMTpcdFx0XHRcdCAqIGFub3RoZXIgSVJRIGZpcmVzLCBSQk5FSSB3aWxsIGFsd2F5cyBiZSAwIChtYXNrZWQpLlxuMTEyMjpcdFx0XHRcdCAqL1xuMTEyMzpcdFx0XHRcdGljciA9IFJFR19JTlRfU1RBVF9SQk5FSTtcbjExMjQ6XHRcdFx0XHRjdHVjYW5fd3JpdGUzMihwcml2LCBDVFVDQU5GRF9JTlRfTUFTS19TRVQsIGljcik7XG4xMTI1Olx0XHRcdFx0Y3R1Y2FuX3dyaXRlMzIocHJpdiwgQ1RVQ0FORkRfSU5UX1NUQVQsIGljcik7XG4xMTI2Olx0XHRcdFx0bmFwaV9zY2hlZHVsZShcdTAwMjZwcml2LVx1MDAzZW5hcGkpO1xuMTEyNzpcdFx0XHR9XG4xMTI4Olx0XG4xMTI5Olx0XHRcdC8qIFRYVCBCdWZmZXIgSFcgQ29tbWFuZCBJbnRlcnJ1cHQgKi9cbjExMzA6XHRcdFx0aWYgKEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfVFhCSENJLCBpc3IpKSB7XG4xMTMxOlx0XHRcdFx0Y3R1Y2FuX25ldGRldl9kYmcobmRldiwgXCYjMzQ7VFhCSENJXFxuXCYjMzQ7KTtcbjExMzI6XHRcdFx0XHQvKiBDbGVhcmVkIGluc2lkZSAqL1xuMTEzMzpcdFx0XHRcdGN0dWNhbl90eF9pbnRlcnJ1cHQobmRldik7XG4xMTM0Olx0XHRcdH1cbjExMzU6XHRcbjExMzY6XHRcdFx0LyogRXJyb3IgaW50ZXJydXB0cyAqL1xuMTEzNzpcdFx0XHRpZiAoRklFTERfR0VUKFJFR19JTlRfU1RBVF9FV0xJLCBpc3IpIHx8XG4xMTM4Olx0XHRcdCAgICBGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX0ZDU0ksIGlzcikgfHxcbjExMzk6XHRcdFx0ICAgIEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfQUxJLCBpc3IpIHx8XG4xMTQwOlx0XHRcdCAgICBGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX0JFSSwgaXNyKSkge1xuMTE0MTpcdFx0XHRcdGljciA9IGlzciBcdTAwMjYgKFJFR19JTlRfU1RBVF9FV0xJIHxcbjExNDI6XHRcdFx0XHRcdCAgICAgUkVHX0lOVF9TVEFUX0ZDU0kgfFxuMTE0MzpcdFx0XHRcdFx0ICAgICBSRUdfSU5UX1NUQVRfQUxJIHxcbjExNDQ6XHRcdFx0XHRcdCAgICAgUkVHX0lOVF9TVEFUX0JFSSk7XG4xMTQ1Olx0XG4xMTQ2Olx0XHRcdFx0Y3R1Y2FuX25ldGRldl9kYmcobmRldiwgXCYjMzQ7c29tZSBFUlIgaW50ZXJydXB0OiBjbGVhcmluZyAweCUwOHhcXG5cJiMzNDssIGljcik7XG4xMTQ3Olx0XHRcdFx0Y3R1Y2FuX3dyaXRlMzIocHJpdiwgQ1RVQ0FORkRfSU5UX1NUQVQsIGljcik7XG4xMTQ4Olx0XHRcdFx0Y3R1Y2FuX2Vycl9pbnRlcnJ1cHQobmRldiwgaXNyKTtcbjExNDk6XHRcdFx0fVxuMTE1MDpcdFx0XHQvKiBJZ25vcmUgUkksIFRJLCBMRkksIFJGSSwgQlNJICovXG4xMTUxOlx0XHR9XG4xMTUyOlx0XG4xMTUzOlx0XHRuZXRkZXZfZXJyKG5kZXYsIFwmIzM0OyVzOiBzdHVjayBpbnRlcnJ1cHQgKGlzcj0weCUwOHgpLCBzdG9wcGluZ1xcblwmIzM0OywgX19mdW5jX18sIGlzcik7XG4xMTU0Olx0XG4xMTU1Olx0XHRpZiAoRklFTERfR0VUKFJFR19JTlRfU1RBVF9UWEJIQ0ksIGlzcikpIHtcbjExNTY6XHRcdFx0aW50IGk7XG4xMTU3Olx0XG4xMTU4Olx0XHRcdG5ldGRldl9lcnIobmRldiwgXCYjMzQ7dHhiX2hlYWQ9MHglMDh4IHR4Yl90YWlsPTB4JTA4eFxcblwmIzM0OyxcbjExNTk6XHRcdFx0XHQgICBwcml2LVx1MDAzZXR4Yl9oZWFkLCBwcml2LVx1MDAzZXR4Yl90YWlsKTtcbjExNjA6XHRcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcHJpdi1cdTAwM2VudHhidWZzOyBpJiM0MzsmIzQzOykge1xuMTE2MTpcdFx0XHRcdHUzMiBzdGF0dXMgPSBjdHVjYW5fZ2V0X3R4X3N0YXR1cyhwcml2LCBpKTtcbjExNjI6XHRcbjExNjM6XHRcdFx0XHRuZXRkZXZfZXJyKG5kZXYsIFwmIzM0O3R4YlslZF0gdHhiIHN0YXR1cz0weCUwOHhcXG5cJiMzNDssIGksIHN0YXR1cyk7XG4xMTY0Olx0XHRcdH1cbjExNjU6XHRcdH1cbjExNjY6XHRcbjExNjc6XHRcdGltYXNrID0gMHhmZmZmZmZmZjtcbjExNjg6XHRcdGN0dWNhbl93cml0ZTMyKHByaXYsIENUVUNBTkZEX0lOVF9FTkFfQ0xSLCBpbWFzayk7XG4xMTY5Olx0XHRjdHVjYW5fd3JpdGUzMihwcml2LCBDVFVDQU5GRF9JTlRfTUFTS19TRVQsIGltYXNrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjcyNwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENUVUNBTiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBSRUdfSU5UX1NUQVRfQkVJYCBpbnRvIHRoZSBlcnJvciBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIHRoZSBgY3R1Y2FuX2ludGVycnVwdGAgZnVuY3Rpb24uIFRoYXQmIzM5O3MgYSBkaXJlY3QgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGRyaXZlciYjMzk7cyBpbnRlcnJ1cHQgaGFuZGxlciDigJMgc3BlY2lmaWNhbGx5IGBjdHVjYW5faW50ZXJydXB0YC4gSSBuZWVkIHRvIGZvY3VzIG9uIGJvdGggYGN0dWNhbl9pbnRlcnJ1cHRgIGFuZCwgdG8gYSBsZXNzZXIgZXh0ZW50LCBgY3R1Y2FuX2Vycl9pbnRlcnJ1cHRgLgoKVGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYENBTl9DVFVDQU5GRGAgYW5kLCBpbXBvcnRhbnRseSwgZWl0aGVyIG9yIGJvdGggb2YgYENBTl9DVFVDQU5GRF9QQ0lgIGFuZCBgQ0FOX0NUVUNBTkZEX1BMQVRGT1JNYC4gSSBuZWVkIHRvIGNsYXJpZnkgaWYgYENBTl9DVFVDQU5GRF9QQ0lgIGlzIHRoZSAqb25seSogcGF0aCB0byB0aGlzLiBOb3BlLCBgQ0FOX0NUVUNBTkZEX1BMQVRGT1JNYCBpcyBhbiBvcHRpb24gYXMgd2VsbC4gV2UgY2FuIGhhdmUgYm90aCBlbmFibGVkLCB3aGljaCBpcyBnb29kIHRvIGtlZXAgaW4gbWluZCBmb3IgdGVzdGluZy4KCk5vdywgYSBxdWljayBjaGVjazogaXMgYGN0dWNhbl9lcnJfaW50ZXJydXB0YCBiZWluZyBkaXJlY3RseSBtb2RpZmllZCwgb3IgaXMgaXQganVzdCBiZWluZyAqY2FsbGVkKj8gTG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIGlzb2xhdGVkIHdpdGhpbiBgY3R1Y2FuX2ludGVycnVwdGAsIHdpdGggYGN0dWNhbl9lcnJfaW50ZXJydXB0YCBiZWluZyBhIGNhbGwgZnJvbSBgY3R1Y2FuX2ludGVycnVwdGAuCgpJcyB0aGlzIGZ1enphYmxlPyBBYnNvbHV0ZWx5LiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHdpdGhpbiBhIGRyaXZlci4gVGhlIHJlYWwgcXVlc3Rpb24gaXM6IGNhbiBzeXprYWxsZXIgKmFjdHVhbGx5KiByZWFjaCB0aGlzIGNvZGUgcGF0aD8gVGhlIGFuc3dlciBpcyB5ZXMsIGdpdmVuIGl0IGNhbiBzaW11bGF0ZSBQQ0kgZGV2aWNlcyBhbmQgaW5qZWN0IGludGVycnVwdHMuIFRoaXMgbWVhbnMgd2Ugc2hvdWxkIGJlIGFibGUgdG8gdHJpZ2dlciB0aGlzIGNoYW5nZSB0aHJvdWdoIGZ1enppbmcuCgpMZXQmIzM5O3MganVzdCBkb3VibGUtY2hlY2sgdGhvc2UgY29uZmlnIG9wdGlvbnMgb25lIG1vcmUgdGltZSB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDEyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NBTl9DVFVDQU5GRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWc6MTpjb25maWcgQ0FOX0NUVUNBTkZEXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZy0yLVx0dHJpc3RhdGUgXCYjMzQ7Q1RVIENBTi1GRCBJUCBjb3JlXCYjMzQ7IGlmIENPTVBJTEVfVEVTVFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWc6MTQ6Y29uZmlnIENBTl9DVFVDQU5GRF9QQ0lcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7Q1RVIENBTi1GRCBJUCBjb3JlIFBDSS9QQ0llIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMTYtXHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWc6MTc6XHRzZWxlY3QgQ0FOX0NUVUNBTkZEXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZy0xOC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZy0yMy1cbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnOjI0OmNvbmZpZyBDQU5fQ1RVQ0FORkRfUExBVEZPUk1cbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnLTI1LVx0dHJpc3RhdGUgXCYjMzQ7Q1RVIENBTi1GRCBJUCBjb3JlIHBsYXRmb3JtIChGUEdBLCBTb0MpIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMjYtXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgT0ZcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnOjI3Olx0c2VsZWN0IENBTl9DVFVDQU5GRFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMjgtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfQ0FOX0NUVUNBTkZEKSA6PSBjdHVjYW5mZC5vXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvTWFrZWZpbGUtNy1jdHVjYW5mZC15IDo9IGN0dWNhbmZkX2Jhc2Uub1xuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL01ha2VmaWxlLTgtXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQ0FOX0NUVUNBTkZEX1BDSSkgJiM0Mzs9IGN0dWNhbmZkX3BjaS5vXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0NBTl9DVFVDQU5GRF9QTEFURk9STSkgJiM0Mzs9IGN0dWNhbmZkX3BsYXRmb3JtLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk0MgoJCQkJCQkJb3V0cHV0OiAxMDkKCQkJCQkJCXRob3VnaHRzOiAzNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDVFVDQU5GRCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgQ1RVQ0FORkQgZHJpdmVyIGFuZCB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGNvbmZpcm0gYXJlIHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlndXJhdGlvbnMuIEkgc2VlIHRoYXQgYENBTl9DVFVDQU5GRGAsIGBDQU5fQ1RVQ0FORkRfUENJYCwgYW5kIGBDQU5fQ1RVQ0FORkRfUExBVEZPUk1gIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyB0byBldmVuIG1hdHRlci4gIEFuZCBpdCBzZWVtcyB0aGUgY3JpdGljYWwgc3ltYm9sIHRoYXQgdGhpcyBwYXRjaCB0b3VjaGVzIGlzIGBjdHVjYW5faW50ZXJydXB0YC4KCk5vdywgZGlnZ2luZyBpbnRvIHRoZSBwYXRjaCBpdHNlbGYuLi4gd293LCB0aGlzIGlzIGluY3JlZGlibHkgc3RyYWlnaHRmb3J3YXJkLiBJdCYjMzk7cyByZWFsbHkganVzdCBhIG1pbm9yIGFkZGl0aW9uIHRvIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgbG9naWMgaW4gYGN0dWNhbl9pbnRlcnJ1cHRgLiBTcGVjaWZpY2FsbHksIGl0IGFkZHMgdGhlIGhhbmRsaW5nIGZvciBgUkVHX0lOVF9TVEFUX0JFSWAsIHdoaWNoIHNlZW1zIHRvIGJlIGEgJiMzNDtCdXMgRXJyb3IgSW50ZXJydXB0JiMzNDsuICBJdCYjMzk7cyBzaW1wbHkgaW5jbHVkZWQgaW4gdGhlIGVycm9yIGludGVycnVwdCBtYXNrIHdpdGhpbiB0aGUgYGlmYCBzdGF0ZW1lbnQuIEFuZCB0aGUgYml0IGlzIGNsZWFyZWQgaW4gdGhlIGZvbGxvd2luZyB3cml0ZSwgYWZ0ZXIgbG9nZ2luZyB0aGUgZXJyb3IuIFRoaXMgaXMgYWJzb2x1dGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZS4gIEl04oCZcyBhZGRpbmcgYnVzIGVycm9yIGRldGVjdGlvbi4KCkkmIzM5O2QgY2xhc3NpZnkgdGhpcyBjaGFuZ2UgYXMgYSBjbGVhciBhbmQgZnVuY3Rpb25hbCBpbXByb3ZlbWVudC4gVGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGNhbGxpbmcgdGhlIHNldC1yZXN1bHRzIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0FOX0NUVUNBTkZEJiMzNDssCiAgICAmIzM0O0NBTl9DVFVDQU5GRF9QQ0kmIzM0OywKICAgICYjMzQ7Q0FOX0NUVUNBTkZEX1BMQVRGT1JNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3R1Y2FuX2ludGVycnVwdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW50ZXJydXB0IGhhbmRsZXIgb2YgdGhlIENUVSBDQU4gRkQgZHJpdmVyIHRvIGhhbmRsZSB0aGUgQnVzIEVycm9yIEludGVycnVwdCAoQkVJKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFBDSSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDQU5fQ1RVQ0FORkQmIzM0OywKICAgICYjMzQ7Q0FOX0NUVUNBTkZEX1BDSSYjMzQ7LAogICAgJiMzNDtDQU5fQ1RVQ0FORkRfUExBVEZPUk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjdHVjYW5faW50ZXJydXB0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBvZiB0aGUgQ1RVIENBTiBGRCBkcml2ZXIgdG8gaGFuZGxlIHRoZSBCdXMgRXJyb3IgSW50ZXJydXB0IChCRUkpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgUENJIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMjoyNDoyMi4zMDE5MTE5ODRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzI5ODIxMjM4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDQU5fQ1RVQ0FORkRcIixcbiAgICBcIkNBTl9DVFVDQU5GRF9QQ0lcIixcbiAgICBcIkNBTl9DVFVDQU5GRF9QTEFURk9STVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN0dWNhbl9pbnRlcnJ1cHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW50ZXJydXB0IGhhbmRsZXIgb2YgdGhlIENUVSBDQU4gRkQgZHJpdmVyIHRvIGhhbmRsZSB0aGUgQnVzIEVycm9yIEludGVycnVwdCAoQkVJKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFBDSSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMjoyNDoyMi4zMDE5MTg2NzVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyODMzNzU5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDZkZTI4ZTFkN2RmZWJhNDBjYzk5MGU2Mjg3ZDQxNjIwZjVmNGQyYjlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMjQgMTI6MjQ6MjAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuYyBiL2RyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmNcXG5pbmRleCAwZWExZmYyOGRmY2U4Yi4uMGNkMmQ0MjhjMWYxNTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmNcXG5AQCAtMTEzNiw4ICsxMTM2LDEyIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBjdHVjYW5faW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pZClcXG4gXFx0XFx0LyogRXJyb3IgaW50ZXJydXB0cyAqL1xcbiBcXHRcXHRpZiAoRklFTERfR0VUKFJFR19JTlRfU1RBVF9FV0xJLCBpc3IpIHx8XFxuIFxcdFxcdCAgICBGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX0ZDU0ksIGlzcikgfHxcXG4tXFx0XFx0ICAgIEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfQUxJLCBpc3IpKSB7XFxuLVxcdFxcdFxcdGljciA9IGlzciBcXHUwMDI2IChSRUdfSU5UX1NUQVRfRVdMSSB8IFJFR19JTlRfU1RBVF9GQ1NJIHwgUkVHX0lOVF9TVEFUX0FMSSk7XFxuK1xcdFxcdCAgICBGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX0FMSSwgaXNyKSB8fFxcbitcXHRcXHQgICAgRklFTERfR0VUKFJFR19JTlRfU1RBVF9CRUksIGlzcikpIHtcXG4rXFx0XFx0XFx0aWNyID0gaXNyIFxcdTAwMjYgKFJFR19JTlRfU1RBVF9FV0xJIHxcXG4rXFx0XFx0XFx0XFx0ICAgICBSRUdfSU5UX1NUQVRfRkNTSSB8XFxuK1xcdFxcdFxcdFxcdCAgICAgUkVHX0lOVF9TVEFUX0FMSSB8XFxuK1xcdFxcdFxcdFxcdCAgICAgUkVHX0lOVF9TVEFUX0JFSSk7XFxuIFxcbiBcXHRcXHRcXHRjdHVjYW5fbmV0ZGV2X2RiZyhuZGV2LCBcXFwic29tZSBFUlIgaW50ZXJydXB0OiBjbGVhcmluZyAweCUwOHhcXFxcblxcXCIsIGljcik7XFxuIFxcdFxcdFxcdGN0dWNhbl93cml0ZTMyKHByaXYsIENUVUNBTkZEX0lOVF9TVEFULCBpY3IpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMjoyNDoyMi43MzA5MDg1NDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3Mjg2OTIwMjYxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDQU5fQ1RVQ0FORkRcIixcbiAgICBcIkNBTl9DVFVDQU5GRF9QQ0lcIixcbiAgICBcIkNBTl9DVFVDQU5GRF9QTEFURk9STVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN0dWNhbl9pbnRlcnJ1cHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW50ZXJydXB0IGhhbmRsZXIgb2YgdGhlIENUVSBDQU4gRkQgZHJpdmVyIHRvIGhhbmRsZSB0aGUgQnVzIEVycm9yIEludGVycnVwdCAoQkVJKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFBDSSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDZkZTI4ZTFkN2RmZWJhNDBjYzk5MGU2Mjg3ZDQxNjIwZjVmNGQyYjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAxMjoyNDoyMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmMgYi9kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jXG5pbmRleCAwZWExZmYyOGRmY2U4Yi4uMGNkMmQ0MjhjMWYxNTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jXG5AQCAtMTEzNiw4ICsxMTM2LDEyIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBjdHVjYW5faW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pZClcbiBcdFx0LyogRXJyb3IgaW50ZXJydXB0cyAqL1xuIFx0XHRpZiAoRklFTERfR0VUKFJFR19JTlRfU1RBVF9FV0xJLCBpc3IpIHx8XG4gXHRcdCAgICBGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX0ZDU0ksIGlzcikgfHxcbi1cdFx0ICAgIEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfQUxJLCBpc3IpKSB7XG4tXHRcdFx0aWNyID0gaXNyIFx1MDAyNiAoUkVHX0lOVF9TVEFUX0VXTEkgfCBSRUdfSU5UX1NUQVRfRkNTSSB8IFJFR19JTlRfU1RBVF9BTEkpO1xuK1x0XHQgICAgRklFTERfR0VUKFJFR19JTlRfU1RBVF9BTEksIGlzcikgfHxcbitcdFx0ICAgIEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfQkVJLCBpc3IpKSB7XG4rXHRcdFx0aWNyID0gaXNyIFx1MDAyNiAoUkVHX0lOVF9TVEFUX0VXTEkgfFxuK1x0XHRcdFx0ICAgICBSRUdfSU5UX1NUQVRfRkNTSSB8XG4rXHRcdFx0XHQgICAgIFJFR19JTlRfU1RBVF9BTEkgfFxuK1x0XHRcdFx0ICAgICBSRUdfSU5UX1NUQVRfQkVJKTtcbiBcbiBcdFx0XHRjdHVjYW5fbmV0ZGV2X2RiZyhuZGV2LCBcInNvbWUgRVJSIGludGVycnVwdDogY2xlYXJpbmcgMHglMDh4XFxuXCIsIGljcik7XG4gXHRcdFx0Y3R1Y2FuX3dyaXRlMzIocHJpdiwgQ1RVQ0FORkRfSU5UX1NUQVQsIGljcik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMjoyNDoyMi43MzA5MDk2MjJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjE2MDIzMjA1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDQU4gRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmNgLiBJdCdzIGFkZGluZyBgUkVHX0lOVF9TVEFUX0JFSWAgdG8gdGhlIGludGVycnVwdCBoYW5kbGluZyB3aXRoaW4gdGhlIGBjdHVjYW5faW50ZXJydXB0YCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIkNhbiB3ZSBhY3R1YWxseSB0ZXN0IHRoaXMsIGFuZCBpcyB0aGlzIGV2ZW4gYSByZWxldmFudCBjaGFuZ2U/XCIgVGhpcyBpcyBhIENBTiBkcml2ZXIsIHNvIG15IG1pbmQgaW1tZWRpYXRlbHkgZ29lcyB0byBmdXp6aW5nLiBDQU4gZHJpdmVycyBhcmUgb2Z0ZW4gdnVsbmVyYWJsZSBpZiB0aGVyZSdzIGEgdmlydHVhbCBDQU4gc2V0dXAgb3IgYSB3YXkgdG8gdHJpZ2dlciBldmVudHMuIEJ1dCwgaG9sZCBvbuKApiBgY3R1Y2FuZmRgIHNwZWNpZmljYWxseSwgdGhhdOKAmXMgYSAqaGFyZHdhcmUqIENBTiBkcml2ZXIuIFRoYXQgcmFpc2VzIGEgc2lnbmlmaWNhbnQgcXVlc3Rpb246IGNhbiB3ZSBldmVuICpyZWFjaCogdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB3aGljaCBpcyB3aGVyZSBhIGxvdCBvZiBvdXIgdGVzdGluZyBpcyBkb25lPyBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhpcyBkcml2ZXIgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGFuZCBhbnkgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zLiBTcGVjaWZpY2FsbHksIEknbGwgYmUgY2hlY2tpbmcgYGRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnYCB0byBzZWUgd2hhdCBJIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTE3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTI6MjU6MDQuODkxMTQzNzg1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NDQ1NTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImN0dWNhbmZkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnPTE9Y29uZmlnIENBTl9DVFVDQU5GRFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctNS1cXHQgIE1vcmUgZG9jdW1lbnRhdGlvbiBhbmQgY29yZSBzb3VyY2VzIGF0IHByb2plY3QgcGFnZVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnOjY6XFx0ICAoaHR0cHM6Ly9naXRsYWIuZmVsLmN2dXQuY3ovY2FuYnVzL2N0dWNhbmZkX2lwX2NvcmUpLlxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnLTctXFx0ICBUaGUgY29yZSBpbnRlZ3JhdGlvbiB0byBYaWxpbnggWnlucSBzeXN0ZW0gYXMgcGxhdGZvcm0gZHJpdmVyXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZy05LVxcdCAgSW1wbGVtZW50YXRpb24gb24gSW50ZWwgRlBHQS1iYXNlZCBQQ0kgRXhwcmVzcyBib2FyZCBpcyBhdmFpbGFibGVcXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZzoxMDpcXHQgIGZyb20gcHJvamVjdCAoaHR0cHM6Ly9naXRsYWIuZmVsLmN2dXQuY3ovY2FuYnVzL3BjaWUtY3R1Y2FuZmQpIGFuZFxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnOjExOlxcdCAgb24gSW50ZWwgU29DIGZyb20gcHJvamVjdCAoaHR0cHM6Ly9naXRsYWIuZmVsLmN2dXQuY3ovY2FuYnVzL2ludGVsLXNvYy1jdHVjYW5mZCkuXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMTItXFx0ICBHdWlkZXBvc3QgQ1RVIEZFRSBDQU4gYnVzIHByb2plY3RzIHBhZ2UgaHR0cHM6Ly9jYW5idXMucGFnZXMuZmVsLmN2dXQuY3ovIC5cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnPTE0PWNvbmZpZyBDQU5fQ1RVQ0FORkRfUENJXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZy0yMS1cXHQgIFBDSWUgYm9hcmQgd2l0aCBQaUtST04uY29tIGRlc2lnbmVkIHRyYW5zY2VpdmVyIHJpc2VyIHNoaWVsZCBpcyBhdmFpbGFibGVcXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZzoyMjpcXHQgIGF0IGh0dHBzOi8vZ2l0bGFiLmZlbC5jdnV0LmN6L2NhbmJ1cy9wY2llLWN0dWNhbmZkIC5cXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZy0yMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTI6MjU6MDQuOTQ5NTk1NTIzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ5MTEwMDg5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBDVFUgQ0FOIEZEIElQIENvcmUgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBoYXJkd2FyZSBDQU4gZHJpdmVyIGZvciB0aGUgQ1RVIENBTiBGRCBJUCBjb3JlLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGluIG15IG1pbmQgaXMsIGNhbiBJIGVmZmVjdGl2ZWx5IGZ1enogdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJJ20gZ2VuZXJhbGx5IHdhcnkgb2YgaGFyZHdhcmUgZHJpdmVycyB0aGF0IGFyZW4ndCBlbXVsYXRlZCBvciB2aXJ0dWFsaXplZCwgYmVjYXVzZSwgbGV0J3MgZmFjZSBpdCwgdGhleSdyZSB1c3VhbGx5IHVucmVhY2hhYmxlIGluIHRoZSB0eXBpY2FsIHNldHVwLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGEgUENJIGRyaXZlciBhc3NvY2lhdGVkIHdpdGggaXQuIEFoYSwgeWVzISBUaGVyZSdzIGBDQU5fQ1RVQ0FORkRfUENJYC4gVGhpcyBpcyBwcm9taXNpbmcuIFN5emthbGxlciwgd2l0aCBpdHMgdmlydHVhbCBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMg4oCTIHRoaW5rIGBzeXpfcGNpX2RldmljZV9hZGRgIGFuZCBzaW1pbGFyIGFwcHJvYWNoZXMsIG9yIHNpbXBseSB0aGUgZ2VuZXJhbCBQQ0kgZnV6emluZyBpZiBlbmFibGVkIOKAkyBjb3VsZCBiZSBhIHZpYWJsZSBwYXRoLiBTbywgbGV0J3MgY29uZmlybSB0aGUgZXhpc3RlbmNlIGFuZCBwb3RlbnRpYWwgb2YgdGhpcyBQQ0kgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTY3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDEyOjI1OjA5LjQ0MDY5ODYwNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzEwMTc0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jPTI2ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgY3R1Y2FuX3BjaV90YmxbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9wY2kuYy0yNjktXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jOjI3MDpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgY3R1Y2FuX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jLTI3MS1cXHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jLTI3Ny1cXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfcGNpLmM6Mjc4Om1vZHVsZV9wY2lfZHJpdmVyKGN0dWNhbl9wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfcGNpLmMtMjc5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMjoyNTowOS40OTc4MDc1NjRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTM3MzA1MTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBDSSBGdXp6aW5nIHdpdGggU3l6a2FsbGVyOiBFbmFibGluZyBDQU4tQ1RVQ0FORkQqKlxuXG5Pa2F5LCBzbyB0aGVyZSAqaXMqIGEgUENJIGRyaXZlciBpbiBwbGF5IGhlcmUg4oCTIGdvb2QgdG8ga25vdy4gQW5kIHRoZSBnb29kIG5ld3MgaXMsIHN5emthbGxlciAqY2FuKiBoYW5kbGUgUENJIGRldmljZSBmdXp6aW5nLiBJIHJlY2FsbCB0aGF0IGl0J3Mgc2V0IHVwIHRvIHNpbXVsYXRlIFBDSSBkZXZpY2VzIHRvIGRvIHRoaXMuXG5cblRoYXQgdHJpZ2dlcnMgc29tZXRoaW5nOiAgZ2l2ZW4gdGhhdCB3ZSBoYXZlIFBDSSBjYXBhYmlsaXR5IHdpdGggc3l6a2FsbGVyLCB3ZSByZWFsbHkgbmVlZCB0byBnZXQgYENBTl9DVFVDQU5GRF9QQ0lgIGVuYWJsZWQsIGFuZCBvZiBjb3Vyc2UgYENBTl9DVFVDQU5GRGAgbmVlZHMgdG8gYmUgdGhlcmUsIHRvby4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGVpciBLY29uZmlnIGVudHJpZXMgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgZXZlcnl0aGluZyBpcyBhcyBpdCBzaG91bGQgYmUuIExldCdzIGxvb2sgYXQgdGhlIGNvbmZpZyBvcHRpb25zIVxuXG5cbiIsIklucHV0VG9rZW5zIjozNTc1LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTI6MjU6MTMuNjM1MTE0ODk2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Y29uZmlnIENBTl9DVFVDQU5GRFxcbiAgIDI6XFx0XFx0dHJpc3RhdGUgXFxcIkNUVSBDQU4tRkQgSVAgY29yZVxcXCIgaWYgQ09NUElMRV9URVNUXFxuICAgMzpcXHRcXHRoZWxwXFxuICAgNDpcXHRcXHQgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgdGhlIENUVSBDQU4gRkQgb3Blbi1zb3VyY2UgSVAgY29yZS5cXG4gICA1OlxcdFxcdCAgTW9yZSBkb2N1bWVudGF0aW9uIGFuZCBjb3JlIHNvdXJjZXMgYXQgcHJvamVjdCBwYWdlXFxuICAgNjpcXHRcXHQgIChodHRwczovL2dpdGxhYi5mZWwuY3Z1dC5jei9jYW5idXMvY3R1Y2FuZmRfaXBfY29yZSkuXFxuICAgNzpcXHRcXHQgIFRoZSBjb3JlIGludGVncmF0aW9uIHRvIFhpbGlueCBaeW5xIHN5c3RlbSBhcyBwbGF0Zm9ybSBkcml2ZXJcXG4gICA4OlxcdFxcdCAgaXMgYXZhaWxhYmxlIChodHRwczovL2dpdGxhYi5mZWwuY3Z1dC5jei9jYW5idXMvenlucS96eW5xLWNhbi1zamExMDAwLXRvcCkuXFxuICAgOTpcXHRcXHQgIEltcGxlbWVudGF0aW9uIG9uIEludGVsIEZQR0EtYmFzZWQgUENJIEV4cHJlc3MgYm9hcmQgaXMgYXZhaWxhYmxlXFxuICAxMDpcXHRcXHQgIGZyb20gcHJvamVjdCAoaHR0cHM6Ly9naXRsYWIuZmVsLmN2dXQuY3ovY2FuYnVzL3BjaWUtY3R1Y2FuZmQpIGFuZFxcbiAgMTE6XFx0XFx0ICBvbiBJbnRlbCBTb0MgZnJvbSBwcm9qZWN0IChodHRwczovL2dpdGxhYi5mZWwuY3Z1dC5jei9jYW5idXMvaW50ZWwtc29jLWN0dWNhbmZkKS5cXG4gIDEyOlxcdFxcdCAgR3VpZGVwb3N0IENUVSBGRUUgQ0FOIGJ1cyBwcm9qZWN0cyBwYWdlIGh0dHBzOi8vY2FuYnVzLnBhZ2VzLmZlbC5jdnV0LmN6LyAuXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBDQU5fQ1RVQ0FORkRfUENJXFxuICAxNTpcXHRcXHR0cmlzdGF0ZSBcXFwiQ1RVIENBTi1GRCBJUCBjb3JlIFBDSS9QQ0llIGRyaXZlclxcXCJcXG4gIDE2OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAxNzpcXHRcXHRzZWxlY3QgQ0FOX0NUVUNBTkZEXFxuICAxODpcXHRcXHRoZWxwXFxuICAxOTpcXHRcXHQgIFRoaXMgZHJpdmVyIGFkZHMgUENJL1BDSWUgc3VwcG9ydCBmb3IgQ1RVIENBTi1GRCBJUCBjb3JlLlxcbiAgMjA6XFx0XFx0ICBUaGUgcHJvamVjdCBwcm92aWRpbmcgRlBHQSBkZXNpZ24gZm9yIEludGVsIEVQNENHWDE1IGJhc2VkIERCNENHWDE1XFxuICAyMTpcXHRcXHQgIFBDSWUgYm9hcmQgd2l0aCBQaUtST04uY29tIGRlc2lnbmVkIHRyYW5zY2VpdmVyIHJpc2VyIHNoaWVsZCBpcyBhdmFpbGFibGVcXG4gIDIyOlxcdFxcdCAgYXQgaHR0cHM6Ly9naXRsYWIuZmVsLmN2dXQuY3ovY2FuYnVzL3BjaWUtY3R1Y2FuZmQgLlxcbiAgMjM6XFx0XFxuICAyNDpcXHRjb25maWcgQ0FOX0NUVUNBTkZEX1BMQVRGT1JNXFxuICAyNTpcXHRcXHR0cmlzdGF0ZSBcXFwiQ1RVIENBTi1GRCBJUCBjb3JlIHBsYXRmb3JtIChGUEdBLCBTb0MpIGRyaXZlclxcXCJcXG4gIDI2OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IE9GXFxuICAyNzpcXHRcXHRzZWxlY3QgQ0FOX0NUVUNBTkZEXFxuICAyODpcXHRcXHRoZWxwXFxuICAyOTpcXHRcXHQgIFRoZSBjb3JlIGhhcyBiZWVuIHRlc3RlZCB0b2dldGhlciB3aXRoIE9wZW5Db3JlcyBTSkExMDAwXFxuICAzMDpcXHRcXHQgIG1vZGlmaWVkIHRvIGJlIENBTiBGRCBmcmFtZXMgdG9sZXJhbnQgb24gTWljcm9aZWQgWnlucSBiYXNlZFxcbiAgMzE6XFx0XFx0ICBNWl9BUE8gZWR1Y2F0aW9uIGtpdHMgZGVzaWduZWQgYnkgUGV0ciBQb3JhemlsIGZyb20gUGlLUk9OLmNvbVxcbiAgMzI6XFx0XFx0ICBjb21wYW55LiBGUEdBIGRlc2lnbiBodHRwczovL2dpdGxhYi5mZWwuY3Z1dC5jei9jYW5idXMvenlucS96eW5xLWNhbi1zamExMDAwLXRvcC5cXG4gIDMzOlxcdFxcdCAgVGhlIGtpdCBkZXNjcmlwdGlvbiBhdCB0aGUgQ29tcHV0ZXIgQXJjaGl0ZWN0dXJlcyBjb3Vyc2UgcGFnZXNcXG4gIDM0OlxcdFxcdCAgaHR0cHM6Ly9jdy5mZWwuY3Z1dC5jei93aWtpL2NvdXJzZXMvYjM1YXBvL2RvY3VtZW50YXRpb24vbXpfYXBvL3N0YXJ0IC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTI6MjU6MTMuNjM1MTgwMzA2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0ODk4Nzk5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludGVycnVwdCBIYW5kbGVyIEludmVzdGlnYXRpb24qKlxuXG5BbHJpZ2h0LCBpdCBsb29rcyBsaWtlIGBDQU5fQ1RVQ0FORkRfUENJYCBpcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCdzIHRyaWdnZXJpbmcgdGhlIGluY2x1c2lvbiBvZiBgQ0FOX0NUVUNBTkZEYC4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgZm9jdXMgaXMgbm93IG9uIHRoZSBgY3R1Y2FuX2ludGVycnVwdGAgZnVuY3Rpb24sIHdoaWNoIHJlc2lkZXMgd2l0aGluIGBkcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY29uZmlybSB3aGV0aGVyIGBjdHVjYW5faW50ZXJydXB0YCBpcyBpbmRlZWQgdGhlIHByaW1hcnkgaW50ZXJydXB0IGhhbmRsZXIgZm9yIHRoaXMgQ0FOIGNvbnRyb2xsZXIuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBhc3N1bXB0aW9uIGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggYW55IGRlZXBlciBhbmFseXNpcy4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIGZsb3cgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU3OSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTI6MjU6MTYuOTg0MTcwMzcxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzUzMDcxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjdHVjYW5faW50ZXJydXB0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuYz05OTU9c3RhdGljIHZvaWQgY3R1Y2FuX3R4X2ludGVycnVwdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmMtMTA5MS0vKipcXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jOjEwOTI6ICogY3R1Y2FuX2ludGVycnVwdCgpIC0gQ0FOIElzclxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmMtMTA5My0gKiBAaXJxOlxcdGlycSBudW1iZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmMtMTEwMS0gKi9cXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jOjExMDI6c3RhdGljIGlycXJldHVybl90IGN0dWNhbl9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmMtMTEwMy17XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jPTEyMDQ9c3RhdGljIGludCBjdHVjYW5fb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmMtMTIyNy1cXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jOjEyMjg6XFx0cmV0ID0gcmVxdWVzdF9pcnEobmRldi1cXHUwMDNlaXJxLCBjdHVjYW5faW50ZXJydXB0LCBwcml2LVxcdTAwM2VpcnFfZmxhZ3MsIG5kZXYtXFx1MDAzZW5hbWUsIG5kZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmMtMTIyOS1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMjoyNToxNy4wNDE3MDY4NjlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI3MzY4MTM4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBgY3R1Y2FuX2ludGVycnVwdGAgSGFuZGxlcioqXG5cbk9rYXksIHNvIGBjdHVjYW5faW50ZXJydXB0YCBpcyB0aGUgY2VudHJhbCBpbnRlcnJ1cHQgaGFuZGxlciwgdGhhdCBtdWNoIGlzIGNsZWFyLiBUaGUgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgaXQncyBmdXp6YWJsZS4gU3l6a2FsbGVyIGlzIHRoZSBvYnZpb3VzIHRvb2wsIGVzcGVjaWFsbHkgc2luY2UgaXQgY2FuIGZ1enogUENJIGRldmljZXMsIHdoaWNoIG9mdGVuIGludm9sdmVzIGluamVjdGluZyBpbnRlcnJ1cHRzLiBCdXQgd2FpdCwgZG9lcyBTeXprYWxsZXIgYWN0dWFsbHkgaW5qZWN0IGludGVycnVwdHMgaW50byBQQ0kgZGV2aWNlcyBkaXJlY3RseT8gSSBrbm93IGl0ICpzdXBwb3J0cyogUENJIGZ1enppbmcsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSBpZiB0aGF0IGluY2x1ZGVzIGludGVycnVwdCBpbmplY3Rpb24uIElmIGl0J3MgYSBQQ0kgZHJpdmVyLCB0aGVuIGl0IHNob3VsZCBiZSByZWFjaGFibGUgYnkgc3l6a2FsbGVyIG9uZSB3YXkgb3IgYW5vdGhlci5cblxuTGV0J3Mgc2VlLCB0aGlzIHBhdGNoIHNwZWNpZmljYWxseSBhZGRzIGBSRUdfSU5UX1NUQVRfQkVJYCB0byB0aGUgZXJyb3IgaW50ZXJydXB0cyBoYW5kbGVkIGluIGBjdHVjYW5faW50ZXJydXB0YC4gSG1tbSwgaXMgdGhpcyBlbm91Z2ggb2YgYSBjaGFuZ2UgdG8gd2FycmFudCBmdXp6aW5nPyBJdCAqaXMqIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgZHJpdmVyLCBzbyB0aGUgYW5zd2VyIGlzIHByb2JhYmx5IHllcy5cblxuU2luY2UgYGN0dWNhbl9pbnRlcnJ1cHRgIGlzIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciwgSSBzaG91bGQgbG9vayBhdCBgY3R1Y2FuX2Vycl9pbnRlcnJ1cHRgIG9yIGFueSBzaW1pbGFybHkgbmFtZWQgZnVuY3Rpb24uIFRoZSBwYXRjaCBtb2RpZmllcyBgY3R1Y2FuX2ludGVycnVwdGAsIHNvIHRoYXQncyB3aGVyZSB0aGUgZm9jdXMgbmVlZHMgdG8gYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNjUsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTI6MjU6MjMuMzE1MzkwOTYxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExMjAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjExMjA6XFx0XFx0XFx0XFx0LyogTWFzayBSWEJORUkgdGhlIGZpcnN0LCB0aGVuIGNsZWFyIGludGVycnVwdCBhbmQgc2NoZWR1bGUgTkFQSS4gRXZlbiBpZlxcbjExMjE6XFx0XFx0XFx0XFx0ICogYW5vdGhlciBJUlEgZmlyZXMsIFJCTkVJIHdpbGwgYWx3YXlzIGJlIDAgKG1hc2tlZCkuXFxuMTEyMjpcXHRcXHRcXHRcXHQgKi9cXG4xMTIzOlxcdFxcdFxcdFxcdGljciA9IFJFR19JTlRfU1RBVF9SQk5FSTtcXG4xMTI0OlxcdFxcdFxcdFxcdGN0dWNhbl93cml0ZTMyKHByaXYsIENUVUNBTkZEX0lOVF9NQVNLX1NFVCwgaWNyKTtcXG4xMTI1OlxcdFxcdFxcdFxcdGN0dWNhbl93cml0ZTMyKHByaXYsIENUVUNBTkZEX0lOVF9TVEFULCBpY3IpO1xcbjExMjY6XFx0XFx0XFx0XFx0bmFwaV9zY2hlZHVsZShcXHUwMDI2cHJpdi1cXHUwMDNlbmFwaSk7XFxuMTEyNzpcXHRcXHRcXHR9XFxuMTEyODpcXHRcXG4xMTI5OlxcdFxcdFxcdC8qIFRYVCBCdWZmZXIgSFcgQ29tbWFuZCBJbnRlcnJ1cHQgKi9cXG4xMTMwOlxcdFxcdFxcdGlmIChGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX1RYQkhDSSwgaXNyKSkge1xcbjExMzE6XFx0XFx0XFx0XFx0Y3R1Y2FuX25ldGRldl9kYmcobmRldiwgXFxcIlRYQkhDSVxcXFxuXFxcIik7XFxuMTEzMjpcXHRcXHRcXHRcXHQvKiBDbGVhcmVkIGluc2lkZSAqL1xcbjExMzM6XFx0XFx0XFx0XFx0Y3R1Y2FuX3R4X2ludGVycnVwdChuZGV2KTtcXG4xMTM0OlxcdFxcdFxcdH1cXG4xMTM1OlxcdFxcbjExMzY6XFx0XFx0XFx0LyogRXJyb3IgaW50ZXJydXB0cyAqL1xcbjExMzc6XFx0XFx0XFx0aWYgKEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfRVdMSSwgaXNyKSB8fFxcbjExMzg6XFx0XFx0XFx0ICAgIEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfRkNTSSwgaXNyKSB8fFxcbjExMzk6XFx0XFx0XFx0ICAgIEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfQUxJLCBpc3IpIHx8XFxuMTE0MDpcXHRcXHRcXHQgICAgRklFTERfR0VUKFJFR19JTlRfU1RBVF9CRUksIGlzcikpIHtcXG4xMTQxOlxcdFxcdFxcdFxcdGljciA9IGlzciBcXHUwMDI2IChSRUdfSU5UX1NUQVRfRVdMSSB8XFxuMTE0MjpcXHRcXHRcXHRcXHRcXHQgICAgIFJFR19JTlRfU1RBVF9GQ1NJIHxcXG4xMTQzOlxcdFxcdFxcdFxcdFxcdCAgICAgUkVHX0lOVF9TVEFUX0FMSSB8XFxuMTE0NDpcXHRcXHRcXHRcXHRcXHQgICAgIFJFR19JTlRfU1RBVF9CRUkpO1xcbjExNDU6XFx0XFxuMTE0NjpcXHRcXHRcXHRcXHRjdHVjYW5fbmV0ZGV2X2RiZyhuZGV2LCBcXFwic29tZSBFUlIgaW50ZXJydXB0OiBjbGVhcmluZyAweCUwOHhcXFxcblxcXCIsIGljcik7XFxuMTE0NzpcXHRcXHRcXHRcXHRjdHVjYW5fd3JpdGUzMihwcml2LCBDVFVDQU5GRF9JTlRfU1RBVCwgaWNyKTtcXG4xMTQ4OlxcdFxcdFxcdFxcdGN0dWNhbl9lcnJfaW50ZXJydXB0KG5kZXYsIGlzcik7XFxuMTE0OTpcXHRcXHRcXHR9XFxuMTE1MDpcXHRcXHRcXHQvKiBJZ25vcmUgUkksIFRJLCBMRkksIFJGSSwgQlNJICovXFxuMTE1MTpcXHRcXHR9XFxuMTE1MjpcXHRcXG4xMTUzOlxcdFxcdG5ldGRldl9lcnIobmRldiwgXFxcIiVzOiBzdHVjayBpbnRlcnJ1cHQgKGlzcj0weCUwOHgpLCBzdG9wcGluZ1xcXFxuXFxcIiwgX19mdW5jX18sIGlzcik7XFxuMTE1NDpcXHRcXG4xMTU1OlxcdFxcdGlmIChGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX1RYQkhDSSwgaXNyKSkge1xcbjExNTY6XFx0XFx0XFx0aW50IGk7XFxuMTE1NzpcXHRcXG4xMTU4OlxcdFxcdFxcdG5ldGRldl9lcnIobmRldiwgXFxcInR4Yl9oZWFkPTB4JTA4eCB0eGJfdGFpbD0weCUwOHhcXFxcblxcXCIsXFxuMTE1OTpcXHRcXHRcXHRcXHQgICBwcml2LVxcdTAwM2V0eGJfaGVhZCwgcHJpdi1cXHUwMDNldHhiX3RhaWwpO1xcbjExNjA6XFx0XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHByaXYtXFx1MDAzZW50eGJ1ZnM7IGkrKykge1xcbjExNjE6XFx0XFx0XFx0XFx0dTMyIHN0YXR1cyA9IGN0dWNhbl9nZXRfdHhfc3RhdHVzKHByaXYsIGkpO1xcbjExNjI6XFx0XFxuMTE2MzpcXHRcXHRcXHRcXHRuZXRkZXZfZXJyKG5kZXYsIFxcXCJ0eGJbJWRdIHR4YiBzdGF0dXM9MHglMDh4XFxcXG5cXFwiLCBpLCBzdGF0dXMpO1xcbjExNjQ6XFx0XFx0XFx0fVxcbjExNjU6XFx0XFx0fVxcbjExNjY6XFx0XFxuMTE2NzpcXHRcXHRpbWFzayA9IDB4ZmZmZmZmZmY7XFxuMTE2ODpcXHRcXHRjdHVjYW5fd3JpdGUzMihwcml2LCBDVFVDQU5GRF9JTlRfRU5BX0NMUiwgaW1hc2spO1xcbjExNjk6XFx0XFx0Y3R1Y2FuX3dyaXRlMzIocHJpdiwgQ1RVQ0FORkRfSU5UX01BU0tfU0VULCBpbWFzayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDEyOjI1OjIzLjMxNTU5OTc1MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjYzMDk1ODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ1RVQ0FOIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgUkVHX0lOVF9TVEFUX0JFSWAgaW50byB0aGUgZXJyb3IgaW50ZXJydXB0IGhhbmRsaW5nIHdpdGhpbiB0aGUgYGN0dWNhbl9pbnRlcnJ1cHRgIGZ1bmN0aW9uLiBUaGF0J3MgYSBkaXJlY3QgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGRyaXZlcidzIGludGVycnVwdCBoYW5kbGVyIOKAkyBzcGVjaWZpY2FsbHkgYGN0dWNhbl9pbnRlcnJ1cHRgLiBJIG5lZWQgdG8gZm9jdXMgb24gYm90aCBgY3R1Y2FuX2ludGVycnVwdGAgYW5kLCB0byBhIGxlc3NlciBleHRlbnQsIGBjdHVjYW5fZXJyX2ludGVycnVwdGAuXG5cblRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGBDQU5fQ1RVQ0FORkRgIGFuZCwgaW1wb3J0YW50bHksIGVpdGhlciBvciBib3RoIG9mIGBDQU5fQ1RVQ0FORkRfUENJYCBhbmQgYENBTl9DVFVDQU5GRF9QTEFURk9STWAuIEkgbmVlZCB0byBjbGFyaWZ5IGlmIGBDQU5fQ1RVQ0FORkRfUENJYCBpcyB0aGUgKm9ubHkqIHBhdGggdG8gdGhpcy4gTm9wZSwgYENBTl9DVFVDQU5GRF9QTEFURk9STWAgaXMgYW4gb3B0aW9uIGFzIHdlbGwuIFdlIGNhbiBoYXZlIGJvdGggZW5hYmxlZCwgd2hpY2ggaXMgZ29vZCB0byBrZWVwIGluIG1pbmQgZm9yIHRlc3RpbmcuXG5cbk5vdywgYSBxdWljayBjaGVjazogaXMgYGN0dWNhbl9lcnJfaW50ZXJydXB0YCBiZWluZyBkaXJlY3RseSBtb2RpZmllZCwgb3IgaXMgaXQganVzdCBiZWluZyAqY2FsbGVkKj8gTG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIGlzb2xhdGVkIHdpdGhpbiBgY3R1Y2FuX2ludGVycnVwdGAsIHdpdGggYGN0dWNhbl9lcnJfaW50ZXJydXB0YCBiZWluZyBhIGNhbGwgZnJvbSBgY3R1Y2FuX2ludGVycnVwdGAuXG5cbklzIHRoaXMgZnV6emFibGU/IEFic29sdXRlbHkuIEl0J3MgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB3aXRoaW4gYSBkcml2ZXIuIFRoZSByZWFsIHF1ZXN0aW9uIGlzOiBjYW4gc3l6a2FsbGVyICphY3R1YWxseSogcmVhY2ggdGhpcyBjb2RlIHBhdGg/IFRoZSBhbnN3ZXIgaXMgeWVzLCBnaXZlbiBpdCBjYW4gc2ltdWxhdGUgUENJIGRldmljZXMgYW5kIGluamVjdCBpbnRlcnJ1cHRzLiBUaGlzIG1lYW5zIHdlIHNob3VsZCBiZSBhYmxlIHRvIHRyaWdnZXIgdGhpcyBjaGFuZ2UgdGhyb3VnaCBmdXp6aW5nLlxuXG5MZXQncyBqdXN0IGRvdWJsZS1jaGVjayB0aG9zZSBjb25maWcgb3B0aW9ucyBvbmUgbW9yZSB0aW1lIHRvIGJlIGFic29sdXRlbHkgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjcyNywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDEyOjI1OjI4Ljk3ODY5NzY1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzY3NzU1MzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ0FOX0NUVUNBTkZEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWc6MTpjb25maWcgQ0FOX0NUVUNBTkZEXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiQ1RVIENBTi1GRCBJUCBjb3JlXFxcIiBpZiBDT01QSUxFX1RFU1RcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnLTEzLVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnOjE0OmNvbmZpZyBDQU5fQ1RVQ0FORkRfUENJXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIkNUVSBDQU4tRkQgSVAgY29yZSBQQ0kvUENJZSBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMTYtXFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZzoxNzpcXHRzZWxlY3QgQ0FOX0NUVUNBTkZEXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMTgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMjMtXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWc6MjQ6Y29uZmlnIENBTl9DVFVDQU5GRF9QTEFURk9STVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnLTI1LVxcdHRyaXN0YXRlIFxcXCJDVFUgQ0FOLUZEIElQIGNvcmUgcGxhdGZvcm0gKEZQR0EsIFNvQykgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnLTI2LVxcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IE9GXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWc6Mjc6XFx0c2VsZWN0IENBTl9DVFVDQU5GRFxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnLTI4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19DQU5fQ1RVQ0FORkQpIDo9IGN0dWNhbmZkLm9cXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvTWFrZWZpbGUtNy1jdHVjYW5mZC15IDo9IGN0dWNhbmZkX2Jhc2Uub1xcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9NYWtlZmlsZS04LVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19DQU5fQ1RVQ0FORkRfUENJKSArPSBjdHVjYW5mZF9wY2kub1xcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQ0FOX0NUVUNBTkZEX1BMQVRGT1JNKSArPSBjdHVjYW5mZF9wbGF0Zm9ybS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDEyOjI1OjI5LjIxNTQ4MDgwM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mjk1ODAzODgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ1RVQ0FORkQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBDVFVDQU5GRCBkcml2ZXIgYW5kIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gY29uZmlybSBhcmUgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9ucy4gSSBzZWUgdGhhdCBgQ0FOX0NUVUNBTkZEYCwgYENBTl9DVFVDQU5GRF9QQ0lgLCBhbmQgYENBTl9DVFVDQU5GRF9QTEFURk9STWAgbmVlZCB0byBiZSBlbmFibGVkIGZvciB0aGlzIHRvIGV2ZW4gbWF0dGVyLiAgQW5kIGl0IHNlZW1zIHRoZSBjcml0aWNhbCBzeW1ib2wgdGhhdCB0aGlzIHBhdGNoIHRvdWNoZXMgaXMgYGN0dWNhbl9pbnRlcnJ1cHRgLlxuXG5Ob3csIGRpZ2dpbmcgaW50byB0aGUgcGF0Y2ggaXRzZWxmLi4uIHdvdywgdGhpcyBpcyBpbmNyZWRpYmx5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQncyByZWFsbHkganVzdCBhIG1pbm9yIGFkZGl0aW9uIHRvIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgbG9naWMgaW4gYGN0dWNhbl9pbnRlcnJ1cHRgLiBTcGVjaWZpY2FsbHksIGl0IGFkZHMgdGhlIGhhbmRsaW5nIGZvciBgUkVHX0lOVF9TVEFUX0JFSWAsIHdoaWNoIHNlZW1zIHRvIGJlIGEgXCJCdXMgRXJyb3IgSW50ZXJydXB0XCIuICBJdCdzIHNpbXBseSBpbmNsdWRlZCBpbiB0aGUgZXJyb3IgaW50ZXJydXB0IG1hc2sgd2l0aGluIHRoZSBgaWZgIHN0YXRlbWVudC4gQW5kIHRoZSBiaXQgaXMgY2xlYXJlZCBpbiB0aGUgZm9sbG93aW5nIHdyaXRlLCBhZnRlciBsb2dnaW5nIHRoZSBlcnJvci4gVGhpcyBpcyBhYnNvbHV0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29zbWV0aWMgb25lLiAgSXTigJlzIGFkZGluZyBidXMgZXJyb3IgZGV0ZWN0aW9uLlxuXG5JJ2QgY2xhc3NpZnkgdGhpcyBjaGFuZ2UgYXMgYSBjbGVhciBhbmQgZnVuY3Rpb25hbCBpbXByb3ZlbWVudC4gVGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGNhbGxpbmcgdGhlIHNldC1yZXN1bHRzIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTQyLCJPdXRwdXRUb2tlbnMiOjEwOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMjoyNTozNS41MTEyODcwNjRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODgyMTA2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0FOX0NUVUNBTkZEXCIsXG4gICAgXCJDQU5fQ1RVQ0FORkRfUENJXCIsXG4gICAgXCJDQU5fQ1RVQ0FORkRfUExBVEZPUk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjdHVjYW5faW50ZXJydXB0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGludGVycnVwdCBoYW5kbGVyIG9mIHRoZSBDVFUgQ0FOIEZEIGRyaXZlciB0byBoYW5kbGUgdGhlIEJ1cyBFcnJvciBJbnRlcnJ1cHQgKEJFSSkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBQQ0kgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDQU5fQ1RVQ0FORkRcIixcbiAgICBcIkNBTl9DVFVDQU5GRF9QQ0lcIixcbiAgICBcIkNBTl9DVFVDQU5GRF9QTEFURk9STVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN0dWNhbl9pbnRlcnJ1cHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW50ZXJydXB0IGhhbmRsZXIgb2YgdGhlIENUVSBDQU4gRkQgZHJpdmVyIHRvIGhhbmRsZSB0aGUgQnVzIEVycm9yIEludGVycnVwdCAoQkVJKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFBDSSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow58bwx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-24 11:37:34 +0000 UTC FinishedAt: 2026-07-24 12:25:37 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "78f75d632f74b8de0f081a128588f7c37d0d1164", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CAN_CTUCANFD", "CAN_CTUCANFD_PCI", "CAN_CTUCANFD_PLATFORM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "78f75d632f74b8de0f081a128588f7c37d0d1164", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CAN_CTUCANFD", "CAN_CTUCANFD_PCI", "CAN_CTUCANFD_PLATFORM" ], "series_id": "2cedf19b-81d8-4e44-9fa4-c09defcb61f1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ctucan_interrupt" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI0IDEyOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NBTl9DVFVDQU5GRCYjMzQ7LAogICAgJiMzNDtDQU5fQ1RVQ0FORkRfUENJJiMzNDssCiAgICAmIzM0O0NBTl9DVFVDQU5GRF9QTEFURk9STSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2N0dWNhbl9pbnRlcnJ1cHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGludGVycnVwdCBoYW5kbGVyIG9mIHRoZSBDVFUgQ0FOIEZEIGRyaXZlciB0byBoYW5kbGUgdGhlIEJ1cyBFcnJvciBJbnRlcnJ1cHQgKEJFSSkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBQQ0kgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMjoyNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDZkZTI4ZTFkN2RmZWJhNDBjYzk5MGU2Mjg3ZDQxNjIwZjVmNGQyYjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAxMjoyNDoyMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jIGIvZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuY1xuaW5kZXggMGVhMWZmMjhkZmNlOGIuLjBjZDJkNDI4YzFmMTU4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuY1xuQEAgLTExMzYsOCAmIzQzOzExMzYsMTIgQEAgc3RhdGljIGlycXJldHVybl90IGN0dWNhbl9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuIFx0XHQvKiBFcnJvciBpbnRlcnJ1cHRzICovXG4gXHRcdGlmIChGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX0VXTEksIGlzcikgfHxcbiBcdFx0ICAgIEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfRkNTSSwgaXNyKSB8fFxuLVx0XHQgICAgRklFTERfR0VUKFJFR19JTlRfU1RBVF9BTEksIGlzcikpIHtcbi1cdFx0XHRpY3IgPSBpc3IgXHUwMDI2IChSRUdfSU5UX1NUQVRfRVdMSSB8IFJFR19JTlRfU1RBVF9GQ1NJIHwgUkVHX0lOVF9TVEFUX0FMSSk7XG4mIzQzO1x0XHQgICAgRklFTERfR0VUKFJFR19JTlRfU1RBVF9BTEksIGlzcikgfHxcbiYjNDM7XHRcdCAgICBGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX0JFSSwgaXNyKSkge1xuJiM0MztcdFx0XHRpY3IgPSBpc3IgXHUwMDI2IChSRUdfSU5UX1NUQVRfRVdMSSB8XG4mIzQzO1x0XHRcdFx0ICAgICBSRUdfSU5UX1NUQVRfRkNTSSB8XG4mIzQzO1x0XHRcdFx0ICAgICBSRUdfSU5UX1NUQVRfQUxJIHxcbiYjNDM7XHRcdFx0XHQgICAgIFJFR19JTlRfU1RBVF9CRUkpO1xuIFxuIFx0XHRcdGN0dWNhbl9uZXRkZXZfZGJnKG5kZXYsIFwmIzM0O3NvbWUgRVJSIGludGVycnVwdDogY2xlYXJpbmcgMHglMDh4XFxuXCYjMzQ7LCBpY3IpO1xuIFx0XHRcdGN0dWNhbl93cml0ZTMyKHByaXYsIENUVUNBTkZEX0lOVF9TVEFULCBpY3IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDEyOjI0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDQU5fQ1RVQ0FORkQmIzM0OywKICAgICYjMzQ7Q0FOX0NUVUNBTkZEX1BDSSYjMzQ7LAogICAgJiMzNDtDQU5fQ1RVQ0FORkRfUExBVEZPUk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjdHVjYW5faW50ZXJydXB0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBvZiB0aGUgQ1RVIENBTiBGRCBkcml2ZXIgdG8gaGFuZGxlIHRoZSBCdXMgRXJyb3IgSW50ZXJydXB0IChCRUkpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgUENJIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDZkZTI4ZTFkN2RmZWJhNDBjYzk5MGU2Mjg3ZDQxNjIwZjVmNGQyYjkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAyNCAxMjoyNDoyMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmMgYi9kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jCmluZGV4IDBlYTFmZjI4ZGZjZThiLi4wY2QyZDQyOGMxZjE1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jCkBAIC0xMTM2LDggJiM0MzsxMTM2LDEyIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBjdHVjYW5faW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pZCkKIAkJLyogRXJyb3IgaW50ZXJydXB0cyAqLwogCQlpZiAoRklFTERfR0VUKFJFR19JTlRfU1RBVF9FV0xJLCBpc3IpIHx8CiAJCSAgICBGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX0ZDU0ksIGlzcikgfHwKLQkJICAgIEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfQUxJLCBpc3IpKSB7Ci0JCQlpY3IgPSBpc3IgJmFtcDsgKFJFR19JTlRfU1RBVF9FV0xJIHwgUkVHX0lOVF9TVEFUX0ZDU0kgfCBSRUdfSU5UX1NUQVRfQUxJKTsKJiM0MzsJCSAgICBGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX0FMSSwgaXNyKSB8fAomIzQzOwkJICAgIEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfQkVJLCBpc3IpKSB7CiYjNDM7CQkJaWNyID0gaXNyICZhbXA7IChSRUdfSU5UX1NUQVRfRVdMSSB8CiYjNDM7CQkJCSAgICAgUkVHX0lOVF9TVEFUX0ZDU0kgfAomIzQzOwkJCQkgICAgIFJFR19JTlRfU1RBVF9BTEkgfAomIzQzOwkJCQkgICAgIFJFR19JTlRfU1RBVF9CRUkpOwogCiAJCQljdHVjYW5fbmV0ZGV2X2RiZyhuZGV2LCAmIzM0O3NvbWUgRVJSIGludGVycnVwdDogY2xlYXJpbmcgMHglMDh4XG4mIzM0OywgaWNyKTsKIAkJCWN0dWNhbl93cml0ZTMyKHByaXYsIENUVUNBTkZEX0lOVF9TVEFULCBpY3IpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMjoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTE3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENBTiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jYC4gSXQmIzM5O3MgYWRkaW5nIGBSRUdfSU5UX1NUQVRfQkVJYCB0byB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIHdpdGhpbiB0aGUgYGN0dWNhbl9pbnRlcnJ1cHRgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7Q2FuIHdlIGFjdHVhbGx5IHRlc3QgdGhpcywgYW5kIGlzIHRoaXMgZXZlbiBhIHJlbGV2YW50IGNoYW5nZT8mIzM0OyBUaGlzIGlzIGEgQ0FOIGRyaXZlciwgc28gbXkgbWluZCBpbW1lZGlhdGVseSBnb2VzIHRvIGZ1enppbmcuIENBTiBkcml2ZXJzIGFyZSBvZnRlbiB2dWxuZXJhYmxlIGlmIHRoZXJlJiMzOTtzIGEgdmlydHVhbCBDQU4gc2V0dXAgb3IgYSB3YXkgdG8gdHJpZ2dlciBldmVudHMuIEJ1dCwgaG9sZCBvbuKApiBgY3R1Y2FuZmRgIHNwZWNpZmljYWxseSwgdGhhdOKAmXMgYSAqaGFyZHdhcmUqIENBTiBkcml2ZXIuIFRoYXQgcmFpc2VzIGEgc2lnbmlmaWNhbnQgcXVlc3Rpb246IGNhbiB3ZSBldmVuICpyZWFjaCogdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB3aGljaCBpcyB3aGVyZSBhIGxvdCBvZiBvdXIgdGVzdGluZyBpcyBkb25lPyBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhpcyBkcml2ZXIgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGFuZCBhbnkgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIGJlIGNoZWNraW5nIGBkcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZ2AgdG8gc2VlIHdoYXQgSSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjdHVjYW5mZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnPTE9Y29uZmlnIENBTl9DVFVDQU5GRFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnLTUtXHQgIE1vcmUgZG9jdW1lbnRhdGlvbiBhbmQgY29yZSBzb3VyY2VzIGF0IHByb2plY3QgcGFnZVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWc6NjpcdCAgKGh0dHBzOi8vZ2l0bGFiLmZlbC5jdnV0LmN6L2NhbmJ1cy9jdHVjYW5mZF9pcF9jb3JlKS5cbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnLTctXHQgIFRoZSBjb3JlIGludGVncmF0aW9uIHRvIFhpbGlueCBaeW5xIHN5c3RlbSBhcyBwbGF0Zm9ybSBkcml2ZXJcbi0tXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZy05LVx0ICBJbXBsZW1lbnRhdGlvbiBvbiBJbnRlbCBGUEdBLWJhc2VkIFBDSSBFeHByZXNzIGJvYXJkIGlzIGF2YWlsYWJsZVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWc6MTA6XHQgIGZyb20gcHJvamVjdCAoaHR0cHM6Ly9naXRsYWIuZmVsLmN2dXQuY3ovY2FuYnVzL3BjaWUtY3R1Y2FuZmQpIGFuZFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWc6MTE6XHQgIG9uIEludGVsIFNvQyBmcm9tIHByb2plY3QgKGh0dHBzOi8vZ2l0bGFiLmZlbC5jdnV0LmN6L2NhbmJ1cy9pbnRlbC1zb2MtY3R1Y2FuZmQpLlxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMTItXHQgIEd1aWRlcG9zdCBDVFUgRkVFIENBTiBidXMgcHJvamVjdHMgcGFnZSBodHRwczovL2NhbmJ1cy5wYWdlcy5mZWwuY3Z1dC5jei8gLlxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnPTE0PWNvbmZpZyBDQU5fQ1RVQ0FORkRfUENJXG4tLVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMjEtXHQgIFBDSWUgYm9hcmQgd2l0aCBQaUtST04uY29tIGRlc2lnbmVkIHRyYW5zY2VpdmVyIHJpc2VyIHNoaWVsZCBpcyBhdmFpbGFibGVcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnOjIyOlx0ICBhdCBodHRwczovL2dpdGxhYi5mZWwuY3Z1dC5jei9jYW5idXMvcGNpZS1jdHVjYW5mZCAuXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZy0yMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTY3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIENUVSBDQU4gRkQgSVAgQ29yZSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgaGFyZHdhcmUgQ0FOIGRyaXZlciBmb3IgdGhlIENUVSBDQU4gRkQgSVAgY29yZS4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpbiBteSBtaW5kIGlzLCBjYW4gSSBlZmZlY3RpdmVseSBmdXp6IHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSSYjMzk7bSBnZW5lcmFsbHkgd2FyeSBvZiBoYXJkd2FyZSBkcml2ZXJzIHRoYXQgYXJlbiYjMzk7dCBlbXVsYXRlZCBvciB2aXJ0dWFsaXplZCwgYmVjYXVzZSwgbGV0JiMzOTtzIGZhY2UgaXQsIHRoZXkmIzM5O3JlIHVzdWFsbHkgdW5yZWFjaGFibGUgaW4gdGhlIHR5cGljYWwgc2V0dXAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGEgUENJIGRyaXZlciBhc3NvY2lhdGVkIHdpdGggaXQuIEFoYSwgeWVzISBUaGVyZSYjMzk7cyBgQ0FOX0NUVUNBTkZEX1BDSWAuIFRoaXMgaXMgcHJvbWlzaW5nLiBTeXprYWxsZXIsIHdpdGggaXRzIHZpcnR1YWwgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzIOKAkyB0aGluayBgc3l6X3BjaV9kZXZpY2VfYWRkYCBhbmQgc2ltaWxhciBhcHByb2FjaGVzLCBvciBzaW1wbHkgdGhlIGdlbmVyYWwgUENJIGZ1enppbmcgaWYgZW5hYmxlZCDigJMgY291bGQgYmUgYSB2aWFibGUgcGF0aC4gU28sIGxldCYjMzk7cyBjb25maXJtIHRoZSBleGlzdGVuY2UgYW5kIHBvdGVudGlhbCBvZiB0aGlzIFBDSSBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jPTI2ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgY3R1Y2FuX3BjaV90YmxbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfcGNpLmMtMjY5LVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jOjI3MDpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgY3R1Y2FuX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfcGNpLmMtMjcxLVx0Lm5hbWUgPSBLQlVJTERfTU9ETkFNRSxcbi0tXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfcGNpLmMtMjc3LVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jOjI3ODptb2R1bGVfcGNpX2RyaXZlcihjdHVjYW5fcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfcGNpLmMtMjc5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDEyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NzUKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQQ0kgRnV6emluZyB3aXRoIFN5emthbGxlcjogRW5hYmxpbmcgQ0FOLUNUVUNBTkZEKioKCk9rYXksIHNvIHRoZXJlICppcyogYSBQQ0kgZHJpdmVyIGluIHBsYXkgaGVyZSDigJMgZ29vZCB0byBrbm93LiBBbmQgdGhlIGdvb2QgbmV3cyBpcywgc3l6a2FsbGVyICpjYW4qIGhhbmRsZSBQQ0kgZGV2aWNlIGZ1enppbmcuIEkgcmVjYWxsIHRoYXQgaXQmIzM5O3Mgc2V0IHVwIHRvIHNpbXVsYXRlIFBDSSBkZXZpY2VzIHRvIGRvIHRoaXMuCgpUaGF0IHRyaWdnZXJzIHNvbWV0aGluZzogIGdpdmVuIHRoYXQgd2UgaGF2ZSBQQ0kgY2FwYWJpbGl0eSB3aXRoIHN5emthbGxlciwgd2UgcmVhbGx5IG5lZWQgdG8gZ2V0IGBDQU5fQ1RVQ0FORkRfUENJYCBlbmFibGVkLCBhbmQgb2YgY291cnNlIGBDQU5fQ1RVQ0FORkRgIG5lZWRzIHRvIGJlIHRoZXJlLCB0b28uIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlaXIgS2NvbmZpZyBlbnRyaWVzIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIGV2ZXJ5dGhpbmcgaXMgYXMgaXQgc2hvdWxkIGJlLiBMZXQmIzM5O3MgbG9vayBhdCB0aGUgY29uZmlnIG9wdGlvbnMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHRjb25maWcgQ0FOX0NUVUNBTkZEXG4gICAyOlx0XHR0cmlzdGF0ZSBcJiMzNDtDVFUgQ0FOLUZEIElQIGNvcmVcJiMzNDsgaWYgQ09NUElMRV9URVNUXG4gICAzOlx0XHRoZWxwXG4gICA0Olx0XHQgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgdGhlIENUVSBDQU4gRkQgb3Blbi1zb3VyY2UgSVAgY29yZS5cbiAgIDU6XHRcdCAgTW9yZSBkb2N1bWVudGF0aW9uIGFuZCBjb3JlIHNvdXJjZXMgYXQgcHJvamVjdCBwYWdlXG4gICA2Olx0XHQgIChodHRwczovL2dpdGxhYi5mZWwuY3Z1dC5jei9jYW5idXMvY3R1Y2FuZmRfaXBfY29yZSkuXG4gICA3Olx0XHQgIFRoZSBjb3JlIGludGVncmF0aW9uIHRvIFhpbGlueCBaeW5xIHN5c3RlbSBhcyBwbGF0Zm9ybSBkcml2ZXJcbiAgIDg6XHRcdCAgaXMgYXZhaWxhYmxlIChodHRwczovL2dpdGxhYi5mZWwuY3Z1dC5jei9jYW5idXMvenlucS96eW5xLWNhbi1zamExMDAwLXRvcCkuXG4gICA5Olx0XHQgIEltcGxlbWVudGF0aW9uIG9uIEludGVsIEZQR0EtYmFzZWQgUENJIEV4cHJlc3MgYm9hcmQgaXMgYXZhaWxhYmxlXG4gIDEwOlx0XHQgIGZyb20gcHJvamVjdCAoaHR0cHM6Ly9naXRsYWIuZmVsLmN2dXQuY3ovY2FuYnVzL3BjaWUtY3R1Y2FuZmQpIGFuZFxuICAxMTpcdFx0ICBvbiBJbnRlbCBTb0MgZnJvbSBwcm9qZWN0IChodHRwczovL2dpdGxhYi5mZWwuY3Z1dC5jei9jYW5idXMvaW50ZWwtc29jLWN0dWNhbmZkKS5cbiAgMTI6XHRcdCAgR3VpZGVwb3N0IENUVSBGRUUgQ0FOIGJ1cyBwcm9qZWN0cyBwYWdlIGh0dHBzOi8vY2FuYnVzLnBhZ2VzLmZlbC5jdnV0LmN6LyAuXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIENBTl9DVFVDQU5GRF9QQ0lcbiAgMTU6XHRcdHRyaXN0YXRlIFwmIzM0O0NUVSBDQU4tRkQgSVAgY29yZSBQQ0kvUENJZSBkcml2ZXJcJiMzNDtcbiAgMTY6XHRcdGRlcGVuZHMgb24gUENJXG4gIDE3Olx0XHRzZWxlY3QgQ0FOX0NUVUNBTkZEXG4gIDE4Olx0XHRoZWxwXG4gIDE5Olx0XHQgIFRoaXMgZHJpdmVyIGFkZHMgUENJL1BDSWUgc3VwcG9ydCBmb3IgQ1RVIENBTi1GRCBJUCBjb3JlLlxuICAyMDpcdFx0ICBUaGUgcHJvamVjdCBwcm92aWRpbmcgRlBHQSBkZXNpZ24gZm9yIEludGVsIEVQNENHWDE1IGJhc2VkIERCNENHWDE1XG4gIDIxOlx0XHQgIFBDSWUgYm9hcmQgd2l0aCBQaUtST04uY29tIGRlc2lnbmVkIHRyYW5zY2VpdmVyIHJpc2VyIHNoaWVsZCBpcyBhdmFpbGFibGVcbiAgMjI6XHRcdCAgYXQgaHR0cHM6Ly9naXRsYWIuZmVsLmN2dXQuY3ovY2FuYnVzL3BjaWUtY3R1Y2FuZmQgLlxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBDQU5fQ1RVQ0FORkRfUExBVEZPUk1cbiAgMjU6XHRcdHRyaXN0YXRlIFwmIzM0O0NUVSBDQU4tRkQgSVAgY29yZSBwbGF0Zm9ybSAoRlBHQSwgU29DKSBkcml2ZXJcJiMzNDtcbiAgMjY6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBPRlxuICAyNzpcdFx0c2VsZWN0IENBTl9DVFVDQU5GRFxuICAyODpcdFx0aGVscFxuICAyOTpcdFx0ICBUaGUgY29yZSBoYXMgYmVlbiB0ZXN0ZWQgdG9nZXRoZXIgd2l0aCBPcGVuQ29yZXMgU0pBMTAwMFxuICAzMDpcdFx0ICBtb2RpZmllZCB0byBiZSBDQU4gRkQgZnJhbWVzIHRvbGVyYW50IG9uIE1pY3JvWmVkIFp5bnEgYmFzZWRcbiAgMzE6XHRcdCAgTVpfQVBPIGVkdWNhdGlvbiBraXRzIGRlc2lnbmVkIGJ5IFBldHIgUG9yYXppbCBmcm9tIFBpS1JPTi5jb21cbiAgMzI6XHRcdCAgY29tcGFueS4gRlBHQSBkZXNpZ24gaHR0cHM6Ly9naXRsYWIuZmVsLmN2dXQuY3ovY2FuYnVzL3p5bnEvenlucS1jYW4tc2phMTAwMC10b3AuXG4gIDMzOlx0XHQgIFRoZSBraXQgZGVzY3JpcHRpb24gYXQgdGhlIENvbXB1dGVyIEFyY2hpdGVjdHVyZXMgY291cnNlIHBhZ2VzXG4gIDM0Olx0XHQgIGh0dHBzOi8vY3cuZmVsLmN2dXQuY3ovd2lraS9jb3Vyc2VzL2IzNWFwby9kb2N1bWVudGF0aW9uL216X2Fwby9zdGFydCAuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU3OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnRlcnJ1cHQgSGFuZGxlciBJbnZlc3RpZ2F0aW9uKioKCkFscmlnaHQsIGl0IGxvb2tzIGxpa2UgYENBTl9DVFVDQU5GRF9QQ0lgIGlzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0JiMzOTtzIHRyaWdnZXJpbmcgdGhlIGluY2x1c2lvbiBvZiBgQ0FOX0NUVUNBTkZEYC4gVGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IGZvY3VzIGlzIG5vdyBvbiB0aGUgYGN0dWNhbl9pbnRlcnJ1cHRgIGZ1bmN0aW9uLCB3aGljaCByZXNpZGVzIHdpdGhpbiBgZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gd2hldGhlciBgY3R1Y2FuX2ludGVycnVwdGAgaXMgaW5kZWVkIHRoZSBwcmltYXJ5IGludGVycnVwdCBoYW5kbGVyIGZvciB0aGlzIENBTiBjb250cm9sbGVyLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYXNzdW1wdGlvbiBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIGFueSBkZWVwZXIgYW5hbHlzaXMuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgZmxvdyB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjdHVjYW5faW50ZXJydXB0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jPTk5NT1zdGF0aWMgdm9pZCBjdHVjYW5fdHhfaW50ZXJydXB0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmMtMTA5MS0vKipcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmM6MTA5MjogKiBjdHVjYW5faW50ZXJydXB0KCkgLSBDQU4gSXNyXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jLTEwOTMtICogQGlycTpcdGlycSBudW1iZXJcbi0tXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jLTExMDEtICovXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jOjExMDI6c3RhdGljIGlycXJldHVybl90IGN0dWNhbl9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuYy0xMTAzLXtcbi0tXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jPTEyMDQ9c3RhdGljIGludCBjdHVjYW5fb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jLTEyMjctXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jOjEyMjg6XHRyZXQgPSByZXF1ZXN0X2lycShuZGV2LVx1MDAzZWlycSwgY3R1Y2FuX2ludGVycnVwdCwgcHJpdi1cdTAwM2VpcnFfZmxhZ3MsIG5kZXYtXHUwMDNlbmFtZSwgbmRldik7XG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jLTEyMjktXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDEyOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNjUKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAxOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYGN0dWNhbl9pbnRlcnJ1cHRgIEhhbmRsZXIqKgoKT2theSwgc28gYGN0dWNhbl9pbnRlcnJ1cHRgIGlzIHRoZSBjZW50cmFsIGludGVycnVwdCBoYW5kbGVyLCB0aGF0IG11Y2ggaXMgY2xlYXIuIFRoZSBxdWVzdGlvbiBub3cgaXMgd2hldGhlciBpdCYjMzk7cyBmdXp6YWJsZS4gU3l6a2FsbGVyIGlzIHRoZSBvYnZpb3VzIHRvb2wsIGVzcGVjaWFsbHkgc2luY2UgaXQgY2FuIGZ1enogUENJIGRldmljZXMsIHdoaWNoIG9mdGVuIGludm9sdmVzIGluamVjdGluZyBpbnRlcnJ1cHRzLiBCdXQgd2FpdCwgZG9lcyBTeXprYWxsZXIgYWN0dWFsbHkgaW5qZWN0IGludGVycnVwdHMgaW50byBQQ0kgZGV2aWNlcyBkaXJlY3RseT8gSSBrbm93IGl0ICpzdXBwb3J0cyogUENJIGZ1enppbmcsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSBpZiB0aGF0IGluY2x1ZGVzIGludGVycnVwdCBpbmplY3Rpb24uIElmIGl0JiMzOTtzIGEgUENJIGRyaXZlciwgdGhlbiBpdCBzaG91bGQgYmUgcmVhY2hhYmxlIGJ5IHN5emthbGxlciBvbmUgd2F5IG9yIGFub3RoZXIuCgpMZXQmIzM5O3Mgc2VlLCB0aGlzIHBhdGNoIHNwZWNpZmljYWxseSBhZGRzIGBSRUdfSU5UX1NUQVRfQkVJYCB0byB0aGUgZXJyb3IgaW50ZXJydXB0cyBoYW5kbGVkIGluIGBjdHVjYW5faW50ZXJydXB0YC4gSG1tbSwgaXMgdGhpcyBlbm91Z2ggb2YgYSBjaGFuZ2UgdG8gd2FycmFudCBmdXp6aW5nPyBJdCAqaXMqIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgZHJpdmVyLCBzbyB0aGUgYW5zd2VyIGlzIHByb2JhYmx5IHllcy4KClNpbmNlIGBjdHVjYW5faW50ZXJydXB0YCBpcyB0aGUgaW50ZXJydXB0IGhhbmRsZXIsIEkgc2hvdWxkIGxvb2sgYXQgYGN0dWNhbl9lcnJfaW50ZXJydXB0YCBvciBhbnkgc2ltaWxhcmx5IG5hbWVkIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGN0dWNhbl9pbnRlcnJ1cHRgLCBzbyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBmb2N1cyBuZWVkcyB0byBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTI6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTEyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMTIwOlx0XHRcdFx0LyogTWFzayBSWEJORUkgdGhlIGZpcnN0LCB0aGVuIGNsZWFyIGludGVycnVwdCBhbmQgc2NoZWR1bGUgTkFQSS4gRXZlbiBpZlxuMTEyMTpcdFx0XHRcdCAqIGFub3RoZXIgSVJRIGZpcmVzLCBSQk5FSSB3aWxsIGFsd2F5cyBiZSAwIChtYXNrZWQpLlxuMTEyMjpcdFx0XHRcdCAqL1xuMTEyMzpcdFx0XHRcdGljciA9IFJFR19JTlRfU1RBVF9SQk5FSTtcbjExMjQ6XHRcdFx0XHRjdHVjYW5fd3JpdGUzMihwcml2LCBDVFVDQU5GRF9JTlRfTUFTS19TRVQsIGljcik7XG4xMTI1Olx0XHRcdFx0Y3R1Y2FuX3dyaXRlMzIocHJpdiwgQ1RVQ0FORkRfSU5UX1NUQVQsIGljcik7XG4xMTI2Olx0XHRcdFx0bmFwaV9zY2hlZHVsZShcdTAwMjZwcml2LVx1MDAzZW5hcGkpO1xuMTEyNzpcdFx0XHR9XG4xMTI4Olx0XG4xMTI5Olx0XHRcdC8qIFRYVCBCdWZmZXIgSFcgQ29tbWFuZCBJbnRlcnJ1cHQgKi9cbjExMzA6XHRcdFx0aWYgKEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfVFhCSENJLCBpc3IpKSB7XG4xMTMxOlx0XHRcdFx0Y3R1Y2FuX25ldGRldl9kYmcobmRldiwgXCYjMzQ7VFhCSENJXFxuXCYjMzQ7KTtcbjExMzI6XHRcdFx0XHQvKiBDbGVhcmVkIGluc2lkZSAqL1xuMTEzMzpcdFx0XHRcdGN0dWNhbl90eF9pbnRlcnJ1cHQobmRldik7XG4xMTM0Olx0XHRcdH1cbjExMzU6XHRcbjExMzY6XHRcdFx0LyogRXJyb3IgaW50ZXJydXB0cyAqL1xuMTEzNzpcdFx0XHRpZiAoRklFTERfR0VUKFJFR19JTlRfU1RBVF9FV0xJLCBpc3IpIHx8XG4xMTM4Olx0XHRcdCAgICBGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX0ZDU0ksIGlzcikgfHxcbjExMzk6XHRcdFx0ICAgIEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfQUxJLCBpc3IpIHx8XG4xMTQwOlx0XHRcdCAgICBGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX0JFSSwgaXNyKSkge1xuMTE0MTpcdFx0XHRcdGljciA9IGlzciBcdTAwMjYgKFJFR19JTlRfU1RBVF9FV0xJIHxcbjExNDI6XHRcdFx0XHRcdCAgICAgUkVHX0lOVF9TVEFUX0ZDU0kgfFxuMTE0MzpcdFx0XHRcdFx0ICAgICBSRUdfSU5UX1NUQVRfQUxJIHxcbjExNDQ6XHRcdFx0XHRcdCAgICAgUkVHX0lOVF9TVEFUX0JFSSk7XG4xMTQ1Olx0XG4xMTQ2Olx0XHRcdFx0Y3R1Y2FuX25ldGRldl9kYmcobmRldiwgXCYjMzQ7c29tZSBFUlIgaW50ZXJydXB0OiBjbGVhcmluZyAweCUwOHhcXG5cJiMzNDssIGljcik7XG4xMTQ3Olx0XHRcdFx0Y3R1Y2FuX3dyaXRlMzIocHJpdiwgQ1RVQ0FORkRfSU5UX1NUQVQsIGljcik7XG4xMTQ4Olx0XHRcdFx0Y3R1Y2FuX2Vycl9pbnRlcnJ1cHQobmRldiwgaXNyKTtcbjExNDk6XHRcdFx0fVxuMTE1MDpcdFx0XHQvKiBJZ25vcmUgUkksIFRJLCBMRkksIFJGSSwgQlNJICovXG4xMTUxOlx0XHR9XG4xMTUyOlx0XG4xMTUzOlx0XHRuZXRkZXZfZXJyKG5kZXYsIFwmIzM0OyVzOiBzdHVjayBpbnRlcnJ1cHQgKGlzcj0weCUwOHgpLCBzdG9wcGluZ1xcblwmIzM0OywgX19mdW5jX18sIGlzcik7XG4xMTU0Olx0XG4xMTU1Olx0XHRpZiAoRklFTERfR0VUKFJFR19JTlRfU1RBVF9UWEJIQ0ksIGlzcikpIHtcbjExNTY6XHRcdFx0aW50IGk7XG4xMTU3Olx0XG4xMTU4Olx0XHRcdG5ldGRldl9lcnIobmRldiwgXCYjMzQ7dHhiX2hlYWQ9MHglMDh4IHR4Yl90YWlsPTB4JTA4eFxcblwmIzM0OyxcbjExNTk6XHRcdFx0XHQgICBwcml2LVx1MDAzZXR4Yl9oZWFkLCBwcml2LVx1MDAzZXR4Yl90YWlsKTtcbjExNjA6XHRcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcHJpdi1cdTAwM2VudHhidWZzOyBpJiM0MzsmIzQzOykge1xuMTE2MTpcdFx0XHRcdHUzMiBzdGF0dXMgPSBjdHVjYW5fZ2V0X3R4X3N0YXR1cyhwcml2LCBpKTtcbjExNjI6XHRcbjExNjM6XHRcdFx0XHRuZXRkZXZfZXJyKG5kZXYsIFwmIzM0O3R4YlslZF0gdHhiIHN0YXR1cz0weCUwOHhcXG5cJiMzNDssIGksIHN0YXR1cyk7XG4xMTY0Olx0XHRcdH1cbjExNjU6XHRcdH1cbjExNjY6XHRcbjExNjc6XHRcdGltYXNrID0gMHhmZmZmZmZmZjtcbjExNjg6XHRcdGN0dWNhbl93cml0ZTMyKHByaXYsIENUVUNBTkZEX0lOVF9FTkFfQ0xSLCBpbWFzayk7XG4xMTY5Olx0XHRjdHVjYW5fd3JpdGUzMihwcml2LCBDVFVDQU5GRF9JTlRfTUFTS19TRVQsIGltYXNrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjcyNwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIENUVUNBTiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBSRUdfSU5UX1NUQVRfQkVJYCBpbnRvIHRoZSBlcnJvciBpbnRlcnJ1cHQgaGFuZGxpbmcgd2l0aGluIHRoZSBgY3R1Y2FuX2ludGVycnVwdGAgZnVuY3Rpb24uIFRoYXQmIzM5O3MgYSBkaXJlY3QgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGRyaXZlciYjMzk7cyBpbnRlcnJ1cHQgaGFuZGxlciDigJMgc3BlY2lmaWNhbGx5IGBjdHVjYW5faW50ZXJydXB0YC4gSSBuZWVkIHRvIGZvY3VzIG9uIGJvdGggYGN0dWNhbl9pbnRlcnJ1cHRgIGFuZCwgdG8gYSBsZXNzZXIgZXh0ZW50LCBgY3R1Y2FuX2Vycl9pbnRlcnJ1cHRgLgoKVGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYENBTl9DVFVDQU5GRGAgYW5kLCBpbXBvcnRhbnRseSwgZWl0aGVyIG9yIGJvdGggb2YgYENBTl9DVFVDQU5GRF9QQ0lgIGFuZCBgQ0FOX0NUVUNBTkZEX1BMQVRGT1JNYC4gSSBuZWVkIHRvIGNsYXJpZnkgaWYgYENBTl9DVFVDQU5GRF9QQ0lgIGlzIHRoZSAqb25seSogcGF0aCB0byB0aGlzLiBOb3BlLCBgQ0FOX0NUVUNBTkZEX1BMQVRGT1JNYCBpcyBhbiBvcHRpb24gYXMgd2VsbC4gV2UgY2FuIGhhdmUgYm90aCBlbmFibGVkLCB3aGljaCBpcyBnb29kIHRvIGtlZXAgaW4gbWluZCBmb3IgdGVzdGluZy4KCk5vdywgYSBxdWljayBjaGVjazogaXMgYGN0dWNhbl9lcnJfaW50ZXJydXB0YCBiZWluZyBkaXJlY3RseSBtb2RpZmllZCwgb3IgaXMgaXQganVzdCBiZWluZyAqY2FsbGVkKj8gTG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIGlzb2xhdGVkIHdpdGhpbiBgY3R1Y2FuX2ludGVycnVwdGAsIHdpdGggYGN0dWNhbl9lcnJfaW50ZXJydXB0YCBiZWluZyBhIGNhbGwgZnJvbSBgY3R1Y2FuX2ludGVycnVwdGAuCgpJcyB0aGlzIGZ1enphYmxlPyBBYnNvbHV0ZWx5LiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHdpdGhpbiBhIGRyaXZlci4gVGhlIHJlYWwgcXVlc3Rpb24gaXM6IGNhbiBzeXprYWxsZXIgKmFjdHVhbGx5KiByZWFjaCB0aGlzIGNvZGUgcGF0aD8gVGhlIGFuc3dlciBpcyB5ZXMsIGdpdmVuIGl0IGNhbiBzaW11bGF0ZSBQQ0kgZGV2aWNlcyBhbmQgaW5qZWN0IGludGVycnVwdHMuIFRoaXMgbWVhbnMgd2Ugc2hvdWxkIGJlIGFibGUgdG8gdHJpZ2dlciB0aGlzIGNoYW5nZSB0aHJvdWdoIGZ1enppbmcuCgpMZXQmIzM5O3MganVzdCBkb3VibGUtY2hlY2sgdGhvc2UgY29uZmlnIG9wdGlvbnMgb25lIG1vcmUgdGltZSB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDEyOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NBTl9DVFVDQU5GRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWc6MTpjb25maWcgQ0FOX0NUVUNBTkZEXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZy0yLVx0dHJpc3RhdGUgXCYjMzQ7Q1RVIENBTi1GRCBJUCBjb3JlXCYjMzQ7IGlmIENPTVBJTEVfVEVTVFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWc6MTQ6Y29uZmlnIENBTl9DVFVDQU5GRF9QQ0lcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7Q1RVIENBTi1GRCBJUCBjb3JlIFBDSS9QQ0llIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMTYtXHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWc6MTc6XHRzZWxlY3QgQ0FOX0NUVUNBTkZEXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZy0xOC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZy0yMy1cbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnOjI0OmNvbmZpZyBDQU5fQ1RVQ0FORkRfUExBVEZPUk1cbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnLTI1LVx0dHJpc3RhdGUgXCYjMzQ7Q1RVIENBTi1GRCBJUCBjb3JlIHBsYXRmb3JtIChGUEdBLCBTb0MpIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMjYtXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgT0ZcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnOjI3Olx0c2VsZWN0IENBTl9DVFVDQU5GRFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMjgtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfQ0FOX0NUVUNBTkZEKSA6PSBjdHVjYW5mZC5vXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvTWFrZWZpbGUtNy1jdHVjYW5mZC15IDo9IGN0dWNhbmZkX2Jhc2Uub1xuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL01ha2VmaWxlLTgtXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfQ0FOX0NUVUNBTkZEX1BDSSkgJiM0Mzs9IGN0dWNhbmZkX3BjaS5vXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX0NBTl9DVFVDQU5GRF9QTEFURk9STSkgJiM0Mzs9IGN0dWNhbmZkX3BsYXRmb3JtLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMTI6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk0MgoJCQkJCQkJb3V0cHV0OiAxMDkKCQkJCQkJCXRob3VnaHRzOiAzNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDVFVDQU5GRCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgQ1RVQ0FORkQgZHJpdmVyIGFuZCB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGNvbmZpcm0gYXJlIHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlndXJhdGlvbnMuIEkgc2VlIHRoYXQgYENBTl9DVFVDQU5GRGAsIGBDQU5fQ1RVQ0FORkRfUENJYCwgYW5kIGBDQU5fQ1RVQ0FORkRfUExBVEZPUk1gIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyB0byBldmVuIG1hdHRlci4gIEFuZCBpdCBzZWVtcyB0aGUgY3JpdGljYWwgc3ltYm9sIHRoYXQgdGhpcyBwYXRjaCB0b3VjaGVzIGlzIGBjdHVjYW5faW50ZXJydXB0YC4KCk5vdywgZGlnZ2luZyBpbnRvIHRoZSBwYXRjaCBpdHNlbGYuLi4gd293LCB0aGlzIGlzIGluY3JlZGlibHkgc3RyYWlnaHRmb3J3YXJkLiBJdCYjMzk7cyByZWFsbHkganVzdCBhIG1pbm9yIGFkZGl0aW9uIHRvIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgbG9naWMgaW4gYGN0dWNhbl9pbnRlcnJ1cHRgLiBTcGVjaWZpY2FsbHksIGl0IGFkZHMgdGhlIGhhbmRsaW5nIGZvciBgUkVHX0lOVF9TVEFUX0JFSWAsIHdoaWNoIHNlZW1zIHRvIGJlIGEgJiMzNDtCdXMgRXJyb3IgSW50ZXJydXB0JiMzNDsuICBJdCYjMzk7cyBzaW1wbHkgaW5jbHVkZWQgaW4gdGhlIGVycm9yIGludGVycnVwdCBtYXNrIHdpdGhpbiB0aGUgYGlmYCBzdGF0ZW1lbnQuIEFuZCB0aGUgYml0IGlzIGNsZWFyZWQgaW4gdGhlIGZvbGxvd2luZyB3cml0ZSwgYWZ0ZXIgbG9nZ2luZyB0aGUgZXJyb3IuIFRoaXMgaXMgYWJzb2x1dGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZS4gIEl04oCZcyBhZGRpbmcgYnVzIGVycm9yIGRldGVjdGlvbi4KCkkmIzM5O2QgY2xhc3NpZnkgdGhpcyBjaGFuZ2UgYXMgYSBjbGVhciBhbmQgZnVuY3Rpb25hbCBpbXByb3ZlbWVudC4gVGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGNhbGxpbmcgdGhlIHNldC1yZXN1bHRzIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAxMjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0FOX0NUVUNBTkZEJiMzNDssCiAgICAmIzM0O0NBTl9DVFVDQU5GRF9QQ0kmIzM0OywKICAgICYjMzQ7Q0FOX0NUVUNBTkZEX1BMQVRGT1JNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3R1Y2FuX2ludGVycnVwdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW50ZXJydXB0IGhhbmRsZXIgb2YgdGhlIENUVSBDQU4gRkQgZHJpdmVyIHRvIGhhbmRsZSB0aGUgQnVzIEVycm9yIEludGVycnVwdCAoQkVJKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFBDSSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDQU5fQ1RVQ0FORkQmIzM0OywKICAgICYjMzQ7Q0FOX0NUVUNBTkZEX1BDSSYjMzQ7LAogICAgJiMzNDtDQU5fQ1RVQ0FORkRfUExBVEZPUk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjdHVjYW5faW50ZXJydXB0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBvZiB0aGUgQ1RVIENBTiBGRCBkcml2ZXIgdG8gaGFuZGxlIHRoZSBCdXMgRXJyb3IgSW50ZXJydXB0IChCRUkpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgUENJIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMjoyNDoyMi4zMDE5MTE5ODRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzI5ODIxMjM4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDQU5fQ1RVQ0FORkRcIixcbiAgICBcIkNBTl9DVFVDQU5GRF9QQ0lcIixcbiAgICBcIkNBTl9DVFVDQU5GRF9QTEFURk9STVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN0dWNhbl9pbnRlcnJ1cHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW50ZXJydXB0IGhhbmRsZXIgb2YgdGhlIENUVSBDQU4gRkQgZHJpdmVyIHRvIGhhbmRsZSB0aGUgQnVzIEVycm9yIEludGVycnVwdCAoQkVJKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFBDSSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMjoyNDoyMi4zMDE5MTg2NzVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyODMzNzU5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDZkZTI4ZTFkN2RmZWJhNDBjYzk5MGU2Mjg3ZDQxNjIwZjVmNGQyYjlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMjQgMTI6MjQ6MjAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuYyBiL2RyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmNcXG5pbmRleCAwZWExZmYyOGRmY2U4Yi4uMGNkMmQ0MjhjMWYxNTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmNcXG5AQCAtMTEzNiw4ICsxMTM2LDEyIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBjdHVjYW5faW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pZClcXG4gXFx0XFx0LyogRXJyb3IgaW50ZXJydXB0cyAqL1xcbiBcXHRcXHRpZiAoRklFTERfR0VUKFJFR19JTlRfU1RBVF9FV0xJLCBpc3IpIHx8XFxuIFxcdFxcdCAgICBGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX0ZDU0ksIGlzcikgfHxcXG4tXFx0XFx0ICAgIEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfQUxJLCBpc3IpKSB7XFxuLVxcdFxcdFxcdGljciA9IGlzciBcXHUwMDI2IChSRUdfSU5UX1NUQVRfRVdMSSB8IFJFR19JTlRfU1RBVF9GQ1NJIHwgUkVHX0lOVF9TVEFUX0FMSSk7XFxuK1xcdFxcdCAgICBGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX0FMSSwgaXNyKSB8fFxcbitcXHRcXHQgICAgRklFTERfR0VUKFJFR19JTlRfU1RBVF9CRUksIGlzcikpIHtcXG4rXFx0XFx0XFx0aWNyID0gaXNyIFxcdTAwMjYgKFJFR19JTlRfU1RBVF9FV0xJIHxcXG4rXFx0XFx0XFx0XFx0ICAgICBSRUdfSU5UX1NUQVRfRkNTSSB8XFxuK1xcdFxcdFxcdFxcdCAgICAgUkVHX0lOVF9TVEFUX0FMSSB8XFxuK1xcdFxcdFxcdFxcdCAgICAgUkVHX0lOVF9TVEFUX0JFSSk7XFxuIFxcbiBcXHRcXHRcXHRjdHVjYW5fbmV0ZGV2X2RiZyhuZGV2LCBcXFwic29tZSBFUlIgaW50ZXJydXB0OiBjbGVhcmluZyAweCUwOHhcXFxcblxcXCIsIGljcik7XFxuIFxcdFxcdFxcdGN0dWNhbl93cml0ZTMyKHByaXYsIENUVUNBTkZEX0lOVF9TVEFULCBpY3IpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMjoyNDoyMi43MzA5MDg1NDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3Mjg2OTIwMjYxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDQU5fQ1RVQ0FORkRcIixcbiAgICBcIkNBTl9DVFVDQU5GRF9QQ0lcIixcbiAgICBcIkNBTl9DVFVDQU5GRF9QTEFURk9STVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN0dWNhbl9pbnRlcnJ1cHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW50ZXJydXB0IGhhbmRsZXIgb2YgdGhlIENUVSBDQU4gRkQgZHJpdmVyIHRvIGhhbmRsZSB0aGUgQnVzIEVycm9yIEludGVycnVwdCAoQkVJKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFBDSSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDZkZTI4ZTFkN2RmZWJhNDBjYzk5MGU2Mjg3ZDQxNjIwZjVmNGQyYjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAxMjoyNDoyMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmMgYi9kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jXG5pbmRleCAwZWExZmYyOGRmY2U4Yi4uMGNkMmQ0MjhjMWYxNTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jXG5AQCAtMTEzNiw4ICsxMTM2LDEyIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBjdHVjYW5faW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pZClcbiBcdFx0LyogRXJyb3IgaW50ZXJydXB0cyAqL1xuIFx0XHRpZiAoRklFTERfR0VUKFJFR19JTlRfU1RBVF9FV0xJLCBpc3IpIHx8XG4gXHRcdCAgICBGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX0ZDU0ksIGlzcikgfHxcbi1cdFx0ICAgIEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfQUxJLCBpc3IpKSB7XG4tXHRcdFx0aWNyID0gaXNyIFx1MDAyNiAoUkVHX0lOVF9TVEFUX0VXTEkgfCBSRUdfSU5UX1NUQVRfRkNTSSB8IFJFR19JTlRfU1RBVF9BTEkpO1xuK1x0XHQgICAgRklFTERfR0VUKFJFR19JTlRfU1RBVF9BTEksIGlzcikgfHxcbitcdFx0ICAgIEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfQkVJLCBpc3IpKSB7XG4rXHRcdFx0aWNyID0gaXNyIFx1MDAyNiAoUkVHX0lOVF9TVEFUX0VXTEkgfFxuK1x0XHRcdFx0ICAgICBSRUdfSU5UX1NUQVRfRkNTSSB8XG4rXHRcdFx0XHQgICAgIFJFR19JTlRfU1RBVF9BTEkgfFxuK1x0XHRcdFx0ICAgICBSRUdfSU5UX1NUQVRfQkVJKTtcbiBcbiBcdFx0XHRjdHVjYW5fbmV0ZGV2X2RiZyhuZGV2LCBcInNvbWUgRVJSIGludGVycnVwdDogY2xlYXJpbmcgMHglMDh4XFxuXCIsIGljcik7XG4gXHRcdFx0Y3R1Y2FuX3dyaXRlMzIocHJpdiwgQ1RVQ0FORkRfSU5UX1NUQVQsIGljcik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMjoyNDoyMi43MzA5MDk2MjJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjE2MDIzMjA1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDQU4gRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmNgLiBJdCdzIGFkZGluZyBgUkVHX0lOVF9TVEFUX0JFSWAgdG8gdGhlIGludGVycnVwdCBoYW5kbGluZyB3aXRoaW4gdGhlIGBjdHVjYW5faW50ZXJydXB0YCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIkNhbiB3ZSBhY3R1YWxseSB0ZXN0IHRoaXMsIGFuZCBpcyB0aGlzIGV2ZW4gYSByZWxldmFudCBjaGFuZ2U/XCIgVGhpcyBpcyBhIENBTiBkcml2ZXIsIHNvIG15IG1pbmQgaW1tZWRpYXRlbHkgZ29lcyB0byBmdXp6aW5nLiBDQU4gZHJpdmVycyBhcmUgb2Z0ZW4gdnVsbmVyYWJsZSBpZiB0aGVyZSdzIGEgdmlydHVhbCBDQU4gc2V0dXAgb3IgYSB3YXkgdG8gdHJpZ2dlciBldmVudHMuIEJ1dCwgaG9sZCBvbuKApiBgY3R1Y2FuZmRgIHNwZWNpZmljYWxseSwgdGhhdOKAmXMgYSAqaGFyZHdhcmUqIENBTiBkcml2ZXIuIFRoYXQgcmFpc2VzIGEgc2lnbmlmaWNhbnQgcXVlc3Rpb246IGNhbiB3ZSBldmVuICpyZWFjaCogdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB3aGljaCBpcyB3aGVyZSBhIGxvdCBvZiBvdXIgdGVzdGluZyBpcyBkb25lPyBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhpcyBkcml2ZXIgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGFuZCBhbnkgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zLiBTcGVjaWZpY2FsbHksIEknbGwgYmUgY2hlY2tpbmcgYGRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnYCB0byBzZWUgd2hhdCBJIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTE3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTI6MjU6MDQuODkxMTQzNzg1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NDQ1NTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImN0dWNhbmZkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnPTE9Y29uZmlnIENBTl9DVFVDQU5GRFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctNS1cXHQgIE1vcmUgZG9jdW1lbnRhdGlvbiBhbmQgY29yZSBzb3VyY2VzIGF0IHByb2plY3QgcGFnZVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnOjY6XFx0ICAoaHR0cHM6Ly9naXRsYWIuZmVsLmN2dXQuY3ovY2FuYnVzL2N0dWNhbmZkX2lwX2NvcmUpLlxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnLTctXFx0ICBUaGUgY29yZSBpbnRlZ3JhdGlvbiB0byBYaWxpbnggWnlucSBzeXN0ZW0gYXMgcGxhdGZvcm0gZHJpdmVyXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZy05LVxcdCAgSW1wbGVtZW50YXRpb24gb24gSW50ZWwgRlBHQS1iYXNlZCBQQ0kgRXhwcmVzcyBib2FyZCBpcyBhdmFpbGFibGVcXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZzoxMDpcXHQgIGZyb20gcHJvamVjdCAoaHR0cHM6Ly9naXRsYWIuZmVsLmN2dXQuY3ovY2FuYnVzL3BjaWUtY3R1Y2FuZmQpIGFuZFxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnOjExOlxcdCAgb24gSW50ZWwgU29DIGZyb20gcHJvamVjdCAoaHR0cHM6Ly9naXRsYWIuZmVsLmN2dXQuY3ovY2FuYnVzL2ludGVsLXNvYy1jdHVjYW5mZCkuXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMTItXFx0ICBHdWlkZXBvc3QgQ1RVIEZFRSBDQU4gYnVzIHByb2plY3RzIHBhZ2UgaHR0cHM6Ly9jYW5idXMucGFnZXMuZmVsLmN2dXQuY3ovIC5cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnPTE0PWNvbmZpZyBDQU5fQ1RVQ0FORkRfUENJXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZy0yMS1cXHQgIFBDSWUgYm9hcmQgd2l0aCBQaUtST04uY29tIGRlc2lnbmVkIHRyYW5zY2VpdmVyIHJpc2VyIHNoaWVsZCBpcyBhdmFpbGFibGVcXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZzoyMjpcXHQgIGF0IGh0dHBzOi8vZ2l0bGFiLmZlbC5jdnV0LmN6L2NhbmJ1cy9wY2llLWN0dWNhbmZkIC5cXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZy0yMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTI6MjU6MDQuOTQ5NTk1NTIzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ5MTEwMDg5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBDVFUgQ0FOIEZEIElQIENvcmUgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBoYXJkd2FyZSBDQU4gZHJpdmVyIGZvciB0aGUgQ1RVIENBTiBGRCBJUCBjb3JlLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGluIG15IG1pbmQgaXMsIGNhbiBJIGVmZmVjdGl2ZWx5IGZ1enogdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJJ20gZ2VuZXJhbGx5IHdhcnkgb2YgaGFyZHdhcmUgZHJpdmVycyB0aGF0IGFyZW4ndCBlbXVsYXRlZCBvciB2aXJ0dWFsaXplZCwgYmVjYXVzZSwgbGV0J3MgZmFjZSBpdCwgdGhleSdyZSB1c3VhbGx5IHVucmVhY2hhYmxlIGluIHRoZSB0eXBpY2FsIHNldHVwLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGEgUENJIGRyaXZlciBhc3NvY2lhdGVkIHdpdGggaXQuIEFoYSwgeWVzISBUaGVyZSdzIGBDQU5fQ1RVQ0FORkRfUENJYC4gVGhpcyBpcyBwcm9taXNpbmcuIFN5emthbGxlciwgd2l0aCBpdHMgdmlydHVhbCBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMg4oCTIHRoaW5rIGBzeXpfcGNpX2RldmljZV9hZGRgIGFuZCBzaW1pbGFyIGFwcHJvYWNoZXMsIG9yIHNpbXBseSB0aGUgZ2VuZXJhbCBQQ0kgZnV6emluZyBpZiBlbmFibGVkIOKAkyBjb3VsZCBiZSBhIHZpYWJsZSBwYXRoLiBTbywgbGV0J3MgY29uZmlybSB0aGUgZXhpc3RlbmNlIGFuZCBwb3RlbnRpYWwgb2YgdGhpcyBQQ0kgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTY3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDEyOjI1OjA5LjQ0MDY5ODYwNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzEwMTc0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jPTI2ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgY3R1Y2FuX3BjaV90YmxbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9wY2kuYy0yNjktXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jOjI3MDpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgY3R1Y2FuX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jLTI3MS1cXHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jLTI3Ny1cXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfcGNpLmM6Mjc4Om1vZHVsZV9wY2lfZHJpdmVyKGN0dWNhbl9wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfcGNpLmMtMjc5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMjoyNTowOS40OTc4MDc1NjRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTM3MzA1MTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBDSSBGdXp6aW5nIHdpdGggU3l6a2FsbGVyOiBFbmFibGluZyBDQU4tQ1RVQ0FORkQqKlxuXG5Pa2F5LCBzbyB0aGVyZSAqaXMqIGEgUENJIGRyaXZlciBpbiBwbGF5IGhlcmUg4oCTIGdvb2QgdG8ga25vdy4gQW5kIHRoZSBnb29kIG5ld3MgaXMsIHN5emthbGxlciAqY2FuKiBoYW5kbGUgUENJIGRldmljZSBmdXp6aW5nLiBJIHJlY2FsbCB0aGF0IGl0J3Mgc2V0IHVwIHRvIHNpbXVsYXRlIFBDSSBkZXZpY2VzIHRvIGRvIHRoaXMuXG5cblRoYXQgdHJpZ2dlcnMgc29tZXRoaW5nOiAgZ2l2ZW4gdGhhdCB3ZSBoYXZlIFBDSSBjYXBhYmlsaXR5IHdpdGggc3l6a2FsbGVyLCB3ZSByZWFsbHkgbmVlZCB0byBnZXQgYENBTl9DVFVDQU5GRF9QQ0lgIGVuYWJsZWQsIGFuZCBvZiBjb3Vyc2UgYENBTl9DVFVDQU5GRGAgbmVlZHMgdG8gYmUgdGhlcmUsIHRvby4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGVpciBLY29uZmlnIGVudHJpZXMgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgZXZlcnl0aGluZyBpcyBhcyBpdCBzaG91bGQgYmUuIExldCdzIGxvb2sgYXQgdGhlIGNvbmZpZyBvcHRpb25zIVxuXG5cbiIsIklucHV0VG9rZW5zIjozNTc1LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTI6MjU6MTMuNjM1MTE0ODk2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Y29uZmlnIENBTl9DVFVDQU5GRFxcbiAgIDI6XFx0XFx0dHJpc3RhdGUgXFxcIkNUVSBDQU4tRkQgSVAgY29yZVxcXCIgaWYgQ09NUElMRV9URVNUXFxuICAgMzpcXHRcXHRoZWxwXFxuICAgNDpcXHRcXHQgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgdGhlIENUVSBDQU4gRkQgb3Blbi1zb3VyY2UgSVAgY29yZS5cXG4gICA1OlxcdFxcdCAgTW9yZSBkb2N1bWVudGF0aW9uIGFuZCBjb3JlIHNvdXJjZXMgYXQgcHJvamVjdCBwYWdlXFxuICAgNjpcXHRcXHQgIChodHRwczovL2dpdGxhYi5mZWwuY3Z1dC5jei9jYW5idXMvY3R1Y2FuZmRfaXBfY29yZSkuXFxuICAgNzpcXHRcXHQgIFRoZSBjb3JlIGludGVncmF0aW9uIHRvIFhpbGlueCBaeW5xIHN5c3RlbSBhcyBwbGF0Zm9ybSBkcml2ZXJcXG4gICA4OlxcdFxcdCAgaXMgYXZhaWxhYmxlIChodHRwczovL2dpdGxhYi5mZWwuY3Z1dC5jei9jYW5idXMvenlucS96eW5xLWNhbi1zamExMDAwLXRvcCkuXFxuICAgOTpcXHRcXHQgIEltcGxlbWVudGF0aW9uIG9uIEludGVsIEZQR0EtYmFzZWQgUENJIEV4cHJlc3MgYm9hcmQgaXMgYXZhaWxhYmxlXFxuICAxMDpcXHRcXHQgIGZyb20gcHJvamVjdCAoaHR0cHM6Ly9naXRsYWIuZmVsLmN2dXQuY3ovY2FuYnVzL3BjaWUtY3R1Y2FuZmQpIGFuZFxcbiAgMTE6XFx0XFx0ICBvbiBJbnRlbCBTb0MgZnJvbSBwcm9qZWN0IChodHRwczovL2dpdGxhYi5mZWwuY3Z1dC5jei9jYW5idXMvaW50ZWwtc29jLWN0dWNhbmZkKS5cXG4gIDEyOlxcdFxcdCAgR3VpZGVwb3N0IENUVSBGRUUgQ0FOIGJ1cyBwcm9qZWN0cyBwYWdlIGh0dHBzOi8vY2FuYnVzLnBhZ2VzLmZlbC5jdnV0LmN6LyAuXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBDQU5fQ1RVQ0FORkRfUENJXFxuICAxNTpcXHRcXHR0cmlzdGF0ZSBcXFwiQ1RVIENBTi1GRCBJUCBjb3JlIFBDSS9QQ0llIGRyaXZlclxcXCJcXG4gIDE2OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAxNzpcXHRcXHRzZWxlY3QgQ0FOX0NUVUNBTkZEXFxuICAxODpcXHRcXHRoZWxwXFxuICAxOTpcXHRcXHQgIFRoaXMgZHJpdmVyIGFkZHMgUENJL1BDSWUgc3VwcG9ydCBmb3IgQ1RVIENBTi1GRCBJUCBjb3JlLlxcbiAgMjA6XFx0XFx0ICBUaGUgcHJvamVjdCBwcm92aWRpbmcgRlBHQSBkZXNpZ24gZm9yIEludGVsIEVQNENHWDE1IGJhc2VkIERCNENHWDE1XFxuICAyMTpcXHRcXHQgIFBDSWUgYm9hcmQgd2l0aCBQaUtST04uY29tIGRlc2lnbmVkIHRyYW5zY2VpdmVyIHJpc2VyIHNoaWVsZCBpcyBhdmFpbGFibGVcXG4gIDIyOlxcdFxcdCAgYXQgaHR0cHM6Ly9naXRsYWIuZmVsLmN2dXQuY3ovY2FuYnVzL3BjaWUtY3R1Y2FuZmQgLlxcbiAgMjM6XFx0XFxuICAyNDpcXHRjb25maWcgQ0FOX0NUVUNBTkZEX1BMQVRGT1JNXFxuICAyNTpcXHRcXHR0cmlzdGF0ZSBcXFwiQ1RVIENBTi1GRCBJUCBjb3JlIHBsYXRmb3JtIChGUEdBLCBTb0MpIGRyaXZlclxcXCJcXG4gIDI2OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IE9GXFxuICAyNzpcXHRcXHRzZWxlY3QgQ0FOX0NUVUNBTkZEXFxuICAyODpcXHRcXHRoZWxwXFxuICAyOTpcXHRcXHQgIFRoZSBjb3JlIGhhcyBiZWVuIHRlc3RlZCB0b2dldGhlciB3aXRoIE9wZW5Db3JlcyBTSkExMDAwXFxuICAzMDpcXHRcXHQgIG1vZGlmaWVkIHRvIGJlIENBTiBGRCBmcmFtZXMgdG9sZXJhbnQgb24gTWljcm9aZWQgWnlucSBiYXNlZFxcbiAgMzE6XFx0XFx0ICBNWl9BUE8gZWR1Y2F0aW9uIGtpdHMgZGVzaWduZWQgYnkgUGV0ciBQb3JhemlsIGZyb20gUGlLUk9OLmNvbVxcbiAgMzI6XFx0XFx0ICBjb21wYW55LiBGUEdBIGRlc2lnbiBodHRwczovL2dpdGxhYi5mZWwuY3Z1dC5jei9jYW5idXMvenlucS96eW5xLWNhbi1zamExMDAwLXRvcC5cXG4gIDMzOlxcdFxcdCAgVGhlIGtpdCBkZXNjcmlwdGlvbiBhdCB0aGUgQ29tcHV0ZXIgQXJjaGl0ZWN0dXJlcyBjb3Vyc2UgcGFnZXNcXG4gIDM0OlxcdFxcdCAgaHR0cHM6Ly9jdy5mZWwuY3Z1dC5jei93aWtpL2NvdXJzZXMvYjM1YXBvL2RvY3VtZW50YXRpb24vbXpfYXBvL3N0YXJ0IC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTI6MjU6MTMuNjM1MTgwMzA2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0ODk4Nzk5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludGVycnVwdCBIYW5kbGVyIEludmVzdGlnYXRpb24qKlxuXG5BbHJpZ2h0LCBpdCBsb29rcyBsaWtlIGBDQU5fQ1RVQ0FORkRfUENJYCBpcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCdzIHRyaWdnZXJpbmcgdGhlIGluY2x1c2lvbiBvZiBgQ0FOX0NUVUNBTkZEYC4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgZm9jdXMgaXMgbm93IG9uIHRoZSBgY3R1Y2FuX2ludGVycnVwdGAgZnVuY3Rpb24sIHdoaWNoIHJlc2lkZXMgd2l0aGluIGBkcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY29uZmlybSB3aGV0aGVyIGBjdHVjYW5faW50ZXJydXB0YCBpcyBpbmRlZWQgdGhlIHByaW1hcnkgaW50ZXJydXB0IGhhbmRsZXIgZm9yIHRoaXMgQ0FOIGNvbnRyb2xsZXIuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBhc3N1bXB0aW9uIGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggYW55IGRlZXBlciBhbmFseXNpcy4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIGZsb3cgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU3OSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTI6MjU6MTYuOTg0MTcwMzcxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzUzMDcxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjdHVjYW5faW50ZXJydXB0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuYz05OTU9c3RhdGljIHZvaWQgY3R1Y2FuX3R4X2ludGVycnVwdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmMtMTA5MS0vKipcXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jOjEwOTI6ICogY3R1Y2FuX2ludGVycnVwdCgpIC0gQ0FOIElzclxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmMtMTA5My0gKiBAaXJxOlxcdGlycSBudW1iZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmMtMTEwMS0gKi9cXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jOjExMDI6c3RhdGljIGlycXJldHVybl90IGN0dWNhbl9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmMtMTEwMy17XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jPTEyMDQ9c3RhdGljIGludCBjdHVjYW5fb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmMtMTIyNy1cXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jOjEyMjg6XFx0cmV0ID0gcmVxdWVzdF9pcnEobmRldi1cXHUwMDNlaXJxLCBjdHVjYW5faW50ZXJydXB0LCBwcml2LVxcdTAwM2VpcnFfZmxhZ3MsIG5kZXYtXFx1MDAzZW5hbWUsIG5kZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmMtMTIyOS1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMjoyNToxNy4wNDE3MDY4NjlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI3MzY4MTM4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBgY3R1Y2FuX2ludGVycnVwdGAgSGFuZGxlcioqXG5cbk9rYXksIHNvIGBjdHVjYW5faW50ZXJydXB0YCBpcyB0aGUgY2VudHJhbCBpbnRlcnJ1cHQgaGFuZGxlciwgdGhhdCBtdWNoIGlzIGNsZWFyLiBUaGUgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgaXQncyBmdXp6YWJsZS4gU3l6a2FsbGVyIGlzIHRoZSBvYnZpb3VzIHRvb2wsIGVzcGVjaWFsbHkgc2luY2UgaXQgY2FuIGZ1enogUENJIGRldmljZXMsIHdoaWNoIG9mdGVuIGludm9sdmVzIGluamVjdGluZyBpbnRlcnJ1cHRzLiBCdXQgd2FpdCwgZG9lcyBTeXprYWxsZXIgYWN0dWFsbHkgaW5qZWN0IGludGVycnVwdHMgaW50byBQQ0kgZGV2aWNlcyBkaXJlY3RseT8gSSBrbm93IGl0ICpzdXBwb3J0cyogUENJIGZ1enppbmcsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSBpZiB0aGF0IGluY2x1ZGVzIGludGVycnVwdCBpbmplY3Rpb24uIElmIGl0J3MgYSBQQ0kgZHJpdmVyLCB0aGVuIGl0IHNob3VsZCBiZSByZWFjaGFibGUgYnkgc3l6a2FsbGVyIG9uZSB3YXkgb3IgYW5vdGhlci5cblxuTGV0J3Mgc2VlLCB0aGlzIHBhdGNoIHNwZWNpZmljYWxseSBhZGRzIGBSRUdfSU5UX1NUQVRfQkVJYCB0byB0aGUgZXJyb3IgaW50ZXJydXB0cyBoYW5kbGVkIGluIGBjdHVjYW5faW50ZXJydXB0YC4gSG1tbSwgaXMgdGhpcyBlbm91Z2ggb2YgYSBjaGFuZ2UgdG8gd2FycmFudCBmdXp6aW5nPyBJdCAqaXMqIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgZHJpdmVyLCBzbyB0aGUgYW5zd2VyIGlzIHByb2JhYmx5IHllcy5cblxuU2luY2UgYGN0dWNhbl9pbnRlcnJ1cHRgIGlzIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciwgSSBzaG91bGQgbG9vayBhdCBgY3R1Y2FuX2Vycl9pbnRlcnJ1cHRgIG9yIGFueSBzaW1pbGFybHkgbmFtZWQgZnVuY3Rpb24uIFRoZSBwYXRjaCBtb2RpZmllcyBgY3R1Y2FuX2ludGVycnVwdGAsIHNvIHRoYXQncyB3aGVyZSB0aGUgZm9jdXMgbmVlZHMgdG8gYmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNjUsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMTI6MjU6MjMuMzE1MzkwOTYxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDExMjAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjExMjA6XFx0XFx0XFx0XFx0LyogTWFzayBSWEJORUkgdGhlIGZpcnN0LCB0aGVuIGNsZWFyIGludGVycnVwdCBhbmQgc2NoZWR1bGUgTkFQSS4gRXZlbiBpZlxcbjExMjE6XFx0XFx0XFx0XFx0ICogYW5vdGhlciBJUlEgZmlyZXMsIFJCTkVJIHdpbGwgYWx3YXlzIGJlIDAgKG1hc2tlZCkuXFxuMTEyMjpcXHRcXHRcXHRcXHQgKi9cXG4xMTIzOlxcdFxcdFxcdFxcdGljciA9IFJFR19JTlRfU1RBVF9SQk5FSTtcXG4xMTI0OlxcdFxcdFxcdFxcdGN0dWNhbl93cml0ZTMyKHByaXYsIENUVUNBTkZEX0lOVF9NQVNLX1NFVCwgaWNyKTtcXG4xMTI1OlxcdFxcdFxcdFxcdGN0dWNhbl93cml0ZTMyKHByaXYsIENUVUNBTkZEX0lOVF9TVEFULCBpY3IpO1xcbjExMjY6XFx0XFx0XFx0XFx0bmFwaV9zY2hlZHVsZShcXHUwMDI2cHJpdi1cXHUwMDNlbmFwaSk7XFxuMTEyNzpcXHRcXHRcXHR9XFxuMTEyODpcXHRcXG4xMTI5OlxcdFxcdFxcdC8qIFRYVCBCdWZmZXIgSFcgQ29tbWFuZCBJbnRlcnJ1cHQgKi9cXG4xMTMwOlxcdFxcdFxcdGlmIChGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX1RYQkhDSSwgaXNyKSkge1xcbjExMzE6XFx0XFx0XFx0XFx0Y3R1Y2FuX25ldGRldl9kYmcobmRldiwgXFxcIlRYQkhDSVxcXFxuXFxcIik7XFxuMTEzMjpcXHRcXHRcXHRcXHQvKiBDbGVhcmVkIGluc2lkZSAqL1xcbjExMzM6XFx0XFx0XFx0XFx0Y3R1Y2FuX3R4X2ludGVycnVwdChuZGV2KTtcXG4xMTM0OlxcdFxcdFxcdH1cXG4xMTM1OlxcdFxcbjExMzY6XFx0XFx0XFx0LyogRXJyb3IgaW50ZXJydXB0cyAqL1xcbjExMzc6XFx0XFx0XFx0aWYgKEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfRVdMSSwgaXNyKSB8fFxcbjExMzg6XFx0XFx0XFx0ICAgIEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfRkNTSSwgaXNyKSB8fFxcbjExMzk6XFx0XFx0XFx0ICAgIEZJRUxEX0dFVChSRUdfSU5UX1NUQVRfQUxJLCBpc3IpIHx8XFxuMTE0MDpcXHRcXHRcXHQgICAgRklFTERfR0VUKFJFR19JTlRfU1RBVF9CRUksIGlzcikpIHtcXG4xMTQxOlxcdFxcdFxcdFxcdGljciA9IGlzciBcXHUwMDI2IChSRUdfSU5UX1NUQVRfRVdMSSB8XFxuMTE0MjpcXHRcXHRcXHRcXHRcXHQgICAgIFJFR19JTlRfU1RBVF9GQ1NJIHxcXG4xMTQzOlxcdFxcdFxcdFxcdFxcdCAgICAgUkVHX0lOVF9TVEFUX0FMSSB8XFxuMTE0NDpcXHRcXHRcXHRcXHRcXHQgICAgIFJFR19JTlRfU1RBVF9CRUkpO1xcbjExNDU6XFx0XFxuMTE0NjpcXHRcXHRcXHRcXHRjdHVjYW5fbmV0ZGV2X2RiZyhuZGV2LCBcXFwic29tZSBFUlIgaW50ZXJydXB0OiBjbGVhcmluZyAweCUwOHhcXFxcblxcXCIsIGljcik7XFxuMTE0NzpcXHRcXHRcXHRcXHRjdHVjYW5fd3JpdGUzMihwcml2LCBDVFVDQU5GRF9JTlRfU1RBVCwgaWNyKTtcXG4xMTQ4OlxcdFxcdFxcdFxcdGN0dWNhbl9lcnJfaW50ZXJydXB0KG5kZXYsIGlzcik7XFxuMTE0OTpcXHRcXHRcXHR9XFxuMTE1MDpcXHRcXHRcXHQvKiBJZ25vcmUgUkksIFRJLCBMRkksIFJGSSwgQlNJICovXFxuMTE1MTpcXHRcXHR9XFxuMTE1MjpcXHRcXG4xMTUzOlxcdFxcdG5ldGRldl9lcnIobmRldiwgXFxcIiVzOiBzdHVjayBpbnRlcnJ1cHQgKGlzcj0weCUwOHgpLCBzdG9wcGluZ1xcXFxuXFxcIiwgX19mdW5jX18sIGlzcik7XFxuMTE1NDpcXHRcXG4xMTU1OlxcdFxcdGlmIChGSUVMRF9HRVQoUkVHX0lOVF9TVEFUX1RYQkhDSSwgaXNyKSkge1xcbjExNTY6XFx0XFx0XFx0aW50IGk7XFxuMTE1NzpcXHRcXG4xMTU4OlxcdFxcdFxcdG5ldGRldl9lcnIobmRldiwgXFxcInR4Yl9oZWFkPTB4JTA4eCB0eGJfdGFpbD0weCUwOHhcXFxcblxcXCIsXFxuMTE1OTpcXHRcXHRcXHRcXHQgICBwcml2LVxcdTAwM2V0eGJfaGVhZCwgcHJpdi1cXHUwMDNldHhiX3RhaWwpO1xcbjExNjA6XFx0XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHByaXYtXFx1MDAzZW50eGJ1ZnM7IGkrKykge1xcbjExNjE6XFx0XFx0XFx0XFx0dTMyIHN0YXR1cyA9IGN0dWNhbl9nZXRfdHhfc3RhdHVzKHByaXYsIGkpO1xcbjExNjI6XFx0XFxuMTE2MzpcXHRcXHRcXHRcXHRuZXRkZXZfZXJyKG5kZXYsIFxcXCJ0eGJbJWRdIHR4YiBzdGF0dXM9MHglMDh4XFxcXG5cXFwiLCBpLCBzdGF0dXMpO1xcbjExNjQ6XFx0XFx0XFx0fVxcbjExNjU6XFx0XFx0fVxcbjExNjY6XFx0XFxuMTE2NzpcXHRcXHRpbWFzayA9IDB4ZmZmZmZmZmY7XFxuMTE2ODpcXHRcXHRjdHVjYW5fd3JpdGUzMihwcml2LCBDVFVDQU5GRF9JTlRfRU5BX0NMUiwgaW1hc2spO1xcbjExNjk6XFx0XFx0Y3R1Y2FuX3dyaXRlMzIocHJpdiwgQ1RVQ0FORkRfSU5UX01BU0tfU0VULCBpbWFzayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDEyOjI1OjIzLjMxNTU5OTc1MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjYzMDk1ODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ1RVQ0FOIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgUkVHX0lOVF9TVEFUX0JFSWAgaW50byB0aGUgZXJyb3IgaW50ZXJydXB0IGhhbmRsaW5nIHdpdGhpbiB0aGUgYGN0dWNhbl9pbnRlcnJ1cHRgIGZ1bmN0aW9uLiBUaGF0J3MgYSBkaXJlY3QgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGRyaXZlcidzIGludGVycnVwdCBoYW5kbGVyIOKAkyBzcGVjaWZpY2FsbHkgYGN0dWNhbl9pbnRlcnJ1cHRgLiBJIG5lZWQgdG8gZm9jdXMgb24gYm90aCBgY3R1Y2FuX2ludGVycnVwdGAgYW5kLCB0byBhIGxlc3NlciBleHRlbnQsIGBjdHVjYW5fZXJyX2ludGVycnVwdGAuXG5cblRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGBDQU5fQ1RVQ0FORkRgIGFuZCwgaW1wb3J0YW50bHksIGVpdGhlciBvciBib3RoIG9mIGBDQU5fQ1RVQ0FORkRfUENJYCBhbmQgYENBTl9DVFVDQU5GRF9QTEFURk9STWAuIEkgbmVlZCB0byBjbGFyaWZ5IGlmIGBDQU5fQ1RVQ0FORkRfUENJYCBpcyB0aGUgKm9ubHkqIHBhdGggdG8gdGhpcy4gTm9wZSwgYENBTl9DVFVDQU5GRF9QTEFURk9STWAgaXMgYW4gb3B0aW9uIGFzIHdlbGwuIFdlIGNhbiBoYXZlIGJvdGggZW5hYmxlZCwgd2hpY2ggaXMgZ29vZCB0byBrZWVwIGluIG1pbmQgZm9yIHRlc3RpbmcuXG5cbk5vdywgYSBxdWljayBjaGVjazogaXMgYGN0dWNhbl9lcnJfaW50ZXJydXB0YCBiZWluZyBkaXJlY3RseSBtb2RpZmllZCwgb3IgaXMgaXQganVzdCBiZWluZyAqY2FsbGVkKj8gTG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIGlzb2xhdGVkIHdpdGhpbiBgY3R1Y2FuX2ludGVycnVwdGAsIHdpdGggYGN0dWNhbl9lcnJfaW50ZXJydXB0YCBiZWluZyBhIGNhbGwgZnJvbSBgY3R1Y2FuX2ludGVycnVwdGAuXG5cbklzIHRoaXMgZnV6emFibGU/IEFic29sdXRlbHkuIEl0J3MgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB3aXRoaW4gYSBkcml2ZXIuIFRoZSByZWFsIHF1ZXN0aW9uIGlzOiBjYW4gc3l6a2FsbGVyICphY3R1YWxseSogcmVhY2ggdGhpcyBjb2RlIHBhdGg/IFRoZSBhbnN3ZXIgaXMgeWVzLCBnaXZlbiBpdCBjYW4gc2ltdWxhdGUgUENJIGRldmljZXMgYW5kIGluamVjdCBpbnRlcnJ1cHRzLiBUaGlzIG1lYW5zIHdlIHNob3VsZCBiZSBhYmxlIHRvIHRyaWdnZXIgdGhpcyBjaGFuZ2UgdGhyb3VnaCBmdXp6aW5nLlxuXG5MZXQncyBqdXN0IGRvdWJsZS1jaGVjayB0aG9zZSBjb25maWcgb3B0aW9ucyBvbmUgbW9yZSB0aW1lIHRvIGJlIGFic29sdXRlbHkgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjcyNywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDEyOjI1OjI4Ljk3ODY5NzY1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzY3NzU1MzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ0FOX0NUVUNBTkZEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWc6MTpjb25maWcgQ0FOX0NUVUNBTkZEXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiQ1RVIENBTi1GRCBJUCBjb3JlXFxcIiBpZiBDT01QSUxFX1RFU1RcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnLTEzLVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnOjE0OmNvbmZpZyBDQU5fQ1RVQ0FORkRfUENJXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIkNUVSBDQU4tRkQgSVAgY29yZSBQQ0kvUENJZSBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMTYtXFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvS2NvbmZpZzoxNzpcXHRzZWxlY3QgQ0FOX0NUVUNBTkZEXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMTgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWctMjMtXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWc6MjQ6Y29uZmlnIENBTl9DVFVDQU5GRF9QTEFURk9STVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnLTI1LVxcdHRyaXN0YXRlIFxcXCJDVFUgQ0FOLUZEIElQIGNvcmUgcGxhdGZvcm0gKEZQR0EsIFNvQykgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnLTI2LVxcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFxcdTAwMjZcXHUwMDI2IE9GXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL0tjb25maWc6Mjc6XFx0c2VsZWN0IENBTl9DVFVDQU5GRFxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9LY29uZmlnLTI4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19DQU5fQ1RVQ0FORkQpIDo9IGN0dWNhbmZkLm9cXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvTWFrZWZpbGUtNy1jdHVjYW5mZC15IDo9IGN0dWNhbmZkX2Jhc2Uub1xcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9NYWtlZmlsZS04LVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19DQU5fQ1RVQ0FORkRfUENJKSArPSBjdHVjYW5mZF9wY2kub1xcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQ0FOX0NUVUNBTkZEX1BMQVRGT1JNKSArPSBjdHVjYW5mZF9wbGF0Zm9ybS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDEyOjI1OjI5LjIxNTQ4MDgwM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Mjk1ODAzODgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ1RVQ0FORkQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBDVFVDQU5GRCBkcml2ZXIgYW5kIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gY29uZmlybSBhcmUgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9ucy4gSSBzZWUgdGhhdCBgQ0FOX0NUVUNBTkZEYCwgYENBTl9DVFVDQU5GRF9QQ0lgLCBhbmQgYENBTl9DVFVDQU5GRF9QTEFURk9STWAgbmVlZCB0byBiZSBlbmFibGVkIGZvciB0aGlzIHRvIGV2ZW4gbWF0dGVyLiAgQW5kIGl0IHNlZW1zIHRoZSBjcml0aWNhbCBzeW1ib2wgdGhhdCB0aGlzIHBhdGNoIHRvdWNoZXMgaXMgYGN0dWNhbl9pbnRlcnJ1cHRgLlxuXG5Ob3csIGRpZ2dpbmcgaW50byB0aGUgcGF0Y2ggaXRzZWxmLi4uIHdvdywgdGhpcyBpcyBpbmNyZWRpYmx5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQncyByZWFsbHkganVzdCBhIG1pbm9yIGFkZGl0aW9uIHRvIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgbG9naWMgaW4gYGN0dWNhbl9pbnRlcnJ1cHRgLiBTcGVjaWZpY2FsbHksIGl0IGFkZHMgdGhlIGhhbmRsaW5nIGZvciBgUkVHX0lOVF9TVEFUX0JFSWAsIHdoaWNoIHNlZW1zIHRvIGJlIGEgXCJCdXMgRXJyb3IgSW50ZXJydXB0XCIuICBJdCdzIHNpbXBseSBpbmNsdWRlZCBpbiB0aGUgZXJyb3IgaW50ZXJydXB0IG1hc2sgd2l0aGluIHRoZSBgaWZgIHN0YXRlbWVudC4gQW5kIHRoZSBiaXQgaXMgY2xlYXJlZCBpbiB0aGUgZm9sbG93aW5nIHdyaXRlLCBhZnRlciBsb2dnaW5nIHRoZSBlcnJvci4gVGhpcyBpcyBhYnNvbHV0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29zbWV0aWMgb25lLiAgSXTigJlzIGFkZGluZyBidXMgZXJyb3IgZGV0ZWN0aW9uLlxuXG5JJ2QgY2xhc3NpZnkgdGhpcyBjaGFuZ2UgYXMgYSBjbGVhciBhbmQgZnVuY3Rpb25hbCBpbXByb3ZlbWVudC4gVGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGNhbGxpbmcgdGhlIHNldC1yZXN1bHRzIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTQyLCJPdXRwdXRUb2tlbnMiOjEwOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQxMjoyNTozNS41MTEyODcwNjRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODgyMTA2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0FOX0NUVUNBTkZEXCIsXG4gICAgXCJDQU5fQ1RVQ0FORkRfUENJXCIsXG4gICAgXCJDQU5fQ1RVQ0FORkRfUExBVEZPUk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjdHVjYW5faW50ZXJydXB0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGludGVycnVwdCBoYW5kbGVyIG9mIHRoZSBDVFUgQ0FOIEZEIGRyaXZlciB0byBoYW5kbGUgdGhlIEJ1cyBFcnJvciBJbnRlcnJ1cHQgKEJFSSkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBQQ0kgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDQU5fQ1RVQ0FORkRcIixcbiAgICBcIkNBTl9DVFVDQU5GRF9QQ0lcIixcbiAgICBcIkNBTl9DVFVDQU5GRF9QTEFURk9STVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImN0dWNhbl9pbnRlcnJ1cHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW50ZXJydXB0IGhhbmRsZXIgb2YgdGhlIENUVSBDQU4gRkQgZHJpdmVyIHRvIGhhbmRsZSB0aGUgQnVzIEVycm9yIEludGVycnVwdCAoQkVJKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFBDSSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow58bwx[1] Phase: Succeeded StartedAt: 2026-07-24 12:26:16 +0000 UTC FinishedAt: 2026-07-24 12:26:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-24 12:26:16 +0000 UTC FinishedAt: 2026-07-24 12:26:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[2] Phase: Succeeded StartedAt: 2026-07-24 12:26:16 +0000 UTC FinishedAt: 2026-07-24 14:32:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-24 12:26:16 +0000 UTC FinishedAt: 2026-07-24 14:32:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-24 12:26:16 +0000 UTC FinishedAt: 2026-07-24 12:26:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-24 12:26:16 +0000 UTC FinishedAt: 2026-07-24 12:26:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflow58bwx/series-workflow58bwx-convert-artifact-3663269323/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-24 12:26:37 +0000 UTC FinishedAt: 2026-07-24 13:04:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-24 12:26:37 +0000 UTC FinishedAt: 2026-07-24 13:04:04 +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:*b92f025b-6dd3-4015-92fb-d0bbc6659f65,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-workflow58bwx/series-workflow58bwx-convert-artifact-3663269323/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": "0b28e76d-b726-4916-bb57-a59db1267b25", "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-workflow58bwx/series-workflow58bwx-build-action-3139208393/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-24 12:26:37 +0000 UTC FinishedAt: 2026-07-24 13:03:54 +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:*b92f025b-6dd3-4015-92fb-d0bbc6659f65,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-workflow58bwx/series-workflow58bwx-convert-artifact-3663269323/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": "0b28e76d-b726-4916-bb57-a59db1267b25", "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-workflow58bwx/series-workflow58bwx-build-action-3139208393/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-24 13:04:04 +0000 UTC FinishedAt: 2026-07-24 13:04:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-24 13:04:04 +0000 UTC FinishedAt: 2026-07-24 13:04:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-24 13:04:04 +0000 UTC FinishedAt: 2026-07-24 13:04:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-24 13:04:04 +0000 UTC FinishedAt: 2026-07-24 13:04:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflow58bwx/series-workflow58bwx-convert-artifact-1457537570/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-24 13:04:14 +0000 UTC FinishedAt: 2026-07-24 13:06:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-24 13:04:14 +0000 UTC FinishedAt: 2026-07-24 13:06:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0b28e76d-b726-4916-bb57-a59db1267b25,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-workflow58bwx/series-workflow58bwx-build-action-3139208393/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-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-24 13:06:14 +0000 UTC FinishedAt: 2026-07-24 13:06:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-24 13:06:14 +0000 UTC FinishedAt: 2026-07-24 13:06:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-24 13:06:14 +0000 UTC FinishedAt: 2026-07-24 13:40:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-24 13:06:14 +0000 UTC FinishedAt: 2026-07-24 13:40:49 +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:*b92f025b-6dd3-4015-92fb-d0bbc6659f65,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-workflow58bwx/series-workflow58bwx-convert-artifact-1457537570/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": "16bf11e7-2981-41e8-bf52-789eb12b2eda", "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-workflow58bwx/series-workflow58bwx-build-action-3837362806/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-24 13:06:14 +0000 UTC FinishedAt: 2026-07-24 13:40:39 +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:*b92f025b-6dd3-4015-92fb-d0bbc6659f65,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-workflow58bwx/series-workflow58bwx-convert-artifact-1457537570/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": "16bf11e7-2981-41e8-bf52-789eb12b2eda", "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-workflow58bwx/series-workflow58bwx-build-action-3837362806/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-24 13:40:49 +0000 UTC FinishedAt: 2026-07-24 13:40:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-24 13:40:49 +0000 UTC FinishedAt: 2026-07-24 13:40:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-24 13:40:49 +0000 UTC FinishedAt: 2026-07-24 13:42:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-24 13:40:49 +0000 UTC FinishedAt: 2026-07-24 13:42:40 +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:*16bf11e7-2981-41e8-bf52-789eb12b2eda,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-workflow58bwx/series-workflow58bwx-build-action-3837362806/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-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-24 13:42:50 +0000 UTC FinishedAt: 2026-07-24 14:32:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-24 13:42:50 +0000 UTC FinishedAt: 2026-07-24 14:32:50 +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":["ctucan_interrupt"],"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:*0b28e76d-b726-4916-bb57-a59db1267b25,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*16bf11e7-2981-41e8-bf52-789eb12b2eda,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-workflow58bwx/series-workflow58bwx-build-action-3139208393/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-workflow58bwx/series-workflow58bwx-build-action-3837362806/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-24 13:42:50 +0000 UTC FinishedAt: 2026-07-24 13:43:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-24 13:42:50 +0000 UTC FinishedAt: 2026-07-24 13:42:57 +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":["ctucan_interrupt"],"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-workflow58bwx/series-workflow58bwx-convert-artifact-1592197719/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-24 13:42:50 +0000 UTC FinishedAt: 2026-07-24 13:42:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-24 13:42:50 +0000 UTC FinishedAt: 2026-07-24 13:42:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-24 13:42:51 +0000 UTC FinishedAt: 2026-07-24 13:42:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-24 13:43:01 +0000 UTC FinishedAt: 2026-07-24 14:32:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow58bwx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ctucan_interrupt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN_CTUCANFD","CAN_CTUCANFD_PCI","CAN_CTUCANFD_PLATFORM"],"series_id":"2cedf19b-81d8-4e44-9fa4-c09defcb61f1","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-24 13:43:01 +0000 UTC FinishedAt: 2026-07-24 14:32:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0b28e76d-b726-4916-bb57-a59db1267b25,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*16bf11e7-2981-41e8-bf52-789eb12b2eda,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-workflow58bwx/series-workflow58bwx-build-action-3139208393/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-workflow58bwx/series-workflow58bwx-build-action-3837362806/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-workflow58bwx/series-workflow58bwx-convert-artifact-1592197719/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,}