Name: series-workflowt49f2 Phase: Succeeded StartedAt: 2026-07-05 08:55:11 +0000 UTC FinishedAt: 2026-07-05 11:20:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[0] Phase: Succeeded StartedAt: 2026-07-05 08:55:11 +0000 UTC FinishedAt: 2026-07-05 09:12:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[0].run-triage Phase: Succeeded StartedAt: 2026-07-05 08:55:11 +0000 UTC FinishedAt: 2026-07-05 09:12:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN_VENDOR_RSI", "RSI_91X", "RSI_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN_VENDOR_RSI", "RSI_91X", "RSI_USB" ], "series_id": "0c5128fb-7043-4739-87bf-9d1a152f8a56" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rsi_prepare_beacon", "rsi_send_beacon" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA1IDA5OjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU5fVkVORE9SX1JTSSYjMzQ7LAogICAgJiMzNDtSU0lfOTFYJiMzNDssCiAgICAmIzM0O1JTSV9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyc2lfcHJlcGFyZV9iZWFjb24mIzM0OywKICAgICYjMzQ7cnNpX3NlbmRfYmVhY29uJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBpbiBgcnNpX3ByZXBhcmVfYmVhY29uYCBieSBjaGVja2luZyBgc2tiX3RhaWxyb29tYCBiZWZvcmUgY29weWluZyBkYXRhLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB3aGVuIHRoZSBkcml2ZXIgcHJvY2Vzc2VzIGEgYmVhY29uIHJlcXVlc3QgZnJvbSB0aGUgaGFyZHdhcmUuIFNpbmNlIHRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIChgUlNJX1VTQmApLCB0aGlzIGNvZGUgcGF0aCBjYW4gYmUgdHJpZ2dlcmVkIGFuZCBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBieSBlbXVsYXRpbmcgYSBtYWxpY2lvdXMgVVNCIGRldmljZSB2aWEgdGhlIFVTQiBnYWRnZXQgc3Vic3lzdGVtICh2aGNpKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwOToxMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDdlN2EwZTE0Mzc3MDlmMDkxOGRlYmI5ZDZiM2MyNGY2Yjk1ZDRmYjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCA1IDA5OjEwOjA1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmNcbmluZGV4IGEwYzM2MTQ0ZWIwYjIzLi41MDEwNzExMDRhOWZlNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9oYWwuY1xuQEAgLTQzMSw2ICYjNDM7NDMxLDcgQEAgaW50IHJzaV9wcmVwYXJlX2JlYWNvbihzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZjtcbiBcdHN0cnVjdCBza19idWZmICptYWNfYmNuO1xuIFx0dTggdmFwX2lkID0gMCwgaTtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgdGFpbHJvb207XG4gXHR1MTYgdGltX29mZnNldCA9IDA7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBSU0lfTUFYX1ZJRlM7IGkmIzQzOyYjNDM7KSB7XG5AQCAtNDgwLDYgJiM0Mzs0ODEsMTMgQEAgaW50IHJzaV9wcmVwYXJlX2JlYWNvbihzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0aWYgKG1hY19iY24tXHUwMDNlZGF0YVt0aW1fb2Zmc2V0ICYjNDM7IDJdID09IDApXG4gXHRcdGJjbl9mcm0tXHUwMDNlZnJhbWVfaW5mbyB8PSBjcHVfdG9fbGUxNihSU0lfREFUQV9ERVNDX0RUSU1fQkVBQ09OKTtcbiBcbiYjNDM7XHR0YWlscm9vbSA9IHNrYl90YWlscm9vbShza2IpO1xuJiM0MztcdGlmICh0YWlscm9vbSBcdTAwM2MgRlJBTUVfREVTQ19TWiB8fFxuJiM0MztcdCAgICBtYWNfYmNuLVx1MDAzZWxlbiBcdTAwM2UgdGFpbHJvb20gLSBGUkFNRV9ERVNDX1NaKSB7XG4mIzQzO1x0XHRkZXZfa2ZyZWVfc2tiKG1hY19iY24pO1xuJiM0MztcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0bWVtY3B5KFx1MDAyNnNrYi1cdTAwM2VkYXRhW0ZSQU1FX0RFU0NfU1pdLCBtYWNfYmNuLVx1MDAzZWRhdGEsIG1hY19iY24tXHUwMDNlbGVuKTtcbiBcdHNrYl9wdXQoc2tiLCBtYWNfYmNuLVx1MDAzZWxlbiAmIzQzOyBGUkFNRV9ERVNDX1NaKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwOToxMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtXTEFOX1ZFTkRPUl9SU0kmIzM0OywKICAgICYjMzQ7UlNJXzkxWCYjMzQ7LAogICAgJiMzNDtSU0lfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnNpX3ByZXBhcmVfYmVhY29uJiMzNDssCiAgICAmIzM0O3JzaV9zZW5kX2JlYWNvbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3cgaW4gYHJzaV9wcmVwYXJlX2JlYWNvbmAgYnkgY2hlY2tpbmcgYHNrYl90YWlscm9vbWAgYmVmb3JlIGNvcHlpbmcgZGF0YS4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgd2hlbiB0aGUgZHJpdmVyIHByb2Nlc3NlcyBhIGJlYWNvbiByZXF1ZXN0IGZyb20gdGhlIGhhcmR3YXJlLiBTaW5jZSB0aGUgZHJpdmVyIHN1cHBvcnRzIFVTQiAoYFJTSV9VU0JgKSwgdGhpcyBjb2RlIHBhdGggY2FuIGJlIHRyaWdnZXJlZCBhbmQgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgZW11bGF0aW5nIGEgbWFsaWNpb3VzIFVTQiBkZXZpY2UgdmlhIHRoZSBVU0IgZ2FkZ2V0IHN1YnN5c3RlbSAodmhjaSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDdlN2EwZTE0Mzc3MDlmMDkxOGRlYmI5ZDZiM2MyNGY2Yjk1ZDRmYjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCA1IDA5OjEwOjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9oYWwuYwppbmRleCBhMGMzNjE0NGViMGIyMy4uNTAxMDcxMTA0YTlmZTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jCkBAIC00MzEsNiAmIzQzOzQzMSw3IEBAIGludCByc2lfcHJlcGFyZV9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmOwogCXN0cnVjdCBza19idWZmICptYWNfYmNuOwogCXU4IHZhcF9pZCA9IDAsIGk7CiYjNDM7CXVuc2lnbmVkIGludCB0YWlscm9vbTsKIAl1MTYgdGltX29mZnNldCA9IDA7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgUlNJX01BWF9WSUZTOyBpJiM0MzsmIzQzOykgewpAQCAtNDgwLDYgJiM0Mzs0ODEsMTMgQEAgaW50IHJzaV9wcmVwYXJlX2JlYWNvbihzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCWlmIChtYWNfYmNuLSZndDtkYXRhW3RpbV9vZmZzZXQgJiM0MzsgMl0gPT0gMCkKIAkJYmNuX2ZybS0mZ3Q7ZnJhbWVfaW5mbyB8PSBjcHVfdG9fbGUxNihSU0lfREFUQV9ERVNDX0RUSU1fQkVBQ09OKTsKIAomIzQzOwl0YWlscm9vbSA9IHNrYl90YWlscm9vbShza2IpOwomIzQzOwlpZiAodGFpbHJvb20gJmx0OyBGUkFNRV9ERVNDX1NaIHx8CiYjNDM7CSAgICBtYWNfYmNuLSZndDtsZW4gJmd0OyB0YWlscm9vbSAtIEZSQU1FX0RFU0NfU1opIHsKJiM0MzsJCWRldl9rZnJlZV9za2IobWFjX2Jjbik7CiYjNDM7CQlyZXR1cm4gLUVNU0dTSVpFOwomIzQzOwl9CiYjNDM7CiAJbWVtY3B5KCZhbXA7c2tiLSZndDtkYXRhW0ZSQU1FX0RFU0NfU1pdLCBtYWNfYmNuLSZndDtkYXRhLCBtYWNfYmNuLSZndDtsZW4pOwogCXNrYl9wdXQoc2tiLCBtYWNfYmNuLSZndDtsZW4gJiM0MzsgRlJBTUVfREVTQ19TWik7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEwOAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgQnVmZmVyIE92ZXJmbG93IEZpeCBpbiBhIFdpcmVsZXNzIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmNgLiBUaGUgY29yZSBjaGFuZ2UgaXMgaW4gYHJzaV9wcmVwYXJlX2JlYWNvbmAsIHNwZWNpZmljYWxseSBhIGNoZWNrIGZvciBgc2tiX3RhaWxyb29tKHNrYilgIGJlZm9yZSBhbnkgZGF0YSBpcyBjb3BpZWQuIFRoYXQmIzM5O3MgZ29vZCwgYSBkZWZpbml0ZSBmdW5jdGlvbmFsIGltcHJvdmVtZW50IGFpbWVkIGF0IHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93LiBBbHdheXMgZ29vZCB0byBzZWUgdGhvc2UuCgpNeSBuZXh0IHRob3VnaHQgaXMsIGhvdyBsaWtlbHkgaXMgdGhpcyB0byBhY3R1YWxseSBiZSB0cmlnZ2VyZWQ/IExldCYjMzk7cyBmaWd1cmUgb3V0IGlmIHRoaXMgZHJpdmVyLCBgcnNpXzkxeGAsIGEgUmVkcGluZSBTaWduYWxzIEluYy4gOTF4IFdMQU4gZHJpdmVyLCBpcyBldmVuICpyZWFjaGFibGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoYXQmIzM5O3Mgd2hlcmUgYSBsb3Qgb2YgdGhlc2UgdnVsbmVyYWJpbGl0aWVzIGdldCBmb3VuZCwgYW5kIHdoZXJlIHRlc3RpbmcgaXMgZWFzaWVzdC4gSWYgaXQmIzM5O3Mgc29tZXRoaW5nIHRoYXQgb25seSBzaG93cyB1cCBpbiBhIHJhcmUgaGFyZHdhcmUgY29uZmlndXJhdGlvbiwgaXQmIzM5O3MgYSB2ZXJ5IGRpZmZlcmVudCBiZWFzdCB0aGFuIHNvbWV0aGluZyB0aGF0JiMzOTtzIHByZXNlbnQgYnkgZGVmYXVsdCBpbiBhIGxvdCBvZiBjbG91ZCBpbnN0YW5jZXMsIHJpZ2h0PwoKSSYjMzk7bGwgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7bGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGl0cyBidWlsZCBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBhY3RpdmF0aW9uIGNvbmRpdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwuIE5lZWQgdG8ga25vdyB0aGUgY2lyY3Vtc3RhbmNlcyB0byBwcm9wZXJseSBldmFsdWF0ZSB0aGlzIG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwOToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyc2lfcHJlcGFyZV9iZWFjb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jPTM4OD1pbnQgcnNpX3NlbmRfYnRfcGt0KHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmMtNDI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmM6NDI1OmludCByc2lfcHJlcGFyZV9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jLTQyNi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jPTE3NjM9c3RhdGljIGludCByc2lfc2VuZF9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMTc3Ni1cdFx0c2tiX3B1bGwoc2tiLCAoNjQgLSBkd29yZF9hbGlnbl9ieXRlcykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jOjE3Nzc6XHRpZiAocnNpX3ByZXBhcmVfYmVhY29uKGNvbW1vbiwgc2tiKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTE3NzgtXHRcdHJzaV9kYmcoRVJSX1pPTkUsIFwmIzM0O0ZhaWxlZCB0byBwcmVwYXJlIGJlYWNvblxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9oYWwuaD0yMjU9aW50IHJzaV9wcmVwYXJlX2RhdGFfZGVzYyhzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfaGFsLmg6MjI2OmludCByc2lfcHJlcGFyZV9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2hhbC5oLTIyNy1pbnQgcnNpX3NlbmRfcGt0X3RvX2J1cyhzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwOToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTk0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiBteSBkb21haW46CgoqKlJTSSBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0aGlzIHN0cmFpZ2h0LiBNeSBtZW50YWwgY2hlY2tsaXN0IGZvciB0aGUgY3VycmVudCB0YXNrIGhhcyBsYW5kZWQgbWUgc3F1YXJlbHkgYXQgUlNJLiBJIG5lZWQgdG8gZW5zdXJlIGl0JiMzOTtzIGNvbmZpZ3VyZWQgYXBwcm9wcmlhdGVseS4gVGhlIG9idmlvdXMgZmlyc3Qgc3RlcCwgYmVmb3JlIEkgZXZlbiBzdGFydCB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBkcml2ZXJzIG9yIHRoZSBidWlsZCBwcm9jZXNzLCBpcyB0byBkaXZlIGludG8gdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCYjMzk7cyB0aGUgYmVkcm9jaywgdGhlIGNvbmZpZ3VyYXRpb24gZm91bmRhdGlvbiB1cG9uIHdoaWNoIGV2ZXJ5dGhpbmcgZWxzZSByZWxhdGVkIHRvIFJTSSByZXN0cy4gSSBuZWVkIHRvIHZlcmlmeSBpdHMgZW5hYmxlZCBzdGF0ZSwgdW5kZXJzdGFuZCBhbnkgZGVwZW5kZW5jaWVzIGl0IGhhcywgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzIG9yIG9wdGlvbnMgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGUgc3BlY2lmaWMgY29udGV4dCBJJiMzOTttIGN1cnJlbnRseSB3b3JraW5nIHdpdGhpbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb25maWd1cmF0aW9uIGVjb3N5c3RlbSBpcyBzYXlpbmcgYWJvdXQgUlNJJiMzOTtzIGN1cnJlbnQgc3RhdHVzIGFuZCBwb3RlbnRpYWwgb3B0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwOToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUlNJXzkxWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc9MTM9aWYgV0xBTl9WRU5ET1JfUlNJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0xNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnOjE1OmNvbmZpZyBSU0lfOTFYXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0xNi1cdHRyaXN0YXRlIFwmIzM0O1JlZHBpbmUgU2lnbmFscyBJbmMgOTF4IFdMQU4gZHJpdmVyIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwOToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzEyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBCdXMgQ29tcGF0aWJpbGl0eSBJbnF1aXJ5KioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gdGFraW5nIGEgZnJlc2ggbG9vayBhdCB0aGlzLCBhbmQgdGhlIGZpcnN0IG9yZGVyIG9mIGJ1c2luZXNzIGlzIGVzdGFibGlzaGluZyBpdHMgZm91bmRhdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaW1tZWRpYXRlbHkgZm9jdXNlcyBvbiAqKmJ1cyBzdXBwb3J0KiouIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZSBhbmQgd2hhdCBzcGVjaWZpYyBidXMgaW50ZXJmYWNlcyBhcmUgY29tcGF0aWJsZS4gVGhpcyBpcyBmdW5kYW1lbnRhbDsgd2l0aG91dCB0aGlzIGJhc2ljIHVuZGVyc3RhbmRpbmcsIGZ1cnRoZXIgYW5hbHlzaXMgaXMgcG9pbnRsZXNzLiBJdCBkaWN0YXRlcyBldmVyeXRoaW5nIGZyb20gZGF0YSB0aHJvdWdocHV0IGFuZCBjb21tdW5pY2F0aW9uIHByb3RvY29scyB0byB0aGUgcG90ZW50aWFsIGZvciBpbnRlZ3JhdGlvbiB3aXRoaW4gZXhpc3Rpbmcgc3lzdGVtcy4gU28sIHRoZSBxdWVzdGlvbiBpczogd2hhdCBidXNlcyBkb2VzIHRoaXMgdGhpbmcgcGxheSBuaWNlIHdpdGg/IEtub3dpbmcgdGhlIGFuc3dlciB1bmxvY2tzIHRoZSBuZXh0IGxheWVyIG9mIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDk6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJTSV8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnPTEzPWlmIFdMQU5fVkVORE9SX1JTSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZzoxNTpjb25maWcgUlNJXzkxWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWRwaW5lIFNpZ25hbHMgSW5jIDkxeCBXTEFOIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZzoyMzpjb25maWcgUlNJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtSZWRwaW5lIFNpZ25hbHMgSW5jIGRlYnVnIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnOjMxOmNvbmZpZyBSU0lfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMzItXHR0cmlzdGF0ZSBcJiMzNDtSZWRwaW5lIFNpZ25hbHMgU0RJTyBidXMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6Mzk6Y29uZmlnIFJTSV9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTQwLVx0dHJpc3RhdGUgXCYjMzQ7UmVkcGluZSBTaWduYWxzIFVTQiBidXMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6NDc6Y29uZmlnIFJTSV9DT0VYXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7UmVkcGluZSBTaWduYWxzIFdMQU4gQlQgQ29leGlzdGVuY2Ugc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDA5OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqVVNCIEZ1enppbmcgUG90ZW50aWFsIGFuZCBCZWFjb24gUmVhY2hhYmlsaXR5KioKClJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCB0aGlzIHN5c3RlbSBzdXBwb3J0cyBVU0IsIHNwZWNpZmljYWxseSB2aWEgYFJTSV9VU0JgLiBUaGlzIGlzIGV4Y2VsbGVudCBuZXdzISBJZiBVU0IgaXMgc3VwcG9ydGVkLCB0aGF0IG9wZW5zIHRoZSBkb29yIHRvIGZ1enppbmcgaXQgdXNpbmcgdmhjaSAodGhlIFVTQiBnYWRnZXQgaW50ZXJmYWNlKS4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgYW5kIGVmZmVjdGl2ZSBhdHRhY2sgdmVjdG9yLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaWYgSSBjYW4gcmVhY2ggYHJzaV9wcmVwYXJlX2JlYWNvbmAuIFNwZWNpZmljYWxseSwgY2FuIEkgdHJpZ2dlciBpdCwgYW5kIHRoZW4gd2hhdCBjYW4gSSBkbyB3aXRoIGl0PwoKT2theSwgZGlnZ2luZyBpbiBhIGJpdCBkZWVwZXIsIEkgc2VlIHRoYXQgYHJzaV9wcmVwYXJlX2JlYWNvbmAgaXMgY2FsbGVkIGZyb20gYHJzaV9zZW5kX2JlYWNvbmAuIEkgcmVtZW1iZXIgdGhhdCBmdW5jdGlvbi4uLiB0aGF0JiMzOTtzIGluIGByc2lfOTF4X21nbXQuY2AuIE5vdyBJIGhhdmUgYSBicmVhZGNydW1iIHRyYWlsIHRvIGZvbGxvdy4gVGltZSB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggYW5kIHNlZSB3aGF0IEkgY2FuIHVuY292ZXIuIE15IHRob3VnaHQgcHJvY2VzcyBoZXJlIGlzIHRvIHNlZSBpZiBJIGNhbiByZWFjaCBhbmQgY29udHJvbCBgcnNpX3ByZXBhcmVfYmVhY29uYCB0aHJvdWdoIHRoZSBjaGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDk6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnNpX3NlbmRfYmVhY29uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM9MTczOD1pbnQgcnNpX3NldF9hbnRlbm5hKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIHU4IGFudGVubmEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTE3NjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM6MTc2MzpzdGF0aWMgaW50IHJzaV9zZW5kX2JlYWNvbihzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTE3NjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYz0yMTg1PWludCByc2lfbWdtdF9wa3RfcmVjdihzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCB1OCAqbXNnKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYy0yMjI0LVx0XHRcdHJldHVybiAtMTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYzoyMjI1Olx0XHRyc2lfc2VuZF9iZWFjb24oY29tbW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYy0yMjI2LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ2MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBCZWFjb24gVHJhbnNtaXNzaW9uIFBhdGgqKgoKUmlnaHQsIHNvIGByc2lfc2VuZF9iZWFjb25gIGlzIGNhbGxlZCBmcm9tIHdpdGhpbiBgcnNpX21nbXRfcGt0X3JlY3ZgLiBUaGF0JiMzOTtzIHRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgaW5jb21pbmcgbWFuYWdlbWVudCBwYWNrZXRzLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGJlYWNvbiB0cmFuc21pc3Npb24gZmxvdy4gVG8gZG8gdGhhdCwgSSBuZWVkIHRvIGtub3cgKndoZXJlKiBgcnNpX21nbXRfcGt0X3JlY3ZgIGl0c2VsZiBpcyBiZWluZyBjYWxsZWQgZnJvbS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGVyZSB0byBmaWd1cmUgb3V0IHRoZSBpbml0aWF0aW5nIGV2ZW50LiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBjYWxsIHN0YWNrcyBhbmQgc2VlIHdoYXQmIzM5O3MgdHJpZ2dlcmluZyB0aGUgbWFuYWdlbWVudCBwYWNrZXQgcHJvY2Vzc2luZy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IGJlYWNvbnMgYXJlIGluaXRpYXRlZCBhbmQgcHJvcGFnYXRlZCB3aXRoaW4gdGhlIHN5c3RlbS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDA5OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JzaV9tZ210X3BrdF9yZWN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmM9Njg9aW50IHJzaV9jb2V4X3JlY3ZfcGt0KHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIHU4ICptc2cpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jLTc5LVx0XHRyc2lfZGJnKElORk9fWk9ORSwgXCYjMzQ7c2xlZXAgbm90aWZ5IHJlY2VpdmVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2NvZXguYzo4MDpcdFx0cnNpX21nbXRfcGt0X3JlY3YoY29tbW9uLCBtc2cpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jLTgxLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWluLmM9MTU3PWludCByc2lfcmVhZF9wa3Qoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgdTggKnJ4X3BrdCwgczMyIHJjdl9wa3RfbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uYy0xOTAtI2VuZGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWluLmM6MTkxOlx0XHRcdFx0cnNpX21nbXRfcGt0X3JlY3YoY29tbW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jLTE5Mi1cdFx0XHRcdFx0XHQgIChmcmFtZV9kZXNjICYjNDM7IG9mZnNldCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uYy0yMDYtXHRcdGNhc2UgUlNJX1dJRklfTUdNVF9ROlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jOjIwNzpcdFx0XHRyc2lfbWdtdF9wa3RfcmVjdihjb21tb24sIChmcmFtZV9kZXNjICYjNDM7IG9mZnNldCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jLTIwOC1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM9MjEyNj1pbnQgcnNpX2hhbmRsZV9jYXJkX3JlYWR5KHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIHU4ICptc2cpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTIxNzctLyoqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM6MjE3ODogKiByc2lfbWdtdF9wa3RfcmVjdigpIC0gVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIG1hbmFnZW1lbnQgcGFja2V0c1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTIxNzktICpcdFx0XHQgcmVjZWl2ZWQgZnJvbSB0aGUgaGFyZHdhcmUuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTIxODQtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM6MjE4NTppbnQgcnNpX21nbXRfcGt0X3JlY3Yoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgdTggKm1zZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYy0yMTg2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX21nbXQuaD03MTM9aW50IHJzaV9oYW5kbGVfY2FyZF9yZWFkeShzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCB1OCAqbXNnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfbWdtdC5oOjcxNDppbnQgcnNpX21nbXRfcGt0X3JlY3Yoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgdTggKm1zZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX21nbXQuaC03MTUtaW50IHJzaV9zZXRfdmFwX2NhcGFiaWxpdGllcyhzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBlbnVtIG9wbW9kZSBtb2RlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwOToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDkzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB0aGlzLgoKKipGdXp6aW5nIFBvdGVudGlhbDogUlNJIFVTQiBQYWNrZXQgUmVjZXB0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIFRoaXMgYHJzaV9tZ210X3BrdF9yZWN2YCBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQgYnkgaW5jb21pbmcgcGFja2V0cyBmcm9tIHRoZSBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IG9uIHRoZSByZWNlaXZpbmcgZW5kLiBUaGUgZmFjdCB0aGF0IGl04oCZcyBsaW5rZWQgdG8gYW4gYFJTSV9VU0JgIGRldmljZSBpcyBrZXkgaGVyZS4gVGhhdCBtZWFucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgVVNCIGNvbm5lY3Rpb24sIGFuZCBtb3JlIHNwZWNpZmljYWxseSwgbGlrZWx5IHVzaW5nIGEgVVNCIGdhZGdldCBzZXR1cCBsaWtlIGB2aGNpYCBmb3IgdGhlIGhvc3QgdG8gZW11bGF0ZSBoYXJkd2FyZSBvbiB0aGUgZGV2aWNlIHNpZGUuCgpTbywgbG9naWNhbGx5IHNwZWFraW5nLCB0aGlzIGlzIHJlYWNoYWJsZSBjb2RlLCBhbmQgSSBzZWUgYSBodWdlIGZ1enppbmcgb3Bwb3J0dW5pdHkuIFdlIGNhbiBjcmFmdCBhbmQgaW5qZWN0IG1hbGljaW91cyBwYWNrZXRzIGZyb20gdGhlICYjMzQ7aGFyZHdhcmUmIzM0OyBzaWRlIHRocm91Z2ggVVNCLCByaWdodD8gV2UmIzM5O2xsIHNlZSBob3cgdGhhdCBhcHBsaWVzIHRvIHRoZSBjb2RlLgoKQmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgc2hvdWxkIGxvb2sgYXQgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTGV0IG1lIHF1aWNrbHkgZXhhbWluZSBgV0xBTl9WRU5ET1JfUlNJYCwgYFJTSV85MVhgLCBhbmQgYFJTSV9VU0JgLiBJJiMzOTtsbCB3YW50IHRvIGNoZWNrIGBXTEFOX1ZFTkRPUl9SU0lgLCBsaWtlbHkgaW4gZWl0aGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZ2Agb3IsIHdvcnN0IGNhc2UsIHRoZSB0b3AtbGV2ZWwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIFRoZXNlIGZsYWdzIHdpbGwgaW5mb3JtIGhvdyB0aGUgZHJpdmVycyBhcmUgYnVpbHQgYW5kIHdoYXQgZnVuY3Rpb25hbGl0eSBpcyBjb21waWxlZCBpbnRvIHRoZSBpbWFnZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDk6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFdMQU5fVkVORE9SX1JTSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6Mjpjb25maWcgV0xBTl9WRU5ET1JfUlNJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtSZWRwaW5lIFNpZ25hbHMgSW5jIGRldmljZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjAxNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogUmVsZXZhbnQgTW9kdWxlcyBhbmQgQmVhY29uIFByZXBhcmF0aW9uKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGl2aW5nIGludG8gdGhlIGNvZGViYXNlIGFuZCBpbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aG9zZSBjb3JlIG1vZHVsZXMsIHNwZWNpZmljYWxseSBgV0xBTl9WRU5ET1JfUlNJYCwgYFJTSV85MVhgLCBhbmQgYFJTSV9VU0JgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGVzZSByZXByZXNlbnQgZGlzdGluY3QgaW1wbGVtZW50YXRpb24gcGF0aHMgb3IgaGFyZHdhcmUgcmV2aXNpb25zIHdpdGhpbiB0aGUgUlNJIGZhbWlseS4gV2UgYXJlIG5vdCBqdXN0IHRhbGtpbmcgYWJvdXQganVzdCB0aG9zZSB0aHJlZSBlaXRoZXIsIHRoZXNlIGFyZSB0aGUgc3RhcnRpbmcgcG9pbnRzLgoKTm93LCBnaXZlbiB0aGF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYmVhY29uIHNldHVwIHByb2Nlc3MuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIGByc2lfcHJlcGFyZV9iZWFjb25gLiBUaGlzIGZ1bmN0aW9uIGlzIGFsbW9zdCBhbHdheXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZmlybXdhcmUgc3RydWN0dXJlcyBhbmQgYnJvYWRjYXN0cyBpdHMgYWR2ZXJ0aXNpbmcgZnJhbWUuIEl0JiMzOTtsbCBnaXZlIG1lIGEgc3Ryb25nIGluZGljYXRpb24gb2Ygd2hlcmUgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbiBjYWxscyBhcmUgbmVzdGVkIGFuZCB3aGF0IG90aGVyIGFyZWFzIG9mIHRoZSBjb2RlYmFzZSBhcmUgaW1wbGljYXRlZC4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIHdoYXQgZnVuY3Rpb25hbGl0eSBpcyBsaWtlbHkgdG8gYmUgaW1wYWN0ZWQgZHVyaW5nIGRlYnVnZ2luZywgb3IgbW9kaWZpY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwOToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyc2lfcHJlcGFyZV9iZWFjb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jPTM4OD1pbnQgcnNpX3NlbmRfYnRfcGt0KHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmMtNDI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmM6NDI1OmludCByc2lfcHJlcGFyZV9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jLTQyNi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jPTE3NjM9c3RhdGljIGludCByc2lfc2VuZF9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMTc3Ni1cdFx0c2tiX3B1bGwoc2tiLCAoNjQgLSBkd29yZF9hbGlnbl9ieXRlcykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jOjE3Nzc6XHRpZiAocnNpX3ByZXBhcmVfYmVhY29uKGNvbW1vbiwgc2tiKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTE3NzgtXHRcdHJzaV9kYmcoRVJSX1pPTkUsIFwmIzM0O0ZhaWxlZCB0byBwcmVwYXJlIGJlYWNvblxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9oYWwuaD0yMjU9aW50IHJzaV9wcmVwYXJlX2RhdGFfZGVzYyhzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfaGFsLmg6MjI2OmludCByc2lfcHJlcGFyZV9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2hhbC5oLTIyNy1pbnQgcnNpX3NlbmRfcGt0X3RvX2J1cyhzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc2OAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBSU0kgQmVhY29uIEZ1bmN0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3MgemVybyBpbiBvbiBzb21lIGtleSBhcmVhcyB3aXRoaW4gdGhpcyBSU0kgY29kZS4gSSYjMzk7bSB0aGlua2luZyBgcnNpX3ByZXBhcmVfYmVhY29uYCBhbmQgYHJzaV9zZW5kX2JlYWNvbmAgYXJlIGV4Y2VsbGVudCBzdGFydGluZyBwb2ludHMgZm9yIGEgZGVlcCBkaXZlLiBUaGV5IHNlZW0gbGlrZSBsb2dpY2FsIHBsYWNlcyB0byB1bmRlcnN0YW5kIGJlYWNvbiBnZW5lcmF0aW9uIGFuZCB0cmFuc21pc3Npb24sIHdoaWNoIGFyZSBjcml0aWNhbCBmb3IgdGhlIG92ZXJhbGwgd2lyZWxlc3Mgb3BlcmF0aW9uLiBJIGhhZCBhbHNvIGNvbnNpZGVyZWQgYHJzaV9tZ210X3BrdF9yZWN2YCwgYXMgaXQmIzM5O3Mgc3BlY2lmaWMgdG8gUlNJLCBidXQgSSYjMzk7bSBzbGlnaHRseSBoZXNpdGFudC4gSXQgY291bGQgYmUgYSBiaXQgb2YgYSBmaXJlaG9zZSwgaGFuZGxpbmcgKmFsbCogbWFuYWdlbWVudCBwYWNrZXRzLCB3aGljaCBtaWdodCBtYWtlIGl0IGEgbGVzcyBwcmVjaXNlIGZvY3VzIHN5bWJvbCBmb3Igbm93LgoKTGV0JiMzOTtzIGRvIHNvbWUgcXVpY2sgaW52ZXN0aWdhdGlvbnMsIG5vdy4gSXMgYHJzaV9wcmVwYXJlX2JlYWNvbmAgYSBzdGF0aWMgZnVuY3Rpb24/IE5vcGUsIGl0JiMzOTtzIGFjdHVhbGx5IGV4cG9ydGVkIGluIGByc2lfaGFsLmhgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4uLiBpdCYjMzk7cyBjbGVhcmx5IGludGVuZGVkIHRvIGJlIGNhbGxlZCBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0uIEkmIzM5O2xsIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuIE5vdywgd2hhdCBhYm91dCBgcnNpX3NlbmRfYmVhY29uYD8gQWgsIHRoYXQgb25lICppcyogc3RhdGljLCBhbmQgaXQmIzM5O3MgZGVmaW5lZCB3aXRoaW4gYHJzaV85MXhfbWdtdC5jYC4gT2theSwgdGhhdCBnaXZlcyBtZSBhIGNsZWFyIGlkZWEgb2Ygd2hlcmUgdGhpcyBwaWVjZSBvZiB0aGUgcHV6emxlIGZpdHMuCgpJIHdhbnQgdG8gbWFrZSBzdXJlIEkmIzM5O20gZnVsbHkgYXdhcmUgb2YgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4gU28sIGxldCBtZSBxdWlja2x5IHJlLWV4YW1pbmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBXZSBoYXZlIGBXTEFOX1ZFTkRPUl9SU0lgLCBgUlNJXzkxWGAsIGFuZCBgUlNJX1VTQmAuIEFyZSB0aGVyZSBhbnkgb3RoZXJzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBvZiB0aGVzZSBmdW5jdGlvbnM/IEl0JiMzOTtzIGFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoLiBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL01ha2VmaWxlYCBqdXN0IHRvIHZlcmlmeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDk6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UlNJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZT03PXJzaV85MXgteVx0XHRcdCYjNDM7PSByc2lfOTF4X3BzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZTo4OnJzaV85MXgtJChDT05GSUdfUlNJX0NPRVgpXHQmIzQzOz0gcnNpXzkxeF9jb2V4Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZTo5OnJzaV85MXgtJChDT05GSUdfUlNJX0RFQlVHRlMpXHQmIzQzOz0gcnNpXzkxeF9kZWJ1Z2ZzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZS0xMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvTWFrZWZpbGU9MTI9cnNpX3NkaW8teVx0XHRcdCYjNDM7PSByc2lfOTF4X3NkaW8ubyByc2lfOTF4X3NkaW9fb3BzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfUlNJXzkxWCkgXHRcdCYjNDM7PSByc2lfOTF4Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfUlNJX1NESU8pXHRcdCYjNDM7PSByc2lfc2Rpby5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvTWFrZWZpbGU6MTU6b2JqLSQoQ09ORklHX1JTSV9VU0IpXHRcdCYjNDM7PSByc2lfdXNiLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzYyNAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgUlNJIG1vZHVsZXMgaGVyZSwgc3BlY2lmaWNhbGx5IGBSU0lfOTFYYCBhbmQgYFJTSV9VU0JgIC0gdGhvc2UgYXJlIHRoZSBjb3JlIG9uZXMuIFRoZSBgV0xBTl9WRU5ET1JfUlNJYCBzZWVtcyB0byBiZSBhbiBlbmFibGluZyBmbGFnLCBsaWtlbHkgZm9yIGEgbWVudSBvcHRpb24uIE1ha2VzIHNlbnNlIHRvIGluY2x1ZGUgdGhhdCBhbG9uZyB3aXRoIHRoZSBjb3JlIGRyaXZlcnMsIHNvIGxldCYjMzk7cyBhZGQgYFdMQU5fVkVORE9SX1JTSWAsIGBSU0lfOTFYYCwgYW5kIGBSU0lfVVNCYCB0byB0aGUgY29uZmlndXJhdGlvbi4KCkFoLCByaWdodC4gU2luY2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB3aXJlbGVzcywgYE1BQzgwMjExYCBpcyBhbG1vc3QgY2VydGFpbmx5IGEgZGVwZW5kZW5jeSwgYmVpbmcgYSBwcmV0dHkgZnVuZGFtZW50YWwgd2lyZWxlc3MgZHJpdmVyIGNvbXBvbmVudC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIGZvciBhbnkgZXhwbGljaXQgZGVwZW5kZW5jaWVzIGRlZmluZWQgaW4gdGhlIFJTSSBkcml2ZXImIzM5O3MgS2NvbmZpZyBmaWxlLCBzbyBsZXQmIzM5O3MgcXVpY2tseSBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwOToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc9MTU9Y29uZmlnIFJTSV85MVhcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0xNy1cdHNlbGVjdCBCVF9IQ0lSU0kgaWYgUlNJX0NPRVhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnOjE4Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMTktXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc9MjM9Y29uZmlnIFJTSV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0yNC1cdGJvb2wgXCYjMzQ7UmVkcGluZSBTaWduYWxzIEluYyBkZWJ1ZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZzoyNTpcdGRlcGVuZHMgb24gUlNJXzkxWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMjYtXHRkZWZhdWx0IHlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZz0zMT1jb25maWcgUlNJX1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTMyLVx0dHJpc3RhdGUgXCYjMzQ7UmVkcGluZSBTaWduYWxzIFNESU8gYnVzIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnOjMzOlx0ZGVwZW5kcyBvbiBNTUMgXHUwMDI2XHUwMDI2IFJTSV85MVhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTM0LVx0ZGVmYXVsdCBtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc9Mzk9Y29uZmlnIFJTSV9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTQwLVx0dHJpc3RhdGUgXCYjMzQ7UmVkcGluZSBTaWduYWxzIFVTQiBidXMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6NDE6XHRkZXBlbmRzIG9uIFVTQiBcdTAwMjZcdTAwMjYgUlNJXzkxWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctNDItXHRkZWZhdWx0IG1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZz00Nz1jb25maWcgUlNJX0NPRVhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtSZWRwaW5lIFNpZ25hbHMgV0xBTiBCVCBDb2V4aXN0ZW5jZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZzo0OTpcdGRlcGVuZHMgb24gQlQgXHUwMDI2XHUwMDI2IFJTSV85MVhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnOjUwOlx0ZGVwZW5kcyBvbiAhKEJUPW0gXHUwMDI2XHUwMDI2IFJTSV85MVg9eSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTUxLVx0ZGVmYXVsdCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDA5OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0NDUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSU0kgQmVhY29uIFByZXBhcmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGVhbGluZyB3aXRoIGFuIFJTSSBpc3N1ZSBoZXJlLCBhbmQgdGhlIGtlcm5lbCBtb2R1bGUgYE1BQzgwMjExYCBpcyBhbG1vc3QgY2VydGFpbmx5IGludm9sdmVkIOKAkyBpdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIHdpcmVsZXNzIHN0YWNrLCBhbmQgbGlrZWx5IGVuYWJsZWQuIE15IGZpcnN0IHN0ZXAgaXMgdG8gY29uZmlybSB0aGUgc3BlY2lmaWMgUlNJLXJlbGF0ZWQgbW9kdWxlcyBhbmQgc2V0dGluZ3MsIHNvIEkgbmVlZCB0byBtYWtlIGEgbm90ZSB0byBjaGVjayBmb3IgYFdMQU5fVkVORE9SX1JTSWAsIGBSU0lfOTFYYCwgYW5kIGBSU0lfVVNCYCBjb25maWd1cmF0aW9ucy4KCk5vdywgbXkga2V5IHF1ZXN0aW9uIGlzIGFyb3VuZCBgcnNpX3ByZXBhcmVfYmVhY29uYC4gSXMgdGhpcyBzb21ldGhpbmcgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlciBzcGFjZSwgb3IgaXMgaXQgcHVyZWx5IGEgaGFyZHdhcmUtZHJpdmVuIGZ1bmN0aW9uPyBJIGtub3cgaXQmIzM5O3MgY2FsbGVkIGZyb20gYHJzaV9zZW5kX2JlYWNvbmAsIGFuZCB0aGF0IGZ1bmN0aW9uIGlzLCBpbiB0dXJuLCBjYWxsZWQgZnJvbSBgcnNpX21nbXRfcGt0X3JlY3ZgLiBUaGF0IG1lYW5zIHRoZSBwcmVwYXJhdGlvbiBvZiB0aGUgYmVhY29uIGlzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gbWFuYWdlbWVudCBwYWNrZXRzLgoKT2theSwgYHJzaV9tZ210X3BrdF9yZWN2YCBpcyB0cmlnZ2VyZWQgdXBvbiByZWNlaXZpbmcgYSBwYWNrZXQgZnJvbSB0aGUgaGFyZHdhcmUuIFNvLCBmcm9tIHRoYXQgcGF0aCwgSSBjYW4gZGVmaW5pdGVseSByZWFjaCBgcnNpX3ByZXBhcmVfYmVhY29uYCB0aHJvdWdoIGhhcmR3YXJlIHBhY2tldCBpbmplY3Rpb24gKGUuZy4gdXNpbmcgYSBVU0IgZ2FkZ2V0IHNldHVwKS4gQnV0IHRoYXQgZG9lc24mIzM5O3QgdGVsbCBtZSBpZiBpdCYjMzk7cyB1c2VyIHNwYWNlIGFjY2Vzc2libGUuIEkgbmVlZCB0byBiZSBjZXJ0YWluIHRoYXQgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIGF0dGFjayBzdXJmYWNlLiBTbywgSSB3aWxsIGNoZWNrIGlmIGByc2lfc2VuZF9iZWFjb25gIGlzIGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2UgaW4gdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDA5OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JzaV9zZW5kX2JlYWNvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jPTE3Mzg9aW50IHJzaV9zZXRfYW50ZW5uYShzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCB1OCBhbnRlbm5hKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYy0xNzYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jOjE3NjM6c3RhdGljIGludCByc2lfc2VuZF9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYy0xNzY0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM9MjE4NT1pbnQgcnNpX21nbXRfcGt0X3JlY3Yoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgdTggKm1zZylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMjIyNC1cdFx0XHRyZXR1cm4gLTE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM6MjIyNTpcdFx0cnNpX3NlbmRfYmVhY29uKGNvbW1vbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMjIyNi1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDA5OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyMzAKCQkJCQkJCW91dHB1dDogMTU2CgkJCQkJCQl0aG91Z2h0czogMTc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uOiBIYXJkd2FyZS1UcmlnZ2VyZWQgQmVhY29uIFByb2Nlc3NpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBwYXRoLCBhbmQgaXQmIzM5O3MgYWxsIG9yaWdpbmF0aW5nIGZyb20gYHJzaV9tZ210X3BrdF9yZWN2YC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCYjMzk7cyBoYXJkd2FyZS10cmlnZ2VyZWQsIHdoaWNoIGlzIGtleS4gVGhpcyBpcyBwZXJmZWN0ISBUaGUgd2hvbGUgYmVhdXR5IG9mIGl0IGlzIHRoYXQgd2UgY2FuIGZ1enogVVNCIGRldmljZXMgdXNpbmcgYHZoY2lgLCB0aGUgdmlydHVhbCBVU0IgaG9zdCBjb250cm9sbGVyLiBUaGF0IG1lYW5zIHdlIGhhdmUgYSBjbGVhbiBhdHRhY2sgc3VyZmFjZSBoZXJlLgoKSSBuZWVkIHRvIGZvY3VzIG9uIGEgZmV3IGtleSBzeW1ib2xzOiBgcnNpX3ByZXBhcmVfYmVhY29uYCBhbmQgYHJzaV9zZW5kX2JlYWNvbmAuIFRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgc2VlbSBtb3N0IHJlbGV2YW50IHRvIHRoZSBleHBsb2l0LgoKTm93IGZvciBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGVudmlyb25tZW50LiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBXTEFOX1ZFTkRPUl9SU0lgLCBgUlNJXzkxWGAsIGFuZCBgUlNJX1VTQmAgY29uZmlndXJhdGlvbnMuCgpFc3NlbnRpYWxseSwgdGhpcyBwYXRjaCBpcyBmaXhpbmcgYSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBgcnNpX3ByZXBhcmVfYmVhY29uYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGZvciBgc2tiX3RhaWxyb29tYCBiZWZvcmUgY29weWluZyBkYXRhLCB3aGljaCBpcyBnb29kLiBUaGlzIHZ1bG5lcmFiaWxpdHkgaXMgcmVhY2hhYmxlIHdoZW4gdGhlIGRyaXZlciBoYW5kbGVzIGEgYmVhY29uIHJlcXVlc3QgY29taW5nIGRpcmVjdGx5IGZyb20gdGhlIGhhcmR3YXJlLiBUaGUgZmFjdCB0aGF0IHRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIChgUlNJX1VTQmApIGlzIGNydWNpYWwgaGVyZS4gVGhhdCYjMzk7cyBvdXIgZnV6emluZyBlbnRyeSBwb2ludC4gV2UgY2FuIGV4cGxvaXQgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVzc2VudGlhbGx5IGltcGVyc29uYXRpbmcgYSBtYWxpY2lvdXMgVVNCIGRldmljZSB1c2luZyB0aGUgVVNCIGdhZGdldCBzdWJzeXN0ZW0gKGB2aGNpYCkuIFdlIGNhbiBjcmFmdCBzcGVjaWZpYyBVU0IgcGFja2V0cyB0aGF0IHRyaWdnZXIgdGhpcyBiZWFjb24gaGFuZGxpbmcsIGFuZCBob3BlZnVsbHksIHRyaWdnZXIgdGhlIHZ1bG5lcmFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDA5OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtXTEFOX1ZFTkRPUl9SU0kmIzM0OywKICAgICYjMzQ7UlNJXzkxWCYjMzQ7LAogICAgJiMzNDtSU0lfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnNpX3ByZXBhcmVfYmVhY29uJiMzNDssCiAgICAmIzM0O3JzaV9zZW5kX2JlYWNvbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3cgaW4gYHJzaV9wcmVwYXJlX2JlYWNvbmAgYnkgY2hlY2tpbmcgYHNrYl90YWlscm9vbWAgYmVmb3JlIGNvcHlpbmcgZGF0YS4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgd2hlbiB0aGUgZHJpdmVyIHByb2Nlc3NlcyBhIGJlYWNvbiByZXF1ZXN0IGZyb20gdGhlIGhhcmR3YXJlLiBTaW5jZSB0aGUgZHJpdmVyIHN1cHBvcnRzIFVTQiAoYFJTSV9VU0JgKSwgdGhpcyBjb2RlIHBhdGggY2FuIGJlIHRyaWdnZXJlZCBhbmQgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgZW11bGF0aW5nIGEgbWFsaWNpb3VzIFVTQiBkZXZpY2UgdmlhIHRoZSBVU0IgZ2FkZ2V0IHN1YnN5c3RlbSAodmhjaSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU5fVkVORE9SX1JTSSYjMzQ7LAogICAgJiMzNDtSU0lfOTFYJiMzNDssCiAgICAmIzM0O1JTSV9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyc2lfcHJlcGFyZV9iZWFjb24mIzM0OywKICAgICYjMzQ7cnNpX3NlbmRfYmVhY29uJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBpbiBgcnNpX3ByZXBhcmVfYmVhY29uYCBieSBjaGVja2luZyBgc2tiX3RhaWxyb29tYCBiZWZvcmUgY29weWluZyBkYXRhLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB3aGVuIHRoZSBkcml2ZXIgcHJvY2Vzc2VzIGEgYmVhY29uIHJlcXVlc3QgZnJvbSB0aGUgaGFyZHdhcmUuIFNpbmNlIHRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIChgUlNJX1VTQmApLCB0aGlzIGNvZGUgcGF0aCBjYW4gYmUgdHJpZ2dlcmVkIGFuZCBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBieSBlbXVsYXRpbmcgYSBtYWxpY2lvdXMgVVNCIGRldmljZSB2aWEgdGhlIFVTQiBnYWRnZXQgc3Vic3lzdGVtICh2aGNpKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDA5OjEwOjA2LjUyNjQ2MzkxOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTg1OTQ0ODQyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJXTEFOX1ZFTkRPUl9SU0lcIixcbiAgICBcIlJTSV85MVhcIixcbiAgICBcIlJTSV9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyc2lfcHJlcGFyZV9iZWFjb25cIixcbiAgICBcInJzaV9zZW5kX2JlYWNvblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBpbiBgcnNpX3ByZXBhcmVfYmVhY29uYCBieSBjaGVja2luZyBgc2tiX3RhaWxyb29tYCBiZWZvcmUgY29weWluZyBkYXRhLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB3aGVuIHRoZSBkcml2ZXIgcHJvY2Vzc2VzIGEgYmVhY29uIHJlcXVlc3QgZnJvbSB0aGUgaGFyZHdhcmUuIFNpbmNlIHRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIChgUlNJX1VTQmApLCB0aGlzIGNvZGUgcGF0aCBjYW4gYmUgdHJpZ2dlcmVkIGFuZCBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBieSBlbXVsYXRpbmcgYSBtYWxpY2lvdXMgVVNCIGRldmljZSB2aWEgdGhlIFVTQiBnYWRnZXQgc3Vic3lzdGVtICh2aGNpKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDk6MTA6MDYuNTI2NDY5OTY4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDY0ODkzNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3ZTdhMGUxNDM3NzA5ZjA5MThkZWJiOWQ2YjNjMjRmNmI5NWQ0ZmI2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDUgMDk6MTA6MDUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9oYWwuY1xcbmluZGV4IGEwYzM2MTQ0ZWIwYjIzLi41MDEwNzExMDRhOWZlNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9oYWwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jXFxuQEAgLTQzMSw2ICs0MzEsNyBAQCBpbnQgcnNpX3ByZXBhcmVfYmVhY29uKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWY7XFxuIFxcdHN0cnVjdCBza19idWZmICptYWNfYmNuO1xcbiBcXHR1OCB2YXBfaWQgPSAwLCBpO1xcbitcXHR1bnNpZ25lZCBpbnQgdGFpbHJvb207XFxuIFxcdHUxNiB0aW1fb2Zmc2V0ID0gMDtcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBSU0lfTUFYX1ZJRlM7IGkrKykge1xcbkBAIC00ODAsNiArNDgxLDEzIEBAIGludCByc2lfcHJlcGFyZV9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0aWYgKG1hY19iY24tXFx1MDAzZWRhdGFbdGltX29mZnNldCArIDJdID09IDApXFxuIFxcdFxcdGJjbl9mcm0tXFx1MDAzZWZyYW1lX2luZm8gfD0gY3B1X3RvX2xlMTYoUlNJX0RBVEFfREVTQ19EVElNX0JFQUNPTik7XFxuIFxcbitcXHR0YWlscm9vbSA9IHNrYl90YWlscm9vbShza2IpO1xcbitcXHRpZiAodGFpbHJvb20gXFx1MDAzYyBGUkFNRV9ERVNDX1NaIHx8XFxuK1xcdCAgICBtYWNfYmNuLVxcdTAwM2VsZW4gXFx1MDAzZSB0YWlscm9vbSAtIEZSQU1FX0RFU0NfU1opIHtcXG4rXFx0XFx0ZGV2X2tmcmVlX3NrYihtYWNfYmNuKTtcXG4rXFx0XFx0cmV0dXJuIC1FTVNHU0laRTtcXG4rXFx0fVxcbitcXG4gXFx0bWVtY3B5KFxcdTAwMjZza2ItXFx1MDAzZWRhdGFbRlJBTUVfREVTQ19TWl0sIG1hY19iY24tXFx1MDAzZWRhdGEsIG1hY19iY24tXFx1MDAzZWxlbik7XFxuIFxcdHNrYl9wdXQoc2tiLCBtYWNfYmNuLVxcdTAwM2VsZW4gKyBGUkFNRV9ERVNDX1NaKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDA5OjEwOjA2Ljg3MzkwNzI0NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE1NTExOTk2OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5fVkVORE9SX1JTSVwiLFxuICAgIFwiUlNJXzkxWFwiLFxuICAgIFwiUlNJX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJzaV9wcmVwYXJlX2JlYWNvblwiLFxuICAgIFwicnNpX3NlbmRfYmVhY29uXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93IGluIGByc2lfcHJlcGFyZV9iZWFjb25gIGJ5IGNoZWNraW5nIGBza2JfdGFpbHJvb21gIGJlZm9yZSBjb3B5aW5nIGRhdGEuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgYSBiZWFjb24gcmVxdWVzdCBmcm9tIHRoZSBoYXJkd2FyZS4gU2luY2UgdGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgKGBSU0lfVVNCYCksIHRoaXMgY29kZSBwYXRoIGNhbiBiZSB0cmlnZ2VyZWQgYW5kIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVtdWxhdGluZyBhIG1hbGljaW91cyBVU0IgZGV2aWNlIHZpYSB0aGUgVVNCIGdhZGdldCBzdWJzeXN0ZW0gKHZoY2kpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDdlN2EwZTE0Mzc3MDlmMDkxOGRlYmI5ZDZiM2MyNGY2Yjk1ZDRmYjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCA1IDA5OjEwOjA1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9oYWwuY1xuaW5kZXggYTBjMzYxNDRlYjBiMjMuLjUwMTA3MTEwNGE5ZmU2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jXG5AQCAtNDMxLDYgKzQzMSw3IEBAIGludCByc2lfcHJlcGFyZV9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWY7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqbWFjX2JjbjtcbiBcdHU4IHZhcF9pZCA9IDAsIGk7XG4rXHR1bnNpZ25lZCBpbnQgdGFpbHJvb207XG4gXHR1MTYgdGltX29mZnNldCA9IDA7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBSU0lfTUFYX1ZJRlM7IGkrKykge1xuQEAgLTQ4MCw2ICs0ODEsMTMgQEAgaW50IHJzaV9wcmVwYXJlX2JlYWNvbihzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0aWYgKG1hY19iY24tXHUwMDNlZGF0YVt0aW1fb2Zmc2V0ICsgMl0gPT0gMClcbiBcdFx0YmNuX2ZybS1cdTAwM2VmcmFtZV9pbmZvIHw9IGNwdV90b19sZTE2KFJTSV9EQVRBX0RFU0NfRFRJTV9CRUFDT04pO1xuIFxuK1x0dGFpbHJvb20gPSBza2JfdGFpbHJvb20oc2tiKTtcbitcdGlmICh0YWlscm9vbSBcdTAwM2MgRlJBTUVfREVTQ19TWiB8fFxuK1x0ICAgIG1hY19iY24tXHUwMDNlbGVuIFx1MDAzZSB0YWlscm9vbSAtIEZSQU1FX0RFU0NfU1opIHtcbitcdFx0ZGV2X2tmcmVlX3NrYihtYWNfYmNuKTtcbitcdFx0cmV0dXJuIC1FTVNHU0laRTtcbitcdH1cbitcbiBcdG1lbWNweShcdTAwMjZza2ItXHUwMDNlZGF0YVtGUkFNRV9ERVNDX1NaXSwgbWFjX2Jjbi1cdTAwM2VkYXRhLCBtYWNfYmNuLVx1MDAzZWxlbik7XG4gXHRza2JfcHV0KHNrYiwgbWFjX2Jjbi1cdTAwM2VsZW4gKyBGUkFNRV9ERVNDX1NaKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDA5OjEwOjA2Ljg3MzkwOTQ5NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NjQ0MzAzMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEJ1ZmZlciBPdmVyZmxvdyBGaXggaW4gYSBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9oYWwuY2AuIFRoZSBjb3JlIGNoYW5nZSBpcyBpbiBgcnNpX3ByZXBhcmVfYmVhY29uYCwgc3BlY2lmaWNhbGx5IGEgY2hlY2sgZm9yIGBza2JfdGFpbHJvb20oc2tiKWAgYmVmb3JlIGFueSBkYXRhIGlzIGNvcGllZC4gVGhhdCdzIGdvb2QsIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBpbXByb3ZlbWVudCBhaW1lZCBhdCBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdy4gQWx3YXlzIGdvb2QgdG8gc2VlIHRob3NlLlxuXG5NeSBuZXh0IHRob3VnaHQgaXMsIGhvdyBsaWtlbHkgaXMgdGhpcyB0byBhY3R1YWxseSBiZSB0cmlnZ2VyZWQ/IExldCdzIGZpZ3VyZSBvdXQgaWYgdGhpcyBkcml2ZXIsIGByc2lfOTF4YCwgYSBSZWRwaW5lIFNpZ25hbHMgSW5jLiA5MXggV0xBTiBkcml2ZXIsIGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhhdCdzIHdoZXJlIGEgbG90IG9mIHRoZXNlIHZ1bG5lcmFiaWxpdGllcyBnZXQgZm91bmQsIGFuZCB3aGVyZSB0ZXN0aW5nIGlzIGVhc2llc3QuIElmIGl0J3Mgc29tZXRoaW5nIHRoYXQgb25seSBzaG93cyB1cCBpbiBhIHJhcmUgaGFyZHdhcmUgY29uZmlndXJhdGlvbiwgaXQncyBhIHZlcnkgZGlmZmVyZW50IGJlYXN0IHRoYW4gc29tZXRoaW5nIHRoYXQncyBwcmVzZW50IGJ5IGRlZmF1bHQgaW4gYSBsb3Qgb2YgY2xvdWQgaW5zdGFuY2VzLCByaWdodD9cblxuSSdsbCBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnYCBmaWxlLiBUaGF0J2xsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBpdHMgYnVpbGQgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgYWN0aXZhdGlvbiBjb25kaXRpb25zIHdpdGhpbiB0aGUga2VybmVsLiBOZWVkIHRvIGtub3cgdGhlIGNpcmN1bXN0YW5jZXMgdG8gcHJvcGVybHkgZXZhbHVhdGUgdGhpcyBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwOToxMDoxMi4zMzgzNDE4MjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAwNTgxNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnNpX3ByZXBhcmVfYmVhY29uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmM9Mzg4PWludCByc2lfc2VuZF9idF9wa3Qoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jLTQyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9oYWwuYzo0MjU6aW50IHJzaV9wcmVwYXJlX2JlYWNvbihzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jLTQyNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM9MTc2Mz1zdGF0aWMgaW50IHJzaV9zZW5kX2JlYWNvbihzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTE3NzYtXFx0XFx0c2tiX3B1bGwoc2tiLCAoNjQgLSBkd29yZF9hbGlnbl9ieXRlcykpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYzoxNzc3OlxcdGlmIChyc2lfcHJlcGFyZV9iZWFjb24oY29tbW9uLCBza2IpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTE3NzgtXFx0XFx0cnNpX2RiZyhFUlJfWk9ORSwgXFxcIkZhaWxlZCB0byBwcmVwYXJlIGJlYWNvblxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2hhbC5oPTIyNT1pbnQgcnNpX3ByZXBhcmVfZGF0YV9kZXNjKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIHN0cnVjdCBza19idWZmICpza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfaGFsLmg6MjI2OmludCByc2lfcHJlcGFyZV9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9oYWwuaC0yMjctaW50IHJzaV9zZW5kX3BrdF90b19idXMoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDA5OjEwOjEyLjM5ODQwOTQxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI1NjIxNjAxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gZGVlcCBpbiBteSBkb21haW46XG5cbioqUlNJIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdGhpcyBzdHJhaWdodC4gTXkgbWVudGFsIGNoZWNrbGlzdCBmb3IgdGhlIGN1cnJlbnQgdGFzayBoYXMgbGFuZGVkIG1lIHNxdWFyZWx5IGF0IFJTSS4gSSBuZWVkIHRvIGVuc3VyZSBpdCdzIGNvbmZpZ3VyZWQgYXBwcm9wcmlhdGVseS4gVGhlIG9idmlvdXMgZmlyc3Qgc3RlcCwgYmVmb3JlIEkgZXZlbiBzdGFydCB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBkcml2ZXJzIG9yIHRoZSBidWlsZCBwcm9jZXNzLCBpcyB0byBkaXZlIGludG8gdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCdzIHRoZSBiZWRyb2NrLCB0aGUgY29uZmlndXJhdGlvbiBmb3VuZGF0aW9uIHVwb24gd2hpY2ggZXZlcnl0aGluZyBlbHNlIHJlbGF0ZWQgdG8gUlNJIHJlc3RzLiBJIG5lZWQgdG8gdmVyaWZ5IGl0cyBlbmFibGVkIHN0YXRlLCB1bmRlcnN0YW5kIGFueSBkZXBlbmRlbmNpZXMgaXQgaGFzLCBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZmxhZ3Mgb3Igb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoZSBzcGVjaWZpYyBjb250ZXh0IEknbSBjdXJyZW50bHkgd29ya2luZyB3aXRoaW4uIExldCdzIHNlZSB3aGF0IHRoZSBjb25maWd1cmF0aW9uIGVjb3N5c3RlbSBpcyBzYXlpbmcgYWJvdXQgUlNJJ3MgY3VycmVudCBzdGF0dXMgYW5kIHBvdGVudGlhbCBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTk0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDk6MTA6MTUuNjU0NjI3MzU5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0Nzg3ODI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSU0lfOTFYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc9MTM9aWYgV0xBTl9WRU5ET1JfUlNJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6MTU6Y29uZmlnIFJTSV85MVhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0xNi1cXHR0cmlzdGF0ZSBcXFwiUmVkcGluZSBTaWduYWxzIEluYyA5MXggV0xBTiBkcml2ZXIgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDk6MTA6MTUuNzA5NDIxNzI3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5NzkzNTIxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogQnVzIENvbXBhdGliaWxpdHkgSW5xdWlyeSoqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHRha2luZyBhIGZyZXNoIGxvb2sgYXQgdGhpcywgYW5kIHRoZSBmaXJzdCBvcmRlciBvZiBidXNpbmVzcyBpcyBlc3RhYmxpc2hpbmcgaXRzIGZvdW5kYXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGltbWVkaWF0ZWx5IGZvY3VzZXMgb24gKipidXMgc3VwcG9ydCoqLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdW5kZXJseWluZyBhcmNoaXRlY3R1cmUgYW5kIHdoYXQgc3BlY2lmaWMgYnVzIGludGVyZmFjZXMgYXJlIGNvbXBhdGlibGUuIFRoaXMgaXMgZnVuZGFtZW50YWw7IHdpdGhvdXQgdGhpcyBiYXNpYyB1bmRlcnN0YW5kaW5nLCBmdXJ0aGVyIGFuYWx5c2lzIGlzIHBvaW50bGVzcy4gSXQgZGljdGF0ZXMgZXZlcnl0aGluZyBmcm9tIGRhdGEgdGhyb3VnaHB1dCBhbmQgY29tbXVuaWNhdGlvbiBwcm90b2NvbHMgdG8gdGhlIHBvdGVudGlhbCBmb3IgaW50ZWdyYXRpb24gd2l0aGluIGV4aXN0aW5nIHN5c3RlbXMuIFNvLCB0aGUgcXVlc3Rpb24gaXM6IHdoYXQgYnVzZXMgZG9lcyB0aGlzIHRoaW5nIHBsYXkgbmljZSB3aXRoPyBLbm93aW5nIHRoZSBhbnN3ZXIgdW5sb2NrcyB0aGUgbmV4dCBsYXllciBvZiBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzEyLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwOToxMDoxOS41MDczNTkwMDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc1NjU5MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJTSV9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZz0xMz1pZiBXTEFOX1ZFTkRPUl9SU0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0xNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZzoxNTpjb25maWcgUlNJXzkxWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTE2LVxcdHRyaXN0YXRlIFxcXCJSZWRwaW5lIFNpZ25hbHMgSW5jIDkxeCBXTEFOIGRyaXZlciBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6MjM6Y29uZmlnIFJTSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMjQtXFx0Ym9vbCBcXFwiUmVkcGluZSBTaWduYWxzIEluYyBkZWJ1ZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6MzE6Y29uZmlnIFJTSV9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIlJlZHBpbmUgU2lnbmFscyBTRElPIGJ1cyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6Mzk6Y29uZmlnIFJTSV9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy00MC1cXHR0cmlzdGF0ZSBcXFwiUmVkcGluZSBTaWduYWxzIFVTQiBidXMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnOjQ3OmNvbmZpZyBSU0lfQ09FWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIlJlZHBpbmUgU2lnbmFscyBXTEFOIEJUIENvZXhpc3RlbmNlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDA5OjEwOjE5LjU2NDkzMDA2NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTE0NDMyNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipVU0IgRnV6emluZyBQb3RlbnRpYWwgYW5kIEJlYWNvbiBSZWFjaGFiaWxpdHkqKlxuXG5SaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgdGhpcyBzeXN0ZW0gc3VwcG9ydHMgVVNCLCBzcGVjaWZpY2FsbHkgdmlhIGBSU0lfVVNCYC4gVGhpcyBpcyBleGNlbGxlbnQgbmV3cyEgSWYgVVNCIGlzIHN1cHBvcnRlZCwgdGhhdCBvcGVucyB0aGUgZG9vciB0byBmdXp6aW5nIGl0IHVzaW5nIHZoY2kgKHRoZSBVU0IgZ2FkZ2V0IGludGVyZmFjZSkuIFRoYXQncyBhIGNsYXNzaWMgYW5kIGVmZmVjdGl2ZSBhdHRhY2sgdmVjdG9yLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaWYgSSBjYW4gcmVhY2ggYHJzaV9wcmVwYXJlX2JlYWNvbmAuIFNwZWNpZmljYWxseSwgY2FuIEkgdHJpZ2dlciBpdCwgYW5kIHRoZW4gd2hhdCBjYW4gSSBkbyB3aXRoIGl0P1xuXG5Pa2F5LCBkaWdnaW5nIGluIGEgYml0IGRlZXBlciwgSSBzZWUgdGhhdCBgcnNpX3ByZXBhcmVfYmVhY29uYCBpcyBjYWxsZWQgZnJvbSBgcnNpX3NlbmRfYmVhY29uYC4gSSByZW1lbWJlciB0aGF0IGZ1bmN0aW9uLi4uIHRoYXQncyBpbiBgcnNpXzkxeF9tZ210LmNgLiBOb3cgSSBoYXZlIGEgYnJlYWRjcnVtYiB0cmFpbCB0byBmb2xsb3cuIFRpbWUgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCBzZWUgd2hhdCBJIGNhbiB1bmNvdmVyLiBNeSB0aG91Z2h0IHByb2Nlc3MgaGVyZSBpcyB0byBzZWUgaWYgSSBjYW4gcmVhY2ggYW5kIGNvbnRyb2wgYHJzaV9wcmVwYXJlX2JlYWNvbmAgdGhyb3VnaCB0aGUgY2hhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NTksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwOToxMDoyMy45NTYzNzY0OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc0MjczMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnNpX3NlbmRfYmVhY29uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jPTE3Mzg9aW50IHJzaV9zZXRfYW50ZW5uYShzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCB1OCBhbnRlbm5hKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTE3NjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jOjE3NjM6c3RhdGljIGludCByc2lfc2VuZF9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMTc2NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM9MjE4NT1pbnQgcnNpX21nbXRfcGt0X3JlY3Yoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgdTggKm1zZylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYy0yMjI0LVxcdFxcdFxcdHJldHVybiAtMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM6MjIyNTpcXHRcXHRyc2lfc2VuZF9iZWFjb24oY29tbW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMjIyNi1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDk6MTA6MjQuMDEzODA5MTY4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4OTc1MDE0NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEJlYWNvbiBUcmFuc21pc3Npb24gUGF0aCoqXG5cblJpZ2h0LCBzbyBgcnNpX3NlbmRfYmVhY29uYCBpcyBjYWxsZWQgZnJvbSB3aXRoaW4gYHJzaV9tZ210X3BrdF9yZWN2YC4gVGhhdCdzIHRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgaW5jb21pbmcgbWFuYWdlbWVudCBwYWNrZXRzLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGJlYWNvbiB0cmFuc21pc3Npb24gZmxvdy4gVG8gZG8gdGhhdCwgSSBuZWVkIHRvIGtub3cgKndoZXJlKiBgcnNpX21nbXRfcGt0X3JlY3ZgIGl0c2VsZiBpcyBiZWluZyBjYWxsZWQgZnJvbS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGVyZSB0byBmaWd1cmUgb3V0IHRoZSBpbml0aWF0aW5nIGV2ZW50LiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBjYWxsIHN0YWNrcyBhbmQgc2VlIHdoYXQncyB0cmlnZ2VyaW5nIHRoZSBtYW5hZ2VtZW50IHBhY2tldCBwcm9jZXNzaW5nLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBob3cgYmVhY29ucyBhcmUgaW5pdGlhdGVkIGFuZCBwcm9wYWdhdGVkIHdpdGhpbiB0aGUgc3lzdGVtLiBMZXQncyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDYzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDk6MTA6MjcuOTExMzEyOTMzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzU5ODQ2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyc2lfbWdtdF9wa3RfcmVjdlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2NvZXguYz02OD1pbnQgcnNpX2NvZXhfcmVjdl9wa3Qoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgdTggKm1zZylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2NvZXguYy03OS1cXHRcXHRyc2lfZGJnKElORk9fWk9ORSwgXFxcInNsZWVwIG5vdGlmeSByZWNlaXZlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jOjgwOlxcdFxcdHJzaV9tZ210X3BrdF9yZWN2KGNvbW1vbiwgbXNnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmMtODEtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWluLmM9MTU3PWludCByc2lfcmVhZF9wa3Qoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgdTggKnJ4X3BrdCwgczMyIHJjdl9wa3RfbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jLTE5MC0jZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWluLmM6MTkxOlxcdFxcdFxcdFxcdHJzaV9tZ210X3BrdF9yZWN2KGNvbW1vbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWluLmMtMTkyLVxcdFxcdFxcdFxcdFxcdFxcdCAgKGZyYW1lX2Rlc2MgKyBvZmZzZXQpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uYy0yMDYtXFx0XFx0Y2FzZSBSU0lfV0lGSV9NR01UX1E6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jOjIwNzpcXHRcXHRcXHRyc2lfbWdtdF9wa3RfcmVjdihjb21tb24sIChmcmFtZV9kZXNjICsgb2Zmc2V0KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jLTIwOC1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYz0yMTI2PWludCByc2lfaGFuZGxlX2NhcmRfcmVhZHkoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgdTggKm1zZylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYy0yMTc3LS8qKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYzoyMTc4OiAqIHJzaV9tZ210X3BrdF9yZWN2KCkgLSBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyB0aGUgbWFuYWdlbWVudCBwYWNrZXRzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTIxNzktICpcXHRcXHRcXHQgcmVjZWl2ZWQgZnJvbSB0aGUgaGFyZHdhcmUuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMjE4NC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM6MjE4NTppbnQgcnNpX21nbXRfcGt0X3JlY3Yoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgdTggKm1zZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMjE4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX21nbXQuaD03MTM9aW50IHJzaV9oYW5kbGVfY2FyZF9yZWFkeShzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCB1OCAqbXNnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX21nbXQuaDo3MTQ6aW50IHJzaV9tZ210X3BrdF9yZWN2KHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIHU4ICptc2cpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfbWdtdC5oLTcxNS1pbnQgcnNpX3NldF92YXBfY2FwYWJpbGl0aWVzKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIGVudW0gb3Btb2RlIG1vZGUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDA5OjEwOjI3Ljk2ODkxNjgyMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjQxNzE1MDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuXG5cbioqRnV6emluZyBQb3RlbnRpYWw6IFJTSSBVU0IgUGFja2V0IFJlY2VwdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4gVGhpcyBgcnNpX21nbXRfcGt0X3JlY3ZgIGZ1bmN0aW9uIGlzIHRyaWdnZXJlZCBieSBpbmNvbWluZyBwYWNrZXRzIGZyb20gdGhlIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgb24gdGhlIHJlY2VpdmluZyBlbmQuIFRoZSBmYWN0IHRoYXQgaXTigJlzIGxpbmtlZCB0byBhbiBgUlNJX1VTQmAgZGV2aWNlIGlzIGtleSBoZXJlLiBUaGF0IG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIFVTQiBjb25uZWN0aW9uLCBhbmQgbW9yZSBzcGVjaWZpY2FsbHksIGxpa2VseSB1c2luZyBhIFVTQiBnYWRnZXQgc2V0dXAgbGlrZSBgdmhjaWAgZm9yIHRoZSBob3N0IHRvIGVtdWxhdGUgaGFyZHdhcmUgb24gdGhlIGRldmljZSBzaWRlLlxuXG5TbywgbG9naWNhbGx5IHNwZWFraW5nLCB0aGlzIGlzIHJlYWNoYWJsZSBjb2RlLCBhbmQgSSBzZWUgYSBodWdlIGZ1enppbmcgb3Bwb3J0dW5pdHkuIFdlIGNhbiBjcmFmdCBhbmQgaW5qZWN0IG1hbGljaW91cyBwYWNrZXRzIGZyb20gdGhlIFwiaGFyZHdhcmVcIiBzaWRlIHRocm91Z2ggVVNCLCByaWdodD8gV2UnbGwgc2VlIGhvdyB0aGF0IGFwcGxpZXMgdG8gdGhlIGNvZGUuXG5cbkJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIHNob3VsZCBsb29rIGF0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCBtZSBxdWlja2x5IGV4YW1pbmUgYFdMQU5fVkVORE9SX1JTSWAsIGBSU0lfOTFYYCwgYW5kIGBSU0lfVVNCYC4gSSdsbCB3YW50IHRvIGNoZWNrIGBXTEFOX1ZFTkRPUl9SU0lgLCBsaWtlbHkgaW4gZWl0aGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZ2Agb3IsIHdvcnN0IGNhc2UsIHRoZSB0b3AtbGV2ZWwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIFRoZXNlIGZsYWdzIHdpbGwgaW5mb3JtIGhvdyB0aGUgZHJpdmVycyBhcmUgYnVpbHQgYW5kIHdoYXQgZnVuY3Rpb25hbGl0eSBpcyBjb21waWxlZCBpbnRvIHRoZSBpbWFnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ5MywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwOToxMDozMi42MTA2MzQ1ODlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0MDY0MTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBXTEFOX1ZFTkRPUl9SU0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6Mjpjb25maWcgV0xBTl9WRU5ET1JfUlNJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMy1cXHRib29sIFxcXCJSZWRwaW5lIFNpZ25hbHMgSW5jIGRldmljZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDA5OjEwOjMyLjcwNDcwNDk2NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTg2NzA3NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogUmVsZXZhbnQgTW9kdWxlcyBhbmQgQmVhY29uIFByZXBhcmF0aW9uKipcblxuUmlnaHQsIHNvIHdlJ3JlIGRpdmluZyBpbnRvIHRoZSBjb2RlYmFzZSBhbmQgaW1tZWRpYXRlbHksIEknbSB0aGlua2luZyBhYm91dCB0aG9zZSBjb3JlIG1vZHVsZXMsIHNwZWNpZmljYWxseSBgV0xBTl9WRU5ET1JfUlNJYCwgYFJTSV85MVhgLCBhbmQgYFJTSV9VU0JgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGVzZSByZXByZXNlbnQgZGlzdGluY3QgaW1wbGVtZW50YXRpb24gcGF0aHMgb3IgaGFyZHdhcmUgcmV2aXNpb25zIHdpdGhpbiB0aGUgUlNJIGZhbWlseS4gV2UgYXJlIG5vdCBqdXN0IHRhbGtpbmcgYWJvdXQganVzdCB0aG9zZSB0aHJlZSBlaXRoZXIsIHRoZXNlIGFyZSB0aGUgc3RhcnRpbmcgcG9pbnRzLlxuXG5Ob3csIGdpdmVuIHRoYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBiZWFjb24gc2V0dXAgcHJvY2Vzcy4gSSdtIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byBgcnNpX3ByZXBhcmVfYmVhY29uYC4gVGhpcyBmdW5jdGlvbiBpcyBhbG1vc3QgYWx3YXlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIGZpcm13YXJlIHN0cnVjdHVyZXMgYW5kIGJyb2FkY2FzdHMgaXRzIGFkdmVydGlzaW5nIGZyYW1lLiBJdCdsbCBnaXZlIG1lIGEgc3Ryb25nIGluZGljYXRpb24gb2Ygd2hlcmUgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbiBjYWxscyBhcmUgbmVzdGVkIGFuZCB3aGF0IG90aGVyIGFyZWFzIG9mIHRoZSBjb2RlYmFzZSBhcmUgaW1wbGljYXRlZC4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIHdoYXQgZnVuY3Rpb25hbGl0eSBpcyBsaWtlbHkgdG8gYmUgaW1wYWN0ZWQgZHVyaW5nIGRlYnVnZ2luZywgb3IgbW9kaWZpY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDE3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDk6MTA6MzcuMjkxNDE0OTk1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODk5OTcxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyc2lfcHJlcGFyZV9iZWFjb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9oYWwuYz0zODg9aW50IHJzaV9zZW5kX2J0X3BrdChzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmMtNDI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jOjQyNTppbnQgcnNpX3ByZXBhcmVfYmVhY29uKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmMtNDI2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYz0xNzYzPXN0YXRpYyBpbnQgcnNpX3NlbmRfYmVhY29uKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMTc3Ni1cXHRcXHRza2JfcHVsbChza2IsICg2NCAtIGR3b3JkX2FsaWduX2J5dGVzKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jOjE3Nzc6XFx0aWYgKHJzaV9wcmVwYXJlX2JlYWNvbihjb21tb24sIHNrYikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMTc3OC1cXHRcXHRyc2lfZGJnKEVSUl9aT05FLCBcXFwiRmFpbGVkIHRvIHByZXBhcmUgYmVhY29uXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfaGFsLmg9MjI1PWludCByc2lfcHJlcGFyZV9kYXRhX2Rlc2Moc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9oYWwuaDoyMjY6aW50IHJzaV9wcmVwYXJlX2JlYWNvbihzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2hhbC5oLTIyNy1pbnQgcnNpX3NlbmRfcGt0X3RvX2J1cyhzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDk6MTA6MzcuMzUwNDE5ODIzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2ODI0MDgwMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gUlNJIEJlYWNvbiBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBsZXQncyB6ZXJvIGluIG9uIHNvbWUga2V5IGFyZWFzIHdpdGhpbiB0aGlzIFJTSSBjb2RlLiBJJ20gdGhpbmtpbmcgYHJzaV9wcmVwYXJlX2JlYWNvbmAgYW5kIGByc2lfc2VuZF9iZWFjb25gIGFyZSBleGNlbGxlbnQgc3RhcnRpbmcgcG9pbnRzIGZvciBhIGRlZXAgZGl2ZS4gVGhleSBzZWVtIGxpa2UgbG9naWNhbCBwbGFjZXMgdG8gdW5kZXJzdGFuZCBiZWFjb24gZ2VuZXJhdGlvbiBhbmQgdHJhbnNtaXNzaW9uLCB3aGljaCBhcmUgY3JpdGljYWwgZm9yIHRoZSBvdmVyYWxsIHdpcmVsZXNzIG9wZXJhdGlvbi4gSSBoYWQgYWxzbyBjb25zaWRlcmVkIGByc2lfbWdtdF9wa3RfcmVjdmAsIGFzIGl0J3Mgc3BlY2lmaWMgdG8gUlNJLCBidXQgSSdtIHNsaWdodGx5IGhlc2l0YW50LiBJdCBjb3VsZCBiZSBhIGJpdCBvZiBhIGZpcmVob3NlLCBoYW5kbGluZyAqYWxsKiBtYW5hZ2VtZW50IHBhY2tldHMsIHdoaWNoIG1pZ2h0IG1ha2UgaXQgYSBsZXNzIHByZWNpc2UgZm9jdXMgc3ltYm9sIGZvciBub3cuXG5cbkxldCdzIGRvIHNvbWUgcXVpY2sgaW52ZXN0aWdhdGlvbnMsIG5vdy4gSXMgYHJzaV9wcmVwYXJlX2JlYWNvbmAgYSBzdGF0aWMgZnVuY3Rpb24/IE5vcGUsIGl0J3MgYWN0dWFsbHkgZXhwb3J0ZWQgaW4gYHJzaV9oYWwuaGAsIHdoaWNoIGlzIGludGVyZXN0aW5nLi4uIGl0J3MgY2xlYXJseSBpbnRlbmRlZCB0byBiZSBjYWxsZWQgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBJJ2xsIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuIE5vdywgd2hhdCBhYm91dCBgcnNpX3NlbmRfYmVhY29uYD8gQWgsIHRoYXQgb25lICppcyogc3RhdGljLCBhbmQgaXQncyBkZWZpbmVkIHdpdGhpbiBgcnNpXzkxeF9tZ210LmNgLiBPa2F5LCB0aGF0IGdpdmVzIG1lIGEgY2xlYXIgaWRlYSBvZiB3aGVyZSB0aGlzIHBpZWNlIG9mIHRoZSBwdXp6bGUgZml0cy5cblxuSSB3YW50IHRvIG1ha2Ugc3VyZSBJJ20gZnVsbHkgYXdhcmUgb2YgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4gU28sIGxldCBtZSBxdWlja2x5IHJlLWV4YW1pbmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBXZSBoYXZlIGBXTEFOX1ZFTkRPUl9SU0lgLCBgUlNJXzkxWGAsIGFuZCBgUlNJX1VTQmAuIEFyZSB0aGVyZSBhbnkgb3RoZXJzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBvZiB0aGVzZSBmdW5jdGlvbnM/IEl0J3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2guIEknbGwgcXVpY2tseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZWAganVzdCB0byB2ZXJpZnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NjgsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDk6MTA6NDMuMDMyODM4MzIxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTY1MzA3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJSU0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZT03PXJzaV85MXgteVxcdFxcdFxcdCs9IHJzaV85MXhfcHMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZTo4OnJzaV85MXgtJChDT05GSUdfUlNJX0NPRVgpXFx0Kz0gcnNpXzkxeF9jb2V4Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvTWFrZWZpbGU6OTpyc2lfOTF4LSQoQ09ORklHX1JTSV9ERUJVR0ZTKVxcdCs9IHJzaV85MXhfZGVidWdmcy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL01ha2VmaWxlLTEwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL01ha2VmaWxlPTEyPXJzaV9zZGlvLXlcXHRcXHRcXHQrPSByc2lfOTF4X3NkaW8ubyByc2lfOTF4X3NkaW9fb3BzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX1JTSV85MVgpIFxcdFxcdCs9IHJzaV85MXgub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfUlNJX1NESU8pXFx0XFx0Kz0gcnNpX3NkaW8ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZToxNTpvYmotJChDT05GSUdfUlNJX1VTQilcXHRcXHQrPSByc2lfdXNiLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDk6MTA6NDMuMDkyNDk3OTc5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MzI2MTI5NzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiB0aGUgUlNJIG1vZHVsZXMgaGVyZSwgc3BlY2lmaWNhbGx5IGBSU0lfOTFYYCBhbmQgYFJTSV9VU0JgIC0gdGhvc2UgYXJlIHRoZSBjb3JlIG9uZXMuIFRoZSBgV0xBTl9WRU5ET1JfUlNJYCBzZWVtcyB0byBiZSBhbiBlbmFibGluZyBmbGFnLCBsaWtlbHkgZm9yIGEgbWVudSBvcHRpb24uIE1ha2VzIHNlbnNlIHRvIGluY2x1ZGUgdGhhdCBhbG9uZyB3aXRoIHRoZSBjb3JlIGRyaXZlcnMsIHNvIGxldCdzIGFkZCBgV0xBTl9WRU5ET1JfUlNJYCwgYFJTSV85MVhgLCBhbmQgYFJTSV9VU0JgIHRvIHRoZSBjb25maWd1cmF0aW9uLlxuXG5BaCwgcmlnaHQuIFNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCB3aXJlbGVzcywgYE1BQzgwMjExYCBpcyBhbG1vc3QgY2VydGFpbmx5IGEgZGVwZW5kZW5jeSwgYmVpbmcgYSBwcmV0dHkgZnVuZGFtZW50YWwgd2lyZWxlc3MgZHJpdmVyIGNvbXBvbmVudC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIGZvciBhbnkgZXhwbGljaXQgZGVwZW5kZW5jaWVzIGRlZmluZWQgaW4gdGhlIFJTSSBkcml2ZXIncyBLY29uZmlnIGZpbGUsIHNvIGxldCdzIHF1aWNrbHkgY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzYyNCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwOToxMTo0Ny40MTg2MzAwMDlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzOTMyODEwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnPTE1PWNvbmZpZyBSU0lfOTFYXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0xNy1cXHRzZWxlY3QgQlRfSENJUlNJIGlmIFJTSV9DT0VYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6MTg6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTE5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnPTIzPWNvbmZpZyBSU0lfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTI0LVxcdGJvb2wgXFxcIlJlZHBpbmUgU2lnbmFscyBJbmMgZGVidWcgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZzoyNTpcXHRkZXBlbmRzIG9uIFJTSV85MVhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0yNi1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnPTMxPWNvbmZpZyBSU0lfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTMyLVxcdHRyaXN0YXRlIFxcXCJSZWRwaW5lIFNpZ25hbHMgU0RJTyBidXMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZzozMzpcXHRkZXBlbmRzIG9uIE1NQyBcXHUwMDI2XFx1MDAyNiBSU0lfOTFYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMzQtXFx0ZGVmYXVsdCBtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZz0zOT1jb25maWcgUlNJX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTQwLVxcdHRyaXN0YXRlIFxcXCJSZWRwaW5lIFNpZ25hbHMgVVNCIGJ1cyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnOjQxOlxcdGRlcGVuZHMgb24gVVNCIFxcdTAwMjZcXHUwMDI2IFJTSV85MVhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy00Mi1cXHRkZWZhdWx0IG1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnPTQ3PWNvbmZpZyBSU0lfQ09FWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIlJlZHBpbmUgU2lnbmFscyBXTEFOIEJUIENvZXhpc3RlbmNlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6NDk6XFx0ZGVwZW5kcyBvbiBCVCBcXHUwMDI2XFx1MDAyNiBSU0lfOTFYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6NTA6XFx0ZGVwZW5kcyBvbiAhKEJUPW0gXFx1MDAyNlxcdTAwMjYgUlNJXzkxWD15KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTUxLVxcdGRlZmF1bHQgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwOToxMTo0Ny42NTc5NjM4OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MzIzMjgxODIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUlNJIEJlYWNvbiBQcmVwYXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkZWFsaW5nIHdpdGggYW4gUlNJIGlzc3VlIGhlcmUsIGFuZCB0aGUga2VybmVsIG1vZHVsZSBgTUFDODAyMTFgIGlzIGFsbW9zdCBjZXJ0YWlubHkgaW52b2x2ZWQg4oCTIGl0J3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSB3aXJlbGVzcyBzdGFjaywgYW5kIGxpa2VseSBlbmFibGVkLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGNvbmZpcm0gdGhlIHNwZWNpZmljIFJTSS1yZWxhdGVkIG1vZHVsZXMgYW5kIHNldHRpbmdzLCBzbyBJIG5lZWQgdG8gbWFrZSBhIG5vdGUgdG8gY2hlY2sgZm9yIGBXTEFOX1ZFTkRPUl9SU0lgLCBgUlNJXzkxWGAsIGFuZCBgUlNJX1VTQmAgY29uZmlndXJhdGlvbnMuXG5cbk5vdywgbXkga2V5IHF1ZXN0aW9uIGlzIGFyb3VuZCBgcnNpX3ByZXBhcmVfYmVhY29uYC4gSXMgdGhpcyBzb21ldGhpbmcgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlciBzcGFjZSwgb3IgaXMgaXQgcHVyZWx5IGEgaGFyZHdhcmUtZHJpdmVuIGZ1bmN0aW9uPyBJIGtub3cgaXQncyBjYWxsZWQgZnJvbSBgcnNpX3NlbmRfYmVhY29uYCwgYW5kIHRoYXQgZnVuY3Rpb24gaXMsIGluIHR1cm4sIGNhbGxlZCBmcm9tIGByc2lfbWdtdF9wa3RfcmVjdmAuIFRoYXQgbWVhbnMgdGhlIHByZXBhcmF0aW9uIG9mIHRoZSBiZWFjb24gaXMgZGlyZWN0bHkgcmVsYXRlZCB0byBtYW5hZ2VtZW50IHBhY2tldHMuXG5cbk9rYXksIGByc2lfbWdtdF9wa3RfcmVjdmAgaXMgdHJpZ2dlcmVkIHVwb24gcmVjZWl2aW5nIGEgcGFja2V0IGZyb20gdGhlIGhhcmR3YXJlLiBTbywgZnJvbSB0aGF0IHBhdGgsIEkgY2FuIGRlZmluaXRlbHkgcmVhY2ggYHJzaV9wcmVwYXJlX2JlYWNvbmAgdGhyb3VnaCBoYXJkd2FyZSBwYWNrZXQgaW5qZWN0aW9uIChlLmcuIHVzaW5nIGEgVVNCIGdhZGdldCBzZXR1cCkuIEJ1dCB0aGF0IGRvZXNuJ3QgdGVsbCBtZSBpZiBpdCdzIHVzZXIgc3BhY2UgYWNjZXNzaWJsZS4gSSBuZWVkIHRvIGJlIGNlcnRhaW4gdGhhdCBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgYXR0YWNrIHN1cmZhY2UuIFNvLCBJIHdpbGwgY2hlY2sgaWYgYHJzaV9zZW5kX2JlYWNvbmAgaXMgY2FsbGVkIGZyb20gYW55d2hlcmUgZWxzZSBpbiB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ0NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwOToxMTo1NS45ODEyNDgwMjFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDM1OTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJzaV9zZW5kX2JlYWNvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYz0xNzM4PWludCByc2lfc2V0X2FudGVubmEoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgdTggYW50ZW5uYSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYy0xNzYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYzoxNzYzOnN0YXRpYyBpbnQgcnNpX3NlbmRfYmVhY29uKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTE3NjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jPTIxODU9aW50IHJzaV9tZ210X3BrdF9yZWN2KHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIHU4ICptc2cpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMjIyNC1cXHRcXHRcXHRyZXR1cm4gLTE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jOjIyMjU6XFx0XFx0cnNpX3NlbmRfYmVhY29uKGNvbW1vbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTIyMjYtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDA5OjExOjU2LjAzODY4OTM4OVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTg0NjQzNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uOiBIYXJkd2FyZS1UcmlnZ2VyZWQgQmVhY29uIFByb2Nlc3NpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgcGF0aCwgYW5kIGl0J3MgYWxsIG9yaWdpbmF0aW5nIGZyb20gYHJzaV9tZ210X3BrdF9yZWN2YC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCdzIGhhcmR3YXJlLXRyaWdnZXJlZCwgd2hpY2ggaXMga2V5LiBUaGlzIGlzIHBlcmZlY3QhIFRoZSB3aG9sZSBiZWF1dHkgb2YgaXQgaXMgdGhhdCB3ZSBjYW4gZnV6eiBVU0IgZGV2aWNlcyB1c2luZyBgdmhjaWAsIHRoZSB2aXJ0dWFsIFVTQiBob3N0IGNvbnRyb2xsZXIuIFRoYXQgbWVhbnMgd2UgaGF2ZSBhIGNsZWFuIGF0dGFjayBzdXJmYWNlIGhlcmUuXG5cbkkgbmVlZCB0byBmb2N1cyBvbiBhIGZldyBrZXkgc3ltYm9sczogYHJzaV9wcmVwYXJlX2JlYWNvbmAgYW5kIGByc2lfc2VuZF9iZWFjb25gLiBUaG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyB0aGF0IHNlZW0gbW9zdCByZWxldmFudCB0byB0aGUgZXhwbG9pdC5cblxuTm93IGZvciBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGVudmlyb25tZW50LiBXZSdyZSBkZWFsaW5nIHdpdGggYFdMQU5fVkVORE9SX1JTSWAsIGBSU0lfOTFYYCwgYW5kIGBSU0lfVVNCYCBjb25maWd1cmF0aW9ucy5cblxuRXNzZW50aWFsbHksIHRoaXMgcGF0Y2ggaXMgZml4aW5nIGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IHdpdGhpbiB0aGUgYHJzaV9wcmVwYXJlX2JlYWNvbmAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgYHNrYl90YWlscm9vbWAgYmVmb3JlIGNvcHlpbmcgZGF0YSwgd2hpY2ggaXMgZ29vZC4gVGhpcyB2dWxuZXJhYmlsaXR5IGlzIHJlYWNoYWJsZSB3aGVuIHRoZSBkcml2ZXIgaGFuZGxlcyBhIGJlYWNvbiByZXF1ZXN0IGNvbWluZyBkaXJlY3RseSBmcm9tIHRoZSBoYXJkd2FyZS4gVGhlIGZhY3QgdGhhdCB0aGUgZHJpdmVyIHN1cHBvcnRzIFVTQiAoYFJTSV9VU0JgKSBpcyBjcnVjaWFsIGhlcmUuIFRoYXQncyBvdXIgZnV6emluZyBlbnRyeSBwb2ludC4gV2UgY2FuIGV4cGxvaXQgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVzc2VudGlhbGx5IGltcGVyc29uYXRpbmcgYSBtYWxpY2lvdXMgVVNCIGRldmljZSB1c2luZyB0aGUgVVNCIGdhZGdldCBzdWJzeXN0ZW0gKGB2aGNpYCkuIFdlIGNhbiBjcmFmdCBzcGVjaWZpYyBVU0IgcGFja2V0cyB0aGF0IHRyaWdnZXIgdGhpcyBiZWFjb24gaGFuZGxpbmcsIGFuZCBob3BlZnVsbHksIHRyaWdnZXIgdGhlIHZ1bG5lcmFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyMzAsIk91dHB1dFRva2VucyI6MTU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDA5OjEyOjAyLjIyMzMzNTYyOVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjU2MjA3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTl9WRU5ET1JfUlNJXCIsXG4gICAgXCJSU0lfOTFYXCIsXG4gICAgXCJSU0lfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnNpX3ByZXBhcmVfYmVhY29uXCIsXG4gICAgXCJyc2lfc2VuZF9iZWFjb25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3cgaW4gYHJzaV9wcmVwYXJlX2JlYWNvbmAgYnkgY2hlY2tpbmcgYHNrYl90YWlscm9vbWAgYmVmb3JlIGNvcHlpbmcgZGF0YS4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgd2hlbiB0aGUgZHJpdmVyIHByb2Nlc3NlcyBhIGJlYWNvbiByZXF1ZXN0IGZyb20gdGhlIGhhcmR3YXJlLiBTaW5jZSB0aGUgZHJpdmVyIHN1cHBvcnRzIFVTQiAoYFJTSV9VU0JgKSwgdGhpcyBjb2RlIHBhdGggY2FuIGJlIHRyaWdnZXJlZCBhbmQgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgZW11bGF0aW5nIGEgbWFsaWNpb3VzIFVTQiBkZXZpY2UgdmlhIHRoZSBVU0IgZ2FkZ2V0IHN1YnN5c3RlbSAodmhjaSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTl9WRU5ET1JfUlNJXCIsXG4gICAgXCJSU0lfOTFYXCIsXG4gICAgXCJSU0lfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnNpX3ByZXBhcmVfYmVhY29uXCIsXG4gICAgXCJyc2lfc2VuZF9iZWFjb25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3cgaW4gYHJzaV9wcmVwYXJlX2JlYWNvbmAgYnkgY2hlY2tpbmcgYHNrYl90YWlscm9vbWAgYmVmb3JlIGNvcHlpbmcgZGF0YS4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgd2hlbiB0aGUgZHJpdmVyIHByb2Nlc3NlcyBhIGJlYWNvbiByZXF1ZXN0IGZyb20gdGhlIGhhcmR3YXJlLiBTaW5jZSB0aGUgZHJpdmVyIHN1cHBvcnRzIFVTQiAoYFJTSV9VU0JgKSwgdGhpcyBjb2RlIHBhdGggY2FuIGJlIHRyaWdnZXJlZCBhbmQgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgZW11bGF0aW5nIGEgbWFsaWNpb3VzIFVTQiBkZXZpY2UgdmlhIHRoZSBVU0IgZ2FkZ2V0IHN1YnN5c3RlbSAodmhjaSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt49f2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-05 08:55:11 +0000 UTC FinishedAt: 2026-07-05 09:12:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN_VENDOR_RSI", "RSI_91X", "RSI_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "WLAN_VENDOR_RSI", "RSI_91X", "RSI_USB" ], "series_id": "0c5128fb-7043-4739-87bf-9d1a152f8a56" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rsi_prepare_beacon", "rsi_send_beacon" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA1IDA5OjEwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU5fVkVORE9SX1JTSSYjMzQ7LAogICAgJiMzNDtSU0lfOTFYJiMzNDssCiAgICAmIzM0O1JTSV9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyc2lfcHJlcGFyZV9iZWFjb24mIzM0OywKICAgICYjMzQ7cnNpX3NlbmRfYmVhY29uJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBpbiBgcnNpX3ByZXBhcmVfYmVhY29uYCBieSBjaGVja2luZyBgc2tiX3RhaWxyb29tYCBiZWZvcmUgY29weWluZyBkYXRhLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB3aGVuIHRoZSBkcml2ZXIgcHJvY2Vzc2VzIGEgYmVhY29uIHJlcXVlc3QgZnJvbSB0aGUgaGFyZHdhcmUuIFNpbmNlIHRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIChgUlNJX1VTQmApLCB0aGlzIGNvZGUgcGF0aCBjYW4gYmUgdHJpZ2dlcmVkIGFuZCBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBieSBlbXVsYXRpbmcgYSBtYWxpY2lvdXMgVVNCIGRldmljZSB2aWEgdGhlIFVTQiBnYWRnZXQgc3Vic3lzdGVtICh2aGNpKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwOToxMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDdlN2EwZTE0Mzc3MDlmMDkxOGRlYmI5ZDZiM2MyNGY2Yjk1ZDRmYjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCA1IDA5OjEwOjA1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmNcbmluZGV4IGEwYzM2MTQ0ZWIwYjIzLi41MDEwNzExMDRhOWZlNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9oYWwuY1xuQEAgLTQzMSw2ICYjNDM7NDMxLDcgQEAgaW50IHJzaV9wcmVwYXJlX2JlYWNvbihzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0c3RydWN0IGllZWU4MDIxMV92aWYgKnZpZjtcbiBcdHN0cnVjdCBza19idWZmICptYWNfYmNuO1xuIFx0dTggdmFwX2lkID0gMCwgaTtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgdGFpbHJvb207XG4gXHR1MTYgdGltX29mZnNldCA9IDA7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBSU0lfTUFYX1ZJRlM7IGkmIzQzOyYjNDM7KSB7XG5AQCAtNDgwLDYgJiM0Mzs0ODEsMTMgQEAgaW50IHJzaV9wcmVwYXJlX2JlYWNvbihzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0aWYgKG1hY19iY24tXHUwMDNlZGF0YVt0aW1fb2Zmc2V0ICYjNDM7IDJdID09IDApXG4gXHRcdGJjbl9mcm0tXHUwMDNlZnJhbWVfaW5mbyB8PSBjcHVfdG9fbGUxNihSU0lfREFUQV9ERVNDX0RUSU1fQkVBQ09OKTtcbiBcbiYjNDM7XHR0YWlscm9vbSA9IHNrYl90YWlscm9vbShza2IpO1xuJiM0MztcdGlmICh0YWlscm9vbSBcdTAwM2MgRlJBTUVfREVTQ19TWiB8fFxuJiM0MztcdCAgICBtYWNfYmNuLVx1MDAzZWxlbiBcdTAwM2UgdGFpbHJvb20gLSBGUkFNRV9ERVNDX1NaKSB7XG4mIzQzO1x0XHRkZXZfa2ZyZWVfc2tiKG1hY19iY24pO1xuJiM0MztcdFx0cmV0dXJuIC1FTVNHU0laRTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0bWVtY3B5KFx1MDAyNnNrYi1cdTAwM2VkYXRhW0ZSQU1FX0RFU0NfU1pdLCBtYWNfYmNuLVx1MDAzZWRhdGEsIG1hY19iY24tXHUwMDNlbGVuKTtcbiBcdHNrYl9wdXQoc2tiLCBtYWNfYmNuLVx1MDAzZWxlbiAmIzQzOyBGUkFNRV9ERVNDX1NaKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwOToxMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtXTEFOX1ZFTkRPUl9SU0kmIzM0OywKICAgICYjMzQ7UlNJXzkxWCYjMzQ7LAogICAgJiMzNDtSU0lfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnNpX3ByZXBhcmVfYmVhY29uJiMzNDssCiAgICAmIzM0O3JzaV9zZW5kX2JlYWNvbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3cgaW4gYHJzaV9wcmVwYXJlX2JlYWNvbmAgYnkgY2hlY2tpbmcgYHNrYl90YWlscm9vbWAgYmVmb3JlIGNvcHlpbmcgZGF0YS4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgd2hlbiB0aGUgZHJpdmVyIHByb2Nlc3NlcyBhIGJlYWNvbiByZXF1ZXN0IGZyb20gdGhlIGhhcmR3YXJlLiBTaW5jZSB0aGUgZHJpdmVyIHN1cHBvcnRzIFVTQiAoYFJTSV9VU0JgKSwgdGhpcyBjb2RlIHBhdGggY2FuIGJlIHRyaWdnZXJlZCBhbmQgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgZW11bGF0aW5nIGEgbWFsaWNpb3VzIFVTQiBkZXZpY2UgdmlhIHRoZSBVU0IgZ2FkZ2V0IHN1YnN5c3RlbSAodmhjaSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDdlN2EwZTE0Mzc3MDlmMDkxOGRlYmI5ZDZiM2MyNGY2Yjk1ZDRmYjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCA1IDA5OjEwOjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9oYWwuYwppbmRleCBhMGMzNjE0NGViMGIyMy4uNTAxMDcxMTA0YTlmZTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jCkBAIC00MzEsNiAmIzQzOzQzMSw3IEBAIGludCByc2lfcHJlcGFyZV9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmOwogCXN0cnVjdCBza19idWZmICptYWNfYmNuOwogCXU4IHZhcF9pZCA9IDAsIGk7CiYjNDM7CXVuc2lnbmVkIGludCB0YWlscm9vbTsKIAl1MTYgdGltX29mZnNldCA9IDA7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgUlNJX01BWF9WSUZTOyBpJiM0MzsmIzQzOykgewpAQCAtNDgwLDYgJiM0Mzs0ODEsMTMgQEAgaW50IHJzaV9wcmVwYXJlX2JlYWNvbihzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCWlmIChtYWNfYmNuLSZndDtkYXRhW3RpbV9vZmZzZXQgJiM0MzsgMl0gPT0gMCkKIAkJYmNuX2ZybS0mZ3Q7ZnJhbWVfaW5mbyB8PSBjcHVfdG9fbGUxNihSU0lfREFUQV9ERVNDX0RUSU1fQkVBQ09OKTsKIAomIzQzOwl0YWlscm9vbSA9IHNrYl90YWlscm9vbShza2IpOwomIzQzOwlpZiAodGFpbHJvb20gJmx0OyBGUkFNRV9ERVNDX1NaIHx8CiYjNDM7CSAgICBtYWNfYmNuLSZndDtsZW4gJmd0OyB0YWlscm9vbSAtIEZSQU1FX0RFU0NfU1opIHsKJiM0MzsJCWRldl9rZnJlZV9za2IobWFjX2Jjbik7CiYjNDM7CQlyZXR1cm4gLUVNU0dTSVpFOwomIzQzOwl9CiYjNDM7CiAJbWVtY3B5KCZhbXA7c2tiLSZndDtkYXRhW0ZSQU1FX0RFU0NfU1pdLCBtYWNfYmNuLSZndDtkYXRhLCBtYWNfYmNuLSZndDtsZW4pOwogCXNrYl9wdXQoc2tiLCBtYWNfYmNuLSZndDtsZW4gJiM0MzsgRlJBTUVfREVTQ19TWik7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEwOAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgQnVmZmVyIE92ZXJmbG93IEZpeCBpbiBhIFdpcmVsZXNzIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmNgLiBUaGUgY29yZSBjaGFuZ2UgaXMgaW4gYHJzaV9wcmVwYXJlX2JlYWNvbmAsIHNwZWNpZmljYWxseSBhIGNoZWNrIGZvciBgc2tiX3RhaWxyb29tKHNrYilgIGJlZm9yZSBhbnkgZGF0YSBpcyBjb3BpZWQuIFRoYXQmIzM5O3MgZ29vZCwgYSBkZWZpbml0ZSBmdW5jdGlvbmFsIGltcHJvdmVtZW50IGFpbWVkIGF0IHByZXZlbnRpbmcgYSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93LiBBbHdheXMgZ29vZCB0byBzZWUgdGhvc2UuCgpNeSBuZXh0IHRob3VnaHQgaXMsIGhvdyBsaWtlbHkgaXMgdGhpcyB0byBhY3R1YWxseSBiZSB0cmlnZ2VyZWQ/IExldCYjMzk7cyBmaWd1cmUgb3V0IGlmIHRoaXMgZHJpdmVyLCBgcnNpXzkxeGAsIGEgUmVkcGluZSBTaWduYWxzIEluYy4gOTF4IFdMQU4gZHJpdmVyLCBpcyBldmVuICpyZWFjaGFibGUqIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoYXQmIzM5O3Mgd2hlcmUgYSBsb3Qgb2YgdGhlc2UgdnVsbmVyYWJpbGl0aWVzIGdldCBmb3VuZCwgYW5kIHdoZXJlIHRlc3RpbmcgaXMgZWFzaWVzdC4gSWYgaXQmIzM5O3Mgc29tZXRoaW5nIHRoYXQgb25seSBzaG93cyB1cCBpbiBhIHJhcmUgaGFyZHdhcmUgY29uZmlndXJhdGlvbiwgaXQmIzM5O3MgYSB2ZXJ5IGRpZmZlcmVudCBiZWFzdCB0aGFuIHNvbWV0aGluZyB0aGF0JiMzOTtzIHByZXNlbnQgYnkgZGVmYXVsdCBpbiBhIGxvdCBvZiBjbG91ZCBpbnN0YW5jZXMsIHJpZ2h0PwoKSSYjMzk7bGwgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7bGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGl0cyBidWlsZCBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBhY3RpdmF0aW9uIGNvbmRpdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwuIE5lZWQgdG8ga25vdyB0aGUgY2lyY3Vtc3RhbmNlcyB0byBwcm9wZXJseSBldmFsdWF0ZSB0aGlzIG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwOToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyc2lfcHJlcGFyZV9iZWFjb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jPTM4OD1pbnQgcnNpX3NlbmRfYnRfcGt0KHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmMtNDI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmM6NDI1OmludCByc2lfcHJlcGFyZV9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jLTQyNi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jPTE3NjM9c3RhdGljIGludCByc2lfc2VuZF9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMTc3Ni1cdFx0c2tiX3B1bGwoc2tiLCAoNjQgLSBkd29yZF9hbGlnbl9ieXRlcykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jOjE3Nzc6XHRpZiAocnNpX3ByZXBhcmVfYmVhY29uKGNvbW1vbiwgc2tiKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTE3NzgtXHRcdHJzaV9kYmcoRVJSX1pPTkUsIFwmIzM0O0ZhaWxlZCB0byBwcmVwYXJlIGJlYWNvblxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9oYWwuaD0yMjU9aW50IHJzaV9wcmVwYXJlX2RhdGFfZGVzYyhzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfaGFsLmg6MjI2OmludCByc2lfcHJlcGFyZV9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2hhbC5oLTIyNy1pbnQgcnNpX3NlbmRfcGt0X3RvX2J1cyhzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwOToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTk0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiBteSBkb21haW46CgoqKlJTSSBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0aGlzIHN0cmFpZ2h0LiBNeSBtZW50YWwgY2hlY2tsaXN0IGZvciB0aGUgY3VycmVudCB0YXNrIGhhcyBsYW5kZWQgbWUgc3F1YXJlbHkgYXQgUlNJLiBJIG5lZWQgdG8gZW5zdXJlIGl0JiMzOTtzIGNvbmZpZ3VyZWQgYXBwcm9wcmlhdGVseS4gVGhlIG9idmlvdXMgZmlyc3Qgc3RlcCwgYmVmb3JlIEkgZXZlbiBzdGFydCB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBkcml2ZXJzIG9yIHRoZSBidWlsZCBwcm9jZXNzLCBpcyB0byBkaXZlIGludG8gdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCYjMzk7cyB0aGUgYmVkcm9jaywgdGhlIGNvbmZpZ3VyYXRpb24gZm91bmRhdGlvbiB1cG9uIHdoaWNoIGV2ZXJ5dGhpbmcgZWxzZSByZWxhdGVkIHRvIFJTSSByZXN0cy4gSSBuZWVkIHRvIHZlcmlmeSBpdHMgZW5hYmxlZCBzdGF0ZSwgdW5kZXJzdGFuZCBhbnkgZGVwZW5kZW5jaWVzIGl0IGhhcywgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzIG9yIG9wdGlvbnMgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGUgc3BlY2lmaWMgY29udGV4dCBJJiMzOTttIGN1cnJlbnRseSB3b3JraW5nIHdpdGhpbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb25maWd1cmF0aW9uIGVjb3N5c3RlbSBpcyBzYXlpbmcgYWJvdXQgUlNJJiMzOTtzIGN1cnJlbnQgc3RhdHVzIGFuZCBwb3RlbnRpYWwgb3B0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwOToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUlNJXzkxWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc9MTM9aWYgV0xBTl9WRU5ET1JfUlNJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0xNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnOjE1OmNvbmZpZyBSU0lfOTFYXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0xNi1cdHRyaXN0YXRlIFwmIzM0O1JlZHBpbmUgU2lnbmFscyBJbmMgOTF4IFdMQU4gZHJpdmVyIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwOToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzEyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBCdXMgQ29tcGF0aWJpbGl0eSBJbnF1aXJ5KioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gdGFraW5nIGEgZnJlc2ggbG9vayBhdCB0aGlzLCBhbmQgdGhlIGZpcnN0IG9yZGVyIG9mIGJ1c2luZXNzIGlzIGVzdGFibGlzaGluZyBpdHMgZm91bmRhdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaW1tZWRpYXRlbHkgZm9jdXNlcyBvbiAqKmJ1cyBzdXBwb3J0KiouIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZSBhbmQgd2hhdCBzcGVjaWZpYyBidXMgaW50ZXJmYWNlcyBhcmUgY29tcGF0aWJsZS4gVGhpcyBpcyBmdW5kYW1lbnRhbDsgd2l0aG91dCB0aGlzIGJhc2ljIHVuZGVyc3RhbmRpbmcsIGZ1cnRoZXIgYW5hbHlzaXMgaXMgcG9pbnRsZXNzLiBJdCBkaWN0YXRlcyBldmVyeXRoaW5nIGZyb20gZGF0YSB0aHJvdWdocHV0IGFuZCBjb21tdW5pY2F0aW9uIHByb3RvY29scyB0byB0aGUgcG90ZW50aWFsIGZvciBpbnRlZ3JhdGlvbiB3aXRoaW4gZXhpc3Rpbmcgc3lzdGVtcy4gU28sIHRoZSBxdWVzdGlvbiBpczogd2hhdCBidXNlcyBkb2VzIHRoaXMgdGhpbmcgcGxheSBuaWNlIHdpdGg/IEtub3dpbmcgdGhlIGFuc3dlciB1bmxvY2tzIHRoZSBuZXh0IGxheWVyIG9mIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDk6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJTSV8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnPTEzPWlmIFdMQU5fVkVORE9SX1JTSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZzoxNTpjb25maWcgUlNJXzkxWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMTYtXHR0cmlzdGF0ZSBcJiMzNDtSZWRwaW5lIFNpZ25hbHMgSW5jIDkxeCBXTEFOIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZzoyMzpjb25maWcgUlNJX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtSZWRwaW5lIFNpZ25hbHMgSW5jIGRlYnVnIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnOjMxOmNvbmZpZyBSU0lfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMzItXHR0cmlzdGF0ZSBcJiMzNDtSZWRwaW5lIFNpZ25hbHMgU0RJTyBidXMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6Mzk6Y29uZmlnIFJTSV9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTQwLVx0dHJpc3RhdGUgXCYjMzQ7UmVkcGluZSBTaWduYWxzIFVTQiBidXMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTQ2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6NDc6Y29uZmlnIFJTSV9DT0VYXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7UmVkcGluZSBTaWduYWxzIFdMQU4gQlQgQ29leGlzdGVuY2Ugc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDA5OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqVVNCIEZ1enppbmcgUG90ZW50aWFsIGFuZCBCZWFjb24gUmVhY2hhYmlsaXR5KioKClJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCB0aGlzIHN5c3RlbSBzdXBwb3J0cyBVU0IsIHNwZWNpZmljYWxseSB2aWEgYFJTSV9VU0JgLiBUaGlzIGlzIGV4Y2VsbGVudCBuZXdzISBJZiBVU0IgaXMgc3VwcG9ydGVkLCB0aGF0IG9wZW5zIHRoZSBkb29yIHRvIGZ1enppbmcgaXQgdXNpbmcgdmhjaSAodGhlIFVTQiBnYWRnZXQgaW50ZXJmYWNlKS4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgYW5kIGVmZmVjdGl2ZSBhdHRhY2sgdmVjdG9yLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaWYgSSBjYW4gcmVhY2ggYHJzaV9wcmVwYXJlX2JlYWNvbmAuIFNwZWNpZmljYWxseSwgY2FuIEkgdHJpZ2dlciBpdCwgYW5kIHRoZW4gd2hhdCBjYW4gSSBkbyB3aXRoIGl0PwoKT2theSwgZGlnZ2luZyBpbiBhIGJpdCBkZWVwZXIsIEkgc2VlIHRoYXQgYHJzaV9wcmVwYXJlX2JlYWNvbmAgaXMgY2FsbGVkIGZyb20gYHJzaV9zZW5kX2JlYWNvbmAuIEkgcmVtZW1iZXIgdGhhdCBmdW5jdGlvbi4uLiB0aGF0JiMzOTtzIGluIGByc2lfOTF4X21nbXQuY2AuIE5vdyBJIGhhdmUgYSBicmVhZGNydW1iIHRyYWlsIHRvIGZvbGxvdy4gVGltZSB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggYW5kIHNlZSB3aGF0IEkgY2FuIHVuY292ZXIuIE15IHRob3VnaHQgcHJvY2VzcyBoZXJlIGlzIHRvIHNlZSBpZiBJIGNhbiByZWFjaCBhbmQgY29udHJvbCBgcnNpX3ByZXBhcmVfYmVhY29uYCB0aHJvdWdoIHRoZSBjaGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDk6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnNpX3NlbmRfYmVhY29uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM9MTczOD1pbnQgcnNpX3NldF9hbnRlbm5hKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIHU4IGFudGVubmEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTE3NjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM6MTc2MzpzdGF0aWMgaW50IHJzaV9zZW5kX2JlYWNvbihzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTE3NjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYz0yMTg1PWludCByc2lfbWdtdF9wa3RfcmVjdihzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCB1OCAqbXNnKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYy0yMjI0LVx0XHRcdHJldHVybiAtMTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYzoyMjI1Olx0XHRyc2lfc2VuZF9iZWFjb24oY29tbW9uKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYy0yMjI2LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ2MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBCZWFjb24gVHJhbnNtaXNzaW9uIFBhdGgqKgoKUmlnaHQsIHNvIGByc2lfc2VuZF9iZWFjb25gIGlzIGNhbGxlZCBmcm9tIHdpdGhpbiBgcnNpX21nbXRfcGt0X3JlY3ZgLiBUaGF0JiMzOTtzIHRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgaW5jb21pbmcgbWFuYWdlbWVudCBwYWNrZXRzLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGJlYWNvbiB0cmFuc21pc3Npb24gZmxvdy4gVG8gZG8gdGhhdCwgSSBuZWVkIHRvIGtub3cgKndoZXJlKiBgcnNpX21nbXRfcGt0X3JlY3ZgIGl0c2VsZiBpcyBiZWluZyBjYWxsZWQgZnJvbS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGVyZSB0byBmaWd1cmUgb3V0IHRoZSBpbml0aWF0aW5nIGV2ZW50LiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBjYWxsIHN0YWNrcyBhbmQgc2VlIHdoYXQmIzM5O3MgdHJpZ2dlcmluZyB0aGUgbWFuYWdlbWVudCBwYWNrZXQgcHJvY2Vzc2luZy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IGJlYWNvbnMgYXJlIGluaXRpYXRlZCBhbmQgcHJvcGFnYXRlZCB3aXRoaW4gdGhlIHN5c3RlbS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDA5OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JzaV9tZ210X3BrdF9yZWN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmM9Njg9aW50IHJzaV9jb2V4X3JlY3ZfcGt0KHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIHU4ICptc2cpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jLTc5LVx0XHRyc2lfZGJnKElORk9fWk9ORSwgXCYjMzQ7c2xlZXAgbm90aWZ5IHJlY2VpdmVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2NvZXguYzo4MDpcdFx0cnNpX21nbXRfcGt0X3JlY3YoY29tbW9uLCBtc2cpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jLTgxLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWluLmM9MTU3PWludCByc2lfcmVhZF9wa3Qoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgdTggKnJ4X3BrdCwgczMyIHJjdl9wa3RfbGVuKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uYy0xOTAtI2VuZGlmXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWluLmM6MTkxOlx0XHRcdFx0cnNpX21nbXRfcGt0X3JlY3YoY29tbW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jLTE5Mi1cdFx0XHRcdFx0XHQgIChmcmFtZV9kZXNjICYjNDM7IG9mZnNldCkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uYy0yMDYtXHRcdGNhc2UgUlNJX1dJRklfTUdNVF9ROlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jOjIwNzpcdFx0XHRyc2lfbWdtdF9wa3RfcmVjdihjb21tb24sIChmcmFtZV9kZXNjICYjNDM7IG9mZnNldCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jLTIwOC1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM9MjEyNj1pbnQgcnNpX2hhbmRsZV9jYXJkX3JlYWR5KHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIHU4ICptc2cpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTIxNzctLyoqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM6MjE3ODogKiByc2lfbWdtdF9wa3RfcmVjdigpIC0gVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIG1hbmFnZW1lbnQgcGFja2V0c1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTIxNzktICpcdFx0XHQgcmVjZWl2ZWQgZnJvbSB0aGUgaGFyZHdhcmUuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTIxODQtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM6MjE4NTppbnQgcnNpX21nbXRfcGt0X3JlY3Yoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgdTggKm1zZylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYy0yMTg2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX21nbXQuaD03MTM9aW50IHJzaV9oYW5kbGVfY2FyZF9yZWFkeShzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCB1OCAqbXNnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfbWdtdC5oOjcxNDppbnQgcnNpX21nbXRfcGt0X3JlY3Yoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgdTggKm1zZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX21nbXQuaC03MTUtaW50IHJzaV9zZXRfdmFwX2NhcGFiaWxpdGllcyhzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBlbnVtIG9wbW9kZSBtb2RlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwOToxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDkzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB0aGlzLgoKKipGdXp6aW5nIFBvdGVudGlhbDogUlNJIFVTQiBQYWNrZXQgUmVjZXB0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIFRoaXMgYHJzaV9tZ210X3BrdF9yZWN2YCBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQgYnkgaW5jb21pbmcgcGFja2V0cyBmcm9tIHRoZSBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IG9uIHRoZSByZWNlaXZpbmcgZW5kLiBUaGUgZmFjdCB0aGF0IGl04oCZcyBsaW5rZWQgdG8gYW4gYFJTSV9VU0JgIGRldmljZSBpcyBrZXkgaGVyZS4gVGhhdCBtZWFucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgVVNCIGNvbm5lY3Rpb24sIGFuZCBtb3JlIHNwZWNpZmljYWxseSwgbGlrZWx5IHVzaW5nIGEgVVNCIGdhZGdldCBzZXR1cCBsaWtlIGB2aGNpYCBmb3IgdGhlIGhvc3QgdG8gZW11bGF0ZSBoYXJkd2FyZSBvbiB0aGUgZGV2aWNlIHNpZGUuCgpTbywgbG9naWNhbGx5IHNwZWFraW5nLCB0aGlzIGlzIHJlYWNoYWJsZSBjb2RlLCBhbmQgSSBzZWUgYSBodWdlIGZ1enppbmcgb3Bwb3J0dW5pdHkuIFdlIGNhbiBjcmFmdCBhbmQgaW5qZWN0IG1hbGljaW91cyBwYWNrZXRzIGZyb20gdGhlICYjMzQ7aGFyZHdhcmUmIzM0OyBzaWRlIHRocm91Z2ggVVNCLCByaWdodD8gV2UmIzM5O2xsIHNlZSBob3cgdGhhdCBhcHBsaWVzIHRvIHRoZSBjb2RlLgoKQmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgc2hvdWxkIGxvb2sgYXQgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTGV0IG1lIHF1aWNrbHkgZXhhbWluZSBgV0xBTl9WRU5ET1JfUlNJYCwgYFJTSV85MVhgLCBhbmQgYFJTSV9VU0JgLiBJJiMzOTtsbCB3YW50IHRvIGNoZWNrIGBXTEFOX1ZFTkRPUl9SU0lgLCBsaWtlbHkgaW4gZWl0aGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZ2Agb3IsIHdvcnN0IGNhc2UsIHRoZSB0b3AtbGV2ZWwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIFRoZXNlIGZsYWdzIHdpbGwgaW5mb3JtIGhvdyB0aGUgZHJpdmVycyBhcmUgYnVpbHQgYW5kIHdoYXQgZnVuY3Rpb25hbGl0eSBpcyBjb21waWxlZCBpbnRvIHRoZSBpbWFnZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDk6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFdMQU5fVkVORE9SX1JTSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6Mjpjb25maWcgV0xBTl9WRU5ET1JfUlNJXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtSZWRwaW5lIFNpZ25hbHMgSW5jIGRldmljZXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjAxNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogUmVsZXZhbnQgTW9kdWxlcyBhbmQgQmVhY29uIFByZXBhcmF0aW9uKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGl2aW5nIGludG8gdGhlIGNvZGViYXNlIGFuZCBpbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aG9zZSBjb3JlIG1vZHVsZXMsIHNwZWNpZmljYWxseSBgV0xBTl9WRU5ET1JfUlNJYCwgYFJTSV85MVhgLCBhbmQgYFJTSV9VU0JgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGVzZSByZXByZXNlbnQgZGlzdGluY3QgaW1wbGVtZW50YXRpb24gcGF0aHMgb3IgaGFyZHdhcmUgcmV2aXNpb25zIHdpdGhpbiB0aGUgUlNJIGZhbWlseS4gV2UgYXJlIG5vdCBqdXN0IHRhbGtpbmcgYWJvdXQganVzdCB0aG9zZSB0aHJlZSBlaXRoZXIsIHRoZXNlIGFyZSB0aGUgc3RhcnRpbmcgcG9pbnRzLgoKTm93LCBnaXZlbiB0aGF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYmVhY29uIHNldHVwIHByb2Nlc3MuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIGByc2lfcHJlcGFyZV9iZWFjb25gLiBUaGlzIGZ1bmN0aW9uIGlzIGFsbW9zdCBhbHdheXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZmlybXdhcmUgc3RydWN0dXJlcyBhbmQgYnJvYWRjYXN0cyBpdHMgYWR2ZXJ0aXNpbmcgZnJhbWUuIEl0JiMzOTtsbCBnaXZlIG1lIGEgc3Ryb25nIGluZGljYXRpb24gb2Ygd2hlcmUgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbiBjYWxscyBhcmUgbmVzdGVkIGFuZCB3aGF0IG90aGVyIGFyZWFzIG9mIHRoZSBjb2RlYmFzZSBhcmUgaW1wbGljYXRlZC4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIHdoYXQgZnVuY3Rpb25hbGl0eSBpcyBsaWtlbHkgdG8gYmUgaW1wYWN0ZWQgZHVyaW5nIGRlYnVnZ2luZywgb3IgbW9kaWZpY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwOToxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyc2lfcHJlcGFyZV9iZWFjb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jPTM4OD1pbnQgcnNpX3NlbmRfYnRfcGt0KHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmMtNDI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmM6NDI1OmludCByc2lfcHJlcGFyZV9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jLTQyNi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jPTE3NjM9c3RhdGljIGludCByc2lfc2VuZF9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMTc3Ni1cdFx0c2tiX3B1bGwoc2tiLCAoNjQgLSBkd29yZF9hbGlnbl9ieXRlcykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jOjE3Nzc6XHRpZiAocnNpX3ByZXBhcmVfYmVhY29uKGNvbW1vbiwgc2tiKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTE3NzgtXHRcdHJzaV9kYmcoRVJSX1pPTkUsIFwmIzM0O0ZhaWxlZCB0byBwcmVwYXJlIGJlYWNvblxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9oYWwuaD0yMjU9aW50IHJzaV9wcmVwYXJlX2RhdGFfZGVzYyhzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfaGFsLmg6MjI2OmludCByc2lfcHJlcGFyZV9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2hhbC5oLTIyNy1pbnQgcnNpX3NlbmRfcGt0X3RvX2J1cyhzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc2OAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBSU0kgQmVhY29uIEZ1bmN0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3MgemVybyBpbiBvbiBzb21lIGtleSBhcmVhcyB3aXRoaW4gdGhpcyBSU0kgY29kZS4gSSYjMzk7bSB0aGlua2luZyBgcnNpX3ByZXBhcmVfYmVhY29uYCBhbmQgYHJzaV9zZW5kX2JlYWNvbmAgYXJlIGV4Y2VsbGVudCBzdGFydGluZyBwb2ludHMgZm9yIGEgZGVlcCBkaXZlLiBUaGV5IHNlZW0gbGlrZSBsb2dpY2FsIHBsYWNlcyB0byB1bmRlcnN0YW5kIGJlYWNvbiBnZW5lcmF0aW9uIGFuZCB0cmFuc21pc3Npb24sIHdoaWNoIGFyZSBjcml0aWNhbCBmb3IgdGhlIG92ZXJhbGwgd2lyZWxlc3Mgb3BlcmF0aW9uLiBJIGhhZCBhbHNvIGNvbnNpZGVyZWQgYHJzaV9tZ210X3BrdF9yZWN2YCwgYXMgaXQmIzM5O3Mgc3BlY2lmaWMgdG8gUlNJLCBidXQgSSYjMzk7bSBzbGlnaHRseSBoZXNpdGFudC4gSXQgY291bGQgYmUgYSBiaXQgb2YgYSBmaXJlaG9zZSwgaGFuZGxpbmcgKmFsbCogbWFuYWdlbWVudCBwYWNrZXRzLCB3aGljaCBtaWdodCBtYWtlIGl0IGEgbGVzcyBwcmVjaXNlIGZvY3VzIHN5bWJvbCBmb3Igbm93LgoKTGV0JiMzOTtzIGRvIHNvbWUgcXVpY2sgaW52ZXN0aWdhdGlvbnMsIG5vdy4gSXMgYHJzaV9wcmVwYXJlX2JlYWNvbmAgYSBzdGF0aWMgZnVuY3Rpb24/IE5vcGUsIGl0JiMzOTtzIGFjdHVhbGx5IGV4cG9ydGVkIGluIGByc2lfaGFsLmhgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4uLiBpdCYjMzk7cyBjbGVhcmx5IGludGVuZGVkIHRvIGJlIGNhbGxlZCBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0uIEkmIzM5O2xsIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuIE5vdywgd2hhdCBhYm91dCBgcnNpX3NlbmRfYmVhY29uYD8gQWgsIHRoYXQgb25lICppcyogc3RhdGljLCBhbmQgaXQmIzM5O3MgZGVmaW5lZCB3aXRoaW4gYHJzaV85MXhfbWdtdC5jYC4gT2theSwgdGhhdCBnaXZlcyBtZSBhIGNsZWFyIGlkZWEgb2Ygd2hlcmUgdGhpcyBwaWVjZSBvZiB0aGUgcHV6emxlIGZpdHMuCgpJIHdhbnQgdG8gbWFrZSBzdXJlIEkmIzM5O20gZnVsbHkgYXdhcmUgb2YgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4gU28sIGxldCBtZSBxdWlja2x5IHJlLWV4YW1pbmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBXZSBoYXZlIGBXTEFOX1ZFTkRPUl9SU0lgLCBgUlNJXzkxWGAsIGFuZCBgUlNJX1VTQmAuIEFyZSB0aGVyZSBhbnkgb3RoZXJzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBvZiB0aGVzZSBmdW5jdGlvbnM/IEl0JiMzOTtzIGFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoLiBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL01ha2VmaWxlYCBqdXN0IHRvIHZlcmlmeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDk6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UlNJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZT03PXJzaV85MXgteVx0XHRcdCYjNDM7PSByc2lfOTF4X3BzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZTo4OnJzaV85MXgtJChDT05GSUdfUlNJX0NPRVgpXHQmIzQzOz0gcnNpXzkxeF9jb2V4Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZTo5OnJzaV85MXgtJChDT05GSUdfUlNJX0RFQlVHRlMpXHQmIzQzOz0gcnNpXzkxeF9kZWJ1Z2ZzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZS0xMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvTWFrZWZpbGU9MTI9cnNpX3NkaW8teVx0XHRcdCYjNDM7PSByc2lfOTF4X3NkaW8ubyByc2lfOTF4X3NkaW9fb3BzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfUlNJXzkxWCkgXHRcdCYjNDM7PSByc2lfOTF4Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfUlNJX1NESU8pXHRcdCYjNDM7PSByc2lfc2Rpby5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvTWFrZWZpbGU6MTU6b2JqLSQoQ09ORklHX1JTSV9VU0IpXHRcdCYjNDM7PSByc2lfdXNiLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMDk6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzYyNAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgUlNJIG1vZHVsZXMgaGVyZSwgc3BlY2lmaWNhbGx5IGBSU0lfOTFYYCBhbmQgYFJTSV9VU0JgIC0gdGhvc2UgYXJlIHRoZSBjb3JlIG9uZXMuIFRoZSBgV0xBTl9WRU5ET1JfUlNJYCBzZWVtcyB0byBiZSBhbiBlbmFibGluZyBmbGFnLCBsaWtlbHkgZm9yIGEgbWVudSBvcHRpb24uIE1ha2VzIHNlbnNlIHRvIGluY2x1ZGUgdGhhdCBhbG9uZyB3aXRoIHRoZSBjb3JlIGRyaXZlcnMsIHNvIGxldCYjMzk7cyBhZGQgYFdMQU5fVkVORE9SX1JTSWAsIGBSU0lfOTFYYCwgYW5kIGBSU0lfVVNCYCB0byB0aGUgY29uZmlndXJhdGlvbi4KCkFoLCByaWdodC4gU2luY2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB3aXJlbGVzcywgYE1BQzgwMjExYCBpcyBhbG1vc3QgY2VydGFpbmx5IGEgZGVwZW5kZW5jeSwgYmVpbmcgYSBwcmV0dHkgZnVuZGFtZW50YWwgd2lyZWxlc3MgZHJpdmVyIGNvbXBvbmVudC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIGZvciBhbnkgZXhwbGljaXQgZGVwZW5kZW5jaWVzIGRlZmluZWQgaW4gdGhlIFJTSSBkcml2ZXImIzM5O3MgS2NvbmZpZyBmaWxlLCBzbyBsZXQmIzM5O3MgcXVpY2tseSBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAwOToxMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc9MTU9Y29uZmlnIFJTSV85MVhcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0xNy1cdHNlbGVjdCBCVF9IQ0lSU0kgaWYgUlNJX0NPRVhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnOjE4Olx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMTktXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc9MjM9Y29uZmlnIFJTSV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0yNC1cdGJvb2wgXCYjMzQ7UmVkcGluZSBTaWduYWxzIEluYyBkZWJ1ZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZzoyNTpcdGRlcGVuZHMgb24gUlNJXzkxWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMjYtXHRkZWZhdWx0IHlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZz0zMT1jb25maWcgUlNJX1NESU9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTMyLVx0dHJpc3RhdGUgXCYjMzQ7UmVkcGluZSBTaWduYWxzIFNESU8gYnVzIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnOjMzOlx0ZGVwZW5kcyBvbiBNTUMgXHUwMDI2XHUwMDI2IFJTSV85MVhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTM0LVx0ZGVmYXVsdCBtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc9Mzk9Y29uZmlnIFJTSV9VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTQwLVx0dHJpc3RhdGUgXCYjMzQ7UmVkcGluZSBTaWduYWxzIFVTQiBidXMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6NDE6XHRkZXBlbmRzIG9uIFVTQiBcdTAwMjZcdTAwMjYgUlNJXzkxWFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctNDItXHRkZWZhdWx0IG1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZz00Nz1jb25maWcgUlNJX0NPRVhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtSZWRwaW5lIFNpZ25hbHMgV0xBTiBCVCBDb2V4aXN0ZW5jZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZzo0OTpcdGRlcGVuZHMgb24gQlQgXHUwMDI2XHUwMDI2IFJTSV85MVhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnOjUwOlx0ZGVwZW5kcyBvbiAhKEJUPW0gXHUwMDI2XHUwMDI2IFJTSV85MVg9eSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTUxLVx0ZGVmYXVsdCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDA5OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0NDUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSU0kgQmVhY29uIFByZXBhcmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGVhbGluZyB3aXRoIGFuIFJTSSBpc3N1ZSBoZXJlLCBhbmQgdGhlIGtlcm5lbCBtb2R1bGUgYE1BQzgwMjExYCBpcyBhbG1vc3QgY2VydGFpbmx5IGludm9sdmVkIOKAkyBpdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIHdpcmVsZXNzIHN0YWNrLCBhbmQgbGlrZWx5IGVuYWJsZWQuIE15IGZpcnN0IHN0ZXAgaXMgdG8gY29uZmlybSB0aGUgc3BlY2lmaWMgUlNJLXJlbGF0ZWQgbW9kdWxlcyBhbmQgc2V0dGluZ3MsIHNvIEkgbmVlZCB0byBtYWtlIGEgbm90ZSB0byBjaGVjayBmb3IgYFdMQU5fVkVORE9SX1JTSWAsIGBSU0lfOTFYYCwgYW5kIGBSU0lfVVNCYCBjb25maWd1cmF0aW9ucy4KCk5vdywgbXkga2V5IHF1ZXN0aW9uIGlzIGFyb3VuZCBgcnNpX3ByZXBhcmVfYmVhY29uYC4gSXMgdGhpcyBzb21ldGhpbmcgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlciBzcGFjZSwgb3IgaXMgaXQgcHVyZWx5IGEgaGFyZHdhcmUtZHJpdmVuIGZ1bmN0aW9uPyBJIGtub3cgaXQmIzM5O3MgY2FsbGVkIGZyb20gYHJzaV9zZW5kX2JlYWNvbmAsIGFuZCB0aGF0IGZ1bmN0aW9uIGlzLCBpbiB0dXJuLCBjYWxsZWQgZnJvbSBgcnNpX21nbXRfcGt0X3JlY3ZgLiBUaGF0IG1lYW5zIHRoZSBwcmVwYXJhdGlvbiBvZiB0aGUgYmVhY29uIGlzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gbWFuYWdlbWVudCBwYWNrZXRzLgoKT2theSwgYHJzaV9tZ210X3BrdF9yZWN2YCBpcyB0cmlnZ2VyZWQgdXBvbiByZWNlaXZpbmcgYSBwYWNrZXQgZnJvbSB0aGUgaGFyZHdhcmUuIFNvLCBmcm9tIHRoYXQgcGF0aCwgSSBjYW4gZGVmaW5pdGVseSByZWFjaCBgcnNpX3ByZXBhcmVfYmVhY29uYCB0aHJvdWdoIGhhcmR3YXJlIHBhY2tldCBpbmplY3Rpb24gKGUuZy4gdXNpbmcgYSBVU0IgZ2FkZ2V0IHNldHVwKS4gQnV0IHRoYXQgZG9lc24mIzM5O3QgdGVsbCBtZSBpZiBpdCYjMzk7cyB1c2VyIHNwYWNlIGFjY2Vzc2libGUuIEkgbmVlZCB0byBiZSBjZXJ0YWluIHRoYXQgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIGF0dGFjayBzdXJmYWNlLiBTbywgSSB3aWxsIGNoZWNrIGlmIGByc2lfc2VuZF9iZWFjb25gIGlzIGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2UgaW4gdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDA5OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JzaV9zZW5kX2JlYWNvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jPTE3Mzg9aW50IHJzaV9zZXRfYW50ZW5uYShzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCB1OCBhbnRlbm5hKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYy0xNzYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jOjE3NjM6c3RhdGljIGludCByc2lfc2VuZF9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYy0xNzY0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM9MjE4NT1pbnQgcnNpX21nbXRfcGt0X3JlY3Yoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgdTggKm1zZylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMjIyNC1cdFx0XHRyZXR1cm4gLTE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM6MjIyNTpcdFx0cnNpX3NlbmRfYmVhY29uKGNvbW1vbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMjIyNi1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDA5OjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyMzAKCQkJCQkJCW91dHB1dDogMTU2CgkJCQkJCQl0aG91Z2h0czogMTc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uOiBIYXJkd2FyZS1UcmlnZ2VyZWQgQmVhY29uIFByb2Nlc3NpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBwYXRoLCBhbmQgaXQmIzM5O3MgYWxsIG9yaWdpbmF0aW5nIGZyb20gYHJzaV9tZ210X3BrdF9yZWN2YC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCYjMzk7cyBoYXJkd2FyZS10cmlnZ2VyZWQsIHdoaWNoIGlzIGtleS4gVGhpcyBpcyBwZXJmZWN0ISBUaGUgd2hvbGUgYmVhdXR5IG9mIGl0IGlzIHRoYXQgd2UgY2FuIGZ1enogVVNCIGRldmljZXMgdXNpbmcgYHZoY2lgLCB0aGUgdmlydHVhbCBVU0IgaG9zdCBjb250cm9sbGVyLiBUaGF0IG1lYW5zIHdlIGhhdmUgYSBjbGVhbiBhdHRhY2sgc3VyZmFjZSBoZXJlLgoKSSBuZWVkIHRvIGZvY3VzIG9uIGEgZmV3IGtleSBzeW1ib2xzOiBgcnNpX3ByZXBhcmVfYmVhY29uYCBhbmQgYHJzaV9zZW5kX2JlYWNvbmAuIFRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgc2VlbSBtb3N0IHJlbGV2YW50IHRvIHRoZSBleHBsb2l0LgoKTm93IGZvciBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGVudmlyb25tZW50LiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBXTEFOX1ZFTkRPUl9SU0lgLCBgUlNJXzkxWGAsIGFuZCBgUlNJX1VTQmAgY29uZmlndXJhdGlvbnMuCgpFc3NlbnRpYWxseSwgdGhpcyBwYXRjaCBpcyBmaXhpbmcgYSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBgcnNpX3ByZXBhcmVfYmVhY29uYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGZvciBgc2tiX3RhaWxyb29tYCBiZWZvcmUgY29weWluZyBkYXRhLCB3aGljaCBpcyBnb29kLiBUaGlzIHZ1bG5lcmFiaWxpdHkgaXMgcmVhY2hhYmxlIHdoZW4gdGhlIGRyaXZlciBoYW5kbGVzIGEgYmVhY29uIHJlcXVlc3QgY29taW5nIGRpcmVjdGx5IGZyb20gdGhlIGhhcmR3YXJlLiBUaGUgZmFjdCB0aGF0IHRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIChgUlNJX1VTQmApIGlzIGNydWNpYWwgaGVyZS4gVGhhdCYjMzk7cyBvdXIgZnV6emluZyBlbnRyeSBwb2ludC4gV2UgY2FuIGV4cGxvaXQgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVzc2VudGlhbGx5IGltcGVyc29uYXRpbmcgYSBtYWxpY2lvdXMgVVNCIGRldmljZSB1c2luZyB0aGUgVVNCIGdhZGdldCBzdWJzeXN0ZW0gKGB2aGNpYCkuIFdlIGNhbiBjcmFmdCBzcGVjaWZpYyBVU0IgcGFja2V0cyB0aGF0IHRyaWdnZXIgdGhpcyBiZWFjb24gaGFuZGxpbmcsIGFuZCBob3BlZnVsbHksIHRyaWdnZXIgdGhlIHZ1bG5lcmFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDA5OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtXTEFOX1ZFTkRPUl9SU0kmIzM0OywKICAgICYjMzQ7UlNJXzkxWCYjMzQ7LAogICAgJiMzNDtSU0lfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnNpX3ByZXBhcmVfYmVhY29uJiMzNDssCiAgICAmIzM0O3JzaV9zZW5kX2JlYWNvbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3cgaW4gYHJzaV9wcmVwYXJlX2JlYWNvbmAgYnkgY2hlY2tpbmcgYHNrYl90YWlscm9vbWAgYmVmb3JlIGNvcHlpbmcgZGF0YS4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgd2hlbiB0aGUgZHJpdmVyIHByb2Nlc3NlcyBhIGJlYWNvbiByZXF1ZXN0IGZyb20gdGhlIGhhcmR3YXJlLiBTaW5jZSB0aGUgZHJpdmVyIHN1cHBvcnRzIFVTQiAoYFJTSV9VU0JgKSwgdGhpcyBjb2RlIHBhdGggY2FuIGJlIHRyaWdnZXJlZCBhbmQgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgZW11bGF0aW5nIGEgbWFsaWNpb3VzIFVTQiBkZXZpY2UgdmlhIHRoZSBVU0IgZ2FkZ2V0IHN1YnN5c3RlbSAodmhjaSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1dMQU5fVkVORE9SX1JTSSYjMzQ7LAogICAgJiMzNDtSU0lfOTFYJiMzNDssCiAgICAmIzM0O1JTSV9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyc2lfcHJlcGFyZV9iZWFjb24mIzM0OywKICAgICYjMzQ7cnNpX3NlbmRfYmVhY29uJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBpbiBgcnNpX3ByZXBhcmVfYmVhY29uYCBieSBjaGVja2luZyBgc2tiX3RhaWxyb29tYCBiZWZvcmUgY29weWluZyBkYXRhLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB3aGVuIHRoZSBkcml2ZXIgcHJvY2Vzc2VzIGEgYmVhY29uIHJlcXVlc3QgZnJvbSB0aGUgaGFyZHdhcmUuIFNpbmNlIHRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIChgUlNJX1VTQmApLCB0aGlzIGNvZGUgcGF0aCBjYW4gYmUgdHJpZ2dlcmVkIGFuZCBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBieSBlbXVsYXRpbmcgYSBtYWxpY2lvdXMgVVNCIGRldmljZSB2aWEgdGhlIFVTQiBnYWRnZXQgc3Vic3lzdGVtICh2aGNpKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDA5OjEwOjA2LjUyNjQ2MzkxOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNTg1OTQ0ODQyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJXTEFOX1ZFTkRPUl9SU0lcIixcbiAgICBcIlJTSV85MVhcIixcbiAgICBcIlJTSV9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyc2lfcHJlcGFyZV9iZWFjb25cIixcbiAgICBcInJzaV9zZW5kX2JlYWNvblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBpbiBgcnNpX3ByZXBhcmVfYmVhY29uYCBieSBjaGVja2luZyBgc2tiX3RhaWxyb29tYCBiZWZvcmUgY29weWluZyBkYXRhLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB3aGVuIHRoZSBkcml2ZXIgcHJvY2Vzc2VzIGEgYmVhY29uIHJlcXVlc3QgZnJvbSB0aGUgaGFyZHdhcmUuIFNpbmNlIHRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIChgUlNJX1VTQmApLCB0aGlzIGNvZGUgcGF0aCBjYW4gYmUgdHJpZ2dlcmVkIGFuZCBmdXp6ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBieSBlbXVsYXRpbmcgYSBtYWxpY2lvdXMgVVNCIGRldmljZSB2aWEgdGhlIFVTQiBnYWRnZXQgc3Vic3lzdGVtICh2aGNpKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDk6MTA6MDYuNTI2NDY5OTY4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDY0ODkzNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3ZTdhMGUxNDM3NzA5ZjA5MThkZWJiOWQ2YjNjMjRmNmI5NWQ0ZmI2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDUgMDk6MTA6MDUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9oYWwuY1xcbmluZGV4IGEwYzM2MTQ0ZWIwYjIzLi41MDEwNzExMDRhOWZlNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9oYWwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jXFxuQEAgLTQzMSw2ICs0MzEsNyBAQCBpbnQgcnNpX3ByZXBhcmVfYmVhY29uKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWY7XFxuIFxcdHN0cnVjdCBza19idWZmICptYWNfYmNuO1xcbiBcXHR1OCB2YXBfaWQgPSAwLCBpO1xcbitcXHR1bnNpZ25lZCBpbnQgdGFpbHJvb207XFxuIFxcdHUxNiB0aW1fb2Zmc2V0ID0gMDtcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBSU0lfTUFYX1ZJRlM7IGkrKykge1xcbkBAIC00ODAsNiArNDgxLDEzIEBAIGludCByc2lfcHJlcGFyZV9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0aWYgKG1hY19iY24tXFx1MDAzZWRhdGFbdGltX29mZnNldCArIDJdID09IDApXFxuIFxcdFxcdGJjbl9mcm0tXFx1MDAzZWZyYW1lX2luZm8gfD0gY3B1X3RvX2xlMTYoUlNJX0RBVEFfREVTQ19EVElNX0JFQUNPTik7XFxuIFxcbitcXHR0YWlscm9vbSA9IHNrYl90YWlscm9vbShza2IpO1xcbitcXHRpZiAodGFpbHJvb20gXFx1MDAzYyBGUkFNRV9ERVNDX1NaIHx8XFxuK1xcdCAgICBtYWNfYmNuLVxcdTAwM2VsZW4gXFx1MDAzZSB0YWlscm9vbSAtIEZSQU1FX0RFU0NfU1opIHtcXG4rXFx0XFx0ZGV2X2tmcmVlX3NrYihtYWNfYmNuKTtcXG4rXFx0XFx0cmV0dXJuIC1FTVNHU0laRTtcXG4rXFx0fVxcbitcXG4gXFx0bWVtY3B5KFxcdTAwMjZza2ItXFx1MDAzZWRhdGFbRlJBTUVfREVTQ19TWl0sIG1hY19iY24tXFx1MDAzZWRhdGEsIG1hY19iY24tXFx1MDAzZWxlbik7XFxuIFxcdHNrYl9wdXQoc2tiLCBtYWNfYmNuLVxcdTAwM2VsZW4gKyBGUkFNRV9ERVNDX1NaKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDA5OjEwOjA2Ljg3MzkwNzI0NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE1NTExOTk2OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIldMQU5fVkVORE9SX1JTSVwiLFxuICAgIFwiUlNJXzkxWFwiLFxuICAgIFwiUlNJX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJzaV9wcmVwYXJlX2JlYWNvblwiLFxuICAgIFwicnNpX3NlbmRfYmVhY29uXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93IGluIGByc2lfcHJlcGFyZV9iZWFjb25gIGJ5IGNoZWNraW5nIGBza2JfdGFpbHJvb21gIGJlZm9yZSBjb3B5aW5nIGRhdGEuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHdoZW4gdGhlIGRyaXZlciBwcm9jZXNzZXMgYSBiZWFjb24gcmVxdWVzdCBmcm9tIHRoZSBoYXJkd2FyZS4gU2luY2UgdGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgKGBSU0lfVVNCYCksIHRoaXMgY29kZSBwYXRoIGNhbiBiZSB0cmlnZ2VyZWQgYW5kIGZ1enplZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVtdWxhdGluZyBhIG1hbGljaW91cyBVU0IgZGV2aWNlIHZpYSB0aGUgVVNCIGdhZGdldCBzdWJzeXN0ZW0gKHZoY2kpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDdlN2EwZTE0Mzc3MDlmMDkxOGRlYmI5ZDZiM2MyNGY2Yjk1ZDRmYjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCA1IDA5OjEwOjA1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9oYWwuY1xuaW5kZXggYTBjMzYxNDRlYjBiMjMuLjUwMTA3MTEwNGE5ZmU2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jXG5AQCAtNDMxLDYgKzQzMSw3IEBAIGludCByc2lfcHJlcGFyZV9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWY7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqbWFjX2JjbjtcbiBcdHU4IHZhcF9pZCA9IDAsIGk7XG4rXHR1bnNpZ25lZCBpbnQgdGFpbHJvb207XG4gXHR1MTYgdGltX29mZnNldCA9IDA7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBSU0lfTUFYX1ZJRlM7IGkrKykge1xuQEAgLTQ4MCw2ICs0ODEsMTMgQEAgaW50IHJzaV9wcmVwYXJlX2JlYWNvbihzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0aWYgKG1hY19iY24tXHUwMDNlZGF0YVt0aW1fb2Zmc2V0ICsgMl0gPT0gMClcbiBcdFx0YmNuX2ZybS1cdTAwM2VmcmFtZV9pbmZvIHw9IGNwdV90b19sZTE2KFJTSV9EQVRBX0RFU0NfRFRJTV9CRUFDT04pO1xuIFxuK1x0dGFpbHJvb20gPSBza2JfdGFpbHJvb20oc2tiKTtcbitcdGlmICh0YWlscm9vbSBcdTAwM2MgRlJBTUVfREVTQ19TWiB8fFxuK1x0ICAgIG1hY19iY24tXHUwMDNlbGVuIFx1MDAzZSB0YWlscm9vbSAtIEZSQU1FX0RFU0NfU1opIHtcbitcdFx0ZGV2X2tmcmVlX3NrYihtYWNfYmNuKTtcbitcdFx0cmV0dXJuIC1FTVNHU0laRTtcbitcdH1cbitcbiBcdG1lbWNweShcdTAwMjZza2ItXHUwMDNlZGF0YVtGUkFNRV9ERVNDX1NaXSwgbWFjX2Jjbi1cdTAwM2VkYXRhLCBtYWNfYmNuLVx1MDAzZWxlbik7XG4gXHRza2JfcHV0KHNrYiwgbWFjX2Jjbi1cdTAwM2VsZW4gKyBGUkFNRV9ERVNDX1NaKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDA5OjEwOjA2Ljg3MzkwOTQ5NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NjQ0MzAzMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEJ1ZmZlciBPdmVyZmxvdyBGaXggaW4gYSBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9oYWwuY2AuIFRoZSBjb3JlIGNoYW5nZSBpcyBpbiBgcnNpX3ByZXBhcmVfYmVhY29uYCwgc3BlY2lmaWNhbGx5IGEgY2hlY2sgZm9yIGBza2JfdGFpbHJvb20oc2tiKWAgYmVmb3JlIGFueSBkYXRhIGlzIGNvcGllZC4gVGhhdCdzIGdvb2QsIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBpbXByb3ZlbWVudCBhaW1lZCBhdCBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdy4gQWx3YXlzIGdvb2QgdG8gc2VlIHRob3NlLlxuXG5NeSBuZXh0IHRob3VnaHQgaXMsIGhvdyBsaWtlbHkgaXMgdGhpcyB0byBhY3R1YWxseSBiZSB0cmlnZ2VyZWQ/IExldCdzIGZpZ3VyZSBvdXQgaWYgdGhpcyBkcml2ZXIsIGByc2lfOTF4YCwgYSBSZWRwaW5lIFNpZ25hbHMgSW5jLiA5MXggV0xBTiBkcml2ZXIsIGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhhdCdzIHdoZXJlIGEgbG90IG9mIHRoZXNlIHZ1bG5lcmFiaWxpdGllcyBnZXQgZm91bmQsIGFuZCB3aGVyZSB0ZXN0aW5nIGlzIGVhc2llc3QuIElmIGl0J3Mgc29tZXRoaW5nIHRoYXQgb25seSBzaG93cyB1cCBpbiBhIHJhcmUgaGFyZHdhcmUgY29uZmlndXJhdGlvbiwgaXQncyBhIHZlcnkgZGlmZmVyZW50IGJlYXN0IHRoYW4gc29tZXRoaW5nIHRoYXQncyBwcmVzZW50IGJ5IGRlZmF1bHQgaW4gYSBsb3Qgb2YgY2xvdWQgaW5zdGFuY2VzLCByaWdodD9cblxuSSdsbCBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnYCBmaWxlLiBUaGF0J2xsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBpdHMgYnVpbGQgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgYWN0aXZhdGlvbiBjb25kaXRpb25zIHdpdGhpbiB0aGUga2VybmVsLiBOZWVkIHRvIGtub3cgdGhlIGNpcmN1bXN0YW5jZXMgdG8gcHJvcGVybHkgZXZhbHVhdGUgdGhpcyBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwOToxMDoxMi4zMzgzNDE4MjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAwNTgxNzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnNpX3ByZXBhcmVfYmVhY29uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmM9Mzg4PWludCByc2lfc2VuZF9idF9wa3Qoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jLTQyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9oYWwuYzo0MjU6aW50IHJzaV9wcmVwYXJlX2JlYWNvbihzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jLTQyNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM9MTc2Mz1zdGF0aWMgaW50IHJzaV9zZW5kX2JlYWNvbihzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTE3NzYtXFx0XFx0c2tiX3B1bGwoc2tiLCAoNjQgLSBkd29yZF9hbGlnbl9ieXRlcykpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYzoxNzc3OlxcdGlmIChyc2lfcHJlcGFyZV9iZWFjb24oY29tbW9uLCBza2IpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTE3NzgtXFx0XFx0cnNpX2RiZyhFUlJfWk9ORSwgXFxcIkZhaWxlZCB0byBwcmVwYXJlIGJlYWNvblxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2hhbC5oPTIyNT1pbnQgcnNpX3ByZXBhcmVfZGF0YV9kZXNjKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIHN0cnVjdCBza19idWZmICpza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfaGFsLmg6MjI2OmludCByc2lfcHJlcGFyZV9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9oYWwuaC0yMjctaW50IHJzaV9zZW5kX3BrdF90b19idXMoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDA5OjEwOjEyLjM5ODQwOTQxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI1NjIxNjAxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gZGVlcCBpbiBteSBkb21haW46XG5cbioqUlNJIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdGhpcyBzdHJhaWdodC4gTXkgbWVudGFsIGNoZWNrbGlzdCBmb3IgdGhlIGN1cnJlbnQgdGFzayBoYXMgbGFuZGVkIG1lIHNxdWFyZWx5IGF0IFJTSS4gSSBuZWVkIHRvIGVuc3VyZSBpdCdzIGNvbmZpZ3VyZWQgYXBwcm9wcmlhdGVseS4gVGhlIG9idmlvdXMgZmlyc3Qgc3RlcCwgYmVmb3JlIEkgZXZlbiBzdGFydCB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBkcml2ZXJzIG9yIHRoZSBidWlsZCBwcm9jZXNzLCBpcyB0byBkaXZlIGludG8gdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCdzIHRoZSBiZWRyb2NrLCB0aGUgY29uZmlndXJhdGlvbiBmb3VuZGF0aW9uIHVwb24gd2hpY2ggZXZlcnl0aGluZyBlbHNlIHJlbGF0ZWQgdG8gUlNJIHJlc3RzLiBJIG5lZWQgdG8gdmVyaWZ5IGl0cyBlbmFibGVkIHN0YXRlLCB1bmRlcnN0YW5kIGFueSBkZXBlbmRlbmNpZXMgaXQgaGFzLCBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZmxhZ3Mgb3Igb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoZSBzcGVjaWZpYyBjb250ZXh0IEknbSBjdXJyZW50bHkgd29ya2luZyB3aXRoaW4uIExldCdzIHNlZSB3aGF0IHRoZSBjb25maWd1cmF0aW9uIGVjb3N5c3RlbSBpcyBzYXlpbmcgYWJvdXQgUlNJJ3MgY3VycmVudCBzdGF0dXMgYW5kIHBvdGVudGlhbCBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTk0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDk6MTA6MTUuNjU0NjI3MzU5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0Nzg3ODI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSU0lfOTFYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc9MTM9aWYgV0xBTl9WRU5ET1JfUlNJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6MTU6Y29uZmlnIFJTSV85MVhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0xNi1cXHR0cmlzdGF0ZSBcXFwiUmVkcGluZSBTaWduYWxzIEluYyA5MXggV0xBTiBkcml2ZXIgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDk6MTA6MTUuNzA5NDIxNzI3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5NzkzNTIxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogQnVzIENvbXBhdGliaWxpdHkgSW5xdWlyeSoqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHRha2luZyBhIGZyZXNoIGxvb2sgYXQgdGhpcywgYW5kIHRoZSBmaXJzdCBvcmRlciBvZiBidXNpbmVzcyBpcyBlc3RhYmxpc2hpbmcgaXRzIGZvdW5kYXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGltbWVkaWF0ZWx5IGZvY3VzZXMgb24gKipidXMgc3VwcG9ydCoqLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdW5kZXJseWluZyBhcmNoaXRlY3R1cmUgYW5kIHdoYXQgc3BlY2lmaWMgYnVzIGludGVyZmFjZXMgYXJlIGNvbXBhdGlibGUuIFRoaXMgaXMgZnVuZGFtZW50YWw7IHdpdGhvdXQgdGhpcyBiYXNpYyB1bmRlcnN0YW5kaW5nLCBmdXJ0aGVyIGFuYWx5c2lzIGlzIHBvaW50bGVzcy4gSXQgZGljdGF0ZXMgZXZlcnl0aGluZyBmcm9tIGRhdGEgdGhyb3VnaHB1dCBhbmQgY29tbXVuaWNhdGlvbiBwcm90b2NvbHMgdG8gdGhlIHBvdGVudGlhbCBmb3IgaW50ZWdyYXRpb24gd2l0aGluIGV4aXN0aW5nIHN5c3RlbXMuIFNvLCB0aGUgcXVlc3Rpb24gaXM6IHdoYXQgYnVzZXMgZG9lcyB0aGlzIHRoaW5nIHBsYXkgbmljZSB3aXRoPyBLbm93aW5nIHRoZSBhbnN3ZXIgdW5sb2NrcyB0aGUgbmV4dCBsYXllciBvZiBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzEyLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwOToxMDoxOS41MDczNTkwMDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc1NjU5MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJTSV9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZz0xMz1pZiBXTEFOX1ZFTkRPUl9SU0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0xNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZzoxNTpjb25maWcgUlNJXzkxWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTE2LVxcdHRyaXN0YXRlIFxcXCJSZWRwaW5lIFNpZ25hbHMgSW5jIDkxeCBXTEFOIGRyaXZlciBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6MjM6Y29uZmlnIFJTSV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMjQtXFx0Ym9vbCBcXFwiUmVkcGluZSBTaWduYWxzIEluYyBkZWJ1ZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6MzE6Y29uZmlnIFJTSV9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIlJlZHBpbmUgU2lnbmFscyBTRElPIGJ1cyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6Mzk6Y29uZmlnIFJTSV9VU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy00MC1cXHR0cmlzdGF0ZSBcXFwiUmVkcGluZSBTaWduYWxzIFVTQiBidXMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnOjQ3OmNvbmZpZyBSU0lfQ09FWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIlJlZHBpbmUgU2lnbmFscyBXTEFOIEJUIENvZXhpc3RlbmNlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDA5OjEwOjE5LjU2NDkzMDA2NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTE0NDMyNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipVU0IgRnV6emluZyBQb3RlbnRpYWwgYW5kIEJlYWNvbiBSZWFjaGFiaWxpdHkqKlxuXG5SaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgdGhpcyBzeXN0ZW0gc3VwcG9ydHMgVVNCLCBzcGVjaWZpY2FsbHkgdmlhIGBSU0lfVVNCYC4gVGhpcyBpcyBleGNlbGxlbnQgbmV3cyEgSWYgVVNCIGlzIHN1cHBvcnRlZCwgdGhhdCBvcGVucyB0aGUgZG9vciB0byBmdXp6aW5nIGl0IHVzaW5nIHZoY2kgKHRoZSBVU0IgZ2FkZ2V0IGludGVyZmFjZSkuIFRoYXQncyBhIGNsYXNzaWMgYW5kIGVmZmVjdGl2ZSBhdHRhY2sgdmVjdG9yLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaWYgSSBjYW4gcmVhY2ggYHJzaV9wcmVwYXJlX2JlYWNvbmAuIFNwZWNpZmljYWxseSwgY2FuIEkgdHJpZ2dlciBpdCwgYW5kIHRoZW4gd2hhdCBjYW4gSSBkbyB3aXRoIGl0P1xuXG5Pa2F5LCBkaWdnaW5nIGluIGEgYml0IGRlZXBlciwgSSBzZWUgdGhhdCBgcnNpX3ByZXBhcmVfYmVhY29uYCBpcyBjYWxsZWQgZnJvbSBgcnNpX3NlbmRfYmVhY29uYC4gSSByZW1lbWJlciB0aGF0IGZ1bmN0aW9uLi4uIHRoYXQncyBpbiBgcnNpXzkxeF9tZ210LmNgLiBOb3cgSSBoYXZlIGEgYnJlYWRjcnVtYiB0cmFpbCB0byBmb2xsb3cuIFRpbWUgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCBzZWUgd2hhdCBJIGNhbiB1bmNvdmVyLiBNeSB0aG91Z2h0IHByb2Nlc3MgaGVyZSBpcyB0byBzZWUgaWYgSSBjYW4gcmVhY2ggYW5kIGNvbnRyb2wgYHJzaV9wcmVwYXJlX2JlYWNvbmAgdGhyb3VnaCB0aGUgY2hhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NTksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwOToxMDoyMy45NTYzNzY0OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc0MjczMDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnNpX3NlbmRfYmVhY29uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jPTE3Mzg9aW50IHJzaV9zZXRfYW50ZW5uYShzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCB1OCBhbnRlbm5hKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTE3NjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jOjE3NjM6c3RhdGljIGludCByc2lfc2VuZF9iZWFjb24oc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMTc2NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM9MjE4NT1pbnQgcnNpX21nbXRfcGt0X3JlY3Yoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgdTggKm1zZylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYy0yMjI0LVxcdFxcdFxcdHJldHVybiAtMTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM6MjIyNTpcXHRcXHRyc2lfc2VuZF9iZWFjb24oY29tbW9uKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMjIyNi1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDk6MTA6MjQuMDEzODA5MTY4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4OTc1MDE0NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEJlYWNvbiBUcmFuc21pc3Npb24gUGF0aCoqXG5cblJpZ2h0LCBzbyBgcnNpX3NlbmRfYmVhY29uYCBpcyBjYWxsZWQgZnJvbSB3aXRoaW4gYHJzaV9tZ210X3BrdF9yZWN2YC4gVGhhdCdzIHRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgaW5jb21pbmcgbWFuYWdlbWVudCBwYWNrZXRzLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGJlYWNvbiB0cmFuc21pc3Npb24gZmxvdy4gVG8gZG8gdGhhdCwgSSBuZWVkIHRvIGtub3cgKndoZXJlKiBgcnNpX21nbXRfcGt0X3JlY3ZgIGl0c2VsZiBpcyBiZWluZyBjYWxsZWQgZnJvbS4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGVyZSB0byBmaWd1cmUgb3V0IHRoZSBpbml0aWF0aW5nIGV2ZW50LiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBjYWxsIHN0YWNrcyBhbmQgc2VlIHdoYXQncyB0cmlnZ2VyaW5nIHRoZSBtYW5hZ2VtZW50IHBhY2tldCBwcm9jZXNzaW5nLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBob3cgYmVhY29ucyBhcmUgaW5pdGlhdGVkIGFuZCBwcm9wYWdhdGVkIHdpdGhpbiB0aGUgc3lzdGVtLiBMZXQncyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDYzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDk6MTA6MjcuOTExMzEyOTMzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzU5ODQ2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyc2lfbWdtdF9wa3RfcmVjdlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2NvZXguYz02OD1pbnQgcnNpX2NvZXhfcmVjdl9wa3Qoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgdTggKm1zZylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2NvZXguYy03OS1cXHRcXHRyc2lfZGJnKElORk9fWk9ORSwgXFxcInNsZWVwIG5vdGlmeSByZWNlaXZlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfY29leC5jOjgwOlxcdFxcdHJzaV9tZ210X3BrdF9yZWN2KGNvbW1vbiwgbXNnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9jb2V4LmMtODEtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWluLmM9MTU3PWludCByc2lfcmVhZF9wa3Qoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgdTggKnJ4X3BrdCwgczMyIHJjdl9wa3RfbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jLTE5MC0jZW5kaWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWluLmM6MTkxOlxcdFxcdFxcdFxcdHJzaV9tZ210X3BrdF9yZWN2KGNvbW1vbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWluLmMtMTkyLVxcdFxcdFxcdFxcdFxcdFxcdCAgKGZyYW1lX2Rlc2MgKyBvZmZzZXQpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21haW4uYy0yMDYtXFx0XFx0Y2FzZSBSU0lfV0lGSV9NR01UX1E6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jOjIwNzpcXHRcXHRcXHRyc2lfbWdtdF9wa3RfcmVjdihjb21tb24sIChmcmFtZV9kZXNjICsgb2Zmc2V0KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFpbi5jLTIwOC1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYz0yMTI2PWludCByc2lfaGFuZGxlX2NhcmRfcmVhZHkoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgdTggKm1zZylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYy0yMTc3LS8qKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYzoyMTc4OiAqIHJzaV9tZ210X3BrdF9yZWN2KCkgLSBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyB0aGUgbWFuYWdlbWVudCBwYWNrZXRzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTIxNzktICpcXHRcXHRcXHQgcmVjZWl2ZWQgZnJvbSB0aGUgaGFyZHdhcmUuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMjE4NC0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmM6MjE4NTppbnQgcnNpX21nbXRfcGt0X3JlY3Yoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgdTggKm1zZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMjE4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX21nbXQuaD03MTM9aW50IHJzaV9oYW5kbGVfY2FyZF9yZWFkeShzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCB1OCAqbXNnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX21nbXQuaDo3MTQ6aW50IHJzaV9tZ210X3BrdF9yZWN2KHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIHU4ICptc2cpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfbWdtdC5oLTcxNS1pbnQgcnNpX3NldF92YXBfY2FwYWJpbGl0aWVzKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIGVudW0gb3Btb2RlIG1vZGUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDA5OjEwOjI3Ljk2ODkxNjgyMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjQxNzE1MDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuXG5cbioqRnV6emluZyBQb3RlbnRpYWw6IFJTSSBVU0IgUGFja2V0IFJlY2VwdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4gVGhpcyBgcnNpX21nbXRfcGt0X3JlY3ZgIGZ1bmN0aW9uIGlzIHRyaWdnZXJlZCBieSBpbmNvbWluZyBwYWNrZXRzIGZyb20gdGhlIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgb24gdGhlIHJlY2VpdmluZyBlbmQuIFRoZSBmYWN0IHRoYXQgaXTigJlzIGxpbmtlZCB0byBhbiBgUlNJX1VTQmAgZGV2aWNlIGlzIGtleSBoZXJlLiBUaGF0IG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIFVTQiBjb25uZWN0aW9uLCBhbmQgbW9yZSBzcGVjaWZpY2FsbHksIGxpa2VseSB1c2luZyBhIFVTQiBnYWRnZXQgc2V0dXAgbGlrZSBgdmhjaWAgZm9yIHRoZSBob3N0IHRvIGVtdWxhdGUgaGFyZHdhcmUgb24gdGhlIGRldmljZSBzaWRlLlxuXG5TbywgbG9naWNhbGx5IHNwZWFraW5nLCB0aGlzIGlzIHJlYWNoYWJsZSBjb2RlLCBhbmQgSSBzZWUgYSBodWdlIGZ1enppbmcgb3Bwb3J0dW5pdHkuIFdlIGNhbiBjcmFmdCBhbmQgaW5qZWN0IG1hbGljaW91cyBwYWNrZXRzIGZyb20gdGhlIFwiaGFyZHdhcmVcIiBzaWRlIHRocm91Z2ggVVNCLCByaWdodD8gV2UnbGwgc2VlIGhvdyB0aGF0IGFwcGxpZXMgdG8gdGhlIGNvZGUuXG5cbkJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIHNob3VsZCBsb29rIGF0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCBtZSBxdWlja2x5IGV4YW1pbmUgYFdMQU5fVkVORE9SX1JTSWAsIGBSU0lfOTFYYCwgYW5kIGBSU0lfVVNCYC4gSSdsbCB3YW50IHRvIGNoZWNrIGBXTEFOX1ZFTkRPUl9SU0lgLCBsaWtlbHkgaW4gZWl0aGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZ2Agb3IsIHdvcnN0IGNhc2UsIHRoZSB0b3AtbGV2ZWwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIFRoZXNlIGZsYWdzIHdpbGwgaW5mb3JtIGhvdyB0aGUgZHJpdmVycyBhcmUgYnVpbHQgYW5kIHdoYXQgZnVuY3Rpb25hbGl0eSBpcyBjb21waWxlZCBpbnRvIHRoZSBpbWFnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ5MywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwOToxMDozMi42MTA2MzQ1ODlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0MDY0MTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBXTEFOX1ZFTkRPUl9SU0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6Mjpjb25maWcgV0xBTl9WRU5ET1JfUlNJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMy1cXHRib29sIFxcXCJSZWRwaW5lIFNpZ25hbHMgSW5jIGRldmljZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDA5OjEwOjMyLjcwNDcwNDk2NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTg2NzA3NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogUmVsZXZhbnQgTW9kdWxlcyBhbmQgQmVhY29uIFByZXBhcmF0aW9uKipcblxuUmlnaHQsIHNvIHdlJ3JlIGRpdmluZyBpbnRvIHRoZSBjb2RlYmFzZSBhbmQgaW1tZWRpYXRlbHksIEknbSB0aGlua2luZyBhYm91dCB0aG9zZSBjb3JlIG1vZHVsZXMsIHNwZWNpZmljYWxseSBgV0xBTl9WRU5ET1JfUlNJYCwgYFJTSV85MVhgLCBhbmQgYFJTSV9VU0JgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGVzZSByZXByZXNlbnQgZGlzdGluY3QgaW1wbGVtZW50YXRpb24gcGF0aHMgb3IgaGFyZHdhcmUgcmV2aXNpb25zIHdpdGhpbiB0aGUgUlNJIGZhbWlseS4gV2UgYXJlIG5vdCBqdXN0IHRhbGtpbmcgYWJvdXQganVzdCB0aG9zZSB0aHJlZSBlaXRoZXIsIHRoZXNlIGFyZSB0aGUgc3RhcnRpbmcgcG9pbnRzLlxuXG5Ob3csIGdpdmVuIHRoYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBiZWFjb24gc2V0dXAgcHJvY2Vzcy4gSSdtIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byBgcnNpX3ByZXBhcmVfYmVhY29uYC4gVGhpcyBmdW5jdGlvbiBpcyBhbG1vc3QgYWx3YXlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIGZpcm13YXJlIHN0cnVjdHVyZXMgYW5kIGJyb2FkY2FzdHMgaXRzIGFkdmVydGlzaW5nIGZyYW1lLiBJdCdsbCBnaXZlIG1lIGEgc3Ryb25nIGluZGljYXRpb24gb2Ygd2hlcmUgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbiBjYWxscyBhcmUgbmVzdGVkIGFuZCB3aGF0IG90aGVyIGFyZWFzIG9mIHRoZSBjb2RlYmFzZSBhcmUgaW1wbGljYXRlZC4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIHdoYXQgZnVuY3Rpb25hbGl0eSBpcyBsaWtlbHkgdG8gYmUgaW1wYWN0ZWQgZHVyaW5nIGRlYnVnZ2luZywgb3IgbW9kaWZpY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDE3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDk6MTA6MzcuMjkxNDE0OTk1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODk5OTcxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyc2lfcHJlcGFyZV9iZWFjb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9oYWwuYz0zODg9aW50IHJzaV9zZW5kX2J0X3BrdChzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmMtNDI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X2hhbC5jOjQyNTppbnQgcnNpX3ByZXBhcmVfYmVhY29uKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfaGFsLmMtNDI2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYz0xNzYzPXN0YXRpYyBpbnQgcnNpX3NlbmRfYmVhY29uKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMTc3Ni1cXHRcXHRza2JfcHVsbChza2IsICg2NCAtIGR3b3JkX2FsaWduX2J5dGVzKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jOjE3Nzc6XFx0aWYgKHJzaV9wcmVwYXJlX2JlYWNvbihjb21tb24sIHNrYikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMTc3OC1cXHRcXHRyc2lfZGJnKEVSUl9aT05FLCBcXFwiRmFpbGVkIHRvIHByZXBhcmUgYmVhY29uXFxcXG5cXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfaGFsLmg9MjI1PWludCByc2lfcHJlcGFyZV9kYXRhX2Rlc2Moc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV9oYWwuaDoyMjY6aW50IHJzaV9wcmVwYXJlX2JlYWNvbihzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpX2hhbC5oLTIyNy1pbnQgcnNpX3NlbmRfcGt0X3RvX2J1cyhzdHJ1Y3QgcnNpX2NvbW1vbiAqY29tbW9uLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDk6MTA6MzcuMzUwNDE5ODIzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2ODI0MDgwMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gUlNJIEJlYWNvbiBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBsZXQncyB6ZXJvIGluIG9uIHNvbWUga2V5IGFyZWFzIHdpdGhpbiB0aGlzIFJTSSBjb2RlLiBJJ20gdGhpbmtpbmcgYHJzaV9wcmVwYXJlX2JlYWNvbmAgYW5kIGByc2lfc2VuZF9iZWFjb25gIGFyZSBleGNlbGxlbnQgc3RhcnRpbmcgcG9pbnRzIGZvciBhIGRlZXAgZGl2ZS4gVGhleSBzZWVtIGxpa2UgbG9naWNhbCBwbGFjZXMgdG8gdW5kZXJzdGFuZCBiZWFjb24gZ2VuZXJhdGlvbiBhbmQgdHJhbnNtaXNzaW9uLCB3aGljaCBhcmUgY3JpdGljYWwgZm9yIHRoZSBvdmVyYWxsIHdpcmVsZXNzIG9wZXJhdGlvbi4gSSBoYWQgYWxzbyBjb25zaWRlcmVkIGByc2lfbWdtdF9wa3RfcmVjdmAsIGFzIGl0J3Mgc3BlY2lmaWMgdG8gUlNJLCBidXQgSSdtIHNsaWdodGx5IGhlc2l0YW50LiBJdCBjb3VsZCBiZSBhIGJpdCBvZiBhIGZpcmVob3NlLCBoYW5kbGluZyAqYWxsKiBtYW5hZ2VtZW50IHBhY2tldHMsIHdoaWNoIG1pZ2h0IG1ha2UgaXQgYSBsZXNzIHByZWNpc2UgZm9jdXMgc3ltYm9sIGZvciBub3cuXG5cbkxldCdzIGRvIHNvbWUgcXVpY2sgaW52ZXN0aWdhdGlvbnMsIG5vdy4gSXMgYHJzaV9wcmVwYXJlX2JlYWNvbmAgYSBzdGF0aWMgZnVuY3Rpb24/IE5vcGUsIGl0J3MgYWN0dWFsbHkgZXhwb3J0ZWQgaW4gYHJzaV9oYWwuaGAsIHdoaWNoIGlzIGludGVyZXN0aW5nLi4uIGl0J3MgY2xlYXJseSBpbnRlbmRlZCB0byBiZSBjYWxsZWQgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBJJ2xsIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQuIE5vdywgd2hhdCBhYm91dCBgcnNpX3NlbmRfYmVhY29uYD8gQWgsIHRoYXQgb25lICppcyogc3RhdGljLCBhbmQgaXQncyBkZWZpbmVkIHdpdGhpbiBgcnNpXzkxeF9tZ210LmNgLiBPa2F5LCB0aGF0IGdpdmVzIG1lIGEgY2xlYXIgaWRlYSBvZiB3aGVyZSB0aGlzIHBpZWNlIG9mIHRoZSBwdXp6bGUgZml0cy5cblxuSSB3YW50IHRvIG1ha2Ugc3VyZSBJJ20gZnVsbHkgYXdhcmUgb2YgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4gU28sIGxldCBtZSBxdWlja2x5IHJlLWV4YW1pbmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBXZSBoYXZlIGBXTEFOX1ZFTkRPUl9SU0lgLCBgUlNJXzkxWGAsIGFuZCBgUlNJX1VTQmAuIEFyZSB0aGVyZSBhbnkgb3RoZXJzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBvZiB0aGVzZSBmdW5jdGlvbnM/IEl0J3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2guIEknbGwgcXVpY2tseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZWAganVzdCB0byB2ZXJpZnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NjgsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDk6MTA6NDMuMDMyODM4MzIxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTY1MzA3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJSU0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZT03PXJzaV85MXgteVxcdFxcdFxcdCs9IHJzaV85MXhfcHMub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZTo4OnJzaV85MXgtJChDT05GSUdfUlNJX0NPRVgpXFx0Kz0gcnNpXzkxeF9jb2V4Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvTWFrZWZpbGU6OTpyc2lfOTF4LSQoQ09ORklHX1JTSV9ERUJVR0ZTKVxcdCs9IHJzaV85MXhfZGVidWdmcy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL01ha2VmaWxlLTEwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL01ha2VmaWxlPTEyPXJzaV9zZGlvLXlcXHRcXHRcXHQrPSByc2lfOTF4X3NkaW8ubyByc2lfOTF4X3NkaW9fb3BzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX1JTSV85MVgpIFxcdFxcdCs9IHJzaV85MXgub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfUlNJX1NESU8pXFx0XFx0Kz0gcnNpX3NkaW8ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9NYWtlZmlsZToxNTpvYmotJChDT05GSUdfUlNJX1VTQilcXHRcXHQrPSByc2lfdXNiLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMDk6MTA6NDMuMDkyNDk3OTc5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MzI2MTI5NzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiB0aGUgUlNJIG1vZHVsZXMgaGVyZSwgc3BlY2lmaWNhbGx5IGBSU0lfOTFYYCBhbmQgYFJTSV9VU0JgIC0gdGhvc2UgYXJlIHRoZSBjb3JlIG9uZXMuIFRoZSBgV0xBTl9WRU5ET1JfUlNJYCBzZWVtcyB0byBiZSBhbiBlbmFibGluZyBmbGFnLCBsaWtlbHkgZm9yIGEgbWVudSBvcHRpb24uIE1ha2VzIHNlbnNlIHRvIGluY2x1ZGUgdGhhdCBhbG9uZyB3aXRoIHRoZSBjb3JlIGRyaXZlcnMsIHNvIGxldCdzIGFkZCBgV0xBTl9WRU5ET1JfUlNJYCwgYFJTSV85MVhgLCBhbmQgYFJTSV9VU0JgIHRvIHRoZSBjb25maWd1cmF0aW9uLlxuXG5BaCwgcmlnaHQuIFNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCB3aXJlbGVzcywgYE1BQzgwMjExYCBpcyBhbG1vc3QgY2VydGFpbmx5IGEgZGVwZW5kZW5jeSwgYmVpbmcgYSBwcmV0dHkgZnVuZGFtZW50YWwgd2lyZWxlc3MgZHJpdmVyIGNvbXBvbmVudC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIGZvciBhbnkgZXhwbGljaXQgZGVwZW5kZW5jaWVzIGRlZmluZWQgaW4gdGhlIFJTSSBkcml2ZXIncyBLY29uZmlnIGZpbGUsIHNvIGxldCdzIHF1aWNrbHkgY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzYyNCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwOToxMTo0Ny40MTg2MzAwMDlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzOTMyODEwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnPTE1PWNvbmZpZyBSU0lfOTFYXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0xNy1cXHRzZWxlY3QgQlRfSENJUlNJIGlmIFJTSV9DT0VYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6MTg6XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTE5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnPTIzPWNvbmZpZyBSU0lfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTI0LVxcdGJvb2wgXFxcIlJlZHBpbmUgU2lnbmFscyBJbmMgZGVidWcgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZzoyNTpcXHRkZXBlbmRzIG9uIFJTSV85MVhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy0yNi1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnPTMxPWNvbmZpZyBSU0lfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTMyLVxcdHRyaXN0YXRlIFxcXCJSZWRwaW5lIFNpZ25hbHMgU0RJTyBidXMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZzozMzpcXHRkZXBlbmRzIG9uIE1NQyBcXHUwMDI2XFx1MDAyNiBSU0lfOTFYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWctMzQtXFx0ZGVmYXVsdCBtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZz0zOT1jb25maWcgUlNJX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTQwLVxcdHRyaXN0YXRlIFxcXCJSZWRwaW5lIFNpZ25hbHMgVVNCIGJ1cyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnOjQxOlxcdGRlcGVuZHMgb24gVVNCIFxcdTAwMjZcXHUwMDI2IFJTSV85MVhcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvS2NvbmZpZy00Mi1cXHRkZWZhdWx0IG1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnPTQ3PWNvbmZpZyBSU0lfQ09FWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIlJlZHBpbmUgU2lnbmFscyBXTEFOIEJUIENvZXhpc3RlbmNlIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6NDk6XFx0ZGVwZW5kcyBvbiBCVCBcXHUwMDI2XFx1MDAyNiBSU0lfOTFYXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL0tjb25maWc6NTA6XFx0ZGVwZW5kcyBvbiAhKEJUPW0gXFx1MDAyNlxcdTAwMjYgUlNJXzkxWD15KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9LY29uZmlnLTUxLVxcdGRlZmF1bHQgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwOToxMTo0Ny42NTc5NjM4OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MzIzMjgxODIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUlNJIEJlYWNvbiBQcmVwYXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkZWFsaW5nIHdpdGggYW4gUlNJIGlzc3VlIGhlcmUsIGFuZCB0aGUga2VybmVsIG1vZHVsZSBgTUFDODAyMTFgIGlzIGFsbW9zdCBjZXJ0YWlubHkgaW52b2x2ZWQg4oCTIGl0J3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSB3aXJlbGVzcyBzdGFjaywgYW5kIGxpa2VseSBlbmFibGVkLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGNvbmZpcm0gdGhlIHNwZWNpZmljIFJTSS1yZWxhdGVkIG1vZHVsZXMgYW5kIHNldHRpbmdzLCBzbyBJIG5lZWQgdG8gbWFrZSBhIG5vdGUgdG8gY2hlY2sgZm9yIGBXTEFOX1ZFTkRPUl9SU0lgLCBgUlNJXzkxWGAsIGFuZCBgUlNJX1VTQmAgY29uZmlndXJhdGlvbnMuXG5cbk5vdywgbXkga2V5IHF1ZXN0aW9uIGlzIGFyb3VuZCBgcnNpX3ByZXBhcmVfYmVhY29uYC4gSXMgdGhpcyBzb21ldGhpbmcgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlciBzcGFjZSwgb3IgaXMgaXQgcHVyZWx5IGEgaGFyZHdhcmUtZHJpdmVuIGZ1bmN0aW9uPyBJIGtub3cgaXQncyBjYWxsZWQgZnJvbSBgcnNpX3NlbmRfYmVhY29uYCwgYW5kIHRoYXQgZnVuY3Rpb24gaXMsIGluIHR1cm4sIGNhbGxlZCBmcm9tIGByc2lfbWdtdF9wa3RfcmVjdmAuIFRoYXQgbWVhbnMgdGhlIHByZXBhcmF0aW9uIG9mIHRoZSBiZWFjb24gaXMgZGlyZWN0bHkgcmVsYXRlZCB0byBtYW5hZ2VtZW50IHBhY2tldHMuXG5cbk9rYXksIGByc2lfbWdtdF9wa3RfcmVjdmAgaXMgdHJpZ2dlcmVkIHVwb24gcmVjZWl2aW5nIGEgcGFja2V0IGZyb20gdGhlIGhhcmR3YXJlLiBTbywgZnJvbSB0aGF0IHBhdGgsIEkgY2FuIGRlZmluaXRlbHkgcmVhY2ggYHJzaV9wcmVwYXJlX2JlYWNvbmAgdGhyb3VnaCBoYXJkd2FyZSBwYWNrZXQgaW5qZWN0aW9uIChlLmcuIHVzaW5nIGEgVVNCIGdhZGdldCBzZXR1cCkuIEJ1dCB0aGF0IGRvZXNuJ3QgdGVsbCBtZSBpZiBpdCdzIHVzZXIgc3BhY2UgYWNjZXNzaWJsZS4gSSBuZWVkIHRvIGJlIGNlcnRhaW4gdGhhdCBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgYXR0YWNrIHN1cmZhY2UuIFNvLCBJIHdpbGwgY2hlY2sgaWYgYHJzaV9zZW5kX2JlYWNvbmAgaXMgY2FsbGVkIGZyb20gYW55d2hlcmUgZWxzZSBpbiB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ0NSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQwOToxMTo1NS45ODEyNDgwMjFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDM1OTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJzaV9zZW5kX2JlYWNvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYz0xNzM4PWludCByc2lfc2V0X2FudGVubmEoc3RydWN0IHJzaV9jb21tb24gKmNvbW1vbiwgdTggYW50ZW5uYSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYy0xNzYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21nbXQuYzoxNzYzOnN0YXRpYyBpbnQgcnNpX3NlbmRfYmVhY29uKHN0cnVjdCByc2lfY29tbW9uICpjb21tb24pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTE3NjQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jPTIxODU9aW50IHJzaV9tZ210X3BrdF9yZWN2KHN0cnVjdCByc2lfY29tbW9uICpjb21tb24sIHU4ICptc2cpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tZ210LmMtMjIyNC1cXHRcXHRcXHRyZXR1cm4gLTE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jOjIyMjU6XFx0XFx0cnNpX3NlbmRfYmVhY29uKGNvbW1vbik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWdtdC5jLTIyMjYtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDA5OjExOjU2LjAzODY4OTM4OVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTg0NjQzNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uOiBIYXJkd2FyZS1UcmlnZ2VyZWQgQmVhY29uIFByb2Nlc3NpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgcGF0aCwgYW5kIGl0J3MgYWxsIG9yaWdpbmF0aW5nIGZyb20gYHJzaV9tZ210X3BrdF9yZWN2YC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCdzIGhhcmR3YXJlLXRyaWdnZXJlZCwgd2hpY2ggaXMga2V5LiBUaGlzIGlzIHBlcmZlY3QhIFRoZSB3aG9sZSBiZWF1dHkgb2YgaXQgaXMgdGhhdCB3ZSBjYW4gZnV6eiBVU0IgZGV2aWNlcyB1c2luZyBgdmhjaWAsIHRoZSB2aXJ0dWFsIFVTQiBob3N0IGNvbnRyb2xsZXIuIFRoYXQgbWVhbnMgd2UgaGF2ZSBhIGNsZWFuIGF0dGFjayBzdXJmYWNlIGhlcmUuXG5cbkkgbmVlZCB0byBmb2N1cyBvbiBhIGZldyBrZXkgc3ltYm9sczogYHJzaV9wcmVwYXJlX2JlYWNvbmAgYW5kIGByc2lfc2VuZF9iZWFjb25gLiBUaG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyB0aGF0IHNlZW0gbW9zdCByZWxldmFudCB0byB0aGUgZXhwbG9pdC5cblxuTm93IGZvciBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGVudmlyb25tZW50LiBXZSdyZSBkZWFsaW5nIHdpdGggYFdMQU5fVkVORE9SX1JTSWAsIGBSU0lfOTFYYCwgYW5kIGBSU0lfVVNCYCBjb25maWd1cmF0aW9ucy5cblxuRXNzZW50aWFsbHksIHRoaXMgcGF0Y2ggaXMgZml4aW5nIGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IHdpdGhpbiB0aGUgYHJzaV9wcmVwYXJlX2JlYWNvbmAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgdGhlIHBhdGNoIGFkZHMgYSBjaGVjayBmb3IgYHNrYl90YWlscm9vbWAgYmVmb3JlIGNvcHlpbmcgZGF0YSwgd2hpY2ggaXMgZ29vZC4gVGhpcyB2dWxuZXJhYmlsaXR5IGlzIHJlYWNoYWJsZSB3aGVuIHRoZSBkcml2ZXIgaGFuZGxlcyBhIGJlYWNvbiByZXF1ZXN0IGNvbWluZyBkaXJlY3RseSBmcm9tIHRoZSBoYXJkd2FyZS4gVGhlIGZhY3QgdGhhdCB0aGUgZHJpdmVyIHN1cHBvcnRzIFVTQiAoYFJTSV9VU0JgKSBpcyBjcnVjaWFsIGhlcmUuIFRoYXQncyBvdXIgZnV6emluZyBlbnRyeSBwb2ludC4gV2UgY2FuIGV4cGxvaXQgdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGJ5IGVzc2VudGlhbGx5IGltcGVyc29uYXRpbmcgYSBtYWxpY2lvdXMgVVNCIGRldmljZSB1c2luZyB0aGUgVVNCIGdhZGdldCBzdWJzeXN0ZW0gKGB2aGNpYCkuIFdlIGNhbiBjcmFmdCBzcGVjaWZpYyBVU0IgcGFja2V0cyB0aGF0IHRyaWdnZXIgdGhpcyBiZWFjb24gaGFuZGxpbmcsIGFuZCBob3BlZnVsbHksIHRyaWdnZXIgdGhlIHZ1bG5lcmFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyMzAsIk91dHB1dFRva2VucyI6MTU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDA5OjEyOjAyLjIyMzMzNTYyOVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjU2MjA3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTl9WRU5ET1JfUlNJXCIsXG4gICAgXCJSU0lfOTFYXCIsXG4gICAgXCJSU0lfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnNpX3ByZXBhcmVfYmVhY29uXCIsXG4gICAgXCJyc2lfc2VuZF9iZWFjb25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3cgaW4gYHJzaV9wcmVwYXJlX2JlYWNvbmAgYnkgY2hlY2tpbmcgYHNrYl90YWlscm9vbWAgYmVmb3JlIGNvcHlpbmcgZGF0YS4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgd2hlbiB0aGUgZHJpdmVyIHByb2Nlc3NlcyBhIGJlYWNvbiByZXF1ZXN0IGZyb20gdGhlIGhhcmR3YXJlLiBTaW5jZSB0aGUgZHJpdmVyIHN1cHBvcnRzIFVTQiAoYFJTSV9VU0JgKSwgdGhpcyBjb2RlIHBhdGggY2FuIGJlIHRyaWdnZXJlZCBhbmQgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgZW11bGF0aW5nIGEgbWFsaWNpb3VzIFVTQiBkZXZpY2UgdmlhIHRoZSBVU0IgZ2FkZ2V0IHN1YnN5c3RlbSAodmhjaSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiV0xBTl9WRU5ET1JfUlNJXCIsXG4gICAgXCJSU0lfOTFYXCIsXG4gICAgXCJSU0lfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnNpX3ByZXBhcmVfYmVhY29uXCIsXG4gICAgXCJyc2lfc2VuZF9iZWFjb25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3cgaW4gYHJzaV9wcmVwYXJlX2JlYWNvbmAgYnkgY2hlY2tpbmcgYHNrYl90YWlscm9vbWAgYmVmb3JlIGNvcHlpbmcgZGF0YS4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgd2hlbiB0aGUgZHJpdmVyIHByb2Nlc3NlcyBhIGJlYWNvbiByZXF1ZXN0IGZyb20gdGhlIGhhcmR3YXJlLiBTaW5jZSB0aGUgZHJpdmVyIHN1cHBvcnRzIFVTQiAoYFJTSV9VU0JgKSwgdGhpcyBjb2RlIHBhdGggY2FuIGJlIHRyaWdnZXJlZCBhbmQgZnV6emVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgYnkgZW11bGF0aW5nIGEgbWFsaWNpb3VzIFVTQiBkZXZpY2UgdmlhIHRoZSBVU0IgZ2FkZ2V0IHN1YnN5c3RlbSAodmhjaSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt49f2[1] Phase: Succeeded StartedAt: 2026-07-05 09:12:28 +0000 UTC FinishedAt: 2026-07-05 09:12:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-05 09:12:28 +0000 UTC FinishedAt: 2026-07-05 09:12:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[2] Phase: Succeeded StartedAt: 2026-07-05 09:12:28 +0000 UTC FinishedAt: 2026-07-05 11:20:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-05 09:12:28 +0000 UTC FinishedAt: 2026-07-05 11:20:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-05 09:12:28 +0000 UTC FinishedAt: 2026-07-05 09:12:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-05 09:12:28 +0000 UTC FinishedAt: 2026-07-05 09:12:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt49f2/series-workflowt49f2-convert-artifact-502642411/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-05 09:12:48 +0000 UTC FinishedAt: 2026-07-05 09:47:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-05 09:12:48 +0000 UTC FinishedAt: 2026-07-05 09:47:45 +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:*6f1152d5-c577-40f4-ad2f-354e02eb3cfc,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-workflowt49f2/series-workflowt49f2-convert-artifact-502642411/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": "3e79338c-b4f9-4fa5-bcd1-1e62e86bb773", "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-workflowt49f2/series-workflowt49f2-build-action-3843566313/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-05 09:12:48 +0000 UTC FinishedAt: 2026-07-05 09:47:21 +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:*6f1152d5-c577-40f4-ad2f-354e02eb3cfc,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-workflowt49f2/series-workflowt49f2-convert-artifact-502642411/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": "3e79338c-b4f9-4fa5-bcd1-1e62e86bb773", "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-workflowt49f2/series-workflowt49f2-build-action-3843566313/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-05 09:47:45 +0000 UTC FinishedAt: 2026-07-05 09:47:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-05 09:47:45 +0000 UTC FinishedAt: 2026-07-05 09:47:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-05 09:47:45 +0000 UTC FinishedAt: 2026-07-05 09:48:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-05 09:47:45 +0000 UTC FinishedAt: 2026-07-05 09:48:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt49f2/series-workflowt49f2-convert-artifact-984938434/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-05 09:48:18 +0000 UTC FinishedAt: 2026-07-05 09:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-05 09:48:18 +0000 UTC FinishedAt: 2026-07-05 09:50:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3e79338c-b4f9-4fa5-bcd1-1e62e86bb773,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-workflowt49f2/series-workflowt49f2-build-action-3843566313/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-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-05 09:50:21 +0000 UTC FinishedAt: 2026-07-05 09:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-05 09:50:21 +0000 UTC FinishedAt: 2026-07-05 09:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-05 09:50:21 +0000 UTC FinishedAt: 2026-07-05 10:23:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-05 09:50:21 +0000 UTC FinishedAt: 2026-07-05 10:23:54 +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:*6f1152d5-c577-40f4-ad2f-354e02eb3cfc,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-workflowt49f2/series-workflowt49f2-convert-artifact-984938434/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": "54571634-8b44-4089-a087-7f764bad18cb", "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-workflowt49f2/series-workflowt49f2-build-action-1840491030/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-05 09:50:21 +0000 UTC FinishedAt: 2026-07-05 10:23:28 +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:*6f1152d5-c577-40f4-ad2f-354e02eb3cfc,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-workflowt49f2/series-workflowt49f2-convert-artifact-984938434/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": "54571634-8b44-4089-a087-7f764bad18cb", "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-workflowt49f2/series-workflowt49f2-build-action-1840491030/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-05 10:23:54 +0000 UTC FinishedAt: 2026-07-05 10:23:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-05 10:23:54 +0000 UTC FinishedAt: 2026-07-05 10:23:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-05 10:23:54 +0000 UTC FinishedAt: 2026-07-05 10:25:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-05 10:23:54 +0000 UTC FinishedAt: 2026-07-05 10:25:44 +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:*54571634-8b44-4089-a087-7f764bad18cb,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-workflowt49f2/series-workflowt49f2-build-action-1840491030/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-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-05 10:25:54 +0000 UTC FinishedAt: 2026-07-05 11:20:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-05 10:25:54 +0000 UTC FinishedAt: 2026-07-05 11:20:02 +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":["rsi_prepare_beacon","rsi_send_beacon"],"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:*3e79338c-b4f9-4fa5-bcd1-1e62e86bb773,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*54571634-8b44-4089-a087-7f764bad18cb,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-workflowt49f2/series-workflowt49f2-build-action-3843566313/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-workflowt49f2/series-workflowt49f2-build-action-1840491030/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-05 10:25:54 +0000 UTC FinishedAt: 2026-07-05 10:26:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-05 10:25:54 +0000 UTC FinishedAt: 2026-07-05 10:26:38 +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":["rsi_prepare_beacon","rsi_send_beacon"],"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-workflowt49f2/series-workflowt49f2-convert-artifact-2022587639/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-05 10:25:54 +0000 UTC FinishedAt: 2026-07-05 10:25:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-05 10:25:54 +0000 UTC FinishedAt: 2026-07-05 10:25:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-05 10:25:54 +0000 UTC FinishedAt: 2026-07-05 10:25:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-05 10:26:46 +0000 UTC FinishedAt: 2026-07-05 11:20:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt49f2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rsi_prepare_beacon","rsi_send_beacon"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55","config_name":"upstream-apparmor-kasan.config","enable_configs":["WLAN_VENDOR_RSI","RSI_91X","RSI_USB"],"series_id":"0c5128fb-7043-4739-87bf-9d1a152f8a56","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-05 10:26:46 +0000 UTC FinishedAt: 2026-07-05 11:19:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3e79338c-b4f9-4fa5-bcd1-1e62e86bb773,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*54571634-8b44-4089-a087-7f764bad18cb,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-workflowt49f2/series-workflowt49f2-build-action-3843566313/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-workflowt49f2/series-workflowt49f2-build-action-1840491030/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-workflowt49f2/series-workflowt49f2-convert-artifact-2022587639/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,}