Name: series-workflowhsjhx Phase: Succeeded StartedAt: 2026-07-07 06:39:09 +0000 UTC FinishedAt: 2026-07-07 11:53:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[0] Phase: Succeeded StartedAt: 2026-07-07 06:39:09 +0000 UTC FinishedAt: 2026-07-07 07:04:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[0].run-triage Phase: Succeeded StartedAt: 2026-07-07 06:39:09 +0000 UTC FinishedAt: 2026-07-07 07:04:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "9e05e91a9a847ed57926414bd7c2c5e54d6c56c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MACVLAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "9e05e91a9a847ed57926414bd7c2c5e54d6c56c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MACVLAN" ], "series_id": "1930dd27-c68c-43d2-b893-6562d16c95a3" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "macvlan_newlink", "macvlan_changelink" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA3IDA3OjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1ZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWN2bGFuX25ld2xpbmsmIzM0OywKICAgICYjMzQ7bWFjdmxhbl9jaGFuZ2VsaW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRsaW5rIHBvbGljeSBmb3IgTUFDVkxBTiBpbnRlcmZhY2VzIHRvIHJlc3RyaWN0IHRoZSBtYXhpbXVtIHZhbHVlIG9mIElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU4gdG8gNDA5Ni4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBob3cgTUFDVkxBTiBpbnRlcmZhY2VzIGFyZSBjcmVhdGVkIGFuZCBtb2RpZmllZCB2aWEgbmV0bGluay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNzowMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGIwZWU0YzRhY2IwOGIzZGFmYjY2NmQ3OTM3NzFiZmY2ZDc5ODkwNDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCA3IDA3OjAyOjQxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uYyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xuaW5kZXggYzQwZmEzMzE4MzZiYjIuLmQ0Y2VkZTYzOTNiMDY2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tYWN2bGFuLmNcbkBAIC0zNyw2ICYjNDM7MzcsNyBAQFxuICNkZWZpbmUgTUFDVkxBTl9IQVNIX0JJVFNcdDhcbiAjZGVmaW5lIE1BQ1ZMQU5fSEFTSF9TSVpFXHQoMVx1MDAzY1x1MDAzY01BQ1ZMQU5fSEFTSF9CSVRTKVxuICNkZWZpbmUgTUFDVkxBTl9ERUZBVUxUX0JDX1FVRVVFX0xFTlx0MTAwMFxuJiM0MzsjZGVmaW5lIE1BQ1ZMQU5fTUFYX0JDX1FVRVVFX0xFTlx0NDA5NlxuIFxuICNkZWZpbmUgTUFDVkxBTl9GX1BBU1NUSFJVXHQxXG4gI2RlZmluZSBNQUNWTEFOX0ZfQUREUkNIQU5HRVx0MlxuQEAgLTE3NTUsNyAmIzQzOzE3NTYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgbWFjdmxhbl9wb2xpY3lbSUZMQV9NQUNWTEFOX01BWCAmIzQzOyAxXSA9IHtcbiBcdFtJRkxBX01BQ1ZMQU5fTUFDQUREUl0gPSB7IC50eXBlID0gTkxBX0JJTkFSWSwgLmxlbiA9IE1BWF9BRERSX0xFTiB9LFxuIFx0W0lGTEFfTUFDVkxBTl9NQUNBRERSX0RBVEFdID0geyAudHlwZSA9IE5MQV9ORVNURUQgfSxcbiBcdFtJRkxBX01BQ1ZMQU5fTUFDQUREUl9DT1VOVF0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxuLVx0W0lGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5dID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiYjNDM7XHRbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTMyLCBNQUNWTEFOX01BWF9CQ19RVUVVRV9MRU4pLFxuIFx0W0lGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5fVVNFRF0gPSB7IC50eXBlID0gTkxBX1JFSkVDVCB9LFxuIFx0W0lGTEFfTUFDVkxBTl9CQ19DVVRPRkZdID0geyAudHlwZSA9IE5MQV9TMzIgfSxcbiB9O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA3OjAyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1ZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWN2bGFuX25ld2xpbmsmIzM0OywKICAgICYjMzQ7bWFjdmxhbl9jaGFuZ2VsaW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRsaW5rIHBvbGljeSBmb3IgTUFDVkxBTiBpbnRlcmZhY2VzIHRvIHJlc3RyaWN0IHRoZSBtYXhpbXVtIHZhbHVlIG9mIElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU4gdG8gNDA5Ni4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBob3cgTUFDVkxBTiBpbnRlcmZhY2VzIGFyZSBjcmVhdGVkIGFuZCBtb2RpZmllZCB2aWEgbmV0bGluay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjBlZTRjNGFjYjA4YjNkYWZiNjY2ZDc5Mzc3MWJmZjZkNzk4OTA0OQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDcgMDc6MDI6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tYWN2bGFuLmMgYi9kcml2ZXJzL25ldC9tYWN2bGFuLmMKaW5kZXggYzQwZmEzMzE4MzZiYjIuLmQ0Y2VkZTYzOTNiMDY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9tYWN2bGFuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jCkBAIC0zNyw2ICYjNDM7MzcsNyBAQAogI2RlZmluZSBNQUNWTEFOX0hBU0hfQklUUwk4CiAjZGVmaW5lIE1BQ1ZMQU5fSEFTSF9TSVpFCSgxJmx0OyZsdDtNQUNWTEFOX0hBU0hfQklUUykKICNkZWZpbmUgTUFDVkxBTl9ERUZBVUxUX0JDX1FVRVVFX0xFTgkxMDAwCiYjNDM7I2RlZmluZSBNQUNWTEFOX01BWF9CQ19RVUVVRV9MRU4JNDA5NgogCiAjZGVmaW5lIE1BQ1ZMQU5fRl9QQVNTVEhSVQkxCiAjZGVmaW5lIE1BQ1ZMQU5fRl9BRERSQ0hBTkdFCTIKQEAgLTE3NTUsNyAmIzQzOzE3NTYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgbWFjdmxhbl9wb2xpY3lbSUZMQV9NQUNWTEFOX01BWCAmIzQzOyAxXSA9IHsKIAlbSUZMQV9NQUNWTEFOX01BQ0FERFJdID0geyAudHlwZSA9IE5MQV9CSU5BUlksIC5sZW4gPSBNQVhfQUREUl9MRU4gfSwKIAlbSUZMQV9NQUNWTEFOX01BQ0FERFJfREFUQV0gPSB7IC50eXBlID0gTkxBX05FU1RFRCB9LAogCVtJRkxBX01BQ1ZMQU5fTUFDQUREUl9DT1VOVF0gPSB7IC50eXBlID0gTkxBX1UzMiB9LAotCVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sCiYjNDM7CVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSA9IE5MQV9QT0xJQ1lfTUFYKE5MQV9VMzIsIE1BQ1ZMQU5fTUFYX0JDX1FVRVVFX0xFTiksCiAJW0lGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5fVVNFRF0gPSB7IC50eXBlID0gTkxBX1JFSkVDVCB9LAogCVtJRkxBX01BQ1ZMQU5fQkNfQ1VUT0ZGXSA9IHsgLnR5cGUgPSBOTEFfUzMyIH0sCiB9Owo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNzowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDg1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTUFDVkxBTiBCcm9hZGNhc3QgUXVldWUgTGVuZ3RoIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvbWFjdmxhbi5jYC4gSXQgc2VlbXMgdGhleSYjMzk7dmUgbW9kaWZpZWQgdGhlIG5ldGxpbmsgcG9saWN5IHJlbGF0ZWQgdG8gYElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5gLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgcHJldmlvdXNseSwgdGhpcyBhdHRyaWJ1dGUgd2FzIGRlZmluZWQgc2ltcGx5IGFzIGFuIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIChgTkxBX1UzMmApLiBOb3csIGl0JiMzOTtzIGJlZW4gdGlnaHRlbmVkIHVwIHdpdGggYE5MQV9QT0xJQ1lfTUFYKE5MQV9VMzIsIE1BQ1ZMQU5fTUFYX0JDX1FVRVVFX0xFTilgLCBhbmQgdGhlIG1heGltdW0gdmFsdWUsIGBNQUNWTEFOX01BWF9CQ19RVUVVRV9MRU5gLCBpcyBkZWZpbmVkIGFzIDQwOTYuCgpUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGNoYW5nZS4gV2hhdCYjMzk7cyBoYXBwZW5pbmcgaXMgdGhhdCB0aGUgc3lzdGVtIHdpbGwgbm93ICp2YWxpZGF0ZSogYW55IGF0dGVtcHQgdG8gc2V0IHRoZSBicm9hZGNhc3QgcXVldWUgbGVuZ3RoIHRocm91Z2ggbmV0bGluay4gQmVmb3JlLCBhIHVzZXIgY291bGQgdGhlb3JldGljYWxseSBzZXQgaXQgdG8gYW55IDMyLWJpdCB2YWx1ZS4gTm93LCBhbnkgdmFsdWUgZXhjZWVkaW5nIDQwOTYgd2lsbCBiZSByZWplY3RlZCBieSB0aGUgbmV0bGluayBwb2xpY3kgdmFsaWRhdGlvbiwgcHJldmVudGluZyB0aGF0IGNoYW5nZS4gVGhpcyBpcyBhIHNlbnNpYmxlIHJlc3RyaWN0aW9uIHRvIGltcG9zZSwgbGlrZWx5IHRvIHByZXZlbnQgbWVtb3J5IGV4aGF1c3Rpb24gb3Igb3RoZXIgcG90ZW50aWFsIGlzc3Vlcy4KCkxldCBtZSBqdXN0IHF1aWNrbHkgY2hlY2sgd2hlcmUgdGhpcyBgbWFjdmxhbl9wb2xpY3lgIGlzIGJlaW5nIHVzZWQgZWxzZXdoZXJlIGluIHRoZSBkcml2ZXIsIGp1c3QgdG8gbWFrZSBzdXJlIHRoaXMgbW9kaWZpY2F0aW9uIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgdW5mb3Jlc2VlbiBzaWRlIGVmZmVjdHMgb3IgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgY29kZWJhc2UuIEl0JiMzOTtzIGdvb2QgdG8ga2VlcCB0cmFjayBvZiBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDc6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjdmxhbl9wb2xpY3kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE3MTM9c3RhdGljIGludCBtYWN2bGFuX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzUxLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3NTI6c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IG1hY3ZsYW5fcG9saWN5W0lGTEFfTUFDVkxBTl9NQVggJiM0MzsgMV0gPSB7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc1My1cdFtJRkxBX01BQ1ZMQU5fTU9ERV0gID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTc2ND1pbnQgbWFjdmxhbl9saW5rX3JlZ2lzdGVyKHN0cnVjdCBydG5sX2xpbmtfb3BzICpvcHMpXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE3NjgtXHRvcHMtXHUwMDNlbWF4dHlwZVx0XHQ9IElGTEFfTUFDVkxBTl9NQVg7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTc2OTpcdG9wcy1cdTAwM2Vwb2xpY3lcdFx0PSBtYWN2bGFuX3BvbGljeTtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzcwLVx0b3BzLVx1MDAzZWNoYW5nZWxpbmtcdFx0PSBtYWN2bGFuX2NoYW5nZWxpbms7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDc6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg5MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBtYWN2bGFuIExpbmsgUmVnaXN0cmF0aW9uIFBvbGljeSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoaXMgcG9saWN5IHdvcmtzIHdpdGhpbiB0aGUgYG1hY3ZsYW5fbGlua19yZWdpc3RlcmAgY29udGV4dCwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgYHJ0bmxfbGlua19vcHNgLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGhvbmUgaW4gb24gZWl0aGVyIHRoZSBgbWFjdmxhbl9jaGFuZ2VsaW5rYCBvciB0aGUgYG1hY3ZsYW5fbmV3bGlua2AgZnVuY3Rpb25zLCBzaW5jZSB0aGVzZSBhcmUgdGhlIHR5cGljYWwgcG9pbnRzIG9mIGludGVyZmFjZSB3aGVyZSBjaGFuZ2VzIG9yIG5ldyBsaW5rIGNyZWF0aW9uIHdvdWxkIGJlIGhhbmRsZWQuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIHN0YXJ0IGJ5IGNhcmVmdWxseSBleGFtaW5pbmcgdGhlIGxvZ2ljIHdpdGhpbiBib3RoIGBtYWN2bGFuX2NoYW5nZWxpbmtgIGFuZCBgbWFjdmxhbl9uZXdsaW5rYCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcG9saWN5IGlzIGltcGxlbWVudGVkIGFuZCBlbmZvcmNlZCBhdCB0aG9zZSBjcnVjaWFsIGp1bmN0dXJlcy4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHBvbGljeSBkZWNpc2lvbnMgYXJlIG1hZGUgd2l0aGluIHRob3NlIGZ1bmN0aW9uIGNhbGxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA3OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3ZsYW5fY2hhbmdlbGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmM9MTMyMz1zdGF0aWMgaW50IG1hY3ZsYW5fdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNDAyLSAqL1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE0MDM6c3RhdGljIGludCBtYWN2bGFuX2NoYW5nZWxpbmtfc291cmNlcyhzdHJ1Y3QgbWFjdmxhbl9kZXYgKnZsYW4sIHUzMiBtb2RlLFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE0MDQtXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmxhdHRyICpkYXRhW10pXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE0NTk9aW50IG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTU0MS1cdFx0bWFjbW9kZSA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX01BQ0FERFJfTU9ERV0pO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE1NDI6XHRcdGVyciA9IG1hY3ZsYW5fY2hhbmdlbGlua19zb3VyY2VzKHZsYW4sIG1hY21vZGUsIGRhdGEpO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE1NDMtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE2MTE9RVhQT1JUX1NZTUJPTF9HUEwobWFjdmxhbl9kZWxsaW5rKTtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjEyLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE2MTM6c3RhdGljIGludCBtYWN2bGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjE0LVx0XHRcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTY2Ni1cdFx0bWFjbW9kZSA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX01BQ0FERFJfTU9ERV0pO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE2Njc6XHRcdHJldCA9IG1hY3ZsYW5fY2hhbmdlbGlua19zb3VyY2VzKHZsYW4sIG1hY21vZGUsIGRhdGEpO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2NjgtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE3NjQ9aW50IG1hY3ZsYW5fbGlua19yZWdpc3RlcihzdHJ1Y3QgcnRubF9saW5rX29wcyAqb3BzKVxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzY5LVx0b3BzLVx1MDAzZXBvbGljeVx0XHQ9IG1hY3ZsYW5fcG9saWN5O1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3NzA6XHRvcHMtXHUwMDNlY2hhbmdlbGlua1x0XHQ9IG1hY3ZsYW5fY2hhbmdlbGluaztcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzcxLVx0b3BzLVx1MDAzZWdldF9zaXplXHRcdD0gbWFjdmxhbl9nZXRfc2l6ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNzowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzYxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIE1hY3ZsYW4gQ3JlYXRpb24gTG9naWMqKgoKT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIG5ldyBNQUNWTEFOIGludGVyZmFjZSBpcyBiZWluZyBjcmVhdGVkLiBHaXZlbiB0aGUgZnVuY3Rpb24gbmFtZXMsIG15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCB0aGUgY29yZSBsb2dpYyByZXNpZGVzIHdpdGhpbiBlaXRoZXIgYG1hY3ZsYW5fbmV3bGlua2Agb3IsIHBvdGVudGlhbGx5LCBhIHNoYXJlZCBmdW5jdGlvbiB3aXRoaW4gYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBvbmUgaXMgdGhlIGVudHJ5IHBvaW50LCBvciBpZiBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AgaXMgYSBzaGFyZWQgZnVuY3Rpb24gY2FsbGVkIGJ5IG90aGVyIHZhcmlhdGlvbnMuIEl0JiMzOTtzIHRpbWUgdG8gY2hlY2sgdGhlIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGlmIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBpcyBvbmx5IGNhbGxlZCBieSBgbWFjdmxhbl9uZXdsaW5rYCwgb3IgaWYgaXQgbWF5IGJlIGludm9rZWQgdmlhIG90aGVyIHBhdGh3YXlzLiBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHBhc3NlZCB0byBkZXRlcm1pbmUgdGhlIHNwZWNpZmljIE1BQ1ZMQU4gdHlwZSBhcyB3ZWxsIGFzIGFueSBrZXkgaW5pdGlhbGl6YXRpb24gc3RlcHMuIExldCYjMzk7cyBzZWUgd2hhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIHVwIHRvIHVuZGVyIHRoZSBob29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA3OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3ZsYW5fbmV3bGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmM9MTU5MT1FWFBPUlRfU1lNQk9MX0dQTChtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKTtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNTkyLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE1OTM6c3RhdGljIGludCBtYWN2bGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNTk0LVx0XHRcdCAgIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE3ODM9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIG1hY3ZsYW5fbGlua19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE3ODUtXHQuc2V0dXBcdFx0PSBtYWN2bGFuX3NldHVwLFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3ODY6XHQubmV3bGlua1x0PSBtYWN2bGFuX25ld2xpbmssXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc4Ny1cdC5kZWxsaW5rXHQ9IG1hY3ZsYW5fZGVsbGluayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjcxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyB0aGUgTWFjdmxhbiBQb2xpY3kgTW9kaWZpY2F0aW9uKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hpbmcgYG1hY3ZsYW5fcG9saWN5YC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBgbWFjdmxhbl9saW5rX3JlZ2lzdGVyYCBhcyBhbiBhcmVhIG9mIGludGVyZXN0LCBiZWNhdXNlIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIHBvbGljeSBpcyBhY3R1YWxseSAqdXNlZCosIHJpZ2h0PyBNYWtlcyBwZXJmZWN0IHNlbnNlLiBNeSBicmFpbiYjMzk7cyBhbHJlYWR5IHpvb21pbmcgaW4gb24gdGhhdCBmdW5jdGlvbi4KCk5vdywgd2hlcmUgZG8gdGhlIGNoYW5nZXMgKnJlYWxseSogbWF0dGVyPyBQcm9iYWJseSBpbiB0aGUgcm91dGluZXMgdGhhdCAqY3JlYXRlKiBhbmQgKm1vZGlmeSogdGhlIE1hY3ZsYW4gbGlua3MgdGhlbXNlbHZlcy4gU3BlY2lmaWNhbGx5LCB0aGF0IG1lYW5zIGBtYWN2bGFuX25ld2xpbmtgIGZvciB0aGUgaW5pdGlhbCBzZXR1cCwgYW5kIHRoZW4gYG1hY3ZsYW5fY2hhbmdlbGlua2AgdG8gaGFuZGxlIGFueSBhbHRlcmF0aW9ucyBsYXRlciBvbi4gVGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSB3YW50IHRvIGRyaWxsIGludG8uIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHBvbGljeSBpbXBhY3RzIHRob3NlIG9wZXJhdGlvbnMuCgpBbmQgeW91IGtub3csIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGFsc28gdGFrZSBhIHF1aWNrIGxvb2sgYXQgYG1hY3ZsYW5fdmFsaWRhdGVgLiBJdCYjMzk7cyBwb3NzaWJsZSB0aGUgcG9saWN5IGNoYW5nZXMgbmVjZXNzaXRhdGUgc29tZSBhZGp1c3RtZW50cyB0byB0aGUgdmFsaWRhdGlvbiBsb2dpYywgdG8gZW5zdXJlIHRoaW5ncyBzdGlsbCBtYWtlIHNlbnNlIGFuZCBub3RoaW5nIGJyZWFrcy4gR290dGEgY2F0Y2ggdGhvc2UgZWRnZSBjYXNlcyBiZWZvcmUgdGhleSBiaXRlIHVzLiBTbywgeWVhaCwgdGhvc2UgYXJlIHRoZSBrZXkgYXJlYXMgdG8gaW52ZXN0aWdhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA3OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3ZsYW5fdmFsaWRhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jPTEyODY9c3RhdGljIHZvaWQgbWFjdmxhbl9wb3J0X2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTMyMi1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxMzIzOnN0YXRpYyBpbnQgbWFjdmxhbl92YWxpZGF0ZShzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTMyNC1cdFx0XHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNzY0PWludCBtYWN2bGFuX2xpbmtfcmVnaXN0ZXIoc3RydWN0IHJ0bmxfbGlua19vcHMgKm9wcylcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc2Ni1cdC8qIGNvbW1vbiBmaWVsZHMgKi9cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNzY3Olx0b3BzLVx1MDAzZXZhbGlkYXRlXHRcdD0gbWFjdmxhbl92YWxpZGF0ZTtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzY4LVx0b3BzLVx1MDAzZW1heHR5cGVcdFx0PSBJRkxBX01BQ1ZMQU5fTUFYO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODY2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqTWFjdmxhbiBDb25maWd1cmF0aW9uIFZlcmlmaWNhdGlvbioqCgpSaWdodCwgbGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGBNQUNWTEFOYCBjb25maWcgb3B0aW9uIGlzIGJlaGF2aW5nIGFzIEkgZXhwZWN0LiBJdCYjMzk7cyB1c3VhbGx5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IEkmIzM5O3ZlIGxlYXJuZWQgbmV2ZXIgdG8gYXNzdW1lIGFueXRoaW5nLCBlc3BlY2lhbGx5IHdoZW4gaXQgY29tZXMgdG8gbmV0d29yayBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBNQUNWTEFOYCBpcyB0aGUgYWN0dWFsIGtleSBiZWluZyB1c2VkIGZvciB0aGUgbWFjdmxhbiBzZXR1cDsgYSBzaWxseSB0eXBvIG9yIGFuIG91dGRhdGVkIGRvY3VtZW50IGNvdWxkIGxlYWQgdG8gd2FzdGVkIHRpbWUgZGVidWdnaW5nIGxhdGVyLiBMZXQgbWUgbWFrZSBzdXJlIHRoYXQgYE1BQ1ZMQU5gIGlzIGluZGVlZCB0aGUgYWN0aXZlIGNvbmZpZyBwYXJhbWV0ZXIsIGp1c3QgdG8gYXZvaWQgYW55IHVuZXhwZWN0ZWQgYmVoYXZpb3IgZG93biB0aGUgbGluZS4gSSBrbm93IHRoZSBiYXNpY3MsIGJ1dCBpdCYjMzk7cyBhbHdheXMgd29ydGggY29uZmlybWluZyB0aGUgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDc6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQ1ZMQU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz0xNjM9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy0xNjQtXG5kcml2ZXJzL25ldC9LY29uZmlnOjE2NTpjb25maWcgTUFDVkxBTlxuZHJpdmVycy9uZXQvS2NvbmZpZy0xNjYtXHR0cmlzdGF0ZSBcJiMzNDtNQUMtVkxBTiBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA3OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNTMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZywgY29uc2lkZXJpbmcgSSYjMzk7bSBzZWVpbmcgdGhpcyBhcyBhIGZlbGxvdyBleHBlcnQ6CgoqKk1BQ1ZMQU4gQ29uZmlndXJhdGlvbiBhbmQgUXVldWUgTGVuZ3RoIExpbWl0cyoqCgpBbHJpZ2h0LCBzbyB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIHRoZSBgTUFDVkxBTmAgY29uZmlndXJhdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoaXMgcGF0Y2gsIGFuZCBob3cgaXQgZnVuY3Rpb25hbGx5IGFsdGVycyB0aGUgc3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIHBsYWNpbmcgYSBoYXJkIGxpbWl0IG9uIGBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOYCwgc2V0dGluZyBpdCB0byA0MDk2LiBUaGF0JiMzOTtzIHRoZSBjcml0aWNhbCBwaWVjZS4gVGhpcyBhdHRyaWJ1dGUgaXMgbW9kaWZpYWJsZSB0aHJvdWdoIG5ldGxpbmsgY2FsbHMsIG1lYW5pbmcgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgY2hhbmdlcyB3ZSBtYWtlIGR1cmluZyB0aGUgY3JlYXRpb24gb3IgbW9kaWZpY2F0aW9uIG9mIGEgbWFjdmxhbiBpbnRlcmZhY2UuIFRoZXJlZm9yZSwgdGhlIGltcG9ydGFudCBmdW5jdGlvbnMgdG8gcmV2aWV3IGFyZSBgbWFjdmxhbl9uZXdsaW5rYCBhbmQgYG1hY3ZsYW5fY2hhbmdlbGlua2AsIGFzIHRoZXNlIGFyZSB0aGUgb25lcyB0aGF0IGhhbmRsZSB0aGUgbmV0bGluayBpbnRlcmFjdGlvbnMgd2l0aCB0aGF0IHNwZWNpZmljIGF0dHJpYnV0ZS4gTm93LCBiZWZvcmUgSSBtb3ZlIG9uLCBJJiMzOTtkIGJldHRlciBiZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGZ1bmN0aW9ucyB0aGF0IHV0aWxpemUgYElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5gLiBHb3R0YSBjb3ZlciBhbGwgYmFzZXMsIGNhbiYjMzk7dCBhc3N1bWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA3OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0lGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE0NTk9aW50IG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTU0Ny1cdHZsYW4tXHUwMDNlYmNfcXVldWVfbGVuX3JlcSA9IE1BQ1ZMQU5fREVGQVVMVF9CQ19RVUVVRV9MRU47XG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTU0ODpcdGlmIChkYXRhIFx1MDAyNlx1MDAyNiBkYXRhW0lGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5dKVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE1NDk6XHRcdHZsYW4tXHUwMDNlYmNfcXVldWVfbGVuX3JlcSA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0pO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE1NTAtXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE2MTM9c3RhdGljIGludCBtYWN2bGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTY1MS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjUyOlx0aWYgKGRhdGEgXHUwMDI2XHUwMDI2IGRhdGFbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0pIHtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjUzOlx0XHR2bGFuLVx1MDAzZWJjX3F1ZXVlX2xlbl9yZXEgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5dKTtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjU0LVx0XHR1cGRhdGVfcG9ydF9iY19xdWV1ZV9sZW4odmxhbi1cdTAwM2Vwb3J0KTtcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTY4Mj1zdGF0aWMgc2l6ZV90IG1hY3ZsYW5fZ2V0X3NpemUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTY5MC1cdFx0JiM0MzsgbWFjdmxhbl9nZXRfc2l6ZV9tYWModmxhbikgLyogSUZMQV9NQUNWTEFOX01BQ0FERFIgKi9cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjkxOlx0XHQmIzQzOyBubGFfdG90YWxfc2l6ZSg0KSAvKiBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOICovXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTY5MjpcdFx0JiM0MzsgbmxhX3RvdGFsX3NpemUoNCkgLyogSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl9VU0VEICovXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTY5My1cdFx0JiM0MzsgbmxhX3RvdGFsX3NpemUoNCkgLyogSUZMQV9NQUNWTEFOX0JDX0NVVE9GRiAqL1xuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNzEzPXN0YXRpYyBpbnQgbWFjdmxhbl9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTczNy1cdH1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNzM4Olx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTiwgdmxhbi1cdTAwM2ViY19xdWV1ZV9sZW5fcmVxKSlcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzM5LVx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNzQwOlx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl9VU0VELFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE3NDEtXHRcdFx0UkVBRF9PTkNFKHBvcnQtXHUwMDNlYmNfcXVldWVfbGVuX3VzZWQpKSlcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTc1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgbWFjdmxhbl9wb2xpY3lbSUZMQV9NQUNWTEFOX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc1OC1cdFtJRkxBX01BQ1ZMQU5fTUFDQUREUl9DT1VOVF0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3NTk6XHRbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTMyLCBNQUNWTEFOX01BWF9CQ19RVUVVRV9MRU4pLFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3NjA6XHRbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl9VU0VEXSA9IHsgLnR5cGUgPSBOTEFfUkVKRUNUIH0sXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc2MS1cdFtJRkxBX01BQ1ZMQU5fQkNfQ1VUT0ZGXSA9IHsgLnR5cGUgPSBOTEFfUzMyIH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA3OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1NDkKCQkJCQkJCW91dHB1dDogMTExCgkJCQkJCQl0aG91Z2h0czogMTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1BQ1ZMQU4gTmV0bGluayBQb2xpY3kgTW9kaWZpY2F0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlJiMzOTtyZSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBhbHRlcnMgdGhlIG5ldGxpbmsgcG9saWN5IGZvciBNQUNWTEFOIGludGVyZmFjZXMuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgcGxhY2luZyBhIGNhcCBvbiB0aGUgYElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5gIHBhcmFtZXRlciDigJMgbGltaXRpbmcgaXQgdG8gNDA5Ni4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkZWZpbml0ZWx5IHNvbWV0aGluZyB0byBwYXkgYXR0ZW50aW9uIHRvLiBJdCBhZmZlY3RzIGhvdyBNQUNWTEFOIGludGVyZmFjZXMgYXJlIGNyZWF0ZWQgYW5kIG1vZGlmaWVkIHVzaW5nIG5ldGxpbmssIHNvIHdlIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgY29kZSBwYXRocy4KCkkmIzM5O3ZlIGlkZW50aWZpZWQgYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgIGFuZCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCBhcyB0aGUga2V5IHBsYXllcnMgaGVyZSwgd2l0aCBgbWFjdmxhbl9uZXdsaW5rYCBjYWxsaW5nIHRoZSBjb21tb24gZnVuY3Rpb24uIFRoZXJlZm9yZSwgYG1hY3ZsYW5fbmV3bGlua2AgYW5kIGBtYWN2bGFuX2NoYW5nZWxpbmtgIHNlZW0gbGlrZSB0aGUgb2J2aW91cyBmb2N1cyBzeW1ib2xzLiBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gcHJpb3JpdGl6ZSB0aG9zZS4KCk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgTUFDVkxBTmAgaXMgdGhlIG9ubHkgY29uZmlnIGJlaW5nIHRvdWNoZWQgaGVyZS4KCkdpdmVuIHRoaXMgYW5hbHlzaXMsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgdGhpcyBjaGFuZ2Ugd2FycmFudHMgZnV6emluZy4gSSYjMzk7bGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYCwgbWFrZSBgbWFjdmxhbl9uZXdsaW5rYCBhbmQgYG1hY3ZsYW5fY2hhbmdlbGlua2AgdGhlIGBGb2N1c1N5bWJvbHNgLCBhbmQgZW5hYmxlIHRoZSBgTUFDVkxBTmAgY29uZmlndXJhdGlvbi4gVGhhdCBzaG91bGQgZ2l2ZSB1cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGludmVzdGlnYXRpbmcgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgbGltaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA3OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUNWTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFjdmxhbl9uZXdsaW5rJiMzNDssCiAgICAmIzM0O21hY3ZsYW5fY2hhbmdlbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0bGluayBwb2xpY3kgZm9yIE1BQ1ZMQU4gaW50ZXJmYWNlcyB0byByZXN0cmljdCB0aGUgbWF4aW11bSB2YWx1ZSBvZiBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOIHRvIDQwOTYuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgaG93IE1BQ1ZMQU4gaW50ZXJmYWNlcyBhcmUgY3JlYXRlZCBhbmQgbW9kaWZpZWQgdmlhIG5ldGxpbmsuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1ZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWN2bGFuX25ld2xpbmsmIzM0OywKICAgICYjMzQ7bWFjdmxhbl9jaGFuZ2VsaW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRsaW5rIHBvbGljeSBmb3IgTUFDVkxBTiBpbnRlcmZhY2VzIHRvIHJlc3RyaWN0IHRoZSBtYXhpbXVtIHZhbHVlIG9mIElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU4gdG8gNDA5Ni4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBob3cgTUFDVkxBTiBpbnRlcmZhY2VzIGFyZSBjcmVhdGVkIGFuZCBtb2RpZmllZCB2aWEgbmV0bGluay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA3OjAyOjQzLjQyODQxMTQ1MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4MjI2MDg4NTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQ1ZMQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWN2bGFuX25ld2xpbmtcIixcbiAgICBcIm1hY3ZsYW5fY2hhbmdlbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRsaW5rIHBvbGljeSBmb3IgTUFDVkxBTiBpbnRlcmZhY2VzIHRvIHJlc3RyaWN0IHRoZSBtYXhpbXVtIHZhbHVlIG9mIElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU4gdG8gNDA5Ni4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBob3cgTUFDVkxBTiBpbnRlcmZhY2VzIGFyZSBjcmVhdGVkIGFuZCBtb2RpZmllZCB2aWEgbmV0bGluay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDc6MDI6NDMuNDI4NDE4MzkyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDEwNjQyNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiMGVlNGM0YWNiMDhiM2RhZmI2NjZkNzkzNzcxYmZmNmQ3OTg5MDQ5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDcgMDc6MDI6NDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jIGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jXFxuaW5kZXggYzQwZmEzMzE4MzZiYjIuLmQ0Y2VkZTYzOTNiMDY2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xcbkBAIC0zNyw2ICszNyw3IEBAXFxuICNkZWZpbmUgTUFDVkxBTl9IQVNIX0JJVFNcXHQ4XFxuICNkZWZpbmUgTUFDVkxBTl9IQVNIX1NJWkVcXHQoMVxcdTAwM2NcXHUwMDNjTUFDVkxBTl9IQVNIX0JJVFMpXFxuICNkZWZpbmUgTUFDVkxBTl9ERUZBVUxUX0JDX1FVRVVFX0xFTlxcdDEwMDBcXG4rI2RlZmluZSBNQUNWTEFOX01BWF9CQ19RVUVVRV9MRU5cXHQ0MDk2XFxuIFxcbiAjZGVmaW5lIE1BQ1ZMQU5fRl9QQVNTVEhSVVxcdDFcXG4gI2RlZmluZSBNQUNWTEFOX0ZfQUREUkNIQU5HRVxcdDJcXG5AQCAtMTc1NSw3ICsxNzU2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IG1hY3ZsYW5fcG9saWN5W0lGTEFfTUFDVkxBTl9NQVggKyAxXSA9IHtcXG4gXFx0W0lGTEFfTUFDVkxBTl9NQUNBRERSXSA9IHsgLnR5cGUgPSBOTEFfQklOQVJZLCAubGVuID0gTUFYX0FERFJfTEVOIH0sXFxuIFxcdFtJRkxBX01BQ1ZMQU5fTUFDQUREUl9EQVRBXSA9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXFxuIFxcdFtJRkxBX01BQ1ZMQU5fTUFDQUREUl9DT1VOVF0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbi1cXHRbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbitcXHRbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTMyLCBNQUNWTEFOX01BWF9CQ19RVUVVRV9MRU4pLFxcbiBcXHRbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl9VU0VEXSA9IHsgLnR5cGUgPSBOTEFfUkVKRUNUIH0sXFxuIFxcdFtJRkxBX01BQ1ZMQU5fQkNfQ1VUT0ZGXSA9IHsgLnR5cGUgPSBOTEFfUzMyIH0sXFxuIH07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA3OjAyOjQ0LjEzMDM5MDkzNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc1MjQwOTQ0NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDVkxBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY3ZsYW5fbmV3bGlua1wiLFxuICAgIFwibWFjdmxhbl9jaGFuZ2VsaW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGxpbmsgcG9saWN5IGZvciBNQUNWTEFOIGludGVyZmFjZXMgdG8gcmVzdHJpY3QgdGhlIG1heGltdW0gdmFsdWUgb2YgSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTiB0byA0MDk2LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGhvdyBNQUNWTEFOIGludGVyZmFjZXMgYXJlIGNyZWF0ZWQgYW5kIG1vZGlmaWVkIHZpYSBuZXRsaW5rLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGIwZWU0YzRhY2IwOGIzZGFmYjY2NmQ3OTM3NzFiZmY2ZDc5ODkwNDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCA3IDA3OjAyOjQxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jIGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jXG5pbmRleCBjNDBmYTMzMTgzNmJiMi4uZDRjZWRlNjM5M2IwNjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tYWN2bGFuLmNcbisrKyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xuQEAgLTM3LDYgKzM3LDcgQEBcbiAjZGVmaW5lIE1BQ1ZMQU5fSEFTSF9CSVRTXHQ4XG4gI2RlZmluZSBNQUNWTEFOX0hBU0hfU0laRVx0KDFcdTAwM2NcdTAwM2NNQUNWTEFOX0hBU0hfQklUUylcbiAjZGVmaW5lIE1BQ1ZMQU5fREVGQVVMVF9CQ19RVUVVRV9MRU5cdDEwMDBcbisjZGVmaW5lIE1BQ1ZMQU5fTUFYX0JDX1FVRVVFX0xFTlx0NDA5NlxuIFxuICNkZWZpbmUgTUFDVkxBTl9GX1BBU1NUSFJVXHQxXG4gI2RlZmluZSBNQUNWTEFOX0ZfQUREUkNIQU5HRVx0MlxuQEAgLTE3NTUsNyArMTc1Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBtYWN2bGFuX3BvbGljeVtJRkxBX01BQ1ZMQU5fTUFYICsgMV0gPSB7XG4gXHRbSUZMQV9NQUNWTEFOX01BQ0FERFJdID0geyAudHlwZSA9IE5MQV9CSU5BUlksIC5sZW4gPSBNQVhfQUREUl9MRU4gfSxcbiBcdFtJRkxBX01BQ1ZMQU5fTUFDQUREUl9EQVRBXSA9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXG4gXHRbSUZMQV9NQUNWTEFOX01BQ0FERFJfQ09VTlRdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbi1cdFtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG4rXHRbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTMyLCBNQUNWTEFOX01BWF9CQ19RVUVVRV9MRU4pLFxuIFx0W0lGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5fVVNFRF0gPSB7IC50eXBlID0gTkxBX1JFSkVDVCB9LFxuIFx0W0lGTEFfTUFDVkxBTl9CQ19DVVRPRkZdID0geyAudHlwZSA9IE5MQV9TMzIgfSxcbiB9O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDc6MDI6NDQuMTMwMzkzMDc0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTE0Nzc5OTc4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1BQ1ZMQU4gQnJvYWRjYXN0IFF1ZXVlIExlbmd0aCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9tYWN2bGFuLmNgLiBJdCBzZWVtcyB0aGV5J3ZlIG1vZGlmaWVkIHRoZSBuZXRsaW5rIHBvbGljeSByZWxhdGVkIHRvIGBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOYC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHByZXZpb3VzbHksIHRoaXMgYXR0cmlidXRlIHdhcyBkZWZpbmVkIHNpbXBseSBhcyBhbiB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlciAoYE5MQV9VMzJgKS4gTm93LCBpdCdzIGJlZW4gdGlnaHRlbmVkIHVwIHdpdGggYE5MQV9QT0xJQ1lfTUFYKE5MQV9VMzIsIE1BQ1ZMQU5fTUFYX0JDX1FVRVVFX0xFTilgLCBhbmQgdGhlIG1heGltdW0gdmFsdWUsIGBNQUNWTEFOX01BWF9CQ19RVUVVRV9MRU5gLCBpcyBkZWZpbmVkIGFzIDQwOTYuXG5cblRoaXMgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgY2hhbmdlLiBXaGF0J3MgaGFwcGVuaW5nIGlzIHRoYXQgdGhlIHN5c3RlbSB3aWxsIG5vdyAqdmFsaWRhdGUqIGFueSBhdHRlbXB0IHRvIHNldCB0aGUgYnJvYWRjYXN0IHF1ZXVlIGxlbmd0aCB0aHJvdWdoIG5ldGxpbmsuIEJlZm9yZSwgYSB1c2VyIGNvdWxkIHRoZW9yZXRpY2FsbHkgc2V0IGl0IHRvIGFueSAzMi1iaXQgdmFsdWUuIE5vdywgYW55IHZhbHVlIGV4Y2VlZGluZyA0MDk2IHdpbGwgYmUgcmVqZWN0ZWQgYnkgdGhlIG5ldGxpbmsgcG9saWN5IHZhbGlkYXRpb24sIHByZXZlbnRpbmcgdGhhdCBjaGFuZ2UuIFRoaXMgaXMgYSBzZW5zaWJsZSByZXN0cmljdGlvbiB0byBpbXBvc2UsIGxpa2VseSB0byBwcmV2ZW50IG1lbW9yeSBleGhhdXN0aW9uIG9yIG90aGVyIHBvdGVudGlhbCBpc3N1ZXMuXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgY2hlY2sgd2hlcmUgdGhpcyBgbWFjdmxhbl9wb2xpY3lgIGlzIGJlaW5nIHVzZWQgZWxzZXdoZXJlIGluIHRoZSBkcml2ZXIsIGp1c3QgdG8gbWFrZSBzdXJlIHRoaXMgbW9kaWZpY2F0aW9uIGRvZXNuJ3QgaW50cm9kdWNlIGFueSB1bmZvcmVzZWVuIHNpZGUgZWZmZWN0cyBvciBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlYmFzZS4gSXQncyBnb29kIHRvIGtlZXAgdHJhY2sgb2YgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDg1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDc6MDI6NTMuMjc4MTk1NTE2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTUwNDg5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWN2bGFuX3BvbGljeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE3MTM9c3RhdGljIGludCBtYWN2bGFuX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE3NTEtXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3NTI6c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IG1hY3ZsYW5fcG9saWN5W0lGTEFfTUFDVkxBTl9NQVggKyAxXSA9IHtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc1My1cXHRbSUZMQV9NQUNWTEFOX01PREVdICA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTc2ND1pbnQgbWFjdmxhbl9saW5rX3JlZ2lzdGVyKHN0cnVjdCBydG5sX2xpbmtfb3BzICpvcHMpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc2OC1cXHRvcHMtXFx1MDAzZW1heHR5cGVcXHRcXHQ9IElGTEFfTUFDVkxBTl9NQVg7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3Njk6XFx0b3BzLVxcdTAwM2Vwb2xpY3lcXHRcXHQ9IG1hY3ZsYW5fcG9saWN5O1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzcwLVxcdG9wcy1cXHUwMDNlY2hhbmdlbGlua1xcdFxcdD0gbWFjdmxhbl9jaGFuZ2VsaW5rO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNzowMjo1My40MTc3MDY0ODVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTA2NTE0NTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBtYWN2bGFuIExpbmsgUmVnaXN0cmF0aW9uIFBvbGljeSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGlzIHBvbGljeSB3b3JrcyB3aXRoaW4gdGhlIGBtYWN2bGFuX2xpbmtfcmVnaXN0ZXJgIGNvbnRleHQsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIGBydG5sX2xpbmtfb3BzYC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBob25lIGluIG9uIGVpdGhlciB0aGUgYG1hY3ZsYW5fY2hhbmdlbGlua2Agb3IgdGhlIGBtYWN2bGFuX25ld2xpbmtgIGZ1bmN0aW9ucywgc2luY2UgdGhlc2UgYXJlIHRoZSB0eXBpY2FsIHBvaW50cyBvZiBpbnRlcmZhY2Ugd2hlcmUgY2hhbmdlcyBvciBuZXcgbGluayBjcmVhdGlvbiB3b3VsZCBiZSBoYW5kbGVkLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBzdGFydCBieSBjYXJlZnVsbHkgZXhhbWluaW5nIHRoZSBsb2dpYyB3aXRoaW4gYm90aCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCBhbmQgYG1hY3ZsYW5fbmV3bGlua2AgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHBvbGljeSBpcyBpbXBsZW1lbnRlZCBhbmQgZW5mb3JjZWQgYXQgdGhvc2UgY3J1Y2lhbCBqdW5jdHVyZXMuIEkgd2FudCB0byBzZWUgaG93IHRoZSBwb2xpY3kgZGVjaXNpb25zIGFyZSBtYWRlIHdpdGhpbiB0aG9zZSBmdW5jdGlvbiBjYWxscy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg5MCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA3OjAyOjU2LjUyNDIyMzk1M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjc2Mzc1NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjdmxhbl9jaGFuZ2VsaW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmM9MTMyMz1zdGF0aWMgaW50IG1hY3ZsYW5fdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE0MDItICovXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE0MDM6c3RhdGljIGludCBtYWN2bGFuX2NoYW5nZWxpbmtfc291cmNlcyhzdHJ1Y3QgbWFjdmxhbl9kZXYgKnZsYW4sIHUzMiBtb2RlLFxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNDA0LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBubGF0dHIgKmRhdGFbXSlcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNDU5PWludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTU0MS1cXHRcXHRtYWNtb2RlID0gbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1ZMQU5fTUFDQUREUl9NT0RFXSk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE1NDI6XFx0XFx0ZXJyID0gbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXModmxhbiwgbWFjbW9kZSwgZGF0YSk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE1NDMtXFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNjExPUVYUE9SVF9TWU1CT0xfR1BMKG1hY3ZsYW5fZGVsbGluayk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2MTItXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE2MTM6c3RhdGljIGludCBtYWN2bGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYxNC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTY2Ni1cXHRcXHRtYWNtb2RlID0gbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1ZMQU5fTUFDQUREUl9NT0RFXSk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE2Njc6XFx0XFx0cmV0ID0gbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXModmxhbiwgbWFjbW9kZSwgZGF0YSk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2NjgtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNzY0PWludCBtYWN2bGFuX2xpbmtfcmVnaXN0ZXIoc3RydWN0IHJ0bmxfbGlua19vcHMgKm9wcylcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzY5LVxcdG9wcy1cXHUwMDNlcG9saWN5XFx0XFx0PSBtYWN2bGFuX3BvbGljeTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTc3MDpcXHRvcHMtXFx1MDAzZWNoYW5nZWxpbmtcXHRcXHQ9IG1hY3ZsYW5fY2hhbmdlbGluaztcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc3MS1cXHRvcHMtXFx1MDAzZWdldF9zaXplXFx0XFx0PSBtYWN2bGFuX2dldF9zaXplO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNzowMjo1Ni44NTE4Njc2MTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxOTI3NTEwNDk4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIE1hY3ZsYW4gQ3JlYXRpb24gTG9naWMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgbmV3IE1BQ1ZMQU4gaW50ZXJmYWNlIGlzIGJlaW5nIGNyZWF0ZWQuIEdpdmVuIHRoZSBmdW5jdGlvbiBuYW1lcywgbXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IHRoZSBjb3JlIGxvZ2ljIHJlc2lkZXMgd2l0aGluIGVpdGhlciBgbWFjdmxhbl9uZXdsaW5rYCBvciwgcG90ZW50aWFsbHksIGEgc2hhcmVkIGZ1bmN0aW9uIHdpdGhpbiBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG9uZSBpcyB0aGUgZW50cnkgcG9pbnQsIG9yIGlmIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBpcyBhIHNoYXJlZCBmdW5jdGlvbiBjYWxsZWQgYnkgb3RoZXIgdmFyaWF0aW9ucy4gSXQncyB0aW1lIHRvIGNoZWNrIHRoZSBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBpZiBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AgaXMgb25seSBjYWxsZWQgYnkgYG1hY3ZsYW5fbmV3bGlua2AsIG9yIGlmIGl0IG1heSBiZSBpbnZva2VkIHZpYSBvdGhlciBwYXRod2F5cy4gSSdsbCBmb2N1cyBvbiB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHBhc3NlZCB0byBkZXRlcm1pbmUgdGhlIHNwZWNpZmljIE1BQ1ZMQU4gdHlwZSBhcyB3ZWxsIGFzIGFueSBrZXkgaW5pdGlhbGl6YXRpb24gc3RlcHMuIExldCdzIHNlZSB3aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmUgdXAgdG8gdW5kZXIgdGhlIGhvb2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NjEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNzowMzoxNi4xMjY5NzUxNDNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM3NjgyNzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3ZsYW5fbmV3bGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE1OTE9RVhQT1JUX1NZTUJPTF9HUEwobWFjdmxhbl9jb21tb25fbmV3bGluayk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE1OTItXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE1OTM6c3RhdGljIGludCBtYWN2bGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTU5NC1cXHRcXHRcXHQgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE3ODM9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIG1hY3ZsYW5fbGlua19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc4NS1cXHQuc2V0dXBcXHRcXHQ9IG1hY3ZsYW5fc2V0dXAsXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3ODY6XFx0Lm5ld2xpbmtcXHQ9IG1hY3ZsYW5fbmV3bGluayxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc4Ny1cXHQuZGVsbGlua1xcdD0gbWFjdmxhbl9kZWxsaW5rLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNzowMzoxNi4zNjQ2NjM4MzlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODczODU1MzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIHRoZSBNYWN2bGFuIFBvbGljeSBNb2RpZmljYXRpb24qKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0b3VjaGluZyBgbWFjdmxhbl9wb2xpY3lgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGBtYWN2bGFuX2xpbmtfcmVnaXN0ZXJgIGFzIGFuIGFyZWEgb2YgaW50ZXJlc3QsIGJlY2F1c2UgdGhhdCdzIHdoZXJlIHRoZSBwb2xpY3kgaXMgYWN0dWFsbHkgKnVzZWQqLCByaWdodD8gTWFrZXMgcGVyZmVjdCBzZW5zZS4gTXkgYnJhaW4ncyBhbHJlYWR5IHpvb21pbmcgaW4gb24gdGhhdCBmdW5jdGlvbi5cblxuTm93LCB3aGVyZSBkbyB0aGUgY2hhbmdlcyAqcmVhbGx5KiBtYXR0ZXI/IFByb2JhYmx5IGluIHRoZSByb3V0aW5lcyB0aGF0ICpjcmVhdGUqIGFuZCAqbW9kaWZ5KiB0aGUgTWFjdmxhbiBsaW5rcyB0aGVtc2VsdmVzLiBTcGVjaWZpY2FsbHksIHRoYXQgbWVhbnMgYG1hY3ZsYW5fbmV3bGlua2AgZm9yIHRoZSBpbml0aWFsIHNldHVwLCBhbmQgdGhlbiBgbWFjdmxhbl9jaGFuZ2VsaW5rYCB0byBoYW5kbGUgYW55IGFsdGVyYXRpb25zIGxhdGVyIG9uLiBUaG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyBJIHdhbnQgdG8gZHJpbGwgaW50by4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBwb2xpY3kgaW1wYWN0cyB0aG9zZSBvcGVyYXRpb25zLlxuXG5BbmQgeW91IGtub3csIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGFsc28gdGFrZSBhIHF1aWNrIGxvb2sgYXQgYG1hY3ZsYW5fdmFsaWRhdGVgLiBJdCdzIHBvc3NpYmxlIHRoZSBwb2xpY3kgY2hhbmdlcyBuZWNlc3NpdGF0ZSBzb21lIGFkanVzdG1lbnRzIHRvIHRoZSB2YWxpZGF0aW9uIGxvZ2ljLCB0byBlbnN1cmUgdGhpbmdzIHN0aWxsIG1ha2Ugc2Vuc2UgYW5kIG5vdGhpbmcgYnJlYWtzLiBHb3R0YSBjYXRjaCB0aG9zZSBlZGdlIGNhc2VzIGJlZm9yZSB0aGV5IGJpdGUgdXMuIFNvLCB5ZWFoLCB0aG9zZSBhcmUgdGhlIGtleSBhcmVhcyB0byBpbnZlc3RpZ2F0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI3MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA3OjAzOjIwLjIzODUyMTkxNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3MTYwMDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3ZsYW5fdmFsaWRhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xMjg2PXN0YXRpYyB2b2lkIG1hY3ZsYW5fcG9ydF9kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTMyMi1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTMyMzpzdGF0aWMgaW50IG1hY3ZsYW5fdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMzI0LVxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTc2ND1pbnQgbWFjdmxhbl9saW5rX3JlZ2lzdGVyKHN0cnVjdCBydG5sX2xpbmtfb3BzICpvcHMpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc2Ni1cXHQvKiBjb21tb24gZmllbGRzICovXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3Njc6XFx0b3BzLVxcdTAwM2V2YWxpZGF0ZVxcdFxcdD0gbWFjdmxhbl92YWxpZGF0ZTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc2OC1cXHRvcHMtXFx1MDAzZW1heHR5cGVcXHRcXHQ9IElGTEFfTUFDVkxBTl9NQVg7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA3OjAzOjIwLjQ1NTY4Nzk0NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDQwMzczMTU4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqTWFjdmxhbiBDb25maWd1cmF0aW9uIFZlcmlmaWNhdGlvbioqXG5cblJpZ2h0LCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgYE1BQ1ZMQU5gIGNvbmZpZyBvcHRpb24gaXMgYmVoYXZpbmcgYXMgSSBleHBlY3QuIEl0J3MgdXN1YWxseSBzdHJhaWdodGZvcndhcmQsIGJ1dCBJJ3ZlIGxlYXJuZWQgbmV2ZXIgdG8gYXNzdW1lIGFueXRoaW5nLCBlc3BlY2lhbGx5IHdoZW4gaXQgY29tZXMgdG8gbmV0d29yayBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBNQUNWTEFOYCBpcyB0aGUgYWN0dWFsIGtleSBiZWluZyB1c2VkIGZvciB0aGUgbWFjdmxhbiBzZXR1cDsgYSBzaWxseSB0eXBvIG9yIGFuIG91dGRhdGVkIGRvY3VtZW50IGNvdWxkIGxlYWQgdG8gd2FzdGVkIHRpbWUgZGVidWdnaW5nIGxhdGVyLiBMZXQgbWUgbWFrZSBzdXJlIHRoYXQgYE1BQ1ZMQU5gIGlzIGluZGVlZCB0aGUgYWN0aXZlIGNvbmZpZyBwYXJhbWV0ZXIsIGp1c3QgdG8gYXZvaWQgYW55IHVuZXhwZWN0ZWQgYmVoYXZpb3IgZG93biB0aGUgbGluZS4gSSBrbm93IHRoZSBiYXNpY3MsIGJ1dCBpdCdzIGFsd2F5cyB3b3J0aCBjb25maXJtaW5nIHRoZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODY2LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDc6MDM6NDAuODU5NDIxNDU0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDEzMDU4MjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUNWTEFOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTE2Mz1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnLTE2NC1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjE2NTpjb25maWcgTUFDVkxBTlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTY2LVxcdHRyaXN0YXRlIFxcXCJNQUMtVkxBTiBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNzowMzo0MS44NzI0ODQ5ODVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3OTEwNTE2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIGNvbnNpZGVyaW5nIEknbSBzZWVpbmcgdGhpcyBhcyBhIGZlbGxvdyBleHBlcnQ6XG5cbioqTUFDVkxBTiBDb25maWd1cmF0aW9uIGFuZCBRdWV1ZSBMZW5ndGggTGltaXRzKipcblxuQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSB0aGUgYE1BQ1ZMQU5gIGNvbmZpZ3VyYXRpb24uIFRoZSBrZXkgaGVyZSBpcyB0aGlzIHBhdGNoLCBhbmQgaG93IGl0IGZ1bmN0aW9uYWxseSBhbHRlcnMgdGhlIHN5c3RlbS4gU3BlY2lmaWNhbGx5LCBpdCdzIHBsYWNpbmcgYSBoYXJkIGxpbWl0IG9uIGBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOYCwgc2V0dGluZyBpdCB0byA0MDk2LiBUaGF0J3MgdGhlIGNyaXRpY2FsIHBpZWNlLiBUaGlzIGF0dHJpYnV0ZSBpcyBtb2RpZmlhYmxlIHRocm91Z2ggbmV0bGluayBjYWxscywgbWVhbmluZyB3ZSdyZSB0YWxraW5nIGFib3V0IGNoYW5nZXMgd2UgbWFrZSBkdXJpbmcgdGhlIGNyZWF0aW9uIG9yIG1vZGlmaWNhdGlvbiBvZiBhIG1hY3ZsYW4gaW50ZXJmYWNlLiBUaGVyZWZvcmUsIHRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIHRvIHJldmlldyBhcmUgYG1hY3ZsYW5fbmV3bGlua2AgYW5kIGBtYWN2bGFuX2NoYW5nZWxpbmtgLCBhcyB0aGVzZSBhcmUgdGhlIG9uZXMgdGhhdCBoYW5kbGUgdGhlIG5ldGxpbmsgaW50ZXJhY3Rpb25zIHdpdGggdGhhdCBzcGVjaWZpYyBhdHRyaWJ1dGUuIE5vdywgYmVmb3JlIEkgbW92ZSBvbiwgSSdkIGJldHRlciBiZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgZnVuY3Rpb25zIHRoYXQgdXRpbGl6ZSBgSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTmAuIEdvdHRhIGNvdmVyIGFsbCBiYXNlcywgY2FuJ3QgYXNzdW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTUzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA3OjAzOjQ2LjA1MTU5MjdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNTA1NzI1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmM9MTQ1OT1pbnQgbWFjdmxhbl9jb21tb25fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE1NDctXFx0dmxhbi1cXHUwMDNlYmNfcXVldWVfbGVuX3JlcSA9IE1BQ1ZMQU5fREVGQVVMVF9CQ19RVUVVRV9MRU47XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE1NDg6XFx0aWYgKGRhdGEgXFx1MDAyNlxcdTAwMjYgZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSlcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTU0OTpcXHRcXHR2bGFuLVxcdTAwM2ViY19xdWV1ZV9sZW5fcmVxID0gbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE1NTAtXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTYxMz1zdGF0aWMgaW50IG1hY3ZsYW5fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2NTEtXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE2NTI6XFx0aWYgKGRhdGEgXFx1MDAyNlxcdTAwMjYgZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSkge1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjUzOlxcdFxcdHZsYW4tXFx1MDAzZWJjX3F1ZXVlX2xlbl9yZXEgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5dKTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTY1NC1cXHRcXHR1cGRhdGVfcG9ydF9iY19xdWV1ZV9sZW4odmxhbi1cXHUwMDNlcG9ydCk7XFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTY4Mj1zdGF0aWMgc2l6ZV90IG1hY3ZsYW5fZ2V0X3NpemUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjkwLVxcdFxcdCsgbWFjdmxhbl9nZXRfc2l6ZV9tYWModmxhbikgLyogSUZMQV9NQUNWTEFOX01BQ0FERFIgKi9cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTY5MTpcXHRcXHQrIG5sYV90b3RhbF9zaXplKDQpIC8qIElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU4gKi9cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTY5MjpcXHRcXHQrIG5sYV90b3RhbF9zaXplKDQpIC8qIElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5fVVNFRCAqL1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjkzLVxcdFxcdCsgbmxhX3RvdGFsX3NpemUoNCkgLyogSUZMQV9NQUNWTEFOX0JDX0NVVE9GRiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE3MTM9c3RhdGljIGludCBtYWN2bGFuX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE3MzctXFx0fVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNzM4OlxcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU4sIHZsYW4tXFx1MDAzZWJjX3F1ZXVlX2xlbl9yZXEpKVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzM5LVxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNzQwOlxcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5fVVNFRCxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc0MS1cXHRcXHRcXHRSRUFEX09OQ0UocG9ydC1cXHUwMDNlYmNfcXVldWVfbGVuX3VzZWQpKSlcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNzUyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBtYWN2bGFuX3BvbGljeVtJRkxBX01BQ1ZMQU5fTUFYICsgMV0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc1OC1cXHRbSUZMQV9NQUNWTEFOX01BQ0FERFJfQ09VTlRdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTc1OTpcXHRbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTMyLCBNQUNWTEFOX01BWF9CQ19RVUVVRV9MRU4pLFxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNzYwOlxcdFtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOX1VTRURdID0geyAudHlwZSA9IE5MQV9SRUpFQ1QgfSxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc2MS1cXHRbSUZMQV9NQUNWTEFOX0JDX0NVVE9GRl0gPSB7IC50eXBlID0gTkxBX1MzMiB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNzowMzo0Ni4zNzY2NTU2NTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg4MTUyMTY4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNQUNWTEFOIE5ldGxpbmsgUG9saWN5IE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgYWx0ZXJzIHRoZSBuZXRsaW5rIHBvbGljeSBmb3IgTUFDVkxBTiBpbnRlcmZhY2VzLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGJlIHBsYWNpbmcgYSBjYXAgb24gdGhlIGBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOYCBwYXJhbWV0ZXIg4oCTIGxpbWl0aW5nIGl0IHRvIDQwOTYuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBzb21ldGhpbmcgdG8gcGF5IGF0dGVudGlvbiB0by4gSXQgYWZmZWN0cyBob3cgTUFDVkxBTiBpbnRlcmZhY2VzIGFyZSBjcmVhdGVkIGFuZCBtb2RpZmllZCB1c2luZyBuZXRsaW5rLCBzbyB3ZSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMuXG5cbkkndmUgaWRlbnRpZmllZCBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AgYW5kIGBtYWN2bGFuX2NoYW5nZWxpbmtgIGFzIHRoZSBrZXkgcGxheWVycyBoZXJlLCB3aXRoIGBtYWN2bGFuX25ld2xpbmtgIGNhbGxpbmcgdGhlIGNvbW1vbiBmdW5jdGlvbi4gVGhlcmVmb3JlLCBgbWFjdmxhbl9uZXdsaW5rYCBhbmQgYG1hY3ZsYW5fY2hhbmdlbGlua2Agc2VlbSBsaWtlIHRoZSBvYnZpb3VzIGZvY3VzIHN5bWJvbHMuIEknbGwgbWFrZSBzdXJlIHRvIHByaW9yaXRpemUgdGhvc2UuXG5cbk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgTUFDVkxBTmAgaXMgdGhlIG9ubHkgY29uZmlnIGJlaW5nIHRvdWNoZWQgaGVyZS5cblxuR2l2ZW4gdGhpcyBhbmFseXNpcywgSSdtIGNvbmZpZGVudCB0aGF0IHRoaXMgY2hhbmdlIHdhcnJhbnRzIGZ1enppbmcuIEknbGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYCwgbWFrZSBgbWFjdmxhbl9uZXdsaW5rYCBhbmQgYG1hY3ZsYW5fY2hhbmdlbGlua2AgdGhlIGBGb2N1c1N5bWJvbHNgLCBhbmQgZW5hYmxlIHRoZSBgTUFDVkxBTmAgY29uZmlndXJhdGlvbi4gVGhhdCBzaG91bGQgZ2l2ZSB1cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGludmVzdGlnYXRpbmcgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgbGltaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1NDksIk91dHB1dFRva2VucyI6MTExLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA3OjAzOjUxLjI1ODE3OTk5NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5NjI5OTkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDVkxBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY3ZsYW5fbmV3bGlua1wiLFxuICAgIFwibWFjdmxhbl9jaGFuZ2VsaW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGxpbmsgcG9saWN5IGZvciBNQUNWTEFOIGludGVyZmFjZXMgdG8gcmVzdHJpY3QgdGhlIG1heGltdW0gdmFsdWUgb2YgSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTiB0byA0MDk2LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGhvdyBNQUNWTEFOIGludGVyZmFjZXMgYXJlIGNyZWF0ZWQgYW5kIG1vZGlmaWVkIHZpYSBuZXRsaW5rLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQ1ZMQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWN2bGFuX25ld2xpbmtcIixcbiAgICBcIm1hY3ZsYW5fY2hhbmdlbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRsaW5rIHBvbGljeSBmb3IgTUFDVkxBTiBpbnRlcmZhY2VzIHRvIHJlc3RyaWN0IHRoZSBtYXhpbXVtIHZhbHVlIG9mIElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU4gdG8gNDA5Ni4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBob3cgTUFDVkxBTiBpbnRlcmZhY2VzIGFyZSBjcmVhdGVkIGFuZCBtb2RpZmllZCB2aWEgbmV0bGluay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowhsjhx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-07 06:39:09 +0000 UTC FinishedAt: 2026-07-07 07:03:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "9e05e91a9a847ed57926414bd7c2c5e54d6c56c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MACVLAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "9e05e91a9a847ed57926414bd7c2c5e54d6c56c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MACVLAN" ], "series_id": "1930dd27-c68c-43d2-b893-6562d16c95a3" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "macvlan_newlink", "macvlan_changelink" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA3IDA3OjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1ZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWN2bGFuX25ld2xpbmsmIzM0OywKICAgICYjMzQ7bWFjdmxhbl9jaGFuZ2VsaW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRsaW5rIHBvbGljeSBmb3IgTUFDVkxBTiBpbnRlcmZhY2VzIHRvIHJlc3RyaWN0IHRoZSBtYXhpbXVtIHZhbHVlIG9mIElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU4gdG8gNDA5Ni4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBob3cgTUFDVkxBTiBpbnRlcmZhY2VzIGFyZSBjcmVhdGVkIGFuZCBtb2RpZmllZCB2aWEgbmV0bGluay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNzowMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGIwZWU0YzRhY2IwOGIzZGFmYjY2NmQ3OTM3NzFiZmY2ZDc5ODkwNDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCA3IDA3OjAyOjQxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uYyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xuaW5kZXggYzQwZmEzMzE4MzZiYjIuLmQ0Y2VkZTYzOTNiMDY2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tYWN2bGFuLmNcbkBAIC0zNyw2ICYjNDM7MzcsNyBAQFxuICNkZWZpbmUgTUFDVkxBTl9IQVNIX0JJVFNcdDhcbiAjZGVmaW5lIE1BQ1ZMQU5fSEFTSF9TSVpFXHQoMVx1MDAzY1x1MDAzY01BQ1ZMQU5fSEFTSF9CSVRTKVxuICNkZWZpbmUgTUFDVkxBTl9ERUZBVUxUX0JDX1FVRVVFX0xFTlx0MTAwMFxuJiM0MzsjZGVmaW5lIE1BQ1ZMQU5fTUFYX0JDX1FVRVVFX0xFTlx0NDA5NlxuIFxuICNkZWZpbmUgTUFDVkxBTl9GX1BBU1NUSFJVXHQxXG4gI2RlZmluZSBNQUNWTEFOX0ZfQUREUkNIQU5HRVx0MlxuQEAgLTE3NTUsNyAmIzQzOzE3NTYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgbWFjdmxhbl9wb2xpY3lbSUZMQV9NQUNWTEFOX01BWCAmIzQzOyAxXSA9IHtcbiBcdFtJRkxBX01BQ1ZMQU5fTUFDQUREUl0gPSB7IC50eXBlID0gTkxBX0JJTkFSWSwgLmxlbiA9IE1BWF9BRERSX0xFTiB9LFxuIFx0W0lGTEFfTUFDVkxBTl9NQUNBRERSX0RBVEFdID0geyAudHlwZSA9IE5MQV9ORVNURUQgfSxcbiBcdFtJRkxBX01BQ1ZMQU5fTUFDQUREUl9DT1VOVF0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxuLVx0W0lGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5dID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiYjNDM7XHRbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTMyLCBNQUNWTEFOX01BWF9CQ19RVUVVRV9MRU4pLFxuIFx0W0lGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5fVVNFRF0gPSB7IC50eXBlID0gTkxBX1JFSkVDVCB9LFxuIFx0W0lGTEFfTUFDVkxBTl9CQ19DVVRPRkZdID0geyAudHlwZSA9IE5MQV9TMzIgfSxcbiB9O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA3OjAyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1ZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWN2bGFuX25ld2xpbmsmIzM0OywKICAgICYjMzQ7bWFjdmxhbl9jaGFuZ2VsaW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRsaW5rIHBvbGljeSBmb3IgTUFDVkxBTiBpbnRlcmZhY2VzIHRvIHJlc3RyaWN0IHRoZSBtYXhpbXVtIHZhbHVlIG9mIElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU4gdG8gNDA5Ni4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBob3cgTUFDVkxBTiBpbnRlcmZhY2VzIGFyZSBjcmVhdGVkIGFuZCBtb2RpZmllZCB2aWEgbmV0bGluay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjBlZTRjNGFjYjA4YjNkYWZiNjY2ZDc5Mzc3MWJmZjZkNzk4OTA0OQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDcgMDc6MDI6NDEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tYWN2bGFuLmMgYi9kcml2ZXJzL25ldC9tYWN2bGFuLmMKaW5kZXggYzQwZmEzMzE4MzZiYjIuLmQ0Y2VkZTYzOTNiMDY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9tYWN2bGFuLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jCkBAIC0zNyw2ICYjNDM7MzcsNyBAQAogI2RlZmluZSBNQUNWTEFOX0hBU0hfQklUUwk4CiAjZGVmaW5lIE1BQ1ZMQU5fSEFTSF9TSVpFCSgxJmx0OyZsdDtNQUNWTEFOX0hBU0hfQklUUykKICNkZWZpbmUgTUFDVkxBTl9ERUZBVUxUX0JDX1FVRVVFX0xFTgkxMDAwCiYjNDM7I2RlZmluZSBNQUNWTEFOX01BWF9CQ19RVUVVRV9MRU4JNDA5NgogCiAjZGVmaW5lIE1BQ1ZMQU5fRl9QQVNTVEhSVQkxCiAjZGVmaW5lIE1BQ1ZMQU5fRl9BRERSQ0hBTkdFCTIKQEAgLTE3NTUsNyAmIzQzOzE3NTYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgbWFjdmxhbl9wb2xpY3lbSUZMQV9NQUNWTEFOX01BWCAmIzQzOyAxXSA9IHsKIAlbSUZMQV9NQUNWTEFOX01BQ0FERFJdID0geyAudHlwZSA9IE5MQV9CSU5BUlksIC5sZW4gPSBNQVhfQUREUl9MRU4gfSwKIAlbSUZMQV9NQUNWTEFOX01BQ0FERFJfREFUQV0gPSB7IC50eXBlID0gTkxBX05FU1RFRCB9LAogCVtJRkxBX01BQ1ZMQU5fTUFDQUREUl9DT1VOVF0gPSB7IC50eXBlID0gTkxBX1UzMiB9LAotCVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sCiYjNDM7CVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSA9IE5MQV9QT0xJQ1lfTUFYKE5MQV9VMzIsIE1BQ1ZMQU5fTUFYX0JDX1FVRVVFX0xFTiksCiAJW0lGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5fVVNFRF0gPSB7IC50eXBlID0gTkxBX1JFSkVDVCB9LAogCVtJRkxBX01BQ1ZMQU5fQkNfQ1VUT0ZGXSA9IHsgLnR5cGUgPSBOTEFfUzMyIH0sCiB9Owo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNzowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDg1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTUFDVkxBTiBCcm9hZGNhc3QgUXVldWUgTGVuZ3RoIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvbWFjdmxhbi5jYC4gSXQgc2VlbXMgdGhleSYjMzk7dmUgbW9kaWZpZWQgdGhlIG5ldGxpbmsgcG9saWN5IHJlbGF0ZWQgdG8gYElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5gLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgcHJldmlvdXNseSwgdGhpcyBhdHRyaWJ1dGUgd2FzIGRlZmluZWQgc2ltcGx5IGFzIGFuIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIChgTkxBX1UzMmApLiBOb3csIGl0JiMzOTtzIGJlZW4gdGlnaHRlbmVkIHVwIHdpdGggYE5MQV9QT0xJQ1lfTUFYKE5MQV9VMzIsIE1BQ1ZMQU5fTUFYX0JDX1FVRVVFX0xFTilgLCBhbmQgdGhlIG1heGltdW0gdmFsdWUsIGBNQUNWTEFOX01BWF9CQ19RVUVVRV9MRU5gLCBpcyBkZWZpbmVkIGFzIDQwOTYuCgpUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGNoYW5nZS4gV2hhdCYjMzk7cyBoYXBwZW5pbmcgaXMgdGhhdCB0aGUgc3lzdGVtIHdpbGwgbm93ICp2YWxpZGF0ZSogYW55IGF0dGVtcHQgdG8gc2V0IHRoZSBicm9hZGNhc3QgcXVldWUgbGVuZ3RoIHRocm91Z2ggbmV0bGluay4gQmVmb3JlLCBhIHVzZXIgY291bGQgdGhlb3JldGljYWxseSBzZXQgaXQgdG8gYW55IDMyLWJpdCB2YWx1ZS4gTm93LCBhbnkgdmFsdWUgZXhjZWVkaW5nIDQwOTYgd2lsbCBiZSByZWplY3RlZCBieSB0aGUgbmV0bGluayBwb2xpY3kgdmFsaWRhdGlvbiwgcHJldmVudGluZyB0aGF0IGNoYW5nZS4gVGhpcyBpcyBhIHNlbnNpYmxlIHJlc3RyaWN0aW9uIHRvIGltcG9zZSwgbGlrZWx5IHRvIHByZXZlbnQgbWVtb3J5IGV4aGF1c3Rpb24gb3Igb3RoZXIgcG90ZW50aWFsIGlzc3Vlcy4KCkxldCBtZSBqdXN0IHF1aWNrbHkgY2hlY2sgd2hlcmUgdGhpcyBgbWFjdmxhbl9wb2xpY3lgIGlzIGJlaW5nIHVzZWQgZWxzZXdoZXJlIGluIHRoZSBkcml2ZXIsIGp1c3QgdG8gbWFrZSBzdXJlIHRoaXMgbW9kaWZpY2F0aW9uIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgdW5mb3Jlc2VlbiBzaWRlIGVmZmVjdHMgb3IgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBvdGhlciBwYXJ0cyBvZiB0aGUgY29kZWJhc2UuIEl0JiMzOTtzIGdvb2QgdG8ga2VlcCB0cmFjayBvZiBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDc6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjdmxhbl9wb2xpY3kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE3MTM9c3RhdGljIGludCBtYWN2bGFuX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzUxLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3NTI6c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IG1hY3ZsYW5fcG9saWN5W0lGTEFfTUFDVkxBTl9NQVggJiM0MzsgMV0gPSB7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc1My1cdFtJRkxBX01BQ1ZMQU5fTU9ERV0gID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTc2ND1pbnQgbWFjdmxhbl9saW5rX3JlZ2lzdGVyKHN0cnVjdCBydG5sX2xpbmtfb3BzICpvcHMpXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE3NjgtXHRvcHMtXHUwMDNlbWF4dHlwZVx0XHQ9IElGTEFfTUFDVkxBTl9NQVg7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTc2OTpcdG9wcy1cdTAwM2Vwb2xpY3lcdFx0PSBtYWN2bGFuX3BvbGljeTtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzcwLVx0b3BzLVx1MDAzZWNoYW5nZWxpbmtcdFx0PSBtYWN2bGFuX2NoYW5nZWxpbms7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDc6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg5MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBtYWN2bGFuIExpbmsgUmVnaXN0cmF0aW9uIFBvbGljeSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoaXMgcG9saWN5IHdvcmtzIHdpdGhpbiB0aGUgYG1hY3ZsYW5fbGlua19yZWdpc3RlcmAgY29udGV4dCwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgYHJ0bmxfbGlua19vcHNgLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGhvbmUgaW4gb24gZWl0aGVyIHRoZSBgbWFjdmxhbl9jaGFuZ2VsaW5rYCBvciB0aGUgYG1hY3ZsYW5fbmV3bGlua2AgZnVuY3Rpb25zLCBzaW5jZSB0aGVzZSBhcmUgdGhlIHR5cGljYWwgcG9pbnRzIG9mIGludGVyZmFjZSB3aGVyZSBjaGFuZ2VzIG9yIG5ldyBsaW5rIGNyZWF0aW9uIHdvdWxkIGJlIGhhbmRsZWQuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIHN0YXJ0IGJ5IGNhcmVmdWxseSBleGFtaW5pbmcgdGhlIGxvZ2ljIHdpdGhpbiBib3RoIGBtYWN2bGFuX2NoYW5nZWxpbmtgIGFuZCBgbWFjdmxhbl9uZXdsaW5rYCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcG9saWN5IGlzIGltcGxlbWVudGVkIGFuZCBlbmZvcmNlZCBhdCB0aG9zZSBjcnVjaWFsIGp1bmN0dXJlcy4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHBvbGljeSBkZWNpc2lvbnMgYXJlIG1hZGUgd2l0aGluIHRob3NlIGZ1bmN0aW9uIGNhbGxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA3OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3ZsYW5fY2hhbmdlbGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmM9MTMyMz1zdGF0aWMgaW50IG1hY3ZsYW5fdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNDAyLSAqL1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE0MDM6c3RhdGljIGludCBtYWN2bGFuX2NoYW5nZWxpbmtfc291cmNlcyhzdHJ1Y3QgbWFjdmxhbl9kZXYgKnZsYW4sIHUzMiBtb2RlLFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE0MDQtXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmxhdHRyICpkYXRhW10pXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE0NTk9aW50IG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTU0MS1cdFx0bWFjbW9kZSA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX01BQ0FERFJfTU9ERV0pO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE1NDI6XHRcdGVyciA9IG1hY3ZsYW5fY2hhbmdlbGlua19zb3VyY2VzKHZsYW4sIG1hY21vZGUsIGRhdGEpO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE1NDMtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE2MTE9RVhQT1JUX1NZTUJPTF9HUEwobWFjdmxhbl9kZWxsaW5rKTtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjEyLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE2MTM6c3RhdGljIGludCBtYWN2bGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjE0LVx0XHRcdCAgICAgIHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTY2Ni1cdFx0bWFjbW9kZSA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX01BQ0FERFJfTU9ERV0pO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE2Njc6XHRcdHJldCA9IG1hY3ZsYW5fY2hhbmdlbGlua19zb3VyY2VzKHZsYW4sIG1hY21vZGUsIGRhdGEpO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2NjgtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE3NjQ9aW50IG1hY3ZsYW5fbGlua19yZWdpc3RlcihzdHJ1Y3QgcnRubF9saW5rX29wcyAqb3BzKVxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzY5LVx0b3BzLVx1MDAzZXBvbGljeVx0XHQ9IG1hY3ZsYW5fcG9saWN5O1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3NzA6XHRvcHMtXHUwMDNlY2hhbmdlbGlua1x0XHQ9IG1hY3ZsYW5fY2hhbmdlbGluaztcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzcxLVx0b3BzLVx1MDAzZWdldF9zaXplXHRcdD0gbWFjdmxhbl9nZXRfc2l6ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNzowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzYxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIE1hY3ZsYW4gQ3JlYXRpb24gTG9naWMqKgoKT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIG5ldyBNQUNWTEFOIGludGVyZmFjZSBpcyBiZWluZyBjcmVhdGVkLiBHaXZlbiB0aGUgZnVuY3Rpb24gbmFtZXMsIG15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCB0aGUgY29yZSBsb2dpYyByZXNpZGVzIHdpdGhpbiBlaXRoZXIgYG1hY3ZsYW5fbmV3bGlua2Agb3IsIHBvdGVudGlhbGx5LCBhIHNoYXJlZCBmdW5jdGlvbiB3aXRoaW4gYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBvbmUgaXMgdGhlIGVudHJ5IHBvaW50LCBvciBpZiBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AgaXMgYSBzaGFyZWQgZnVuY3Rpb24gY2FsbGVkIGJ5IG90aGVyIHZhcmlhdGlvbnMuIEl0JiMzOTtzIHRpbWUgdG8gY2hlY2sgdGhlIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGlmIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBpcyBvbmx5IGNhbGxlZCBieSBgbWFjdmxhbl9uZXdsaW5rYCwgb3IgaWYgaXQgbWF5IGJlIGludm9rZWQgdmlhIG90aGVyIHBhdGh3YXlzLiBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHBhc3NlZCB0byBkZXRlcm1pbmUgdGhlIHNwZWNpZmljIE1BQ1ZMQU4gdHlwZSBhcyB3ZWxsIGFzIGFueSBrZXkgaW5pdGlhbGl6YXRpb24gc3RlcHMuIExldCYjMzk7cyBzZWUgd2hhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIHVwIHRvIHVuZGVyIHRoZSBob29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA3OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3ZsYW5fbmV3bGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmM9MTU5MT1FWFBPUlRfU1lNQk9MX0dQTChtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKTtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNTkyLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE1OTM6c3RhdGljIGludCBtYWN2bGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNTk0LVx0XHRcdCAgIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE3ODM9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIG1hY3ZsYW5fbGlua19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE3ODUtXHQuc2V0dXBcdFx0PSBtYWN2bGFuX3NldHVwLFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3ODY6XHQubmV3bGlua1x0PSBtYWN2bGFuX25ld2xpbmssXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc4Ny1cdC5kZWxsaW5rXHQ9IG1hY3ZsYW5fZGVsbGluayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjcxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyB0aGUgTWFjdmxhbiBQb2xpY3kgTW9kaWZpY2F0aW9uKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgdG91Y2hpbmcgYG1hY3ZsYW5fcG9saWN5YC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBgbWFjdmxhbl9saW5rX3JlZ2lzdGVyYCBhcyBhbiBhcmVhIG9mIGludGVyZXN0LCBiZWNhdXNlIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIHBvbGljeSBpcyBhY3R1YWxseSAqdXNlZCosIHJpZ2h0PyBNYWtlcyBwZXJmZWN0IHNlbnNlLiBNeSBicmFpbiYjMzk7cyBhbHJlYWR5IHpvb21pbmcgaW4gb24gdGhhdCBmdW5jdGlvbi4KCk5vdywgd2hlcmUgZG8gdGhlIGNoYW5nZXMgKnJlYWxseSogbWF0dGVyPyBQcm9iYWJseSBpbiB0aGUgcm91dGluZXMgdGhhdCAqY3JlYXRlKiBhbmQgKm1vZGlmeSogdGhlIE1hY3ZsYW4gbGlua3MgdGhlbXNlbHZlcy4gU3BlY2lmaWNhbGx5LCB0aGF0IG1lYW5zIGBtYWN2bGFuX25ld2xpbmtgIGZvciB0aGUgaW5pdGlhbCBzZXR1cCwgYW5kIHRoZW4gYG1hY3ZsYW5fY2hhbmdlbGlua2AgdG8gaGFuZGxlIGFueSBhbHRlcmF0aW9ucyBsYXRlciBvbi4gVGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSB3YW50IHRvIGRyaWxsIGludG8uIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHBvbGljeSBpbXBhY3RzIHRob3NlIG9wZXJhdGlvbnMuCgpBbmQgeW91IGtub3csIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGFsc28gdGFrZSBhIHF1aWNrIGxvb2sgYXQgYG1hY3ZsYW5fdmFsaWRhdGVgLiBJdCYjMzk7cyBwb3NzaWJsZSB0aGUgcG9saWN5IGNoYW5nZXMgbmVjZXNzaXRhdGUgc29tZSBhZGp1c3RtZW50cyB0byB0aGUgdmFsaWRhdGlvbiBsb2dpYywgdG8gZW5zdXJlIHRoaW5ncyBzdGlsbCBtYWtlIHNlbnNlIGFuZCBub3RoaW5nIGJyZWFrcy4gR290dGEgY2F0Y2ggdGhvc2UgZWRnZSBjYXNlcyBiZWZvcmUgdGhleSBiaXRlIHVzLiBTbywgeWVhaCwgdGhvc2UgYXJlIHRoZSBrZXkgYXJlYXMgdG8gaW52ZXN0aWdhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA3OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3ZsYW5fdmFsaWRhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jPTEyODY9c3RhdGljIHZvaWQgbWFjdmxhbl9wb3J0X2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTMyMi1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxMzIzOnN0YXRpYyBpbnQgbWFjdmxhbl92YWxpZGF0ZShzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTMyNC1cdFx0XHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNzY0PWludCBtYWN2bGFuX2xpbmtfcmVnaXN0ZXIoc3RydWN0IHJ0bmxfbGlua19vcHMgKm9wcylcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc2Ni1cdC8qIGNvbW1vbiBmaWVsZHMgKi9cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNzY3Olx0b3BzLVx1MDAzZXZhbGlkYXRlXHRcdD0gbWFjdmxhbl92YWxpZGF0ZTtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzY4LVx0b3BzLVx1MDAzZW1heHR5cGVcdFx0PSBJRkxBX01BQ1ZMQU5fTUFYO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwNzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODY2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqTWFjdmxhbiBDb25maWd1cmF0aW9uIFZlcmlmaWNhdGlvbioqCgpSaWdodCwgbGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGBNQUNWTEFOYCBjb25maWcgb3B0aW9uIGlzIGJlaGF2aW5nIGFzIEkgZXhwZWN0LiBJdCYjMzk7cyB1c3VhbGx5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IEkmIzM5O3ZlIGxlYXJuZWQgbmV2ZXIgdG8gYXNzdW1lIGFueXRoaW5nLCBlc3BlY2lhbGx5IHdoZW4gaXQgY29tZXMgdG8gbmV0d29yayBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBNQUNWTEFOYCBpcyB0aGUgYWN0dWFsIGtleSBiZWluZyB1c2VkIGZvciB0aGUgbWFjdmxhbiBzZXR1cDsgYSBzaWxseSB0eXBvIG9yIGFuIG91dGRhdGVkIGRvY3VtZW50IGNvdWxkIGxlYWQgdG8gd2FzdGVkIHRpbWUgZGVidWdnaW5nIGxhdGVyLiBMZXQgbWUgbWFrZSBzdXJlIHRoYXQgYE1BQ1ZMQU5gIGlzIGluZGVlZCB0aGUgYWN0aXZlIGNvbmZpZyBwYXJhbWV0ZXIsIGp1c3QgdG8gYXZvaWQgYW55IHVuZXhwZWN0ZWQgYmVoYXZpb3IgZG93biB0aGUgbGluZS4gSSBrbm93IHRoZSBiYXNpY3MsIGJ1dCBpdCYjMzk7cyBhbHdheXMgd29ydGggY29uZmlybWluZyB0aGUgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDc6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQ1ZMQU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz0xNjM9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy0xNjQtXG5kcml2ZXJzL25ldC9LY29uZmlnOjE2NTpjb25maWcgTUFDVkxBTlxuZHJpdmVycy9uZXQvS2NvbmZpZy0xNjYtXHR0cmlzdGF0ZSBcJiMzNDtNQUMtVkxBTiBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA3OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNTMKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZywgY29uc2lkZXJpbmcgSSYjMzk7bSBzZWVpbmcgdGhpcyBhcyBhIGZlbGxvdyBleHBlcnQ6CgoqKk1BQ1ZMQU4gQ29uZmlndXJhdGlvbiBhbmQgUXVldWUgTGVuZ3RoIExpbWl0cyoqCgpBbHJpZ2h0LCBzbyB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIHRoZSBgTUFDVkxBTmAgY29uZmlndXJhdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoaXMgcGF0Y2gsIGFuZCBob3cgaXQgZnVuY3Rpb25hbGx5IGFsdGVycyB0aGUgc3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIHBsYWNpbmcgYSBoYXJkIGxpbWl0IG9uIGBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOYCwgc2V0dGluZyBpdCB0byA0MDk2LiBUaGF0JiMzOTtzIHRoZSBjcml0aWNhbCBwaWVjZS4gVGhpcyBhdHRyaWJ1dGUgaXMgbW9kaWZpYWJsZSB0aHJvdWdoIG5ldGxpbmsgY2FsbHMsIG1lYW5pbmcgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgY2hhbmdlcyB3ZSBtYWtlIGR1cmluZyB0aGUgY3JlYXRpb24gb3IgbW9kaWZpY2F0aW9uIG9mIGEgbWFjdmxhbiBpbnRlcmZhY2UuIFRoZXJlZm9yZSwgdGhlIGltcG9ydGFudCBmdW5jdGlvbnMgdG8gcmV2aWV3IGFyZSBgbWFjdmxhbl9uZXdsaW5rYCBhbmQgYG1hY3ZsYW5fY2hhbmdlbGlua2AsIGFzIHRoZXNlIGFyZSB0aGUgb25lcyB0aGF0IGhhbmRsZSB0aGUgbmV0bGluayBpbnRlcmFjdGlvbnMgd2l0aCB0aGF0IHNwZWNpZmljIGF0dHJpYnV0ZS4gTm93LCBiZWZvcmUgSSBtb3ZlIG9uLCBJJiMzOTtkIGJldHRlciBiZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGZ1bmN0aW9ucyB0aGF0IHV0aWxpemUgYElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5gLiBHb3R0YSBjb3ZlciBhbGwgYmFzZXMsIGNhbiYjMzk7dCBhc3N1bWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA3OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0lGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE0NTk9aW50IG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTU0Ny1cdHZsYW4tXHUwMDNlYmNfcXVldWVfbGVuX3JlcSA9IE1BQ1ZMQU5fREVGQVVMVF9CQ19RVUVVRV9MRU47XG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTU0ODpcdGlmIChkYXRhIFx1MDAyNlx1MDAyNiBkYXRhW0lGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5dKVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE1NDk6XHRcdHZsYW4tXHUwMDNlYmNfcXVldWVfbGVuX3JlcSA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0pO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE1NTAtXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE2MTM9c3RhdGljIGludCBtYWN2bGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTY1MS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjUyOlx0aWYgKGRhdGEgXHUwMDI2XHUwMDI2IGRhdGFbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0pIHtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjUzOlx0XHR2bGFuLVx1MDAzZWJjX3F1ZXVlX2xlbl9yZXEgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5dKTtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjU0LVx0XHR1cGRhdGVfcG9ydF9iY19xdWV1ZV9sZW4odmxhbi1cdTAwM2Vwb3J0KTtcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTY4Mj1zdGF0aWMgc2l6ZV90IG1hY3ZsYW5fZ2V0X3NpemUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTY5MC1cdFx0JiM0MzsgbWFjdmxhbl9nZXRfc2l6ZV9tYWModmxhbikgLyogSUZMQV9NQUNWTEFOX01BQ0FERFIgKi9cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjkxOlx0XHQmIzQzOyBubGFfdG90YWxfc2l6ZSg0KSAvKiBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOICovXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTY5MjpcdFx0JiM0MzsgbmxhX3RvdGFsX3NpemUoNCkgLyogSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl9VU0VEICovXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTY5My1cdFx0JiM0MzsgbmxhX3RvdGFsX3NpemUoNCkgLyogSUZMQV9NQUNWTEFOX0JDX0NVVE9GRiAqL1xuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNzEzPXN0YXRpYyBpbnQgbWFjdmxhbl9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTczNy1cdH1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNzM4Olx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTiwgdmxhbi1cdTAwM2ViY19xdWV1ZV9sZW5fcmVxKSlcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzM5LVx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNzQwOlx0aWYgKG5sYV9wdXRfdTMyKHNrYiwgSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl9VU0VELFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE3NDEtXHRcdFx0UkVBRF9PTkNFKHBvcnQtXHUwMDNlYmNfcXVldWVfbGVuX3VzZWQpKSlcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTc1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgbWFjdmxhbl9wb2xpY3lbSUZMQV9NQUNWTEFOX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc1OC1cdFtJRkxBX01BQ1ZMQU5fTUFDQUREUl9DT1VOVF0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3NTk6XHRbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTMyLCBNQUNWTEFOX01BWF9CQ19RVUVVRV9MRU4pLFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3NjA6XHRbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl9VU0VEXSA9IHsgLnR5cGUgPSBOTEFfUkVKRUNUIH0sXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc2MS1cdFtJRkxBX01BQ1ZMQU5fQkNfQ1VUT0ZGXSA9IHsgLnR5cGUgPSBOTEFfUzMyIH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA3OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1NDkKCQkJCQkJCW91dHB1dDogMTExCgkJCQkJCQl0aG91Z2h0czogMTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1BQ1ZMQU4gTmV0bGluayBQb2xpY3kgTW9kaWZpY2F0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlJiMzOTtyZSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBhbHRlcnMgdGhlIG5ldGxpbmsgcG9saWN5IGZvciBNQUNWTEFOIGludGVyZmFjZXMuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgcGxhY2luZyBhIGNhcCBvbiB0aGUgYElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5gIHBhcmFtZXRlciDigJMgbGltaXRpbmcgaXQgdG8gNDA5Ni4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkZWZpbml0ZWx5IHNvbWV0aGluZyB0byBwYXkgYXR0ZW50aW9uIHRvLiBJdCBhZmZlY3RzIGhvdyBNQUNWTEFOIGludGVyZmFjZXMgYXJlIGNyZWF0ZWQgYW5kIG1vZGlmaWVkIHVzaW5nIG5ldGxpbmssIHNvIHdlIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgY29kZSBwYXRocy4KCkkmIzM5O3ZlIGlkZW50aWZpZWQgYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgIGFuZCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCBhcyB0aGUga2V5IHBsYXllcnMgaGVyZSwgd2l0aCBgbWFjdmxhbl9uZXdsaW5rYCBjYWxsaW5nIHRoZSBjb21tb24gZnVuY3Rpb24uIFRoZXJlZm9yZSwgYG1hY3ZsYW5fbmV3bGlua2AgYW5kIGBtYWN2bGFuX2NoYW5nZWxpbmtgIHNlZW0gbGlrZSB0aGUgb2J2aW91cyBmb2N1cyBzeW1ib2xzLiBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gcHJpb3JpdGl6ZSB0aG9zZS4KCk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgTUFDVkxBTmAgaXMgdGhlIG9ubHkgY29uZmlnIGJlaW5nIHRvdWNoZWQgaGVyZS4KCkdpdmVuIHRoaXMgYW5hbHlzaXMsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgdGhpcyBjaGFuZ2Ugd2FycmFudHMgZnV6emluZy4gSSYjMzk7bGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYCwgbWFrZSBgbWFjdmxhbl9uZXdsaW5rYCBhbmQgYG1hY3ZsYW5fY2hhbmdlbGlua2AgdGhlIGBGb2N1c1N5bWJvbHNgLCBhbmQgZW5hYmxlIHRoZSBgTUFDVkxBTmAgY29uZmlndXJhdGlvbi4gVGhhdCBzaG91bGQgZ2l2ZSB1cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGludmVzdGlnYXRpbmcgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgbGltaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDA3OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUNWTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFjdmxhbl9uZXdsaW5rJiMzNDssCiAgICAmIzM0O21hY3ZsYW5fY2hhbmdlbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0bGluayBwb2xpY3kgZm9yIE1BQ1ZMQU4gaW50ZXJmYWNlcyB0byByZXN0cmljdCB0aGUgbWF4aW11bSB2YWx1ZSBvZiBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOIHRvIDQwOTYuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgaG93IE1BQ1ZMQU4gaW50ZXJmYWNlcyBhcmUgY3JlYXRlZCBhbmQgbW9kaWZpZWQgdmlhIG5ldGxpbmsuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1ZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWN2bGFuX25ld2xpbmsmIzM0OywKICAgICYjMzQ7bWFjdmxhbl9jaGFuZ2VsaW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRsaW5rIHBvbGljeSBmb3IgTUFDVkxBTiBpbnRlcmZhY2VzIHRvIHJlc3RyaWN0IHRoZSBtYXhpbXVtIHZhbHVlIG9mIElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU4gdG8gNDA5Ni4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBob3cgTUFDVkxBTiBpbnRlcmZhY2VzIGFyZSBjcmVhdGVkIGFuZCBtb2RpZmllZCB2aWEgbmV0bGluay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA3OjAyOjQzLjQyODQxMTQ1MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4MjI2MDg4NTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQ1ZMQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWN2bGFuX25ld2xpbmtcIixcbiAgICBcIm1hY3ZsYW5fY2hhbmdlbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRsaW5rIHBvbGljeSBmb3IgTUFDVkxBTiBpbnRlcmZhY2VzIHRvIHJlc3RyaWN0IHRoZSBtYXhpbXVtIHZhbHVlIG9mIElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU4gdG8gNDA5Ni4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBob3cgTUFDVkxBTiBpbnRlcmZhY2VzIGFyZSBjcmVhdGVkIGFuZCBtb2RpZmllZCB2aWEgbmV0bGluay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDc6MDI6NDMuNDI4NDE4MzkyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDEwNjQyNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiMGVlNGM0YWNiMDhiM2RhZmI2NjZkNzkzNzcxYmZmNmQ3OTg5MDQ5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDcgMDc6MDI6NDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jIGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jXFxuaW5kZXggYzQwZmEzMzE4MzZiYjIuLmQ0Y2VkZTYzOTNiMDY2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xcbkBAIC0zNyw2ICszNyw3IEBAXFxuICNkZWZpbmUgTUFDVkxBTl9IQVNIX0JJVFNcXHQ4XFxuICNkZWZpbmUgTUFDVkxBTl9IQVNIX1NJWkVcXHQoMVxcdTAwM2NcXHUwMDNjTUFDVkxBTl9IQVNIX0JJVFMpXFxuICNkZWZpbmUgTUFDVkxBTl9ERUZBVUxUX0JDX1FVRVVFX0xFTlxcdDEwMDBcXG4rI2RlZmluZSBNQUNWTEFOX01BWF9CQ19RVUVVRV9MRU5cXHQ0MDk2XFxuIFxcbiAjZGVmaW5lIE1BQ1ZMQU5fRl9QQVNTVEhSVVxcdDFcXG4gI2RlZmluZSBNQUNWTEFOX0ZfQUREUkNIQU5HRVxcdDJcXG5AQCAtMTc1NSw3ICsxNzU2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IG1hY3ZsYW5fcG9saWN5W0lGTEFfTUFDVkxBTl9NQVggKyAxXSA9IHtcXG4gXFx0W0lGTEFfTUFDVkxBTl9NQUNBRERSXSA9IHsgLnR5cGUgPSBOTEFfQklOQVJZLCAubGVuID0gTUFYX0FERFJfTEVOIH0sXFxuIFxcdFtJRkxBX01BQ1ZMQU5fTUFDQUREUl9EQVRBXSA9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXFxuIFxcdFtJRkxBX01BQ1ZMQU5fTUFDQUREUl9DT1VOVF0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbi1cXHRbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbitcXHRbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTMyLCBNQUNWTEFOX01BWF9CQ19RVUVVRV9MRU4pLFxcbiBcXHRbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl9VU0VEXSA9IHsgLnR5cGUgPSBOTEFfUkVKRUNUIH0sXFxuIFxcdFtJRkxBX01BQ1ZMQU5fQkNfQ1VUT0ZGXSA9IHsgLnR5cGUgPSBOTEFfUzMyIH0sXFxuIH07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA3OjAyOjQ0LjEzMDM5MDkzNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc1MjQwOTQ0NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDVkxBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY3ZsYW5fbmV3bGlua1wiLFxuICAgIFwibWFjdmxhbl9jaGFuZ2VsaW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGxpbmsgcG9saWN5IGZvciBNQUNWTEFOIGludGVyZmFjZXMgdG8gcmVzdHJpY3QgdGhlIG1heGltdW0gdmFsdWUgb2YgSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTiB0byA0MDk2LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGhvdyBNQUNWTEFOIGludGVyZmFjZXMgYXJlIGNyZWF0ZWQgYW5kIG1vZGlmaWVkIHZpYSBuZXRsaW5rLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGIwZWU0YzRhY2IwOGIzZGFmYjY2NmQ3OTM3NzFiZmY2ZDc5ODkwNDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCA3IDA3OjAyOjQxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jIGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jXG5pbmRleCBjNDBmYTMzMTgzNmJiMi4uZDRjZWRlNjM5M2IwNjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tYWN2bGFuLmNcbisrKyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xuQEAgLTM3LDYgKzM3LDcgQEBcbiAjZGVmaW5lIE1BQ1ZMQU5fSEFTSF9CSVRTXHQ4XG4gI2RlZmluZSBNQUNWTEFOX0hBU0hfU0laRVx0KDFcdTAwM2NcdTAwM2NNQUNWTEFOX0hBU0hfQklUUylcbiAjZGVmaW5lIE1BQ1ZMQU5fREVGQVVMVF9CQ19RVUVVRV9MRU5cdDEwMDBcbisjZGVmaW5lIE1BQ1ZMQU5fTUFYX0JDX1FVRVVFX0xFTlx0NDA5NlxuIFxuICNkZWZpbmUgTUFDVkxBTl9GX1BBU1NUSFJVXHQxXG4gI2RlZmluZSBNQUNWTEFOX0ZfQUREUkNIQU5HRVx0MlxuQEAgLTE3NTUsNyArMTc1Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBtYWN2bGFuX3BvbGljeVtJRkxBX01BQ1ZMQU5fTUFYICsgMV0gPSB7XG4gXHRbSUZMQV9NQUNWTEFOX01BQ0FERFJdID0geyAudHlwZSA9IE5MQV9CSU5BUlksIC5sZW4gPSBNQVhfQUREUl9MRU4gfSxcbiBcdFtJRkxBX01BQ1ZMQU5fTUFDQUREUl9EQVRBXSA9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXG4gXHRbSUZMQV9NQUNWTEFOX01BQ0FERFJfQ09VTlRdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbi1cdFtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG4rXHRbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTMyLCBNQUNWTEFOX01BWF9CQ19RVUVVRV9MRU4pLFxuIFx0W0lGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5fVVNFRF0gPSB7IC50eXBlID0gTkxBX1JFSkVDVCB9LFxuIFx0W0lGTEFfTUFDVkxBTl9CQ19DVVRPRkZdID0geyAudHlwZSA9IE5MQV9TMzIgfSxcbiB9O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDc6MDI6NDQuMTMwMzkzMDc0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTE0Nzc5OTc4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1BQ1ZMQU4gQnJvYWRjYXN0IFF1ZXVlIExlbmd0aCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9tYWN2bGFuLmNgLiBJdCBzZWVtcyB0aGV5J3ZlIG1vZGlmaWVkIHRoZSBuZXRsaW5rIHBvbGljeSByZWxhdGVkIHRvIGBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOYC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHByZXZpb3VzbHksIHRoaXMgYXR0cmlidXRlIHdhcyBkZWZpbmVkIHNpbXBseSBhcyBhbiB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlciAoYE5MQV9VMzJgKS4gTm93LCBpdCdzIGJlZW4gdGlnaHRlbmVkIHVwIHdpdGggYE5MQV9QT0xJQ1lfTUFYKE5MQV9VMzIsIE1BQ1ZMQU5fTUFYX0JDX1FVRVVFX0xFTilgLCBhbmQgdGhlIG1heGltdW0gdmFsdWUsIGBNQUNWTEFOX01BWF9CQ19RVUVVRV9MRU5gLCBpcyBkZWZpbmVkIGFzIDQwOTYuXG5cblRoaXMgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgY2hhbmdlLiBXaGF0J3MgaGFwcGVuaW5nIGlzIHRoYXQgdGhlIHN5c3RlbSB3aWxsIG5vdyAqdmFsaWRhdGUqIGFueSBhdHRlbXB0IHRvIHNldCB0aGUgYnJvYWRjYXN0IHF1ZXVlIGxlbmd0aCB0aHJvdWdoIG5ldGxpbmsuIEJlZm9yZSwgYSB1c2VyIGNvdWxkIHRoZW9yZXRpY2FsbHkgc2V0IGl0IHRvIGFueSAzMi1iaXQgdmFsdWUuIE5vdywgYW55IHZhbHVlIGV4Y2VlZGluZyA0MDk2IHdpbGwgYmUgcmVqZWN0ZWQgYnkgdGhlIG5ldGxpbmsgcG9saWN5IHZhbGlkYXRpb24sIHByZXZlbnRpbmcgdGhhdCBjaGFuZ2UuIFRoaXMgaXMgYSBzZW5zaWJsZSByZXN0cmljdGlvbiB0byBpbXBvc2UsIGxpa2VseSB0byBwcmV2ZW50IG1lbW9yeSBleGhhdXN0aW9uIG9yIG90aGVyIHBvdGVudGlhbCBpc3N1ZXMuXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgY2hlY2sgd2hlcmUgdGhpcyBgbWFjdmxhbl9wb2xpY3lgIGlzIGJlaW5nIHVzZWQgZWxzZXdoZXJlIGluIHRoZSBkcml2ZXIsIGp1c3QgdG8gbWFrZSBzdXJlIHRoaXMgbW9kaWZpY2F0aW9uIGRvZXNuJ3QgaW50cm9kdWNlIGFueSB1bmZvcmVzZWVuIHNpZGUgZWZmZWN0cyBvciBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlYmFzZS4gSXQncyBnb29kIHRvIGtlZXAgdHJhY2sgb2YgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDg1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDc6MDI6NTMuMjc4MTk1NTE2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzOTUwNDg5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWN2bGFuX3BvbGljeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE3MTM9c3RhdGljIGludCBtYWN2bGFuX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE3NTEtXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3NTI6c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IG1hY3ZsYW5fcG9saWN5W0lGTEFfTUFDVkxBTl9NQVggKyAxXSA9IHtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc1My1cXHRbSUZMQV9NQUNWTEFOX01PREVdICA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTc2ND1pbnQgbWFjdmxhbl9saW5rX3JlZ2lzdGVyKHN0cnVjdCBydG5sX2xpbmtfb3BzICpvcHMpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc2OC1cXHRvcHMtXFx1MDAzZW1heHR5cGVcXHRcXHQ9IElGTEFfTUFDVkxBTl9NQVg7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3Njk6XFx0b3BzLVxcdTAwM2Vwb2xpY3lcXHRcXHQ9IG1hY3ZsYW5fcG9saWN5O1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzcwLVxcdG9wcy1cXHUwMDNlY2hhbmdlbGlua1xcdFxcdD0gbWFjdmxhbl9jaGFuZ2VsaW5rO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNzowMjo1My40MTc3MDY0ODVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTA2NTE0NTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBtYWN2bGFuIExpbmsgUmVnaXN0cmF0aW9uIFBvbGljeSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyB0aGlzIHBvbGljeSB3b3JrcyB3aXRoaW4gdGhlIGBtYWN2bGFuX2xpbmtfcmVnaXN0ZXJgIGNvbnRleHQsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIGBydG5sX2xpbmtfb3BzYC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBob25lIGluIG9uIGVpdGhlciB0aGUgYG1hY3ZsYW5fY2hhbmdlbGlua2Agb3IgdGhlIGBtYWN2bGFuX25ld2xpbmtgIGZ1bmN0aW9ucywgc2luY2UgdGhlc2UgYXJlIHRoZSB0eXBpY2FsIHBvaW50cyBvZiBpbnRlcmZhY2Ugd2hlcmUgY2hhbmdlcyBvciBuZXcgbGluayBjcmVhdGlvbiB3b3VsZCBiZSBoYW5kbGVkLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBzdGFydCBieSBjYXJlZnVsbHkgZXhhbWluaW5nIHRoZSBsb2dpYyB3aXRoaW4gYm90aCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCBhbmQgYG1hY3ZsYW5fbmV3bGlua2AgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHBvbGljeSBpcyBpbXBsZW1lbnRlZCBhbmQgZW5mb3JjZWQgYXQgdGhvc2UgY3J1Y2lhbCBqdW5jdHVyZXMuIEkgd2FudCB0byBzZWUgaG93IHRoZSBwb2xpY3kgZGVjaXNpb25zIGFyZSBtYWRlIHdpdGhpbiB0aG9zZSBmdW5jdGlvbiBjYWxscy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg5MCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA3OjAyOjU2LjUyNDIyMzk1M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjc2Mzc1NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjdmxhbl9jaGFuZ2VsaW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmM9MTMyMz1zdGF0aWMgaW50IG1hY3ZsYW5fdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE0MDItICovXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE0MDM6c3RhdGljIGludCBtYWN2bGFuX2NoYW5nZWxpbmtfc291cmNlcyhzdHJ1Y3QgbWFjdmxhbl9kZXYgKnZsYW4sIHUzMiBtb2RlLFxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNDA0LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBubGF0dHIgKmRhdGFbXSlcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNDU5PWludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTU0MS1cXHRcXHRtYWNtb2RlID0gbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1ZMQU5fTUFDQUREUl9NT0RFXSk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE1NDI6XFx0XFx0ZXJyID0gbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXModmxhbiwgbWFjbW9kZSwgZGF0YSk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE1NDMtXFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNjExPUVYUE9SVF9TWU1CT0xfR1BMKG1hY3ZsYW5fZGVsbGluayk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2MTItXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE2MTM6c3RhdGljIGludCBtYWN2bGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYxNC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTY2Ni1cXHRcXHRtYWNtb2RlID0gbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1ZMQU5fTUFDQUREUl9NT0RFXSk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE2Njc6XFx0XFx0cmV0ID0gbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXModmxhbiwgbWFjbW9kZSwgZGF0YSk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2NjgtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNzY0PWludCBtYWN2bGFuX2xpbmtfcmVnaXN0ZXIoc3RydWN0IHJ0bmxfbGlua19vcHMgKm9wcylcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzY5LVxcdG9wcy1cXHUwMDNlcG9saWN5XFx0XFx0PSBtYWN2bGFuX3BvbGljeTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTc3MDpcXHRvcHMtXFx1MDAzZWNoYW5nZWxpbmtcXHRcXHQ9IG1hY3ZsYW5fY2hhbmdlbGluaztcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc3MS1cXHRvcHMtXFx1MDAzZWdldF9zaXplXFx0XFx0PSBtYWN2bGFuX2dldF9zaXplO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNzowMjo1Ni44NTE4Njc2MTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxOTI3NTEwNDk4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIE1hY3ZsYW4gQ3JlYXRpb24gTG9naWMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgbmV3IE1BQ1ZMQU4gaW50ZXJmYWNlIGlzIGJlaW5nIGNyZWF0ZWQuIEdpdmVuIHRoZSBmdW5jdGlvbiBuYW1lcywgbXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IHRoZSBjb3JlIGxvZ2ljIHJlc2lkZXMgd2l0aGluIGVpdGhlciBgbWFjdmxhbl9uZXdsaW5rYCBvciwgcG90ZW50aWFsbHksIGEgc2hhcmVkIGZ1bmN0aW9uIHdpdGhpbiBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG9uZSBpcyB0aGUgZW50cnkgcG9pbnQsIG9yIGlmIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBpcyBhIHNoYXJlZCBmdW5jdGlvbiBjYWxsZWQgYnkgb3RoZXIgdmFyaWF0aW9ucy4gSXQncyB0aW1lIHRvIGNoZWNrIHRoZSBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBpZiBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AgaXMgb25seSBjYWxsZWQgYnkgYG1hY3ZsYW5fbmV3bGlua2AsIG9yIGlmIGl0IG1heSBiZSBpbnZva2VkIHZpYSBvdGhlciBwYXRod2F5cy4gSSdsbCBmb2N1cyBvbiB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHBhc3NlZCB0byBkZXRlcm1pbmUgdGhlIHNwZWNpZmljIE1BQ1ZMQU4gdHlwZSBhcyB3ZWxsIGFzIGFueSBrZXkgaW5pdGlhbGl6YXRpb24gc3RlcHMuIExldCdzIHNlZSB3aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmUgdXAgdG8gdW5kZXIgdGhlIGhvb2QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NjEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNzowMzoxNi4xMjY5NzUxNDNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM3NjgyNzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3ZsYW5fbmV3bGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE1OTE9RVhQT1JUX1NZTUJPTF9HUEwobWFjdmxhbl9jb21tb25fbmV3bGluayk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE1OTItXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE1OTM6c3RhdGljIGludCBtYWN2bGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTU5NC1cXHRcXHRcXHQgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE3ODM9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIG1hY3ZsYW5fbGlua19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc4NS1cXHQuc2V0dXBcXHRcXHQ9IG1hY3ZsYW5fc2V0dXAsXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3ODY6XFx0Lm5ld2xpbmtcXHQ9IG1hY3ZsYW5fbmV3bGluayxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc4Ny1cXHQuZGVsbGlua1xcdD0gbWFjdmxhbl9kZWxsaW5rLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNzowMzoxNi4zNjQ2NjM4MzlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODczODU1MzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIHRoZSBNYWN2bGFuIFBvbGljeSBNb2RpZmljYXRpb24qKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0b3VjaGluZyBgbWFjdmxhbl9wb2xpY3lgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGBtYWN2bGFuX2xpbmtfcmVnaXN0ZXJgIGFzIGFuIGFyZWEgb2YgaW50ZXJlc3QsIGJlY2F1c2UgdGhhdCdzIHdoZXJlIHRoZSBwb2xpY3kgaXMgYWN0dWFsbHkgKnVzZWQqLCByaWdodD8gTWFrZXMgcGVyZmVjdCBzZW5zZS4gTXkgYnJhaW4ncyBhbHJlYWR5IHpvb21pbmcgaW4gb24gdGhhdCBmdW5jdGlvbi5cblxuTm93LCB3aGVyZSBkbyB0aGUgY2hhbmdlcyAqcmVhbGx5KiBtYXR0ZXI/IFByb2JhYmx5IGluIHRoZSByb3V0aW5lcyB0aGF0ICpjcmVhdGUqIGFuZCAqbW9kaWZ5KiB0aGUgTWFjdmxhbiBsaW5rcyB0aGVtc2VsdmVzLiBTcGVjaWZpY2FsbHksIHRoYXQgbWVhbnMgYG1hY3ZsYW5fbmV3bGlua2AgZm9yIHRoZSBpbml0aWFsIHNldHVwLCBhbmQgdGhlbiBgbWFjdmxhbl9jaGFuZ2VsaW5rYCB0byBoYW5kbGUgYW55IGFsdGVyYXRpb25zIGxhdGVyIG9uLiBUaG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyBJIHdhbnQgdG8gZHJpbGwgaW50by4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBwb2xpY3kgaW1wYWN0cyB0aG9zZSBvcGVyYXRpb25zLlxuXG5BbmQgeW91IGtub3csIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGFsc28gdGFrZSBhIHF1aWNrIGxvb2sgYXQgYG1hY3ZsYW5fdmFsaWRhdGVgLiBJdCdzIHBvc3NpYmxlIHRoZSBwb2xpY3kgY2hhbmdlcyBuZWNlc3NpdGF0ZSBzb21lIGFkanVzdG1lbnRzIHRvIHRoZSB2YWxpZGF0aW9uIGxvZ2ljLCB0byBlbnN1cmUgdGhpbmdzIHN0aWxsIG1ha2Ugc2Vuc2UgYW5kIG5vdGhpbmcgYnJlYWtzLiBHb3R0YSBjYXRjaCB0aG9zZSBlZGdlIGNhc2VzIGJlZm9yZSB0aGV5IGJpdGUgdXMuIFNvLCB5ZWFoLCB0aG9zZSBhcmUgdGhlIGtleSBhcmVhcyB0byBpbnZlc3RpZ2F0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI3MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA3OjAzOjIwLjIzODUyMTkxNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3MTYwMDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3ZsYW5fdmFsaWRhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xMjg2PXN0YXRpYyB2b2lkIG1hY3ZsYW5fcG9ydF9kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTMyMi1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTMyMzpzdGF0aWMgaW50IG1hY3ZsYW5fdmFsaWRhdGUoc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMzI0LVxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTc2ND1pbnQgbWFjdmxhbl9saW5rX3JlZ2lzdGVyKHN0cnVjdCBydG5sX2xpbmtfb3BzICpvcHMpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc2Ni1cXHQvKiBjb21tb24gZmllbGRzICovXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE3Njc6XFx0b3BzLVxcdTAwM2V2YWxpZGF0ZVxcdFxcdD0gbWFjdmxhbl92YWxpZGF0ZTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc2OC1cXHRvcHMtXFx1MDAzZW1heHR5cGVcXHRcXHQ9IElGTEFfTUFDVkxBTl9NQVg7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA3OjAzOjIwLjQ1NTY4Nzk0NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDQwMzczMTU4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqTWFjdmxhbiBDb25maWd1cmF0aW9uIFZlcmlmaWNhdGlvbioqXG5cblJpZ2h0LCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgYE1BQ1ZMQU5gIGNvbmZpZyBvcHRpb24gaXMgYmVoYXZpbmcgYXMgSSBleHBlY3QuIEl0J3MgdXN1YWxseSBzdHJhaWdodGZvcndhcmQsIGJ1dCBJJ3ZlIGxlYXJuZWQgbmV2ZXIgdG8gYXNzdW1lIGFueXRoaW5nLCBlc3BlY2lhbGx5IHdoZW4gaXQgY29tZXMgdG8gbmV0d29yayBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBNQUNWTEFOYCBpcyB0aGUgYWN0dWFsIGtleSBiZWluZyB1c2VkIGZvciB0aGUgbWFjdmxhbiBzZXR1cDsgYSBzaWxseSB0eXBvIG9yIGFuIG91dGRhdGVkIGRvY3VtZW50IGNvdWxkIGxlYWQgdG8gd2FzdGVkIHRpbWUgZGVidWdnaW5nIGxhdGVyLiBMZXQgbWUgbWFrZSBzdXJlIHRoYXQgYE1BQ1ZMQU5gIGlzIGluZGVlZCB0aGUgYWN0aXZlIGNvbmZpZyBwYXJhbWV0ZXIsIGp1c3QgdG8gYXZvaWQgYW55IHVuZXhwZWN0ZWQgYmVoYXZpb3IgZG93biB0aGUgbGluZS4gSSBrbm93IHRoZSBiYXNpY3MsIGJ1dCBpdCdzIGFsd2F5cyB3b3J0aCBjb25maXJtaW5nIHRoZSBkZXRhaWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODY2LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDc6MDM6NDAuODU5NDIxNDU0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDEzMDU4MjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUNWTEFOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTE2Mz1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3RlYW0vS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnLTE2NC1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjE2NTpjb25maWcgTUFDVkxBTlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTY2LVxcdHRyaXN0YXRlIFxcXCJNQUMtVkxBTiBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNzowMzo0MS44NzI0ODQ5ODVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3OTEwNTE2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIGNvbnNpZGVyaW5nIEknbSBzZWVpbmcgdGhpcyBhcyBhIGZlbGxvdyBleHBlcnQ6XG5cbioqTUFDVkxBTiBDb25maWd1cmF0aW9uIGFuZCBRdWV1ZSBMZW5ndGggTGltaXRzKipcblxuQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSB0aGUgYE1BQ1ZMQU5gIGNvbmZpZ3VyYXRpb24uIFRoZSBrZXkgaGVyZSBpcyB0aGlzIHBhdGNoLCBhbmQgaG93IGl0IGZ1bmN0aW9uYWxseSBhbHRlcnMgdGhlIHN5c3RlbS4gU3BlY2lmaWNhbGx5LCBpdCdzIHBsYWNpbmcgYSBoYXJkIGxpbWl0IG9uIGBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOYCwgc2V0dGluZyBpdCB0byA0MDk2LiBUaGF0J3MgdGhlIGNyaXRpY2FsIHBpZWNlLiBUaGlzIGF0dHJpYnV0ZSBpcyBtb2RpZmlhYmxlIHRocm91Z2ggbmV0bGluayBjYWxscywgbWVhbmluZyB3ZSdyZSB0YWxraW5nIGFib3V0IGNoYW5nZXMgd2UgbWFrZSBkdXJpbmcgdGhlIGNyZWF0aW9uIG9yIG1vZGlmaWNhdGlvbiBvZiBhIG1hY3ZsYW4gaW50ZXJmYWNlLiBUaGVyZWZvcmUsIHRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIHRvIHJldmlldyBhcmUgYG1hY3ZsYW5fbmV3bGlua2AgYW5kIGBtYWN2bGFuX2NoYW5nZWxpbmtgLCBhcyB0aGVzZSBhcmUgdGhlIG9uZXMgdGhhdCBoYW5kbGUgdGhlIG5ldGxpbmsgaW50ZXJhY3Rpb25zIHdpdGggdGhhdCBzcGVjaWZpYyBhdHRyaWJ1dGUuIE5vdywgYmVmb3JlIEkgbW92ZSBvbiwgSSdkIGJldHRlciBiZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgZnVuY3Rpb25zIHRoYXQgdXRpbGl6ZSBgSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTmAuIEdvdHRhIGNvdmVyIGFsbCBiYXNlcywgY2FuJ3QgYXNzdW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTUzLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA3OjAzOjQ2LjA1MTU5MjdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNTA1NzI1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmM9MTQ1OT1pbnQgbWFjdmxhbl9jb21tb25fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE1NDctXFx0dmxhbi1cXHUwMDNlYmNfcXVldWVfbGVuX3JlcSA9IE1BQ1ZMQU5fREVGQVVMVF9CQ19RVUVVRV9MRU47XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE1NDg6XFx0aWYgKGRhdGEgXFx1MDAyNlxcdTAwMjYgZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSlcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTU0OTpcXHRcXHR2bGFuLVxcdTAwM2ViY19xdWV1ZV9sZW5fcmVxID0gbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE1NTAtXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTYxMz1zdGF0aWMgaW50IG1hY3ZsYW5fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2NTEtXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE2NTI6XFx0aWYgKGRhdGEgXFx1MDAyNlxcdTAwMjYgZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSkge1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjUzOlxcdFxcdHZsYW4tXFx1MDAzZWJjX3F1ZXVlX2xlbl9yZXEgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5dKTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTY1NC1cXHRcXHR1cGRhdGVfcG9ydF9iY19xdWV1ZV9sZW4odmxhbi1cXHUwMDNlcG9ydCk7XFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTY4Mj1zdGF0aWMgc2l6ZV90IG1hY3ZsYW5fZ2V0X3NpemUoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjkwLVxcdFxcdCsgbWFjdmxhbl9nZXRfc2l6ZV9tYWModmxhbikgLyogSUZMQV9NQUNWTEFOX01BQ0FERFIgKi9cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTY5MTpcXHRcXHQrIG5sYV90b3RhbF9zaXplKDQpIC8qIElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU4gKi9cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTY5MjpcXHRcXHQrIG5sYV90b3RhbF9zaXplKDQpIC8qIElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5fVVNFRCAqL1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjkzLVxcdFxcdCsgbmxhX3RvdGFsX3NpemUoNCkgLyogSUZMQV9NQUNWTEFOX0JDX0NVVE9GRiAqL1xcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE3MTM9c3RhdGljIGludCBtYWN2bGFuX2ZpbGxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE3MzctXFx0fVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNzM4OlxcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU4sIHZsYW4tXFx1MDAzZWJjX3F1ZXVlX2xlbl9yZXEpKVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzM5LVxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNzQwOlxcdGlmIChubGFfcHV0X3UzMihza2IsIElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5fVVNFRCxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc0MS1cXHRcXHRcXHRSRUFEX09OQ0UocG9ydC1cXHUwMDNlYmNfcXVldWVfbGVuX3VzZWQpKSlcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNzUyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBtYWN2bGFuX3BvbGljeVtJRkxBX01BQ1ZMQU5fTUFYICsgMV0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc1OC1cXHRbSUZMQV9NQUNWTEFOX01BQ0FERFJfQ09VTlRdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTc1OTpcXHRbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0gPSBOTEFfUE9MSUNZX01BWChOTEFfVTMyLCBNQUNWTEFOX01BWF9CQ19RVUVVRV9MRU4pLFxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNzYwOlxcdFtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOX1VTRURdID0geyAudHlwZSA9IE5MQV9SRUpFQ1QgfSxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTc2MS1cXHRbSUZMQV9NQUNWTEFOX0JDX0NVVE9GRl0gPSB7IC50eXBlID0gTkxBX1MzMiB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwNzowMzo0Ni4zNzY2NTU2NTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg4MTUyMTY4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNQUNWTEFOIE5ldGxpbmsgUG9saWN5IE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgYWx0ZXJzIHRoZSBuZXRsaW5rIHBvbGljeSBmb3IgTUFDVkxBTiBpbnRlcmZhY2VzLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGJlIHBsYWNpbmcgYSBjYXAgb24gdGhlIGBJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOYCBwYXJhbWV0ZXIg4oCTIGxpbWl0aW5nIGl0IHRvIDQwOTYuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBzb21ldGhpbmcgdG8gcGF5IGF0dGVudGlvbiB0by4gSXQgYWZmZWN0cyBob3cgTUFDVkxBTiBpbnRlcmZhY2VzIGFyZSBjcmVhdGVkIGFuZCBtb2RpZmllZCB1c2luZyBuZXRsaW5rLCBzbyB3ZSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMuXG5cbkkndmUgaWRlbnRpZmllZCBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AgYW5kIGBtYWN2bGFuX2NoYW5nZWxpbmtgIGFzIHRoZSBrZXkgcGxheWVycyBoZXJlLCB3aXRoIGBtYWN2bGFuX25ld2xpbmtgIGNhbGxpbmcgdGhlIGNvbW1vbiBmdW5jdGlvbi4gVGhlcmVmb3JlLCBgbWFjdmxhbl9uZXdsaW5rYCBhbmQgYG1hY3ZsYW5fY2hhbmdlbGlua2Agc2VlbSBsaWtlIHRoZSBvYnZpb3VzIGZvY3VzIHN5bWJvbHMuIEknbGwgbWFrZSBzdXJlIHRvIHByaW9yaXRpemUgdGhvc2UuXG5cbk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgTUFDVkxBTmAgaXMgdGhlIG9ubHkgY29uZmlnIGJlaW5nIHRvdWNoZWQgaGVyZS5cblxuR2l2ZW4gdGhpcyBhbmFseXNpcywgSSdtIGNvbmZpZGVudCB0aGF0IHRoaXMgY2hhbmdlIHdhcnJhbnRzIGZ1enppbmcuIEknbGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYCwgbWFrZSBgbWFjdmxhbl9uZXdsaW5rYCBhbmQgYG1hY3ZsYW5fY2hhbmdlbGlua2AgdGhlIGBGb2N1c1N5bWJvbHNgLCBhbmQgZW5hYmxlIHRoZSBgTUFDVkxBTmAgY29uZmlndXJhdGlvbi4gVGhhdCBzaG91bGQgZ2l2ZSB1cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGludmVzdGlnYXRpbmcgcG90ZW50aWFsIGlzc3VlcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgbGltaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1NDksIk91dHB1dFRva2VucyI6MTExLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDA3OjAzOjUxLjI1ODE3OTk5NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5NjI5OTkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDVkxBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY3ZsYW5fbmV3bGlua1wiLFxuICAgIFwibWFjdmxhbl9jaGFuZ2VsaW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGxpbmsgcG9saWN5IGZvciBNQUNWTEFOIGludGVyZmFjZXMgdG8gcmVzdHJpY3QgdGhlIG1heGltdW0gdmFsdWUgb2YgSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTiB0byA0MDk2LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGhvdyBNQUNWTEFOIGludGVyZmFjZXMgYXJlIGNyZWF0ZWQgYW5kIG1vZGlmaWVkIHZpYSBuZXRsaW5rLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQ1ZMQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWN2bGFuX25ld2xpbmtcIixcbiAgICBcIm1hY3ZsYW5fY2hhbmdlbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRsaW5rIHBvbGljeSBmb3IgTUFDVkxBTiBpbnRlcmZhY2VzIHRvIHJlc3RyaWN0IHRoZSBtYXhpbXVtIHZhbHVlIG9mIElGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU4gdG8gNDA5Ni4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBob3cgTUFDVkxBTiBpbnRlcmZhY2VzIGFyZSBjcmVhdGVkIGFuZCBtb2RpZmllZCB2aWEgbmV0bGluay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowhsjhx[1] Phase: Succeeded StartedAt: 2026-07-07 07:04:03 +0000 UTC FinishedAt: 2026-07-07 07:04:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-07 07:04:04 +0000 UTC FinishedAt: 2026-07-07 07:04:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[2] Phase: Succeeded StartedAt: 2026-07-07 07:04:04 +0000 UTC FinishedAt: 2026-07-07 11:53:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-07 07:04:04 +0000 UTC FinishedAt: 2026-07-07 11:53:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-07 07:04:04 +0000 UTC FinishedAt: 2026-07-07 07:04:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-07 07:04:04 +0000 UTC FinishedAt: 2026-07-07 07:04:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhsjhx/series-workflowhsjhx-convert-artifact-229942614/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-07 07:04:55 +0000 UTC FinishedAt: 2026-07-07 07:47:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-07 07:04:55 +0000 UTC FinishedAt: 2026-07-07 07:47:25 +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:*2dd58e8f-4105-4e07-82e9-c504dc3b0a47,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-workflowhsjhx/series-workflowhsjhx-convert-artifact-229942614/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": "f7f14c6b-fbf5-443c-9541-0111f4d1fe66", "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-workflowhsjhx/series-workflowhsjhx-build-action-1188659692/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-07 07:04:55 +0000 UTC FinishedAt: 2026-07-07 07:47:15 +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:*2dd58e8f-4105-4e07-82e9-c504dc3b0a47,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-workflowhsjhx/series-workflowhsjhx-convert-artifact-229942614/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": "f7f14c6b-fbf5-443c-9541-0111f4d1fe66", "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-workflowhsjhx/series-workflowhsjhx-build-action-1188659692/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-07 07:47:25 +0000 UTC FinishedAt: 2026-07-07 07:47:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-07 07:47:25 +0000 UTC FinishedAt: 2026-07-07 07:47:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-07 07:47:25 +0000 UTC FinishedAt: 2026-07-07 07:47:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-07 07:47:25 +0000 UTC FinishedAt: 2026-07-07 07:47:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhsjhx/series-workflowhsjhx-convert-artifact-2659746793/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-07 07:47:35 +0000 UTC FinishedAt: 2026-07-07 07:49:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-07 07:47:35 +0000 UTC FinishedAt: 2026-07-07 07:49:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f7f14c6b-fbf5-443c-9541-0111f4d1fe66,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-workflowhsjhx/series-workflowhsjhx-build-action-1188659692/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-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-07 07:49:37 +0000 UTC FinishedAt: 2026-07-07 07:49:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-07 07:49:37 +0000 UTC FinishedAt: 2026-07-07 07:49:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-07 07:49:37 +0000 UTC FinishedAt: 2026-07-07 08:47:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-07 07:49:37 +0000 UTC FinishedAt: 2026-07-07 08:47:41 +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:*2dd58e8f-4105-4e07-82e9-c504dc3b0a47,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-workflowhsjhx/series-workflowhsjhx-convert-artifact-2659746793/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": "39231181-0080-43eb-8038-c5d481d49189", "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-workflowhsjhx/series-workflowhsjhx-build-action-2856108997/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-07 07:49:37 +0000 UTC FinishedAt: 2026-07-07 08:47:31 +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:*2dd58e8f-4105-4e07-82e9-c504dc3b0a47,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-workflowhsjhx/series-workflowhsjhx-convert-artifact-2659746793/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": "39231181-0080-43eb-8038-c5d481d49189", "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-workflowhsjhx/series-workflowhsjhx-build-action-2856108997/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-07 08:47:41 +0000 UTC FinishedAt: 2026-07-07 08:47:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-07 08:47:41 +0000 UTC FinishedAt: 2026-07-07 08:47:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-07 08:47:41 +0000 UTC FinishedAt: 2026-07-07 08:49:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-07 08:47:41 +0000 UTC FinishedAt: 2026-07-07 08:49:32 +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:*39231181-0080-43eb-8038-c5d481d49189,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-workflowhsjhx/series-workflowhsjhx-build-action-2856108997/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-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-07 08:49:42 +0000 UTC FinishedAt: 2026-07-07 11:53:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-07 08:49:42 +0000 UTC FinishedAt: 2026-07-07 11:53:05 +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":["macvlan_newlink","macvlan_changelink"],"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:*f7f14c6b-fbf5-443c-9541-0111f4d1fe66,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*39231181-0080-43eb-8038-c5d481d49189,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-workflowhsjhx/series-workflowhsjhx-build-action-1188659692/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-workflowhsjhx/series-workflowhsjhx-build-action-2856108997/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-07 08:49:42 +0000 UTC FinishedAt: 2026-07-07 08:50:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-07 08:49:42 +0000 UTC FinishedAt: 2026-07-07 08:50:09 +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":["macvlan_newlink","macvlan_changelink"],"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-workflowhsjhx/series-workflowhsjhx-convert-artifact-927855934/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-07 08:49:42 +0000 UTC FinishedAt: 2026-07-07 08:49:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-07 08:49:42 +0000 UTC FinishedAt: 2026-07-07 08:49:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-07 08:49:42 +0000 UTC FinishedAt: 2026-07-07 08:49:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-07 08:50:17 +0000 UTC FinishedAt: 2026-07-07 11:53:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhsjhx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_newlink","macvlan_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"9e05e91a9a847ed57926414bd7c2c5e54d6c56c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"1930dd27-c68c-43d2-b893-6562d16c95a3","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-07 08:50:17 +0000 UTC FinishedAt: 2026-07-07 11:53:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f7f14c6b-fbf5-443c-9541-0111f4d1fe66,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*39231181-0080-43eb-8038-c5d481d49189,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-workflowhsjhx/series-workflowhsjhx-build-action-1188659692/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-workflowhsjhx/series-workflowhsjhx-build-action-2856108997/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-workflowhsjhx/series-workflowhsjhx-convert-artifact-927855934/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,}