Name: series-workflowzc9gf Phase: Succeeded StartedAt: 2026-08-17 01:49:13 +0000 UTC FinishedAt: 2026-08-17 05:45:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[0] Phase: Succeeded StartedAt: 2026-08-17 01:49:13 +0000 UTC FinishedAt: 2026-08-17 02:04:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[0].run-triage Phase: Succeeded StartedAt: 2026-08-17 01:49:13 +0000 UTC FinishedAt: 2026-08-17 02:04:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6" ], "series_id": "8f3c8bda-bb71-49b5-bc20-a24f59d39f8f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rt6_multipath_rebalance", "fib6_ifup", "fib6_ifdown", "fib6_add_rt2node", "fib6_del_route" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE3IDAyOjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydDZfbXVsdGlwYXRoX3JlYmFsYW5jZSYjMzQ7LAogICAgJiMzNDtmaWI2X2lmdXAmIzM0OywKICAgICYjMzQ7ZmliNl9pZmRvd24mIzM0OywKICAgICYjMzQ7ZmliNl9hZGRfcnQybm9kZSYjMzQ7LAogICAgJiMzNDtmaWI2X2RlbF9yb3V0ZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRpdmlkZS1ieS16ZXJvIGJ1ZyBpbiBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgYnkgY2hlY2tpbmcgaWYgYHRvdGFsYCBpcyBub24temVybyBiZWZvcmUgcGVyZm9ybWluZyB0aGUgZGl2aXNpb24uIFRoaXMgZG9lcyBub3QgaW52b2x2ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHN0cnVjdHVyZSBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlIGJ1ZyBpdCBmaXhlcyAoZGl2aWRlLWJ5LXplcm8pIHdvdWxkIGNhdXNlIGEga2VybmVsIHBhbmljIG9yIGJlIGNhdWdodCBieSBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZGl2aXNpb24gYnkgemVybyBpbiBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgd2hlbiBgdG90YWxgIGlzIDAuIFRoaXMgaGFwcGVucyBkdXJpbmcgSVB2NiBtdWx0aXBhdGggcm91dGUgcmViYWxhbmNpbmcsIHdoaWNoIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJjNGYzM2M5ZTU3OWE3ODVkMjgwMTJmNTExYzQ2ODQ1OTg5YzE5OWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxNyAwMjowMzoxOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yb3V0ZS5jIGIvbmV0L2lwdjYvcm91dGUuY1xuaW5kZXggNTk2OGNlNWFkMTUwOC4uNjg5MjRjZmY5MjA1NSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3JvdXRlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L3JvdXRlLmNcbkBAIC00ODQwLDcgJiM0Mzs0ODQwLDcgQEAgc3RhdGljIHZvaWQgcnQ2X3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50ICp3ZWlnaHQsIGludCB0b3RhbClcbiB7XG4gXHRpbnQgdXBwZXJfYm91bmQgPSAtMTtcbiBcbi1cdGlmICghcnQ2X2lzX2RlYWQocnQpKSB7XG4mIzQzO1x0aWYgKHRvdGFsIFx1MDAyNlx1MDAyNiAhcnQ2X2lzX2RlYWQocnQpKSB7XG4gXHRcdCp3ZWlnaHQgJiM0Mzs9IHJ0LVx1MDAzZWZpYjZfbmgtXHUwMDNlZmliX25oX3dlaWdodDtcbiBcdFx0dXBwZXJfYm91bmQgPSBESVZfUk9VTkRfQ0xPU0VTVF9VTEwoKHU2NCkgKCp3ZWlnaHQpIFx1MDAzY1x1MDAzYyAzMSxcbiBcdFx0XHRcdFx0XHQgICAgdG90YWwpIC0gMTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0Nl9tdWx0aXBhdGhfcmViYWxhbmNlJiMzNDssCiAgICAmIzM0O2ZpYjZfaWZ1cCYjMzQ7LAogICAgJiMzNDtmaWI2X2lmZG93biYjMzQ7LAogICAgJiMzNDtmaWI2X2FkZF9ydDJub2RlJiMzNDssCiAgICAmIzM0O2ZpYjZfZGVsX3JvdXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZGl2aXNpb24gYnkgemVybyBpbiBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgd2hlbiBgdG90YWxgIGlzIDAuIFRoaXMgaGFwcGVucyBkdXJpbmcgSVB2NiBtdWx0aXBhdGggcm91dGUgcmViYWxhbmNpbmcsIHdoaWNoIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJjNGYzM2M5ZTU3OWE3ODVkMjgwMTJmNTExYzQ2ODQ1OTg5YzE5OWMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxNyAwMjowMzoxOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3JvdXRlLmMgYi9uZXQvaXB2Ni9yb3V0ZS5jCmluZGV4IDU5NjhjZTVhZDE1MDguLjY4OTI0Y2ZmOTIwNTUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3JvdXRlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvcm91dGUuYwpAQCAtNDg0MCw3ICYjNDM7NDg0MCw3IEBAIHN0YXRpYyB2b2lkIHJ0Nl91cHBlcl9ib3VuZF9zZXQoc3RydWN0IGZpYjZfaW5mbyAqcnQsIGludCAqd2VpZ2h0LCBpbnQgdG90YWwpCiB7CiAJaW50IHVwcGVyX2JvdW5kID0gLTE7CiAKLQlpZiAoIXJ0Nl9pc19kZWFkKHJ0KSkgewomIzQzOwlpZiAodG90YWwgJmFtcDsmYW1wOyAhcnQ2X2lzX2RlYWQocnQpKSB7CiAJCSp3ZWlnaHQgJiM0Mzs9IHJ0LSZndDtmaWI2X25oLSZndDtmaWJfbmhfd2VpZ2h0OwogCQl1cHBlcl9ib3VuZCA9IERJVl9ST1VORF9DTE9TRVNUX1VMTCgodTY0KSAoKndlaWdodCkgJmx0OyZsdDsgMzEsCiAJCQkJCQkgICAgdG90YWwpIC0gMTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDI6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxNAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElQdjYgUm91dGluZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9pcHY2L3JvdXRlLmNgLiBJdCYjMzk7cyBhIGZhaXJseSBzdHJhaWdodGZvcndhcmQgbW9kaWZpY2F0aW9uIHRvIHRoZSBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgZnVuY3Rpb24uIFRoZSBjaGFuZ2UgaXMgc2ltcGxlLCByZWFsbHk6IHRoZXkmIzM5O3ZlIGFkZGVkIGEgY2hlY2sgZm9yIGB0b3RhbGAgYmVmb3JlIHRoZSBjYWxsIHRvIGBydDZfaXNfZGVhZChydClgLiBUaGUgb3JpZ2luYWwgY29kZSwgYXBwYXJlbnRseSwgZGlkbiYjMzk7dCBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYHRvdGFsYCBjb3VsZCBiZSB6ZXJvLgoKTGV0IG1lIHNlZeKApiByaWdodCwgSSBzZWUgaXQgbm93LiBUaGUgcHJvYmxlbSBpcyBpbiB0aGUgbGluZSBpbnZvbHZpbmcgdGhlIGRpdmlzaW9uIGBESVZfUk9VTkRfQ0xPU0VTVF9VTEwoKHU2NCkgKCp3ZWlnaHQpICZsdDsmbHQ7IDMxLCB0b3RhbCkgLSAxO2AuIEEgZGl2aXNpb24gYnkgemVybyB0aGVyZSB3b3VsZCBjbGVhcmx5IGJlIGEgbWFqb3IgaXNzdWUsIHNvIHRoZSBwYXRjaCBpcyBjb3JyZWN0bHkgYWRkcmVzc2luZyB0aGlzIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LiBBZGRpbmcgYHRvdGFsICZhbXA7JmFtcDtgIHNlZW1zIGxpa2UgYSBjbGVhbiBhbmQgZWZmaWNpZW50IGZpeCB0byBwcmV2ZW50IHRoYXQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LCBzbyBsZXQgbWUgcHVsbCB1cCB0aGUgc291cmNlIGZvciBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgaW4gYG5ldC9pcHY2L3JvdXRlLmNgIHRvIHNlZSBob3cgYHRvdGFsYCBpcyB1c2VkIGFuZCB3aHkgaXQgbWlnaHQgYmUgemVybyBpbiB0aGUgZmlyc3QgcGxhY2UuIFRoaXMgcGF0Y2ggbG9va3MgZ29vZCwgYnV0IEkgYWx3YXlzIHdhbnQgdG8gZnVsbHkgY29tcHJlaGVuZCB0aGUgaW1wbGljYXRpb25zIG9mIGV2ZXJ5IGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydDZfdXBwZXJfYm91bmRfc2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvcm91dGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jPTQ4MjM9c3RhdGljIGludCBydDZfbXVsdGlwYXRoX3RvdGFsX3dlaWdodChjb25zdCBzdHJ1Y3QgZmliNl9pbmZvICpydClcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4MzgtXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ4Mzk6c3RhdGljIHZvaWQgcnQ2X3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50ICp3ZWlnaHQsIGludCB0b3RhbClcbm5ldC9pcHY2L3JvdXRlLmMtNDg0MC17XG4tLVxubmV0L2lwdjYvcm91dGUuYz00ODUxPXN0YXRpYyB2b2lkIHJ0Nl9tdWx0aXBhdGhfdXBwZXJfYm91bmRfc2V0KHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBpbnQgdG90YWwpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00ODU1LVxubmV0L2lwdjYvcm91dGUuYzo0ODU2Olx0cnQ2X3VwcGVyX2JvdW5kX3NldChydCwgXHUwMDI2d2VpZ2h0LCB0b3RhbCk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4NTctXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4NTgtXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0ZXIsIFx1MDAyNnJ0LVx1MDAzZWZpYjZfc2libGluZ3MsIGZpYjZfc2libGluZ3MpXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ4NTk6XHRcdHJ0Nl91cHBlcl9ib3VuZF9zZXQoaXRlciwgXHUwMDI2d2VpZ2h0LCB0b3RhbCk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4NjAtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDAyOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NzUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgY29kZSwgcHJlc2VudGVkIGFzIG15IGludGVybmFsIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE11bHRpcGF0aCBSb3V0aW5nIExvZ2ljKioKCk9rYXksIHNvIGBydDZfdXBwZXJfYm91bmRfc2V0YCBpcyBjbGVhcmx5IGEga2V5IGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgYmVpbmcgY2FsbGVkIGJ5IGBydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldGAuIFRoaXMgc3VnZ2VzdHMgYSByZWxhdGlvbnNoaXA7IGxpa2VseSB0aGUgbGF0dGVyIGZ1bmN0aW9uIG1hbmFnZXMgc29tZSBraW5kIG9mIG11bHRpcGF0aCBjb25maWd1cmF0aW9uLCBhbmQgdXRpbGl6ZXMgdGhlIHVwcGVyIGJvdW5kIHNldHRpbmcgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSB0cmFjZSB3aGVyZSBgcnQ2X211bHRpcGF0aF91cHBlcl9ib3VuZF9zZXRgIGl0c2VsZiBpcyBpbnZva2VkLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgYnJvYWRlciBjb250ZXh0IGFuZCBoZWxwIGNsYXJpZnkgd2h5IHRoaXMgdXBwZXIgYm91bmQgc2V0dGluZyBpcyBuZWNlc3Nhcnkgd2l0aGluIHRoZSBtdWx0aXBhdGggcm91dGluZyBmcmFtZXdvcmsuIEtub3dpbmcgdGhlIGNhbGwgY2hhaW4gZnJvbSB0aGVyZSBzaG91bGQgcHJvdmlkZSBjbGFyaXR5IG9uIHRoZSBwdXJwb3NlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGFuZCBob3cgdGhlIGJvdW5kIGlzIHV0aWxpemVkIGluIHByYWN0aWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDAyOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0Nl9tdWx0aXBhdGhfdXBwZXJfYm91bmRfc2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvcm91dGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jPTQ4Mzk9c3RhdGljIHZvaWQgcnQ2X3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50ICp3ZWlnaHQsIGludCB0b3RhbClcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4NTAtXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ4NTE6c3RhdGljIHZvaWQgcnQ2X211bHRpcGF0aF91cHBlcl9ib3VuZF9zZXQoc3RydWN0IGZpYjZfaW5mbyAqcnQsIGludCB0b3RhbClcbm5ldC9pcHY2L3JvdXRlLmMtNDg1Mi17XG4tLVxubmV0L2lwdjYvcm91dGUuYz00ODYyPXZvaWQgcnQ2X211bHRpcGF0aF9yZWJhbGFuY2Uoc3RydWN0IGZpYjZfaW5mbyAqcnQpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00ODgyLVx0dG90YWwgPSBydDZfbXVsdGlwYXRoX3RvdGFsX3dlaWdodChmaXJzdCk7XG5uZXQvaXB2Ni9yb3V0ZS5jOjQ4ODM6XHRydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldChmaXJzdCwgdG90YWwpO1xubmV0L2lwdjYvcm91dGUuYy00ODg0LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjc2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgcnQ2X211bHRpcGF0aF9yZWJhbGFuY2VgIEZ1bmN0aW9uIENhbGwgUGF0aCoqCgpBbHJpZ2h0LCBzbyBgcnQ2X211bHRpcGF0aF9yZWJhbGFuY2VgIGlzIHRoZSBmdW5jdGlvbiBpbml0aWF0aW5nIHRoaXMgcHJvY2Vzcy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCBpdHMgcGxhY2Ugd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbS4gSSBuZWVkIHRvIHRyYWNlIGl0cyBjYWxsIGhpZXJhcmNoeS4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG90aGVyIGZ1bmN0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgYHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlYC4gSWRlbnRpZnlpbmcgdGhlIGNhbGxlcnMgd2lsbCBwcm92aWRlIGNydWNpYWwgY29udGV4dCDigJMgaXQmIzM5O2xsIHRlbGwgbWUgd2hhdCB0cmlnZ2VycyB0aGUgcmViYWxhbmNpbmcgYW5kIGluIHdoYXQgc2l0dWF0aW9ucyB0aGlzIGJlaGF2aW9yIGlzIHJlbGV2YW50LiBVbmRlcnN0YW5kaW5nIHRoZSB0cmlnZ2VyIG1lY2hhbmlzbSBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBwaWN0dXJlIG9mIHRoaXMgc3Vic3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDAyOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0Nl9tdWx0aXBhdGhfcmViYWxhbmNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvcm91dGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jPTQ4NTE9c3RhdGljIHZvaWQgcnQ2X211bHRpcGF0aF91cHBlcl9ib3VuZF9zZXQoc3RydWN0IGZpYjZfaW5mbyAqcnQsIGludCB0b3RhbClcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4NjEtXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ4NjI6dm9pZCBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShzdHJ1Y3QgZmliNl9pbmZvICpydClcbm5ldC9pcHY2L3JvdXRlLmMtNDg2My17XG4tLVxubmV0L2lwdjYvcm91dGUuYz00ODg2PXN0YXRpYyBpbnQgZmliNl9pZnVwKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCB2b2lkICpwX2FyZylcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4OTQtXHRcdGZpYjZfdXBkYXRlX3Nlcm51bV91cHRvX3Jvb3QobmV0LCBydCk7XG5uZXQvaXB2Ni9yb3V0ZS5jOjQ4OTU6XHRcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHJ0KTtcbm5ldC9pcHY2L3JvdXRlLmMtNDg5Ni1cdH1cbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ5NzE9c3RhdGljIGludCBmaWI2X2lmZG93bihzdHJ1Y3QgZmliNl9pbmZvICpydCwgdm9pZCAqcF9hcmcpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00OTk4LVx0XHRcdGZpYjZfdXBkYXRlX3Nlcm51bShuZXQsIHJ0KTtcbm5ldC9pcHY2L3JvdXRlLmM6NDk5OTpcdFx0XHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShydCk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTUwMDAtXHRcdH1cbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTUwMDctXHRcdGZpYjZfdXBkYXRlX3Nlcm51bShuZXQsIHJ0KTtcbm5ldC9pcHY2L3JvdXRlLmM6NTAwODpcdFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UocnQpO1xubmV0L2lwdjYvcm91dGUuYy01MDA5LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTE2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZWAgRXhwb3J0IFN0YXR1cyoqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyB0aGlzIGBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZWAgZnVuY3Rpb24gbWVudGlvbmVk4oCmIGhhbmcgb24gYSBzZWMsIGlzIHRoYXQgYWxzbyBleHBvcnRlZD8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGl0cyB2aXNpYmlsaXR5LCB0byBzZWUgaWYgaXQmIzM5O3MgYXZhaWxhYmxlIGZvciBtZSB0byB1c2Ugd2hlcmUgSSYjMzk7bSBleHBlY3RpbmcgaXQgdG8gYmUuIE15IGZpcnN0IHBvcnQgb2YgY2FsbCwgYXMgYWx3YXlzLCBpcyB0aGUgb2J2aW91cyBwbGFjZSBmb3IgSVB2NiByb3V0aW5nLXJlbGF0ZWQgZnVuY3Rpb24gcHJvdG90eXBlczogSSYjMzk7bSBwcmV0dHkgc3VyZSBpdCB3b3VsZCBiZSBkZWNsYXJlZCBpbiBgaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmhgLiBMZXQgbWUgY2hlY2sgdGhhdCBoZWFkZXIgZmlsZSBhbmQgY29uZmlybS4gSXQmIzM5O3MgdGhlIG1vc3QgbGlrZWx5IHNwb3QsIGdpdmVuIHRoZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydDZfbXVsdGlwYXRoX3JlYmFsYW5jZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9pcDZfcm91dGUuaD0yMjc9dm9pZCBydDZfc3luY19kb3duX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50KTtcbmluY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oOjIyODp2b2lkIHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHN0cnVjdCBmaWI2X2luZm8gKmY2aSk7XG5pbmNsdWRlL25ldC9pcDZfcm91dGUuaC0yMjktXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jPTEwODk9c3RhdGljIGludCBmaWI2X2FkZF9ydDJub2RlKHN0cnVjdCBmaWI2X25vZGUgKmZuLCBzdHJ1Y3QgZmliNl9pbmZvICpydCxcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtMTIzMS1cdFx0cmN1X3JlYWRfbG9jaygpO1xubmV0L2lwdjYvaXA2X2ZpYi5jOjEyMzI6XHRcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHRlbXBfc2libGluZyk7XG5uZXQvaXB2Ni9pcDZfZmliLmMtMTIzMy1cdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTEyNzctXHRcdFx0XHRyY3VfcmVhZF9sb2NrKCk7XG5uZXQvaXB2Ni9pcDZfZmliLmM6MTI3ODpcdFx0XHRcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKG5leHRfc2libGluZyk7XG5uZXQvaXB2Ni9pcDZfZmliLmMtMTI3OS1cdFx0XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuLS1cbm5ldC9pcHY2L2lwNl9maWIuYz0xOTY5PXN0YXRpYyB2b2lkIGZpYjZfZGVsX3JvdXRlKHN0cnVjdCBmaWI2X3RhYmxlICp0YWJsZSwgc3RydWN0IGZpYjZfbm9kZSAqZm4sXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTIwMjAtXHRcdGxpc3RfZGVsX3JjdShcdTAwMjZydC1cdTAwM2VmaWI2X3NpYmxpbmdzKTtcbm5ldC9pcHY2L2lwNl9maWIuYzoyMDIxOlx0XHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShuZXh0X3NpYmxpbmcpO1xubmV0L2lwdjYvaXA2X2ZpYi5jLTIwMjItXHR9XG4tLVxubmV0L2lwdjYvcm91dGUuYz00ODUxPXN0YXRpYyB2b2lkIHJ0Nl9tdWx0aXBhdGhfdXBwZXJfYm91bmRfc2V0KHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBpbnQgdG90YWwpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00ODYxLVxubmV0L2lwdjYvcm91dGUuYzo0ODYyOnZvaWQgcnQ2X211bHRpcGF0aF9yZWJhbGFuY2Uoc3RydWN0IGZpYjZfaW5mbyAqcnQpXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4NjMte1xuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NDg4Nj1zdGF0aWMgaW50IGZpYjZfaWZ1cChzdHJ1Y3QgZmliNl9pbmZvICpydCwgdm9pZCAqcF9hcmcpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00ODk0LVx0XHRmaWI2X3VwZGF0ZV9zZXJudW1fdXB0b19yb290KG5ldCwgcnQpO1xubmV0L2lwdjYvcm91dGUuYzo0ODk1Olx0XHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShydCk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4OTYtXHR9XG4tLVxubmV0L2lwdjYvcm91dGUuYz00OTcxPXN0YXRpYyBpbnQgZmliNl9pZmRvd24oc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnKVxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNDk5OC1cdFx0XHRmaWI2X3VwZGF0ZV9zZXJudW0obmV0LCBydCk7XG5uZXQvaXB2Ni9yb3V0ZS5jOjQ5OTk6XHRcdFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UocnQpO1xubmV0L2lwdjYvcm91dGUuYy01MDAwLVx0XHR9XG4tLVxubmV0L2lwdjYvcm91dGUuYy01MDA3LVx0XHRmaWI2X3VwZGF0ZV9zZXJudW0obmV0LCBydCk7XG5uZXQvaXB2Ni9yb3V0ZS5jOjUwMDg6XHRcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHJ0KTtcbm5ldC9pcHY2L3JvdXRlLmMtNTAwOS1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDAyOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMDIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIFRoaXMgS2VybmVsIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBmaXggdGhhdCYjMzk7cyBjbGVhcmx5IHRvdWNoaW5nIHNvbWUgY29yZSBJUHY2IHJvdXRpbmcgbG9naWMuIFNwZWNpZmljYWxseSwgdGhpcyBpcyBkb3duIGluIHRoZSB3ZWVkcyB3aXRoIG11bHRpcGF0aCByb3V0aW5nIOKAkyB0aGF0JiMzOTtzIGRlZmluaXRlbHkgd2hlcmUgdGhlIGludGVyZXN0aW5nIHN0dWZmIGhhcHBlbnMuIE15IGltbWVkaWF0ZSB0YWtlYXdheSBpcyB0aGF0IHRoaXMgYWRkcmVzc2VzIGEgZGl2aXNpb24tYnktemVybyBlcnJvciB3aXRoaW4gYHJ0Nl91cHBlcl9ib3VuZF9zZXRgLiBUaGUgcm9vdCBjYXVzZT8gSXQgc2VlbXMgdGhhdCBgcnQ2X211bHRpcGF0aF90b3RhbF93ZWlnaHRgLCB3aGVuIGZlZCBhbGwgZGVhZCByb3V0ZXMgaW4gYSBtdWx0aXBhdGggc2NlbmFyaW8sIGNhbiByZXR1cm4gYSBgdG90YWxgIG9mIHplcm8uIFRoaXMgaXMgZXhhY3RseSB0aGUga2luZCBvZiBlZGdlIGNhc2UgdGhhdCYjMzk7cyB3b3J0aCBjYXRjaGluZywgYW5kIGl0JiMzOTtzIGdvb2QgdGhhdCBpdCYjMzk7cyBiZWluZyBhZGRyZXNzZWQuCgpHaXZlbiB0aGF0IGl0JiMzOTtzIGZ1bmN0aW9uYWwgYW5kIHRoZSBwb3RlbnRpYWwgZm9yIG9mZi1ieS1vbmUgZXJyb3JzIGlzIHByZXR0eSBoaWdoIHdoZW4gZGVhbGluZyB3aXRoIHdlaWdodCBjYWxjdWxhdGlvbnMsIHRoaXMgaXMgYWJzb2x1dGVseSBwcmltZSBmdXp6aW5nIG1hdGVyaWFsLiBJIHNob3VsZCBrZWVwIGFuIGV5ZSBvbiBob3cgdGhpcyBwbGF5cyBvdXQgaW4gcHJhY3RpY2UuCgpOb3csIGxldCYjMzk7cyBzZWUsIHRoZSBmdW5jdGlvbnMgb2YgaW50ZXJlc3QgaGVyZSBhcmU6IGBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZWAsIHdoaWNoIGlzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIGZpeDsgYGZpYjZfaWZ1cGAgYW5kIGBmaWI2X2lmZG93bmAsIHdoaWNoIG1ha2VzIG1lIHRoaW5rIHRoaXMgbWlnaHQgYmUgdHJpZ2dlcmVkIHdoZW4gaW50ZXJmYWNlcyBhcmUgYnJvdWdodCB1cCBvciBkb3duOyBhbmQgYGZpYjZfYWRkX3J0Mm5vZGVgIGFuZCBgZmliNl9kZWxfcm91dGVgLCB3aGljaCBhcmUgcmVzcG9uc2libGUgZm9yIHJvdXRlIG1hbmFnZW1lbnQuIFRob3NlIGFyZSBpbXBvcnRhbnQgZnVuY3Rpb25zIHRvIGtlZXAgaW4gbWluZCBmb3IgdGVzdGluZy4KCkZpbmFsbHksIHJlZ2FyZGluZyB0aGUgY29uZmlndXJhdGlvbiwgSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIHZlcmlmeSB0aGF0IGBJUFY2YCBpcyBlbmFibGVkIG9mIGNvdXJzZSwgYnV0IGFsc28sIEkgdGhpbmsgdGhlcmUmIzM5O3MgYSBzdHJvbmcgY2hhbmNlIHRoaXMgaXMgcmVsYXRlZCB0byBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLiBJJiMzOTtsbCBjcm9zcy1yZWZlcmVuY2UgdGhlIEtjb25maWcgdG8gY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDI6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SVBWNl9NVUxUSVBMRV9UQUJMRVMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWc9MjMyPWNvbmZpZyBJUFY2X0ZPVV9UVU5ORUxcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTIzNi1cbm5ldC9pcHY2L0tjb25maWc6MjM3OmNvbmZpZyBJUFY2X01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjYvS2NvbmZpZy0yMzgtXHRib29sIFwmIzM0O0lQdjY6IE11bHRpcGxlIFJvdXRpbmcgVGFibGVzXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0yNDM9Y29uZmlnIElQVjZfU1VCVFJFRVNcbm5ldC9pcHY2L0tjb25maWctMjQ0LVx0Ym9vbCBcJiMzNDtJUHY2OiBzb3VyY2UgYWRkcmVzcyBiYXNlZCByb3V0aW5nXCYjMzQ7XG5uZXQvaXB2Ni9LY29uZmlnOjI0NTpcdGRlcGVuZHMgb24gSVBWNl9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L0tjb25maWctMjQ2LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9Mjg2PWNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI5MC1cdHNlbGVjdCBEU1RfQ0FDSEVcbm5ldC9pcHY2L0tjb25maWc6MjkxOlx0c2VsZWN0IElQVjZfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2Ni9LY29uZmlnLTI5Mi1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDI6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg0MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkludmVzdGlnYXRpbmcgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlYCBpcyBjb250cm9sbGVkIGJ5IGFueSBjb25maWd1cmF0aW9uIHNldHRpbmdzLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgc2ltcGxlIGZlYXR1cmU7IGl0cyBiZWhhdmlvciBpcyBsaWtlbHkgaW5mbHVlbmNlZCBieSBzb21ldGhpbmcgdXBzdHJlYW0uIEkgbmVlZCB0byBrbm93IHdoZXJlIGl0JiMzOTtzIGRlZmluZWQgYW5kIGhvdyBpdCYjMzk7cyBhY3RpdmF0ZWQgb3IgZGVhY3RpdmF0ZWQuIFRoaXMgaXMgYSBjcml0aWNhbCBzdGVwIGJlZm9yZSBhdHRlbXB0aW5nIGFueSBtb2RpZmljYXRpb25zIG9yIGV2ZW4gdHJvdWJsZXNob290aW5nLiBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyBhbGwgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgbW9kdWxlcyB0byBzZWUgaWYgYW55IHNldHRpbmdzIGRpcmVjdGx5IGFmZmVjdCBpdHMgYmVoYXZpb3IuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gc2NvcGUgaXMgcGFyYW1vdW50LiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIGl0cyBvcmlnaW5zIGFuZCBsb29rIGZvciBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzLiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydDZfbXVsdGlwYXRoX3JlYmFsYW5jZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L3JvdXRlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvcm91dGUuYz00ODUxPXN0YXRpYyB2b2lkIHJ0Nl9tdWx0aXBhdGhfdXBwZXJfYm91bmRfc2V0KHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBpbnQgdG90YWwpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00ODYxLVxubmV0L2lwdjYvcm91dGUuYzo0ODYyOnZvaWQgcnQ2X211bHRpcGF0aF9yZWJhbGFuY2Uoc3RydWN0IGZpYjZfaW5mbyAqcnQpXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4NjMte1xuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NDg4Nj1zdGF0aWMgaW50IGZpYjZfaWZ1cChzdHJ1Y3QgZmliNl9pbmZvICpydCwgdm9pZCAqcF9hcmcpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00ODk0LVx0XHRmaWI2X3VwZGF0ZV9zZXJudW1fdXB0b19yb290KG5ldCwgcnQpO1xubmV0L2lwdjYvcm91dGUuYzo0ODk1Olx0XHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShydCk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4OTYtXHR9XG4tLVxubmV0L2lwdjYvcm91dGUuYz00OTcxPXN0YXRpYyBpbnQgZmliNl9pZmRvd24oc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnKVxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNDk5OC1cdFx0XHRmaWI2X3VwZGF0ZV9zZXJudW0obmV0LCBydCk7XG5uZXQvaXB2Ni9yb3V0ZS5jOjQ5OTk6XHRcdFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UocnQpO1xubmV0L2lwdjYvcm91dGUuYy01MDAwLVx0XHR9XG4tLVxubmV0L2lwdjYvcm91dGUuYy01MDA3LVx0XHRmaWI2X3VwZGF0ZV9zZXJudW0obmV0LCBydCk7XG5uZXQvaXB2Ni9yb3V0ZS5jOjUwMDg6XHRcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHJ0KTtcbm5ldC9pcHY2L3JvdXRlLmMtNTAwOS1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDAyOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NjMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSVB2NiBSb3V0aW5nIENvZGUgSW52ZXN0aWdhdGlvbioqCgpSaWdodCwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gc29tZXRoaW5nIHJlbGF0ZWQgdG8gSVB2NiByb3V0aW5nLiBIbW0sIHRoZSBpbml0aWFsIGd1dCBmZWVsaW5nIGlzIHRoYXQgaXQmIzM5O3MgbGlrZWx5IHdpdGhpbiB0aGUgYG5ldC9pcHY2L3JvdXRlLmNgIGZpbGUuIFRoYXQmIzM5O3MgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nLiBCdXQsIGJlZm9yZSBJIGRpdmUgZGVlcCBpbnRvIHRoYXQgc3BlY2lmaWMgZmlsZSwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZSByZWxldmFudCBjb2RlIGlzIGFjdHVhbGx5ICpiZWluZyogY29tcGlsZWQuIEkmIzM5O2xsIHRha2UgYSBxdWljayBwZWVrIGF0IHRoZSBgbmV0L2lwdjYvTWFrZWZpbGVgIHRvIGNvbmZpcm0gdGhlIGRlcGVuZGVuY2llcyBhbmQgdGhhdCB0aGUgcm91dGluZyBjb2RlIGlzIHByb3Blcmx5IGludGVncmF0ZWQgaW50byB0aGUgYnVpbGQgcHJvY2Vzcy4gR290dGEgYmUgbWV0aG9kaWNhbCDigJMgbm8gcG9pbnQgaW4gY2hhc2luZyBnaG9zdHMgaWYgdGhlIGNvZGUgaXNuJiMzOTt0IGV2ZW4gcGFydCBvZiB0aGUgY3VycmVudCBidWlsZCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDI6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cm91dGUubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L01ha2VmaWxlPTg9aXB2Ni15IDo9XHRhZl9pbmV0Ni5vIGFueWNhc3QubyBpcDZfb3V0cHV0Lm8gaXA2X2lucHV0Lm8gYWRkcmNvbmYubyBcXFxubmV0L2lwdjYvTWFrZWZpbGUtOS1cdFx0YWRkcmxhYmVsLm8gXFxcbm5ldC9pcHY2L01ha2VmaWxlOjEwOlx0XHRyb3V0ZS5vIGlwNl9maWIubyBpcHY2X3NvY2tnbHVlLm8gbmRpc2MubyB1ZHAubyBcXFxubmV0L2lwdjYvTWFrZWZpbGUtMTEtXHRcdHJhdy5vIGljbXAubyBtY2FzdC5vIHJlYXNzZW1ibHkubyB0Y3BfaXB2Ni5vIHBpbmcubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODM3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIElQdjYgUm91dGUgUmViYWxhbmNpbmcqKgoKQWxyaWdodCwgc28gdGhlIGNsdWUgaGVyZSBpcyB0aGF0IHNvbWV0aGluZyYjMzk7cyBjb21waWxlZCB3aGVuIElQdjYgaXMgZW5hYmxlZC4gVGhlIHF1ZXN0aW9uIGlzIHdoYXQ/IEdpdmVuIHRoZSBjb250ZXh0LCBteSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgaXQmIzM5O3MgbGlrZWx5IHJlbGF0ZWQgdG8gaG93IHdlJiMzOTtyZSBoYW5kbGluZyByb3V0aW5nIG9yIHBhdGggc2VsZWN0aW9uLiBJbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZyBvZiBgcnQ2X211bHRpcGF0aF9yZWJhbGFuY2VgLiBUaGF0JiMzOTtzIHRoZSBmdW5jdGlvbiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUuIEkmIzM5O2xsIG5hdmlnYXRlIHRvIGBuZXQvaXB2Ni9yb3V0ZS5jYCDigJMgdGhhdCYjMzk7cyB0aGUgbGlrZWx5IGxvY2F0aW9uIGZvciB0aGlzIGtpbmQgb2YgZnVuY3Rpb25hbGl0eSDigJMgYW5kIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIElQdjYgcm91dGluZyBmcmFtZXdvcmsuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIHRyaWdnZXJzLCBkZXBlbmRlbmNpZXMsIGFuZCBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgcmViYWxhbmNpbmcgaXMgaGFwcGVuaW5nIHRvIGlkZW50aWZ5IGlmIGEgcGFydGljdWxhciBtb2R1bGUgaXMgZW5hYmxlZC4gSSBrbm93IHRoaXMgY29kZSBwcmV0dHkgd2VsbCwgc28gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IGNsdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY2L3JvdXRlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0ODYyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzQ4NjI6XHR2b2lkIHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHN0cnVjdCBmaWI2X2luZm8gKnJ0KVxuNDg2MzpcdHtcbjQ4NjQ6XHRcdHN0cnVjdCBmaWI2X2luZm8gKmZpcnN0O1xuNDg2NTpcdFx0aW50IHRvdGFsO1xuNDg2NjpcdFxuNDg2NzpcdFx0LyogSW4gY2FzZSB0aGUgZW50aXJlIG11bHRpcGF0aCByb3V0ZSB3YXMgbWFya2VkIGZvciBmbHVzaGluZyxcbjQ4Njg6XHRcdCAqIHRoZW4gdGhlcmUgaXMgbm8gbmVlZCB0byByZWJhbGFuY2UgdXBvbiB0aGUgcmVtb3ZhbCBvZiBldmVyeVxuNDg2OTpcdFx0ICogc2libGluZyByb3V0ZS5cbjQ4NzA6XHRcdCAqL1xuNDg3MTpcdFx0aWYgKCFydC1cdTAwM2VmaWI2X25zaWJsaW5ncyB8fCBydC1cdTAwM2VzaG91bGRfZmx1c2gpXG40ODcyOlx0XHRcdHJldHVybjtcbjQ4NzM6XHRcbjQ4NzQ6XHRcdC8qIER1cmluZyBsb29rdXAgcm91dGVzIGFyZSBldmFsdWF0ZWQgaW4gb3JkZXIsIHNvIHdlIG5lZWQgdG9cbjQ4NzU6XHRcdCAqIG1ha2Ugc3VyZSB1cHBlciBib3VuZHMgYXJlIGFzc2lnbmVkIGZyb20gdGhlIGZpcnN0IHNpYmxpbmdcbjQ4NzY6XHRcdCAqIG9ud2FyZHMuXG40ODc3Olx0XHQgKi9cbjQ4Nzg6XHRcdGZpcnN0ID0gcnQ2X211bHRpcGF0aF9maXJzdF9zaWJsaW5nKHJ0KTtcbjQ4Nzk6XHRcdGlmIChXQVJOX09OX09OQ0UoIWZpcnN0KSlcbjQ4ODA6XHRcdFx0cmV0dXJuO1xuNDg4MTpcdFxuNDg4MjpcdFx0dG90YWwgPSBydDZfbXVsdGlwYXRoX3RvdGFsX3dlaWdodChmaXJzdCk7XG40ODgzOlx0XHRydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldChmaXJzdCwgdG90YWwpO1xuNDg4NDpcdH1cbjQ4ODU6XHRcbjQ4ODY6XHRzdGF0aWMgaW50IGZpYjZfaWZ1cChzdHJ1Y3QgZmliNl9pbmZvICpydCwgdm9pZCAqcF9hcmcpXG40ODg3Olx0e1xuNDg4ODpcdFx0Y29uc3Qgc3RydWN0IGFyZ19uZXRkZXZfZXZlbnQgKmFyZyA9IHBfYXJnO1xuNDg4OTpcdFx0c3RydWN0IG5ldCAqbmV0ID0gZGV2X25ldChhcmctXHUwMDNlZGV2KTtcbjQ4OTA6XHRcbjQ4OTE6XHRcdGlmIChydCAhPSBuZXQtXHUwMDNlaXB2Ni5maWI2X251bGxfZW50cnkgXHUwMDI2XHUwMDI2ICFydC1cdTAwM2VuaCBcdTAwMjZcdTAwMjZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDI6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU2OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgSVB2NiBNdWx0aXBhdGggUm91dGluZyBGaXgqKgoKT2theSwgc28gSSYjMzk7dmUgcGlucG9pbnRlZCB0aGUgZml4LiBJdCYjMzk7cyBpbiBgcnQ2X3VwcGVyX2JvdW5kX3NldGAsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldGAuIFRoZSBpc3N1ZSB3YXMgYSBkaXZpc2lvbiBieSB6ZXJvIHRoYXQgdGhpcyBjaGFuZ2Ugbm93IHByZXZlbnRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSB3aXRoaW4gSVB2NiBtdWx0aXBhdGggcm91dGluZy4gRGVmaW5pdGVseSBzb21ldGhpbmcgd29ydGggdGhyb3dpbmcgc29tZSBmdXp6aW5nIGF0LgoKTm93LCBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHRoZXNlIHN5bWJvbHM6IGBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZWAsIGBmaWI2X2lmdXBgLCBgZmliNl9pZmRvd25gLCBgZmliNl9hZGRfcnQybm9kZWAsIGFuZCBgZmliNl9kZWxfcm91dGVgLiBUaGVzZSBhcmUgbGlrZWx5IHRvIGJlIGhlYXZpbHkgaW52b2x2ZWQgd2l0aCB0aGUgc2FtZSBsb2dpYy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IGludGVyYWN0IHdpdGggYHJ0Nl91cHBlcl9ib3VuZF9zZXRgIHRvIGdhaW4gYSBmdWxsIHBpY3R1cmUgb2YgdGhlIGltcGFjdC4KClRoZSBgSVBWNmAgY29uZmlnIGlzIHRoZSBvYnZpb3VzIG9uZSwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgc3VidGx5IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBjb3VsZCBpbmZsdWVuY2UgdGhpcyBtdWx0aXBhdGggYmVoYXZpb3IuIEkgd2FudCB0byBkb3VibGUtY2hlY2sgdGhhdCBJJiMzOTttIGNvbnNpZGVyaW5nIGFsbCByZWxldmFudCBhc3BlY3RzIG9mIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDAyOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0Nl9tdWx0aXBhdGhfcmViYWxhbmNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L2lwNl9maWIuYz0xMDg5PXN0YXRpYyBpbnQgZmliNl9hZGRfcnQybm9kZShzdHJ1Y3QgZmliNl9ub2RlICpmbiwgc3RydWN0IGZpYjZfaW5mbyAqcnQsXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTEyMzEtXHRcdHJjdV9yZWFkX2xvY2soKTtcbm5ldC9pcHY2L2lwNl9maWIuYzoxMjMyOlx0XHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZSh0ZW1wX3NpYmxpbmcpO1xubmV0L2lwdjYvaXA2X2ZpYi5jLTEyMzMtXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuLS1cbm5ldC9pcHY2L2lwNl9maWIuYy0xMjc3LVx0XHRcdFx0cmN1X3JlYWRfbG9jaygpO1xubmV0L2lwdjYvaXA2X2ZpYi5jOjEyNzg6XHRcdFx0XHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShuZXh0X3NpYmxpbmcpO1xubmV0L2lwdjYvaXA2X2ZpYi5jLTEyNzktXHRcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmM9MTk2OT1zdGF0aWMgdm9pZCBmaWI2X2RlbF9yb3V0ZShzdHJ1Y3QgZmliNl90YWJsZSAqdGFibGUsIHN0cnVjdCBmaWI2X25vZGUgKmZuLFxuLS1cbm5ldC9pcHY2L2lwNl9maWIuYy0yMDIwLVx0XHRsaXN0X2RlbF9yY3UoXHUwMDI2cnQtXHUwMDNlZmliNl9zaWJsaW5ncyk7XG5uZXQvaXB2Ni9pcDZfZmliLmM6MjAyMTpcdFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UobmV4dF9zaWJsaW5nKTtcbm5ldC9pcHY2L2lwNl9maWIuYy0yMDIyLVx0fVxuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NDg1MT1zdGF0aWMgdm9pZCBydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50IHRvdGFsKVxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNDg2MS1cbm5ldC9pcHY2L3JvdXRlLmM6NDg2Mjp2b2lkIHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHN0cnVjdCBmaWI2X2luZm8gKnJ0KVxubmV0L2lwdjYvcm91dGUuYy00ODYzLXtcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ4ODY9c3RhdGljIGludCBmaWI2X2lmdXAoc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnKVxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNDg5NC1cdFx0ZmliNl91cGRhdGVfc2VybnVtX3VwdG9fcm9vdChuZXQsIHJ0KTtcbm5ldC9pcHY2L3JvdXRlLmM6NDg5NTpcdFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UocnQpO1xubmV0L2lwdjYvcm91dGUuYy00ODk2LVx0fVxuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NDk3MT1zdGF0aWMgaW50IGZpYjZfaWZkb3duKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCB2b2lkICpwX2FyZylcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ5OTgtXHRcdFx0ZmliNl91cGRhdGVfc2VybnVtKG5ldCwgcnQpO1xubmV0L2lwdjYvcm91dGUuYzo0OTk5Olx0XHRcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHJ0KTtcbm5ldC9pcHY2L3JvdXRlLmMtNTAwMC1cdFx0fVxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNTAwNy1cdFx0ZmliNl91cGRhdGVfc2VybnVtKG5ldCwgcnQpO1xubmV0L2lwdjYvcm91dGUuYzo1MDA4Olx0XHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShydCk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTUwMDktXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzcxCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgSVB2NiBNdWx0aXBhdGggUm91dGluZyBDb25maWd1cmF0aW9uKioKCkhtbSwgbXVsdGlwYXRoIHJvdXRpbmcgaW4gSVB2Ni4uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGtlcm5lbCYjMzk7cyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIElzIHRoZXJlIGFueXRoaW5nIHNwZWNpZmljLCBvciBhbnkgbm90YWJsZSBjaGFuZ2VzIHNpbmNlIHRoZSBsYXN0IHRpbWUgSSBsb29rZWQ/IExldCYjMzk7cyBkaXZlIGJhY2sgaW50byB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgbmV0L2lwdjYvS2NvbmZpZ2AuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBoaW50cyBvZiBtdWx0aXBhdGggc3VwcG9ydCBvciByZWxhdGVkIHBhcmFtZXRlcnMgdGhhdCBJIG1heSBoYXZlIG92ZXJsb29rZWQgYmVmb3JlLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDI6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNVUxUSVBBVEgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDI6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODk1OQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIHRoZSBJUCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgbmV0d29ya2luZyBpc3N1ZSwgYW5kIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYSBjb3JlIGNvbmZpZ3VyYXRpb24gZmlsZTogYG5ldC9pcHY0L0tjb25maWdgLiBJdCYjMzk7cyBhIG5hdHVyYWwgc3RhcnRpbmcgcG9pbnQgd2hlbiB0cm91Ymxlc2hvb3RpbmcgSVAtcmVsYXRlZCBwcm9ibGVtcyBpbiB0aGUga2VybmVsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGVuYWJsZWQsIGRpc2FibGVkLCBhbmQgY29uZmlndXJhYmxlIHJlZ2FyZGluZyBJUHY0LiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSB2YXJpb3VzIG9wdGlvbnMgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCBkZWZpbmVkIHRoZXJlIC0gdGhpbmdzIGxpa2UgSVAgZnJhZ21lbnRhdGlvbiBoYW5kbGluZywgcm91dGluZyB0YWJsZSBjb25maWd1cmF0aW9ucywgbmV0d29yayBhZGRyZXNzIHRyYW5zbGF0aW9uIChOQVQpIHN1cHBvcnQsIGFuZCBmaXJld2FsbCBpbnRlZ3JhdGlvbi4gQXJlIHRoZSBleHBlY3RlZCBmZWF0dXJlcyBjb21waWxlZCBpbiwgYW5kIGFyZSB0aGV5IGNvbmZpZ3VyZWQgYXMgSSB3b3VsZCBleHBlY3QsIGZvciB0aGlzIHNwZWNpZmljIHVzZS1jYXNlIGFuZCBoYXJkd2FyZSBwbGF0Zm9ybT8gSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIGlmIGFueSBmdW5kYW1lbnRhbCBzZXR0aW5ncyBhcmUgbGVhZGluZyB0byB0aGUgb2JzZXJ2ZWQgYmVoYXZpb3IsIG9yIGlmIEkgc2hvdWxkIGZvY3VzIG15IGF0dGVudGlvbiBlbHNld2hlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDAyOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01VTFRJUEFUSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz02Mz1jb25maWcgSVBfTVVMVElQTEVfVEFCTEVTXG4tLVxubmV0L2lwdjQvS2NvbmZpZy03OS1cbm5ldC9pcHY0L0tjb25maWc6ODA6Y29uZmlnIElQX1JPVVRFX01VTFRJUEFUSFxubmV0L2lwdjQvS2NvbmZpZy04MS1cdGJvb2wgXCYjMzQ7SVA6IGVxdWFsIGNvc3QgbXVsdGlwYXRoXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDAyOjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyNzAKCQkJCQkJCW91dHB1dDogMTI1CgkJCQkJCQl0aG91Z2h0czogMTMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZToKCioqTXkgSVB2NiBNdWx0aXBhdGggSW52ZXN0aWdhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIGluaXRpYWwgYXNzdW1wdGlvbiB3YXMgY29ycmVjdDogSVB2NiBtdWx0aXBhdGggaXNuJiMzOTt0IHNvbWUgc3RhbmRhbG9uZSB0aGluZywgaXQmIzM5O3MgYmFrZWQgaW50byB0aGUgSVB2NiBpbXBsZW1lbnRhdGlvbiBpdHNlbGYuIFRoZSB0ZXJtIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgdGhyZXcgbWUgZm9yIGEgc2Vjb25kLCBidXQgdGhhdCYjMzk7cyBqdXN0IHRoZSBwb2xpY3kgcm91dGluZyBhc3BlY3QsIGFsbG93aW5nIGZvciBtdWx0aXBsZSByb3V0aW5nIHRhYmxlcy4gTXVsdGlwYXRoLCBvbiB0aGUgb3RoZXIgaGFuZCwgaXMgbXVjaCBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCDigJMgaXQmIzM5O3MgYWJvdXQgaGF2aW5nIG11bHRpcGxlIHJvdXRlcyB0byB0aGUgKnNhbWUqIGRlc3RpbmF0aW9uLiBDbGFzc2ljIQoKTm93LCB0aGUgaW50ZXJlc3RpbmcgcGFydC4gV2hlcmUmIzM5O3MgdGhpcyBoYW5kbGVkIGluIHRoZSBrZXJuZWw/IFRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgaXMgYHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlYCB3aXRoaW4gYG5ldC9pcHY2L3JvdXRlLmNgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLgoKVGhlIGNyaXRpY2FsIHRoaW5nIG5vdyBpcyB0byBzZWUgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSwgc28gSSBjYW4gc2VlIHdoYXQgdHJpZ2dlcnMgdGhlIHJlYmFsYW5jaW5nLiBJdCBsb29rcyBsaWtlIGl0IGlzIHRyaWdnZXJlZCBieSBgZmliNl9pZnVwYCwgYGZpYjZfaWZkb3duYCwgYGZpYjZfYWRkX3J0Mm5vZGVgLCBhbmQgYGZpYjZfZGVsX3JvdXRlYC4gUGVyZmVjdC4gVGhvc2UgYXJlIGV4Y2VsbGVudCBmb2N1cyBzeW1ib2xzOyB0aGV5IGNvdmVyIGludGVyZmFjZSBzdGF0ZSBjaGFuZ2VzIGFuZCByb3V0ZSBhZGRpdGlvbnMvZGVsZXRpb25zLCB3aGljaCBhcmUgcHJlY2lzZWx5IHRoZSBldmVudHMgdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBhIG11bHRpcGF0aCByb3V0ZSByZS1ldmFsdWF0aW9uLiBUaGF0IHRlbGxzIG1lIGEgbG90IGFib3V0IHRoZSBkeW5hbWljcyBvZiB0aGUgc3lzdGVtLgoKT2theSwgSSYjMzk7dmUgZ290IGEgZ29vZCBoYW5kbGUgb24gdGhpbmdzIG5vdy4gSSYjMzk7bGwgc2V0IHVwIHRoZSByZXN1bHRzIGJhc2VkIG9uIHRoaXMga25vd2xlZGdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0Nl9tdWx0aXBhdGhfcmViYWxhbmNlJiMzNDssCiAgICAmIzM0O2ZpYjZfaWZ1cCYjMzQ7LAogICAgJiMzNDtmaWI2X2lmZG93biYjMzQ7LAogICAgJiMzNDtmaWI2X2FkZF9ydDJub2RlJiMzNDssCiAgICAmIzM0O2ZpYjZfZGVsX3JvdXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZGl2aXNpb24gYnkgemVybyBpbiBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgd2hlbiBgdG90YWxgIGlzIDAuIFRoaXMgaGFwcGVucyBkdXJpbmcgSVB2NiBtdWx0aXBhdGggcm91dGUgcmViYWxhbmNpbmcsIHdoaWNoIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0Nl9tdWx0aXBhdGhfcmViYWxhbmNlJiMzNDssCiAgICAmIzM0O2ZpYjZfaWZ1cCYjMzQ7LAogICAgJiMzNDtmaWI2X2lmZG93biYjMzQ7LAogICAgJiMzNDtmaWI2X2FkZF9ydDJub2RlJiMzNDssCiAgICAmIzM0O2ZpYjZfZGVsX3JvdXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZGl2aXNpb24gYnkgemVybyBpbiBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgd2hlbiBgdG90YWxgIGlzIDAuIFRoaXMgaGFwcGVucyBkdXJpbmcgSVB2NiBtdWx0aXBhdGggcm91dGUgcmViYWxhbmNpbmcsIHdoaWNoIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDI6MDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkaXZpZGUtYnktemVybyBidWcgaW4gYHJ0Nl91cHBlcl9ib3VuZF9zZXRgIGJ5IGNoZWNraW5nIGlmIGB0b3RhbGAgaXMgbm9uLXplcm8gYmVmb3JlIHBlcmZvcm1pbmcgdGhlIGRpdmlzaW9uLiBUaGlzIGRvZXMgbm90IGludm9sdmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBzdHJ1Y3R1cmUgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZSBidWcgaXQgZml4ZXMgKGRpdmlkZS1ieS16ZXJvKSB3b3VsZCBjYXVzZSBhIGtlcm5lbCBwYW5pYyBvciBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyYzRmMzNjOWU1NzlhNzg1ZDI4MDEyZjUxMWM0Njg0NTk4OWMxOTljCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMTcgMDI6MDM6MTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yb3V0ZS5jIGIvbmV0L2lwdjYvcm91dGUuYwppbmRleCA1OTY4Y2U1YWQxNTA4Li42ODkyNGNmZjkyMDU1IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9yb3V0ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L3JvdXRlLmMKQEAgLTQ4NDAsNyAmIzQzOzQ4NDAsNyBAQCBzdGF0aWMgdm9pZCBydDZfdXBwZXJfYm91bmRfc2V0KHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBpbnQgKndlaWdodCwgaW50IHRvdGFsKQogewogCWludCB1cHBlcl9ib3VuZCA9IC0xOwogCi0JaWYgKCFydDZfaXNfZGVhZChydCkpIHsKJiM0MzsJaWYgKHRvdGFsICZhbXA7JmFtcDsgIXJ0Nl9pc19kZWFkKHJ0KSkgewogCQkqd2VpZ2h0ICYjNDM7PSBydC0mZ3Q7ZmliNl9uaC0mZ3Q7ZmliX25oX3dlaWdodDsKIAkJdXBwZXJfYm91bmQgPSBESVZfUk9VTkRfQ0xPU0VTVF9VTEwoKHU2NCkgKCp3ZWlnaHQpICZsdDsmbHQ7IDMxLAogCQkJCQkJICAgIHRvdGFsKSAtIDE7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDExCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUHJvcG9zZWQgUm91dGUuYyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBydDZfdXBwZXJfYm91bmRfc2V0YCBpbiBgbmV0L2lwdjYvcm91dGUuY2AuIFRoZSBjb3JlIGNoYW5nZSBpcyBhIHNpbXBsZSBjb25kaXRpb25hbDogYWRkaW5nIGEgYHRvdGFsYCBjaGVjaywgc3BlY2lmaWNhbGx5IGBpZiAodG90YWwgJmFtcDsmYW1wOyAhcnQ2X2lzX2RlYWQocnQpKWAgd2hlcmUgcHJldmlvdXNseSBpdCB3YXMganVzdCBgaWYgKCFydDZfaXNfZGVhZChydCkpYC4gIFRoZSBpbnRlbnQgaGVyZSBpcyBjbGVhcjogaXQmIzM5O3MgYSBkZWZlbnNpdmUgbWVhc3VyZSB0byBwcmV2ZW50IGEgZGl2aWRlLWJ5LXplcm8gZXJyb3Igd2l0aGluIHRoYXQgYERJVl9ST1VORF9DTE9TRVNUX1VMTGAgbWFjcm8gd2hlbiBgdG90YWxgIGlzIHplcm8uIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGFuZCBjb21wbGV0ZWx5IHVuZGVyc3RhbmRhYmxlIGJ1ZyBmaXguCgpOb3csIG15IGluaXRpYWwgY29uY2VybiwgYXMgaXQgYWx3YXlzIGlzIHdoZW4gc2VlaW5nIHRoZXNlIHR5cGVzIG9mIHBhdGNoZXMsIGlzIHdoZXRoZXIgdGhpcyBpbnRyb2R1Y2VzIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBleHBvc3VyZS4gTGV0JiMzOTtzIHNlZS4uLiAgSXQgYXBwZWFycyB0aGlzIHBhdGNoICpvbmx5KiBpbnRyb2R1Y2VzIHRoZSBjaGVjayBmb3IgYHRvdGFsYCBiZWluZyBub24temVyby4gVGhlIGNvZGUgcGF0aCB0aGF0JiMzOTtzIHByb2JsZW1hdGljIGlzIHRoZSBkaXZpZGUuIEFkZGluZyB0aGF0IGNoZWNrIGlzIGZ1bmRhbWVudGFsbHkgYSBnb29kIHRoaW5nLCBhIHNhbml0eSBjaGVjay4gU2luY2UgaXQmIzM5O3Mgc2ltcGx5IGEgZ3VhcmQgYWdhaW5zdCBhIGRpdmlkZS1ieS16ZXJvLCBJJiMzOTttIGhpZ2hseSBjb25maWRlbnQgdGhhdCB0aGlzIGRvZXNuJiMzOTt0IGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzLiAgRGl2aWRlLWJ5LXplcm8gZXJyb3JzIGFyZSB1c3VhbGx5IGNhdWdodCBieSB0aGUgY29tcGlsZXIsIHRoZSBrZXJuZWwmIzM5O3MgYnVpbHQtaW4gYnVnIGNoZWNrZXJzLCBvciB3b3JzZSwgdGhleSBjYXVzZSBhIGtlcm5lbCBwYW5pYywgc28gaXQmIzM5O3MgZ29vZCB0byBiZSBwcm9hY3RpdmUuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0IG1lIHF1aWNrbHkgcmVyZWFkIHRoZSByZWxldmFudCBwYXJ0cyBvZiB0aGUgYHJ0Nl91cHBlcl9ib3VuZF9zZXRgIGZ1bmN0aW9uIGl0c2VsZiwganVzdCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnkgc3VidGxlIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDI6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnQ2X3VwcGVyX2JvdW5kX3NldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L3JvdXRlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvcm91dGUuYz00ODIzPXN0YXRpYyBpbnQgcnQ2X211bHRpcGF0aF90b3RhbF93ZWlnaHQoY29uc3Qgc3RydWN0IGZpYjZfaW5mbyAqcnQpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00ODM4LVxubmV0L2lwdjYvcm91dGUuYzo0ODM5OnN0YXRpYyB2b2lkIHJ0Nl91cHBlcl9ib3VuZF9zZXQoc3RydWN0IGZpYjZfaW5mbyAqcnQsIGludCAqd2VpZ2h0LCBpbnQgdG90YWwpXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4NDAte1xuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NDg1MT1zdGF0aWMgdm9pZCBydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50IHRvdGFsKVxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNDg1NS1cbm5ldC9pcHY2L3JvdXRlLmM6NDg1NjpcdHJ0Nl91cHBlcl9ib3VuZF9zZXQocnQsIFx1MDAyNndlaWdodCwgdG90YWwpO1xubmV0L2lwdjYvcm91dGUuYy00ODU3LVxubmV0L2lwdjYvcm91dGUuYy00ODU4LVx0bGlzdF9mb3JfZWFjaF9lbnRyeShpdGVyLCBcdTAwMjZydC1cdTAwM2VmaWI2X3NpYmxpbmdzLCBmaWI2X3NpYmxpbmdzKVxubmV0L2lwdjYvcm91dGUuYzo0ODU5Olx0XHRydDZfdXBwZXJfYm91bmRfc2V0KGl0ZXIsIFx1MDAyNndlaWdodCwgdG90YWwpO1xubmV0L2lwdjYvcm91dGUuYy00ODYwLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDI6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg5MwoJCQkJCQkJb3V0cHV0OiAxMTUKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipIYW5kbGluZyB0aGUgUG90ZW50aWFsIGZvciBaZXJvIERpdmlzaW9uKioKCkFscmlnaHQsIHRoaXMgYWRqdXN0bWVudCBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBNeSBwcmltYXJ5IGNvbmNlcm4gaGVyZSBpcyBwcmV2ZW50aW5nIGEgZGl2aXNpb24gYnkgemVybyBlcnJvciDigJMgYSBjbGFzc2ljLCBlYXNpbHkgYXZvaWRhYmxlIHBpdGZhbGwuIFRoZXJlJiMzOTtzIG5vIGZhbmN5IG1lbW9yeSBpbml0aWFsaXphdGlvbiBnb2luZyBvbiB0aGF0IEkgbmVlZCB0byB3b3JyeSBhYm91dC4gVGhpcyBpcyBhIGNsZWFuLCB0YXJnZXRlZCBjaGFuZ2UuIEFzIHN1Y2gsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgIGZvciB0aGlzIHJldmlzaW9uLiBObyBmdXJ0aGVyIGNoZWNrcyBvciBpbnN0cnVtZW50YXRpb24gYXJlIHJlcXVpcmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkaXZpZGUtYnktemVybyBidWcgaW4gYHJ0Nl91cHBlcl9ib3VuZF9zZXRgIGJ5IGNoZWNraW5nIGlmIGB0b3RhbGAgaXMgbm9uLXplcm8gYmVmb3JlIHBlcmZvcm1pbmcgdGhlIGRpdmlzaW9uLiBUaGlzIGRvZXMgbm90IGludm9sdmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBzdHJ1Y3R1cmUgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZSBidWcgaXQgZml4ZXMgKGRpdmlkZS1ieS16ZXJvKSB3b3VsZCBjYXVzZSBhIGtlcm5lbCBwYW5pYyBvciBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgZGl2aWRlLWJ5LXplcm8gYnVnIGluIGBydDZfdXBwZXJfYm91bmRfc2V0YCBieSBjaGVja2luZyBpZiBgdG90YWxgIGlzIG5vbi16ZXJvIGJlZm9yZSBwZXJmb3JtaW5nIHRoZSBkaXZpc2lvbi4gVGhpcyBkb2VzIG5vdCBpbnZvbHZlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgc3RydWN0dXJlIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGUgYnVnIGl0IGZpeGVzIChkaXZpZGUtYnktemVybykgd291bGQgY2F1c2UgYSBrZXJuZWwgcGFuaWMgb3IgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDM6MTkuNzA5MTAyNDQ3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMxNjA4MzIxNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlXCIsXG4gICAgXCJmaWI2X2lmdXBcIixcbiAgICBcImZpYjZfaWZkb3duXCIsXG4gICAgXCJmaWI2X2FkZF9ydDJub2RlXCIsXG4gICAgXCJmaWI2X2RlbF9yb3V0ZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgZGl2aWRlLWJ5LXplcm8gYnVnIGluIGBydDZfdXBwZXJfYm91bmRfc2V0YCBieSBjaGVja2luZyBpZiBgdG90YWxgIGlzIG5vbi16ZXJvIGJlZm9yZSBwZXJmb3JtaW5nIHRoZSBkaXZpc2lvbi4gVGhpcyBkb2VzIG5vdCBpbnZvbHZlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgc3RydWN0dXJlIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGUgYnVnIGl0IGZpeGVzIChkaXZpZGUtYnktemVybykgd291bGQgY2F1c2UgYSBrZXJuZWwgcGFuaWMgb3IgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGRpdmlzaW9uIGJ5IHplcm8gaW4gYHJ0Nl91cHBlcl9ib3VuZF9zZXRgIHdoZW4gYHRvdGFsYCBpcyAwLiBUaGlzIGhhcHBlbnMgZHVyaW5nIElQdjYgbXVsdGlwYXRoIHJvdXRlIHJlYmFsYW5jaW5nLCB3aGljaCBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjAzOjE5LjcwOTEwOTE2N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY3NDYzOTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmM0ZjMzYzllNTc5YTc4NWQyODAxMmY1MTFjNDY4NDU5ODljMTk5Y1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAxNyAwMjowMzoxOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yb3V0ZS5jIGIvbmV0L2lwdjYvcm91dGUuY1xcbmluZGV4IDU5NjhjZTVhZDE1MDguLjY4OTI0Y2ZmOTIwNTUgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvcm91dGUuY1xcbisrKyBiL25ldC9pcHY2L3JvdXRlLmNcXG5AQCAtNDg0MCw3ICs0ODQwLDcgQEAgc3RhdGljIHZvaWQgcnQ2X3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50ICp3ZWlnaHQsIGludCB0b3RhbClcXG4ge1xcbiBcXHRpbnQgdXBwZXJfYm91bmQgPSAtMTtcXG4gXFxuLVxcdGlmICghcnQ2X2lzX2RlYWQocnQpKSB7XFxuK1xcdGlmICh0b3RhbCBcXHUwMDI2XFx1MDAyNiAhcnQ2X2lzX2RlYWQocnQpKSB7XFxuIFxcdFxcdCp3ZWlnaHQgKz0gcnQtXFx1MDAzZWZpYjZfbmgtXFx1MDAzZWZpYl9uaF93ZWlnaHQ7XFxuIFxcdFxcdHVwcGVyX2JvdW5kID0gRElWX1JPVU5EX0NMT1NFU1RfVUxMKCh1NjQpICgqd2VpZ2h0KSBcXHUwMDNjXFx1MDAzYyAzMSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgIHRvdGFsKSAtIDE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjAzOjIwLjA3NzM3NzU3N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUzNzExMDYyMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydDZfbXVsdGlwYXRoX3JlYmFsYW5jZVwiLFxuICAgIFwiZmliNl9pZnVwXCIsXG4gICAgXCJmaWI2X2lmZG93blwiLFxuICAgIFwiZmliNl9hZGRfcnQybm9kZVwiLFxuICAgIFwiZmliNl9kZWxfcm91dGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGRpdmlzaW9uIGJ5IHplcm8gaW4gYHJ0Nl91cHBlcl9ib3VuZF9zZXRgIHdoZW4gYHRvdGFsYCBpcyAwLiBUaGlzIGhhcHBlbnMgZHVyaW5nIElQdjYgbXVsdGlwYXRoIHJvdXRlIHJlYmFsYW5jaW5nLCB3aGljaCBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDJjNGYzM2M5ZTU3OWE3ODVkMjgwMTJmNTExYzQ2ODQ1OTg5YzE5OWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxNyAwMjowMzoxOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L3JvdXRlLmMgYi9uZXQvaXB2Ni9yb3V0ZS5jXG5pbmRleCA1OTY4Y2U1YWQxNTA4Li42ODkyNGNmZjkyMDU1IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvcm91dGUuY1xuKysrIGIvbmV0L2lwdjYvcm91dGUuY1xuQEAgLTQ4NDAsNyArNDg0MCw3IEBAIHN0YXRpYyB2b2lkIHJ0Nl91cHBlcl9ib3VuZF9zZXQoc3RydWN0IGZpYjZfaW5mbyAqcnQsIGludCAqd2VpZ2h0LCBpbnQgdG90YWwpXG4ge1xuIFx0aW50IHVwcGVyX2JvdW5kID0gLTE7XG4gXG4tXHRpZiAoIXJ0Nl9pc19kZWFkKHJ0KSkge1xuK1x0aWYgKHRvdGFsIFx1MDAyNlx1MDAyNiAhcnQ2X2lzX2RlYWQocnQpKSB7XG4gXHRcdCp3ZWlnaHQgKz0gcnQtXHUwMDNlZmliNl9uaC1cdTAwM2VmaWJfbmhfd2VpZ2h0O1xuIFx0XHR1cHBlcl9ib3VuZCA9IERJVl9ST1VORF9DTE9TRVNUX1VMTCgodTY0KSAoKndlaWdodCkgXHUwMDNjXHUwMDNjIDMxLFxuIFx0XHRcdFx0XHRcdCAgICB0b3RhbCkgLSAxO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDM6MjAuMDc3MzgwMDY3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ5ODc1Mzk1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQdjYgUm91dGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvaXB2Ni9yb3V0ZS5jYC4gSXQncyBhIGZhaXJseSBzdHJhaWdodGZvcndhcmQgbW9kaWZpY2F0aW9uIHRvIHRoZSBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgZnVuY3Rpb24uIFRoZSBjaGFuZ2UgaXMgc2ltcGxlLCByZWFsbHk6IHRoZXkndmUgYWRkZWQgYSBjaGVjayBmb3IgYHRvdGFsYCBiZWZvcmUgdGhlIGNhbGwgdG8gYHJ0Nl9pc19kZWFkKHJ0KWAuIFRoZSBvcmlnaW5hbCBjb2RlLCBhcHBhcmVudGx5LCBkaWRuJ3QgaGFuZGxlIHRoZSBjYXNlIHdoZXJlIGB0b3RhbGAgY291bGQgYmUgemVyby5cblxuTGV0IG1lIHNlZeKApiByaWdodCwgSSBzZWUgaXQgbm93LiBUaGUgcHJvYmxlbSBpcyBpbiB0aGUgbGluZSBpbnZvbHZpbmcgdGhlIGRpdmlzaW9uIGBESVZfUk9VTkRfQ0xPU0VTVF9VTEwoKHU2NCkgKCp3ZWlnaHQpIFx1MDAzY1x1MDAzYyAzMSwgdG90YWwpIC0gMTtgLiBBIGRpdmlzaW9uIGJ5IHplcm8gdGhlcmUgd291bGQgY2xlYXJseSBiZSBhIG1ham9yIGlzc3VlLCBzbyB0aGUgcGF0Y2ggaXMgY29ycmVjdGx5IGFkZHJlc3NpbmcgdGhpcyBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4gQWRkaW5nIGB0b3RhbCBcdTAwMjZcdTAwMjZgIHNlZW1zIGxpa2UgYSBjbGVhbiBhbmQgZWZmaWNpZW50IGZpeCB0byBwcmV2ZW50IHRoYXQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LCBzbyBsZXQgbWUgcHVsbCB1cCB0aGUgc291cmNlIGZvciBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgaW4gYG5ldC9pcHY2L3JvdXRlLmNgIHRvIHNlZSBob3cgYHRvdGFsYCBpcyB1c2VkIGFuZCB3aHkgaXQgbWlnaHQgYmUgemVybyBpbiB0aGUgZmlyc3QgcGxhY2UuIFRoaXMgcGF0Y2ggbG9va3MgZ29vZCwgYnV0IEkgYWx3YXlzIHdhbnQgdG8gZnVsbHkgY29tcHJlaGVuZCB0aGUgaW1wbGljYXRpb25zIG9mIGV2ZXJ5IGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjAzOjI0LjU3NjEzNzQyNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDg4MzM0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydDZfdXBwZXJfYm91bmRfc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L3JvdXRlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvcm91dGUuYz00ODIzPXN0YXRpYyBpbnQgcnQ2X211bHRpcGF0aF90b3RhbF93ZWlnaHQoY29uc3Qgc3RydWN0IGZpYjZfaW5mbyAqcnQpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4MzgtXFxubmV0L2lwdjYvcm91dGUuYzo0ODM5OnN0YXRpYyB2b2lkIHJ0Nl91cHBlcl9ib3VuZF9zZXQoc3RydWN0IGZpYjZfaW5mbyAqcnQsIGludCAqd2VpZ2h0LCBpbnQgdG90YWwpXFxubmV0L2lwdjYvcm91dGUuYy00ODQwLXtcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NDg1MT1zdGF0aWMgdm9pZCBydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50IHRvdGFsKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00ODU1LVxcbm5ldC9pcHY2L3JvdXRlLmM6NDg1NjpcXHRydDZfdXBwZXJfYm91bmRfc2V0KHJ0LCBcXHUwMDI2d2VpZ2h0LCB0b3RhbCk7XFxubmV0L2lwdjYvcm91dGUuYy00ODU3LVxcbm5ldC9pcHY2L3JvdXRlLmMtNDg1OC1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0ZXIsIFxcdTAwMjZydC1cXHUwMDNlZmliNl9zaWJsaW5ncywgZmliNl9zaWJsaW5ncylcXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ4NTk6XFx0XFx0cnQ2X3VwcGVyX2JvdW5kX3NldChpdGVyLCBcXHUwMDI2d2VpZ2h0LCB0b3RhbCk7XFxubmV0L2lwdjYvcm91dGUuYy00ODYwLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDM6MjQuNjI3MDI1OTg5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4NzM4MTU4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBjb2RlLCBwcmVzZW50ZWQgYXMgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNdWx0aXBhdGggUm91dGluZyBMb2dpYyoqXG5cbk9rYXksIHNvIGBydDZfdXBwZXJfYm91bmRfc2V0YCBpcyBjbGVhcmx5IGEga2V5IGZ1bmN0aW9uLCBhbmQgaXQncyBiZWluZyBjYWxsZWQgYnkgYHJ0Nl9tdWx0aXBhdGhfdXBwZXJfYm91bmRfc2V0YC4gVGhpcyBzdWdnZXN0cyBhIHJlbGF0aW9uc2hpcDsgbGlrZWx5IHRoZSBsYXR0ZXIgZnVuY3Rpb24gbWFuYWdlcyBzb21lIGtpbmQgb2YgbXVsdGlwYXRoIGNvbmZpZ3VyYXRpb24sIGFuZCB1dGlsaXplcyB0aGUgdXBwZXIgYm91bmQgc2V0dGluZyBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgc28gSSdtIGdvaW5nIHRvIHF1aWNrbHkgdHJhY2Ugd2hlcmUgYHJ0Nl9tdWx0aXBhdGhfdXBwZXJfYm91bmRfc2V0YCBpdHNlbGYgaXMgaW52b2tlZC4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGJyb2FkZXIgY29udGV4dCBhbmQgaGVscCBjbGFyaWZ5IHdoeSB0aGlzIHVwcGVyIGJvdW5kIHNldHRpbmcgaXMgbmVjZXNzYXJ5IHdpdGhpbiB0aGUgbXVsdGlwYXRoIHJvdXRpbmcgZnJhbWV3b3JrLiBLbm93aW5nIHRoZSBjYWxsIGNoYWluIGZyb20gdGhlcmUgc2hvdWxkIHByb3ZpZGUgY2xhcml0eSBvbiB0aGUgcHVycG9zZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBhbmQgaG93IHRoZSBib3VuZCBpcyB1dGlsaXplZCBpbiBwcmFjdGljZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc3NSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjAzOjI3LjgxNDQwOTc3NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTY4NzcwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9yb3V0ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L3JvdXRlLmM9NDgzOT1zdGF0aWMgdm9pZCBydDZfdXBwZXJfYm91bmRfc2V0KHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBpbnQgKndlaWdodCwgaW50IHRvdGFsKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00ODUwLVxcbm5ldC9pcHY2L3JvdXRlLmM6NDg1MTpzdGF0aWMgdm9pZCBydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50IHRvdGFsKVxcbm5ldC9pcHY2L3JvdXRlLmMtNDg1Mi17XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ4NjI9dm9pZCBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShzdHJ1Y3QgZmliNl9pbmZvICpydClcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNDg4Mi1cXHR0b3RhbCA9IHJ0Nl9tdWx0aXBhdGhfdG90YWxfd2VpZ2h0KGZpcnN0KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ4ODM6XFx0cnQ2X211bHRpcGF0aF91cHBlcl9ib3VuZF9zZXQoZmlyc3QsIHRvdGFsKTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4ODQtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwMjowMzoyNy44NjAxMDIzMTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDE5OTk3NDQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlYCBGdW5jdGlvbiBDYWxsIFBhdGgqKlxuXG5BbHJpZ2h0LCBzbyBgcnQ2X211bHRpcGF0aF9yZWJhbGFuY2VgIGlzIHRoZSBmdW5jdGlvbiBpbml0aWF0aW5nIHRoaXMgcHJvY2Vzcy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCBpdHMgcGxhY2Ugd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbS4gSSBuZWVkIHRvIHRyYWNlIGl0cyBjYWxsIGhpZXJhcmNoeS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggb3RoZXIgZnVuY3Rpb25zIGFyZSByZXNwb25zaWJsZSBmb3IgY2FsbGluZyBgcnQ2X211bHRpcGF0aF9yZWJhbGFuY2VgLiBJZGVudGlmeWluZyB0aGUgY2FsbGVycyB3aWxsIHByb3ZpZGUgY3J1Y2lhbCBjb250ZXh0IOKAkyBpdCdsbCB0ZWxsIG1lIHdoYXQgdHJpZ2dlcnMgdGhlIHJlYmFsYW5jaW5nIGFuZCBpbiB3aGF0IHNpdHVhdGlvbnMgdGhpcyBiZWhhdmlvciBpcyByZWxldmFudC4gVW5kZXJzdGFuZGluZyB0aGUgdHJpZ2dlciBtZWNoYW5pc20gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgcGljdHVyZSBvZiB0aGlzIHN1YnN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI3NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjAzOjMxLjI4MDEwNzYzMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDc3MTE4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydDZfbXVsdGlwYXRoX3JlYmFsYW5jZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9yb3V0ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L3JvdXRlLmM9NDg1MT1zdGF0aWMgdm9pZCBydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50IHRvdGFsKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00ODYxLVxcbm5ldC9pcHY2L3JvdXRlLmM6NDg2Mjp2b2lkIHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHN0cnVjdCBmaWI2X2luZm8gKnJ0KVxcbm5ldC9pcHY2L3JvdXRlLmMtNDg2My17XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ4ODY9c3RhdGljIGludCBmaWI2X2lmdXAoc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00ODk0LVxcdFxcdGZpYjZfdXBkYXRlX3Nlcm51bV91cHRvX3Jvb3QobmV0LCBydCk7XFxubmV0L2lwdjYvcm91dGUuYzo0ODk1OlxcdFxcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHJ0KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4OTYtXFx0fVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz00OTcxPXN0YXRpYyBpbnQgZmliNl9pZmRvd24oc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00OTk4LVxcdFxcdFxcdGZpYjZfdXBkYXRlX3Nlcm51bShuZXQsIHJ0KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ5OTk6XFx0XFx0XFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UocnQpO1xcbm5ldC9pcHY2L3JvdXRlLmMtNTAwMC1cXHRcXHR9XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTUwMDctXFx0XFx0ZmliNl91cGRhdGVfc2VybnVtKG5ldCwgcnQpO1xcbm5ldC9pcHY2L3JvdXRlLmM6NTAwODpcXHRcXHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShydCk7XFxubmV0L2lwdjYvcm91dGUuYy01MDA5LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwMjowMzozMS4zMjQ4ODQxOTZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDk3OTQ2ODU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlYCBFeHBvcnQgU3RhdHVzKipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGlzIGBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZWAgZnVuY3Rpb24gbWVudGlvbmVk4oCmIGhhbmcgb24gYSBzZWMsIGlzIHRoYXQgYWxzbyBleHBvcnRlZD8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGl0cyB2aXNpYmlsaXR5LCB0byBzZWUgaWYgaXQncyBhdmFpbGFibGUgZm9yIG1lIHRvIHVzZSB3aGVyZSBJJ20gZXhwZWN0aW5nIGl0IHRvIGJlLiBNeSBmaXJzdCBwb3J0IG9mIGNhbGwsIGFzIGFsd2F5cywgaXMgdGhlIG9idmlvdXMgcGxhY2UgZm9yIElQdjYgcm91dGluZy1yZWxhdGVkIGZ1bmN0aW9uIHByb3RvdHlwZXM6IEknbSBwcmV0dHkgc3VyZSBpdCB3b3VsZCBiZSBkZWNsYXJlZCBpbiBgaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmhgLiBMZXQgbWUgY2hlY2sgdGhhdCBoZWFkZXIgZmlsZSBhbmQgY29uZmlybS4gSXQncyB0aGUgbW9zdCBsaWtlbHkgc3BvdCwgZ2l2ZW4gdGhlIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTYsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwMjowMzozNS40MjI4MzQyOTNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTM4ODI2ODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnQ2X211bHRpcGF0aF9yZWJhbGFuY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oPTIyNz12b2lkIHJ0Nl9zeW5jX2Rvd25fZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnQpO1xcbmluY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oOjIyODp2b2lkIHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHN0cnVjdCBmaWI2X2luZm8gKmY2aSk7XFxuaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmgtMjI5LVxcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jPTEwODk9c3RhdGljIGludCBmaWI2X2FkZF9ydDJub2RlKHN0cnVjdCBmaWI2X25vZGUgKmZuLCBzdHJ1Y3QgZmliNl9pbmZvICpydCxcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYy0xMjMxLVxcdFxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvaXB2Ni9pcDZfZmliLmM6MTIzMjpcXHRcXHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZSh0ZW1wX3NpYmxpbmcpO1xcbm5ldC9pcHY2L2lwNl9maWIuYy0xMjMzLVxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTEyNzctXFx0XFx0XFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbm5ldC9pcHY2L2lwNl9maWIuYzoxMjc4OlxcdFxcdFxcdFxcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKG5leHRfc2libGluZyk7XFxubmV0L2lwdjYvaXA2X2ZpYi5jLTEyNzktXFx0XFx0XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmM9MTk2OT1zdGF0aWMgdm9pZCBmaWI2X2RlbF9yb3V0ZShzdHJ1Y3QgZmliNl90YWJsZSAqdGFibGUsIHN0cnVjdCBmaWI2X25vZGUgKmZuLFxcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTIwMjAtXFx0XFx0bGlzdF9kZWxfcmN1KFxcdTAwMjZydC1cXHUwMDNlZmliNl9zaWJsaW5ncyk7XFxubmV0L2lwdjYvaXA2X2ZpYi5jOjIwMjE6XFx0XFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UobmV4dF9zaWJsaW5nKTtcXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjAyMi1cXHR9XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ4NTE9c3RhdGljIHZvaWQgcnQ2X211bHRpcGF0aF91cHBlcl9ib3VuZF9zZXQoc3RydWN0IGZpYjZfaW5mbyAqcnQsIGludCB0b3RhbClcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNDg2MS1cXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ4NjI6dm9pZCBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShzdHJ1Y3QgZmliNl9pbmZvICpydClcXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4NjMte1xcbi0tXFxubmV0L2lwdjYvcm91dGUuYz00ODg2PXN0YXRpYyBpbnQgZmliNl9pZnVwKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCB2b2lkICpwX2FyZylcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNDg5NC1cXHRcXHRmaWI2X3VwZGF0ZV9zZXJudW1fdXB0b19yb290KG5ldCwgcnQpO1xcbm5ldC9pcHY2L3JvdXRlLmM6NDg5NTpcXHRcXHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShydCk7XFxubmV0L2lwdjYvcm91dGUuYy00ODk2LVxcdH1cXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NDk3MT1zdGF0aWMgaW50IGZpYjZfaWZkb3duKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCB2b2lkICpwX2FyZylcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNDk5OC1cXHRcXHRcXHRmaWI2X3VwZGF0ZV9zZXJudW0obmV0LCBydCk7XFxubmV0L2lwdjYvcm91dGUuYzo0OTk5OlxcdFxcdFxcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHJ0KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTUwMDAtXFx0XFx0fVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy01MDA3LVxcdFxcdGZpYjZfdXBkYXRlX3Nlcm51bShuZXQsIHJ0KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjUwMDg6XFx0XFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UocnQpO1xcbm5ldC9pcHY2L3JvdXRlLmMtNTAwOS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDM6MzcuMzM2NzI2NTQ2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MDE2NzE3MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIFRoaXMgS2VybmVsIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgZml4IHRoYXQncyBjbGVhcmx5IHRvdWNoaW5nIHNvbWUgY29yZSBJUHY2IHJvdXRpbmcgbG9naWMuIFNwZWNpZmljYWxseSwgdGhpcyBpcyBkb3duIGluIHRoZSB3ZWVkcyB3aXRoIG11bHRpcGF0aCByb3V0aW5nIOKAkyB0aGF0J3MgZGVmaW5pdGVseSB3aGVyZSB0aGUgaW50ZXJlc3Rpbmcgc3R1ZmYgaGFwcGVucy4gTXkgaW1tZWRpYXRlIHRha2Vhd2F5IGlzIHRoYXQgdGhpcyBhZGRyZXNzZXMgYSBkaXZpc2lvbi1ieS16ZXJvIGVycm9yIHdpdGhpbiBgcnQ2X3VwcGVyX2JvdW5kX3NldGAuIFRoZSByb290IGNhdXNlPyBJdCBzZWVtcyB0aGF0IGBydDZfbXVsdGlwYXRoX3RvdGFsX3dlaWdodGAsIHdoZW4gZmVkIGFsbCBkZWFkIHJvdXRlcyBpbiBhIG11bHRpcGF0aCBzY2VuYXJpbywgY2FuIHJldHVybiBhIGB0b3RhbGAgb2YgemVyby4gVGhpcyBpcyBleGFjdGx5IHRoZSBraW5kIG9mIGVkZ2UgY2FzZSB0aGF0J3Mgd29ydGggY2F0Y2hpbmcsIGFuZCBpdCdzIGdvb2QgdGhhdCBpdCdzIGJlaW5nIGFkZHJlc3NlZC5cblxuR2l2ZW4gdGhhdCBpdCdzIGZ1bmN0aW9uYWwgYW5kIHRoZSBwb3RlbnRpYWwgZm9yIG9mZi1ieS1vbmUgZXJyb3JzIGlzIHByZXR0eSBoaWdoIHdoZW4gZGVhbGluZyB3aXRoIHdlaWdodCBjYWxjdWxhdGlvbnMsIHRoaXMgaXMgYWJzb2x1dGVseSBwcmltZSBmdXp6aW5nIG1hdGVyaWFsLiBJIHNob3VsZCBrZWVwIGFuIGV5ZSBvbiBob3cgdGhpcyBwbGF5cyBvdXQgaW4gcHJhY3RpY2UuXG5cbk5vdywgbGV0J3Mgc2VlLCB0aGUgZnVuY3Rpb25zIG9mIGludGVyZXN0IGhlcmUgYXJlOiBgcnQ2X211bHRpcGF0aF9yZWJhbGFuY2VgLCB3aGljaCBpcyBkaXJlY3RseSByZWxhdGVkIHRvIHRoZSBmaXg7IGBmaWI2X2lmdXBgIGFuZCBgZmliNl9pZmRvd25gLCB3aGljaCBtYWtlcyBtZSB0aGluayB0aGlzIG1pZ2h0IGJlIHRyaWdnZXJlZCB3aGVuIGludGVyZmFjZXMgYXJlIGJyb3VnaHQgdXAgb3IgZG93bjsgYW5kIGBmaWI2X2FkZF9ydDJub2RlYCBhbmQgYGZpYjZfZGVsX3JvdXRlYCwgd2hpY2ggYXJlIHJlc3BvbnNpYmxlIGZvciByb3V0ZSBtYW5hZ2VtZW50LiBUaG9zZSBhcmUgaW1wb3J0YW50IGZ1bmN0aW9ucyB0byBrZWVwIGluIG1pbmQgZm9yIHRlc3RpbmcuXG5cbkZpbmFsbHksIHJlZ2FyZGluZyB0aGUgY29uZmlndXJhdGlvbiwgSSdtIGdvaW5nIHRvIHdhbnQgdG8gdmVyaWZ5IHRoYXQgYElQVjZgIGlzIGVuYWJsZWQgb2YgY291cnNlLCBidXQgYWxzbywgSSB0aGluayB0aGVyZSdzIGEgc3Ryb25nIGNoYW5jZSB0aGlzIGlzIHJlbGF0ZWQgdG8gYElQVjZfTVVMVElQTEVfVEFCTEVTYC4gSSdsbCBjcm9zcy1yZWZlcmVuY2UgdGhlIEtjb25maWcgdG8gY29uZmlybS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAwMiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwMjowMzo0Mi4xMzg0MDE0NjhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4Nzk5Mzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIklQVjZfTVVMVElQTEVfVEFCTEVTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvS2NvbmZpZz0yMzI9Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMzYtXFxubmV0L2lwdjYvS2NvbmZpZzoyMzc6Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXFxubmV0L2lwdjYvS2NvbmZpZy0yMzgtXFx0Ym9vbCBcXFwiSVB2NjogTXVsdGlwbGUgUm91dGluZyBUYWJsZXNcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTI0Mz1jb25maWcgSVBWNl9TVUJUUkVFU1xcbm5ldC9pcHY2L0tjb25maWctMjQ0LVxcdGJvb2wgXFxcIklQdjY6IHNvdXJjZSBhZGRyZXNzIGJhc2VkIHJvdXRpbmdcXFwiXFxubmV0L2lwdjYvS2NvbmZpZzoyNDU6XFx0ZGVwZW5kcyBvbiBJUFY2X01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY2L0tjb25maWctMjQ2LVxcdGhlbHBcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9Mjg2PWNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjkwLVxcdHNlbGVjdCBEU1RfQ0FDSEVcXG5uZXQvaXB2Ni9LY29uZmlnOjI5MTpcXHRzZWxlY3QgSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2Ni9LY29uZmlnLTI5Mi1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjAzOjQyLjE5NzIwNzE5MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjQ4NDYwNTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipJbnZlc3RpZ2F0aW5nIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlYCBpcyBjb250cm9sbGVkIGJ5IGFueSBjb25maWd1cmF0aW9uIHNldHRpbmdzLiBUaGlzIGlzbid0IGp1c3QgYSBzaW1wbGUgZmVhdHVyZTsgaXRzIGJlaGF2aW9yIGlzIGxpa2VseSBpbmZsdWVuY2VkIGJ5IHNvbWV0aGluZyB1cHN0cmVhbS4gSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQncyBkZWZpbmVkIGFuZCBob3cgaXQncyBhY3RpdmF0ZWQgb3IgZGVhY3RpdmF0ZWQuIFRoaXMgaXMgYSBjcml0aWNhbCBzdGVwIGJlZm9yZSBhdHRlbXB0aW5nIGFueSBtb2RpZmljYXRpb25zIG9yIGV2ZW4gdHJvdWJsZXNob290aW5nLiBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGFsbCByZWxldmFudCBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCBtb2R1bGVzIHRvIHNlZSBpZiBhbnkgc2V0dGluZ3MgZGlyZWN0bHkgYWZmZWN0IGl0cyBiZWhhdmlvci4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBzY29wZSBpcyBwYXJhbW91bnQuIEknbGwgbmVlZCB0byB0cmFjZSBpdHMgb3JpZ2lucyBhbmQgbG9vayBmb3IgcG90ZW50aWFsIGRlcGVuZGVuY2llcy4gTGV0J3MgZGlnIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODQxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDM6NDYuODQ1NjcwNjUxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzA1MDAzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydDZfbXVsdGlwYXRoX3JlYmFsYW5jZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9yb3V0ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L3JvdXRlLmM9NDg1MT1zdGF0aWMgdm9pZCBydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50IHRvdGFsKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00ODYxLVxcbm5ldC9pcHY2L3JvdXRlLmM6NDg2Mjp2b2lkIHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHN0cnVjdCBmaWI2X2luZm8gKnJ0KVxcbm5ldC9pcHY2L3JvdXRlLmMtNDg2My17XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ4ODY9c3RhdGljIGludCBmaWI2X2lmdXAoc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00ODk0LVxcdFxcdGZpYjZfdXBkYXRlX3Nlcm51bV91cHRvX3Jvb3QobmV0LCBydCk7XFxubmV0L2lwdjYvcm91dGUuYzo0ODk1OlxcdFxcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHJ0KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4OTYtXFx0fVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz00OTcxPXN0YXRpYyBpbnQgZmliNl9pZmRvd24oc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00OTk4LVxcdFxcdFxcdGZpYjZfdXBkYXRlX3Nlcm51bShuZXQsIHJ0KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ5OTk6XFx0XFx0XFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UocnQpO1xcbm5ldC9pcHY2L3JvdXRlLmMtNTAwMC1cXHRcXHR9XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTUwMDctXFx0XFx0ZmliNl91cGRhdGVfc2VybnVtKG5ldCwgcnQpO1xcbm5ldC9pcHY2L3JvdXRlLmM6NTAwODpcXHRcXHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShydCk7XFxubmV0L2lwdjYvcm91dGUuYy01MDA5LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwMjowMzo0Ni44OTg3MjM4MjVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ5NTA5NTUxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSVB2NiBSb3V0aW5nIENvZGUgSW52ZXN0aWdhdGlvbioqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biBzb21ldGhpbmcgcmVsYXRlZCB0byBJUHY2IHJvdXRpbmcuIEhtbSwgdGhlIGluaXRpYWwgZ3V0IGZlZWxpbmcgaXMgdGhhdCBpdCdzIGxpa2VseSB3aXRoaW4gdGhlIGBuZXQvaXB2Ni9yb3V0ZS5jYCBmaWxlLiBUaGF0J3MgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nLiBCdXQsIGJlZm9yZSBJIGRpdmUgZGVlcCBpbnRvIHRoYXQgc3BlY2lmaWMgZmlsZSwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLiBMZXQncyBtYWtlIHN1cmUgdGhlIHJlbGV2YW50IGNvZGUgaXMgYWN0dWFsbHkgKmJlaW5nKiBjb21waWxlZC4gSSdsbCB0YWtlIGEgcXVpY2sgcGVlayBhdCB0aGUgYG5ldC9pcHY2L01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoYXQgdGhlIHJvdXRpbmcgY29kZSBpcyBwcm9wZXJseSBpbnRlZ3JhdGVkIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MuIEdvdHRhIGJlIG1ldGhvZGljYWwg4oCTIG5vIHBvaW50IGluIGNoYXNpbmcgZ2hvc3RzIGlmIHRoZSBjb2RlIGlzbid0IGV2ZW4gcGFydCBvZiB0aGUgY3VycmVudCBidWlsZCFcblxuXG4iLCJJbnB1dFRva2VucyI6NjQ2MywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjAzOjUwLjM5MzgyMjExOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc4NzU4MDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicm91dGUub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZT04PWlwdjYteSA6PVxcdGFmX2luZXQ2Lm8gYW55Y2FzdC5vIGlwNl9vdXRwdXQubyBpcDZfaW5wdXQubyBhZGRyY29uZi5vIFxcXFxcXG5uZXQvaXB2Ni9NYWtlZmlsZS05LVxcdFxcdGFkZHJsYWJlbC5vIFxcXFxcXG5uZXQvaXB2Ni9NYWtlZmlsZToxMDpcXHRcXHRyb3V0ZS5vIGlwNl9maWIubyBpcHY2X3NvY2tnbHVlLm8gbmRpc2MubyB1ZHAubyBcXFxcXFxubmV0L2lwdjYvTWFrZWZpbGUtMTEtXFx0XFx0cmF3Lm8gaWNtcC5vIG1jYXN0Lm8gcmVhc3NlbWJseS5vIHRjcF9pcHY2Lm8gcGluZy5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDM6NTAuNDQxNzAxNTgzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNTU4MTY5MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyBJUHY2IFJvdXRlIFJlYmFsYW5jaW5nKipcblxuQWxyaWdodCwgc28gdGhlIGNsdWUgaGVyZSBpcyB0aGF0IHNvbWV0aGluZydzIGNvbXBpbGVkIHdoZW4gSVB2NiBpcyBlbmFibGVkLiBUaGUgcXVlc3Rpb24gaXMgd2hhdD8gR2l2ZW4gdGhlIGNvbnRleHQsIG15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBpdCdzIGxpa2VseSByZWxhdGVkIHRvIGhvdyB3ZSdyZSBoYW5kbGluZyByb3V0aW5nIG9yIHBhdGggc2VsZWN0aW9uLiBJbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nIG9mIGBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZWAuIFRoYXQncyB0aGUgZnVuY3Rpb24gSSBuZWVkIHRvIGludmVzdGlnYXRlLiBJJ2xsIG5hdmlnYXRlIHRvIGBuZXQvaXB2Ni9yb3V0ZS5jYCDigJMgdGhhdCdzIHRoZSBsaWtlbHkgbG9jYXRpb24gZm9yIHRoaXMga2luZCBvZiBmdW5jdGlvbmFsaXR5IOKAkyBhbmQgZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgSVB2NiByb3V0aW5nIGZyYW1ld29yay4gSSdtIGxvb2tpbmcgZm9yIHRoZSB0cmlnZ2VycywgZGVwZW5kZW5jaWVzLCBhbmQgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGlzIHJlYmFsYW5jaW5nIGlzIGhhcHBlbmluZyB0byBpZGVudGlmeSBpZiBhIHBhcnRpY3VsYXIgbW9kdWxlIGlzIGVuYWJsZWQuIEkga25vdyB0aGlzIGNvZGUgcHJldHR5IHdlbGwsIHNvIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGNsdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODM3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDM6NTQuNDk3NTIxNTc0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNTA5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2Ni9yb3V0ZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ4NjIsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjQ4NjI6XFx0dm9pZCBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShzdHJ1Y3QgZmliNl9pbmZvICpydClcXG40ODYzOlxcdHtcXG40ODY0OlxcdFxcdHN0cnVjdCBmaWI2X2luZm8gKmZpcnN0O1xcbjQ4NjU6XFx0XFx0aW50IHRvdGFsO1xcbjQ4NjY6XFx0XFxuNDg2NzpcXHRcXHQvKiBJbiBjYXNlIHRoZSBlbnRpcmUgbXVsdGlwYXRoIHJvdXRlIHdhcyBtYXJrZWQgZm9yIGZsdXNoaW5nLFxcbjQ4Njg6XFx0XFx0ICogdGhlbiB0aGVyZSBpcyBubyBuZWVkIHRvIHJlYmFsYW5jZSB1cG9uIHRoZSByZW1vdmFsIG9mIGV2ZXJ5XFxuNDg2OTpcXHRcXHQgKiBzaWJsaW5nIHJvdXRlLlxcbjQ4NzA6XFx0XFx0ICovXFxuNDg3MTpcXHRcXHRpZiAoIXJ0LVxcdTAwM2VmaWI2X25zaWJsaW5ncyB8fCBydC1cXHUwMDNlc2hvdWxkX2ZsdXNoKVxcbjQ4NzI6XFx0XFx0XFx0cmV0dXJuO1xcbjQ4NzM6XFx0XFxuNDg3NDpcXHRcXHQvKiBEdXJpbmcgbG9va3VwIHJvdXRlcyBhcmUgZXZhbHVhdGVkIGluIG9yZGVyLCBzbyB3ZSBuZWVkIHRvXFxuNDg3NTpcXHRcXHQgKiBtYWtlIHN1cmUgdXBwZXIgYm91bmRzIGFyZSBhc3NpZ25lZCBmcm9tIHRoZSBmaXJzdCBzaWJsaW5nXFxuNDg3NjpcXHRcXHQgKiBvbndhcmRzLlxcbjQ4Nzc6XFx0XFx0ICovXFxuNDg3ODpcXHRcXHRmaXJzdCA9IHJ0Nl9tdWx0aXBhdGhfZmlyc3Rfc2libGluZyhydCk7XFxuNDg3OTpcXHRcXHRpZiAoV0FSTl9PTl9PTkNFKCFmaXJzdCkpXFxuNDg4MDpcXHRcXHRcXHRyZXR1cm47XFxuNDg4MTpcXHRcXG40ODgyOlxcdFxcdHRvdGFsID0gcnQ2X211bHRpcGF0aF90b3RhbF93ZWlnaHQoZmlyc3QpO1xcbjQ4ODM6XFx0XFx0cnQ2X211bHRpcGF0aF91cHBlcl9ib3VuZF9zZXQoZmlyc3QsIHRvdGFsKTtcXG40ODg0OlxcdH1cXG40ODg1OlxcdFxcbjQ4ODY6XFx0c3RhdGljIGludCBmaWI2X2lmdXAoc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnKVxcbjQ4ODc6XFx0e1xcbjQ4ODg6XFx0XFx0Y29uc3Qgc3RydWN0IGFyZ19uZXRkZXZfZXZlbnQgKmFyZyA9IHBfYXJnO1xcbjQ4ODk6XFx0XFx0c3RydWN0IG5ldCAqbmV0ID0gZGV2X25ldChhcmctXFx1MDAzZWRldik7XFxuNDg5MDpcXHRcXG40ODkxOlxcdFxcdGlmIChydCAhPSBuZXQtXFx1MDAzZWlwdjYuZmliNl9udWxsX2VudHJ5IFxcdTAwMjZcXHUwMDI2ICFydC1cXHUwMDNlbmggXFx1MDAyNlxcdTAwMjZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDM6NTQuNDk3NzQwNTA0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMDE0MTMxODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIElQdjYgTXVsdGlwYXRoIFJvdXRpbmcgRml4KipcblxuT2theSwgc28gSSd2ZSBwaW5wb2ludGVkIHRoZSBmaXguIEl0J3MgaW4gYHJ0Nl91cHBlcl9ib3VuZF9zZXRgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgcnQ2X211bHRpcGF0aF91cHBlcl9ib3VuZF9zZXRgLiBUaGUgaXNzdWUgd2FzIGEgZGl2aXNpb24gYnkgemVybyB0aGF0IHRoaXMgY2hhbmdlIG5vdyBwcmV2ZW50cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgd2l0aGluIElQdjYgbXVsdGlwYXRoIHJvdXRpbmcuIERlZmluaXRlbHkgc29tZXRoaW5nIHdvcnRoIHRocm93aW5nIHNvbWUgZnV6emluZyBhdC5cblxuTm93LCBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHRoZXNlIHN5bWJvbHM6IGBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZWAsIGBmaWI2X2lmdXBgLCBgZmliNl9pZmRvd25gLCBgZmliNl9hZGRfcnQybm9kZWAsIGFuZCBgZmliNl9kZWxfcm91dGVgLiBUaGVzZSBhcmUgbGlrZWx5IHRvIGJlIGhlYXZpbHkgaW52b2x2ZWQgd2l0aCB0aGUgc2FtZSBsb2dpYy4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgdG8gZ2FpbiBhIGZ1bGwgcGljdHVyZSBvZiB0aGUgaW1wYWN0LlxuXG5UaGUgYElQVjZgIGNvbmZpZyBpcyB0aGUgb2J2aW91cyBvbmUsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgc3VidGx5IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBjb3VsZCBpbmZsdWVuY2UgdGhpcyBtdWx0aXBhdGggYmVoYXZpb3IuIEkgd2FudCB0byBkb3VibGUtY2hlY2sgdGhhdCBJJ20gY29uc2lkZXJpbmcgYWxsIHJlbGV2YW50IGFzcGVjdHMgb2YgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU2OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjAzOjU5LjY5OTE1Njk5MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5MjE0MTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9pcDZfZmliLmM9MTA4OT1zdGF0aWMgaW50IGZpYjZfYWRkX3J0Mm5vZGUoc3RydWN0IGZpYjZfbm9kZSAqZm4sIHN0cnVjdCBmaWI2X2luZm8gKnJ0LFxcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTEyMzEtXFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbm5ldC9pcHY2L2lwNl9maWIuYzoxMjMyOlxcdFxcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHRlbXBfc2libGluZyk7XFxubmV0L2lwdjYvaXA2X2ZpYi5jLTEyMzMtXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmMtMTI3Ny1cXHRcXHRcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxubmV0L2lwdjYvaXA2X2ZpYi5jOjEyNzg6XFx0XFx0XFx0XFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UobmV4dF9zaWJsaW5nKTtcXG5uZXQvaXB2Ni9pcDZfZmliLmMtMTI3OS1cXHRcXHRcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYz0xOTY5PXN0YXRpYyB2b2lkIGZpYjZfZGVsX3JvdXRlKHN0cnVjdCBmaWI2X3RhYmxlICp0YWJsZSwgc3RydWN0IGZpYjZfbm9kZSAqZm4sXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjAyMC1cXHRcXHRsaXN0X2RlbF9yY3UoXFx1MDAyNnJ0LVxcdTAwM2VmaWI2X3NpYmxpbmdzKTtcXG5uZXQvaXB2Ni9pcDZfZmliLmM6MjAyMTpcXHRcXHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShuZXh0X3NpYmxpbmcpO1xcbm5ldC9pcHY2L2lwNl9maWIuYy0yMDIyLVxcdH1cXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NDg1MT1zdGF0aWMgdm9pZCBydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50IHRvdGFsKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00ODYxLVxcbm5ldC9pcHY2L3JvdXRlLmM6NDg2Mjp2b2lkIHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHN0cnVjdCBmaWI2X2luZm8gKnJ0KVxcbm5ldC9pcHY2L3JvdXRlLmMtNDg2My17XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ4ODY9c3RhdGljIGludCBmaWI2X2lmdXAoc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00ODk0LVxcdFxcdGZpYjZfdXBkYXRlX3Nlcm51bV91cHRvX3Jvb3QobmV0LCBydCk7XFxubmV0L2lwdjYvcm91dGUuYzo0ODk1OlxcdFxcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHJ0KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4OTYtXFx0fVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz00OTcxPXN0YXRpYyBpbnQgZmliNl9pZmRvd24oc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00OTk4LVxcdFxcdFxcdGZpYjZfdXBkYXRlX3Nlcm51bShuZXQsIHJ0KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ5OTk6XFx0XFx0XFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UocnQpO1xcbm5ldC9pcHY2L3JvdXRlLmMtNTAwMC1cXHRcXHR9XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTUwMDctXFx0XFx0ZmliNl91cGRhdGVfc2VybnVtKG5ldCwgcnQpO1xcbm5ldC9pcHY2L3JvdXRlLmM6NTAwODpcXHRcXHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShydCk7XFxubmV0L2lwdjYvcm91dGUuYy01MDA5LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwMjowMzo1OS45MjgzNzYwOThaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4ODMxODgwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uc2lkZXJpbmcgSVB2NiBNdWx0aXBhdGggUm91dGluZyBDb25maWd1cmF0aW9uKipcblxuSG1tLCBtdWx0aXBhdGggcm91dGluZyBpbiBJUHY2Li4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJcyB0aGVyZSBhbnl0aGluZyBzcGVjaWZpYywgb3IgYW55IG5vdGFibGUgY2hhbmdlcyBzaW5jZSB0aGUgbGFzdCB0aW1lIEkgbG9va2VkPyBMZXQncyBkaXZlIGJhY2sgaW50byB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgbmV0L2lwdjYvS2NvbmZpZ2AuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIG9mIG11bHRpcGF0aCBzdXBwb3J0IG9yIHJlbGF0ZWQgcGFyYW1ldGVycyB0aGF0IEkgbWF5IGhhdmUgb3Zlcmxvb2tlZCBiZWZvcmUuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzcxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDQ6MDMuNzE2Njk4MzU3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjkzNDg1NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTVVMVElQQVRIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjA0OjAzLjc2MzY1MDI1MloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjI5NTc3NjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyB0aGUgSVAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBuZXR3b3JraW5nIGlzc3VlLCBhbmQgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBhIGNvcmUgY29uZmlndXJhdGlvbiBmaWxlOiBgbmV0L2lwdjQvS2NvbmZpZ2AuIEl0J3MgYSBuYXR1cmFsIHN0YXJ0aW5nIHBvaW50IHdoZW4gdHJvdWJsZXNob290aW5nIElQLXJlbGF0ZWQgcHJvYmxlbXMgaW4gdGhlIGtlcm5lbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGVuYWJsZWQsIGRpc2FibGVkLCBhbmQgY29uZmlndXJhYmxlIHJlZ2FyZGluZyBJUHY0LiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHZhcmlvdXMgb3B0aW9ucyBJJ2QgZXhwZWN0IHRvIGZpbmQgZGVmaW5lZCB0aGVyZSAtIHRoaW5ncyBsaWtlIElQIGZyYWdtZW50YXRpb24gaGFuZGxpbmcsIHJvdXRpbmcgdGFibGUgY29uZmlndXJhdGlvbnMsIG5ldHdvcmsgYWRkcmVzcyB0cmFuc2xhdGlvbiAoTkFUKSBzdXBwb3J0LCBhbmQgZmlyZXdhbGwgaW50ZWdyYXRpb24uIEFyZSB0aGUgZXhwZWN0ZWQgZmVhdHVyZXMgY29tcGlsZWQgaW4sIGFuZCBhcmUgdGhleSBjb25maWd1cmVkIGFzIEkgd291bGQgZXhwZWN0LCBmb3IgdGhpcyBzcGVjaWZpYyB1c2UtY2FzZSBhbmQgaGFyZHdhcmUgcGxhdGZvcm0/IEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCBpZiBhbnkgZnVuZGFtZW50YWwgc2V0dGluZ3MgYXJlIGxlYWRpbmcgdG8gdGhlIG9ic2VydmVkIGJlaGF2aW9yLCBvciBpZiBJIHNob3VsZCBmb2N1cyBteSBhdHRlbnRpb24gZWxzZXdoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTU5LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDQ6MDYuOTkzMjMxMTIxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODE4OTAwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNVUxUSVBBVEhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTYzPWNvbmZpZyBJUF9NVUxUSVBMRV9UQUJMRVNcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctNzktXFxubmV0L2lwdjQvS2NvbmZpZzo4MDpjb25maWcgSVBfUk9VVEVfTVVMVElQQVRIXFxubmV0L2lwdjQvS2NvbmZpZy04MS1cXHRib29sIFxcXCJJUDogZXF1YWwgY29zdCBtdWx0aXBhdGhcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjA0OjA3LjA0MTQyNTc5NVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjcwNDQ4NDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKk15IElQdjYgTXVsdGlwYXRoIEludmVzdGlnYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGUgaW5pdGlhbCBhc3N1bXB0aW9uIHdhcyBjb3JyZWN0OiBJUHY2IG11bHRpcGF0aCBpc24ndCBzb21lIHN0YW5kYWxvbmUgdGhpbmcsIGl0J3MgYmFrZWQgaW50byB0aGUgSVB2NiBpbXBsZW1lbnRhdGlvbiBpdHNlbGYuIFRoZSB0ZXJtIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgdGhyZXcgbWUgZm9yIGEgc2Vjb25kLCBidXQgdGhhdCdzIGp1c3QgdGhlIHBvbGljeSByb3V0aW5nIGFzcGVjdCwgYWxsb3dpbmcgZm9yIG11bHRpcGxlIHJvdXRpbmcgdGFibGVzLiBNdWx0aXBhdGgsIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBtdWNoIG1vcmUgc3RyYWlnaHRmb3J3YXJkIOKAkyBpdCdzIGFib3V0IGhhdmluZyBtdWx0aXBsZSByb3V0ZXMgdG8gdGhlICpzYW1lKiBkZXN0aW5hdGlvbi4gQ2xhc3NpYyFcblxuTm93LCB0aGUgaW50ZXJlc3RpbmcgcGFydC4gV2hlcmUncyB0aGlzIGhhbmRsZWQgaW4gdGhlIGtlcm5lbD8gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpcyBgcnQ2X211bHRpcGF0aF9yZWJhbGFuY2VgIHdpdGhpbiBgbmV0L2lwdjYvcm91dGUuY2AuIFRoYXQncyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCBzbyB0byBzcGVhay5cblxuVGhlIGNyaXRpY2FsIHRoaW5nIG5vdyBpcyB0byBzZWUgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSwgc28gSSBjYW4gc2VlIHdoYXQgdHJpZ2dlcnMgdGhlIHJlYmFsYW5jaW5nLiBJdCBsb29rcyBsaWtlIGl0IGlzIHRyaWdnZXJlZCBieSBgZmliNl9pZnVwYCwgYGZpYjZfaWZkb3duYCwgYGZpYjZfYWRkX3J0Mm5vZGVgLCBhbmQgYGZpYjZfZGVsX3JvdXRlYC4gUGVyZmVjdC4gVGhvc2UgYXJlIGV4Y2VsbGVudCBmb2N1cyBzeW1ib2xzOyB0aGV5IGNvdmVyIGludGVyZmFjZSBzdGF0ZSBjaGFuZ2VzIGFuZCByb3V0ZSBhZGRpdGlvbnMvZGVsZXRpb25zLCB3aGljaCBhcmUgcHJlY2lzZWx5IHRoZSBldmVudHMgdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBhIG11bHRpcGF0aCByb3V0ZSByZS1ldmFsdWF0aW9uLiBUaGF0IHRlbGxzIG1lIGEgbG90IGFib3V0IHRoZSBkeW5hbWljcyBvZiB0aGUgc3lzdGVtLlxuXG5Pa2F5LCBJJ3ZlIGdvdCBhIGdvb2QgaGFuZGxlIG9uIHRoaW5ncyBub3cuIEknbGwgc2V0IHVwIHRoZSByZXN1bHRzIGJhc2VkIG9uIHRoaXMga25vd2xlZGdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MjcwLCJPdXRwdXRUb2tlbnMiOjEyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwMjowNDoxMy43MTE4NzY0OTVaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjU2MDYxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlXCIsXG4gICAgXCJmaWI2X2lmdXBcIixcbiAgICBcImZpYjZfaWZkb3duXCIsXG4gICAgXCJmaWI2X2FkZF9ydDJub2RlXCIsXG4gICAgXCJmaWI2X2RlbF9yb3V0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZGl2aXNpb24gYnkgemVybyBpbiBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgd2hlbiBgdG90YWxgIGlzIDAuIFRoaXMgaGFwcGVucyBkdXJpbmcgSVB2NiBtdWx0aXBhdGggcm91dGUgcmViYWxhbmNpbmcsIHdoaWNoIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnQ2X211bHRpcGF0aF9yZWJhbGFuY2VcIixcbiAgICBcImZpYjZfaWZ1cFwiLFxuICAgIFwiZmliNl9pZmRvd25cIixcbiAgICBcImZpYjZfYWRkX3J0Mm5vZGVcIixcbiAgICBcImZpYjZfZGVsX3JvdXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBkaXZpc2lvbiBieSB6ZXJvIGluIGBydDZfdXBwZXJfYm91bmRfc2V0YCB3aGVuIGB0b3RhbGAgaXMgMC4gVGhpcyBoYXBwZW5zIGR1cmluZyBJUHY2IG11bHRpcGF0aCByb3V0ZSByZWJhbGFuY2luZywgd2hpY2ggaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwMjowNDoxMy43ODg0NDQ0MTdaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwODE0NzkzNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwMjowNDoxMy43ODg5NTYwNjdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTA4MDk2Mjg1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgZGl2aWRlLWJ5LXplcm8gYnVnIGluIGBydDZfdXBwZXJfYm91bmRfc2V0YCBieSBjaGVja2luZyBpZiBgdG90YWxgIGlzIG5vbi16ZXJvIGJlZm9yZSBwZXJmb3JtaW5nIHRoZSBkaXZpc2lvbi4gVGhpcyBkb2VzIG5vdCBpbnZvbHZlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgc3RydWN0dXJlIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGUgYnVnIGl0IGZpeGVzIChkaXZpZGUtYnktemVybykgd291bGQgY2F1c2UgYSBrZXJuZWwgcGFuaWMgb3IgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyYzRmMzNjOWU1NzlhNzg1ZDI4MDEyZjUxMWM0Njg0NTk4OWMxOTljXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDI6MDM6MTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yb3V0ZS5jIGIvbmV0L2lwdjYvcm91dGUuY1xuaW5kZXggNTk2OGNlNWFkMTUwOC4uNjg5MjRjZmY5MjA1NSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3JvdXRlLmNcbisrKyBiL25ldC9pcHY2L3JvdXRlLmNcbkBAIC00ODQwLDcgKzQ4NDAsNyBAQCBzdGF0aWMgdm9pZCBydDZfdXBwZXJfYm91bmRfc2V0KHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBpbnQgKndlaWdodCwgaW50IHRvdGFsKVxuIHtcbiBcdGludCB1cHBlcl9ib3VuZCA9IC0xO1xuIFxuLVx0aWYgKCFydDZfaXNfZGVhZChydCkpIHtcbitcdGlmICh0b3RhbCBcdTAwMjZcdTAwMjYgIXJ0Nl9pc19kZWFkKHJ0KSkge1xuIFx0XHQqd2VpZ2h0ICs9IHJ0LVx1MDAzZWZpYjZfbmgtXHUwMDNlZmliX25oX3dlaWdodDtcbiBcdFx0dXBwZXJfYm91bmQgPSBESVZfUk9VTkRfQ0xPU0VTVF9VTEwoKHU2NCkgKCp3ZWlnaHQpIFx1MDAzY1x1MDAzYyAzMSxcbiBcdFx0XHRcdFx0XHQgICAgdG90YWwpIC0gMTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjA0OjEzLjc4ODk1OTc0N1oiLCJTZXEiOjI5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzI5MzczNjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUHJvcG9zZWQgUm91dGUuYyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHJ0Nl91cHBlcl9ib3VuZF9zZXRgIGluIGBuZXQvaXB2Ni9yb3V0ZS5jYC4gVGhlIGNvcmUgY2hhbmdlIGlzIGEgc2ltcGxlIGNvbmRpdGlvbmFsOiBhZGRpbmcgYSBgdG90YWxgIGNoZWNrLCBzcGVjaWZpY2FsbHkgYGlmICh0b3RhbCBcdTAwMjZcdTAwMjYgIXJ0Nl9pc19kZWFkKHJ0KSlgIHdoZXJlIHByZXZpb3VzbHkgaXQgd2FzIGp1c3QgYGlmICghcnQ2X2lzX2RlYWQocnQpKWAuICBUaGUgaW50ZW50IGhlcmUgaXMgY2xlYXI6IGl0J3MgYSBkZWZlbnNpdmUgbWVhc3VyZSB0byBwcmV2ZW50IGEgZGl2aWRlLWJ5LXplcm8gZXJyb3Igd2l0aGluIHRoYXQgYERJVl9ST1VORF9DTE9TRVNUX1VMTGAgbWFjcm8gd2hlbiBgdG90YWxgIGlzIHplcm8uIFRoYXQncyBhIGNsYXNzaWMgYW5kIGNvbXBsZXRlbHkgdW5kZXJzdGFuZGFibGUgYnVnIGZpeC5cblxuTm93LCBteSBpbml0aWFsIGNvbmNlcm4sIGFzIGl0IGFsd2F5cyBpcyB3aGVuIHNlZWluZyB0aGVzZSB0eXBlcyBvZiBwYXRjaGVzLCBpcyB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgZXhwb3N1cmUuIExldCdzIHNlZS4uLiAgSXQgYXBwZWFycyB0aGlzIHBhdGNoICpvbmx5KiBpbnRyb2R1Y2VzIHRoZSBjaGVjayBmb3IgYHRvdGFsYCBiZWluZyBub24temVyby4gVGhlIGNvZGUgcGF0aCB0aGF0J3MgcHJvYmxlbWF0aWMgaXMgdGhlIGRpdmlkZS4gQWRkaW5nIHRoYXQgY2hlY2sgaXMgZnVuZGFtZW50YWxseSBhIGdvb2QgdGhpbmcsIGEgc2FuaXR5IGNoZWNrLiBTaW5jZSBpdCdzIHNpbXBseSBhIGd1YXJkIGFnYWluc3QgYSBkaXZpZGUtYnktemVybywgSSdtIGhpZ2hseSBjb25maWRlbnQgdGhhdCB0aGlzIGRvZXNuJ3QgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMuICBEaXZpZGUtYnktemVybyBlcnJvcnMgYXJlIHVzdWFsbHkgY2F1Z2h0IGJ5IHRoZSBjb21waWxlciwgdGhlIGtlcm5lbCdzIGJ1aWx0LWluIGJ1ZyBjaGVja2Vycywgb3Igd29yc2UsIHRoZXkgY2F1c2UgYSBrZXJuZWwgcGFuaWMsIHNvIGl0J3MgZ29vZCB0byBiZSBwcm9hY3RpdmUuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBsZXQgbWUgcXVpY2tseSByZXJlYWQgdGhlIHJlbGV2YW50IHBhcnRzIG9mIHRoZSBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgZnVuY3Rpb24gaXRzZWxmLCBqdXN0IHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMTEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwMjowNDoxOS4xMTgzMzcyMDFaIiwiU2VxIjozMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3Mzg0NDcxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydDZfdXBwZXJfYm91bmRfc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L3JvdXRlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvcm91dGUuYz00ODIzPXN0YXRpYyBpbnQgcnQ2X211bHRpcGF0aF90b3RhbF93ZWlnaHQoY29uc3Qgc3RydWN0IGZpYjZfaW5mbyAqcnQpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4MzgtXFxubmV0L2lwdjYvcm91dGUuYzo0ODM5OnN0YXRpYyB2b2lkIHJ0Nl91cHBlcl9ib3VuZF9zZXQoc3RydWN0IGZpYjZfaW5mbyAqcnQsIGludCAqd2VpZ2h0LCBpbnQgdG90YWwpXFxubmV0L2lwdjYvcm91dGUuYy00ODQwLXtcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NDg1MT1zdGF0aWMgdm9pZCBydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50IHRvdGFsKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00ODU1LVxcbm5ldC9pcHY2L3JvdXRlLmM6NDg1NjpcXHRydDZfdXBwZXJfYm91bmRfc2V0KHJ0LCBcXHUwMDI2d2VpZ2h0LCB0b3RhbCk7XFxubmV0L2lwdjYvcm91dGUuYy00ODU3LVxcbm5ldC9pcHY2L3JvdXRlLmMtNDg1OC1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0ZXIsIFxcdTAwMjZydC1cXHUwMDNlZmliNl9zaWJsaW5ncywgZmliNl9zaWJsaW5ncylcXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ4NTk6XFx0XFx0cnQ2X3VwcGVyX2JvdW5kX3NldChpdGVyLCBcXHUwMDI2d2VpZ2h0LCB0b3RhbCk7XFxubmV0L2lwdjYvcm91dGUuYy00ODYwLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDQ6MTkuMjkyMTg4NzMyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1Nzc3MTAxMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkhhbmRsaW5nIHRoZSBQb3RlbnRpYWwgZm9yIFplcm8gRGl2aXNpb24qKlxuXG5BbHJpZ2h0LCB0aGlzIGFkanVzdG1lbnQgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gTXkgcHJpbWFyeSBjb25jZXJuIGhlcmUgaXMgcHJldmVudGluZyBhIGRpdmlzaW9uIGJ5IHplcm8gZXJyb3Ig4oCTIGEgY2xhc3NpYywgZWFzaWx5IGF2b2lkYWJsZSBwaXRmYWxsLiBUaGVyZSdzIG5vIGZhbmN5IG1lbW9yeSBpbml0aWFsaXphdGlvbiBnb2luZyBvbiB0aGF0IEkgbmVlZCB0byB3b3JyeSBhYm91dC4gVGhpcyBpcyBhIGNsZWFuLCB0YXJnZXRlZCBjaGFuZ2UuIEFzIHN1Y2gsIEknbSBjb25maWRlbnQgaW4gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAgZm9yIHRoaXMgcmV2aXNpb24uIE5vIGZ1cnRoZXIgY2hlY2tzIG9yIGluc3RydW1lbnRhdGlvbiBhcmUgcmVxdWlyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4OTMsIk91dHB1dFRva2VucyI6MTE1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDQ6MjIuODY5OTAxNjc5WiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkaXZpZGUtYnktemVybyBidWcgaW4gYHJ0Nl91cHBlcl9ib3VuZF9zZXRgIGJ5IGNoZWNraW5nIGlmIGB0b3RhbGAgaXMgbm9uLXplcm8gYmVmb3JlIHBlcmZvcm1pbmcgdGhlIGRpdmlzaW9uLiBUaGlzIGRvZXMgbm90IGludm9sdmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBzdHJ1Y3R1cmUgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZSBidWcgaXQgZml4ZXMgKGRpdmlkZS1ieS16ZXJvKSB3b3VsZCBjYXVzZSBhIGtlcm5lbCBwYW5pYyBvciBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRpdmlkZS1ieS16ZXJvIGJ1ZyBpbiBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgYnkgY2hlY2tpbmcgaWYgYHRvdGFsYCBpcyBub24temVybyBiZWZvcmUgcGVyZm9ybWluZyB0aGUgZGl2aXNpb24uIFRoaXMgZG9lcyBub3QgaW52b2x2ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHN0cnVjdHVyZSBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlIGJ1ZyBpdCBmaXhlcyAoZGl2aWRlLWJ5LXplcm8pIHdvdWxkIGNhdXNlIGEga2VybmVsIHBhbmljIG9yIGJlIGNhdWdodCBieSBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzc9gf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-17 01:49:13 +0000 UTC FinishedAt: 2026-08-17 02:04:24 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6" ], "series_id": "8f3c8bda-bb71-49b5-bc20-a24f59d39f8f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rt6_multipath_rebalance", "fib6_ifup", "fib6_ifdown", "fib6_add_rt2node", "fib6_del_route" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE3IDAyOjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydDZfbXVsdGlwYXRoX3JlYmFsYW5jZSYjMzQ7LAogICAgJiMzNDtmaWI2X2lmdXAmIzM0OywKICAgICYjMzQ7ZmliNl9pZmRvd24mIzM0OywKICAgICYjMzQ7ZmliNl9hZGRfcnQybm9kZSYjMzQ7LAogICAgJiMzNDtmaWI2X2RlbF9yb3V0ZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRpdmlkZS1ieS16ZXJvIGJ1ZyBpbiBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgYnkgY2hlY2tpbmcgaWYgYHRvdGFsYCBpcyBub24temVybyBiZWZvcmUgcGVyZm9ybWluZyB0aGUgZGl2aXNpb24uIFRoaXMgZG9lcyBub3QgaW52b2x2ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHN0cnVjdHVyZSBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlIGJ1ZyBpdCBmaXhlcyAoZGl2aWRlLWJ5LXplcm8pIHdvdWxkIGNhdXNlIGEga2VybmVsIHBhbmljIG9yIGJlIGNhdWdodCBieSBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZGl2aXNpb24gYnkgemVybyBpbiBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgd2hlbiBgdG90YWxgIGlzIDAuIFRoaXMgaGFwcGVucyBkdXJpbmcgSVB2NiBtdWx0aXBhdGggcm91dGUgcmViYWxhbmNpbmcsIHdoaWNoIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJjNGYzM2M5ZTU3OWE3ODVkMjgwMTJmNTExYzQ2ODQ1OTg5YzE5OWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxNyAwMjowMzoxOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yb3V0ZS5jIGIvbmV0L2lwdjYvcm91dGUuY1xuaW5kZXggNTk2OGNlNWFkMTUwOC4uNjg5MjRjZmY5MjA1NSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3JvdXRlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L3JvdXRlLmNcbkBAIC00ODQwLDcgJiM0Mzs0ODQwLDcgQEAgc3RhdGljIHZvaWQgcnQ2X3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50ICp3ZWlnaHQsIGludCB0b3RhbClcbiB7XG4gXHRpbnQgdXBwZXJfYm91bmQgPSAtMTtcbiBcbi1cdGlmICghcnQ2X2lzX2RlYWQocnQpKSB7XG4mIzQzO1x0aWYgKHRvdGFsIFx1MDAyNlx1MDAyNiAhcnQ2X2lzX2RlYWQocnQpKSB7XG4gXHRcdCp3ZWlnaHQgJiM0Mzs9IHJ0LVx1MDAzZWZpYjZfbmgtXHUwMDNlZmliX25oX3dlaWdodDtcbiBcdFx0dXBwZXJfYm91bmQgPSBESVZfUk9VTkRfQ0xPU0VTVF9VTEwoKHU2NCkgKCp3ZWlnaHQpIFx1MDAzY1x1MDAzYyAzMSxcbiBcdFx0XHRcdFx0XHQgICAgdG90YWwpIC0gMTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0Nl9tdWx0aXBhdGhfcmViYWxhbmNlJiMzNDssCiAgICAmIzM0O2ZpYjZfaWZ1cCYjMzQ7LAogICAgJiMzNDtmaWI2X2lmZG93biYjMzQ7LAogICAgJiMzNDtmaWI2X2FkZF9ydDJub2RlJiMzNDssCiAgICAmIzM0O2ZpYjZfZGVsX3JvdXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZGl2aXNpb24gYnkgemVybyBpbiBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgd2hlbiBgdG90YWxgIGlzIDAuIFRoaXMgaGFwcGVucyBkdXJpbmcgSVB2NiBtdWx0aXBhdGggcm91dGUgcmViYWxhbmNpbmcsIHdoaWNoIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJjNGYzM2M5ZTU3OWE3ODVkMjgwMTJmNTExYzQ2ODQ1OTg5YzE5OWMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxNyAwMjowMzoxOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3JvdXRlLmMgYi9uZXQvaXB2Ni9yb3V0ZS5jCmluZGV4IDU5NjhjZTVhZDE1MDguLjY4OTI0Y2ZmOTIwNTUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3JvdXRlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvcm91dGUuYwpAQCAtNDg0MCw3ICYjNDM7NDg0MCw3IEBAIHN0YXRpYyB2b2lkIHJ0Nl91cHBlcl9ib3VuZF9zZXQoc3RydWN0IGZpYjZfaW5mbyAqcnQsIGludCAqd2VpZ2h0LCBpbnQgdG90YWwpCiB7CiAJaW50IHVwcGVyX2JvdW5kID0gLTE7CiAKLQlpZiAoIXJ0Nl9pc19kZWFkKHJ0KSkgewomIzQzOwlpZiAodG90YWwgJmFtcDsmYW1wOyAhcnQ2X2lzX2RlYWQocnQpKSB7CiAJCSp3ZWlnaHQgJiM0Mzs9IHJ0LSZndDtmaWI2X25oLSZndDtmaWJfbmhfd2VpZ2h0OwogCQl1cHBlcl9ib3VuZCA9IERJVl9ST1VORF9DTE9TRVNUX1VMTCgodTY0KSAoKndlaWdodCkgJmx0OyZsdDsgMzEsCiAJCQkJCQkgICAgdG90YWwpIC0gMTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDI6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxNAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElQdjYgUm91dGluZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9pcHY2L3JvdXRlLmNgLiBJdCYjMzk7cyBhIGZhaXJseSBzdHJhaWdodGZvcndhcmQgbW9kaWZpY2F0aW9uIHRvIHRoZSBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgZnVuY3Rpb24uIFRoZSBjaGFuZ2UgaXMgc2ltcGxlLCByZWFsbHk6IHRoZXkmIzM5O3ZlIGFkZGVkIGEgY2hlY2sgZm9yIGB0b3RhbGAgYmVmb3JlIHRoZSBjYWxsIHRvIGBydDZfaXNfZGVhZChydClgLiBUaGUgb3JpZ2luYWwgY29kZSwgYXBwYXJlbnRseSwgZGlkbiYjMzk7dCBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYHRvdGFsYCBjb3VsZCBiZSB6ZXJvLgoKTGV0IG1lIHNlZeKApiByaWdodCwgSSBzZWUgaXQgbm93LiBUaGUgcHJvYmxlbSBpcyBpbiB0aGUgbGluZSBpbnZvbHZpbmcgdGhlIGRpdmlzaW9uIGBESVZfUk9VTkRfQ0xPU0VTVF9VTEwoKHU2NCkgKCp3ZWlnaHQpICZsdDsmbHQ7IDMxLCB0b3RhbCkgLSAxO2AuIEEgZGl2aXNpb24gYnkgemVybyB0aGVyZSB3b3VsZCBjbGVhcmx5IGJlIGEgbWFqb3IgaXNzdWUsIHNvIHRoZSBwYXRjaCBpcyBjb3JyZWN0bHkgYWRkcmVzc2luZyB0aGlzIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LiBBZGRpbmcgYHRvdGFsICZhbXA7JmFtcDtgIHNlZW1zIGxpa2UgYSBjbGVhbiBhbmQgZWZmaWNpZW50IGZpeCB0byBwcmV2ZW50IHRoYXQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LCBzbyBsZXQgbWUgcHVsbCB1cCB0aGUgc291cmNlIGZvciBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgaW4gYG5ldC9pcHY2L3JvdXRlLmNgIHRvIHNlZSBob3cgYHRvdGFsYCBpcyB1c2VkIGFuZCB3aHkgaXQgbWlnaHQgYmUgemVybyBpbiB0aGUgZmlyc3QgcGxhY2UuIFRoaXMgcGF0Y2ggbG9va3MgZ29vZCwgYnV0IEkgYWx3YXlzIHdhbnQgdG8gZnVsbHkgY29tcHJlaGVuZCB0aGUgaW1wbGljYXRpb25zIG9mIGV2ZXJ5IGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydDZfdXBwZXJfYm91bmRfc2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvcm91dGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jPTQ4MjM9c3RhdGljIGludCBydDZfbXVsdGlwYXRoX3RvdGFsX3dlaWdodChjb25zdCBzdHJ1Y3QgZmliNl9pbmZvICpydClcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4MzgtXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ4Mzk6c3RhdGljIHZvaWQgcnQ2X3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50ICp3ZWlnaHQsIGludCB0b3RhbClcbm5ldC9pcHY2L3JvdXRlLmMtNDg0MC17XG4tLVxubmV0L2lwdjYvcm91dGUuYz00ODUxPXN0YXRpYyB2b2lkIHJ0Nl9tdWx0aXBhdGhfdXBwZXJfYm91bmRfc2V0KHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBpbnQgdG90YWwpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00ODU1LVxubmV0L2lwdjYvcm91dGUuYzo0ODU2Olx0cnQ2X3VwcGVyX2JvdW5kX3NldChydCwgXHUwMDI2d2VpZ2h0LCB0b3RhbCk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4NTctXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4NTgtXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0ZXIsIFx1MDAyNnJ0LVx1MDAzZWZpYjZfc2libGluZ3MsIGZpYjZfc2libGluZ3MpXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ4NTk6XHRcdHJ0Nl91cHBlcl9ib3VuZF9zZXQoaXRlciwgXHUwMDI2d2VpZ2h0LCB0b3RhbCk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4NjAtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDAyOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NzUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgY29kZSwgcHJlc2VudGVkIGFzIG15IGludGVybmFsIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE11bHRpcGF0aCBSb3V0aW5nIExvZ2ljKioKCk9rYXksIHNvIGBydDZfdXBwZXJfYm91bmRfc2V0YCBpcyBjbGVhcmx5IGEga2V5IGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgYmVpbmcgY2FsbGVkIGJ5IGBydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldGAuIFRoaXMgc3VnZ2VzdHMgYSByZWxhdGlvbnNoaXA7IGxpa2VseSB0aGUgbGF0dGVyIGZ1bmN0aW9uIG1hbmFnZXMgc29tZSBraW5kIG9mIG11bHRpcGF0aCBjb25maWd1cmF0aW9uLCBhbmQgdXRpbGl6ZXMgdGhlIHVwcGVyIGJvdW5kIHNldHRpbmcgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSB0cmFjZSB3aGVyZSBgcnQ2X211bHRpcGF0aF91cHBlcl9ib3VuZF9zZXRgIGl0c2VsZiBpcyBpbnZva2VkLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgYnJvYWRlciBjb250ZXh0IGFuZCBoZWxwIGNsYXJpZnkgd2h5IHRoaXMgdXBwZXIgYm91bmQgc2V0dGluZyBpcyBuZWNlc3Nhcnkgd2l0aGluIHRoZSBtdWx0aXBhdGggcm91dGluZyBmcmFtZXdvcmsuIEtub3dpbmcgdGhlIGNhbGwgY2hhaW4gZnJvbSB0aGVyZSBzaG91bGQgcHJvdmlkZSBjbGFyaXR5IG9uIHRoZSBwdXJwb3NlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGFuZCBob3cgdGhlIGJvdW5kIGlzIHV0aWxpemVkIGluIHByYWN0aWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDAyOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0Nl9tdWx0aXBhdGhfdXBwZXJfYm91bmRfc2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvcm91dGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jPTQ4Mzk9c3RhdGljIHZvaWQgcnQ2X3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50ICp3ZWlnaHQsIGludCB0b3RhbClcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4NTAtXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ4NTE6c3RhdGljIHZvaWQgcnQ2X211bHRpcGF0aF91cHBlcl9ib3VuZF9zZXQoc3RydWN0IGZpYjZfaW5mbyAqcnQsIGludCB0b3RhbClcbm5ldC9pcHY2L3JvdXRlLmMtNDg1Mi17XG4tLVxubmV0L2lwdjYvcm91dGUuYz00ODYyPXZvaWQgcnQ2X211bHRpcGF0aF9yZWJhbGFuY2Uoc3RydWN0IGZpYjZfaW5mbyAqcnQpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00ODgyLVx0dG90YWwgPSBydDZfbXVsdGlwYXRoX3RvdGFsX3dlaWdodChmaXJzdCk7XG5uZXQvaXB2Ni9yb3V0ZS5jOjQ4ODM6XHRydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldChmaXJzdCwgdG90YWwpO1xubmV0L2lwdjYvcm91dGUuYy00ODg0LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjc2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgcnQ2X211bHRpcGF0aF9yZWJhbGFuY2VgIEZ1bmN0aW9uIENhbGwgUGF0aCoqCgpBbHJpZ2h0LCBzbyBgcnQ2X211bHRpcGF0aF9yZWJhbGFuY2VgIGlzIHRoZSBmdW5jdGlvbiBpbml0aWF0aW5nIHRoaXMgcHJvY2Vzcy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCBpdHMgcGxhY2Ugd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbS4gSSBuZWVkIHRvIHRyYWNlIGl0cyBjYWxsIGhpZXJhcmNoeS4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG90aGVyIGZ1bmN0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgYHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlYC4gSWRlbnRpZnlpbmcgdGhlIGNhbGxlcnMgd2lsbCBwcm92aWRlIGNydWNpYWwgY29udGV4dCDigJMgaXQmIzM5O2xsIHRlbGwgbWUgd2hhdCB0cmlnZ2VycyB0aGUgcmViYWxhbmNpbmcgYW5kIGluIHdoYXQgc2l0dWF0aW9ucyB0aGlzIGJlaGF2aW9yIGlzIHJlbGV2YW50LiBVbmRlcnN0YW5kaW5nIHRoZSB0cmlnZ2VyIG1lY2hhbmlzbSBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBwaWN0dXJlIG9mIHRoaXMgc3Vic3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDAyOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0Nl9tdWx0aXBhdGhfcmViYWxhbmNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvcm91dGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jPTQ4NTE9c3RhdGljIHZvaWQgcnQ2X211bHRpcGF0aF91cHBlcl9ib3VuZF9zZXQoc3RydWN0IGZpYjZfaW5mbyAqcnQsIGludCB0b3RhbClcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4NjEtXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ4NjI6dm9pZCBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShzdHJ1Y3QgZmliNl9pbmZvICpydClcbm5ldC9pcHY2L3JvdXRlLmMtNDg2My17XG4tLVxubmV0L2lwdjYvcm91dGUuYz00ODg2PXN0YXRpYyBpbnQgZmliNl9pZnVwKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCB2b2lkICpwX2FyZylcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4OTQtXHRcdGZpYjZfdXBkYXRlX3Nlcm51bV91cHRvX3Jvb3QobmV0LCBydCk7XG5uZXQvaXB2Ni9yb3V0ZS5jOjQ4OTU6XHRcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHJ0KTtcbm5ldC9pcHY2L3JvdXRlLmMtNDg5Ni1cdH1cbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ5NzE9c3RhdGljIGludCBmaWI2X2lmZG93bihzdHJ1Y3QgZmliNl9pbmZvICpydCwgdm9pZCAqcF9hcmcpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00OTk4LVx0XHRcdGZpYjZfdXBkYXRlX3Nlcm51bShuZXQsIHJ0KTtcbm5ldC9pcHY2L3JvdXRlLmM6NDk5OTpcdFx0XHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShydCk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTUwMDAtXHRcdH1cbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTUwMDctXHRcdGZpYjZfdXBkYXRlX3Nlcm51bShuZXQsIHJ0KTtcbm5ldC9pcHY2L3JvdXRlLmM6NTAwODpcdFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UocnQpO1xubmV0L2lwdjYvcm91dGUuYy01MDA5LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTE2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZWAgRXhwb3J0IFN0YXR1cyoqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyB0aGlzIGBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZWAgZnVuY3Rpb24gbWVudGlvbmVk4oCmIGhhbmcgb24gYSBzZWMsIGlzIHRoYXQgYWxzbyBleHBvcnRlZD8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGl0cyB2aXNpYmlsaXR5LCB0byBzZWUgaWYgaXQmIzM5O3MgYXZhaWxhYmxlIGZvciBtZSB0byB1c2Ugd2hlcmUgSSYjMzk7bSBleHBlY3RpbmcgaXQgdG8gYmUuIE15IGZpcnN0IHBvcnQgb2YgY2FsbCwgYXMgYWx3YXlzLCBpcyB0aGUgb2J2aW91cyBwbGFjZSBmb3IgSVB2NiByb3V0aW5nLXJlbGF0ZWQgZnVuY3Rpb24gcHJvdG90eXBlczogSSYjMzk7bSBwcmV0dHkgc3VyZSBpdCB3b3VsZCBiZSBkZWNsYXJlZCBpbiBgaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmhgLiBMZXQgbWUgY2hlY2sgdGhhdCBoZWFkZXIgZmlsZSBhbmQgY29uZmlybS4gSXQmIzM5O3MgdGhlIG1vc3QgbGlrZWx5IHNwb3QsIGdpdmVuIHRoZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydDZfbXVsdGlwYXRoX3JlYmFsYW5jZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9pcDZfcm91dGUuaD0yMjc9dm9pZCBydDZfc3luY19kb3duX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGV2ZW50KTtcbmluY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oOjIyODp2b2lkIHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHN0cnVjdCBmaWI2X2luZm8gKmY2aSk7XG5pbmNsdWRlL25ldC9pcDZfcm91dGUuaC0yMjktXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jPTEwODk9c3RhdGljIGludCBmaWI2X2FkZF9ydDJub2RlKHN0cnVjdCBmaWI2X25vZGUgKmZuLCBzdHJ1Y3QgZmliNl9pbmZvICpydCxcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtMTIzMS1cdFx0cmN1X3JlYWRfbG9jaygpO1xubmV0L2lwdjYvaXA2X2ZpYi5jOjEyMzI6XHRcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHRlbXBfc2libGluZyk7XG5uZXQvaXB2Ni9pcDZfZmliLmMtMTIzMy1cdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTEyNzctXHRcdFx0XHRyY3VfcmVhZF9sb2NrKCk7XG5uZXQvaXB2Ni9pcDZfZmliLmM6MTI3ODpcdFx0XHRcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKG5leHRfc2libGluZyk7XG5uZXQvaXB2Ni9pcDZfZmliLmMtMTI3OS1cdFx0XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuLS1cbm5ldC9pcHY2L2lwNl9maWIuYz0xOTY5PXN0YXRpYyB2b2lkIGZpYjZfZGVsX3JvdXRlKHN0cnVjdCBmaWI2X3RhYmxlICp0YWJsZSwgc3RydWN0IGZpYjZfbm9kZSAqZm4sXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTIwMjAtXHRcdGxpc3RfZGVsX3JjdShcdTAwMjZydC1cdTAwM2VmaWI2X3NpYmxpbmdzKTtcbm5ldC9pcHY2L2lwNl9maWIuYzoyMDIxOlx0XHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShuZXh0X3NpYmxpbmcpO1xubmV0L2lwdjYvaXA2X2ZpYi5jLTIwMjItXHR9XG4tLVxubmV0L2lwdjYvcm91dGUuYz00ODUxPXN0YXRpYyB2b2lkIHJ0Nl9tdWx0aXBhdGhfdXBwZXJfYm91bmRfc2V0KHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBpbnQgdG90YWwpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00ODYxLVxubmV0L2lwdjYvcm91dGUuYzo0ODYyOnZvaWQgcnQ2X211bHRpcGF0aF9yZWJhbGFuY2Uoc3RydWN0IGZpYjZfaW5mbyAqcnQpXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4NjMte1xuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NDg4Nj1zdGF0aWMgaW50IGZpYjZfaWZ1cChzdHJ1Y3QgZmliNl9pbmZvICpydCwgdm9pZCAqcF9hcmcpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00ODk0LVx0XHRmaWI2X3VwZGF0ZV9zZXJudW1fdXB0b19yb290KG5ldCwgcnQpO1xubmV0L2lwdjYvcm91dGUuYzo0ODk1Olx0XHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShydCk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4OTYtXHR9XG4tLVxubmV0L2lwdjYvcm91dGUuYz00OTcxPXN0YXRpYyBpbnQgZmliNl9pZmRvd24oc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnKVxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNDk5OC1cdFx0XHRmaWI2X3VwZGF0ZV9zZXJudW0obmV0LCBydCk7XG5uZXQvaXB2Ni9yb3V0ZS5jOjQ5OTk6XHRcdFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UocnQpO1xubmV0L2lwdjYvcm91dGUuYy01MDAwLVx0XHR9XG4tLVxubmV0L2lwdjYvcm91dGUuYy01MDA3LVx0XHRmaWI2X3VwZGF0ZV9zZXJudW0obmV0LCBydCk7XG5uZXQvaXB2Ni9yb3V0ZS5jOjUwMDg6XHRcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHJ0KTtcbm5ldC9pcHY2L3JvdXRlLmMtNTAwOS1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDAyOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMDIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIFRoaXMgS2VybmVsIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBmaXggdGhhdCYjMzk7cyBjbGVhcmx5IHRvdWNoaW5nIHNvbWUgY29yZSBJUHY2IHJvdXRpbmcgbG9naWMuIFNwZWNpZmljYWxseSwgdGhpcyBpcyBkb3duIGluIHRoZSB3ZWVkcyB3aXRoIG11bHRpcGF0aCByb3V0aW5nIOKAkyB0aGF0JiMzOTtzIGRlZmluaXRlbHkgd2hlcmUgdGhlIGludGVyZXN0aW5nIHN0dWZmIGhhcHBlbnMuIE15IGltbWVkaWF0ZSB0YWtlYXdheSBpcyB0aGF0IHRoaXMgYWRkcmVzc2VzIGEgZGl2aXNpb24tYnktemVybyBlcnJvciB3aXRoaW4gYHJ0Nl91cHBlcl9ib3VuZF9zZXRgLiBUaGUgcm9vdCBjYXVzZT8gSXQgc2VlbXMgdGhhdCBgcnQ2X211bHRpcGF0aF90b3RhbF93ZWlnaHRgLCB3aGVuIGZlZCBhbGwgZGVhZCByb3V0ZXMgaW4gYSBtdWx0aXBhdGggc2NlbmFyaW8sIGNhbiByZXR1cm4gYSBgdG90YWxgIG9mIHplcm8uIFRoaXMgaXMgZXhhY3RseSB0aGUga2luZCBvZiBlZGdlIGNhc2UgdGhhdCYjMzk7cyB3b3J0aCBjYXRjaGluZywgYW5kIGl0JiMzOTtzIGdvb2QgdGhhdCBpdCYjMzk7cyBiZWluZyBhZGRyZXNzZWQuCgpHaXZlbiB0aGF0IGl0JiMzOTtzIGZ1bmN0aW9uYWwgYW5kIHRoZSBwb3RlbnRpYWwgZm9yIG9mZi1ieS1vbmUgZXJyb3JzIGlzIHByZXR0eSBoaWdoIHdoZW4gZGVhbGluZyB3aXRoIHdlaWdodCBjYWxjdWxhdGlvbnMsIHRoaXMgaXMgYWJzb2x1dGVseSBwcmltZSBmdXp6aW5nIG1hdGVyaWFsLiBJIHNob3VsZCBrZWVwIGFuIGV5ZSBvbiBob3cgdGhpcyBwbGF5cyBvdXQgaW4gcHJhY3RpY2UuCgpOb3csIGxldCYjMzk7cyBzZWUsIHRoZSBmdW5jdGlvbnMgb2YgaW50ZXJlc3QgaGVyZSBhcmU6IGBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZWAsIHdoaWNoIGlzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIGZpeDsgYGZpYjZfaWZ1cGAgYW5kIGBmaWI2X2lmZG93bmAsIHdoaWNoIG1ha2VzIG1lIHRoaW5rIHRoaXMgbWlnaHQgYmUgdHJpZ2dlcmVkIHdoZW4gaW50ZXJmYWNlcyBhcmUgYnJvdWdodCB1cCBvciBkb3duOyBhbmQgYGZpYjZfYWRkX3J0Mm5vZGVgIGFuZCBgZmliNl9kZWxfcm91dGVgLCB3aGljaCBhcmUgcmVzcG9uc2libGUgZm9yIHJvdXRlIG1hbmFnZW1lbnQuIFRob3NlIGFyZSBpbXBvcnRhbnQgZnVuY3Rpb25zIHRvIGtlZXAgaW4gbWluZCBmb3IgdGVzdGluZy4KCkZpbmFsbHksIHJlZ2FyZGluZyB0aGUgY29uZmlndXJhdGlvbiwgSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIHZlcmlmeSB0aGF0IGBJUFY2YCBpcyBlbmFibGVkIG9mIGNvdXJzZSwgYnV0IGFsc28sIEkgdGhpbmsgdGhlcmUmIzM5O3MgYSBzdHJvbmcgY2hhbmNlIHRoaXMgaXMgcmVsYXRlZCB0byBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLiBJJiMzOTtsbCBjcm9zcy1yZWZlcmVuY2UgdGhlIEtjb25maWcgdG8gY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDI6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SVBWNl9NVUxUSVBMRV9UQUJMRVMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWc9MjMyPWNvbmZpZyBJUFY2X0ZPVV9UVU5ORUxcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTIzNi1cbm5ldC9pcHY2L0tjb25maWc6MjM3OmNvbmZpZyBJUFY2X01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjYvS2NvbmZpZy0yMzgtXHRib29sIFwmIzM0O0lQdjY6IE11bHRpcGxlIFJvdXRpbmcgVGFibGVzXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0yNDM9Y29uZmlnIElQVjZfU1VCVFJFRVNcbm5ldC9pcHY2L0tjb25maWctMjQ0LVx0Ym9vbCBcJiMzNDtJUHY2OiBzb3VyY2UgYWRkcmVzcyBiYXNlZCByb3V0aW5nXCYjMzQ7XG5uZXQvaXB2Ni9LY29uZmlnOjI0NTpcdGRlcGVuZHMgb24gSVBWNl9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L0tjb25maWctMjQ2LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9Mjg2PWNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI5MC1cdHNlbGVjdCBEU1RfQ0FDSEVcbm5ldC9pcHY2L0tjb25maWc6MjkxOlx0c2VsZWN0IElQVjZfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2Ni9LY29uZmlnLTI5Mi1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDI6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg0MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkludmVzdGlnYXRpbmcgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlYCBpcyBjb250cm9sbGVkIGJ5IGFueSBjb25maWd1cmF0aW9uIHNldHRpbmdzLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgc2ltcGxlIGZlYXR1cmU7IGl0cyBiZWhhdmlvciBpcyBsaWtlbHkgaW5mbHVlbmNlZCBieSBzb21ldGhpbmcgdXBzdHJlYW0uIEkgbmVlZCB0byBrbm93IHdoZXJlIGl0JiMzOTtzIGRlZmluZWQgYW5kIGhvdyBpdCYjMzk7cyBhY3RpdmF0ZWQgb3IgZGVhY3RpdmF0ZWQuIFRoaXMgaXMgYSBjcml0aWNhbCBzdGVwIGJlZm9yZSBhdHRlbXB0aW5nIGFueSBtb2RpZmljYXRpb25zIG9yIGV2ZW4gdHJvdWJsZXNob290aW5nLiBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyBhbGwgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgbW9kdWxlcyB0byBzZWUgaWYgYW55IHNldHRpbmdzIGRpcmVjdGx5IGFmZmVjdCBpdHMgYmVoYXZpb3IuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gc2NvcGUgaXMgcGFyYW1vdW50LiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIGl0cyBvcmlnaW5zIGFuZCBsb29rIGZvciBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzLiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydDZfbXVsdGlwYXRoX3JlYmFsYW5jZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L3JvdXRlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvcm91dGUuYz00ODUxPXN0YXRpYyB2b2lkIHJ0Nl9tdWx0aXBhdGhfdXBwZXJfYm91bmRfc2V0KHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBpbnQgdG90YWwpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00ODYxLVxubmV0L2lwdjYvcm91dGUuYzo0ODYyOnZvaWQgcnQ2X211bHRpcGF0aF9yZWJhbGFuY2Uoc3RydWN0IGZpYjZfaW5mbyAqcnQpXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4NjMte1xuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NDg4Nj1zdGF0aWMgaW50IGZpYjZfaWZ1cChzdHJ1Y3QgZmliNl9pbmZvICpydCwgdm9pZCAqcF9hcmcpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00ODk0LVx0XHRmaWI2X3VwZGF0ZV9zZXJudW1fdXB0b19yb290KG5ldCwgcnQpO1xubmV0L2lwdjYvcm91dGUuYzo0ODk1Olx0XHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShydCk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4OTYtXHR9XG4tLVxubmV0L2lwdjYvcm91dGUuYz00OTcxPXN0YXRpYyBpbnQgZmliNl9pZmRvd24oc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnKVxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNDk5OC1cdFx0XHRmaWI2X3VwZGF0ZV9zZXJudW0obmV0LCBydCk7XG5uZXQvaXB2Ni9yb3V0ZS5jOjQ5OTk6XHRcdFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UocnQpO1xubmV0L2lwdjYvcm91dGUuYy01MDAwLVx0XHR9XG4tLVxubmV0L2lwdjYvcm91dGUuYy01MDA3LVx0XHRmaWI2X3VwZGF0ZV9zZXJudW0obmV0LCBydCk7XG5uZXQvaXB2Ni9yb3V0ZS5jOjUwMDg6XHRcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHJ0KTtcbm5ldC9pcHY2L3JvdXRlLmMtNTAwOS1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDAyOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NjMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSVB2NiBSb3V0aW5nIENvZGUgSW52ZXN0aWdhdGlvbioqCgpSaWdodCwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gc29tZXRoaW5nIHJlbGF0ZWQgdG8gSVB2NiByb3V0aW5nLiBIbW0sIHRoZSBpbml0aWFsIGd1dCBmZWVsaW5nIGlzIHRoYXQgaXQmIzM5O3MgbGlrZWx5IHdpdGhpbiB0aGUgYG5ldC9pcHY2L3JvdXRlLmNgIGZpbGUuIFRoYXQmIzM5O3MgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nLiBCdXQsIGJlZm9yZSBJIGRpdmUgZGVlcCBpbnRvIHRoYXQgc3BlY2lmaWMgZmlsZSwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZSByZWxldmFudCBjb2RlIGlzIGFjdHVhbGx5ICpiZWluZyogY29tcGlsZWQuIEkmIzM5O2xsIHRha2UgYSBxdWljayBwZWVrIGF0IHRoZSBgbmV0L2lwdjYvTWFrZWZpbGVgIHRvIGNvbmZpcm0gdGhlIGRlcGVuZGVuY2llcyBhbmQgdGhhdCB0aGUgcm91dGluZyBjb2RlIGlzIHByb3Blcmx5IGludGVncmF0ZWQgaW50byB0aGUgYnVpbGQgcHJvY2Vzcy4gR290dGEgYmUgbWV0aG9kaWNhbCDigJMgbm8gcG9pbnQgaW4gY2hhc2luZyBnaG9zdHMgaWYgdGhlIGNvZGUgaXNuJiMzOTt0IGV2ZW4gcGFydCBvZiB0aGUgY3VycmVudCBidWlsZCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDI6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cm91dGUubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L01ha2VmaWxlPTg9aXB2Ni15IDo9XHRhZl9pbmV0Ni5vIGFueWNhc3QubyBpcDZfb3V0cHV0Lm8gaXA2X2lucHV0Lm8gYWRkcmNvbmYubyBcXFxubmV0L2lwdjYvTWFrZWZpbGUtOS1cdFx0YWRkcmxhYmVsLm8gXFxcbm5ldC9pcHY2L01ha2VmaWxlOjEwOlx0XHRyb3V0ZS5vIGlwNl9maWIubyBpcHY2X3NvY2tnbHVlLm8gbmRpc2MubyB1ZHAubyBcXFxubmV0L2lwdjYvTWFrZWZpbGUtMTEtXHRcdHJhdy5vIGljbXAubyBtY2FzdC5vIHJlYXNzZW1ibHkubyB0Y3BfaXB2Ni5vIHBpbmcubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODM3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIElQdjYgUm91dGUgUmViYWxhbmNpbmcqKgoKQWxyaWdodCwgc28gdGhlIGNsdWUgaGVyZSBpcyB0aGF0IHNvbWV0aGluZyYjMzk7cyBjb21waWxlZCB3aGVuIElQdjYgaXMgZW5hYmxlZC4gVGhlIHF1ZXN0aW9uIGlzIHdoYXQ/IEdpdmVuIHRoZSBjb250ZXh0LCBteSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgaXQmIzM5O3MgbGlrZWx5IHJlbGF0ZWQgdG8gaG93IHdlJiMzOTtyZSBoYW5kbGluZyByb3V0aW5nIG9yIHBhdGggc2VsZWN0aW9uLiBJbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZyBvZiBgcnQ2X211bHRpcGF0aF9yZWJhbGFuY2VgLiBUaGF0JiMzOTtzIHRoZSBmdW5jdGlvbiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUuIEkmIzM5O2xsIG5hdmlnYXRlIHRvIGBuZXQvaXB2Ni9yb3V0ZS5jYCDigJMgdGhhdCYjMzk7cyB0aGUgbGlrZWx5IGxvY2F0aW9uIGZvciB0aGlzIGtpbmQgb2YgZnVuY3Rpb25hbGl0eSDigJMgYW5kIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhlIElQdjYgcm91dGluZyBmcmFtZXdvcmsuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIHRyaWdnZXJzLCBkZXBlbmRlbmNpZXMsIGFuZCBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgcmViYWxhbmNpbmcgaXMgaGFwcGVuaW5nIHRvIGlkZW50aWZ5IGlmIGEgcGFydGljdWxhciBtb2R1bGUgaXMgZW5hYmxlZC4gSSBrbm93IHRoaXMgY29kZSBwcmV0dHkgd2VsbCwgc28gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IGNsdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY2L3JvdXRlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0ODYyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzQ4NjI6XHR2b2lkIHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHN0cnVjdCBmaWI2X2luZm8gKnJ0KVxuNDg2MzpcdHtcbjQ4NjQ6XHRcdHN0cnVjdCBmaWI2X2luZm8gKmZpcnN0O1xuNDg2NTpcdFx0aW50IHRvdGFsO1xuNDg2NjpcdFxuNDg2NzpcdFx0LyogSW4gY2FzZSB0aGUgZW50aXJlIG11bHRpcGF0aCByb3V0ZSB3YXMgbWFya2VkIGZvciBmbHVzaGluZyxcbjQ4Njg6XHRcdCAqIHRoZW4gdGhlcmUgaXMgbm8gbmVlZCB0byByZWJhbGFuY2UgdXBvbiB0aGUgcmVtb3ZhbCBvZiBldmVyeVxuNDg2OTpcdFx0ICogc2libGluZyByb3V0ZS5cbjQ4NzA6XHRcdCAqL1xuNDg3MTpcdFx0aWYgKCFydC1cdTAwM2VmaWI2X25zaWJsaW5ncyB8fCBydC1cdTAwM2VzaG91bGRfZmx1c2gpXG40ODcyOlx0XHRcdHJldHVybjtcbjQ4NzM6XHRcbjQ4NzQ6XHRcdC8qIER1cmluZyBsb29rdXAgcm91dGVzIGFyZSBldmFsdWF0ZWQgaW4gb3JkZXIsIHNvIHdlIG5lZWQgdG9cbjQ4NzU6XHRcdCAqIG1ha2Ugc3VyZSB1cHBlciBib3VuZHMgYXJlIGFzc2lnbmVkIGZyb20gdGhlIGZpcnN0IHNpYmxpbmdcbjQ4NzY6XHRcdCAqIG9ud2FyZHMuXG40ODc3Olx0XHQgKi9cbjQ4Nzg6XHRcdGZpcnN0ID0gcnQ2X211bHRpcGF0aF9maXJzdF9zaWJsaW5nKHJ0KTtcbjQ4Nzk6XHRcdGlmIChXQVJOX09OX09OQ0UoIWZpcnN0KSlcbjQ4ODA6XHRcdFx0cmV0dXJuO1xuNDg4MTpcdFxuNDg4MjpcdFx0dG90YWwgPSBydDZfbXVsdGlwYXRoX3RvdGFsX3dlaWdodChmaXJzdCk7XG40ODgzOlx0XHRydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldChmaXJzdCwgdG90YWwpO1xuNDg4NDpcdH1cbjQ4ODU6XHRcbjQ4ODY6XHRzdGF0aWMgaW50IGZpYjZfaWZ1cChzdHJ1Y3QgZmliNl9pbmZvICpydCwgdm9pZCAqcF9hcmcpXG40ODg3Olx0e1xuNDg4ODpcdFx0Y29uc3Qgc3RydWN0IGFyZ19uZXRkZXZfZXZlbnQgKmFyZyA9IHBfYXJnO1xuNDg4OTpcdFx0c3RydWN0IG5ldCAqbmV0ID0gZGV2X25ldChhcmctXHUwMDNlZGV2KTtcbjQ4OTA6XHRcbjQ4OTE6XHRcdGlmIChydCAhPSBuZXQtXHUwMDNlaXB2Ni5maWI2X251bGxfZW50cnkgXHUwMDI2XHUwMDI2ICFydC1cdTAwM2VuaCBcdTAwMjZcdTAwMjZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDI6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU2OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgSVB2NiBNdWx0aXBhdGggUm91dGluZyBGaXgqKgoKT2theSwgc28gSSYjMzk7dmUgcGlucG9pbnRlZCB0aGUgZml4LiBJdCYjMzk7cyBpbiBgcnQ2X3VwcGVyX2JvdW5kX3NldGAsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldGAuIFRoZSBpc3N1ZSB3YXMgYSBkaXZpc2lvbiBieSB6ZXJvIHRoYXQgdGhpcyBjaGFuZ2Ugbm93IHByZXZlbnRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSB3aXRoaW4gSVB2NiBtdWx0aXBhdGggcm91dGluZy4gRGVmaW5pdGVseSBzb21ldGhpbmcgd29ydGggdGhyb3dpbmcgc29tZSBmdXp6aW5nIGF0LgoKTm93LCBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHRoZXNlIHN5bWJvbHM6IGBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZWAsIGBmaWI2X2lmdXBgLCBgZmliNl9pZmRvd25gLCBgZmliNl9hZGRfcnQybm9kZWAsIGFuZCBgZmliNl9kZWxfcm91dGVgLiBUaGVzZSBhcmUgbGlrZWx5IHRvIGJlIGhlYXZpbHkgaW52b2x2ZWQgd2l0aCB0aGUgc2FtZSBsb2dpYy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGV5IGludGVyYWN0IHdpdGggYHJ0Nl91cHBlcl9ib3VuZF9zZXRgIHRvIGdhaW4gYSBmdWxsIHBpY3R1cmUgb2YgdGhlIGltcGFjdC4KClRoZSBgSVBWNmAgY29uZmlnIGlzIHRoZSBvYnZpb3VzIG9uZSwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgc3VidGx5IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBjb3VsZCBpbmZsdWVuY2UgdGhpcyBtdWx0aXBhdGggYmVoYXZpb3IuIEkgd2FudCB0byBkb3VibGUtY2hlY2sgdGhhdCBJJiMzOTttIGNvbnNpZGVyaW5nIGFsbCByZWxldmFudCBhc3BlY3RzIG9mIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDAyOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0Nl9tdWx0aXBhdGhfcmViYWxhbmNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L2lwNl9maWIuYz0xMDg5PXN0YXRpYyBpbnQgZmliNl9hZGRfcnQybm9kZShzdHJ1Y3QgZmliNl9ub2RlICpmbiwgc3RydWN0IGZpYjZfaW5mbyAqcnQsXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTEyMzEtXHRcdHJjdV9yZWFkX2xvY2soKTtcbm5ldC9pcHY2L2lwNl9maWIuYzoxMjMyOlx0XHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZSh0ZW1wX3NpYmxpbmcpO1xubmV0L2lwdjYvaXA2X2ZpYi5jLTEyMzMtXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuLS1cbm5ldC9pcHY2L2lwNl9maWIuYy0xMjc3LVx0XHRcdFx0cmN1X3JlYWRfbG9jaygpO1xubmV0L2lwdjYvaXA2X2ZpYi5jOjEyNzg6XHRcdFx0XHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShuZXh0X3NpYmxpbmcpO1xubmV0L2lwdjYvaXA2X2ZpYi5jLTEyNzktXHRcdFx0XHRyY3VfcmVhZF91bmxvY2soKTtcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmM9MTk2OT1zdGF0aWMgdm9pZCBmaWI2X2RlbF9yb3V0ZShzdHJ1Y3QgZmliNl90YWJsZSAqdGFibGUsIHN0cnVjdCBmaWI2X25vZGUgKmZuLFxuLS1cbm5ldC9pcHY2L2lwNl9maWIuYy0yMDIwLVx0XHRsaXN0X2RlbF9yY3UoXHUwMDI2cnQtXHUwMDNlZmliNl9zaWJsaW5ncyk7XG5uZXQvaXB2Ni9pcDZfZmliLmM6MjAyMTpcdFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UobmV4dF9zaWJsaW5nKTtcbm5ldC9pcHY2L2lwNl9maWIuYy0yMDIyLVx0fVxuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NDg1MT1zdGF0aWMgdm9pZCBydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50IHRvdGFsKVxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNDg2MS1cbm5ldC9pcHY2L3JvdXRlLmM6NDg2Mjp2b2lkIHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHN0cnVjdCBmaWI2X2luZm8gKnJ0KVxubmV0L2lwdjYvcm91dGUuYy00ODYzLXtcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ4ODY9c3RhdGljIGludCBmaWI2X2lmdXAoc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnKVxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNDg5NC1cdFx0ZmliNl91cGRhdGVfc2VybnVtX3VwdG9fcm9vdChuZXQsIHJ0KTtcbm5ldC9pcHY2L3JvdXRlLmM6NDg5NTpcdFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UocnQpO1xubmV0L2lwdjYvcm91dGUuYy00ODk2LVx0fVxuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NDk3MT1zdGF0aWMgaW50IGZpYjZfaWZkb3duKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCB2b2lkICpwX2FyZylcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ5OTgtXHRcdFx0ZmliNl91cGRhdGVfc2VybnVtKG5ldCwgcnQpO1xubmV0L2lwdjYvcm91dGUuYzo0OTk5Olx0XHRcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHJ0KTtcbm5ldC9pcHY2L3JvdXRlLmMtNTAwMC1cdFx0fVxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNTAwNy1cdFx0ZmliNl91cGRhdGVfc2VybnVtKG5ldCwgcnQpO1xubmV0L2lwdjYvcm91dGUuYzo1MDA4Olx0XHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShydCk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTUwMDktXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzcxCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgSVB2NiBNdWx0aXBhdGggUm91dGluZyBDb25maWd1cmF0aW9uKioKCkhtbSwgbXVsdGlwYXRoIHJvdXRpbmcgaW4gSVB2Ni4uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGtlcm5lbCYjMzk7cyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIElzIHRoZXJlIGFueXRoaW5nIHNwZWNpZmljLCBvciBhbnkgbm90YWJsZSBjaGFuZ2VzIHNpbmNlIHRoZSBsYXN0IHRpbWUgSSBsb29rZWQ/IExldCYjMzk7cyBkaXZlIGJhY2sgaW50byB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgbmV0L2lwdjYvS2NvbmZpZ2AuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBoaW50cyBvZiBtdWx0aXBhdGggc3VwcG9ydCBvciByZWxhdGVkIHBhcmFtZXRlcnMgdGhhdCBJIG1heSBoYXZlIG92ZXJsb29rZWQgYmVmb3JlLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDI6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNVUxUSVBBVEgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDI6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODk1OQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIHRoZSBJUCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgbmV0d29ya2luZyBpc3N1ZSwgYW5kIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYSBjb3JlIGNvbmZpZ3VyYXRpb24gZmlsZTogYG5ldC9pcHY0L0tjb25maWdgLiBJdCYjMzk7cyBhIG5hdHVyYWwgc3RhcnRpbmcgcG9pbnQgd2hlbiB0cm91Ymxlc2hvb3RpbmcgSVAtcmVsYXRlZCBwcm9ibGVtcyBpbiB0aGUga2VybmVsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGVuYWJsZWQsIGRpc2FibGVkLCBhbmQgY29uZmlndXJhYmxlIHJlZ2FyZGluZyBJUHY0LiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSB2YXJpb3VzIG9wdGlvbnMgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCBkZWZpbmVkIHRoZXJlIC0gdGhpbmdzIGxpa2UgSVAgZnJhZ21lbnRhdGlvbiBoYW5kbGluZywgcm91dGluZyB0YWJsZSBjb25maWd1cmF0aW9ucywgbmV0d29yayBhZGRyZXNzIHRyYW5zbGF0aW9uIChOQVQpIHN1cHBvcnQsIGFuZCBmaXJld2FsbCBpbnRlZ3JhdGlvbi4gQXJlIHRoZSBleHBlY3RlZCBmZWF0dXJlcyBjb21waWxlZCBpbiwgYW5kIGFyZSB0aGV5IGNvbmZpZ3VyZWQgYXMgSSB3b3VsZCBleHBlY3QsIGZvciB0aGlzIHNwZWNpZmljIHVzZS1jYXNlIGFuZCBoYXJkd2FyZSBwbGF0Zm9ybT8gSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIGlmIGFueSBmdW5kYW1lbnRhbCBzZXR0aW5ncyBhcmUgbGVhZGluZyB0byB0aGUgb2JzZXJ2ZWQgYmVoYXZpb3IsIG9yIGlmIEkgc2hvdWxkIGZvY3VzIG15IGF0dGVudGlvbiBlbHNld2hlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDAyOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01VTFRJUEFUSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz02Mz1jb25maWcgSVBfTVVMVElQTEVfVEFCTEVTXG4tLVxubmV0L2lwdjQvS2NvbmZpZy03OS1cbm5ldC9pcHY0L0tjb25maWc6ODA6Y29uZmlnIElQX1JPVVRFX01VTFRJUEFUSFxubmV0L2lwdjQvS2NvbmZpZy04MS1cdGJvb2wgXCYjMzQ7SVA6IGVxdWFsIGNvc3QgbXVsdGlwYXRoXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDAyOjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyNzAKCQkJCQkJCW91dHB1dDogMTI1CgkJCQkJCQl0aG91Z2h0czogMTMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZToKCioqTXkgSVB2NiBNdWx0aXBhdGggSW52ZXN0aWdhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgdGhlIGluaXRpYWwgYXNzdW1wdGlvbiB3YXMgY29ycmVjdDogSVB2NiBtdWx0aXBhdGggaXNuJiMzOTt0IHNvbWUgc3RhbmRhbG9uZSB0aGluZywgaXQmIzM5O3MgYmFrZWQgaW50byB0aGUgSVB2NiBpbXBsZW1lbnRhdGlvbiBpdHNlbGYuIFRoZSB0ZXJtIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgdGhyZXcgbWUgZm9yIGEgc2Vjb25kLCBidXQgdGhhdCYjMzk7cyBqdXN0IHRoZSBwb2xpY3kgcm91dGluZyBhc3BlY3QsIGFsbG93aW5nIGZvciBtdWx0aXBsZSByb3V0aW5nIHRhYmxlcy4gTXVsdGlwYXRoLCBvbiB0aGUgb3RoZXIgaGFuZCwgaXMgbXVjaCBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCDigJMgaXQmIzM5O3MgYWJvdXQgaGF2aW5nIG11bHRpcGxlIHJvdXRlcyB0byB0aGUgKnNhbWUqIGRlc3RpbmF0aW9uLiBDbGFzc2ljIQoKTm93LCB0aGUgaW50ZXJlc3RpbmcgcGFydC4gV2hlcmUmIzM5O3MgdGhpcyBoYW5kbGVkIGluIHRoZSBrZXJuZWw/IFRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgaXMgYHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlYCB3aXRoaW4gYG5ldC9pcHY2L3JvdXRlLmNgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLgoKVGhlIGNyaXRpY2FsIHRoaW5nIG5vdyBpcyB0byBzZWUgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSwgc28gSSBjYW4gc2VlIHdoYXQgdHJpZ2dlcnMgdGhlIHJlYmFsYW5jaW5nLiBJdCBsb29rcyBsaWtlIGl0IGlzIHRyaWdnZXJlZCBieSBgZmliNl9pZnVwYCwgYGZpYjZfaWZkb3duYCwgYGZpYjZfYWRkX3J0Mm5vZGVgLCBhbmQgYGZpYjZfZGVsX3JvdXRlYC4gUGVyZmVjdC4gVGhvc2UgYXJlIGV4Y2VsbGVudCBmb2N1cyBzeW1ib2xzOyB0aGV5IGNvdmVyIGludGVyZmFjZSBzdGF0ZSBjaGFuZ2VzIGFuZCByb3V0ZSBhZGRpdGlvbnMvZGVsZXRpb25zLCB3aGljaCBhcmUgcHJlY2lzZWx5IHRoZSBldmVudHMgdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBhIG11bHRpcGF0aCByb3V0ZSByZS1ldmFsdWF0aW9uLiBUaGF0IHRlbGxzIG1lIGEgbG90IGFib3V0IHRoZSBkeW5hbWljcyBvZiB0aGUgc3lzdGVtLgoKT2theSwgSSYjMzk7dmUgZ290IGEgZ29vZCBoYW5kbGUgb24gdGhpbmdzIG5vdy4gSSYjMzk7bGwgc2V0IHVwIHRoZSByZXN1bHRzIGJhc2VkIG9uIHRoaXMga25vd2xlZGdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0Nl9tdWx0aXBhdGhfcmViYWxhbmNlJiMzNDssCiAgICAmIzM0O2ZpYjZfaWZ1cCYjMzQ7LAogICAgJiMzNDtmaWI2X2lmZG93biYjMzQ7LAogICAgJiMzNDtmaWI2X2FkZF9ydDJub2RlJiMzNDssCiAgICAmIzM0O2ZpYjZfZGVsX3JvdXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZGl2aXNpb24gYnkgemVybyBpbiBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgd2hlbiBgdG90YWxgIGlzIDAuIFRoaXMgaGFwcGVucyBkdXJpbmcgSVB2NiBtdWx0aXBhdGggcm91dGUgcmViYWxhbmNpbmcsIHdoaWNoIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0Nl9tdWx0aXBhdGhfcmViYWxhbmNlJiMzNDssCiAgICAmIzM0O2ZpYjZfaWZ1cCYjMzQ7LAogICAgJiMzNDtmaWI2X2lmZG93biYjMzQ7LAogICAgJiMzNDtmaWI2X2FkZF9ydDJub2RlJiMzNDssCiAgICAmIzM0O2ZpYjZfZGVsX3JvdXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZGl2aXNpb24gYnkgemVybyBpbiBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgd2hlbiBgdG90YWxgIGlzIDAuIFRoaXMgaGFwcGVucyBkdXJpbmcgSVB2NiBtdWx0aXBhdGggcm91dGUgcmViYWxhbmNpbmcsIHdoaWNoIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDI6MDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkaXZpZGUtYnktemVybyBidWcgaW4gYHJ0Nl91cHBlcl9ib3VuZF9zZXRgIGJ5IGNoZWNraW5nIGlmIGB0b3RhbGAgaXMgbm9uLXplcm8gYmVmb3JlIHBlcmZvcm1pbmcgdGhlIGRpdmlzaW9uLiBUaGlzIGRvZXMgbm90IGludm9sdmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBzdHJ1Y3R1cmUgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZSBidWcgaXQgZml4ZXMgKGRpdmlkZS1ieS16ZXJvKSB3b3VsZCBjYXVzZSBhIGtlcm5lbCBwYW5pYyBvciBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyYzRmMzNjOWU1NzlhNzg1ZDI4MDEyZjUxMWM0Njg0NTk4OWMxOTljCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMTcgMDI6MDM6MTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yb3V0ZS5jIGIvbmV0L2lwdjYvcm91dGUuYwppbmRleCA1OTY4Y2U1YWQxNTA4Li42ODkyNGNmZjkyMDU1IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9yb3V0ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L3JvdXRlLmMKQEAgLTQ4NDAsNyAmIzQzOzQ4NDAsNyBAQCBzdGF0aWMgdm9pZCBydDZfdXBwZXJfYm91bmRfc2V0KHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBpbnQgKndlaWdodCwgaW50IHRvdGFsKQogewogCWludCB1cHBlcl9ib3VuZCA9IC0xOwogCi0JaWYgKCFydDZfaXNfZGVhZChydCkpIHsKJiM0MzsJaWYgKHRvdGFsICZhbXA7JmFtcDsgIXJ0Nl9pc19kZWFkKHJ0KSkgewogCQkqd2VpZ2h0ICYjNDM7PSBydC0mZ3Q7ZmliNl9uaC0mZ3Q7ZmliX25oX3dlaWdodDsKIAkJdXBwZXJfYm91bmQgPSBESVZfUk9VTkRfQ0xPU0VTVF9VTEwoKHU2NCkgKCp3ZWlnaHQpICZsdDsmbHQ7IDMxLAogCQkJCQkJICAgIHRvdGFsKSAtIDE7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDExCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUHJvcG9zZWQgUm91dGUuYyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBydDZfdXBwZXJfYm91bmRfc2V0YCBpbiBgbmV0L2lwdjYvcm91dGUuY2AuIFRoZSBjb3JlIGNoYW5nZSBpcyBhIHNpbXBsZSBjb25kaXRpb25hbDogYWRkaW5nIGEgYHRvdGFsYCBjaGVjaywgc3BlY2lmaWNhbGx5IGBpZiAodG90YWwgJmFtcDsmYW1wOyAhcnQ2X2lzX2RlYWQocnQpKWAgd2hlcmUgcHJldmlvdXNseSBpdCB3YXMganVzdCBgaWYgKCFydDZfaXNfZGVhZChydCkpYC4gIFRoZSBpbnRlbnQgaGVyZSBpcyBjbGVhcjogaXQmIzM5O3MgYSBkZWZlbnNpdmUgbWVhc3VyZSB0byBwcmV2ZW50IGEgZGl2aWRlLWJ5LXplcm8gZXJyb3Igd2l0aGluIHRoYXQgYERJVl9ST1VORF9DTE9TRVNUX1VMTGAgbWFjcm8gd2hlbiBgdG90YWxgIGlzIHplcm8uIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGFuZCBjb21wbGV0ZWx5IHVuZGVyc3RhbmRhYmxlIGJ1ZyBmaXguCgpOb3csIG15IGluaXRpYWwgY29uY2VybiwgYXMgaXQgYWx3YXlzIGlzIHdoZW4gc2VlaW5nIHRoZXNlIHR5cGVzIG9mIHBhdGNoZXMsIGlzIHdoZXRoZXIgdGhpcyBpbnRyb2R1Y2VzIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBleHBvc3VyZS4gTGV0JiMzOTtzIHNlZS4uLiAgSXQgYXBwZWFycyB0aGlzIHBhdGNoICpvbmx5KiBpbnRyb2R1Y2VzIHRoZSBjaGVjayBmb3IgYHRvdGFsYCBiZWluZyBub24temVyby4gVGhlIGNvZGUgcGF0aCB0aGF0JiMzOTtzIHByb2JsZW1hdGljIGlzIHRoZSBkaXZpZGUuIEFkZGluZyB0aGF0IGNoZWNrIGlzIGZ1bmRhbWVudGFsbHkgYSBnb29kIHRoaW5nLCBhIHNhbml0eSBjaGVjay4gU2luY2UgaXQmIzM5O3Mgc2ltcGx5IGEgZ3VhcmQgYWdhaW5zdCBhIGRpdmlkZS1ieS16ZXJvLCBJJiMzOTttIGhpZ2hseSBjb25maWRlbnQgdGhhdCB0aGlzIGRvZXNuJiMzOTt0IGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdnVsbmVyYWJpbGl0aWVzLiAgRGl2aWRlLWJ5LXplcm8gZXJyb3JzIGFyZSB1c3VhbGx5IGNhdWdodCBieSB0aGUgY29tcGlsZXIsIHRoZSBrZXJuZWwmIzM5O3MgYnVpbHQtaW4gYnVnIGNoZWNrZXJzLCBvciB3b3JzZSwgdGhleSBjYXVzZSBhIGtlcm5lbCBwYW5pYywgc28gaXQmIzM5O3MgZ29vZCB0byBiZSBwcm9hY3RpdmUuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0IG1lIHF1aWNrbHkgcmVyZWFkIHRoZSByZWxldmFudCBwYXJ0cyBvZiB0aGUgYHJ0Nl91cHBlcl9ib3VuZF9zZXRgIGZ1bmN0aW9uIGl0c2VsZiwganVzdCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnkgc3VidGxlIGludGVyYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDI6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnQ2X3VwcGVyX2JvdW5kX3NldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L3JvdXRlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvcm91dGUuYz00ODIzPXN0YXRpYyBpbnQgcnQ2X211bHRpcGF0aF90b3RhbF93ZWlnaHQoY29uc3Qgc3RydWN0IGZpYjZfaW5mbyAqcnQpXG4tLVxubmV0L2lwdjYvcm91dGUuYy00ODM4LVxubmV0L2lwdjYvcm91dGUuYzo0ODM5OnN0YXRpYyB2b2lkIHJ0Nl91cHBlcl9ib3VuZF9zZXQoc3RydWN0IGZpYjZfaW5mbyAqcnQsIGludCAqd2VpZ2h0LCBpbnQgdG90YWwpXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4NDAte1xuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NDg1MT1zdGF0aWMgdm9pZCBydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50IHRvdGFsKVxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNDg1NS1cbm5ldC9pcHY2L3JvdXRlLmM6NDg1NjpcdHJ0Nl91cHBlcl9ib3VuZF9zZXQocnQsIFx1MDAyNndlaWdodCwgdG90YWwpO1xubmV0L2lwdjYvcm91dGUuYy00ODU3LVxubmV0L2lwdjYvcm91dGUuYy00ODU4LVx0bGlzdF9mb3JfZWFjaF9lbnRyeShpdGVyLCBcdTAwMjZydC1cdTAwM2VmaWI2X3NpYmxpbmdzLCBmaWI2X3NpYmxpbmdzKVxubmV0L2lwdjYvcm91dGUuYzo0ODU5Olx0XHRydDZfdXBwZXJfYm91bmRfc2V0KGl0ZXIsIFx1MDAyNndlaWdodCwgdG90YWwpO1xubmV0L2lwdjYvcm91dGUuYy00ODYwLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDI6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg5MwoJCQkJCQkJb3V0cHV0OiAxMTUKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipIYW5kbGluZyB0aGUgUG90ZW50aWFsIGZvciBaZXJvIERpdmlzaW9uKioKCkFscmlnaHQsIHRoaXMgYWRqdXN0bWVudCBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBNeSBwcmltYXJ5IGNvbmNlcm4gaGVyZSBpcyBwcmV2ZW50aW5nIGEgZGl2aXNpb24gYnkgemVybyBlcnJvciDigJMgYSBjbGFzc2ljLCBlYXNpbHkgYXZvaWRhYmxlIHBpdGZhbGwuIFRoZXJlJiMzOTtzIG5vIGZhbmN5IG1lbW9yeSBpbml0aWFsaXphdGlvbiBnb2luZyBvbiB0aGF0IEkgbmVlZCB0byB3b3JyeSBhYm91dC4gVGhpcyBpcyBhIGNsZWFuLCB0YXJnZXRlZCBjaGFuZ2UuIEFzIHN1Y2gsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgIGZvciB0aGlzIHJldmlzaW9uLiBObyBmdXJ0aGVyIGNoZWNrcyBvciBpbnN0cnVtZW50YXRpb24gYXJlIHJlcXVpcmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwMjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkaXZpZGUtYnktemVybyBidWcgaW4gYHJ0Nl91cHBlcl9ib3VuZF9zZXRgIGJ5IGNoZWNraW5nIGlmIGB0b3RhbGAgaXMgbm9uLXplcm8gYmVmb3JlIHBlcmZvcm1pbmcgdGhlIGRpdmlzaW9uLiBUaGlzIGRvZXMgbm90IGludm9sdmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBzdHJ1Y3R1cmUgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZSBidWcgaXQgZml4ZXMgKGRpdmlkZS1ieS16ZXJvKSB3b3VsZCBjYXVzZSBhIGtlcm5lbCBwYW5pYyBvciBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgZGl2aWRlLWJ5LXplcm8gYnVnIGluIGBydDZfdXBwZXJfYm91bmRfc2V0YCBieSBjaGVja2luZyBpZiBgdG90YWxgIGlzIG5vbi16ZXJvIGJlZm9yZSBwZXJmb3JtaW5nIHRoZSBkaXZpc2lvbi4gVGhpcyBkb2VzIG5vdCBpbnZvbHZlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgc3RydWN0dXJlIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGUgYnVnIGl0IGZpeGVzIChkaXZpZGUtYnktemVybykgd291bGQgY2F1c2UgYSBrZXJuZWwgcGFuaWMgb3IgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDM6MTkuNzA5MTAyNDQ3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMxNjA4MzIxNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlXCIsXG4gICAgXCJmaWI2X2lmdXBcIixcbiAgICBcImZpYjZfaWZkb3duXCIsXG4gICAgXCJmaWI2X2FkZF9ydDJub2RlXCIsXG4gICAgXCJmaWI2X2RlbF9yb3V0ZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgZGl2aWRlLWJ5LXplcm8gYnVnIGluIGBydDZfdXBwZXJfYm91bmRfc2V0YCBieSBjaGVja2luZyBpZiBgdG90YWxgIGlzIG5vbi16ZXJvIGJlZm9yZSBwZXJmb3JtaW5nIHRoZSBkaXZpc2lvbi4gVGhpcyBkb2VzIG5vdCBpbnZvbHZlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgc3RydWN0dXJlIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGUgYnVnIGl0IGZpeGVzIChkaXZpZGUtYnktemVybykgd291bGQgY2F1c2UgYSBrZXJuZWwgcGFuaWMgb3IgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGRpdmlzaW9uIGJ5IHplcm8gaW4gYHJ0Nl91cHBlcl9ib3VuZF9zZXRgIHdoZW4gYHRvdGFsYCBpcyAwLiBUaGlzIGhhcHBlbnMgZHVyaW5nIElQdjYgbXVsdGlwYXRoIHJvdXRlIHJlYmFsYW5jaW5nLCB3aGljaCBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjAzOjE5LjcwOTEwOTE2N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY3NDYzOTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmM0ZjMzYzllNTc5YTc4NWQyODAxMmY1MTFjNDY4NDU5ODljMTk5Y1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAxNyAwMjowMzoxOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yb3V0ZS5jIGIvbmV0L2lwdjYvcm91dGUuY1xcbmluZGV4IDU5NjhjZTVhZDE1MDguLjY4OTI0Y2ZmOTIwNTUgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvcm91dGUuY1xcbisrKyBiL25ldC9pcHY2L3JvdXRlLmNcXG5AQCAtNDg0MCw3ICs0ODQwLDcgQEAgc3RhdGljIHZvaWQgcnQ2X3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50ICp3ZWlnaHQsIGludCB0b3RhbClcXG4ge1xcbiBcXHRpbnQgdXBwZXJfYm91bmQgPSAtMTtcXG4gXFxuLVxcdGlmICghcnQ2X2lzX2RlYWQocnQpKSB7XFxuK1xcdGlmICh0b3RhbCBcXHUwMDI2XFx1MDAyNiAhcnQ2X2lzX2RlYWQocnQpKSB7XFxuIFxcdFxcdCp3ZWlnaHQgKz0gcnQtXFx1MDAzZWZpYjZfbmgtXFx1MDAzZWZpYl9uaF93ZWlnaHQ7XFxuIFxcdFxcdHVwcGVyX2JvdW5kID0gRElWX1JPVU5EX0NMT1NFU1RfVUxMKCh1NjQpICgqd2VpZ2h0KSBcXHUwMDNjXFx1MDAzYyAzMSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgIHRvdGFsKSAtIDE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjAzOjIwLjA3NzM3NzU3N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUzNzExMDYyMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydDZfbXVsdGlwYXRoX3JlYmFsYW5jZVwiLFxuICAgIFwiZmliNl9pZnVwXCIsXG4gICAgXCJmaWI2X2lmZG93blwiLFxuICAgIFwiZmliNl9hZGRfcnQybm9kZVwiLFxuICAgIFwiZmliNl9kZWxfcm91dGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGRpdmlzaW9uIGJ5IHplcm8gaW4gYHJ0Nl91cHBlcl9ib3VuZF9zZXRgIHdoZW4gYHRvdGFsYCBpcyAwLiBUaGlzIGhhcHBlbnMgZHVyaW5nIElQdjYgbXVsdGlwYXRoIHJvdXRlIHJlYmFsYW5jaW5nLCB3aGljaCBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDJjNGYzM2M5ZTU3OWE3ODVkMjgwMTJmNTExYzQ2ODQ1OTg5YzE5OWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxNyAwMjowMzoxOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L3JvdXRlLmMgYi9uZXQvaXB2Ni9yb3V0ZS5jXG5pbmRleCA1OTY4Y2U1YWQxNTA4Li42ODkyNGNmZjkyMDU1IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvcm91dGUuY1xuKysrIGIvbmV0L2lwdjYvcm91dGUuY1xuQEAgLTQ4NDAsNyArNDg0MCw3IEBAIHN0YXRpYyB2b2lkIHJ0Nl91cHBlcl9ib3VuZF9zZXQoc3RydWN0IGZpYjZfaW5mbyAqcnQsIGludCAqd2VpZ2h0LCBpbnQgdG90YWwpXG4ge1xuIFx0aW50IHVwcGVyX2JvdW5kID0gLTE7XG4gXG4tXHRpZiAoIXJ0Nl9pc19kZWFkKHJ0KSkge1xuK1x0aWYgKHRvdGFsIFx1MDAyNlx1MDAyNiAhcnQ2X2lzX2RlYWQocnQpKSB7XG4gXHRcdCp3ZWlnaHQgKz0gcnQtXHUwMDNlZmliNl9uaC1cdTAwM2VmaWJfbmhfd2VpZ2h0O1xuIFx0XHR1cHBlcl9ib3VuZCA9IERJVl9ST1VORF9DTE9TRVNUX1VMTCgodTY0KSAoKndlaWdodCkgXHUwMDNjXHUwMDNjIDMxLFxuIFx0XHRcdFx0XHRcdCAgICB0b3RhbCkgLSAxO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDM6MjAuMDc3MzgwMDY3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ5ODc1Mzk1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQdjYgUm91dGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvaXB2Ni9yb3V0ZS5jYC4gSXQncyBhIGZhaXJseSBzdHJhaWdodGZvcndhcmQgbW9kaWZpY2F0aW9uIHRvIHRoZSBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgZnVuY3Rpb24uIFRoZSBjaGFuZ2UgaXMgc2ltcGxlLCByZWFsbHk6IHRoZXkndmUgYWRkZWQgYSBjaGVjayBmb3IgYHRvdGFsYCBiZWZvcmUgdGhlIGNhbGwgdG8gYHJ0Nl9pc19kZWFkKHJ0KWAuIFRoZSBvcmlnaW5hbCBjb2RlLCBhcHBhcmVudGx5LCBkaWRuJ3QgaGFuZGxlIHRoZSBjYXNlIHdoZXJlIGB0b3RhbGAgY291bGQgYmUgemVyby5cblxuTGV0IG1lIHNlZeKApiByaWdodCwgSSBzZWUgaXQgbm93LiBUaGUgcHJvYmxlbSBpcyBpbiB0aGUgbGluZSBpbnZvbHZpbmcgdGhlIGRpdmlzaW9uIGBESVZfUk9VTkRfQ0xPU0VTVF9VTEwoKHU2NCkgKCp3ZWlnaHQpIFx1MDAzY1x1MDAzYyAzMSwgdG90YWwpIC0gMTtgLiBBIGRpdmlzaW9uIGJ5IHplcm8gdGhlcmUgd291bGQgY2xlYXJseSBiZSBhIG1ham9yIGlzc3VlLCBzbyB0aGUgcGF0Y2ggaXMgY29ycmVjdGx5IGFkZHJlc3NpbmcgdGhpcyBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4gQWRkaW5nIGB0b3RhbCBcdTAwMjZcdTAwMjZgIHNlZW1zIGxpa2UgYSBjbGVhbiBhbmQgZWZmaWNpZW50IGZpeCB0byBwcmV2ZW50IHRoYXQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LCBzbyBsZXQgbWUgcHVsbCB1cCB0aGUgc291cmNlIGZvciBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgaW4gYG5ldC9pcHY2L3JvdXRlLmNgIHRvIHNlZSBob3cgYHRvdGFsYCBpcyB1c2VkIGFuZCB3aHkgaXQgbWlnaHQgYmUgemVybyBpbiB0aGUgZmlyc3QgcGxhY2UuIFRoaXMgcGF0Y2ggbG9va3MgZ29vZCwgYnV0IEkgYWx3YXlzIHdhbnQgdG8gZnVsbHkgY29tcHJlaGVuZCB0aGUgaW1wbGljYXRpb25zIG9mIGV2ZXJ5IGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjAzOjI0LjU3NjEzNzQyNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDg4MzM0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydDZfdXBwZXJfYm91bmRfc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L3JvdXRlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvcm91dGUuYz00ODIzPXN0YXRpYyBpbnQgcnQ2X211bHRpcGF0aF90b3RhbF93ZWlnaHQoY29uc3Qgc3RydWN0IGZpYjZfaW5mbyAqcnQpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4MzgtXFxubmV0L2lwdjYvcm91dGUuYzo0ODM5OnN0YXRpYyB2b2lkIHJ0Nl91cHBlcl9ib3VuZF9zZXQoc3RydWN0IGZpYjZfaW5mbyAqcnQsIGludCAqd2VpZ2h0LCBpbnQgdG90YWwpXFxubmV0L2lwdjYvcm91dGUuYy00ODQwLXtcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NDg1MT1zdGF0aWMgdm9pZCBydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50IHRvdGFsKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00ODU1LVxcbm5ldC9pcHY2L3JvdXRlLmM6NDg1NjpcXHRydDZfdXBwZXJfYm91bmRfc2V0KHJ0LCBcXHUwMDI2d2VpZ2h0LCB0b3RhbCk7XFxubmV0L2lwdjYvcm91dGUuYy00ODU3LVxcbm5ldC9pcHY2L3JvdXRlLmMtNDg1OC1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0ZXIsIFxcdTAwMjZydC1cXHUwMDNlZmliNl9zaWJsaW5ncywgZmliNl9zaWJsaW5ncylcXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ4NTk6XFx0XFx0cnQ2X3VwcGVyX2JvdW5kX3NldChpdGVyLCBcXHUwMDI2d2VpZ2h0LCB0b3RhbCk7XFxubmV0L2lwdjYvcm91dGUuYy00ODYwLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDM6MjQuNjI3MDI1OTg5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4NzM4MTU4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBjb2RlLCBwcmVzZW50ZWQgYXMgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNdWx0aXBhdGggUm91dGluZyBMb2dpYyoqXG5cbk9rYXksIHNvIGBydDZfdXBwZXJfYm91bmRfc2V0YCBpcyBjbGVhcmx5IGEga2V5IGZ1bmN0aW9uLCBhbmQgaXQncyBiZWluZyBjYWxsZWQgYnkgYHJ0Nl9tdWx0aXBhdGhfdXBwZXJfYm91bmRfc2V0YC4gVGhpcyBzdWdnZXN0cyBhIHJlbGF0aW9uc2hpcDsgbGlrZWx5IHRoZSBsYXR0ZXIgZnVuY3Rpb24gbWFuYWdlcyBzb21lIGtpbmQgb2YgbXVsdGlwYXRoIGNvbmZpZ3VyYXRpb24sIGFuZCB1dGlsaXplcyB0aGUgdXBwZXIgYm91bmQgc2V0dGluZyBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgc28gSSdtIGdvaW5nIHRvIHF1aWNrbHkgdHJhY2Ugd2hlcmUgYHJ0Nl9tdWx0aXBhdGhfdXBwZXJfYm91bmRfc2V0YCBpdHNlbGYgaXMgaW52b2tlZC4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGJyb2FkZXIgY29udGV4dCBhbmQgaGVscCBjbGFyaWZ5IHdoeSB0aGlzIHVwcGVyIGJvdW5kIHNldHRpbmcgaXMgbmVjZXNzYXJ5IHdpdGhpbiB0aGUgbXVsdGlwYXRoIHJvdXRpbmcgZnJhbWV3b3JrLiBLbm93aW5nIHRoZSBjYWxsIGNoYWluIGZyb20gdGhlcmUgc2hvdWxkIHByb3ZpZGUgY2xhcml0eSBvbiB0aGUgcHVycG9zZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBhbmQgaG93IHRoZSBib3VuZCBpcyB1dGlsaXplZCBpbiBwcmFjdGljZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc3NSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjAzOjI3LjgxNDQwOTc3NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTY4NzcwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9yb3V0ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L3JvdXRlLmM9NDgzOT1zdGF0aWMgdm9pZCBydDZfdXBwZXJfYm91bmRfc2V0KHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBpbnQgKndlaWdodCwgaW50IHRvdGFsKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00ODUwLVxcbm5ldC9pcHY2L3JvdXRlLmM6NDg1MTpzdGF0aWMgdm9pZCBydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50IHRvdGFsKVxcbm5ldC9pcHY2L3JvdXRlLmMtNDg1Mi17XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ4NjI9dm9pZCBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShzdHJ1Y3QgZmliNl9pbmZvICpydClcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNDg4Mi1cXHR0b3RhbCA9IHJ0Nl9tdWx0aXBhdGhfdG90YWxfd2VpZ2h0KGZpcnN0KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ4ODM6XFx0cnQ2X211bHRpcGF0aF91cHBlcl9ib3VuZF9zZXQoZmlyc3QsIHRvdGFsKTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4ODQtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwMjowMzoyNy44NjAxMDIzMTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDE5OTk3NDQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlYCBGdW5jdGlvbiBDYWxsIFBhdGgqKlxuXG5BbHJpZ2h0LCBzbyBgcnQ2X211bHRpcGF0aF9yZWJhbGFuY2VgIGlzIHRoZSBmdW5jdGlvbiBpbml0aWF0aW5nIHRoaXMgcHJvY2Vzcy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCBpdHMgcGxhY2Ugd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbS4gSSBuZWVkIHRvIHRyYWNlIGl0cyBjYWxsIGhpZXJhcmNoeS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggb3RoZXIgZnVuY3Rpb25zIGFyZSByZXNwb25zaWJsZSBmb3IgY2FsbGluZyBgcnQ2X211bHRpcGF0aF9yZWJhbGFuY2VgLiBJZGVudGlmeWluZyB0aGUgY2FsbGVycyB3aWxsIHByb3ZpZGUgY3J1Y2lhbCBjb250ZXh0IOKAkyBpdCdsbCB0ZWxsIG1lIHdoYXQgdHJpZ2dlcnMgdGhlIHJlYmFsYW5jaW5nIGFuZCBpbiB3aGF0IHNpdHVhdGlvbnMgdGhpcyBiZWhhdmlvciBpcyByZWxldmFudC4gVW5kZXJzdGFuZGluZyB0aGUgdHJpZ2dlciBtZWNoYW5pc20gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgcGljdHVyZSBvZiB0aGlzIHN1YnN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI3NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjAzOjMxLjI4MDEwNzYzMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDc3MTE4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydDZfbXVsdGlwYXRoX3JlYmFsYW5jZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9yb3V0ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L3JvdXRlLmM9NDg1MT1zdGF0aWMgdm9pZCBydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50IHRvdGFsKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00ODYxLVxcbm5ldC9pcHY2L3JvdXRlLmM6NDg2Mjp2b2lkIHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHN0cnVjdCBmaWI2X2luZm8gKnJ0KVxcbm5ldC9pcHY2L3JvdXRlLmMtNDg2My17XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ4ODY9c3RhdGljIGludCBmaWI2X2lmdXAoc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00ODk0LVxcdFxcdGZpYjZfdXBkYXRlX3Nlcm51bV91cHRvX3Jvb3QobmV0LCBydCk7XFxubmV0L2lwdjYvcm91dGUuYzo0ODk1OlxcdFxcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHJ0KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4OTYtXFx0fVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz00OTcxPXN0YXRpYyBpbnQgZmliNl9pZmRvd24oc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00OTk4LVxcdFxcdFxcdGZpYjZfdXBkYXRlX3Nlcm51bShuZXQsIHJ0KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ5OTk6XFx0XFx0XFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UocnQpO1xcbm5ldC9pcHY2L3JvdXRlLmMtNTAwMC1cXHRcXHR9XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTUwMDctXFx0XFx0ZmliNl91cGRhdGVfc2VybnVtKG5ldCwgcnQpO1xcbm5ldC9pcHY2L3JvdXRlLmM6NTAwODpcXHRcXHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShydCk7XFxubmV0L2lwdjYvcm91dGUuYy01MDA5LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwMjowMzozMS4zMjQ4ODQxOTZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDk3OTQ2ODU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlYCBFeHBvcnQgU3RhdHVzKipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGlzIGBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZWAgZnVuY3Rpb24gbWVudGlvbmVk4oCmIGhhbmcgb24gYSBzZWMsIGlzIHRoYXQgYWxzbyBleHBvcnRlZD8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGl0cyB2aXNpYmlsaXR5LCB0byBzZWUgaWYgaXQncyBhdmFpbGFibGUgZm9yIG1lIHRvIHVzZSB3aGVyZSBJJ20gZXhwZWN0aW5nIGl0IHRvIGJlLiBNeSBmaXJzdCBwb3J0IG9mIGNhbGwsIGFzIGFsd2F5cywgaXMgdGhlIG9idmlvdXMgcGxhY2UgZm9yIElQdjYgcm91dGluZy1yZWxhdGVkIGZ1bmN0aW9uIHByb3RvdHlwZXM6IEknbSBwcmV0dHkgc3VyZSBpdCB3b3VsZCBiZSBkZWNsYXJlZCBpbiBgaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmhgLiBMZXQgbWUgY2hlY2sgdGhhdCBoZWFkZXIgZmlsZSBhbmQgY29uZmlybS4gSXQncyB0aGUgbW9zdCBsaWtlbHkgc3BvdCwgZ2l2ZW4gdGhlIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTYsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwMjowMzozNS40MjI4MzQyOTNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTM4ODI2ODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnQ2X211bHRpcGF0aF9yZWJhbGFuY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oPTIyNz12b2lkIHJ0Nl9zeW5jX2Rvd25fZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZXZlbnQpO1xcbmluY2x1ZGUvbmV0L2lwNl9yb3V0ZS5oOjIyODp2b2lkIHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHN0cnVjdCBmaWI2X2luZm8gKmY2aSk7XFxuaW5jbHVkZS9uZXQvaXA2X3JvdXRlLmgtMjI5LVxcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jPTEwODk9c3RhdGljIGludCBmaWI2X2FkZF9ydDJub2RlKHN0cnVjdCBmaWI2X25vZGUgKmZuLCBzdHJ1Y3QgZmliNl9pbmZvICpydCxcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYy0xMjMxLVxcdFxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvaXB2Ni9pcDZfZmliLmM6MTIzMjpcXHRcXHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZSh0ZW1wX3NpYmxpbmcpO1xcbm5ldC9pcHY2L2lwNl9maWIuYy0xMjMzLVxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTEyNzctXFx0XFx0XFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbm5ldC9pcHY2L2lwNl9maWIuYzoxMjc4OlxcdFxcdFxcdFxcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKG5leHRfc2libGluZyk7XFxubmV0L2lwdjYvaXA2X2ZpYi5jLTEyNzktXFx0XFx0XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmM9MTk2OT1zdGF0aWMgdm9pZCBmaWI2X2RlbF9yb3V0ZShzdHJ1Y3QgZmliNl90YWJsZSAqdGFibGUsIHN0cnVjdCBmaWI2X25vZGUgKmZuLFxcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTIwMjAtXFx0XFx0bGlzdF9kZWxfcmN1KFxcdTAwMjZydC1cXHUwMDNlZmliNl9zaWJsaW5ncyk7XFxubmV0L2lwdjYvaXA2X2ZpYi5jOjIwMjE6XFx0XFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UobmV4dF9zaWJsaW5nKTtcXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjAyMi1cXHR9XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ4NTE9c3RhdGljIHZvaWQgcnQ2X211bHRpcGF0aF91cHBlcl9ib3VuZF9zZXQoc3RydWN0IGZpYjZfaW5mbyAqcnQsIGludCB0b3RhbClcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNDg2MS1cXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ4NjI6dm9pZCBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShzdHJ1Y3QgZmliNl9pbmZvICpydClcXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4NjMte1xcbi0tXFxubmV0L2lwdjYvcm91dGUuYz00ODg2PXN0YXRpYyBpbnQgZmliNl9pZnVwKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCB2b2lkICpwX2FyZylcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNDg5NC1cXHRcXHRmaWI2X3VwZGF0ZV9zZXJudW1fdXB0b19yb290KG5ldCwgcnQpO1xcbm5ldC9pcHY2L3JvdXRlLmM6NDg5NTpcXHRcXHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShydCk7XFxubmV0L2lwdjYvcm91dGUuYy00ODk2LVxcdH1cXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NDk3MT1zdGF0aWMgaW50IGZpYjZfaWZkb3duKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCB2b2lkICpwX2FyZylcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNDk5OC1cXHRcXHRcXHRmaWI2X3VwZGF0ZV9zZXJudW0obmV0LCBydCk7XFxubmV0L2lwdjYvcm91dGUuYzo0OTk5OlxcdFxcdFxcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHJ0KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTUwMDAtXFx0XFx0fVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy01MDA3LVxcdFxcdGZpYjZfdXBkYXRlX3Nlcm51bShuZXQsIHJ0KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjUwMDg6XFx0XFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UocnQpO1xcbm5ldC9pcHY2L3JvdXRlLmMtNTAwOS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDM6MzcuMzM2NzI2NTQ2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MDE2NzE3MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIFRoaXMgS2VybmVsIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgZml4IHRoYXQncyBjbGVhcmx5IHRvdWNoaW5nIHNvbWUgY29yZSBJUHY2IHJvdXRpbmcgbG9naWMuIFNwZWNpZmljYWxseSwgdGhpcyBpcyBkb3duIGluIHRoZSB3ZWVkcyB3aXRoIG11bHRpcGF0aCByb3V0aW5nIOKAkyB0aGF0J3MgZGVmaW5pdGVseSB3aGVyZSB0aGUgaW50ZXJlc3Rpbmcgc3R1ZmYgaGFwcGVucy4gTXkgaW1tZWRpYXRlIHRha2Vhd2F5IGlzIHRoYXQgdGhpcyBhZGRyZXNzZXMgYSBkaXZpc2lvbi1ieS16ZXJvIGVycm9yIHdpdGhpbiBgcnQ2X3VwcGVyX2JvdW5kX3NldGAuIFRoZSByb290IGNhdXNlPyBJdCBzZWVtcyB0aGF0IGBydDZfbXVsdGlwYXRoX3RvdGFsX3dlaWdodGAsIHdoZW4gZmVkIGFsbCBkZWFkIHJvdXRlcyBpbiBhIG11bHRpcGF0aCBzY2VuYXJpbywgY2FuIHJldHVybiBhIGB0b3RhbGAgb2YgemVyby4gVGhpcyBpcyBleGFjdGx5IHRoZSBraW5kIG9mIGVkZ2UgY2FzZSB0aGF0J3Mgd29ydGggY2F0Y2hpbmcsIGFuZCBpdCdzIGdvb2QgdGhhdCBpdCdzIGJlaW5nIGFkZHJlc3NlZC5cblxuR2l2ZW4gdGhhdCBpdCdzIGZ1bmN0aW9uYWwgYW5kIHRoZSBwb3RlbnRpYWwgZm9yIG9mZi1ieS1vbmUgZXJyb3JzIGlzIHByZXR0eSBoaWdoIHdoZW4gZGVhbGluZyB3aXRoIHdlaWdodCBjYWxjdWxhdGlvbnMsIHRoaXMgaXMgYWJzb2x1dGVseSBwcmltZSBmdXp6aW5nIG1hdGVyaWFsLiBJIHNob3VsZCBrZWVwIGFuIGV5ZSBvbiBob3cgdGhpcyBwbGF5cyBvdXQgaW4gcHJhY3RpY2UuXG5cbk5vdywgbGV0J3Mgc2VlLCB0aGUgZnVuY3Rpb25zIG9mIGludGVyZXN0IGhlcmUgYXJlOiBgcnQ2X211bHRpcGF0aF9yZWJhbGFuY2VgLCB3aGljaCBpcyBkaXJlY3RseSByZWxhdGVkIHRvIHRoZSBmaXg7IGBmaWI2X2lmdXBgIGFuZCBgZmliNl9pZmRvd25gLCB3aGljaCBtYWtlcyBtZSB0aGluayB0aGlzIG1pZ2h0IGJlIHRyaWdnZXJlZCB3aGVuIGludGVyZmFjZXMgYXJlIGJyb3VnaHQgdXAgb3IgZG93bjsgYW5kIGBmaWI2X2FkZF9ydDJub2RlYCBhbmQgYGZpYjZfZGVsX3JvdXRlYCwgd2hpY2ggYXJlIHJlc3BvbnNpYmxlIGZvciByb3V0ZSBtYW5hZ2VtZW50LiBUaG9zZSBhcmUgaW1wb3J0YW50IGZ1bmN0aW9ucyB0byBrZWVwIGluIG1pbmQgZm9yIHRlc3RpbmcuXG5cbkZpbmFsbHksIHJlZ2FyZGluZyB0aGUgY29uZmlndXJhdGlvbiwgSSdtIGdvaW5nIHRvIHdhbnQgdG8gdmVyaWZ5IHRoYXQgYElQVjZgIGlzIGVuYWJsZWQgb2YgY291cnNlLCBidXQgYWxzbywgSSB0aGluayB0aGVyZSdzIGEgc3Ryb25nIGNoYW5jZSB0aGlzIGlzIHJlbGF0ZWQgdG8gYElQVjZfTVVMVElQTEVfVEFCTEVTYC4gSSdsbCBjcm9zcy1yZWZlcmVuY2UgdGhlIEtjb25maWcgdG8gY29uZmlybS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAwMiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwMjowMzo0Mi4xMzg0MDE0NjhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4Nzk5Mzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIklQVjZfTVVMVElQTEVfVEFCTEVTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvS2NvbmZpZz0yMzI9Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMzYtXFxubmV0L2lwdjYvS2NvbmZpZzoyMzc6Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXFxubmV0L2lwdjYvS2NvbmZpZy0yMzgtXFx0Ym9vbCBcXFwiSVB2NjogTXVsdGlwbGUgUm91dGluZyBUYWJsZXNcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTI0Mz1jb25maWcgSVBWNl9TVUJUUkVFU1xcbm5ldC9pcHY2L0tjb25maWctMjQ0LVxcdGJvb2wgXFxcIklQdjY6IHNvdXJjZSBhZGRyZXNzIGJhc2VkIHJvdXRpbmdcXFwiXFxubmV0L2lwdjYvS2NvbmZpZzoyNDU6XFx0ZGVwZW5kcyBvbiBJUFY2X01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY2L0tjb25maWctMjQ2LVxcdGhlbHBcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9Mjg2PWNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjkwLVxcdHNlbGVjdCBEU1RfQ0FDSEVcXG5uZXQvaXB2Ni9LY29uZmlnOjI5MTpcXHRzZWxlY3QgSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2Ni9LY29uZmlnLTI5Mi1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjAzOjQyLjE5NzIwNzE5MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjQ4NDYwNTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipJbnZlc3RpZ2F0aW5nIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlYCBpcyBjb250cm9sbGVkIGJ5IGFueSBjb25maWd1cmF0aW9uIHNldHRpbmdzLiBUaGlzIGlzbid0IGp1c3QgYSBzaW1wbGUgZmVhdHVyZTsgaXRzIGJlaGF2aW9yIGlzIGxpa2VseSBpbmZsdWVuY2VkIGJ5IHNvbWV0aGluZyB1cHN0cmVhbS4gSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQncyBkZWZpbmVkIGFuZCBob3cgaXQncyBhY3RpdmF0ZWQgb3IgZGVhY3RpdmF0ZWQuIFRoaXMgaXMgYSBjcml0aWNhbCBzdGVwIGJlZm9yZSBhdHRlbXB0aW5nIGFueSBtb2RpZmljYXRpb25zIG9yIGV2ZW4gdHJvdWJsZXNob290aW5nLiBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGFsbCByZWxldmFudCBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCBtb2R1bGVzIHRvIHNlZSBpZiBhbnkgc2V0dGluZ3MgZGlyZWN0bHkgYWZmZWN0IGl0cyBiZWhhdmlvci4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBzY29wZSBpcyBwYXJhbW91bnQuIEknbGwgbmVlZCB0byB0cmFjZSBpdHMgb3JpZ2lucyBhbmQgbG9vayBmb3IgcG90ZW50aWFsIGRlcGVuZGVuY2llcy4gTGV0J3MgZGlnIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODQxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDM6NDYuODQ1NjcwNjUxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzA1MDAzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydDZfbXVsdGlwYXRoX3JlYmFsYW5jZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9yb3V0ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L3JvdXRlLmM9NDg1MT1zdGF0aWMgdm9pZCBydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50IHRvdGFsKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00ODYxLVxcbm5ldC9pcHY2L3JvdXRlLmM6NDg2Mjp2b2lkIHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHN0cnVjdCBmaWI2X2luZm8gKnJ0KVxcbm5ldC9pcHY2L3JvdXRlLmMtNDg2My17XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ4ODY9c3RhdGljIGludCBmaWI2X2lmdXAoc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00ODk0LVxcdFxcdGZpYjZfdXBkYXRlX3Nlcm51bV91cHRvX3Jvb3QobmV0LCBydCk7XFxubmV0L2lwdjYvcm91dGUuYzo0ODk1OlxcdFxcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHJ0KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4OTYtXFx0fVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz00OTcxPXN0YXRpYyBpbnQgZmliNl9pZmRvd24oc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00OTk4LVxcdFxcdFxcdGZpYjZfdXBkYXRlX3Nlcm51bShuZXQsIHJ0KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ5OTk6XFx0XFx0XFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UocnQpO1xcbm5ldC9pcHY2L3JvdXRlLmMtNTAwMC1cXHRcXHR9XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTUwMDctXFx0XFx0ZmliNl91cGRhdGVfc2VybnVtKG5ldCwgcnQpO1xcbm5ldC9pcHY2L3JvdXRlLmM6NTAwODpcXHRcXHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShydCk7XFxubmV0L2lwdjYvcm91dGUuYy01MDA5LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwMjowMzo0Ni44OTg3MjM4MjVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ5NTA5NTUxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSVB2NiBSb3V0aW5nIENvZGUgSW52ZXN0aWdhdGlvbioqXG5cblJpZ2h0LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biBzb21ldGhpbmcgcmVsYXRlZCB0byBJUHY2IHJvdXRpbmcuIEhtbSwgdGhlIGluaXRpYWwgZ3V0IGZlZWxpbmcgaXMgdGhhdCBpdCdzIGxpa2VseSB3aXRoaW4gdGhlIGBuZXQvaXB2Ni9yb3V0ZS5jYCBmaWxlLiBUaGF0J3MgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nLiBCdXQsIGJlZm9yZSBJIGRpdmUgZGVlcCBpbnRvIHRoYXQgc3BlY2lmaWMgZmlsZSwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLiBMZXQncyBtYWtlIHN1cmUgdGhlIHJlbGV2YW50IGNvZGUgaXMgYWN0dWFsbHkgKmJlaW5nKiBjb21waWxlZC4gSSdsbCB0YWtlIGEgcXVpY2sgcGVlayBhdCB0aGUgYG5ldC9pcHY2L01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHRoYXQgdGhlIHJvdXRpbmcgY29kZSBpcyBwcm9wZXJseSBpbnRlZ3JhdGVkIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MuIEdvdHRhIGJlIG1ldGhvZGljYWwg4oCTIG5vIHBvaW50IGluIGNoYXNpbmcgZ2hvc3RzIGlmIHRoZSBjb2RlIGlzbid0IGV2ZW4gcGFydCBvZiB0aGUgY3VycmVudCBidWlsZCFcblxuXG4iLCJJbnB1dFRva2VucyI6NjQ2MywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjAzOjUwLjM5MzgyMjExOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc4NzU4MDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicm91dGUub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9NYWtlZmlsZT04PWlwdjYteSA6PVxcdGFmX2luZXQ2Lm8gYW55Y2FzdC5vIGlwNl9vdXRwdXQubyBpcDZfaW5wdXQubyBhZGRyY29uZi5vIFxcXFxcXG5uZXQvaXB2Ni9NYWtlZmlsZS05LVxcdFxcdGFkZHJsYWJlbC5vIFxcXFxcXG5uZXQvaXB2Ni9NYWtlZmlsZToxMDpcXHRcXHRyb3V0ZS5vIGlwNl9maWIubyBpcHY2X3NvY2tnbHVlLm8gbmRpc2MubyB1ZHAubyBcXFxcXFxubmV0L2lwdjYvTWFrZWZpbGUtMTEtXFx0XFx0cmF3Lm8gaWNtcC5vIG1jYXN0Lm8gcmVhc3NlbWJseS5vIHRjcF9pcHY2Lm8gcGluZy5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDM6NTAuNDQxNzAxNTgzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNTU4MTY5MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyBJUHY2IFJvdXRlIFJlYmFsYW5jaW5nKipcblxuQWxyaWdodCwgc28gdGhlIGNsdWUgaGVyZSBpcyB0aGF0IHNvbWV0aGluZydzIGNvbXBpbGVkIHdoZW4gSVB2NiBpcyBlbmFibGVkLiBUaGUgcXVlc3Rpb24gaXMgd2hhdD8gR2l2ZW4gdGhlIGNvbnRleHQsIG15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBpdCdzIGxpa2VseSByZWxhdGVkIHRvIGhvdyB3ZSdyZSBoYW5kbGluZyByb3V0aW5nIG9yIHBhdGggc2VsZWN0aW9uLiBJbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nIG9mIGBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZWAuIFRoYXQncyB0aGUgZnVuY3Rpb24gSSBuZWVkIHRvIGludmVzdGlnYXRlLiBJJ2xsIG5hdmlnYXRlIHRvIGBuZXQvaXB2Ni9yb3V0ZS5jYCDigJMgdGhhdCdzIHRoZSBsaWtlbHkgbG9jYXRpb24gZm9yIHRoaXMga2luZCBvZiBmdW5jdGlvbmFsaXR5IOKAkyBhbmQgZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGUgSVB2NiByb3V0aW5nIGZyYW1ld29yay4gSSdtIGxvb2tpbmcgZm9yIHRoZSB0cmlnZ2VycywgZGVwZW5kZW5jaWVzLCBhbmQgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGlzIHJlYmFsYW5jaW5nIGlzIGhhcHBlbmluZyB0byBpZGVudGlmeSBpZiBhIHBhcnRpY3VsYXIgbW9kdWxlIGlzIGVuYWJsZWQuIEkga25vdyB0aGlzIGNvZGUgcHJldHR5IHdlbGwsIHNvIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGNsdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODM3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDM6NTQuNDk3NTIxNTc0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNTA5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2Ni9yb3V0ZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ4NjIsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjQ4NjI6XFx0dm9pZCBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShzdHJ1Y3QgZmliNl9pbmZvICpydClcXG40ODYzOlxcdHtcXG40ODY0OlxcdFxcdHN0cnVjdCBmaWI2X2luZm8gKmZpcnN0O1xcbjQ4NjU6XFx0XFx0aW50IHRvdGFsO1xcbjQ4NjY6XFx0XFxuNDg2NzpcXHRcXHQvKiBJbiBjYXNlIHRoZSBlbnRpcmUgbXVsdGlwYXRoIHJvdXRlIHdhcyBtYXJrZWQgZm9yIGZsdXNoaW5nLFxcbjQ4Njg6XFx0XFx0ICogdGhlbiB0aGVyZSBpcyBubyBuZWVkIHRvIHJlYmFsYW5jZSB1cG9uIHRoZSByZW1vdmFsIG9mIGV2ZXJ5XFxuNDg2OTpcXHRcXHQgKiBzaWJsaW5nIHJvdXRlLlxcbjQ4NzA6XFx0XFx0ICovXFxuNDg3MTpcXHRcXHRpZiAoIXJ0LVxcdTAwM2VmaWI2X25zaWJsaW5ncyB8fCBydC1cXHUwMDNlc2hvdWxkX2ZsdXNoKVxcbjQ4NzI6XFx0XFx0XFx0cmV0dXJuO1xcbjQ4NzM6XFx0XFxuNDg3NDpcXHRcXHQvKiBEdXJpbmcgbG9va3VwIHJvdXRlcyBhcmUgZXZhbHVhdGVkIGluIG9yZGVyLCBzbyB3ZSBuZWVkIHRvXFxuNDg3NTpcXHRcXHQgKiBtYWtlIHN1cmUgdXBwZXIgYm91bmRzIGFyZSBhc3NpZ25lZCBmcm9tIHRoZSBmaXJzdCBzaWJsaW5nXFxuNDg3NjpcXHRcXHQgKiBvbndhcmRzLlxcbjQ4Nzc6XFx0XFx0ICovXFxuNDg3ODpcXHRcXHRmaXJzdCA9IHJ0Nl9tdWx0aXBhdGhfZmlyc3Rfc2libGluZyhydCk7XFxuNDg3OTpcXHRcXHRpZiAoV0FSTl9PTl9PTkNFKCFmaXJzdCkpXFxuNDg4MDpcXHRcXHRcXHRyZXR1cm47XFxuNDg4MTpcXHRcXG40ODgyOlxcdFxcdHRvdGFsID0gcnQ2X211bHRpcGF0aF90b3RhbF93ZWlnaHQoZmlyc3QpO1xcbjQ4ODM6XFx0XFx0cnQ2X211bHRpcGF0aF91cHBlcl9ib3VuZF9zZXQoZmlyc3QsIHRvdGFsKTtcXG40ODg0OlxcdH1cXG40ODg1OlxcdFxcbjQ4ODY6XFx0c3RhdGljIGludCBmaWI2X2lmdXAoc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnKVxcbjQ4ODc6XFx0e1xcbjQ4ODg6XFx0XFx0Y29uc3Qgc3RydWN0IGFyZ19uZXRkZXZfZXZlbnQgKmFyZyA9IHBfYXJnO1xcbjQ4ODk6XFx0XFx0c3RydWN0IG5ldCAqbmV0ID0gZGV2X25ldChhcmctXFx1MDAzZWRldik7XFxuNDg5MDpcXHRcXG40ODkxOlxcdFxcdGlmIChydCAhPSBuZXQtXFx1MDAzZWlwdjYuZmliNl9udWxsX2VudHJ5IFxcdTAwMjZcXHUwMDI2ICFydC1cXHUwMDNlbmggXFx1MDAyNlxcdTAwMjZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDM6NTQuNDk3NzQwNTA0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMDE0MTMxODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIElQdjYgTXVsdGlwYXRoIFJvdXRpbmcgRml4KipcblxuT2theSwgc28gSSd2ZSBwaW5wb2ludGVkIHRoZSBmaXguIEl0J3MgaW4gYHJ0Nl91cHBlcl9ib3VuZF9zZXRgLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgcnQ2X211bHRpcGF0aF91cHBlcl9ib3VuZF9zZXRgLiBUaGUgaXNzdWUgd2FzIGEgZGl2aXNpb24gYnkgemVybyB0aGF0IHRoaXMgY2hhbmdlIG5vdyBwcmV2ZW50cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgd2l0aGluIElQdjYgbXVsdGlwYXRoIHJvdXRpbmcuIERlZmluaXRlbHkgc29tZXRoaW5nIHdvcnRoIHRocm93aW5nIHNvbWUgZnV6emluZyBhdC5cblxuTm93LCBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIHRoZXNlIHN5bWJvbHM6IGBydDZfbXVsdGlwYXRoX3JlYmFsYW5jZWAsIGBmaWI2X2lmdXBgLCBgZmliNl9pZmRvd25gLCBgZmliNl9hZGRfcnQybm9kZWAsIGFuZCBgZmliNl9kZWxfcm91dGVgLiBUaGVzZSBhcmUgbGlrZWx5IHRvIGJlIGhlYXZpbHkgaW52b2x2ZWQgd2l0aCB0aGUgc2FtZSBsb2dpYy4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgdG8gZ2FpbiBhIGZ1bGwgcGljdHVyZSBvZiB0aGUgaW1wYWN0LlxuXG5UaGUgYElQVjZgIGNvbmZpZyBpcyB0aGUgb2J2aW91cyBvbmUsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgc3VidGx5IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBjb3VsZCBpbmZsdWVuY2UgdGhpcyBtdWx0aXBhdGggYmVoYXZpb3IuIEkgd2FudCB0byBkb3VibGUtY2hlY2sgdGhhdCBJJ20gY29uc2lkZXJpbmcgYWxsIHJlbGV2YW50IGFzcGVjdHMgb2YgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU2OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjAzOjU5LjY5OTE1Njk5MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5MjE0MTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9pcDZfZmliLmM9MTA4OT1zdGF0aWMgaW50IGZpYjZfYWRkX3J0Mm5vZGUoc3RydWN0IGZpYjZfbm9kZSAqZm4sIHN0cnVjdCBmaWI2X2luZm8gKnJ0LFxcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTEyMzEtXFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbm5ldC9pcHY2L2lwNl9maWIuYzoxMjMyOlxcdFxcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHRlbXBfc2libGluZyk7XFxubmV0L2lwdjYvaXA2X2ZpYi5jLTEyMzMtXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmMtMTI3Ny1cXHRcXHRcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxubmV0L2lwdjYvaXA2X2ZpYi5jOjEyNzg6XFx0XFx0XFx0XFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UobmV4dF9zaWJsaW5nKTtcXG5uZXQvaXB2Ni9pcDZfZmliLmMtMTI3OS1cXHRcXHRcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYz0xOTY5PXN0YXRpYyB2b2lkIGZpYjZfZGVsX3JvdXRlKHN0cnVjdCBmaWI2X3RhYmxlICp0YWJsZSwgc3RydWN0IGZpYjZfbm9kZSAqZm4sXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjAyMC1cXHRcXHRsaXN0X2RlbF9yY3UoXFx1MDAyNnJ0LVxcdTAwM2VmaWI2X3NpYmxpbmdzKTtcXG5uZXQvaXB2Ni9pcDZfZmliLmM6MjAyMTpcXHRcXHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShuZXh0X3NpYmxpbmcpO1xcbm5ldC9pcHY2L2lwNl9maWIuYy0yMDIyLVxcdH1cXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NDg1MT1zdGF0aWMgdm9pZCBydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50IHRvdGFsKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00ODYxLVxcbm5ldC9pcHY2L3JvdXRlLmM6NDg2Mjp2b2lkIHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHN0cnVjdCBmaWI2X2luZm8gKnJ0KVxcbm5ldC9pcHY2L3JvdXRlLmMtNDg2My17XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ4ODY9c3RhdGljIGludCBmaWI2X2lmdXAoc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00ODk0LVxcdFxcdGZpYjZfdXBkYXRlX3Nlcm51bV91cHRvX3Jvb3QobmV0LCBydCk7XFxubmV0L2lwdjYvcm91dGUuYzo0ODk1OlxcdFxcdHJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlKHJ0KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4OTYtXFx0fVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz00OTcxPXN0YXRpYyBpbnQgZmliNl9pZmRvd24oc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00OTk4LVxcdFxcdFxcdGZpYjZfdXBkYXRlX3Nlcm51bShuZXQsIHJ0KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ5OTk6XFx0XFx0XFx0cnQ2X211bHRpcGF0aF9yZWJhbGFuY2UocnQpO1xcbm5ldC9pcHY2L3JvdXRlLmMtNTAwMC1cXHRcXHR9XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTUwMDctXFx0XFx0ZmliNl91cGRhdGVfc2VybnVtKG5ldCwgcnQpO1xcbm5ldC9pcHY2L3JvdXRlLmM6NTAwODpcXHRcXHRydDZfbXVsdGlwYXRoX3JlYmFsYW5jZShydCk7XFxubmV0L2lwdjYvcm91dGUuYy01MDA5LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwMjowMzo1OS45MjgzNzYwOThaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc4ODMxODgwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uc2lkZXJpbmcgSVB2NiBNdWx0aXBhdGggUm91dGluZyBDb25maWd1cmF0aW9uKipcblxuSG1tLCBtdWx0aXBhdGggcm91dGluZyBpbiBJUHY2Li4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJcyB0aGVyZSBhbnl0aGluZyBzcGVjaWZpYywgb3IgYW55IG5vdGFibGUgY2hhbmdlcyBzaW5jZSB0aGUgbGFzdCB0aW1lIEkgbG9va2VkPyBMZXQncyBkaXZlIGJhY2sgaW50byB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgbmV0L2lwdjYvS2NvbmZpZ2AuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGhpbnRzIG9mIG11bHRpcGF0aCBzdXBwb3J0IG9yIHJlbGF0ZWQgcGFyYW1ldGVycyB0aGF0IEkgbWF5IGhhdmUgb3Zlcmxvb2tlZCBiZWZvcmUuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzcxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDQ6MDMuNzE2Njk4MzU3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjkzNDg1NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTVVMVElQQVRIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjA0OjAzLjc2MzY1MDI1MloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjI5NTc3NjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyB0aGUgSVAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBuZXR3b3JraW5nIGlzc3VlLCBhbmQgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBhIGNvcmUgY29uZmlndXJhdGlvbiBmaWxlOiBgbmV0L2lwdjQvS2NvbmZpZ2AuIEl0J3MgYSBuYXR1cmFsIHN0YXJ0aW5nIHBvaW50IHdoZW4gdHJvdWJsZXNob290aW5nIElQLXJlbGF0ZWQgcHJvYmxlbXMgaW4gdGhlIGtlcm5lbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGVuYWJsZWQsIGRpc2FibGVkLCBhbmQgY29uZmlndXJhYmxlIHJlZ2FyZGluZyBJUHY0LiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHZhcmlvdXMgb3B0aW9ucyBJJ2QgZXhwZWN0IHRvIGZpbmQgZGVmaW5lZCB0aGVyZSAtIHRoaW5ncyBsaWtlIElQIGZyYWdtZW50YXRpb24gaGFuZGxpbmcsIHJvdXRpbmcgdGFibGUgY29uZmlndXJhdGlvbnMsIG5ldHdvcmsgYWRkcmVzcyB0cmFuc2xhdGlvbiAoTkFUKSBzdXBwb3J0LCBhbmQgZmlyZXdhbGwgaW50ZWdyYXRpb24uIEFyZSB0aGUgZXhwZWN0ZWQgZmVhdHVyZXMgY29tcGlsZWQgaW4sIGFuZCBhcmUgdGhleSBjb25maWd1cmVkIGFzIEkgd291bGQgZXhwZWN0LCBmb3IgdGhpcyBzcGVjaWZpYyB1c2UtY2FzZSBhbmQgaGFyZHdhcmUgcGxhdGZvcm0/IEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCBpZiBhbnkgZnVuZGFtZW50YWwgc2V0dGluZ3MgYXJlIGxlYWRpbmcgdG8gdGhlIG9ic2VydmVkIGJlaGF2aW9yLCBvciBpZiBJIHNob3VsZCBmb2N1cyBteSBhdHRlbnRpb24gZWxzZXdoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTU5LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDQ6MDYuOTkzMjMxMTIxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODE4OTAwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNVUxUSVBBVEhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTYzPWNvbmZpZyBJUF9NVUxUSVBMRV9UQUJMRVNcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctNzktXFxubmV0L2lwdjQvS2NvbmZpZzo4MDpjb25maWcgSVBfUk9VVEVfTVVMVElQQVRIXFxubmV0L2lwdjQvS2NvbmZpZy04MS1cXHRib29sIFxcXCJJUDogZXF1YWwgY29zdCBtdWx0aXBhdGhcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjA0OjA3LjA0MTQyNTc5NVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjcwNDQ4NDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKk15IElQdjYgTXVsdGlwYXRoIEludmVzdGlnYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGUgaW5pdGlhbCBhc3N1bXB0aW9uIHdhcyBjb3JyZWN0OiBJUHY2IG11bHRpcGF0aCBpc24ndCBzb21lIHN0YW5kYWxvbmUgdGhpbmcsIGl0J3MgYmFrZWQgaW50byB0aGUgSVB2NiBpbXBsZW1lbnRhdGlvbiBpdHNlbGYuIFRoZSB0ZXJtIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgdGhyZXcgbWUgZm9yIGEgc2Vjb25kLCBidXQgdGhhdCdzIGp1c3QgdGhlIHBvbGljeSByb3V0aW5nIGFzcGVjdCwgYWxsb3dpbmcgZm9yIG11bHRpcGxlIHJvdXRpbmcgdGFibGVzLiBNdWx0aXBhdGgsIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBtdWNoIG1vcmUgc3RyYWlnaHRmb3J3YXJkIOKAkyBpdCdzIGFib3V0IGhhdmluZyBtdWx0aXBsZSByb3V0ZXMgdG8gdGhlICpzYW1lKiBkZXN0aW5hdGlvbi4gQ2xhc3NpYyFcblxuTm93LCB0aGUgaW50ZXJlc3RpbmcgcGFydC4gV2hlcmUncyB0aGlzIGhhbmRsZWQgaW4gdGhlIGtlcm5lbD8gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpcyBgcnQ2X211bHRpcGF0aF9yZWJhbGFuY2VgIHdpdGhpbiBgbmV0L2lwdjYvcm91dGUuY2AuIFRoYXQncyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCBzbyB0byBzcGVhay5cblxuVGhlIGNyaXRpY2FsIHRoaW5nIG5vdyBpcyB0byBzZWUgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSwgc28gSSBjYW4gc2VlIHdoYXQgdHJpZ2dlcnMgdGhlIHJlYmFsYW5jaW5nLiBJdCBsb29rcyBsaWtlIGl0IGlzIHRyaWdnZXJlZCBieSBgZmliNl9pZnVwYCwgYGZpYjZfaWZkb3duYCwgYGZpYjZfYWRkX3J0Mm5vZGVgLCBhbmQgYGZpYjZfZGVsX3JvdXRlYC4gUGVyZmVjdC4gVGhvc2UgYXJlIGV4Y2VsbGVudCBmb2N1cyBzeW1ib2xzOyB0aGV5IGNvdmVyIGludGVyZmFjZSBzdGF0ZSBjaGFuZ2VzIGFuZCByb3V0ZSBhZGRpdGlvbnMvZGVsZXRpb25zLCB3aGljaCBhcmUgcHJlY2lzZWx5IHRoZSBldmVudHMgdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBhIG11bHRpcGF0aCByb3V0ZSByZS1ldmFsdWF0aW9uLiBUaGF0IHRlbGxzIG1lIGEgbG90IGFib3V0IHRoZSBkeW5hbWljcyBvZiB0aGUgc3lzdGVtLlxuXG5Pa2F5LCBJJ3ZlIGdvdCBhIGdvb2QgaGFuZGxlIG9uIHRoaW5ncyBub3cuIEknbGwgc2V0IHVwIHRoZSByZXN1bHRzIGJhc2VkIG9uIHRoaXMga25vd2xlZGdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MjcwLCJPdXRwdXRUb2tlbnMiOjEyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwMjowNDoxMy43MTE4NzY0OTVaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjU2MDYxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0Nl9tdWx0aXBhdGhfcmViYWxhbmNlXCIsXG4gICAgXCJmaWI2X2lmdXBcIixcbiAgICBcImZpYjZfaWZkb3duXCIsXG4gICAgXCJmaWI2X2FkZF9ydDJub2RlXCIsXG4gICAgXCJmaWI2X2RlbF9yb3V0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZGl2aXNpb24gYnkgemVybyBpbiBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgd2hlbiBgdG90YWxgIGlzIDAuIFRoaXMgaGFwcGVucyBkdXJpbmcgSVB2NiBtdWx0aXBhdGggcm91dGUgcmViYWxhbmNpbmcsIHdoaWNoIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnQ2X211bHRpcGF0aF9yZWJhbGFuY2VcIixcbiAgICBcImZpYjZfaWZ1cFwiLFxuICAgIFwiZmliNl9pZmRvd25cIixcbiAgICBcImZpYjZfYWRkX3J0Mm5vZGVcIixcbiAgICBcImZpYjZfZGVsX3JvdXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBkaXZpc2lvbiBieSB6ZXJvIGluIGBydDZfdXBwZXJfYm91bmRfc2V0YCB3aGVuIGB0b3RhbGAgaXMgMC4gVGhpcyBoYXBwZW5zIGR1cmluZyBJUHY2IG11bHRpcGF0aCByb3V0ZSByZWJhbGFuY2luZywgd2hpY2ggaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwMjowNDoxMy43ODg0NDQ0MTdaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwODE0NzkzNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwMjowNDoxMy43ODg5NTYwNjdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTA4MDk2Mjg1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgZGl2aWRlLWJ5LXplcm8gYnVnIGluIGBydDZfdXBwZXJfYm91bmRfc2V0YCBieSBjaGVja2luZyBpZiBgdG90YWxgIGlzIG5vbi16ZXJvIGJlZm9yZSBwZXJmb3JtaW5nIHRoZSBkaXZpc2lvbi4gVGhpcyBkb2VzIG5vdCBpbnZvbHZlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgc3RydWN0dXJlIHBhZGRpbmcgbGVha3MsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLiBUaGUgYnVnIGl0IGZpeGVzIChkaXZpZGUtYnktemVybykgd291bGQgY2F1c2UgYSBrZXJuZWwgcGFuaWMgb3IgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyYzRmMzNjOWU1NzlhNzg1ZDI4MDEyZjUxMWM0Njg0NTk4OWMxOTljXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDI6MDM6MTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yb3V0ZS5jIGIvbmV0L2lwdjYvcm91dGUuY1xuaW5kZXggNTk2OGNlNWFkMTUwOC4uNjg5MjRjZmY5MjA1NSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3JvdXRlLmNcbisrKyBiL25ldC9pcHY2L3JvdXRlLmNcbkBAIC00ODQwLDcgKzQ4NDAsNyBAQCBzdGF0aWMgdm9pZCBydDZfdXBwZXJfYm91bmRfc2V0KHN0cnVjdCBmaWI2X2luZm8gKnJ0LCBpbnQgKndlaWdodCwgaW50IHRvdGFsKVxuIHtcbiBcdGludCB1cHBlcl9ib3VuZCA9IC0xO1xuIFxuLVx0aWYgKCFydDZfaXNfZGVhZChydCkpIHtcbitcdGlmICh0b3RhbCBcdTAwMjZcdTAwMjYgIXJ0Nl9pc19kZWFkKHJ0KSkge1xuIFx0XHQqd2VpZ2h0ICs9IHJ0LVx1MDAzZWZpYjZfbmgtXHUwMDNlZmliX25oX3dlaWdodDtcbiBcdFx0dXBwZXJfYm91bmQgPSBESVZfUk9VTkRfQ0xPU0VTVF9VTEwoKHU2NCkgKCp3ZWlnaHQpIFx1MDAzY1x1MDAzYyAzMSxcbiBcdFx0XHRcdFx0XHQgICAgdG90YWwpIC0gMTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDAyOjA0OjEzLjc4ODk1OTc0N1oiLCJTZXEiOjI5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzI5MzczNjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUHJvcG9zZWQgUm91dGUuYyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHJ0Nl91cHBlcl9ib3VuZF9zZXRgIGluIGBuZXQvaXB2Ni9yb3V0ZS5jYC4gVGhlIGNvcmUgY2hhbmdlIGlzIGEgc2ltcGxlIGNvbmRpdGlvbmFsOiBhZGRpbmcgYSBgdG90YWxgIGNoZWNrLCBzcGVjaWZpY2FsbHkgYGlmICh0b3RhbCBcdTAwMjZcdTAwMjYgIXJ0Nl9pc19kZWFkKHJ0KSlgIHdoZXJlIHByZXZpb3VzbHkgaXQgd2FzIGp1c3QgYGlmICghcnQ2X2lzX2RlYWQocnQpKWAuICBUaGUgaW50ZW50IGhlcmUgaXMgY2xlYXI6IGl0J3MgYSBkZWZlbnNpdmUgbWVhc3VyZSB0byBwcmV2ZW50IGEgZGl2aWRlLWJ5LXplcm8gZXJyb3Igd2l0aGluIHRoYXQgYERJVl9ST1VORF9DTE9TRVNUX1VMTGAgbWFjcm8gd2hlbiBgdG90YWxgIGlzIHplcm8uIFRoYXQncyBhIGNsYXNzaWMgYW5kIGNvbXBsZXRlbHkgdW5kZXJzdGFuZGFibGUgYnVnIGZpeC5cblxuTm93LCBteSBpbml0aWFsIGNvbmNlcm4sIGFzIGl0IGFsd2F5cyBpcyB3aGVuIHNlZWluZyB0aGVzZSB0eXBlcyBvZiBwYXRjaGVzLCBpcyB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgZXhwb3N1cmUuIExldCdzIHNlZS4uLiAgSXQgYXBwZWFycyB0aGlzIHBhdGNoICpvbmx5KiBpbnRyb2R1Y2VzIHRoZSBjaGVjayBmb3IgYHRvdGFsYCBiZWluZyBub24temVyby4gVGhlIGNvZGUgcGF0aCB0aGF0J3MgcHJvYmxlbWF0aWMgaXMgdGhlIGRpdmlkZS4gQWRkaW5nIHRoYXQgY2hlY2sgaXMgZnVuZGFtZW50YWxseSBhIGdvb2QgdGhpbmcsIGEgc2FuaXR5IGNoZWNrLiBTaW5jZSBpdCdzIHNpbXBseSBhIGd1YXJkIGFnYWluc3QgYSBkaXZpZGUtYnktemVybywgSSdtIGhpZ2hseSBjb25maWRlbnQgdGhhdCB0aGlzIGRvZXNuJ3QgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMuICBEaXZpZGUtYnktemVybyBlcnJvcnMgYXJlIHVzdWFsbHkgY2F1Z2h0IGJ5IHRoZSBjb21waWxlciwgdGhlIGtlcm5lbCdzIGJ1aWx0LWluIGJ1ZyBjaGVja2Vycywgb3Igd29yc2UsIHRoZXkgY2F1c2UgYSBrZXJuZWwgcGFuaWMsIHNvIGl0J3MgZ29vZCB0byBiZSBwcm9hY3RpdmUuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBsZXQgbWUgcXVpY2tseSByZXJlYWQgdGhlIHJlbGV2YW50IHBhcnRzIG9mIHRoZSBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgZnVuY3Rpb24gaXRzZWxmLCBqdXN0IHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMTEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwMjowNDoxOS4xMTgzMzcyMDFaIiwiU2VxIjozMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3Mzg0NDcxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydDZfdXBwZXJfYm91bmRfc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L3JvdXRlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvcm91dGUuYz00ODIzPXN0YXRpYyBpbnQgcnQ2X211bHRpcGF0aF90b3RhbF93ZWlnaHQoY29uc3Qgc3RydWN0IGZpYjZfaW5mbyAqcnQpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ4MzgtXFxubmV0L2lwdjYvcm91dGUuYzo0ODM5OnN0YXRpYyB2b2lkIHJ0Nl91cHBlcl9ib3VuZF9zZXQoc3RydWN0IGZpYjZfaW5mbyAqcnQsIGludCAqd2VpZ2h0LCBpbnQgdG90YWwpXFxubmV0L2lwdjYvcm91dGUuYy00ODQwLXtcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NDg1MT1zdGF0aWMgdm9pZCBydDZfbXVsdGlwYXRoX3VwcGVyX2JvdW5kX3NldChzdHJ1Y3QgZmliNl9pbmZvICpydCwgaW50IHRvdGFsKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy00ODU1LVxcbm5ldC9pcHY2L3JvdXRlLmM6NDg1NjpcXHRydDZfdXBwZXJfYm91bmRfc2V0KHJ0LCBcXHUwMDI2d2VpZ2h0LCB0b3RhbCk7XFxubmV0L2lwdjYvcm91dGUuYy00ODU3LVxcbm5ldC9pcHY2L3JvdXRlLmMtNDg1OC1cXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0ZXIsIFxcdTAwMjZydC1cXHUwMDNlZmliNl9zaWJsaW5ncywgZmliNl9zaWJsaW5ncylcXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ4NTk6XFx0XFx0cnQ2X3VwcGVyX2JvdW5kX3NldChpdGVyLCBcXHUwMDI2d2VpZ2h0LCB0b3RhbCk7XFxubmV0L2lwdjYvcm91dGUuYy00ODYwLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDQ6MTkuMjkyMTg4NzMyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1Nzc3MTAxMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkhhbmRsaW5nIHRoZSBQb3RlbnRpYWwgZm9yIFplcm8gRGl2aXNpb24qKlxuXG5BbHJpZ2h0LCB0aGlzIGFkanVzdG1lbnQgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gTXkgcHJpbWFyeSBjb25jZXJuIGhlcmUgaXMgcHJldmVudGluZyBhIGRpdmlzaW9uIGJ5IHplcm8gZXJyb3Ig4oCTIGEgY2xhc3NpYywgZWFzaWx5IGF2b2lkYWJsZSBwaXRmYWxsLiBUaGVyZSdzIG5vIGZhbmN5IG1lbW9yeSBpbml0aWFsaXphdGlvbiBnb2luZyBvbiB0aGF0IEkgbmVlZCB0byB3b3JyeSBhYm91dC4gVGhpcyBpcyBhIGNsZWFuLCB0YXJnZXRlZCBjaGFuZ2UuIEFzIHN1Y2gsIEknbSBjb25maWRlbnQgaW4gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAgZm9yIHRoaXMgcmV2aXNpb24uIE5vIGZ1cnRoZXIgY2hlY2tzIG9yIGluc3RydW1lbnRhdGlvbiBhcmUgcmVxdWlyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4OTMsIk91dHB1dFRva2VucyI6MTE1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDI6MDQ6MjIuODY5OTAxNjc5WiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBkaXZpZGUtYnktemVybyBidWcgaW4gYHJ0Nl91cHBlcl9ib3VuZF9zZXRgIGJ5IGNoZWNraW5nIGlmIGB0b3RhbGAgaXMgbm9uLXplcm8gYmVmb3JlIHBlcmZvcm1pbmcgdGhlIGRpdmlzaW9uLiBUaGlzIGRvZXMgbm90IGludm9sdmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBzdHJ1Y3R1cmUgcGFkZGluZyBsZWFrcywgb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFRoZSBidWcgaXQgZml4ZXMgKGRpdmlkZS1ieS16ZXJvKSB3b3VsZCBjYXVzZSBhIGtlcm5lbCBwYW5pYyBvciBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIGRpdmlkZS1ieS16ZXJvIGJ1ZyBpbiBgcnQ2X3VwcGVyX2JvdW5kX3NldGAgYnkgY2hlY2tpbmcgaWYgYHRvdGFsYCBpcyBub24temVybyBiZWZvcmUgcGVyZm9ybWluZyB0aGUgZGl2aXNpb24uIFRoaXMgZG9lcyBub3QgaW52b2x2ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIHN0cnVjdHVyZSBwYWRkaW5nIGxlYWtzLCBvciB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gVGhlIGJ1ZyBpdCBmaXhlcyAoZGl2aWRlLWJ5LXplcm8pIHdvdWxkIGNhdXNlIGEga2VybmVsIHBhbmljIG9yIGJlIGNhdWdodCBieSBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzc9gf[1] Phase: Succeeded StartedAt: 2026-08-17 02:04:34 +0000 UTC FinishedAt: 2026-08-17 02:04:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-17 02:04:34 +0000 UTC FinishedAt: 2026-08-17 02:04:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[2] Phase: Succeeded StartedAt: 2026-08-17 02:04:34 +0000 UTC FinishedAt: 2026-08-17 05:45:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-17 02:04:34 +0000 UTC FinishedAt: 2026-08-17 05:45:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-17 02:04:34 +0000 UTC FinishedAt: 2026-08-17 02:04:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-17 02:04:34 +0000 UTC FinishedAt: 2026-08-17 02:04:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzc9gf/series-workflowzc9gf-convert-artifact-3367346808/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-17 02:04:44 +0000 UTC FinishedAt: 2026-08-17 02:21:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-17 02:04:44 +0000 UTC FinishedAt: 2026-08-17 02:21:36 +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:*ff2c45d1-1367-44f9-ba8d-9af239621313,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-workflowzc9gf/series-workflowzc9gf-convert-artifact-3367346808/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": "3312309a-3061-44fd-b0ec-2dcb3080cddf", "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-workflowzc9gf/series-workflowzc9gf-build-action-2703976238/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-17 02:04:44 +0000 UTC FinishedAt: 2026-08-17 02:21:26 +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:*ff2c45d1-1367-44f9-ba8d-9af239621313,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-workflowzc9gf/series-workflowzc9gf-convert-artifact-3367346808/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": "3312309a-3061-44fd-b0ec-2dcb3080cddf", "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-workflowzc9gf/series-workflowzc9gf-build-action-2703976238/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-17 02:21:36 +0000 UTC FinishedAt: 2026-08-17 02:21:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-17 02:21:36 +0000 UTC FinishedAt: 2026-08-17 02:21:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-17 02:21:36 +0000 UTC FinishedAt: 2026-08-17 02:21:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-17 02:21:36 +0000 UTC FinishedAt: 2026-08-17 02:21:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzc9gf/series-workflowzc9gf-convert-artifact-2096923103/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-17 02:21:46 +0000 UTC FinishedAt: 2026-08-17 02:23:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-17 02:21:46 +0000 UTC FinishedAt: 2026-08-17 02:23:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3312309a-3061-44fd-b0ec-2dcb3080cddf,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-workflowzc9gf/series-workflowzc9gf-build-action-2703976238/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-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-17 02:23:48 +0000 UTC FinishedAt: 2026-08-17 02:23:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-17 02:23:48 +0000 UTC FinishedAt: 2026-08-17 02:23:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-17 02:23:48 +0000 UTC FinishedAt: 2026-08-17 02:40:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-17 02:23:48 +0000 UTC FinishedAt: 2026-08-17 02:40:36 +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:*ff2c45d1-1367-44f9-ba8d-9af239621313,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-workflowzc9gf/series-workflowzc9gf-convert-artifact-2096923103/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": "82b92348-f9fe-4459-93fa-8df29d821631", "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-workflowzc9gf/series-workflowzc9gf-build-action-3435990899/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-17 02:23:48 +0000 UTC FinishedAt: 2026-08-17 02:40:26 +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:*ff2c45d1-1367-44f9-ba8d-9af239621313,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-workflowzc9gf/series-workflowzc9gf-convert-artifact-2096923103/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": "82b92348-f9fe-4459-93fa-8df29d821631", "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-workflowzc9gf/series-workflowzc9gf-build-action-3435990899/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-17 02:40:36 +0000 UTC FinishedAt: 2026-08-17 02:40:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-17 02:40:36 +0000 UTC FinishedAt: 2026-08-17 02:40:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-17 02:40:36 +0000 UTC FinishedAt: 2026-08-17 02:42:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-17 02:40:36 +0000 UTC FinishedAt: 2026-08-17 02:42:28 +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:*82b92348-f9fe-4459-93fa-8df29d821631,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-workflowzc9gf/series-workflowzc9gf-build-action-3435990899/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-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-17 02:42:38 +0000 UTC FinishedAt: 2026-08-17 05:45:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-17 02:42:38 +0000 UTC FinishedAt: 2026-08-17 05:45:34 +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":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"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:*3312309a-3061-44fd-b0ec-2dcb3080cddf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*82b92348-f9fe-4459-93fa-8df29d821631,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-workflowzc9gf/series-workflowzc9gf-build-action-2703976238/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-workflowzc9gf/series-workflowzc9gf-build-action-3435990899/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-17 02:42:38 +0000 UTC FinishedAt: 2026-08-17 02:42:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-17 02:42:38 +0000 UTC FinishedAt: 2026-08-17 02:42:44 +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":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"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-workflowzc9gf/series-workflowzc9gf-convert-artifact-2520578296/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-17 02:42:38 +0000 UTC FinishedAt: 2026-08-17 02:42:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-17 02:42:38 +0000 UTC FinishedAt: 2026-08-17 02:42:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-17 02:42:38 +0000 UTC FinishedAt: 2026-08-17 02:42:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-17 02:42:48 +0000 UTC FinishedAt: 2026-08-17 05:45:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzc9gf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_multipath_rebalance","fib6_ifup","fib6_ifdown","fib6_add_rt2node","fib6_del_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"8f3c8bda-bb71-49b5-bc20-a24f59d39f8f","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-17 02:42:48 +0000 UTC FinishedAt: 2026-08-17 05:45:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3312309a-3061-44fd-b0ec-2dcb3080cddf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*82b92348-f9fe-4459-93fa-8df29d821631,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-workflowzc9gf/series-workflowzc9gf-build-action-2703976238/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-workflowzc9gf/series-workflowzc9gf-build-action-3435990899/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-workflowzc9gf/series-workflowzc9gf-convert-artifact-2520578296/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,}