Name: series-workflowdffl4 Phase: Succeeded StartedAt: 2026-07-20 15:40:34 +0000 UTC FinishedAt: 2026-07-20 17:01:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[0] Phase: Succeeded StartedAt: 2026-07-20 15:40:34 +0000 UTC FinishedAt: 2026-07-20 15:57:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[0].run-triage Phase: Succeeded StartedAt: 2026-07-20 15:40:34 +0000 UTC FinishedAt: 2026-07-20 15:57:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB", "MWIFIEX_SDIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB", "MWIFIEX_SDIO" ], "series_id": "66dc0d63-6561-4f45-a352-e54f61aeb1cf" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mwifiex_decode_rx_packet", "mwifiex_usb_recv" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIwIDE1OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OywKICAgICYjMzQ7TVdJRklFWF9TRElPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF9kZWNvZGVfcnhfcGFja2V0JiMzNDssCiAgICAmIzM0O213aWZpZXhfdXNiX3JlY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkL3dyaXRlIGluIHRoZSBNYXJ2ZWxsIFdpRmkgZHJpdmVyIChtd2lmaWV4KSB3aGVuIHByb2Nlc3NpbmcgcmVjZWl2ZWQgZXZlbnRzLiBUaGUgVVNCIHBhcnQgb2YgdGhpcyBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGdhZGdldCBlbXVsYXRpb24sIG1ha2luZyBpdCByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTU6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyOTgwMTY4NDNhYmViYjdmYjE4NDU5MTA0OTQwODhkY2U1YjhjMjk4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjAgMTU6NTc6MjMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmNcbmluZGV4IGYwMzlkNmYxOTE4M2E1Li40MTAxYmYxZWRjYTFlNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmNcbkBAIC0xNzEyLDEyICYjNDM7MTcxMiwxOSBAQCBzdGF0aWMgaW50IG13aWZpZXhfZGVjb2RlX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuIFx0Y2FzZSBNV0lGSUVYX1RZUEVfRVZFTlQ6XG4gXHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVWRU5ULFxuIFx0XHRcdCAgICBcJiMzNDtpbmZvOiAtLS0gUng6IEV2ZW50IC0tLVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOIHx8XG4mIzQzO1x0XHQgICAgc2tiLVx1MDAzZWxlbiBcdTAwM2UgTUFYX0VWRU5UX1NJWkUpIHtcbiYjNDM7XHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXG4mIzQzO1x0XHRcdFx0ICAgIFwmIzM0O0VWRU5UOiBpbnZhbGlkIHNrYi1cdTAwM2VsZW4gJXVcXG5cJiMzNDssIHNrYi1cdTAwM2VsZW4pO1xuJiM0MztcdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuJiM0MztcdFx0XHRyZXR1cm4gLTE7XG4mIzQzO1x0XHR9XG4mIzQzO1xuIFx0XHRhZGFwdGVyLVx1MDAzZWV2ZW50X2NhdXNlID0gZ2V0X3VuYWxpZ25lZF9sZTMyKHNrYi1cdTAwM2VkYXRhKTtcbiBcbi1cdFx0aWYgKChza2ItXHUwMDNlbGVuIFx1MDAzZSAwKSBcdTAwMjZcdTAwMjYgKHNrYi1cdTAwM2VsZW4gIFx1MDAzYyBNQVhfRVZFTlRfU0laRSkpXG4tXHRcdFx0bWVtY3B5KGFkYXB0ZXItXHUwMDNlZXZlbnRfYm9keSxcbi1cdFx0XHQgICAgICAgc2tiLVx1MDAzZWRhdGEgJiM0MzsgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOLFxuLVx0XHRcdCAgICAgICBza2ItXHUwMDNlbGVuKTtcbiYjNDM7XHRcdG1lbWNweShhZGFwdGVyLVx1MDAzZWV2ZW50X2JvZHksXG4mIzQzO1x0XHQgICAgICAgc2tiLVx1MDAzZWRhdGEgJiM0MzsgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOLFxuJiM0MztcdFx0ICAgICAgIHNrYi1cdTAwM2VsZW4gLSBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU4pO1xuIFxuIFx0XHQvKiBldmVudCBjYXVzZSBoYXMgYmVlbiBzYXZlZCB0byBhZGFwdGVyLVx1MDAzZWV2ZW50X2NhdXNlICovXG4gXHRcdGFkYXB0ZXItXHUwMDNlZXZlbnRfcmVjZWl2ZWQgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuY1xuaW5kZXggZjRiOTRhMTA1NGY2NTAuLmE2ZWQ4MmU3MjI4YjExIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmNcbkBAIC0xMTAsNyAmIzQzOzExMCw4IEBAIHN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVjdihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRcdH1cbiBcbiBcdFx0XHRtZW1jcHkoYWRhcHRlci1cdTAwM2VldmVudF9ib2R5LCBza2ItXHUwMDNlZGF0YSAmIzQzO1xuLVx0XHRcdCAgICAgICBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU4sIHNrYi1cdTAwM2VsZW4pO1xuJiM0MztcdFx0XHQgICAgICAgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOLFxuJiM0MztcdFx0XHQgICAgICAgc2tiLVx1MDAzZWxlbiAtIE1XSUZJRVhfRVZFTlRfSEVBREVSX0xFTik7XG4gXG4gXHRcdFx0YWRhcHRlci1cdTAwM2VldmVudF9yZWNlaXZlZCA9IHRydWU7XG4gXHRcdFx0YWRhcHRlci1cdTAwM2VldmVudF9za2IgPSBza2I7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTU6NTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OywKICAgICYjMzQ7TVdJRklFWF9TRElPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF9kZWNvZGVfcnhfcGFja2V0JiMzNDssCiAgICAmIzM0O213aWZpZXhfdXNiX3JlY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkL3dyaXRlIGluIHRoZSBNYXJ2ZWxsIFdpRmkgZHJpdmVyIChtd2lmaWV4KSB3aGVuIHByb2Nlc3NpbmcgcmVjZWl2ZWQgZXZlbnRzLiBUaGUgVVNCIHBhcnQgb2YgdGhpcyBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGdhZGdldCBlbXVsYXRpb24sIG1ha2luZyBpdCByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDI5ODAxNjg0M2FiZWJiN2ZiMTg0NTkxMDQ5NDA4OGRjZTViOGMyOTgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAyMCAxNTo1NzoyMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jCmluZGV4IGYwMzlkNmYxOTE4M2E1Li40MTAxYmYxZWRjYTFlNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jCkBAIC0xNzEyLDEyICYjNDM7MTcxMiwxOSBAQCBzdGF0aWMgaW50IG13aWZpZXhfZGVjb2RlX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLAogCWNhc2UgTVdJRklFWF9UWVBFX0VWRU5UOgogCQltd2lmaWV4X2RiZyhhZGFwdGVyLCBFVkVOVCwKIAkJCSAgICAmIzM0O2luZm86IC0tLSBSeDogRXZlbnQgLS0tXG4mIzM0Oyk7CiYjNDM7CQlpZiAoc2tiLSZndDtsZW4gJmx0OyBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU4gfHwKJiM0MzsJCSAgICBza2ItJmd0O2xlbiAmZ3Q7IE1BWF9FVkVOVF9TSVpFKSB7CiYjNDM7CQkJbXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsCiYjNDM7CQkJCSAgICAmIzM0O0VWRU5UOiBpbnZhbGlkIHNrYi0mZ3Q7bGVuICV1XG4mIzM0Oywgc2tiLSZndDtsZW4pOwomIzQzOwkJCWRldl9rZnJlZV9za2JfYW55KHNrYik7CiYjNDM7CQkJcmV0dXJuIC0xOwomIzQzOwkJfQomIzQzOwogCQlhZGFwdGVyLSZndDtldmVudF9jYXVzZSA9IGdldF91bmFsaWduZWRfbGUzMihza2ItJmd0O2RhdGEpOwogCi0JCWlmICgoc2tiLSZndDtsZW4gJmd0OyAwKSAmYW1wOyZhbXA7IChza2ItJmd0O2xlbiAgJmx0OyBNQVhfRVZFTlRfU0laRSkpCi0JCQltZW1jcHkoYWRhcHRlci0mZ3Q7ZXZlbnRfYm9keSwKLQkJCSAgICAgICBza2ItJmd0O2RhdGEgJiM0MzsgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOLAotCQkJICAgICAgIHNrYi0mZ3Q7bGVuKTsKJiM0MzsJCW1lbWNweShhZGFwdGVyLSZndDtldmVudF9ib2R5LAomIzQzOwkJICAgICAgIHNrYi0mZ3Q7ZGF0YSAmIzQzOyBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU4sCiYjNDM7CQkgICAgICAgc2tiLSZndDtsZW4gLSBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU4pOwogCiAJCS8qIGV2ZW50IGNhdXNlIGhhcyBiZWVuIHNhdmVkIHRvIGFkYXB0ZXItJmd0O2V2ZW50X2NhdXNlICovCiAJCWFkYXB0ZXItJmd0O2V2ZW50X3JlY2VpdmVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYwppbmRleCBmNGI5NGExMDU0ZjY1MC4uYTZlZDgyZTcyMjhiMTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMKQEAgLTExMCw3ICYjNDM7MTEwLDggQEAgc3RhdGljIGludCBtd2lmaWV4X3VzYl9yZWN2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsCiAJCQl9CiAKIAkJCW1lbWNweShhZGFwdGVyLSZndDtldmVudF9ib2R5LCBza2ItJmd0O2RhdGEgJiM0MzsKLQkJCSAgICAgICBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU4sIHNrYi0mZ3Q7bGVuKTsKJiM0MzsJCQkgICAgICAgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOLAomIzQzOwkJCSAgICAgICBza2ItJmd0O2xlbiAtIE1XSUZJRVhfRVZFTlRfSEVBREVSX0xFTik7CiAKIAkJCWFkYXB0ZXItJmd0O2V2ZW50X3JlY2VpdmVkID0gdHJ1ZTsKIAkJCWFkYXB0ZXItJmd0O2V2ZW50X3NrYiA9IHNrYjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQwNQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uY2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmNgLiBTZWVtcyBsaWtlIHdlJiMzOTt2ZSBnb3QgYSBmaXggZm9yIGFuIG91dC1vZi1ib3VuZHMgcmVhZC93cml0ZSBpbiBgbXdpZmlleF9kZWNvZGVfcnhfcGFja2V0YCAoU0RJTykgYW5kIGBtd2lmaWV4X3VzYl9yZWN2YCAoVVNCKSDigJMgYWx3YXlzIGdvb2QgdG8gY2F0Y2ggdGhvc2UuIFRoZSBwYXRjaCBhcHBlYXJzIHRvIGFkZHJlc3MgdGhlIGlzc3VlIGJ5IGNoZWNraW5nIGlmIGBza2ItJmd0O2xlbmAgaXMgbGVzcyB0aGFuIGBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU5gIGFuZCB0aGVuIHN1YnRyYWN0aW5nIHRoYXQgbGVuZ3RoIHdoZW4gY2FsbGluZyBgbWVtY3B5YC4gU3RhbmRhcmQgc3R1ZmYsIGJ1dCBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4KCk5vdywgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgZnV6eiB0aGlzPyBJdCYjMzk7cyBhIHdpcmVsZXNzIGRyaXZlciwgYG13aWZpZXhgLCBzbyB0aGF0JiMzOTtzIGFscmVhZHkgYSBwb2ludCBpbiBpdHMgZmF2b3IuIFRoZSBVU0Igc2lkZSBvZiB0aGlzIGlzICpkZWZpbml0ZWx5KiBmdXp6YWJsZS4gV2UgY2FuIHVzZSBhIFVTQiBnYWRnZXQgYW5kIGEgYGR1bW15X2hjZGAgdG8gdGhyb3cgYSBidW5jaCBvZiBtYWxmb3JtZWQgcGFja2V0cyBhdCBpdC4gVGhhdCYjMzk7cyBhIGxvdy1oYW5naW5nIGZydWl0LiBUaGUgU0RJTyBwYXJ0PyBQb3RlbnRpYWxseS4gSWYgdGhlcmUmIzM5O3MgYW4gU0RJTyBmdXp6ZXIgb3V0IHRoZXJlLCB0aGVuIGl0IHdvdWxkIGJlIGZ1enphYmxlIHZpYSB0aGF0IHRvby4gQnV0IGhvbmVzdGx5LCB0aGUgVVNCIHBhcnQgYWxvbmUgbWFrZXMgdGhpcyBXb3J0aEZ1enppbmc9dHJ1ZS4gVVNCIGlzIGdlbmVyYWxseSBlYXNpZXIgdG8gdGFyZ2V0IGZvciBmdXp6aW5nLgoKTmV4dCBzdGVwOiBDb25maWd1cmF0aW9uIG9wdGlvbnMuIEdvdHRhIGZpZ3VyZSBvdXQgaG93IHRvIGVuYWJsZSB0aGlzIGRyaXZlciBpbiB0aGUgZmlyc3QgcGxhY2UsIG9yIHdoYXQmIzM5O3MgbmVlZGVkIHRvIGJ1aWxkIGl0LiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgS2NvbmZpZ2AgZmlsZXMg4oCTIHByb2JhYmx5IHNvbWV0aGluZyBsaWtlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ2AsIG9yIHNvbWV0aGluZyBzaW1pbGFybHkgbmFtZWQsIHRvIHNlZSB3aGF0IG9wdGlvbnMgY29udHJvbCBpdHMgaW5jbHVzaW9uLiBPbmNlIEkmIzM5O3ZlIGdvdCB0aGF0LCBpdCYjMzk7cyB0aW1lIHRvIHN0YXJ0IHBsYW5uaW5nIGEgZnV6emluZyBjYW1wYWlnbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9Mj1jb25maWcgTVdJRklFWFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTktXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMDpcdCAgbXdpZmlleC5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9MTI9Y29uZmlnIE1XSUZJRVhfU0RJT1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTIyLVx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjM6XHQgIG13aWZpZXhfc2Rpby5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9MjU9Y29uZmlnIE1XSUZJRVhfUENJRVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM0LVx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MzU6XHQgIG13aWZpZXhfcGNpZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9Mzc9Y29uZmlnIE1XSUZJRVhfVVNCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctNDUtXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzo0NjpcdCAgbXdpZmlleF91c2IuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUxNwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgY29uZmlnIGZsYWdzIGFuZCBmdW5jdGlvbnMsIGFzIGlmIHRoZXkmIzM5O3JlIHJ1bm5pbmcgdGhyb3VnaCBteSBvd24gbWVudGFsIHByb2Nlc3NlczoKCioqQW5hbHl6aW5nIHRoZSBNV0lGSUVYIENvZGViYXNlKioKCkFscmlnaHQsIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgTVdJRklFWGAgZHJpdmVyLCBhbmQgdGhlIGZpcnN0IHRoaW5ncyB0aGF0IGNhdGNoIG15IGV5ZSBhcmUgdGhlc2UgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgTVdJRklFWGAsIGBNV0lGSUVYX1NESU9gLCBhbmQgYE1XSUZJRVhfVVNCYC4gR2l2ZW4gd2hhdCBJIGtub3cgYWJvdXQgTWFydmVsbCB3aXJlbGVzcyBjaGlwcyBhbmQgdGhlaXIgdmFyaW91cyBpbnRlcmZhY2VzLCB0aGlzIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIGBNV0lGSUVYYCBsaWtlbHkgcmVwcmVzZW50cyB0aGUgYmFzZSBmdW5jdGlvbmFsaXR5LCB0aGUgY29yZSBkcml2ZXIsIGlmIHlvdSB3aWxsLiBUaGUgYF9TRElPYCBhbmQgYF9VU0JgIHN1ZmZpeGVzIGFsbW9zdCBjZXJ0YWlubHkgaW5kaWNhdGUgc3VwcG9ydCBmb3Igc3BlY2lmaWMgcGh5c2ljYWwgbGF5ZXIgaW50ZXJmYWNlcyDigJMgU2VjdXJlIERpZ2l0YWwgSW5wdXQvT3V0cHV0IGFuZCBVbml2ZXJzYWwgU2VyaWFsIEJ1cywgcmVzcGVjdGl2ZWx5LiBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCB0aGUgY29yZSBjb2RlLiBJIHN1c3BlY3QgdGhlcmUgbWF5IGJlIGRpZmZlcmVuY2VzIGluIHRoZSBoYW5kbGluZyBvZiBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIHBhY2tldCB0cmFuc2ZlciwgYW5kIGludGVycnVwdCBtYW5hZ2VtZW50IGRlcGVuZGluZyBvbiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBpbnRlcmZhY2UuCgpOb3csIHdoZXJlIGRvIEkgc3RhcnQgZGlnZ2luZyBmb3IgcG90ZW50aWFsIEZvY3VzU3ltYm9scz8gYG13aWZpZXhfZGVjb2RlX3J4X3BhY2tldGAgYW5kIGBtd2lmaWV4X3VzYl9yZWN2YCBzb3VuZCBsaWtlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzLiBUaGUgZm9ybWVyIGlzIGEgZGVhZCBnaXZlYXdheSBhcyBhIGxpa2VseSBjYW5kaWRhdGUuIEl0IGhhbmRsZXMgdGhlIHByb2Nlc3Npbmcgb2YgaW5jb21pbmcgcGFja2V0cywgc28gaXQmIzM5O3MgYSBjcml0aWNhbCBwb2ludCBmb3IgYW55IHN5c3RlbSwgc28gYW55IHBhcnNpbmcgb3IgZm9ybWF0IGhhbmRsaW5nIGluIHRoYXQgZnVuY3Rpb24gaXMgd29ydGggc2NydXRpbnkuIFRoZSBsYXR0ZXIsIGBtd2lmaWV4X3VzYl9yZWN2YCwgc3VnZ2VzdHMgYSBzcGVjaWFsaXplZCBmdW5jdGlvbiB0aGF0IGRlYWxzIHdpdGggcmVjZWl2aW5nIGRhdGEgc3BlY2lmaWNhbGx5IHZpYSB0aGUgVVNCIGludGVyZmFjZS4gVGhpcyBpcyBhbm90aGVyIGFyZWEgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0bywgYXMgVVNCIG9mdGVuIGhhcyBpdHMgb3duIGlkaW9zeW5jcmFzaWVzIGFuZCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIHJlbGF0ZWQgdG8gZGF0YSBidWZmZXJpbmcsIERNQSwgYW5kIGVuZHBvaW50IG1hbmFnZW1lbnQuIEkmIzM5O20gZ29pbmcgdG8gY2FyZWZ1bGx5IGluc3BlY3QgdGhlc2UgZnVuY3Rpb25zIGZvciBhbnkgc3VidGxlIGluZGljYXRvcnMgb2YgdnVsbmVyYWJpbGl0aWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfZGVjb2RlX3J4X3BhY2tldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYz0xNTkzPXN0YXRpYyB2b2lkIG13aWZpZXhfZGVhZ2dyX3NkaW9fcGt0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0xNjQ2LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYzoxNjQ3OnN0YXRpYyBpbnQgbXdpZmlleF9kZWNvZGVfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTE2NDgtXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHVwbGRfdHlwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9MTc1ND1zdGF0aWMgaW50IG13aWZpZXhfc2Rpb19jYXJkX3RvX2hvc3RfbXBfYWdncihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMTkwNC1cdFx0XHRcdC8qIFByb2Nlc3MgZGUtYWdnciBwYWNrZXQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MTkwNTpcdFx0XHRcdG13aWZpZXhfZGVjb2RlX3J4X3BhY2tldChhZGFwdGVyLCBza2JfZGVhZ2dyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0xOTA2LVx0XHRcdFx0XHRcdFx0IHBrdF90eXBlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTE5NTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jOjE5NTM6XHRcdG13aWZpZXhfZGVjb2RlX3J4X3BhY2tldChhZGFwdGVyLCBza2IsIHBrdF90eXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMTk1NC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jPTE5ODk9c3RhdGljIGludCBtd2lmaWV4X3Byb2Nlc3NfaW50X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMjA1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MjA1MjpcdFx0bXdpZmlleF9kZWNvZGVfcnhfcGFja2V0KGFkYXB0ZXIsIHNrYiwgcGt0X3R5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0yMDUzLVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NTAKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBEZWVwIGludG8gYG13aWZpZXhfdXNiX3JlY3ZgKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdoZW4gSSBzZWUgYG13aWZpZXhfdXNiX3JlY3ZgLCBteSBtaW5kIGltbWVkaWF0ZWx5IGdvZXMgdG8gdGhlIGhlYXJ0IG9mIHRoZSBVU0ItYmFzZWQgTWFydmVsbCBXaS1GaSBkcml2ZXIuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHJpZ2h0IGF0IHRoZSBwb2ludCB3aGVyZSBkYXRhIGlzICpyZWNlaXZlZCogb3ZlciB0aGUgVVNCIGludGVyZmFjZS4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGl0IGJlaW5nIHRoZSByZWNlaXZpbmcgZW5kLgoKSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgbG93LWxldmVsIFVTQiB0cmFuc2ZlciBjb250ZXh0LiBJcyB0aGlzIHVzaW5nIGJ1bGsgdHJhbnNmZXJzPyBJbnRlcnJ1cHQgdHJhbnNmZXJzPyBDb250cm9sIHRyYW5zZmVycz8gVGhlIHNwZWNpZmljIHRyYW5zZmVyIHR5cGUgZGljdGF0ZXMgdGhlIGJ1ZmZlcmluZyBzdHJhdGVneSwgdGhlIGludGVycnVwdCBoYW5kbGluZywgYW5kIHRoZSBvdmVyYWxsIGVmZmljaWVuY3kuICBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBpbnRyaWNhY2llcyBvZiB0aGUgVVNCIGVuZHBvaW50IGNvbW11bmljYXRpb24gYW5kIGVuc3VyaW5nIHRoYXQgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgcmVsaWFibGUgYW5kIGVmZmljaWVudCBkYXRhIGluZ2VzdGlvbiBmcm9tIHRoZSBkZXZpY2UuCgpUaGVuLCB0aGVyZSYjMzk7cyB0aGUgd2hvbGUgaXNzdWUgb2YgaW50ZXJydXB0IGhhbmRsaW5nLiBIb3cgYXJlIGludGVycnVwdHMgbWFuYWdlZCB0byBzaWduYWwgdGhlIGFycml2YWwgb2YgbmV3IHBhY2tldHM/IElzIHRoZXJlIGEgcmluZyBidWZmZXI/IFdoYXQgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgYXJlIGludm9sdmVkPyBBcmUgd2UgZGVhbGluZyB3aXRoIHNwaW5sb2NrcywgbXV0ZXhlcywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZXNlIGRldGFpbHMgYXJlIGltcG9ydGFudCBmb3IgcmVhbC10aW1lIHBlcmZvcm1hbmNlIGFuZCBhdm9pZGluZyByYWNlIGNvbmRpdGlvbnMuCgpJJiMzOTttIHN0YXJ0aW5nIHRvIHRoaW5rIGFib3V0IGVycm9yIGhhbmRsaW5nLiBXaGF0IGhhcHBlbnMgaWYgdGhlcmUmIzM5O3MgYSBVU0IgdHJhbnNmZXIgZXJyb3I/IElzIHRoZXJlIHJvYnVzdCBlcnJvciBjaGVja2luZyBvbiB0aGUgVVNCIHNpZGU/IERvZXMgaXQgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGRpZmZlcmVudCBVU0IgaXNzdWVzPyBBcmUgd2UgYWJsZSB0byByZXRyeT8gQXJlIHRoZXJlIHJldHJpZXMgd2l0aCBleHBvbmVudGlhbCBiYWNrb2ZmPyBXaGF0JiMzOTtzIHRoZSBzdHJhdGVneSBmb3IgZGVhbGluZyB3aXRoIFVTQiBkaXNjb25uZWN0cyBvciBsaW5rIHByb2JsZW1zPyBBIHJvYnVzdCByZWNlaXZpbmcgcm91dGluZSBoYXMgdG8gYmUgcmVzaWxpZW50IGluIHRoZXNlIGVycm9yIGNhc2VzLgoKQWxzbywgSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBkYXRhIGl0c2VsZi4gSG93IGlzIHRoZSBkYXRhIGZvcm1hdHRlZD8gSXMgaXQgZnJhbWVkIHdpdGggaGVhZGVycyBhbmQgdHJhaWxlcnM/IFdoZXJlIGlzIHRoZSBkYXRhIGJ1ZmZlciBsb2NhdGVkPyBXaGF0JiMzOTtzIHRoZSBzaXplIG9mIHRoZSBkYXRhIGNodW5rcyB3ZSBhcmUgaGFuZGxpbmc/IFdoYXQgaXMgdGhlIG92ZXJhbGwgZGF0YSBmbG93IGFyY2hpdGVjdHVyZT8gV2hhdCBraW5kIG9mIG1lbW9yeSBhY2Nlc3MgYXJlIHdlIGRlYWxpbmcgd2l0aD8gSXMgdGhlIGRhdGEgRE1BJiMzOTtkIGRpcmVjdGx5IGludG8gYSBidWZmZXIsIG9yIGRvZXMgaXQgcmVxdWlyZSBtb3JlIGludGVybWVkaWF0ZSBjb3B5aW5nPwoKSSYjMzk7bSBtZW50YWxseSBzdGVwcGluZyB0aHJvdWdoIGEgdHlwaWNhbCByZWNlaXZlIHBhdGguIEkmIzM5O20gdmlzdWFsaXppbmcgdGhlIGRhdGEgYmVpbmcgcmVjZWl2ZWQsIGNoZWNrZWQgZm9yIGVycm9ycywgbWF5YmUgZGVjcnlwdGVkIChkZXBlbmRpbmcgb24gdGhlIHNlY3VyaXR5IGltcGxlbWVudGF0aW9uKSwgYW5kIHRoZW4gaGFuZGVkIG9mZiB0byB0aGUgaGlnaGVyLWxldmVsIFdpLUZpIHN0YWNrIGZvciBwcm9jZXNzaW5nLiBJIHdhbnQgdG8gc2VlIGlmIHRoaXMgYG13aWZpZXhfdXNiX3JlY3ZgIGltcGxlbWVudHMgcGFja2V0IGFnZ3JlZ2F0aW9uIG9yIHJlYXNzZW1ibHkuIEl0JiMzOTtzIHBvc3NpYmxlIHRoYXQgZnJhZ21lbnRhdGlvbiBhbmQgcmVhc3NlbWJseSBoYXBwZW5zIGF0IHRoZSBmaXJtd2FyZSBsYXllciwgYnV0IEkgbmVlZCB0byBjb25zaWRlciBpdCBhdCB0aGlzIGxldmVsIGFzIHdlbGwuIEZpbmFsbHksIGlzIHRoZXJlIGFueSBraW5kIG9mIHBvd2VyIG1hbmFnZW1lbnQgaW1wbGljYXRpb24gSSBzaG91bGQgYmUgdGhpbmtpbmcgYWJvdXQgYXQgdGhpcyBwYXJ0PwoKSXQmIzM5O3MgYWxsIGFib3V0IGVuc3VyaW5nIHRoYXQgdGhlIGRyaXZlciBhY2N1cmF0ZWx5IGFuZCBlZmZpY2llbnRseSByZWNlaXZlcyBkYXRhIGZyb20gdGhlIFVTQiBpbnRlcmZhY2UsIGhhbmRsZXMgZXJyb3JzIGdyYWNlZnVsbHksIGFuZCBkZWxpdmVycyB0aGUgcGFja2V0cyB0byB0aGUgdXBwZXIgbGF5ZXJzIHdpdGhvdXQgaW50cm9kdWNpbmcgYW55IHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLiBUaGlzIHNlZW1zIGxpa2UgYSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlLCBhbmQgSSYjMzk7ZCBuZWVkIHRvIGV4YW1pbmUgdGhpcyBjb2RlIGNhcmVmdWxseSB0byBiZSBzdXJlIGFib3V0IGl0cyBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3VzYl9yZWN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz00MT1zdGF0aWMgaW50IG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoc3RydWN0IHVyYl9jb250ZXh0ICpjdHgsIGludCBzaXplKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDUtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NDY6c3RhdGljIGludCBtd2lmaWV4X3VzYl9yZWN2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDctXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsIHU4IGVwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTM9c3RhdGljIHZvaWQgbXdpZmlleF91c2JfcnhfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTg4Olx0XHRzdGF0dXMgPSBtd2lmaWV4X3VzYl9yZWN2KGFkYXB0ZXIsIHNrYiwgY29udGV4dC1cdTAwM2VlcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xOTctXHRcdFx0ICogdXJiIGZvciBjbWRfZXAgd2lsbCBiZSByZS1zdWJtaXR0ZWQgaW4gY2FsbGJhY2tcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxOTg6XHRcdFx0ICogbXdpZmlleF91c2JfcmVjdl9jb21wbGV0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE5OS1cdFx0XHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTkzCgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDEwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBNV0lGSUVYIERyaXZlcjogSW5pdGlhbCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGUgYG13aWZpZXhgIGRyaXZlciBhbmQgdGhpbmtpbmcgYWJvdXQgd2hlcmUgd2UgY2FuIGdldCB0aGUgYmVzdCBmdXp6aW5nIGNvdmVyYWdlLiBUaGUga2V5IGZ1bmN0aW9ucyBJJiMzOTttIGZvY3VzaW5nIG9uIGFyZSBgbXdpZmlleF9kZWNvZGVfcnhfcGFja2V0YCBhbmQgYG13aWZpZXhfdXNiX3JlY3ZgLiBJbW1lZGlhdGVseSwgdGhlIFVTQiBhc3BlY3Qgb2YgdGhpcyBqdW1wcyBvdXQgYXQgbWUuIFdlIGNhbiBhYnNvbHV0ZWx5IGhpdCB0aGF0IHdpdGggVVNCIGZ1enppbmcgdG9vbHMsIGFuZCBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIGFyZSBhIGdvb2QgZml0IGhlcmUuIFRoYXTigJlzIGEgZmFpcmx5IGRpcmVjdCBwYXRoIHRvIGdlbmVyYXRpbmcgaW50ZXJlc3RpbmcgdGVzdCBjYXNlcy4KClRoZSBTRElPIHNpZGUgb2YgdGhpbmdzIGlzIGEgbGl0dGxlIGxlc3MgY2xlYXIuIFdoaWxlIHBvdGVudGlhbGx5IGltcG9ydGFudCwgSSYjMzk7bSBub3Qgc3VyZSBpZiBzeXprYWxsZXIgY3VycmVudGx5IHN1cHBvcnRzIGRpcmVjdCBTRElPIGZ1enppbmcgaW4gdGhlIHNhbWUgd2F5IGl0IGRvZXMgVVNCLiBUaGF0JiMzOTtzIHNvbWV0aGluZyBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgZnVydGhlciwgYnV0IHRoZSBVU0IgcGF0aCBsb29rcyBsaWtlIHRoZSBpbW1lZGlhdGUgbG93LWhhbmdpbmcgZnJ1aXQuCgpJIHNlZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYW5kIGBNV0lGSUVYX1NESU9gLiBUaGVzZSBzZXR0aW5ncyB3aWxsIGluZmx1ZW5jZSB3aGljaCBjb2RlIHBhdGhzIGFyZSBlbmFibGVkLCB3aGljaCBpcyBjcnVjaWFsIGZvciBtYXhpbWl6aW5nIG91ciBmdXp6aW5nIGVmZmljaWVuY3kgYW5kIGVuc3VyaW5nIHdlJiMzOTtyZSB0ZXN0aW5nIHRoZSByZWxldmFudCBwb3J0aW9ucyBvZiB0aGUgZHJpdmVyLgoKUmlnaHQsIHNvIHdpdGggdGhhdCBpbml0aWFsIGFzc2Vzc21lbnQgY29tcGxldGUsIGxldCYjMzk7cyBlc3RhYmxpc2ggc29tZSBjb25jcmV0ZSBvYmplY3RpdmVzIGFuZCBtb3ZlIGZvcndhcmQgd2l0aCB0aGUgbmV4dCBzdGVwcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTU6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OywKICAgICYjMzQ7TVdJRklFWF9TRElPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF9kZWNvZGVfcnhfcGFja2V0JiMzNDssCiAgICAmIzM0O213aWZpZXhfdXNiX3JlY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkL3dyaXRlIGluIHRoZSBNYXJ2ZWxsIFdpRmkgZHJpdmVyIChtd2lmaWV4KSB3aGVuIHByb2Nlc3NpbmcgcmVjZWl2ZWQgZXZlbnRzLiBUaGUgVVNCIHBhcnQgb2YgdGhpcyBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGdhZGdldCBlbXVsYXRpb24sIG1ha2luZyBpdCByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OywKICAgICYjMzQ7TVdJRklFWF9TRElPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF9kZWNvZGVfcnhfcGFja2V0JiMzNDssCiAgICAmIzM0O213aWZpZXhfdXNiX3JlY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkL3dyaXRlIGluIHRoZSBNYXJ2ZWxsIFdpRmkgZHJpdmVyIChtd2lmaWV4KSB3aGVuIHByb2Nlc3NpbmcgcmVjZWl2ZWQgZXZlbnRzLiBUaGUgVVNCIHBhcnQgb2YgdGhpcyBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGdhZGdldCBlbXVsYXRpb24sIG1ha2luZyBpdCByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxNTo1NzoyNC40MDc4NzI4MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMjMxMzEzNjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJNV0lGSUVYX1NESU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X2RlY29kZV9yeF9wYWNrZXRcIixcbiAgICBcIm13aWZpZXhfdXNiX3JlY3ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQvd3JpdGUgaW4gdGhlIE1hcnZlbGwgV2lGaSBkcml2ZXIgKG13aWZpZXgpIHdoZW4gcHJvY2Vzc2luZyByZWNlaXZlZCBldmVudHMuIFRoZSBVU0IgcGFydCBvZiB0aGlzIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZ2FkZ2V0IGVtdWxhdGlvbiwgbWFraW5nIGl0IHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTU6NTc6MjQuNDA3ODc5ODdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMjc2NDI4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI5ODAxNjg0M2FiZWJiN2ZiMTg0NTkxMDQ5NDA4OGRjZTViOGMyOThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgMjAgMTU6NTc6MjMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmNcXG5pbmRleCBmMDM5ZDZmMTkxODNhNS4uNDEwMWJmMWVkY2ExZTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmNcXG5AQCAtMTcxMiwxMiArMTcxMiwxOSBAQCBzdGF0aWMgaW50IG13aWZpZXhfZGVjb2RlX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbiBcXHRjYXNlIE1XSUZJRVhfVFlQRV9FVkVOVDpcXG4gXFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVZFTlQsXFxuIFxcdFxcdFxcdCAgICBcXFwiaW5mbzogLS0tIFJ4OiBFdmVudCAtLS1cXFxcblxcXCIpO1xcbitcXHRcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU4gfHxcXG4rXFx0XFx0ICAgIHNrYi1cXHUwMDNlbGVuIFxcdTAwM2UgTUFYX0VWRU5UX1NJWkUpIHtcXG4rXFx0XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXFxuK1xcdFxcdFxcdFxcdCAgICBcXFwiRVZFTlQ6IGludmFsaWQgc2tiLVxcdTAwM2VsZW4gJXVcXFxcblxcXCIsIHNrYi1cXHUwMDNlbGVuKTtcXG4rXFx0XFx0XFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcXG4rXFx0XFx0XFx0cmV0dXJuIC0xO1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHRhZGFwdGVyLVxcdTAwM2VldmVudF9jYXVzZSA9IGdldF91bmFsaWduZWRfbGUzMihza2ItXFx1MDAzZWRhdGEpO1xcbiBcXG4tXFx0XFx0aWYgKChza2ItXFx1MDAzZWxlbiBcXHUwMDNlIDApIFxcdTAwMjZcXHUwMDI2IChza2ItXFx1MDAzZWxlbiAgXFx1MDAzYyBNQVhfRVZFTlRfU0laRSkpXFxuLVxcdFxcdFxcdG1lbWNweShhZGFwdGVyLVxcdTAwM2VldmVudF9ib2R5LFxcbi1cXHRcXHRcXHQgICAgICAgc2tiLVxcdTAwM2VkYXRhICsgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOLFxcbi1cXHRcXHRcXHQgICAgICAgc2tiLVxcdTAwM2VsZW4pO1xcbitcXHRcXHRtZW1jcHkoYWRhcHRlci1cXHUwMDNlZXZlbnRfYm9keSxcXG4rXFx0XFx0ICAgICAgIHNrYi1cXHUwMDNlZGF0YSArIE1XSUZJRVhfRVZFTlRfSEVBREVSX0xFTixcXG4rXFx0XFx0ICAgICAgIHNrYi1cXHUwMDNlbGVuIC0gTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOKTtcXG4gXFxuIFxcdFxcdC8qIGV2ZW50IGNhdXNlIGhhcyBiZWVuIHNhdmVkIHRvIGFkYXB0ZXItXFx1MDAzZWV2ZW50X2NhdXNlICovXFxuIFxcdFxcdGFkYXB0ZXItXFx1MDAzZWV2ZW50X3JlY2VpdmVkID0gdHJ1ZTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jXFxuaW5kZXggZjRiOTRhMTA1NGY2NTAuLmE2ZWQ4MmU3MjI4YjExIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuY1xcbkBAIC0xMTAsNyArMTEwLDggQEAgc3RhdGljIGludCBtd2lmaWV4X3VzYl9yZWN2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuIFxcdFxcdFxcdH1cXG4gXFxuIFxcdFxcdFxcdG1lbWNweShhZGFwdGVyLVxcdTAwM2VldmVudF9ib2R5LCBza2ItXFx1MDAzZWRhdGEgK1xcbi1cXHRcXHRcXHQgICAgICAgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOLCBza2ItXFx1MDAzZWxlbik7XFxuK1xcdFxcdFxcdCAgICAgICBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU4sXFxuK1xcdFxcdFxcdCAgICAgICBza2ItXFx1MDAzZWxlbiAtIE1XSUZJRVhfRVZFTlRfSEVBREVSX0xFTik7XFxuIFxcbiBcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VldmVudF9yZWNlaXZlZCA9IHRydWU7XFxuIFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWV2ZW50X3NrYiA9IHNrYjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTU6NTc6MjQuODMxMzI0NzcxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjI4MDc4NTA4MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIixcbiAgICBcIk1XSUZJRVhfU0RJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm13aWZpZXhfZGVjb2RlX3J4X3BhY2tldFwiLFxuICAgIFwibXdpZmlleF91c2JfcmVjdlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZC93cml0ZSBpbiB0aGUgTWFydmVsbCBXaUZpIGRyaXZlciAobXdpZmlleCkgd2hlbiBwcm9jZXNzaW5nIHJlY2VpdmVkIGV2ZW50cy4gVGhlIFVTQiBwYXJ0IG9mIHRoaXMgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI5ODAxNjg0M2FiZWJiN2ZiMTg0NTkxMDQ5NDA4OGRjZTViOGMyOThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyMCAxNTo1NzoyMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jXG5pbmRleCBmMDM5ZDZmMTkxODNhNS4uNDEwMWJmMWVkY2ExZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jXG5AQCAtMTcxMiwxMiArMTcxMiwxOSBAQCBzdGF0aWMgaW50IG13aWZpZXhfZGVjb2RlX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuIFx0Y2FzZSBNV0lGSUVYX1RZUEVfRVZFTlQ6XG4gXHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVWRU5ULFxuIFx0XHRcdCAgICBcImluZm86IC0tLSBSeDogRXZlbnQgLS0tXFxuXCIpO1xuK1x0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOIHx8XG4rXHRcdCAgICBza2ItXHUwMDNlbGVuIFx1MDAzZSBNQVhfRVZFTlRfU0laRSkge1xuK1x0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuK1x0XHRcdFx0ICAgIFwiRVZFTlQ6IGludmFsaWQgc2tiLVx1MDAzZWxlbiAldVxcblwiLCBza2ItXHUwMDNlbGVuKTtcbitcdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuK1x0XHRcdHJldHVybiAtMTtcbitcdFx0fVxuK1xuIFx0XHRhZGFwdGVyLVx1MDAzZWV2ZW50X2NhdXNlID0gZ2V0X3VuYWxpZ25lZF9sZTMyKHNrYi1cdTAwM2VkYXRhKTtcbiBcbi1cdFx0aWYgKChza2ItXHUwMDNlbGVuIFx1MDAzZSAwKSBcdTAwMjZcdTAwMjYgKHNrYi1cdTAwM2VsZW4gIFx1MDAzYyBNQVhfRVZFTlRfU0laRSkpXG4tXHRcdFx0bWVtY3B5KGFkYXB0ZXItXHUwMDNlZXZlbnRfYm9keSxcbi1cdFx0XHQgICAgICAgc2tiLVx1MDAzZWRhdGEgKyBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU4sXG4tXHRcdFx0ICAgICAgIHNrYi1cdTAwM2VsZW4pO1xuK1x0XHRtZW1jcHkoYWRhcHRlci1cdTAwM2VldmVudF9ib2R5LFxuK1x0XHQgICAgICAgc2tiLVx1MDAzZWRhdGEgKyBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU4sXG4rXHRcdCAgICAgICBza2ItXHUwMDNlbGVuIC0gTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOKTtcbiBcbiBcdFx0LyogZXZlbnQgY2F1c2UgaGFzIGJlZW4gc2F2ZWQgdG8gYWRhcHRlci1cdTAwM2VldmVudF9jYXVzZSAqL1xuIFx0XHRhZGFwdGVyLVx1MDAzZWV2ZW50X3JlY2VpdmVkID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmNcbmluZGV4IGY0Yjk0YTEwNTRmNjUwLi5hNmVkODJlNzIyOGIxMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jXG5AQCAtMTEwLDcgKzExMCw4IEBAIHN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVjdihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRcdH1cbiBcbiBcdFx0XHRtZW1jcHkoYWRhcHRlci1cdTAwM2VldmVudF9ib2R5LCBza2ItXHUwMDNlZGF0YSArXG4tXHRcdFx0ICAgICAgIE1XSUZJRVhfRVZFTlRfSEVBREVSX0xFTiwgc2tiLVx1MDAzZWxlbik7XG4rXHRcdFx0ICAgICAgIE1XSUZJRVhfRVZFTlRfSEVBREVSX0xFTixcbitcdFx0XHQgICAgICAgc2tiLVx1MDAzZWxlbiAtIE1XSUZJRVhfRVZFTlRfSEVBREVSX0xFTik7XG4gXG4gXHRcdFx0YWRhcHRlci1cdTAwM2VldmVudF9yZWNlaXZlZCA9IHRydWU7XG4gXHRcdFx0YWRhcHRlci1cdTAwM2VldmVudF9za2IgPSBza2I7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxNTo1NzoyNC44MzEzMjY0NTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjgwNjE4MTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uY2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmNgLiBTZWVtcyBsaWtlIHdlJ3ZlIGdvdCBhIGZpeCBmb3IgYW4gb3V0LW9mLWJvdW5kcyByZWFkL3dyaXRlIGluIGBtd2lmaWV4X2RlY29kZV9yeF9wYWNrZXRgIChTRElPKSBhbmQgYG13aWZpZXhfdXNiX3JlY3ZgIChVU0IpIOKAkyBhbHdheXMgZ29vZCB0byBjYXRjaCB0aG9zZS4gVGhlIHBhdGNoIGFwcGVhcnMgdG8gYWRkcmVzcyB0aGUgaXNzdWUgYnkgY2hlY2tpbmcgaWYgYHNrYi1cdTAwM2VsZW5gIGlzIGxlc3MgdGhhbiBgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOYCBhbmQgdGhlbiBzdWJ0cmFjdGluZyB0aGF0IGxlbmd0aCB3aGVuIGNhbGxpbmcgYG1lbWNweWAuIFN0YW5kYXJkIHN0dWZmLCBidXQgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgZnV6eiB0aGlzPyBJdCdzIGEgd2lyZWxlc3MgZHJpdmVyLCBgbXdpZmlleGAsIHNvIHRoYXQncyBhbHJlYWR5IGEgcG9pbnQgaW4gaXRzIGZhdm9yLiBUaGUgVVNCIHNpZGUgb2YgdGhpcyBpcyAqZGVmaW5pdGVseSogZnV6emFibGUuIFdlIGNhbiB1c2UgYSBVU0IgZ2FkZ2V0IGFuZCBhIGBkdW1teV9oY2RgIHRvIHRocm93IGEgYnVuY2ggb2YgbWFsZm9ybWVkIHBhY2tldHMgYXQgaXQuIFRoYXQncyBhIGxvdy1oYW5naW5nIGZydWl0LiBUaGUgU0RJTyBwYXJ0PyBQb3RlbnRpYWxseS4gSWYgdGhlcmUncyBhbiBTRElPIGZ1enplciBvdXQgdGhlcmUsIHRoZW4gaXQgd291bGQgYmUgZnV6emFibGUgdmlhIHRoYXQgdG9vLiBCdXQgaG9uZXN0bHksIHRoZSBVU0IgcGFydCBhbG9uZSBtYWtlcyB0aGlzIFdvcnRoRnV6emluZz10cnVlLiBVU0IgaXMgZ2VuZXJhbGx5IGVhc2llciB0byB0YXJnZXQgZm9yIGZ1enppbmcuXG5cbk5leHQgc3RlcDogQ29uZmlndXJhdGlvbiBvcHRpb25zLiBHb3R0YSBmaWd1cmUgb3V0IGhvdyB0byBlbmFibGUgdGhpcyBkcml2ZXIgaW4gdGhlIGZpcnN0IHBsYWNlLCBvciB3aGF0J3MgbmVlZGVkIHRvIGJ1aWxkIGl0LiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGBLY29uZmlnYCBmaWxlcyDigJMgcHJvYmFibHkgc29tZXRoaW5nIGxpa2UgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnYCwgb3Igc29tZXRoaW5nIHNpbWlsYXJseSBuYW1lZCwgdG8gc2VlIHdoYXQgb3B0aW9ucyBjb250cm9sIGl0cyBpbmNsdXNpb24uIE9uY2UgSSd2ZSBnb3QgdGhhdCwgaXQncyB0aW1lIHRvIHN0YXJ0IHBsYW5uaW5nIGEgZnV6emluZyBjYW1wYWlnbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQwNSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE1OjU3OjMwLjUxMTk0Njg4OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODEzNjU4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTI9Y29uZmlnIE1XSUZJRVhcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTktXFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjEwOlxcdCAgbXdpZmlleC5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0xMj1jb25maWcgTVdJRklFWF9TRElPXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yMi1cXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjM6XFx0ICBtd2lmaWV4X3NkaW8uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9MjU9Y29uZmlnIE1XSUZJRVhfUENJRVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzQtXFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM1OlxcdCAgbXdpZmlleF9wY2llLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTM3PWNvbmZpZyBNV0lGSUVYX1VTQlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctNDUtXFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjQ2OlxcdCAgbXdpZmlleF91c2IuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE1OjU3OjMwLjU3MDA5MDYxN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MDQzNDAzOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGNvbmZpZyBmbGFncyBhbmQgZnVuY3Rpb25zLCBhcyBpZiB0aGV5J3JlIHJ1bm5pbmcgdGhyb3VnaCBteSBvd24gbWVudGFsIHByb2Nlc3NlczpcblxuKipBbmFseXppbmcgdGhlIE1XSUZJRVggQ29kZWJhc2UqKlxuXG5BbHJpZ2h0LCBJJ20gZGl2aW5nIGludG8gdGhpcyBgTVdJRklFWGAgZHJpdmVyLCBhbmQgdGhlIGZpcnN0IHRoaW5ncyB0aGF0IGNhdGNoIG15IGV5ZSBhcmUgdGhlc2UgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgTVdJRklFWGAsIGBNV0lGSUVYX1NESU9gLCBhbmQgYE1XSUZJRVhfVVNCYC4gR2l2ZW4gd2hhdCBJIGtub3cgYWJvdXQgTWFydmVsbCB3aXJlbGVzcyBjaGlwcyBhbmQgdGhlaXIgdmFyaW91cyBpbnRlcmZhY2VzLCB0aGlzIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIGBNV0lGSUVYYCBsaWtlbHkgcmVwcmVzZW50cyB0aGUgYmFzZSBmdW5jdGlvbmFsaXR5LCB0aGUgY29yZSBkcml2ZXIsIGlmIHlvdSB3aWxsLiBUaGUgYF9TRElPYCBhbmQgYF9VU0JgIHN1ZmZpeGVzIGFsbW9zdCBjZXJ0YWlubHkgaW5kaWNhdGUgc3VwcG9ydCBmb3Igc3BlY2lmaWMgcGh5c2ljYWwgbGF5ZXIgaW50ZXJmYWNlcyDigJMgU2VjdXJlIERpZ2l0YWwgSW5wdXQvT3V0cHV0IGFuZCBVbml2ZXJzYWwgU2VyaWFsIEJ1cywgcmVzcGVjdGl2ZWx5LiBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCB0aGUgY29yZSBjb2RlLiBJIHN1c3BlY3QgdGhlcmUgbWF5IGJlIGRpZmZlcmVuY2VzIGluIHRoZSBoYW5kbGluZyBvZiBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIHBhY2tldCB0cmFuc2ZlciwgYW5kIGludGVycnVwdCBtYW5hZ2VtZW50IGRlcGVuZGluZyBvbiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBpbnRlcmZhY2UuXG5cbk5vdywgd2hlcmUgZG8gSSBzdGFydCBkaWdnaW5nIGZvciBwb3RlbnRpYWwgRm9jdXNTeW1ib2xzPyBgbXdpZmlleF9kZWNvZGVfcnhfcGFja2V0YCBhbmQgYG13aWZpZXhfdXNiX3JlY3ZgIHNvdW5kIGxpa2UgZ29vZCBzdGFydGluZyBwb2ludHMuIFRoZSBmb3JtZXIgaXMgYSBkZWFkIGdpdmVhd2F5IGFzIGEgbGlrZWx5IGNhbmRpZGF0ZS4gSXQgaGFuZGxlcyB0aGUgcHJvY2Vzc2luZyBvZiBpbmNvbWluZyBwYWNrZXRzLCBzbyBpdCdzIGEgY3JpdGljYWwgcG9pbnQgZm9yIGFueSBzeXN0ZW0sIHNvIGFueSBwYXJzaW5nIG9yIGZvcm1hdCBoYW5kbGluZyBpbiB0aGF0IGZ1bmN0aW9uIGlzIHdvcnRoIHNjcnV0aW55LiBUaGUgbGF0dGVyLCBgbXdpZmlleF91c2JfcmVjdmAsIHN1Z2dlc3RzIGEgc3BlY2lhbGl6ZWQgZnVuY3Rpb24gdGhhdCBkZWFscyB3aXRoIHJlY2VpdmluZyBkYXRhIHNwZWNpZmljYWxseSB2aWEgdGhlIFVTQiBpbnRlcmZhY2UuIFRoaXMgaXMgYW5vdGhlciBhcmVhIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8sIGFzIFVTQiBvZnRlbiBoYXMgaXRzIG93biBpZGlvc3luY3Jhc2llcyBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIGRhdGEgYnVmZmVyaW5nLCBETUEsIGFuZCBlbmRwb2ludCBtYW5hZ2VtZW50LiBJJ20gZ29pbmcgdG8gY2FyZWZ1bGx5IGluc3BlY3QgdGhlc2UgZnVuY3Rpb25zIGZvciBhbnkgc3VidGxlIGluZGljYXRvcnMgb2YgdnVsbmVyYWJpbGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTE3LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTU6NTc6MzYuOTc0NDMzMzI5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MDg4NTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfZGVjb2RlX3J4X3BhY2tldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9MTU5Mz1zdGF0aWMgdm9pZCBtd2lmaWV4X2RlYWdncl9zZGlvX3BrdChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0xNjQ2LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MTY0NzpzdGF0aWMgaW50IG13aWZpZXhfZGVjb2RlX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMTY0OC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHVwbGRfdHlwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYz0xNzU0PXN0YXRpYyBpbnQgbXdpZmlleF9zZGlvX2NhcmRfdG9faG9zdF9tcF9hZ2dyKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTE5MDQtXFx0XFx0XFx0XFx0LyogUHJvY2VzcyBkZS1hZ2dyIHBhY2tldCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MTkwNTpcXHRcXHRcXHRcXHRtd2lmaWV4X2RlY29kZV9yeF9wYWNrZXQoYWRhcHRlciwgc2tiX2RlYWdncixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTE5MDYtXFx0XFx0XFx0XFx0XFx0XFx0XFx0IHBrdF90eXBlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMTk1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jOjE5NTM6XFx0XFx0bXdpZmlleF9kZWNvZGVfcnhfcGFja2V0KGFkYXB0ZXIsIHNrYiwgcGt0X3R5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMTk1NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jPTE5ODk9c3RhdGljIGludCBtd2lmaWV4X3Byb2Nlc3NfaW50X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0yMDUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MjA1MjpcXHRcXHRtd2lmaWV4X2RlY29kZV9yeF9wYWNrZXQoYWRhcHRlciwgc2tiLCBwa3RfdHlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0yMDUzLVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTU6NTc6MzcuMDMwNTI4OTM4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMxMjU1MDI2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEaXZpbmcgRGVlcCBpbnRvIGBtd2lmaWV4X3VzYl9yZWN2YCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2hlbiBJIHNlZSBgbXdpZmlleF91c2JfcmVjdmAsIG15IG1pbmQgaW1tZWRpYXRlbHkgZ29lcyB0byB0aGUgaGVhcnQgb2YgdGhlIFVTQi1iYXNlZCBNYXJ2ZWxsIFdpLUZpIGRyaXZlci4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgcmlnaHQgYXQgdGhlIHBvaW50IHdoZXJlIGRhdGEgaXMgKnJlY2VpdmVkKiBvdmVyIHRoZSBVU0IgaW50ZXJmYWNlLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgaXQgYmVpbmcgdGhlIHJlY2VpdmluZyBlbmQuXG5cbkknbSB0aGlua2luZyBhYm91dCB0aGUgbG93LWxldmVsIFVTQiB0cmFuc2ZlciBjb250ZXh0LiBJcyB0aGlzIHVzaW5nIGJ1bGsgdHJhbnNmZXJzPyBJbnRlcnJ1cHQgdHJhbnNmZXJzPyBDb250cm9sIHRyYW5zZmVycz8gVGhlIHNwZWNpZmljIHRyYW5zZmVyIHR5cGUgZGljdGF0ZXMgdGhlIGJ1ZmZlcmluZyBzdHJhdGVneSwgdGhlIGludGVycnVwdCBoYW5kbGluZywgYW5kIHRoZSBvdmVyYWxsIGVmZmljaWVuY3kuICBJJ20gZm9jdXNpbmcgb24gdGhlIGludHJpY2FjaWVzIG9mIHRoZSBVU0IgZW5kcG9pbnQgY29tbXVuaWNhdGlvbiBhbmQgZW5zdXJpbmcgdGhhdCB3ZSdyZSB0YWxraW5nIGFib3V0IHJlbGlhYmxlIGFuZCBlZmZpY2llbnQgZGF0YSBpbmdlc3Rpb24gZnJvbSB0aGUgZGV2aWNlLlxuXG5UaGVuLCB0aGVyZSdzIHRoZSB3aG9sZSBpc3N1ZSBvZiBpbnRlcnJ1cHQgaGFuZGxpbmcuIEhvdyBhcmUgaW50ZXJydXB0cyBtYW5hZ2VkIHRvIHNpZ25hbCB0aGUgYXJyaXZhbCBvZiBuZXcgcGFja2V0cz8gSXMgdGhlcmUgYSByaW5nIGJ1ZmZlcj8gV2hhdCBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyBhcmUgaW52b2x2ZWQ/IEFyZSB3ZSBkZWFsaW5nIHdpdGggc3BpbmxvY2tzLCBtdXRleGVzLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlc2UgZGV0YWlscyBhcmUgaW1wb3J0YW50IGZvciByZWFsLXRpbWUgcGVyZm9ybWFuY2UgYW5kIGF2b2lkaW5nIHJhY2UgY29uZGl0aW9ucy5cblxuSSdtIHN0YXJ0aW5nIHRvIHRoaW5rIGFib3V0IGVycm9yIGhhbmRsaW5nLiBXaGF0IGhhcHBlbnMgaWYgdGhlcmUncyBhIFVTQiB0cmFuc2ZlciBlcnJvcj8gSXMgdGhlcmUgcm9idXN0IGVycm9yIGNoZWNraW5nIG9uIHRoZSBVU0Igc2lkZT8gRG9lcyBpdCBkaWZmZXJlbnRpYXRlIGJldHdlZW4gZGlmZmVyZW50IFVTQiBpc3N1ZXM/IEFyZSB3ZSBhYmxlIHRvIHJldHJ5PyBBcmUgdGhlcmUgcmV0cmllcyB3aXRoIGV4cG9uZW50aWFsIGJhY2tvZmY/IFdoYXQncyB0aGUgc3RyYXRlZ3kgZm9yIGRlYWxpbmcgd2l0aCBVU0IgZGlzY29ubmVjdHMgb3IgbGluayBwcm9ibGVtcz8gQSByb2J1c3QgcmVjZWl2aW5nIHJvdXRpbmUgaGFzIHRvIGJlIHJlc2lsaWVudCBpbiB0aGVzZSBlcnJvciBjYXNlcy5cblxuQWxzbywgSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBkYXRhIGl0c2VsZi4gSG93IGlzIHRoZSBkYXRhIGZvcm1hdHRlZD8gSXMgaXQgZnJhbWVkIHdpdGggaGVhZGVycyBhbmQgdHJhaWxlcnM/IFdoZXJlIGlzIHRoZSBkYXRhIGJ1ZmZlciBsb2NhdGVkPyBXaGF0J3MgdGhlIHNpemUgb2YgdGhlIGRhdGEgY2h1bmtzIHdlIGFyZSBoYW5kbGluZz8gV2hhdCBpcyB0aGUgb3ZlcmFsbCBkYXRhIGZsb3cgYXJjaGl0ZWN0dXJlPyBXaGF0IGtpbmQgb2YgbWVtb3J5IGFjY2VzcyBhcmUgd2UgZGVhbGluZyB3aXRoPyBJcyB0aGUgZGF0YSBETUEnZCBkaXJlY3RseSBpbnRvIGEgYnVmZmVyLCBvciBkb2VzIGl0IHJlcXVpcmUgbW9yZSBpbnRlcm1lZGlhdGUgY29weWluZz9cblxuSSdtIG1lbnRhbGx5IHN0ZXBwaW5nIHRocm91Z2ggYSB0eXBpY2FsIHJlY2VpdmUgcGF0aC4gSSdtIHZpc3VhbGl6aW5nIHRoZSBkYXRhIGJlaW5nIHJlY2VpdmVkLCBjaGVja2VkIGZvciBlcnJvcnMsIG1heWJlIGRlY3J5cHRlZCAoZGVwZW5kaW5nIG9uIHRoZSBzZWN1cml0eSBpbXBsZW1lbnRhdGlvbiksIGFuZCB0aGVuIGhhbmRlZCBvZmYgdG8gdGhlIGhpZ2hlci1sZXZlbCBXaS1GaSBzdGFjayBmb3IgcHJvY2Vzc2luZy4gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGBtd2lmaWV4X3VzYl9yZWN2YCBpbXBsZW1lbnRzIHBhY2tldCBhZ2dyZWdhdGlvbiBvciByZWFzc2VtYmx5LiBJdCdzIHBvc3NpYmxlIHRoYXQgZnJhZ21lbnRhdGlvbiBhbmQgcmVhc3NlbWJseSBoYXBwZW5zIGF0IHRoZSBmaXJtd2FyZSBsYXllciwgYnV0IEkgbmVlZCB0byBjb25zaWRlciBpdCBhdCB0aGlzIGxldmVsIGFzIHdlbGwuIEZpbmFsbHksIGlzIHRoZXJlIGFueSBraW5kIG9mIHBvd2VyIG1hbmFnZW1lbnQgaW1wbGljYXRpb24gSSBzaG91bGQgYmUgdGhpbmtpbmcgYWJvdXQgYXQgdGhpcyBwYXJ0P1xuXG5JdCdzIGFsbCBhYm91dCBlbnN1cmluZyB0aGF0IHRoZSBkcml2ZXIgYWNjdXJhdGVseSBhbmQgZWZmaWNpZW50bHkgcmVjZWl2ZXMgZGF0YSBmcm9tIHRoZSBVU0IgaW50ZXJmYWNlLCBoYW5kbGVzIGVycm9ycyBncmFjZWZ1bGx5LCBhbmQgZGVsaXZlcnMgdGhlIHBhY2tldHMgdG8gdGhlIHVwcGVyIGxheWVycyB3aXRob3V0IGludHJvZHVjaW5nIGFueSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcy4gVGhpcyBzZWVtcyBsaWtlIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZSwgYW5kIEknZCBuZWVkIHRvIGV4YW1pbmUgdGhpcyBjb2RlIGNhcmVmdWxseSB0byBiZSBzdXJlIGFib3V0IGl0cyBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU1MCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE1OjU3OjQyLjM0MzA4MTMwNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDA3OTQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3VzYl9yZWN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9NDE9c3RhdGljIGludCBtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKHN0cnVjdCB1cmJfY29udGV4dCAqY3R4LCBpbnQgc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDUtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjQ2OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVjdihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00Ny1cXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggZXApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTUzPXN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE4ODpcXHRcXHRzdGF0dXMgPSBtd2lmaWV4X3VzYl9yZWN2KGFkYXB0ZXIsIHNrYiwgY29udGV4dC1cXHUwMDNlZXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xODktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTk3LVxcdFxcdFxcdCAqIHVyYiBmb3IgY21kX2VwIHdpbGwgYmUgcmUtc3VibWl0dGVkIGluIGNhbGxiYWNrXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE5ODpcXHRcXHRcXHQgKiBtd2lmaWV4X3VzYl9yZWN2X2NvbXBsZXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE5OS1cXHRcXHRcXHQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTU6NTc6NDIuNDAzMTY2MTMyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE1MTUwODcxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBNV0lGSUVYIERyaXZlcjogSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhlIGBtd2lmaWV4YCBkcml2ZXIgYW5kIHRoaW5raW5nIGFib3V0IHdoZXJlIHdlIGNhbiBnZXQgdGhlIGJlc3QgZnV6emluZyBjb3ZlcmFnZS4gVGhlIGtleSBmdW5jdGlvbnMgSSdtIGZvY3VzaW5nIG9uIGFyZSBgbXdpZmlleF9kZWNvZGVfcnhfcGFja2V0YCBhbmQgYG13aWZpZXhfdXNiX3JlY3ZgLiBJbW1lZGlhdGVseSwgdGhlIFVTQiBhc3BlY3Qgb2YgdGhpcyBqdW1wcyBvdXQgYXQgbWUuIFdlIGNhbiBhYnNvbHV0ZWx5IGhpdCB0aGF0IHdpdGggVVNCIGZ1enppbmcgdG9vbHMsIGFuZCBzeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMgYXJlIGEgZ29vZCBmaXQgaGVyZS4gVGhhdOKAmXMgYSBmYWlybHkgZGlyZWN0IHBhdGggdG8gZ2VuZXJhdGluZyBpbnRlcmVzdGluZyB0ZXN0IGNhc2VzLlxuXG5UaGUgU0RJTyBzaWRlIG9mIHRoaW5ncyBpcyBhIGxpdHRsZSBsZXNzIGNsZWFyLiBXaGlsZSBwb3RlbnRpYWxseSBpbXBvcnRhbnQsIEknbSBub3Qgc3VyZSBpZiBzeXprYWxsZXIgY3VycmVudGx5IHN1cHBvcnRzIGRpcmVjdCBTRElPIGZ1enppbmcgaW4gdGhlIHNhbWUgd2F5IGl0IGRvZXMgVVNCLiBUaGF0J3Mgc29tZXRoaW5nIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLCBidXQgdGhlIFVTQiBwYXRoIGxvb2tzIGxpa2UgdGhlIGltbWVkaWF0ZSBsb3ctaGFuZ2luZyBmcnVpdC5cblxuSSBzZWUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBgTVdJRklFWGAsIGBNV0lGSUVYX1VTQmAsIGFuZCBgTVdJRklFWF9TRElPYC4gVGhlc2Ugc2V0dGluZ3Mgd2lsbCBpbmZsdWVuY2Ugd2hpY2ggY29kZSBwYXRocyBhcmUgZW5hYmxlZCwgd2hpY2ggaXMgY3J1Y2lhbCBmb3IgbWF4aW1pemluZyBvdXIgZnV6emluZyBlZmZpY2llbmN5IGFuZCBlbnN1cmluZyB3ZSdyZSB0ZXN0aW5nIHRoZSByZWxldmFudCBwb3J0aW9ucyBvZiB0aGUgZHJpdmVyLlxuXG5SaWdodCwgc28gd2l0aCB0aGF0IGluaXRpYWwgYXNzZXNzbWVudCBjb21wbGV0ZSwgbGV0J3MgZXN0YWJsaXNoIHNvbWUgY29uY3JldGUgb2JqZWN0aXZlcyBhbmQgbW92ZSBmb3J3YXJkIHdpdGggdGhlIG5leHQgc3RlcHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1OTMsIk91dHB1dFRva2VucyI6MTI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE1OjU3OjQ3LjU1NDY3NjcwMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0NDk0OTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNV0lGSUVYXCIsXG4gICAgXCJNV0lGSUVYX1VTQlwiLFxuICAgIFwiTVdJRklFWF9TRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF9kZWNvZGVfcnhfcGFja2V0XCIsXG4gICAgXCJtd2lmaWV4X3VzYl9yZWN2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkL3dyaXRlIGluIHRoZSBNYXJ2ZWxsIFdpRmkgZHJpdmVyIChtd2lmaWV4KSB3aGVuIHByb2Nlc3NpbmcgcmVjZWl2ZWQgZXZlbnRzLiBUaGUgVVNCIHBhcnQgb2YgdGhpcyBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGdhZGdldCBlbXVsYXRpb24sIG1ha2luZyBpdCByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIixcbiAgICBcIk1XSUZJRVhfU0RJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm13aWZpZXhfZGVjb2RlX3J4X3BhY2tldFwiLFxuICAgIFwibXdpZmlleF91c2JfcmVjdlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZC93cml0ZSBpbiB0aGUgTWFydmVsbCBXaUZpIGRyaXZlciAobXdpZmlleCkgd2hlbiBwcm9jZXNzaW5nIHJlY2VpdmVkIGV2ZW50cy4gVGhlIFVTQiBwYXJ0IG9mIHRoaXMgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowdffl4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-20 15:40:34 +0000 UTC FinishedAt: 2026-07-20 15:57:49 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB", "MWIFIEX_SDIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB", "MWIFIEX_SDIO" ], "series_id": "66dc0d63-6561-4f45-a352-e54f61aeb1cf" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mwifiex_decode_rx_packet", "mwifiex_usb_recv" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIwIDE1OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OywKICAgICYjMzQ7TVdJRklFWF9TRElPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF9kZWNvZGVfcnhfcGFja2V0JiMzNDssCiAgICAmIzM0O213aWZpZXhfdXNiX3JlY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkL3dyaXRlIGluIHRoZSBNYXJ2ZWxsIFdpRmkgZHJpdmVyIChtd2lmaWV4KSB3aGVuIHByb2Nlc3NpbmcgcmVjZWl2ZWQgZXZlbnRzLiBUaGUgVVNCIHBhcnQgb2YgdGhpcyBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGdhZGdldCBlbXVsYXRpb24sIG1ha2luZyBpdCByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTU6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyOTgwMTY4NDNhYmViYjdmYjE4NDU5MTA0OTQwODhkY2U1YjhjMjk4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjAgMTU6NTc6MjMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmNcbmluZGV4IGYwMzlkNmYxOTE4M2E1Li40MTAxYmYxZWRjYTFlNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmNcbkBAIC0xNzEyLDEyICYjNDM7MTcxMiwxOSBAQCBzdGF0aWMgaW50IG13aWZpZXhfZGVjb2RlX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuIFx0Y2FzZSBNV0lGSUVYX1RZUEVfRVZFTlQ6XG4gXHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVWRU5ULFxuIFx0XHRcdCAgICBcJiMzNDtpbmZvOiAtLS0gUng6IEV2ZW50IC0tLVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOIHx8XG4mIzQzO1x0XHQgICAgc2tiLVx1MDAzZWxlbiBcdTAwM2UgTUFYX0VWRU5UX1NJWkUpIHtcbiYjNDM7XHRcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXG4mIzQzO1x0XHRcdFx0ICAgIFwmIzM0O0VWRU5UOiBpbnZhbGlkIHNrYi1cdTAwM2VsZW4gJXVcXG5cJiMzNDssIHNrYi1cdTAwM2VsZW4pO1xuJiM0MztcdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuJiM0MztcdFx0XHRyZXR1cm4gLTE7XG4mIzQzO1x0XHR9XG4mIzQzO1xuIFx0XHRhZGFwdGVyLVx1MDAzZWV2ZW50X2NhdXNlID0gZ2V0X3VuYWxpZ25lZF9sZTMyKHNrYi1cdTAwM2VkYXRhKTtcbiBcbi1cdFx0aWYgKChza2ItXHUwMDNlbGVuIFx1MDAzZSAwKSBcdTAwMjZcdTAwMjYgKHNrYi1cdTAwM2VsZW4gIFx1MDAzYyBNQVhfRVZFTlRfU0laRSkpXG4tXHRcdFx0bWVtY3B5KGFkYXB0ZXItXHUwMDNlZXZlbnRfYm9keSxcbi1cdFx0XHQgICAgICAgc2tiLVx1MDAzZWRhdGEgJiM0MzsgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOLFxuLVx0XHRcdCAgICAgICBza2ItXHUwMDNlbGVuKTtcbiYjNDM7XHRcdG1lbWNweShhZGFwdGVyLVx1MDAzZWV2ZW50X2JvZHksXG4mIzQzO1x0XHQgICAgICAgc2tiLVx1MDAzZWRhdGEgJiM0MzsgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOLFxuJiM0MztcdFx0ICAgICAgIHNrYi1cdTAwM2VsZW4gLSBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU4pO1xuIFxuIFx0XHQvKiBldmVudCBjYXVzZSBoYXMgYmVlbiBzYXZlZCB0byBhZGFwdGVyLVx1MDAzZWV2ZW50X2NhdXNlICovXG4gXHRcdGFkYXB0ZXItXHUwMDNlZXZlbnRfcmVjZWl2ZWQgPSB0cnVlO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuY1xuaW5kZXggZjRiOTRhMTA1NGY2NTAuLmE2ZWQ4MmU3MjI4YjExIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmNcbkBAIC0xMTAsNyAmIzQzOzExMCw4IEBAIHN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVjdihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRcdH1cbiBcbiBcdFx0XHRtZW1jcHkoYWRhcHRlci1cdTAwM2VldmVudF9ib2R5LCBza2ItXHUwMDNlZGF0YSAmIzQzO1xuLVx0XHRcdCAgICAgICBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU4sIHNrYi1cdTAwM2VsZW4pO1xuJiM0MztcdFx0XHQgICAgICAgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOLFxuJiM0MztcdFx0XHQgICAgICAgc2tiLVx1MDAzZWxlbiAtIE1XSUZJRVhfRVZFTlRfSEVBREVSX0xFTik7XG4gXG4gXHRcdFx0YWRhcHRlci1cdTAwM2VldmVudF9yZWNlaXZlZCA9IHRydWU7XG4gXHRcdFx0YWRhcHRlci1cdTAwM2VldmVudF9za2IgPSBza2I7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTU6NTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OywKICAgICYjMzQ7TVdJRklFWF9TRElPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF9kZWNvZGVfcnhfcGFja2V0JiMzNDssCiAgICAmIzM0O213aWZpZXhfdXNiX3JlY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkL3dyaXRlIGluIHRoZSBNYXJ2ZWxsIFdpRmkgZHJpdmVyIChtd2lmaWV4KSB3aGVuIHByb2Nlc3NpbmcgcmVjZWl2ZWQgZXZlbnRzLiBUaGUgVVNCIHBhcnQgb2YgdGhpcyBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGdhZGdldCBlbXVsYXRpb24sIG1ha2luZyBpdCByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDI5ODAxNjg0M2FiZWJiN2ZiMTg0NTkxMDQ5NDA4OGRjZTViOGMyOTgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAyMCAxNTo1NzoyMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jCmluZGV4IGYwMzlkNmYxOTE4M2E1Li40MTAxYmYxZWRjYTFlNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jCkBAIC0xNzEyLDEyICYjNDM7MTcxMiwxOSBAQCBzdGF0aWMgaW50IG13aWZpZXhfZGVjb2RlX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLAogCWNhc2UgTVdJRklFWF9UWVBFX0VWRU5UOgogCQltd2lmaWV4X2RiZyhhZGFwdGVyLCBFVkVOVCwKIAkJCSAgICAmIzM0O2luZm86IC0tLSBSeDogRXZlbnQgLS0tXG4mIzM0Oyk7CiYjNDM7CQlpZiAoc2tiLSZndDtsZW4gJmx0OyBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU4gfHwKJiM0MzsJCSAgICBza2ItJmd0O2xlbiAmZ3Q7IE1BWF9FVkVOVF9TSVpFKSB7CiYjNDM7CQkJbXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsCiYjNDM7CQkJCSAgICAmIzM0O0VWRU5UOiBpbnZhbGlkIHNrYi0mZ3Q7bGVuICV1XG4mIzM0Oywgc2tiLSZndDtsZW4pOwomIzQzOwkJCWRldl9rZnJlZV9za2JfYW55KHNrYik7CiYjNDM7CQkJcmV0dXJuIC0xOwomIzQzOwkJfQomIzQzOwogCQlhZGFwdGVyLSZndDtldmVudF9jYXVzZSA9IGdldF91bmFsaWduZWRfbGUzMihza2ItJmd0O2RhdGEpOwogCi0JCWlmICgoc2tiLSZndDtsZW4gJmd0OyAwKSAmYW1wOyZhbXA7IChza2ItJmd0O2xlbiAgJmx0OyBNQVhfRVZFTlRfU0laRSkpCi0JCQltZW1jcHkoYWRhcHRlci0mZ3Q7ZXZlbnRfYm9keSwKLQkJCSAgICAgICBza2ItJmd0O2RhdGEgJiM0MzsgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOLAotCQkJICAgICAgIHNrYi0mZ3Q7bGVuKTsKJiM0MzsJCW1lbWNweShhZGFwdGVyLSZndDtldmVudF9ib2R5LAomIzQzOwkJICAgICAgIHNrYi0mZ3Q7ZGF0YSAmIzQzOyBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU4sCiYjNDM7CQkgICAgICAgc2tiLSZndDtsZW4gLSBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU4pOwogCiAJCS8qIGV2ZW50IGNhdXNlIGhhcyBiZWVuIHNhdmVkIHRvIGFkYXB0ZXItJmd0O2V2ZW50X2NhdXNlICovCiAJCWFkYXB0ZXItJmd0O2V2ZW50X3JlY2VpdmVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYwppbmRleCBmNGI5NGExMDU0ZjY1MC4uYTZlZDgyZTcyMjhiMTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMKQEAgLTExMCw3ICYjNDM7MTEwLDggQEAgc3RhdGljIGludCBtd2lmaWV4X3VzYl9yZWN2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsCiAJCQl9CiAKIAkJCW1lbWNweShhZGFwdGVyLSZndDtldmVudF9ib2R5LCBza2ItJmd0O2RhdGEgJiM0MzsKLQkJCSAgICAgICBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU4sIHNrYi0mZ3Q7bGVuKTsKJiM0MzsJCQkgICAgICAgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOLAomIzQzOwkJCSAgICAgICBza2ItJmd0O2xlbiAtIE1XSUZJRVhfRVZFTlRfSEVBREVSX0xFTik7CiAKIAkJCWFkYXB0ZXItJmd0O2V2ZW50X3JlY2VpdmVkID0gdHJ1ZTsKIAkJCWFkYXB0ZXItJmd0O2V2ZW50X3NrYiA9IHNrYjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQwNQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uY2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmNgLiBTZWVtcyBsaWtlIHdlJiMzOTt2ZSBnb3QgYSBmaXggZm9yIGFuIG91dC1vZi1ib3VuZHMgcmVhZC93cml0ZSBpbiBgbXdpZmlleF9kZWNvZGVfcnhfcGFja2V0YCAoU0RJTykgYW5kIGBtd2lmaWV4X3VzYl9yZWN2YCAoVVNCKSDigJMgYWx3YXlzIGdvb2QgdG8gY2F0Y2ggdGhvc2UuIFRoZSBwYXRjaCBhcHBlYXJzIHRvIGFkZHJlc3MgdGhlIGlzc3VlIGJ5IGNoZWNraW5nIGlmIGBza2ItJmd0O2xlbmAgaXMgbGVzcyB0aGFuIGBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU5gIGFuZCB0aGVuIHN1YnRyYWN0aW5nIHRoYXQgbGVuZ3RoIHdoZW4gY2FsbGluZyBgbWVtY3B5YC4gU3RhbmRhcmQgc3R1ZmYsIGJ1dCBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4KCk5vdywgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgZnV6eiB0aGlzPyBJdCYjMzk7cyBhIHdpcmVsZXNzIGRyaXZlciwgYG13aWZpZXhgLCBzbyB0aGF0JiMzOTtzIGFscmVhZHkgYSBwb2ludCBpbiBpdHMgZmF2b3IuIFRoZSBVU0Igc2lkZSBvZiB0aGlzIGlzICpkZWZpbml0ZWx5KiBmdXp6YWJsZS4gV2UgY2FuIHVzZSBhIFVTQiBnYWRnZXQgYW5kIGEgYGR1bW15X2hjZGAgdG8gdGhyb3cgYSBidW5jaCBvZiBtYWxmb3JtZWQgcGFja2V0cyBhdCBpdC4gVGhhdCYjMzk7cyBhIGxvdy1oYW5naW5nIGZydWl0LiBUaGUgU0RJTyBwYXJ0PyBQb3RlbnRpYWxseS4gSWYgdGhlcmUmIzM5O3MgYW4gU0RJTyBmdXp6ZXIgb3V0IHRoZXJlLCB0aGVuIGl0IHdvdWxkIGJlIGZ1enphYmxlIHZpYSB0aGF0IHRvby4gQnV0IGhvbmVzdGx5LCB0aGUgVVNCIHBhcnQgYWxvbmUgbWFrZXMgdGhpcyBXb3J0aEZ1enppbmc9dHJ1ZS4gVVNCIGlzIGdlbmVyYWxseSBlYXNpZXIgdG8gdGFyZ2V0IGZvciBmdXp6aW5nLgoKTmV4dCBzdGVwOiBDb25maWd1cmF0aW9uIG9wdGlvbnMuIEdvdHRhIGZpZ3VyZSBvdXQgaG93IHRvIGVuYWJsZSB0aGlzIGRyaXZlciBpbiB0aGUgZmlyc3QgcGxhY2UsIG9yIHdoYXQmIzM5O3MgbmVlZGVkIHRvIGJ1aWxkIGl0LiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgS2NvbmZpZ2AgZmlsZXMg4oCTIHByb2JhYmx5IHNvbWV0aGluZyBsaWtlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ2AsIG9yIHNvbWV0aGluZyBzaW1pbGFybHkgbmFtZWQsIHRvIHNlZSB3aGF0IG9wdGlvbnMgY29udHJvbCBpdHMgaW5jbHVzaW9uLiBPbmNlIEkmIzM5O3ZlIGdvdCB0aGF0LCBpdCYjMzk7cyB0aW1lIHRvIHN0YXJ0IHBsYW5uaW5nIGEgZnV6emluZyBjYW1wYWlnbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9Mj1jb25maWcgTVdJRklFWFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTktXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMDpcdCAgbXdpZmlleC5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9MTI9Y29uZmlnIE1XSUZJRVhfU0RJT1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTIyLVx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjM6XHQgIG13aWZpZXhfc2Rpby5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9MjU9Y29uZmlnIE1XSUZJRVhfUENJRVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM0LVx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MzU6XHQgIG13aWZpZXhfcGNpZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9Mzc9Y29uZmlnIE1XSUZJRVhfVVNCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctNDUtXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzo0NjpcdCAgbXdpZmlleF91c2IuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTU6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUxNwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgY29uZmlnIGZsYWdzIGFuZCBmdW5jdGlvbnMsIGFzIGlmIHRoZXkmIzM5O3JlIHJ1bm5pbmcgdGhyb3VnaCBteSBvd24gbWVudGFsIHByb2Nlc3NlczoKCioqQW5hbHl6aW5nIHRoZSBNV0lGSUVYIENvZGViYXNlKioKCkFscmlnaHQsIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgTVdJRklFWGAgZHJpdmVyLCBhbmQgdGhlIGZpcnN0IHRoaW5ncyB0aGF0IGNhdGNoIG15IGV5ZSBhcmUgdGhlc2UgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgTVdJRklFWGAsIGBNV0lGSUVYX1NESU9gLCBhbmQgYE1XSUZJRVhfVVNCYC4gR2l2ZW4gd2hhdCBJIGtub3cgYWJvdXQgTWFydmVsbCB3aXJlbGVzcyBjaGlwcyBhbmQgdGhlaXIgdmFyaW91cyBpbnRlcmZhY2VzLCB0aGlzIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIGBNV0lGSUVYYCBsaWtlbHkgcmVwcmVzZW50cyB0aGUgYmFzZSBmdW5jdGlvbmFsaXR5LCB0aGUgY29yZSBkcml2ZXIsIGlmIHlvdSB3aWxsLiBUaGUgYF9TRElPYCBhbmQgYF9VU0JgIHN1ZmZpeGVzIGFsbW9zdCBjZXJ0YWlubHkgaW5kaWNhdGUgc3VwcG9ydCBmb3Igc3BlY2lmaWMgcGh5c2ljYWwgbGF5ZXIgaW50ZXJmYWNlcyDigJMgU2VjdXJlIERpZ2l0YWwgSW5wdXQvT3V0cHV0IGFuZCBVbml2ZXJzYWwgU2VyaWFsIEJ1cywgcmVzcGVjdGl2ZWx5LiBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCB0aGUgY29yZSBjb2RlLiBJIHN1c3BlY3QgdGhlcmUgbWF5IGJlIGRpZmZlcmVuY2VzIGluIHRoZSBoYW5kbGluZyBvZiBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIHBhY2tldCB0cmFuc2ZlciwgYW5kIGludGVycnVwdCBtYW5hZ2VtZW50IGRlcGVuZGluZyBvbiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBpbnRlcmZhY2UuCgpOb3csIHdoZXJlIGRvIEkgc3RhcnQgZGlnZ2luZyBmb3IgcG90ZW50aWFsIEZvY3VzU3ltYm9scz8gYG13aWZpZXhfZGVjb2RlX3J4X3BhY2tldGAgYW5kIGBtd2lmaWV4X3VzYl9yZWN2YCBzb3VuZCBsaWtlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzLiBUaGUgZm9ybWVyIGlzIGEgZGVhZCBnaXZlYXdheSBhcyBhIGxpa2VseSBjYW5kaWRhdGUuIEl0IGhhbmRsZXMgdGhlIHByb2Nlc3Npbmcgb2YgaW5jb21pbmcgcGFja2V0cywgc28gaXQmIzM5O3MgYSBjcml0aWNhbCBwb2ludCBmb3IgYW55IHN5c3RlbSwgc28gYW55IHBhcnNpbmcgb3IgZm9ybWF0IGhhbmRsaW5nIGluIHRoYXQgZnVuY3Rpb24gaXMgd29ydGggc2NydXRpbnkuIFRoZSBsYXR0ZXIsIGBtd2lmaWV4X3VzYl9yZWN2YCwgc3VnZ2VzdHMgYSBzcGVjaWFsaXplZCBmdW5jdGlvbiB0aGF0IGRlYWxzIHdpdGggcmVjZWl2aW5nIGRhdGEgc3BlY2lmaWNhbGx5IHZpYSB0aGUgVVNCIGludGVyZmFjZS4gVGhpcyBpcyBhbm90aGVyIGFyZWEgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0bywgYXMgVVNCIG9mdGVuIGhhcyBpdHMgb3duIGlkaW9zeW5jcmFzaWVzIGFuZCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIHJlbGF0ZWQgdG8gZGF0YSBidWZmZXJpbmcsIERNQSwgYW5kIGVuZHBvaW50IG1hbmFnZW1lbnQuIEkmIzM5O20gZ29pbmcgdG8gY2FyZWZ1bGx5IGluc3BlY3QgdGhlc2UgZnVuY3Rpb25zIGZvciBhbnkgc3VidGxlIGluZGljYXRvcnMgb2YgdnVsbmVyYWJpbGl0aWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE1OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfZGVjb2RlX3J4X3BhY2tldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYz0xNTkzPXN0YXRpYyB2b2lkIG13aWZpZXhfZGVhZ2dyX3NkaW9fcGt0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0xNjQ2LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYzoxNjQ3OnN0YXRpYyBpbnQgbXdpZmlleF9kZWNvZGVfcnhfcGFja2V0KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTE2NDgtXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHVwbGRfdHlwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9MTc1ND1zdGF0aWMgaW50IG13aWZpZXhfc2Rpb19jYXJkX3RvX2hvc3RfbXBfYWdncihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMTkwNC1cdFx0XHRcdC8qIFByb2Nlc3MgZGUtYWdnciBwYWNrZXQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MTkwNTpcdFx0XHRcdG13aWZpZXhfZGVjb2RlX3J4X3BhY2tldChhZGFwdGVyLCBza2JfZGVhZ2dyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0xOTA2LVx0XHRcdFx0XHRcdFx0IHBrdF90eXBlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTE5NTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jOjE5NTM6XHRcdG13aWZpZXhfZGVjb2RlX3J4X3BhY2tldChhZGFwdGVyLCBza2IsIHBrdF90eXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMTk1NC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jPTE5ODk9c3RhdGljIGludCBtd2lmaWV4X3Byb2Nlc3NfaW50X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMjA1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MjA1MjpcdFx0bXdpZmlleF9kZWNvZGVfcnhfcGFja2V0KGFkYXB0ZXIsIHNrYiwgcGt0X3R5cGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0yMDUzLVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDE1OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NTAKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBEZWVwIGludG8gYG13aWZpZXhfdXNiX3JlY3ZgKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdoZW4gSSBzZWUgYG13aWZpZXhfdXNiX3JlY3ZgLCBteSBtaW5kIGltbWVkaWF0ZWx5IGdvZXMgdG8gdGhlIGhlYXJ0IG9mIHRoZSBVU0ItYmFzZWQgTWFydmVsbCBXaS1GaSBkcml2ZXIuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHJpZ2h0IGF0IHRoZSBwb2ludCB3aGVyZSBkYXRhIGlzICpyZWNlaXZlZCogb3ZlciB0aGUgVVNCIGludGVyZmFjZS4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGl0IGJlaW5nIHRoZSByZWNlaXZpbmcgZW5kLgoKSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgbG93LWxldmVsIFVTQiB0cmFuc2ZlciBjb250ZXh0LiBJcyB0aGlzIHVzaW5nIGJ1bGsgdHJhbnNmZXJzPyBJbnRlcnJ1cHQgdHJhbnNmZXJzPyBDb250cm9sIHRyYW5zZmVycz8gVGhlIHNwZWNpZmljIHRyYW5zZmVyIHR5cGUgZGljdGF0ZXMgdGhlIGJ1ZmZlcmluZyBzdHJhdGVneSwgdGhlIGludGVycnVwdCBoYW5kbGluZywgYW5kIHRoZSBvdmVyYWxsIGVmZmljaWVuY3kuICBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBpbnRyaWNhY2llcyBvZiB0aGUgVVNCIGVuZHBvaW50IGNvbW11bmljYXRpb24gYW5kIGVuc3VyaW5nIHRoYXQgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgcmVsaWFibGUgYW5kIGVmZmljaWVudCBkYXRhIGluZ2VzdGlvbiBmcm9tIHRoZSBkZXZpY2UuCgpUaGVuLCB0aGVyZSYjMzk7cyB0aGUgd2hvbGUgaXNzdWUgb2YgaW50ZXJydXB0IGhhbmRsaW5nLiBIb3cgYXJlIGludGVycnVwdHMgbWFuYWdlZCB0byBzaWduYWwgdGhlIGFycml2YWwgb2YgbmV3IHBhY2tldHM/IElzIHRoZXJlIGEgcmluZyBidWZmZXI/IFdoYXQgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgYXJlIGludm9sdmVkPyBBcmUgd2UgZGVhbGluZyB3aXRoIHNwaW5sb2NrcywgbXV0ZXhlcywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZXNlIGRldGFpbHMgYXJlIGltcG9ydGFudCBmb3IgcmVhbC10aW1lIHBlcmZvcm1hbmNlIGFuZCBhdm9pZGluZyByYWNlIGNvbmRpdGlvbnMuCgpJJiMzOTttIHN0YXJ0aW5nIHRvIHRoaW5rIGFib3V0IGVycm9yIGhhbmRsaW5nLiBXaGF0IGhhcHBlbnMgaWYgdGhlcmUmIzM5O3MgYSBVU0IgdHJhbnNmZXIgZXJyb3I/IElzIHRoZXJlIHJvYnVzdCBlcnJvciBjaGVja2luZyBvbiB0aGUgVVNCIHNpZGU/IERvZXMgaXQgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGRpZmZlcmVudCBVU0IgaXNzdWVzPyBBcmUgd2UgYWJsZSB0byByZXRyeT8gQXJlIHRoZXJlIHJldHJpZXMgd2l0aCBleHBvbmVudGlhbCBiYWNrb2ZmPyBXaGF0JiMzOTtzIHRoZSBzdHJhdGVneSBmb3IgZGVhbGluZyB3aXRoIFVTQiBkaXNjb25uZWN0cyBvciBsaW5rIHByb2JsZW1zPyBBIHJvYnVzdCByZWNlaXZpbmcgcm91dGluZSBoYXMgdG8gYmUgcmVzaWxpZW50IGluIHRoZXNlIGVycm9yIGNhc2VzLgoKQWxzbywgSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBkYXRhIGl0c2VsZi4gSG93IGlzIHRoZSBkYXRhIGZvcm1hdHRlZD8gSXMgaXQgZnJhbWVkIHdpdGggaGVhZGVycyBhbmQgdHJhaWxlcnM/IFdoZXJlIGlzIHRoZSBkYXRhIGJ1ZmZlciBsb2NhdGVkPyBXaGF0JiMzOTtzIHRoZSBzaXplIG9mIHRoZSBkYXRhIGNodW5rcyB3ZSBhcmUgaGFuZGxpbmc/IFdoYXQgaXMgdGhlIG92ZXJhbGwgZGF0YSBmbG93IGFyY2hpdGVjdHVyZT8gV2hhdCBraW5kIG9mIG1lbW9yeSBhY2Nlc3MgYXJlIHdlIGRlYWxpbmcgd2l0aD8gSXMgdGhlIGRhdGEgRE1BJiMzOTtkIGRpcmVjdGx5IGludG8gYSBidWZmZXIsIG9yIGRvZXMgaXQgcmVxdWlyZSBtb3JlIGludGVybWVkaWF0ZSBjb3B5aW5nPwoKSSYjMzk7bSBtZW50YWxseSBzdGVwcGluZyB0aHJvdWdoIGEgdHlwaWNhbCByZWNlaXZlIHBhdGguIEkmIzM5O20gdmlzdWFsaXppbmcgdGhlIGRhdGEgYmVpbmcgcmVjZWl2ZWQsIGNoZWNrZWQgZm9yIGVycm9ycywgbWF5YmUgZGVjcnlwdGVkIChkZXBlbmRpbmcgb24gdGhlIHNlY3VyaXR5IGltcGxlbWVudGF0aW9uKSwgYW5kIHRoZW4gaGFuZGVkIG9mZiB0byB0aGUgaGlnaGVyLWxldmVsIFdpLUZpIHN0YWNrIGZvciBwcm9jZXNzaW5nLiBJIHdhbnQgdG8gc2VlIGlmIHRoaXMgYG13aWZpZXhfdXNiX3JlY3ZgIGltcGxlbWVudHMgcGFja2V0IGFnZ3JlZ2F0aW9uIG9yIHJlYXNzZW1ibHkuIEl0JiMzOTtzIHBvc3NpYmxlIHRoYXQgZnJhZ21lbnRhdGlvbiBhbmQgcmVhc3NlbWJseSBoYXBwZW5zIGF0IHRoZSBmaXJtd2FyZSBsYXllciwgYnV0IEkgbmVlZCB0byBjb25zaWRlciBpdCBhdCB0aGlzIGxldmVsIGFzIHdlbGwuIEZpbmFsbHksIGlzIHRoZXJlIGFueSBraW5kIG9mIHBvd2VyIG1hbmFnZW1lbnQgaW1wbGljYXRpb24gSSBzaG91bGQgYmUgdGhpbmtpbmcgYWJvdXQgYXQgdGhpcyBwYXJ0PwoKSXQmIzM5O3MgYWxsIGFib3V0IGVuc3VyaW5nIHRoYXQgdGhlIGRyaXZlciBhY2N1cmF0ZWx5IGFuZCBlZmZpY2llbnRseSByZWNlaXZlcyBkYXRhIGZyb20gdGhlIFVTQiBpbnRlcmZhY2UsIGhhbmRsZXMgZXJyb3JzIGdyYWNlZnVsbHksIGFuZCBkZWxpdmVycyB0aGUgcGFja2V0cyB0byB0aGUgdXBwZXIgbGF5ZXJzIHdpdGhvdXQgaW50cm9kdWNpbmcgYW55IHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLiBUaGlzIHNlZW1zIGxpa2UgYSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlLCBhbmQgSSYjMzk7ZCBuZWVkIHRvIGV4YW1pbmUgdGhpcyBjb2RlIGNhcmVmdWxseSB0byBiZSBzdXJlIGFib3V0IGl0cyBpbXBsZW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNTo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttd2lmaWV4X3VzYl9yZWN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz00MT1zdGF0aWMgaW50IG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoc3RydWN0IHVyYl9jb250ZXh0ICpjdHgsIGludCBzaXplKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDUtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NDY6c3RhdGljIGludCBtd2lmaWV4X3VzYl9yZWN2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDctXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsIHU4IGVwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTM9c3RhdGljIHZvaWQgbXdpZmlleF91c2JfcnhfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTg4Olx0XHRzdGF0dXMgPSBtd2lmaWV4X3VzYl9yZWN2KGFkYXB0ZXIsIHNrYiwgY29udGV4dC1cdTAwM2VlcCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xOTctXHRcdFx0ICogdXJiIGZvciBjbWRfZXAgd2lsbCBiZSByZS1zdWJtaXR0ZWQgaW4gY2FsbGJhY2tcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxOTg6XHRcdFx0ICogbXdpZmlleF91c2JfcmVjdl9jb21wbGV0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE5OS1cdFx0XHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAxNTo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTkzCgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDEwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBNV0lGSUVYIERyaXZlcjogSW5pdGlhbCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGUgYG13aWZpZXhgIGRyaXZlciBhbmQgdGhpbmtpbmcgYWJvdXQgd2hlcmUgd2UgY2FuIGdldCB0aGUgYmVzdCBmdXp6aW5nIGNvdmVyYWdlLiBUaGUga2V5IGZ1bmN0aW9ucyBJJiMzOTttIGZvY3VzaW5nIG9uIGFyZSBgbXdpZmlleF9kZWNvZGVfcnhfcGFja2V0YCBhbmQgYG13aWZpZXhfdXNiX3JlY3ZgLiBJbW1lZGlhdGVseSwgdGhlIFVTQiBhc3BlY3Qgb2YgdGhpcyBqdW1wcyBvdXQgYXQgbWUuIFdlIGNhbiBhYnNvbHV0ZWx5IGhpdCB0aGF0IHdpdGggVVNCIGZ1enppbmcgdG9vbHMsIGFuZCBzeXprYWxsZXImIzM5O3MgVVNCIGZ1enppbmcgY2FwYWJpbGl0aWVzIGFyZSBhIGdvb2QgZml0IGhlcmUuIFRoYXTigJlzIGEgZmFpcmx5IGRpcmVjdCBwYXRoIHRvIGdlbmVyYXRpbmcgaW50ZXJlc3RpbmcgdGVzdCBjYXNlcy4KClRoZSBTRElPIHNpZGUgb2YgdGhpbmdzIGlzIGEgbGl0dGxlIGxlc3MgY2xlYXIuIFdoaWxlIHBvdGVudGlhbGx5IGltcG9ydGFudCwgSSYjMzk7bSBub3Qgc3VyZSBpZiBzeXprYWxsZXIgY3VycmVudGx5IHN1cHBvcnRzIGRpcmVjdCBTRElPIGZ1enppbmcgaW4gdGhlIHNhbWUgd2F5IGl0IGRvZXMgVVNCLiBUaGF0JiMzOTtzIHNvbWV0aGluZyBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgZnVydGhlciwgYnV0IHRoZSBVU0IgcGF0aCBsb29rcyBsaWtlIHRoZSBpbW1lZGlhdGUgbG93LWhhbmdpbmcgZnJ1aXQuCgpJIHNlZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGBNV0lGSUVYYCwgYE1XSUZJRVhfVVNCYCwgYW5kIGBNV0lGSUVYX1NESU9gLiBUaGVzZSBzZXR0aW5ncyB3aWxsIGluZmx1ZW5jZSB3aGljaCBjb2RlIHBhdGhzIGFyZSBlbmFibGVkLCB3aGljaCBpcyBjcnVjaWFsIGZvciBtYXhpbWl6aW5nIG91ciBmdXp6aW5nIGVmZmljaWVuY3kgYW5kIGVuc3VyaW5nIHdlJiMzOTtyZSB0ZXN0aW5nIHRoZSByZWxldmFudCBwb3J0aW9ucyBvZiB0aGUgZHJpdmVyLgoKUmlnaHQsIHNvIHdpdGggdGhhdCBpbml0aWFsIGFzc2Vzc21lbnQgY29tcGxldGUsIGxldCYjMzk7cyBlc3RhYmxpc2ggc29tZSBjb25jcmV0ZSBvYmplY3RpdmVzIGFuZCBtb3ZlIGZvcndhcmQgd2l0aCB0aGUgbmV4dCBzdGVwcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMTU6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OywKICAgICYjMzQ7TVdJRklFWF9TRElPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF9kZWNvZGVfcnhfcGFja2V0JiMzNDssCiAgICAmIzM0O213aWZpZXhfdXNiX3JlY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkL3dyaXRlIGluIHRoZSBNYXJ2ZWxsIFdpRmkgZHJpdmVyIChtd2lmaWV4KSB3aGVuIHByb2Nlc3NpbmcgcmVjZWl2ZWQgZXZlbnRzLiBUaGUgVVNCIHBhcnQgb2YgdGhpcyBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGdhZGdldCBlbXVsYXRpb24sIG1ha2luZyBpdCByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OywKICAgICYjMzQ7TVdJRklFWF9TRElPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF9kZWNvZGVfcnhfcGFja2V0JiMzNDssCiAgICAmIzM0O213aWZpZXhfdXNiX3JlY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkL3dyaXRlIGluIHRoZSBNYXJ2ZWxsIFdpRmkgZHJpdmVyIChtd2lmaWV4KSB3aGVuIHByb2Nlc3NpbmcgcmVjZWl2ZWQgZXZlbnRzLiBUaGUgVVNCIHBhcnQgb2YgdGhpcyBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGdhZGdldCBlbXVsYXRpb24sIG1ha2luZyBpdCByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxNTo1NzoyNC40MDc4NzI4MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMjMxMzEzNjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCIsXG4gICAgXCJNV0lGSUVYX1NESU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X2RlY29kZV9yeF9wYWNrZXRcIixcbiAgICBcIm13aWZpZXhfdXNiX3JlY3ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQvd3JpdGUgaW4gdGhlIE1hcnZlbGwgV2lGaSBkcml2ZXIgKG13aWZpZXgpIHdoZW4gcHJvY2Vzc2luZyByZWNlaXZlZCBldmVudHMuIFRoZSBVU0IgcGFydCBvZiB0aGlzIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZ2FkZ2V0IGVtdWxhdGlvbiwgbWFraW5nIGl0IHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTU6NTc6MjQuNDA3ODc5ODdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMjc2NDI4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI5ODAxNjg0M2FiZWJiN2ZiMTg0NTkxMDQ5NDA4OGRjZTViOGMyOThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgMjAgMTU6NTc6MjMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmNcXG5pbmRleCBmMDM5ZDZmMTkxODNhNS4uNDEwMWJmMWVkY2ExZTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmNcXG5AQCAtMTcxMiwxMiArMTcxMiwxOSBAQCBzdGF0aWMgaW50IG13aWZpZXhfZGVjb2RlX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbiBcXHRjYXNlIE1XSUZJRVhfVFlQRV9FVkVOVDpcXG4gXFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVZFTlQsXFxuIFxcdFxcdFxcdCAgICBcXFwiaW5mbzogLS0tIFJ4OiBFdmVudCAtLS1cXFxcblxcXCIpO1xcbitcXHRcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU4gfHxcXG4rXFx0XFx0ICAgIHNrYi1cXHUwMDNlbGVuIFxcdTAwM2UgTUFYX0VWRU5UX1NJWkUpIHtcXG4rXFx0XFx0XFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsXFxuK1xcdFxcdFxcdFxcdCAgICBcXFwiRVZFTlQ6IGludmFsaWQgc2tiLVxcdTAwM2VsZW4gJXVcXFxcblxcXCIsIHNrYi1cXHUwMDNlbGVuKTtcXG4rXFx0XFx0XFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcXG4rXFx0XFx0XFx0cmV0dXJuIC0xO1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHRhZGFwdGVyLVxcdTAwM2VldmVudF9jYXVzZSA9IGdldF91bmFsaWduZWRfbGUzMihza2ItXFx1MDAzZWRhdGEpO1xcbiBcXG4tXFx0XFx0aWYgKChza2ItXFx1MDAzZWxlbiBcXHUwMDNlIDApIFxcdTAwMjZcXHUwMDI2IChza2ItXFx1MDAzZWxlbiAgXFx1MDAzYyBNQVhfRVZFTlRfU0laRSkpXFxuLVxcdFxcdFxcdG1lbWNweShhZGFwdGVyLVxcdTAwM2VldmVudF9ib2R5LFxcbi1cXHRcXHRcXHQgICAgICAgc2tiLVxcdTAwM2VkYXRhICsgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOLFxcbi1cXHRcXHRcXHQgICAgICAgc2tiLVxcdTAwM2VsZW4pO1xcbitcXHRcXHRtZW1jcHkoYWRhcHRlci1cXHUwMDNlZXZlbnRfYm9keSxcXG4rXFx0XFx0ICAgICAgIHNrYi1cXHUwMDNlZGF0YSArIE1XSUZJRVhfRVZFTlRfSEVBREVSX0xFTixcXG4rXFx0XFx0ICAgICAgIHNrYi1cXHUwMDNlbGVuIC0gTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOKTtcXG4gXFxuIFxcdFxcdC8qIGV2ZW50IGNhdXNlIGhhcyBiZWVuIHNhdmVkIHRvIGFkYXB0ZXItXFx1MDAzZWV2ZW50X2NhdXNlICovXFxuIFxcdFxcdGFkYXB0ZXItXFx1MDAzZWV2ZW50X3JlY2VpdmVkID0gdHJ1ZTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jXFxuaW5kZXggZjRiOTRhMTA1NGY2NTAuLmE2ZWQ4MmU3MjI4YjExIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuY1xcbkBAIC0xMTAsNyArMTEwLDggQEAgc3RhdGljIGludCBtd2lmaWV4X3VzYl9yZWN2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuIFxcdFxcdFxcdH1cXG4gXFxuIFxcdFxcdFxcdG1lbWNweShhZGFwdGVyLVxcdTAwM2VldmVudF9ib2R5LCBza2ItXFx1MDAzZWRhdGEgK1xcbi1cXHRcXHRcXHQgICAgICAgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOLCBza2ItXFx1MDAzZWxlbik7XFxuK1xcdFxcdFxcdCAgICAgICBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU4sXFxuK1xcdFxcdFxcdCAgICAgICBza2ItXFx1MDAzZWxlbiAtIE1XSUZJRVhfRVZFTlRfSEVBREVSX0xFTik7XFxuIFxcbiBcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VldmVudF9yZWNlaXZlZCA9IHRydWU7XFxuIFxcdFxcdFxcdGFkYXB0ZXItXFx1MDAzZWV2ZW50X3NrYiA9IHNrYjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTU6NTc6MjQuODMxMzI0NzcxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjI4MDc4NTA4MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIixcbiAgICBcIk1XSUZJRVhfU0RJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm13aWZpZXhfZGVjb2RlX3J4X3BhY2tldFwiLFxuICAgIFwibXdpZmlleF91c2JfcmVjdlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZC93cml0ZSBpbiB0aGUgTWFydmVsbCBXaUZpIGRyaXZlciAobXdpZmlleCkgd2hlbiBwcm9jZXNzaW5nIHJlY2VpdmVkIGV2ZW50cy4gVGhlIFVTQiBwYXJ0IG9mIHRoaXMgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI5ODAxNjg0M2FiZWJiN2ZiMTg0NTkxMDQ5NDA4OGRjZTViOGMyOThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyMCAxNTo1NzoyMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jXG5pbmRleCBmMDM5ZDZmMTkxODNhNS4uNDEwMWJmMWVkY2ExZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jXG5AQCAtMTcxMiwxMiArMTcxMiwxOSBAQCBzdGF0aWMgaW50IG13aWZpZXhfZGVjb2RlX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuIFx0Y2FzZSBNV0lGSUVYX1RZUEVfRVZFTlQ6XG4gXHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVWRU5ULFxuIFx0XHRcdCAgICBcImluZm86IC0tLSBSeDogRXZlbnQgLS0tXFxuXCIpO1xuK1x0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOIHx8XG4rXHRcdCAgICBza2ItXHUwMDNlbGVuIFx1MDAzZSBNQVhfRVZFTlRfU0laRSkge1xuK1x0XHRcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLFxuK1x0XHRcdFx0ICAgIFwiRVZFTlQ6IGludmFsaWQgc2tiLVx1MDAzZWxlbiAldVxcblwiLCBza2ItXHUwMDNlbGVuKTtcbitcdFx0XHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuK1x0XHRcdHJldHVybiAtMTtcbitcdFx0fVxuK1xuIFx0XHRhZGFwdGVyLVx1MDAzZWV2ZW50X2NhdXNlID0gZ2V0X3VuYWxpZ25lZF9sZTMyKHNrYi1cdTAwM2VkYXRhKTtcbiBcbi1cdFx0aWYgKChza2ItXHUwMDNlbGVuIFx1MDAzZSAwKSBcdTAwMjZcdTAwMjYgKHNrYi1cdTAwM2VsZW4gIFx1MDAzYyBNQVhfRVZFTlRfU0laRSkpXG4tXHRcdFx0bWVtY3B5KGFkYXB0ZXItXHUwMDNlZXZlbnRfYm9keSxcbi1cdFx0XHQgICAgICAgc2tiLVx1MDAzZWRhdGEgKyBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU4sXG4tXHRcdFx0ICAgICAgIHNrYi1cdTAwM2VsZW4pO1xuK1x0XHRtZW1jcHkoYWRhcHRlci1cdTAwM2VldmVudF9ib2R5LFxuK1x0XHQgICAgICAgc2tiLVx1MDAzZWRhdGEgKyBNV0lGSUVYX0VWRU5UX0hFQURFUl9MRU4sXG4rXHRcdCAgICAgICBza2ItXHUwMDNlbGVuIC0gTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOKTtcbiBcbiBcdFx0LyogZXZlbnQgY2F1c2UgaGFzIGJlZW4gc2F2ZWQgdG8gYWRhcHRlci1cdTAwM2VldmVudF9jYXVzZSAqL1xuIFx0XHRhZGFwdGVyLVx1MDAzZWV2ZW50X3JlY2VpdmVkID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmNcbmluZGV4IGY0Yjk0YTEwNTRmNjUwLi5hNmVkODJlNzIyOGIxMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jXG5AQCAtMTEwLDcgKzExMCw4IEBAIHN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVjdihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRcdH1cbiBcbiBcdFx0XHRtZW1jcHkoYWRhcHRlci1cdTAwM2VldmVudF9ib2R5LCBza2ItXHUwMDNlZGF0YSArXG4tXHRcdFx0ICAgICAgIE1XSUZJRVhfRVZFTlRfSEVBREVSX0xFTiwgc2tiLVx1MDAzZWxlbik7XG4rXHRcdFx0ICAgICAgIE1XSUZJRVhfRVZFTlRfSEVBREVSX0xFTixcbitcdFx0XHQgICAgICAgc2tiLVx1MDAzZWxlbiAtIE1XSUZJRVhfRVZFTlRfSEVBREVSX0xFTik7XG4gXG4gXHRcdFx0YWRhcHRlci1cdTAwM2VldmVudF9yZWNlaXZlZCA9IHRydWU7XG4gXHRcdFx0YWRhcHRlci1cdTAwM2VldmVudF9za2IgPSBza2I7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQxNTo1NzoyNC44MzEzMjY0NTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjgwNjE4MTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uY2AgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmNgLiBTZWVtcyBsaWtlIHdlJ3ZlIGdvdCBhIGZpeCBmb3IgYW4gb3V0LW9mLWJvdW5kcyByZWFkL3dyaXRlIGluIGBtd2lmaWV4X2RlY29kZV9yeF9wYWNrZXRgIChTRElPKSBhbmQgYG13aWZpZXhfdXNiX3JlY3ZgIChVU0IpIOKAkyBhbHdheXMgZ29vZCB0byBjYXRjaCB0aG9zZS4gVGhlIHBhdGNoIGFwcGVhcnMgdG8gYWRkcmVzcyB0aGUgaXNzdWUgYnkgY2hlY2tpbmcgaWYgYHNrYi1cdTAwM2VsZW5gIGlzIGxlc3MgdGhhbiBgTVdJRklFWF9FVkVOVF9IRUFERVJfTEVOYCBhbmQgdGhlbiBzdWJ0cmFjdGluZyB0aGF0IGxlbmd0aCB3aGVuIGNhbGxpbmcgYG1lbWNweWAuIFN0YW5kYXJkIHN0dWZmLCBidXQgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgZnV6eiB0aGlzPyBJdCdzIGEgd2lyZWxlc3MgZHJpdmVyLCBgbXdpZmlleGAsIHNvIHRoYXQncyBhbHJlYWR5IGEgcG9pbnQgaW4gaXRzIGZhdm9yLiBUaGUgVVNCIHNpZGUgb2YgdGhpcyBpcyAqZGVmaW5pdGVseSogZnV6emFibGUuIFdlIGNhbiB1c2UgYSBVU0IgZ2FkZ2V0IGFuZCBhIGBkdW1teV9oY2RgIHRvIHRocm93IGEgYnVuY2ggb2YgbWFsZm9ybWVkIHBhY2tldHMgYXQgaXQuIFRoYXQncyBhIGxvdy1oYW5naW5nIGZydWl0LiBUaGUgU0RJTyBwYXJ0PyBQb3RlbnRpYWxseS4gSWYgdGhlcmUncyBhbiBTRElPIGZ1enplciBvdXQgdGhlcmUsIHRoZW4gaXQgd291bGQgYmUgZnV6emFibGUgdmlhIHRoYXQgdG9vLiBCdXQgaG9uZXN0bHksIHRoZSBVU0IgcGFydCBhbG9uZSBtYWtlcyB0aGlzIFdvcnRoRnV6emluZz10cnVlLiBVU0IgaXMgZ2VuZXJhbGx5IGVhc2llciB0byB0YXJnZXQgZm9yIGZ1enppbmcuXG5cbk5leHQgc3RlcDogQ29uZmlndXJhdGlvbiBvcHRpb25zLiBHb3R0YSBmaWd1cmUgb3V0IGhvdyB0byBlbmFibGUgdGhpcyBkcml2ZXIgaW4gdGhlIGZpcnN0IHBsYWNlLCBvciB3aGF0J3MgbmVlZGVkIHRvIGJ1aWxkIGl0LiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGBLY29uZmlnYCBmaWxlcyDigJMgcHJvYmFibHkgc29tZXRoaW5nIGxpa2UgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnYCwgb3Igc29tZXRoaW5nIHNpbWlsYXJseSBuYW1lZCwgdG8gc2VlIHdoYXQgb3B0aW9ucyBjb250cm9sIGl0cyBpbmNsdXNpb24uIE9uY2UgSSd2ZSBnb3QgdGhhdCwgaXQncyB0aW1lIHRvIHN0YXJ0IHBsYW5uaW5nIGEgZnV6emluZyBjYW1wYWlnbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQwNSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE1OjU3OjMwLjUxMTk0Njg4OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODEzNjU4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTI9Y29uZmlnIE1XSUZJRVhcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTktXFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjEwOlxcdCAgbXdpZmlleC5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZz0xMj1jb25maWcgTVdJRklFWF9TRElPXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yMi1cXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjM6XFx0ICBtd2lmaWV4X3NkaW8uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9MjU9Y29uZmlnIE1XSUZJRVhfUENJRVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzQtXFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM1OlxcdCAgbXdpZmlleF9wY2llLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTM2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTM3PWNvbmZpZyBNV0lGSUVYX1VTQlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctNDUtXFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjQ2OlxcdCAgbXdpZmlleF91c2IuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE1OjU3OjMwLjU3MDA5MDYxN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MDQzNDAzOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGNvbmZpZyBmbGFncyBhbmQgZnVuY3Rpb25zLCBhcyBpZiB0aGV5J3JlIHJ1bm5pbmcgdGhyb3VnaCBteSBvd24gbWVudGFsIHByb2Nlc3NlczpcblxuKipBbmFseXppbmcgdGhlIE1XSUZJRVggQ29kZWJhc2UqKlxuXG5BbHJpZ2h0LCBJJ20gZGl2aW5nIGludG8gdGhpcyBgTVdJRklFWGAgZHJpdmVyLCBhbmQgdGhlIGZpcnN0IHRoaW5ncyB0aGF0IGNhdGNoIG15IGV5ZSBhcmUgdGhlc2UgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgTVdJRklFWGAsIGBNV0lGSUVYX1NESU9gLCBhbmQgYE1XSUZJRVhfVVNCYC4gR2l2ZW4gd2hhdCBJIGtub3cgYWJvdXQgTWFydmVsbCB3aXJlbGVzcyBjaGlwcyBhbmQgdGhlaXIgdmFyaW91cyBpbnRlcmZhY2VzLCB0aGlzIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIGBNV0lGSUVYYCBsaWtlbHkgcmVwcmVzZW50cyB0aGUgYmFzZSBmdW5jdGlvbmFsaXR5LCB0aGUgY29yZSBkcml2ZXIsIGlmIHlvdSB3aWxsLiBUaGUgYF9TRElPYCBhbmQgYF9VU0JgIHN1ZmZpeGVzIGFsbW9zdCBjZXJ0YWlubHkgaW5kaWNhdGUgc3VwcG9ydCBmb3Igc3BlY2lmaWMgcGh5c2ljYWwgbGF5ZXIgaW50ZXJmYWNlcyDigJMgU2VjdXJlIERpZ2l0YWwgSW5wdXQvT3V0cHV0IGFuZCBVbml2ZXJzYWwgU2VyaWFsIEJ1cywgcmVzcGVjdGl2ZWx5LiBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCB0aGUgY29yZSBjb2RlLiBJIHN1c3BlY3QgdGhlcmUgbWF5IGJlIGRpZmZlcmVuY2VzIGluIHRoZSBoYW5kbGluZyBvZiBkZXZpY2UgaW5pdGlhbGl6YXRpb24sIHBhY2tldCB0cmFuc2ZlciwgYW5kIGludGVycnVwdCBtYW5hZ2VtZW50IGRlcGVuZGluZyBvbiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBpbnRlcmZhY2UuXG5cbk5vdywgd2hlcmUgZG8gSSBzdGFydCBkaWdnaW5nIGZvciBwb3RlbnRpYWwgRm9jdXNTeW1ib2xzPyBgbXdpZmlleF9kZWNvZGVfcnhfcGFja2V0YCBhbmQgYG13aWZpZXhfdXNiX3JlY3ZgIHNvdW5kIGxpa2UgZ29vZCBzdGFydGluZyBwb2ludHMuIFRoZSBmb3JtZXIgaXMgYSBkZWFkIGdpdmVhd2F5IGFzIGEgbGlrZWx5IGNhbmRpZGF0ZS4gSXQgaGFuZGxlcyB0aGUgcHJvY2Vzc2luZyBvZiBpbmNvbWluZyBwYWNrZXRzLCBzbyBpdCdzIGEgY3JpdGljYWwgcG9pbnQgZm9yIGFueSBzeXN0ZW0sIHNvIGFueSBwYXJzaW5nIG9yIGZvcm1hdCBoYW5kbGluZyBpbiB0aGF0IGZ1bmN0aW9uIGlzIHdvcnRoIHNjcnV0aW55LiBUaGUgbGF0dGVyLCBgbXdpZmlleF91c2JfcmVjdmAsIHN1Z2dlc3RzIGEgc3BlY2lhbGl6ZWQgZnVuY3Rpb24gdGhhdCBkZWFscyB3aXRoIHJlY2VpdmluZyBkYXRhIHNwZWNpZmljYWxseSB2aWEgdGhlIFVTQiBpbnRlcmZhY2UuIFRoaXMgaXMgYW5vdGhlciBhcmVhIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8sIGFzIFVTQiBvZnRlbiBoYXMgaXRzIG93biBpZGlvc3luY3Jhc2llcyBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIGRhdGEgYnVmZmVyaW5nLCBETUEsIGFuZCBlbmRwb2ludCBtYW5hZ2VtZW50LiBJJ20gZ29pbmcgdG8gY2FyZWZ1bGx5IGluc3BlY3QgdGhlc2UgZnVuY3Rpb25zIGZvciBhbnkgc3VidGxlIGluZGljYXRvcnMgb2YgdnVsbmVyYWJpbGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTE3LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTU6NTc6MzYuOTc0NDMzMzI5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MDg4NTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXhfZGVjb2RlX3J4X3BhY2tldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM9MTU5Mz1zdGF0aWMgdm9pZCBtd2lmaWV4X2RlYWdncl9zZGlvX3BrdChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0xNjQ2LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MTY0NzpzdGF0aWMgaW50IG13aWZpZXhfZGVjb2RlX3J4X3BhY2tldChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMTY0OC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIHVwbGRfdHlwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYz0xNzU0PXN0YXRpYyBpbnQgbXdpZmlleF9zZGlvX2NhcmRfdG9faG9zdF9tcF9hZ2dyKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTE5MDQtXFx0XFx0XFx0XFx0LyogUHJvY2VzcyBkZS1hZ2dyIHBhY2tldCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MTkwNTpcXHRcXHRcXHRcXHRtd2lmaWV4X2RlY29kZV9yeF9wYWNrZXQoYWRhcHRlciwgc2tiX2RlYWdncixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jLTE5MDYtXFx0XFx0XFx0XFx0XFx0XFx0XFx0IHBrdF90eXBlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMTk1Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jOjE5NTM6XFx0XFx0bXdpZmlleF9kZWNvZGVfcnhfcGFja2V0KGFkYXB0ZXIsIHNrYiwgcGt0X3R5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmMtMTk1NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc2Rpby5jPTE5ODk9c3RhdGljIGludCBtd2lmaWV4X3Byb2Nlc3NfaW50X3N0YXR1cyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0yMDUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zZGlvLmM6MjA1MjpcXHRcXHRtd2lmaWV4X2RlY29kZV9yeF9wYWNrZXQoYWRhcHRlciwgc2tiLCBwa3RfdHlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3NkaW8uYy0yMDUzLVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTU6NTc6MzcuMDMwNTI4OTM4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMxMjU1MDI2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipEaXZpbmcgRGVlcCBpbnRvIGBtd2lmaWV4X3VzYl9yZWN2YCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2hlbiBJIHNlZSBgbXdpZmlleF91c2JfcmVjdmAsIG15IG1pbmQgaW1tZWRpYXRlbHkgZ29lcyB0byB0aGUgaGVhcnQgb2YgdGhlIFVTQi1iYXNlZCBNYXJ2ZWxsIFdpLUZpIGRyaXZlci4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgcmlnaHQgYXQgdGhlIHBvaW50IHdoZXJlIGRhdGEgaXMgKnJlY2VpdmVkKiBvdmVyIHRoZSBVU0IgaW50ZXJmYWNlLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgaXQgYmVpbmcgdGhlIHJlY2VpdmluZyBlbmQuXG5cbkknbSB0aGlua2luZyBhYm91dCB0aGUgbG93LWxldmVsIFVTQiB0cmFuc2ZlciBjb250ZXh0LiBJcyB0aGlzIHVzaW5nIGJ1bGsgdHJhbnNmZXJzPyBJbnRlcnJ1cHQgdHJhbnNmZXJzPyBDb250cm9sIHRyYW5zZmVycz8gVGhlIHNwZWNpZmljIHRyYW5zZmVyIHR5cGUgZGljdGF0ZXMgdGhlIGJ1ZmZlcmluZyBzdHJhdGVneSwgdGhlIGludGVycnVwdCBoYW5kbGluZywgYW5kIHRoZSBvdmVyYWxsIGVmZmljaWVuY3kuICBJJ20gZm9jdXNpbmcgb24gdGhlIGludHJpY2FjaWVzIG9mIHRoZSBVU0IgZW5kcG9pbnQgY29tbXVuaWNhdGlvbiBhbmQgZW5zdXJpbmcgdGhhdCB3ZSdyZSB0YWxraW5nIGFib3V0IHJlbGlhYmxlIGFuZCBlZmZpY2llbnQgZGF0YSBpbmdlc3Rpb24gZnJvbSB0aGUgZGV2aWNlLlxuXG5UaGVuLCB0aGVyZSdzIHRoZSB3aG9sZSBpc3N1ZSBvZiBpbnRlcnJ1cHQgaGFuZGxpbmcuIEhvdyBhcmUgaW50ZXJydXB0cyBtYW5hZ2VkIHRvIHNpZ25hbCB0aGUgYXJyaXZhbCBvZiBuZXcgcGFja2V0cz8gSXMgdGhlcmUgYSByaW5nIGJ1ZmZlcj8gV2hhdCBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyBhcmUgaW52b2x2ZWQ/IEFyZSB3ZSBkZWFsaW5nIHdpdGggc3BpbmxvY2tzLCBtdXRleGVzLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlc2UgZGV0YWlscyBhcmUgaW1wb3J0YW50IGZvciByZWFsLXRpbWUgcGVyZm9ybWFuY2UgYW5kIGF2b2lkaW5nIHJhY2UgY29uZGl0aW9ucy5cblxuSSdtIHN0YXJ0aW5nIHRvIHRoaW5rIGFib3V0IGVycm9yIGhhbmRsaW5nLiBXaGF0IGhhcHBlbnMgaWYgdGhlcmUncyBhIFVTQiB0cmFuc2ZlciBlcnJvcj8gSXMgdGhlcmUgcm9idXN0IGVycm9yIGNoZWNraW5nIG9uIHRoZSBVU0Igc2lkZT8gRG9lcyBpdCBkaWZmZXJlbnRpYXRlIGJldHdlZW4gZGlmZmVyZW50IFVTQiBpc3N1ZXM/IEFyZSB3ZSBhYmxlIHRvIHJldHJ5PyBBcmUgdGhlcmUgcmV0cmllcyB3aXRoIGV4cG9uZW50aWFsIGJhY2tvZmY/IFdoYXQncyB0aGUgc3RyYXRlZ3kgZm9yIGRlYWxpbmcgd2l0aCBVU0IgZGlzY29ubmVjdHMgb3IgbGluayBwcm9ibGVtcz8gQSByb2J1c3QgcmVjZWl2aW5nIHJvdXRpbmUgaGFzIHRvIGJlIHJlc2lsaWVudCBpbiB0aGVzZSBlcnJvciBjYXNlcy5cblxuQWxzbywgSSBoYXZlIHRvIGNvbnNpZGVyIHRoZSBkYXRhIGl0c2VsZi4gSG93IGlzIHRoZSBkYXRhIGZvcm1hdHRlZD8gSXMgaXQgZnJhbWVkIHdpdGggaGVhZGVycyBhbmQgdHJhaWxlcnM/IFdoZXJlIGlzIHRoZSBkYXRhIGJ1ZmZlciBsb2NhdGVkPyBXaGF0J3MgdGhlIHNpemUgb2YgdGhlIGRhdGEgY2h1bmtzIHdlIGFyZSBoYW5kbGluZz8gV2hhdCBpcyB0aGUgb3ZlcmFsbCBkYXRhIGZsb3cgYXJjaGl0ZWN0dXJlPyBXaGF0IGtpbmQgb2YgbWVtb3J5IGFjY2VzcyBhcmUgd2UgZGVhbGluZyB3aXRoPyBJcyB0aGUgZGF0YSBETUEnZCBkaXJlY3RseSBpbnRvIGEgYnVmZmVyLCBvciBkb2VzIGl0IHJlcXVpcmUgbW9yZSBpbnRlcm1lZGlhdGUgY29weWluZz9cblxuSSdtIG1lbnRhbGx5IHN0ZXBwaW5nIHRocm91Z2ggYSB0eXBpY2FsIHJlY2VpdmUgcGF0aC4gSSdtIHZpc3VhbGl6aW5nIHRoZSBkYXRhIGJlaW5nIHJlY2VpdmVkLCBjaGVja2VkIGZvciBlcnJvcnMsIG1heWJlIGRlY3J5cHRlZCAoZGVwZW5kaW5nIG9uIHRoZSBzZWN1cml0eSBpbXBsZW1lbnRhdGlvbiksIGFuZCB0aGVuIGhhbmRlZCBvZmYgdG8gdGhlIGhpZ2hlci1sZXZlbCBXaS1GaSBzdGFjayBmb3IgcHJvY2Vzc2luZy4gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGBtd2lmaWV4X3VzYl9yZWN2YCBpbXBsZW1lbnRzIHBhY2tldCBhZ2dyZWdhdGlvbiBvciByZWFzc2VtYmx5LiBJdCdzIHBvc3NpYmxlIHRoYXQgZnJhZ21lbnRhdGlvbiBhbmQgcmVhc3NlbWJseSBoYXBwZW5zIGF0IHRoZSBmaXJtd2FyZSBsYXllciwgYnV0IEkgbmVlZCB0byBjb25zaWRlciBpdCBhdCB0aGlzIGxldmVsIGFzIHdlbGwuIEZpbmFsbHksIGlzIHRoZXJlIGFueSBraW5kIG9mIHBvd2VyIG1hbmFnZW1lbnQgaW1wbGljYXRpb24gSSBzaG91bGQgYmUgdGhpbmtpbmcgYWJvdXQgYXQgdGhpcyBwYXJ0P1xuXG5JdCdzIGFsbCBhYm91dCBlbnN1cmluZyB0aGF0IHRoZSBkcml2ZXIgYWNjdXJhdGVseSBhbmQgZWZmaWNpZW50bHkgcmVjZWl2ZXMgZGF0YSBmcm9tIHRoZSBVU0IgaW50ZXJmYWNlLCBoYW5kbGVzIGVycm9ycyBncmFjZWZ1bGx5LCBhbmQgZGVsaXZlcnMgdGhlIHBhY2tldHMgdG8gdGhlIHVwcGVyIGxheWVycyB3aXRob3V0IGludHJvZHVjaW5nIGFueSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcy4gVGhpcyBzZWVtcyBsaWtlIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZSwgYW5kIEknZCBuZWVkIHRvIGV4YW1pbmUgdGhpcyBjb2RlIGNhcmVmdWxseSB0byBiZSBzdXJlIGFib3V0IGl0cyBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU1MCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE1OjU3OjQyLjM0MzA4MTMwNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDA3OTQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X3VzYl9yZWN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9NDE9c3RhdGljIGludCBtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKHN0cnVjdCB1cmJfY29udGV4dCAqY3R4LCBpbnQgc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDUtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjQ2OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVjdihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00Ny1cXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggZXApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTUzPXN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xODctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE4ODpcXHRcXHRzdGF0dXMgPSBtd2lmaWV4X3VzYl9yZWN2KGFkYXB0ZXIsIHNrYiwgY29udGV4dC1cXHUwMDNlZXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xODktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTk3LVxcdFxcdFxcdCAqIHVyYiBmb3IgY21kX2VwIHdpbGwgYmUgcmUtc3VibWl0dGVkIGluIGNhbGxiYWNrXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE5ODpcXHRcXHRcXHQgKiBtd2lmaWV4X3VzYl9yZWN2X2NvbXBsZXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE5OS1cXHRcXHRcXHQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMTU6NTc6NDIuNDAzMTY2MTMyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE1MTUwODcxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBNV0lGSUVYIERyaXZlcjogSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhlIGBtd2lmaWV4YCBkcml2ZXIgYW5kIHRoaW5raW5nIGFib3V0IHdoZXJlIHdlIGNhbiBnZXQgdGhlIGJlc3QgZnV6emluZyBjb3ZlcmFnZS4gVGhlIGtleSBmdW5jdGlvbnMgSSdtIGZvY3VzaW5nIG9uIGFyZSBgbXdpZmlleF9kZWNvZGVfcnhfcGFja2V0YCBhbmQgYG13aWZpZXhfdXNiX3JlY3ZgLiBJbW1lZGlhdGVseSwgdGhlIFVTQiBhc3BlY3Qgb2YgdGhpcyBqdW1wcyBvdXQgYXQgbWUuIFdlIGNhbiBhYnNvbHV0ZWx5IGhpdCB0aGF0IHdpdGggVVNCIGZ1enppbmcgdG9vbHMsIGFuZCBzeXprYWxsZXIncyBVU0IgZnV6emluZyBjYXBhYmlsaXRpZXMgYXJlIGEgZ29vZCBmaXQgaGVyZS4gVGhhdOKAmXMgYSBmYWlybHkgZGlyZWN0IHBhdGggdG8gZ2VuZXJhdGluZyBpbnRlcmVzdGluZyB0ZXN0IGNhc2VzLlxuXG5UaGUgU0RJTyBzaWRlIG9mIHRoaW5ncyBpcyBhIGxpdHRsZSBsZXNzIGNsZWFyLiBXaGlsZSBwb3RlbnRpYWxseSBpbXBvcnRhbnQsIEknbSBub3Qgc3VyZSBpZiBzeXprYWxsZXIgY3VycmVudGx5IHN1cHBvcnRzIGRpcmVjdCBTRElPIGZ1enppbmcgaW4gdGhlIHNhbWUgd2F5IGl0IGRvZXMgVVNCLiBUaGF0J3Mgc29tZXRoaW5nIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLCBidXQgdGhlIFVTQiBwYXRoIGxvb2tzIGxpa2UgdGhlIGltbWVkaWF0ZSBsb3ctaGFuZ2luZyBmcnVpdC5cblxuSSBzZWUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBgTVdJRklFWGAsIGBNV0lGSUVYX1VTQmAsIGFuZCBgTVdJRklFWF9TRElPYC4gVGhlc2Ugc2V0dGluZ3Mgd2lsbCBpbmZsdWVuY2Ugd2hpY2ggY29kZSBwYXRocyBhcmUgZW5hYmxlZCwgd2hpY2ggaXMgY3J1Y2lhbCBmb3IgbWF4aW1pemluZyBvdXIgZnV6emluZyBlZmZpY2llbmN5IGFuZCBlbnN1cmluZyB3ZSdyZSB0ZXN0aW5nIHRoZSByZWxldmFudCBwb3J0aW9ucyBvZiB0aGUgZHJpdmVyLlxuXG5SaWdodCwgc28gd2l0aCB0aGF0IGluaXRpYWwgYXNzZXNzbWVudCBjb21wbGV0ZSwgbGV0J3MgZXN0YWJsaXNoIHNvbWUgY29uY3JldGUgb2JqZWN0aXZlcyBhbmQgbW92ZSBmb3J3YXJkIHdpdGggdGhlIG5leHQgc3RlcHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1OTMsIk91dHB1dFRva2VucyI6MTI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDE1OjU3OjQ3LjU1NDY3NjcwMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0NDk0OTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNV0lGSUVYXCIsXG4gICAgXCJNV0lGSUVYX1VTQlwiLFxuICAgIFwiTVdJRklFWF9TRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF9kZWNvZGVfcnhfcGFja2V0XCIsXG4gICAgXCJtd2lmaWV4X3VzYl9yZWN2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkL3dyaXRlIGluIHRoZSBNYXJ2ZWxsIFdpRmkgZHJpdmVyIChtd2lmaWV4KSB3aGVuIHByb2Nlc3NpbmcgcmVjZWl2ZWQgZXZlbnRzLiBUaGUgVVNCIHBhcnQgb2YgdGhpcyBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGdhZGdldCBlbXVsYXRpb24sIG1ha2luZyBpdCByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIixcbiAgICBcIk1XSUZJRVhfU0RJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm13aWZpZXhfZGVjb2RlX3J4X3BhY2tldFwiLFxuICAgIFwibXdpZmlleF91c2JfcmVjdlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgcmVhZC93cml0ZSBpbiB0aGUgTWFydmVsbCBXaUZpIGRyaXZlciAobXdpZmlleCkgd2hlbiBwcm9jZXNzaW5nIHJlY2VpdmVkIGV2ZW50cy4gVGhlIFVTQiBwYXJ0IG9mIHRoaXMgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBnYWRnZXQgZW11bGF0aW9uLCBtYWtpbmcgaXQgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowdffl4[1] Phase: Succeeded StartedAt: 2026-07-20 15:57:59 +0000 UTC FinishedAt: 2026-07-20 15:57:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-20 15:57:59 +0000 UTC FinishedAt: 2026-07-20 15:57:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[2] Phase: Succeeded StartedAt: 2026-07-20 15:57:59 +0000 UTC FinishedAt: 2026-07-20 17:01:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-20 15:57:59 +0000 UTC FinishedAt: 2026-07-20 17:01:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-20 15:57:59 +0000 UTC FinishedAt: 2026-07-20 15:58:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-20 15:57:59 +0000 UTC FinishedAt: 2026-07-20 15:58:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowdffl4/series-workflowdffl4-convert-artifact-2132977399/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-20 15:58:09 +0000 UTC FinishedAt: 2026-07-20 16:27:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-20 15:58:09 +0000 UTC FinishedAt: 2026-07-20 16:27:38 +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:*f2175015-519b-4036-a54a-a11f29a17427,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-workflowdffl4/series-workflowdffl4-convert-artifact-2132977399/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": "054f8b1a-9052-4fd0-8c7f-bc718cde3cca", "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-workflowdffl4/series-workflowdffl4-build-action-3133684045/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-20 15:58:09 +0000 UTC FinishedAt: 2026-07-20 16:27:28 +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:*f2175015-519b-4036-a54a-a11f29a17427,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-workflowdffl4/series-workflowdffl4-convert-artifact-2132977399/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": "054f8b1a-9052-4fd0-8c7f-bc718cde3cca", "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-workflowdffl4/series-workflowdffl4-build-action-3133684045/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-20 16:27:38 +0000 UTC FinishedAt: 2026-07-20 16:27:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-20 16:27:38 +0000 UTC FinishedAt: 2026-07-20 16:27:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-20 16:27:38 +0000 UTC FinishedAt: 2026-07-20 16:27:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-20 16:27:38 +0000 UTC FinishedAt: 2026-07-20 16:27:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowdffl4/series-workflowdffl4-convert-artifact-2292190246/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-20 16:27:48 +0000 UTC FinishedAt: 2026-07-20 16:29:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-20 16:27:48 +0000 UTC FinishedAt: 2026-07-20 16:29:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*054f8b1a-9052-4fd0-8c7f-bc718cde3cca,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-workflowdffl4/series-workflowdffl4-build-action-3133684045/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-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-20 16:29:56 +0000 UTC FinishedAt: 2026-07-20 16:29:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-20 16:29:56 +0000 UTC FinishedAt: 2026-07-20 16:29:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-20 16:29:56 +0000 UTC FinishedAt: 2026-07-20 16:56:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-20 16:29:56 +0000 UTC FinishedAt: 2026-07-20 16:56:34 +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:*f2175015-519b-4036-a54a-a11f29a17427,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-workflowdffl4/series-workflowdffl4-convert-artifact-2292190246/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": "0ca5eae4-55c6-4177-a213-69dcd1334cfc", "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-workflowdffl4/series-workflowdffl4-build-action-3111070186/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-20 16:29:56 +0000 UTC FinishedAt: 2026-07-20 16:56:24 +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:*f2175015-519b-4036-a54a-a11f29a17427,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-workflowdffl4/series-workflowdffl4-convert-artifact-2292190246/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": "0ca5eae4-55c6-4177-a213-69dcd1334cfc", "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-workflowdffl4/series-workflowdffl4-build-action-3111070186/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-20 16:56:34 +0000 UTC FinishedAt: 2026-07-20 16:56:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-20 16:56:34 +0000 UTC FinishedAt: 2026-07-20 16:56:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-20 16:56:34 +0000 UTC FinishedAt: 2026-07-20 16:58:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-20 16:56:34 +0000 UTC FinishedAt: 2026-07-20 16:58:27 +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:*0ca5eae4-55c6-4177-a213-69dcd1334cfc,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-workflowdffl4/series-workflowdffl4-build-action-3111070186/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-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-20 16:58:37 +0000 UTC FinishedAt: 2026-07-20 17:01:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-20 16:58:37 +0000 UTC FinishedAt: 2026-07-20 17:01:47 +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":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"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:*054f8b1a-9052-4fd0-8c7f-bc718cde3cca,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0ca5eae4-55c6-4177-a213-69dcd1334cfc,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-workflowdffl4/series-workflowdffl4-build-action-3133684045/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-workflowdffl4/series-workflowdffl4-build-action-3111070186/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-20 16:58:37 +0000 UTC FinishedAt: 2026-07-20 16:58:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-20 16:58:37 +0000 UTC FinishedAt: 2026-07-20 16:58:42 +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":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"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-workflowdffl4/series-workflowdffl4-convert-artifact-1999896939/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-20 16:58:37 +0000 UTC FinishedAt: 2026-07-20 16:58:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-20 16:58:37 +0000 UTC FinishedAt: 2026-07-20 16:58:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-20 16:58:37 +0000 UTC FinishedAt: 2026-07-20 16:58:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-20 16:58:47 +0000 UTC FinishedAt: 2026-07-20 17:01:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdffl4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_decode_rx_packet","mwifiex_usb_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB","MWIFIEX_SDIO"],"series_id":"66dc0d63-6561-4f45-a352-e54f61aeb1cf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-20 16:58:47 +0000 UTC FinishedAt: 2026-07-20 17:01:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*054f8b1a-9052-4fd0-8c7f-bc718cde3cca,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0ca5eae4-55c6-4177-a213-69dcd1334cfc,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-workflowdffl4/series-workflowdffl4-build-action-3133684045/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-workflowdffl4/series-workflowdffl4-build-action-3111070186/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-workflowdffl4/series-workflowdffl4-convert-artifact-1999896939/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,}