Name: series-workflown62dx Phase: Succeeded StartedAt: 2026-07-31 23:56:25 +0000 UTC FinishedAt: 2026-08-01 04:18:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[0] Phase: Succeeded StartedAt: 2026-07-31 23:56:25 +0000 UTC FinishedAt: 2026-08-01 00:17:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 23:56:25 +0000 UTC FinishedAt: 2026-08-01 00:17:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "2fbade66245059c78daeaccfce13ecf499fffb51", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER", "XFRM_ALGO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "2fbade66245059c78daeaccfce13ecf499fffb51", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER", "XFRM_ALGO" ], "series_id": "dd7d3126-d4e4-4997-b990-c22ee9511193" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "xfrm_state_delete", "xfrm_del_sa", "xfrm_state_flush", "xfrm_state_add", "xfrm_state_update" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7LAogICAgJiMzNDtYRlJNX0FMR08mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX3N0YXRlX2RlbGV0ZSYjMzQ7LAogICAgJiMzNDt4ZnJtX2RlbF9zYSYjMzQ7LAogICAgJiMzNDt4ZnJtX3N0YXRlX2ZsdXNoJiMzNDssCiAgICAmIzM0O3hmcm1fc3RhdGVfYWRkJiMzNDssCiAgICAmIzM0O3hmcm1fc3RhdGVfdXBkYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGluIFhGUk0gc3RhdGUgZGVsZXRpb24gYnkgcHJvcGVybHkgaW5pdGlhbGl6aW5nIHRoZSBobGlzdCBub2RlIGFmdGVyIGRlbGV0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVBzZWMvWEZSTSBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBuZXRsaW5rIG1lc3NhZ2VzIChlLmcuLCBYRlJNX01TR19ERUxTQSwgWEZSTV9NU0dfRkxVU0hTQSkgb3Igc3RhdGUgZXhwaXJhdGlvbi4gSXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ4NzAzMDQ0YmY0YWEyNWNkNDVmY2NkNmExOTg5YjEyYjE3NjVkZThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDAwOjE2OjE3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fc3RhdGUuYyBiL25ldC94ZnJtL3hmcm1fc3RhdGUuY1xuaW5kZXggMzZhNGY2NzkzZWRlZi4uZjQ5NGMxYWM1N2E0MCAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fc3RhdGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9zdGF0ZS5jXG5AQCAtODIzLDkgJiM0Mzs4MjMsOSBAQCBpbnQgX194ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbiBcdFx0aWYgKCFobGlzdF91bmhhc2hlZChcdTAwMjZ4LVx1MDAzZWJ5c2VxKSlcbiBcdFx0XHRobGlzdF9kZWxfaW5pdF9yY3UoXHUwMDI2eC1cdTAwM2VieXNlcSk7XG4gXHRcdGlmICghaGxpc3RfdW5oYXNoZWQoXHUwMDI2eC1cdTAwM2VzdGF0ZV9jYWNoZSkpXG4tXHRcdFx0aGxpc3RfZGVsX3JjdShcdTAwMjZ4LVx1MDAzZXN0YXRlX2NhY2hlKTtcbiYjNDM7XHRcdFx0aGxpc3RfZGVsX2luaXRfcmN1KFx1MDAyNngtXHUwMDNlc3RhdGVfY2FjaGUpO1xuIFx0XHRpZiAoIWhsaXN0X3VuaGFzaGVkKFx1MDAyNngtXHUwMDNlc3RhdGVfY2FjaGVfaW5wdXQpKVxuLVx0XHRcdGhsaXN0X2RlbF9yY3UoXHUwMDI2eC1cdTAwM2VzdGF0ZV9jYWNoZV9pbnB1dCk7XG4mIzQzO1x0XHRcdGhsaXN0X2RlbF9pbml0X3JjdShcdTAwMjZ4LVx1MDAzZXN0YXRlX2NhY2hlX2lucHV0KTtcbiBcbiBcdFx0aWYgKCFobGlzdF91bmhhc2hlZChcdTAwMjZ4LVx1MDAzZWJ5c3BpKSlcbiBcdFx0XHRobGlzdF9kZWxfaW5pdF9yY3UoXHUwMDI2eC1cdTAwM2VieXNwaSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDA6MTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7LAogICAgJiMzNDtYRlJNX0FMR08mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX3N0YXRlX2RlbGV0ZSYjMzQ7LAogICAgJiMzNDt4ZnJtX2RlbF9zYSYjMzQ7LAogICAgJiMzNDt4ZnJtX3N0YXRlX2ZsdXNoJiMzNDssCiAgICAmIzM0O3hmcm1fc3RhdGVfYWRkJiMzNDssCiAgICAmIzM0O3hmcm1fc3RhdGVfdXBkYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGluIFhGUk0gc3RhdGUgZGVsZXRpb24gYnkgcHJvcGVybHkgaW5pdGlhbGl6aW5nIHRoZSBobGlzdCBub2RlIGFmdGVyIGRlbGV0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVBzZWMvWEZSTSBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBuZXRsaW5rIG1lc3NhZ2VzIChlLmcuLCBYRlJNX01TR19ERUxTQSwgWEZSTV9NU0dfRkxVU0hTQSkgb3Igc3RhdGUgZXhwaXJhdGlvbi4gSXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQ4NzAzMDQ0YmY0YWEyNWNkNDVmY2NkNmExOTg5YjEyYjE3NjVkZTgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxIDAwOjE2OjE3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9zdGF0ZS5jIGIvbmV0L3hmcm0veGZybV9zdGF0ZS5jCmluZGV4IDM2YTRmNjc5M2VkZWYuLmY0OTRjMWFjNTdhNDAgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fc3RhdGUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX3N0YXRlLmMKQEAgLTgyMyw5ICYjNDM7ODIzLDkgQEAgaW50IF9feGZybV9zdGF0ZV9kZWxldGUoc3RydWN0IHhmcm1fc3RhdGUgKngpCiAJCWlmICghaGxpc3RfdW5oYXNoZWQoJmFtcDt4LSZndDtieXNlcSkpCiAJCQlobGlzdF9kZWxfaW5pdF9yY3UoJmFtcDt4LSZndDtieXNlcSk7CiAJCWlmICghaGxpc3RfdW5oYXNoZWQoJmFtcDt4LSZndDtzdGF0ZV9jYWNoZSkpCi0JCQlobGlzdF9kZWxfcmN1KCZhbXA7eC0mZ3Q7c3RhdGVfY2FjaGUpOwomIzQzOwkJCWhsaXN0X2RlbF9pbml0X3JjdSgmYW1wO3gtJmd0O3N0YXRlX2NhY2hlKTsKIAkJaWYgKCFobGlzdF91bmhhc2hlZCgmYW1wO3gtJmd0O3N0YXRlX2NhY2hlX2lucHV0KSkKLQkJCWhsaXN0X2RlbF9yY3UoJmFtcDt4LSZndDtzdGF0ZV9jYWNoZV9pbnB1dCk7CiYjNDM7CQkJaGxpc3RfZGVsX2luaXRfcmN1KCZhbXA7eC0mZ3Q7c3RhdGVfY2FjaGVfaW5wdXQpOwogCiAJCWlmICghaGxpc3RfdW5oYXNoZWQoJmFtcDt4LSZndDtieXNwaSkpCiAJCQlobGlzdF9kZWxfaW5pdF9yY3UoJmFtcDt4LSZndDtieXNwaSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBTZWN1cml0eSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC94ZnJtL3hmcm1fc3RhdGUuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgc3RyYWlnaHRmb3J3YXJkOiB0aGV5JiMzOTtyZSByZXBsYWNpbmcgYGhsaXN0X2RlbF9yY3VgIHdpdGggYGhsaXN0X2RlbF9pbml0X3JjdWAgZm9yIGB4LSZndDtzdGF0ZV9jYWNoZWAgYW5kIGB4LSZndDtzdGF0ZV9jYWNoZV9pbnB1dGAgd2l0aGluIHRoZSBgX194ZnJtX3N0YXRlX2RlbGV0ZWAgZnVuY3Rpb24uIEltbWVkaWF0ZWx5LCBteSBleHBlcnQgZXllIGNhdGNoZXMgdGhhdCB0aGlzIGlzICpub3QqIGp1c3QgY29zbWV0aWMuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24uIFRoZSByZWFzb24gYmVpbmcsIGluaXRpYWxpemluZyB0aGUgaGxpc3Qgbm9kZSBhZnRlciBkZWxldGluZyBpdCB3aXRoIGBobGlzdF9kZWxfaW5pdF9yY3VgIGlzIGNydWNpYWwuIEl0JiMzOTtzIGEgdGV4dGJvb2sgd2F5IHRvIHByZXZlbnQgdGhvc2UgbmFzdHkgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgc2NlbmFyaW9zLiBJZiwgZm9yIHdoYXRldmVyIHJlYXNvbiwgY29kZSBsYXRlciBvbiBjaGVja3MgaWYgdGhhdCBub2RlIGlzIHN0aWxsIGhhc2hlZCB1c2luZyBgaGxpc3RfdW5oYXNoZWRgLCB0aGUgaW5pdGlhbGl6YXRpb24gaXMgZ29pbmcgdG8gYmUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGNyYXNoIGFuZCBhIHBlcmZlY3RseSBub3JtYWwgc3RhdGUuIFNvLCBJIG5lZWQgdG8gZ2V0IGludG8gYG5ldC94ZnJtL3hmcm1fc3RhdGUuY2AgYW5kIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQgdG8gYXBwcmVjaWF0ZSB0aGUgaW1wbGljYXRpb25zIGZ1bGx5LiBHb3R0YSB1bmRlcnN0YW5kIHRoZSBmbG93IG9mIGV4ZWN1dGlvbiBhbmQgaG93IHRoZXNlIHN0YXRlIGNhY2hlcyBhcmUgdXNlZCB0byBhcHByZWNpYXRlIHRoZSBzcGVjaWZpYyB2dWxuZXJhYmlsaXRpZXMgdGhpcyBwYXRjaCBwcmV2ZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3hmcm1fc3RhdGVfZGVsZXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9zdGF0ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fc3RhdGUuYz0yMjg9c3RhdGljIERFRklORV9TUElOTE9DSyh4ZnJtX3N0YXRlX2Rldl9nY19sb2NrKTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yMjktXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6MjMwOmludCBfX3hmcm1fc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yMzEtXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTYzOT1zdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgeGZybV90aW1lcl9oYW5kbGVyKHN0cnVjdCBocnRpbWVyICptZSlcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzE3LVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjcxODpcdGVyciA9IF9feGZybV9zdGF0ZV9kZWxldGUoeCk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzE5LVx0aWYgKCFlcnIpXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTgwOT1FWFBPUlRfU1lNQk9MKF9feGZybV9zdGF0ZV9kZXN0cm95KTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04MTAtXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6ODExOmludCBfX3hmcm1fc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTgxMi17XG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTg0OS19XG5uZXQveGZybS94ZnJtX3N0YXRlLmM6ODUwOkVYUE9SVF9TWU1CT0woX194ZnJtX3N0YXRlX2RlbGV0ZSk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODUxLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTg1Mj1pbnQgeGZybV9zdGF0ZV9kZWxldGUoc3RydWN0IHhmcm1fc3RhdGUgKngpXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTg1Ni1cdHNwaW5fbG9ja19iaChcdTAwMjZ4LVx1MDAzZWxvY2spO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jOjg1NzpcdGVyciA9IF9feGZybV9zdGF0ZV9kZWxldGUoeCk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODU4LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDk1CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCBmb2N1c2luZyBvbiB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgZG9pbmc6CgoqKkFuYWx5emluZyB0aGUgYF9feGZybV9zdGF0ZV9kZWxldGVgIEZ1bmN0aW9uKioKCk9rYXksIHNvIGBfX3hmcm1fc3RhdGVfZGVsZXRlYCBpcyBleHBvcnRlZCwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgZGVzaWduZWQgdG8gYmUgY2FsbGVkIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBpbnRlZ3JhbCB0byB0aGUgWEZSTSAoSVBzZWMpIHN1YnN5c3RlbSwgYXMgaXQmIzM5O3MgdXNlZCBkaXJlY3RseSB3aXRoaW4gYHhmcm1fc3RhdGVfZGVsZXRlYCBhbmQgdGhlIGB4ZnJtX3RpbWVyX2hhbmRsZXJgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhpcyBtdXN0IGJlIHNvbWUgY3JpdGljYWwgaW50ZXJuYWwgZGVsZXRpb24gZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB0aGUgcHJlc2VuY2UgYW5kIGZ1bmN0aW9uYWxpdHkgb2YgdGhpcyBjb21wb25lbnQgZGVwZW5kIG9uIGBDT05GSUdfWEZSTWAgYmVpbmcgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZywgd2hpY2ggbWFrZXMgc2Vuc2UuIEkmIzM5O2xsIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgYXNzb2NpYXRlZCB3aXRoIFhGUk0gdG8gZ2V0IGEgYmV0dGVyIHNlbnNlIG9mIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGFueSBhc3NvY2lhdGVkIG9wdGlvbnMgdGhhdCBtaWdodCBpbXBhY3QgaXRzIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYRlJNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9LY29uZmlnLTQtI1xubmV0L3hmcm0vS2NvbmZpZzo1OmNvbmZpZyBYRlJNXG5uZXQveGZybS9LY29uZmlnLTYtXHRib29sXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xMC1cbm5ldC94ZnJtL0tjb25maWc6MTE6Y29uZmlnIFhGUk1fT0ZGTE9BRFxubmV0L3hmcm0vS2NvbmZpZy0xMi1cdGJvb2xcbm5ldC94ZnJtL0tjb25maWctMTMtXG5uZXQveGZybS9LY29uZmlnOjE0OmNvbmZpZyBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctMTUtXHR0cmlzdGF0ZVxuLS1cbm5ldC94ZnJtL0tjb25maWc9MjI9aWYgSU5FVFxubmV0L3hmcm0vS2NvbmZpZzoyMzpjb25maWcgWEZSTV9VU0VSXG5uZXQveGZybS9LY29uZmlnLTI0LVx0dHJpc3RhdGUgXCYjMzQ7VHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctMzEtXG5uZXQveGZybS9LY29uZmlnOjMyOmNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXG5uZXQveGZybS9LY29uZmlnLTMzLVx0dHJpc3RhdGUgXCYjMzQ7Q29tcGF0aWJsZSBBQkkgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNDItXG5uZXQveGZybS9LY29uZmlnOjQzOmNvbmZpZyBYRlJNX0lOVEVSRkFDRVxubmV0L3hmcm0vS2NvbmZpZy00NC1cdHRyaXN0YXRlIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHZpcnR1YWwgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy01MC1cbm5ldC94ZnJtL0tjb25maWc6NTE6Y29uZmlnIFhGUk1fU1VCX1BPTElDWVxubmV0L3hmcm0vS2NvbmZpZy01Mi1cdGJvb2wgXCYjMzQ7VHJhbnNmb3JtYXRpb24gc3ViIHBvbGljeSBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy02MC1cbm5ldC94ZnJtL0tjb25maWc6NjE6Y29uZmlnIFhGUk1fTUlHUkFURVxubmV0L3hmcm0vS2NvbmZpZy02Mi1cdGJvb2wgXCYjMzQ7VHJhbnNmb3JtYXRpb24gbWlncmF0ZSBkYXRhYmFzZVwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNzEtXG5uZXQveGZybS9LY29uZmlnOjcyOmNvbmZpZyBYRlJNX1NUQVRJU1RJQ1Ncbm5ldC94ZnJtL0tjb25maWctNzMtXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHN0YXRpc3RpY3NcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTgzLSMgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZSBpbXBsZW1lbnRlZC5cbm5ldC94ZnJtL0tjb25maWc6ODQ6Y29uZmlnIFhGUk1fQUhcbm5ldC94ZnJtL0tjb25maWctODUtXHR0cmlzdGF0ZVxuLS1cbm5ldC94ZnJtL0tjb25maWctOTItIyBhbGdvcml0aG1zIHRoYXQgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZSBpbXBsZW1lbnRlZC5cbm5ldC94ZnJtL0tjb25maWc6OTM6Y29uZmlnIFhGUk1fRVNQXG5uZXQveGZybS9LY29uZmlnLTk0LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnLTEwNS1cbm5ldC94ZnJtL0tjb25maWc6MTA2OmNvbmZpZyBYRlJNX0lQQ09NUFxubmV0L3hmcm0vS2NvbmZpZy0xMDctXHR0cmlzdGF0ZVxuLS1cbm5ldC94ZnJtL0tjb25maWc9MTI1PWNvbmZpZyBORVRfS0VZX01JR1JBVEVcbi0tXG5uZXQveGZybS9LY29uZmlnLTE0MC1cbm5ldC94ZnJtL0tjb25maWc6MTQxOmNvbmZpZyBYRlJNX0lQVEZTXG5uZXQveGZybS9LY29uZmlnLTE0Mi1cdHRyaXN0YXRlIFwmIzM0O0lQc2VjIElQLVRGUy9BR0dGUkFHIChSRkMgOTM0NykgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xNTYtXG5uZXQveGZybS9LY29uZmlnOjE1Nzpjb25maWcgWEZSTV9FU1BJTlRDUFxubmV0L3hmcm0vS2NvbmZpZy0xNTgtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE3OAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3NpbmcgYXMgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBYRlJNIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIGBYRlJNYC4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBib29sZWFuIGNvbmZpZywgdHlwaWNhbGx5IGVuYWJsZWQgdGhyb3VnaCB0aGluZ3MgbGlrZSBgWEZSTV9VU0VSYCwgYElORVRfRVNQYCwgYW5kIHRoZSBsaWtlLiBNeSBmaXJzdCB0aG91Z2h0IGlzIGFsd2F5cyB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGhvdyBpdCYjMzk7cyBicm91Z2h0IGludG8gdGhlIGJ1aWxkLiBTbywgSSBuZWVkIHRvIHRyYWNlIGJhY2sgKndoYXQqIGV4YWN0bHkgaXMgc2VsZWN0aW5nIGBYRlJNYC4gSSYjMzk7bSBnb2luZyB0byBkaWcgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgdGhlIGtlcm5lbCYjMzk7cyBidWlsZCBzeXN0ZW0gdG8gc2VlIHdoaWNoIG90aGVyIG9wdGlvbnMgb3IgbW9kdWxlcyBhcmUgYnJpbmdpbmcgdGhpcyBvbmUgaW4uIEtub3dpbmcgdGhlICYjMzQ7d2h5JiMzNDsgYmVoaW5kIHRoZSBzZWxlY3Rpb24gb2YgYFhGUk1gIHdpbGwgZ2l2ZSBtZSBpbnZhbHVhYmxlIGluc2lnaHQgaW50byBpdHMgcm9sZSBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gVW5kZXJzdGFuZGluZyB0aGUgZGVjaXNpb24tbWFraW5nIHByb2Nlc3MgaGVyZSBpcyBrZXkgdG8gdHJvdWJsZXNob290aW5nLCBvcHRpbWl6aW5nLCBvciBwb3RlbnRpYWxseSBtb2RpZnlpbmcgdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgWEZSTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTE5ND1jb25maWcgSVhHQkVfSVBTRUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTE5OC1cdGRlZmF1bHQgeVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoxOTk6XHRzZWxlY3QgWEZSTV9BTEdPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIwMC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIyMD1jb25maWcgSVhHQkVWRl9JUFNFQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjI0LVx0ZGVmYXVsdCB5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjIyNTpcdHNlbGVjdCBYRlJNX0FMR09cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjI2LVx0aGVscFxuLS1cbm5ldC9pcHY0L0tjb25maWc9MzA0PWNvbmZpZyBORVRfSVBWVElcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTMwNy1cdHNlbGVjdCBORVRfSVBfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnOjMwODpcdHNlbGVjdCBYRlJNXG5uZXQvaXB2NC9LY29uZmlnLTMwOS1cdGhlbHBcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTMzOT1jb25maWcgSU5FVF9BSFxubmV0L2lwdjQvS2NvbmZpZy0zNDAtXHR0cmlzdGF0ZSBcJiMzNDtJUDogQUggdHJhbnNmb3JtYXRpb25cJiMzNDtcbm5ldC9pcHY0L0tjb25maWc6MzQxOlx0c2VsZWN0IFhGUk1fQUhcbm5ldC9pcHY0L0tjb25maWctMzQyLVx0aGVscFxuLS1cbm5ldC9pcHY0L0tjb25maWc9MzU0PWNvbmZpZyBJTkVUX0VTUFxubmV0L2lwdjQvS2NvbmZpZy0zNTUtXHR0cmlzdGF0ZSBcJiMzNDtJUDogRVNQIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG5uZXQvaXB2NC9LY29uZmlnOjM1NjpcdHNlbGVjdCBYRlJNX0VTUFxubmV0L2lwdjQvS2NvbmZpZy0zNTctXHRoZWxwXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zNjk9Y29uZmlnIElORVRfRVNQX09GRkxPQURcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTM3MS1cdGRlcGVuZHMgb24gSU5FVF9FU1Bcbm5ldC9pcHY0L0tjb25maWc6MzcyOlx0c2VsZWN0IFhGUk1fT0ZGTE9BRFxubmV0L2lwdjQvS2NvbmZpZy0zNzMtXHRkZWZhdWx0IG5cbi0tXG5uZXQvaXB2NC9LY29uZmlnPTM4Mj1jb25maWcgSU5FVF9FU1BJTlRDUFxuLS1cbm5ldC9pcHY0L0tjb25maWctMzg2LVx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L2lwdjQvS2NvbmZpZzozODc6XHRzZWxlY3QgWEZSTV9FU1BJTlRDUFxubmV0L2lwdjQvS2NvbmZpZy0zODgtXHRoZWxwXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zOTQ9Y29uZmlnIElORVRfSVBDT01QXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zOTYtXHRzZWxlY3QgSU5FVF9YRlJNX1RVTk5FTFxubmV0L2lwdjQvS2NvbmZpZzozOTc6XHRzZWxlY3QgWEZSTV9JUENPTVBcbm5ldC9pcHY0L0tjb25maWctMzk4LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9NDc9Y29uZmlnIElORVQ2X0FIXG5uZXQvaXB2Ni9LY29uZmlnLTQ4LVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogQUggdHJhbnNmb3JtYXRpb25cJiMzNDtcbm5ldC9pcHY2L0tjb25maWc6NDk6XHRzZWxlY3QgWEZSTV9BSFxubmV0L2lwdjYvS2NvbmZpZy01MC1cdGhlbHBcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTYyPWNvbmZpZyBJTkVUNl9FU1Bcbm5ldC9pcHY2L0tjb25maWctNjMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBFU1AgdHJhbnNmb3JtYXRpb25cJiMzNDtcbm5ldC9pcHY2L0tjb25maWc6NjQ6XHRzZWxlY3QgWEZSTV9FU1Bcbm5ldC9pcHY2L0tjb25maWctNjUtXHRoZWxwXG4tLVxubmV0L2lwdjYvS2NvbmZpZz03Nz1jb25maWcgSU5FVDZfRVNQX09GRkxPQURcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTc5LVx0ZGVwZW5kcyBvbiBJTkVUNl9FU1Bcbm5ldC9pcHY2L0tjb25maWc6ODA6XHRzZWxlY3QgWEZSTV9PRkZMT0FEXG5uZXQvaXB2Ni9LY29uZmlnLTgxLVx0ZGVmYXVsdCBuXG4tLVxubmV0L2lwdjYvS2NvbmZpZz05MD1jb25maWcgSU5FVDZfRVNQSU5UQ1Bcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTk0LVx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L2lwdjYvS2NvbmZpZzo5NTpcdHNlbGVjdCBYRlJNX0VTUElOVENQXG5uZXQvaXB2Ni9LY29uZmlnLTk2LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9MTAyPWNvbmZpZyBJTkVUNl9JUENPTVBcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTEwNC1cdHNlbGVjdCBJTkVUNl9YRlJNX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZzoxMDU6XHRzZWxlY3QgWEZSTV9JUENPTVBcbm5ldC9pcHY2L0tjb25maWctMTA2LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9MTEyPWNvbmZpZyBJUFY2X01JUDZcbm5ldC9pcHY2L0tjb25maWctMTEzLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogTW9iaWxpdHlcJiMzNDtcbm5ldC9pcHY2L0tjb25maWc6MTE0Olx0c2VsZWN0IFhGUk1cbm5ldC9pcHY2L0tjb25maWctMTE1LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9MTUwPWNvbmZpZyBJUFY2X1ZUSVxuLS1cbm5ldC9pcHY2L0tjb25maWctMTUzLVx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWc6MTU0Olx0c2VsZWN0IFhGUk1cbm5ldC9pcHY2L0tjb25maWctMTU1LVx0aGVscFxuLS1cbm5ldC94ZnJtL0tjb25maWc9MTQ9Y29uZmlnIFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy0xNS1cdHRyaXN0YXRlXG5uZXQveGZybS9LY29uZmlnOjE2Olx0c2VsZWN0IFhGUk1cbm5ldC94ZnJtL0tjb25maWctMTctXHRzZWxlY3QgQ1JZUFRPXG4tLVxubmV0L3hmcm0vS2NvbmZpZz0yMz1jb25maWcgWEZSTV9VU0VSXG5uZXQveGZybS9LY29uZmlnLTI0LVx0dHJpc3RhdGUgXCYjMzQ7VHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVwmIzM0O1xubmV0L3hmcm0vS2NvbmZpZzoyNTpcdHNlbGVjdCBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctMjYtXHRoZWxwXG4tLVxubmV0L3hmcm0vS2NvbmZpZz04ND1jb25maWcgWEZSTV9BSFxubmV0L3hmcm0vS2NvbmZpZy04NS1cdHRyaXN0YXRlXG5uZXQveGZybS9LY29uZmlnOjg2Olx0c2VsZWN0IFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy04Ny1cdHNlbGVjdCBDUllQVE9cbi0tXG5uZXQveGZybS9LY29uZmlnPTkzPWNvbmZpZyBYRlJNX0VTUFxubmV0L3hmcm0vS2NvbmZpZy05NC1cdHRyaXN0YXRlXG5uZXQveGZybS9LY29uZmlnOjk1Olx0c2VsZWN0IFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy05Ni1cdHNlbGVjdCBDUllQVE9cbi0tXG5uZXQveGZybS9LY29uZmlnPTEwNj1jb25maWcgWEZSTV9JUENPTVBcbm5ldC94ZnJtL0tjb25maWctMTA3LVx0dHJpc3RhdGVcbm5ldC94ZnJtL0tjb25maWc6MTA4Olx0c2VsZWN0IFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy0xMDktXHRzZWxlY3QgQ1JZUFRPXG4tLVxubmV0L3hmcm0vS2NvbmZpZz0xMTI9Y29uZmlnIE5FVF9LRVlcbm5ldC94ZnJtL0tjb25maWctMTEzLVx0dHJpc3RhdGUgXCYjMzQ7UEZfS0VZIHNvY2tldHMgKGRlcHJlY2F0ZWQpXCYjMzQ7XG5uZXQveGZybS9LY29uZmlnOjExNDpcdHNlbGVjdCBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctMTE1LVx0aGVscFxuLS1cbm5ldC94ZnJtL0tjb25maWc9MTI1PWNvbmZpZyBORVRfS0VZX01JR1JBVEVcbi0tXG5uZXQveGZybS9LY29uZmlnLTEyNy1cdGRlcGVuZHMgb24gTkVUX0tFWVxubmV0L3hmcm0vS2NvbmZpZzoxMjg6XHRzZWxlY3QgWEZSTV9NSUdSQVRFXG5uZXQveGZybS9LY29uZmlnLTEyOS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTc5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFhGUk0gQ29uZmlndXJhdGlvbiBTdHJhdGVneSoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHVzZXItc3BhY2UgY29uZmlndXJhdGlvbiBmb3IgWEZSTSwgc3BlY2lmaWNhbGx5IHRocm91Z2ggYFhGUk1fVVNFUmAuIEkmIzM5O2xsIGRlZmluaXRlbHkgaW5jbHVkZSBgWEZSTV9VU0VSYCBhbmQgYFhGUk1fQUxHT2Agd2l0aGluIEVuYWJsZUNvbmZpZ3MgZm9yIGdvb2QgbWVhc3VyZS4gTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIHZ1bG5lcmFibGUgZnVuY3Rpb25zIGZvciBmdXp6aW5nLgoKTXkgYW5hbHlzaXMgb2YgdGhlIHBhdGNoIHBvaW50cyBtZSB0b3dhcmQgYF9feGZybV9zdGF0ZV9kZWxldGVgLiBUaGF0IGxvb2tzIHByb21pc2luZy4gTm93LCBsZXQmIzM5O3MgdHJhY2UgaXRzIGNhbGwgY2hhaW4uIEl04oCZcyBjYWxsZWQgZGlyZWN0bHkgYnkgYHhmcm1fc3RhdGVfZGVsZXRlYCBhbmQsIGluZGlyZWN0bHksIHRocm91Z2ggYHhmcm1fdGltZXJfaGFuZGxlcmAuIGB4ZnJtX3N0YXRlX2RlbGV0ZWAgaXRzZWxmIGlzIHRyaWdnZXJlZCBieSBgeGZybV9kZWxfc2FgIHdpdGhpbiBgbmV0L3hmcm0veGZybV91c2VyLmNgLiBBaGEhIEFuZCBgeGZybV9kZWxfc2FgIGlzLCBpbiB0dXJuLCBjYWxsZWQgd2hlbiB0aGUgYFhGUk1fTVNHX0RFTFNBYCBuZXRsaW5rIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuIFRoYXQmIzM5O3MgdGhlIGtleS4gSSBuZWVkIHRvIHZlcmlmeSB0aGlzIGVudGlyZSBjaGFpbiB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSB1bmRlcnN0YW5kIHRoZSB0cmlnZ2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX3N0YXRlX2RlbGV0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX3N0YXRlLmM9MjI4PXN0YXRpYyBERUZJTkVfU1BJTkxPQ0soeGZybV9zdGF0ZV9kZXZfZ2NfbG9jayk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMjI5LVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjIzMDppbnQgX194ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMjMxLVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz01OTM9RVhQT1JUX1NZTUJPTCh4ZnJtX3N0YXRlX2ZyZWUpO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jLTU5NC1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo1OTU6c3RhdGljIHZvaWQgeGZybV9zdGF0ZV9kZWxldGVfdHVubmVsKHN0cnVjdCB4ZnJtX3N0YXRlICp4KTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy01OTYtc3RhdGljIHZvaWQgeGZybV9zdGF0ZV9nY19kZXN0cm95KHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy02MTAtXHR4ZnJtX3Vuc2V0X3R5cGVfb2ZmbG9hZCh4KTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo2MTE6XHR4ZnJtX3N0YXRlX2RlbGV0ZV90dW5uZWwoeCk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNjEyLVx0aWYgKHgtXHUwMDNldHlwZSkge1xuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz02Mzk9c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IHhmcm1fdGltZXJfaGFuZGxlcihzdHJ1Y3QgaHJ0aW1lciAqbWUpXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTcxNy1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo3MTg6XHRlcnIgPSBfX3hmcm1fc3RhdGVfZGVsZXRlKHgpO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jLTcxOS1cdGlmICghZXJyKVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz04MDk9RVhQT1JUX1NZTUJPTChfX3hmcm1fc3RhdGVfZGVzdHJveSk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODEwLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjgxMTppbnQgX194ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04MTIte1xuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04MzctXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6ODM4Olx0XHR4ZnJtX3N0YXRlX2RlbGV0ZV90dW5uZWwoeCk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODM5LVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04NDktfVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjg1MDpFWFBPUlRfU1lNQk9MKF9feGZybV9zdGF0ZV9kZWxldGUpO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jLTg1MS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4NTI6aW50IHhmcm1fc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTg1My17XG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTg1Ni1cdHNwaW5fbG9ja19iaChcdTAwMjZ4LVx1MDAzZWxvY2spO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jOjg1NzpcdGVyciA9IF9feGZybV9zdGF0ZV9kZWxldGUoeCk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODU4LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODYxLX1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4NjI6RVhQT1JUX1NZTUJPTCh4ZnJtX3N0YXRlX2RlbGV0ZSk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODYzLVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz04NjY9eGZybV9zdGF0ZV9mbHVzaF9zZWNjdHhfY2hlY2soc3RydWN0IG5ldCAqbmV0LCB1OCBwcm90bywgYm9vbCB0YXNrX3ZhbGlkKVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04NzQtXHRcdFx0aWYgKHhmcm1faWRfcHJvdG9fbWF0Y2goeC1cdTAwM2VpZC5wcm90bywgcHJvdG8pIFx1MDAyNlx1MDAyNlxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjg3NTpcdFx0XHQgICAoZXJyID0gc2VjdXJpdHlfeGZybV9zdGF0ZV9kZWxldGUoeCkpICE9IDApIHtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04NzYtXHRcdFx0XHR4ZnJtX2F1ZGl0X3N0YXRlX2RlbGV0ZSh4LCAwLCB0YXNrX3ZhbGlkKTtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9ODg2PXhmcm1fZGV2X3N0YXRlX2ZsdXNoX3NlY2N0eF9jaGVjayhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgdGFza192YWxpZClcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODk3LVx0XHRcdGlmICh4c28tXHUwMDNlZGV2ID09IGRldiBcdTAwMjZcdTAwMjZcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4OTg6XHRcdFx0ICAgKGVyciA9IHNlY3VyaXR5X3hmcm1fc3RhdGVfZGVsZXRlKHgpKSAhPSAwKSB7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODk5LVx0XHRcdFx0eGZybV9hdWRpdF9zdGF0ZV9kZWxldGUoeCwgMCwgdGFza192YWxpZCk7XG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTkyMT1pbnQgeGZybV9zdGF0ZV9mbHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHU4IHByb3RvLCBib29sIHRhc2tfdmFsaWQpXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTkzOS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo5NDA6XHRcdFx0XHRlcnIgPSB4ZnJtX3N0YXRlX2RlbGV0ZSh4KTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy05NDEtXHRcdFx0XHR4ZnJtX2F1ZGl0X3N0YXRlX2RlbGV0ZSh4LCBlcnIgPyAwIDogMSxcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9OTYxPWludCB4ZnJtX2Rldl9zdGF0ZV9mbHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgdGFza192YWxpZClcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtOTgyLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjk4MzpcdFx0XHRcdGVyciA9IHhmcm1fc3RhdGVfZGVsZXRlKHgpO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jLTk4NC1cdFx0XHRcdHhmcm1fZGV2X3N0YXRlX2ZyZWUoeCk7XG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTE4OTU9aW50IHhmcm1fc3RhdGVfYWRkKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xOTM5LVx0aWYgKHgxKSB7XG5uZXQveGZybS94ZnJtX3N0YXRlLmM6MTk0MDpcdFx0eGZybV9zdGF0ZV9kZWxldGUoeDEpO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE5NDEtXHRcdHhmcm1fc3RhdGVfcHV0KHgxKTtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9MjIyNj1pbnQgeGZybV9zdGF0ZV91cGRhdGUoc3RydWN0IHhmcm1fc3RhdGUgKngpXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTIyNzMtXHRpZiAoIXgpIHtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoyMjc0Olx0XHR4ZnJtX3N0YXRlX2RlbGV0ZSh4MSk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMjI3NS1cdFx0eGZybV9zdGF0ZV9wdXQoeDEpO1xuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz0zMTQ3PUVYUE9SVF9TWU1CT0woeGZybV9mbHVzaF9nYyk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzE0OC1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzozMTQ5OnN0YXRpYyB2b2lkIHhmcm1fc3RhdGVfZGVsZXRlX3R1bm5lbChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0zMTUwLXtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzE1NC1cdFx0aWYgKGF0b21pY19kZWNfcmV0dXJuKFx1MDAyNnQtXHUwMDNldHVubmVsX3VzZXJzKSA9PSAxKVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjMxNTU6XHRcdFx0eGZybV9zdGF0ZV9kZWxldGUodCk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzE1Ni1cdFx0eGZybV9zdGF0ZV9wdXQodCk7XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MTExOD1zdGF0aWMgaW50IHhmcm1fZGVsX3NhKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTExMzAtXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMTMxOlx0aWYgKChlcnIgPSBzZWN1cml0eV94ZnJtX3N0YXRlX2RlbGV0ZSh4KSkgIT0gMClcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTExMzItXHRcdGdvdG8gb3V0O1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTExMzktXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMTQwOlx0ZXJyID0geGZybV9zdGF0ZV9kZWxldGUoeCk7XG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMTQxLVx0aWYgKGVyciBcdTAwM2MgMClcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zMDA0PXN0YXRpYyBpbnQgeGZybV9hZGRfc2FfZXhwaXJlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMwMzEtXHRpZiAodWUtXHUwMDNlaGFyZCkge1xubmV0L3hmcm0veGZybV91c2VyLmM6MzAzMjpcdFx0X194ZnJtX3N0YXRlX2RlbGV0ZSh4KTtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMwMzMtXHRcdHhmcm1fYXVkaXRfc3RhdGVfZGVsZXRlKHgsIDEsIHRydWUpO1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTMzNDM9c3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGVfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMzQ4NS1cdHhmcm1fbWlncmF0ZV9zeW5jKHhjLCB4KTsgLyogdG8gcHJldmVudCBTTi9JViByZXVzZSAqL1xubmV0L3hmcm0veGZybV91c2VyLmM6MzQ4NjpcdF9feGZybV9zdGF0ZV9kZWxldGUoeCk7XG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNDg3LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODk0NwoJCQkJCQkJb3V0cHV0OiAxODYKCQkJCQkJCXRob3VnaHRzOiA2MDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBQbGFuIGZvciBYRlJNIFN0YXRlIERlbGV0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdHMgaW1wbGljYXRpb25zIGZvciB0aGUgWEZSTSBzdWJzeXN0ZW0uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBjaGFuZ2VzIHRvIGBobGlzdF9kZWxfcmN1YCB0byBgaGxpc3RfZGVsX2luaXRfcmN1YCBpbiBgX194ZnJtX3N0YXRlX2RlbGV0ZWAgZm9yIGBzdGF0ZV9jYWNoZWAgYW5kIGBzdGF0ZV9jYWNoZV9pbnB1dGAgYXJlIHByZXR0eSBzaWduaWZpY2FudCwgaW5kaWNhdGluZyBhIHBvdGVudGlhbCBmaXggZm9yIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIHNjZW5hcmlvcyB3aXRoaW4gc3RhdGUgbWFuYWdlbWVudC4gVGhpcyBsb29rcyByaXBlIGZvciBmdXp6aW5nLgoKVGhlIGB4ZnJtX3N0YXRlX2RlbGV0ZWAgYW5kIGBfX3hmcm1fc3RhdGVfZGVsZXRlYCBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIHF1aXRlIGEgZmV3IHBsYWNlcywgd2hpY2ggaXMgZ29vZCBmb3IgY292ZXJhZ2U6IGB4ZnJtX2RlbF9zYWAgKHRyaWdnZXJlZCBieSBgWEZSTV9NU0dfREVMU0FgKSwgYHhmcm1fYWRkX3NhX2V4cGlyZWAgKHZpYSBgWEZSTV9NU0dfRVhQSVJFYCksIGB4ZnJtX2RvX21pZ3JhdGVfc3RhdGVgIChgWEZSTV9NU0dfTUlHUkFURWApLCBgeGZybV9zdGF0ZV9mbHVzaGAgKGBYRlJNX01TR19GTFVTSFNBYCksIGB4ZnJtX2Rldl9zdGF0ZV9mbHVzaGAsIGB4ZnJtX3N0YXRlX2FkZGAgKGBYRlJNX01TR19ORVdTQWApLCBgeGZybV9zdGF0ZV91cGRhdGVgIChgWEZSTV9NU0dfVVBEU0FgKSwgYW5kIGFsc28gZnJvbSBhIHRpbWVyIGhhbmRsZXIgKGB4ZnJtX3RpbWVyX2hhbmRsZXJgKS4gYF9feGZybV9zdGF0ZV9kZWxldGVgIGxvb2tzIHRvIGJlIHRoZSBjb3JlIGZ1bmN0aW9uIGhlcmUuCgpJIHRoaW5rIHNldHRpbmcgYEZvY3VzU3ltYm9sc2AgdG8gcmVhbGx5IGhvbmUgaW4gb24gdGhlIGltcG9ydGFudCBmdW5jdGlvbnMgaXMgdGhlIHdheSB0byBnbyBoZXJlLiBJJiMzOTtsbCBpbml0aWFsbHkgZm9jdXMgb24gYHhmcm1fc3RhdGVfZGVsZXRlYCwgc2luY2UgaXQmIzM5O3MgdGhlIGNvcmUgZnVuY3Rpb24gYW5kIEkgY2FuIHNlZSBpdCBpcyBleHBvcnRlZCBhbmQgbm9uLWlubGluZS4gVGhlIG5ldGxpbmsgaGFuZGxlciBgeGZybV9kZWxfc2FgIGlzIGFsc28ga2V5IGJlY2F1c2UgaXQmIzM5O3MgdGhlIGRpcmVjdCB1c2VyIGludGVyZmFjZSBmb3IgZGVsZXRpb24gcmVxdWVzdHMuIExldCYjMzk7cyBhZGQgYHhmcm1fc3RhdGVfZmx1c2hgLCBgeGZybV9zdGF0ZV9hZGRgLCBhbmQgYHhmcm1fc3RhdGVfdXBkYXRlYCBhcyB3ZWxsIHRvIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgZ2V0dGluZyBjb3ZlcmFnZSBvZiB0aGUgbmV0bGluayBpbnRlcmZhY2UuCgpBcyBmYXIgYXMgY29uZmlndXJhdGlvbnMsIGBYRlJNX1VTRVJgIGFuZCBgWEZSTV9BTEdPYCBhcmUgcmVsZXZhbnQuIGBYRlJNX1VTRVJgIGRlcGVuZHMgb24gYElORVRgIHdoaWNoIEkgd2lsbCBrZWVwIGluIG1pbmQuIEkgY2FuIGp1c3Qgc3BlY2lmeSB0aGVzZSB0d28gY29uZmlncy4KCkluIHNob3J0LCB0aGUgcGF0Y2ggZml4ZXMgd2hhdCBsb29rcyBsaWtlIGEgY3JpdGljYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSBpbiBYRlJNLiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCBhZGRyZXNzZXMgc3RhdGUgZGVsZXRpb24gd2hpY2ggaXMgY2FsbGVkIHZpYSB2YXJpb3VzIE5ldGxpbmsgbWVzc2FnZXMgYW5kIGV4cGlyYXRpb24uIFRoaXMgaXMgY2VydGFpbmx5IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIGRlbWFuZHMgZnV6emluZyB0byB2YWxpZGF0ZSB0aGUgZml4JiMzOTtzIGVmZmVjdGl2ZW5lc3MuIFRpbWUgdG8gc2V0IHVwIHRoZSBmdXp6aW5nIHJ1biBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNX1VTRVImIzM0OywKICAgICYjMzQ7WEZSTV9BTEdPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eGZybV9zdGF0ZV9kZWxldGUmIzM0OywKICAgICYjMzQ7eGZybV9kZWxfc2EmIzM0OywKICAgICYjMzQ7eGZybV9zdGF0ZV9mbHVzaCYjMzQ7LAogICAgJiMzNDt4ZnJtX3N0YXRlX2FkZCYjMzQ7LAogICAgJiMzNDt4ZnJtX3N0YXRlX3VwZGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBpbiBYRlJNIHN0YXRlIGRlbGV0aW9uIGJ5IHByb3Blcmx5IGluaXRpYWxpemluZyB0aGUgaGxpc3Qgbm9kZSBhZnRlciBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQc2VjL1hGUk0gc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgbmV0bGluayBtZXNzYWdlcyAoZS5nLiwgWEZSTV9NU0dfREVMU0EsIFhGUk1fTVNHX0ZMVVNIU0EpIG9yIHN0YXRlIGV4cGlyYXRpb24uIEl0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7LAogICAgJiMzNDtYRlJNX0FMR08mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX3N0YXRlX2RlbGV0ZSYjMzQ7LAogICAgJiMzNDt4ZnJtX2RlbF9zYSYjMzQ7LAogICAgJiMzNDt4ZnJtX3N0YXRlX2ZsdXNoJiMzNDssCiAgICAmIzM0O3hmcm1fc3RhdGVfYWRkJiMzNDssCiAgICAmIzM0O3hmcm1fc3RhdGVfdXBkYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGluIFhGUk0gc3RhdGUgZGVsZXRpb24gYnkgcHJvcGVybHkgaW5pdGlhbGl6aW5nIHRoZSBobGlzdCBub2RlIGFmdGVyIGRlbGV0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVBzZWMvWEZSTSBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBuZXRsaW5rIG1lc3NhZ2VzIChlLmcuLCBYRlJNX01TR19ERUxTQSwgWEZSTV9NU0dfRkxVU0hTQSkgb3Igc3RhdGUgZXhwaXJhdGlvbi4gSXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjE2OjE4Ljc3NDA1Mjc1OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNTI3NzE3NTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1fVVNFUlwiLFxuICAgIFwiWEZSTV9BTEdPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieGZybV9zdGF0ZV9kZWxldGVcIixcbiAgICBcInhmcm1fZGVsX3NhXCIsXG4gICAgXCJ4ZnJtX3N0YXRlX2ZsdXNoXCIsXG4gICAgXCJ4ZnJtX3N0YXRlX2FkZFwiLFxuICAgIFwieGZybV9zdGF0ZV91cGRhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBpbiBYRlJNIHN0YXRlIGRlbGV0aW9uIGJ5IHByb3Blcmx5IGluaXRpYWxpemluZyB0aGUgaGxpc3Qgbm9kZSBhZnRlciBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQc2VjL1hGUk0gc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgbmV0bGluayBtZXNzYWdlcyAoZS5nLiwgWEZSTV9NU0dfREVMU0EsIFhGUk1fTVNHX0ZMVVNIU0EpIG9yIHN0YXRlIGV4cGlyYXRpb24uIEl0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjE2OjE4Ljc3NDA4MzMwOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQzMjUyMDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDg3MDMwNDRiZjRhYTI1Y2Q0NWZjY2Q2YTE5ODliMTJiMTc2NWRlOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxIDAwOjE2OjE3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fc3RhdGUuYyBiL25ldC94ZnJtL3hmcm1fc3RhdGUuY1xcbmluZGV4IDM2YTRmNjc5M2VkZWYuLmY0OTRjMWFjNTdhNDAgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV9zdGF0ZS5jXFxuKysrIGIvbmV0L3hmcm0veGZybV9zdGF0ZS5jXFxuQEAgLTgyMyw5ICs4MjMsOSBAQCBpbnQgX194ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG4gXFx0XFx0aWYgKCFobGlzdF91bmhhc2hlZChcXHUwMDI2eC1cXHUwMDNlYnlzZXEpKVxcbiBcXHRcXHRcXHRobGlzdF9kZWxfaW5pdF9yY3UoXFx1MDAyNngtXFx1MDAzZWJ5c2VxKTtcXG4gXFx0XFx0aWYgKCFobGlzdF91bmhhc2hlZChcXHUwMDI2eC1cXHUwMDNlc3RhdGVfY2FjaGUpKVxcbi1cXHRcXHRcXHRobGlzdF9kZWxfcmN1KFxcdTAwMjZ4LVxcdTAwM2VzdGF0ZV9jYWNoZSk7XFxuK1xcdFxcdFxcdGhsaXN0X2RlbF9pbml0X3JjdShcXHUwMDI2eC1cXHUwMDNlc3RhdGVfY2FjaGUpO1xcbiBcXHRcXHRpZiAoIWhsaXN0X3VuaGFzaGVkKFxcdTAwMjZ4LVxcdTAwM2VzdGF0ZV9jYWNoZV9pbnB1dCkpXFxuLVxcdFxcdFxcdGhsaXN0X2RlbF9yY3UoXFx1MDAyNngtXFx1MDAzZXN0YXRlX2NhY2hlX2lucHV0KTtcXG4rXFx0XFx0XFx0aGxpc3RfZGVsX2luaXRfcmN1KFxcdTAwMjZ4LVxcdTAwM2VzdGF0ZV9jYWNoZV9pbnB1dCk7XFxuIFxcbiBcXHRcXHRpZiAoIWhsaXN0X3VuaGFzaGVkKFxcdTAwMjZ4LVxcdTAwM2VieXNwaSkpXFxuIFxcdFxcdFxcdGhsaXN0X2RlbF9pbml0X3JjdShcXHUwMDI2eC1cXHUwMDNlYnlzcGkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMDoxNjoxOS4zMTk2ODYzMTZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyOTk4MjA3MTg1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX1VTRVJcIixcbiAgICBcIlhGUk1fQUxHT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1fc3RhdGVfZGVsZXRlXCIsXG4gICAgXCJ4ZnJtX2RlbF9zYVwiLFxuICAgIFwieGZybV9zdGF0ZV9mbHVzaFwiLFxuICAgIFwieGZybV9zdGF0ZV9hZGRcIixcbiAgICBcInhmcm1fc3RhdGVfdXBkYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgaW4gWEZSTSBzdGF0ZSBkZWxldGlvbiBieSBwcm9wZXJseSBpbml0aWFsaXppbmcgdGhlIGhsaXN0IG5vZGUgYWZ0ZXIgZGVsZXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUHNlYy9YRlJNIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgdmlhIG5ldGxpbmsgbWVzc2FnZXMgKGUuZy4sIFhGUk1fTVNHX0RFTFNBLCBYRlJNX01TR19GTFVTSFNBKSBvciBzdGF0ZSBleHBpcmF0aW9uLiBJdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkODcwMzA0NGJmNGFhMjVjZDQ1ZmNjZDZhMTk4OWIxMmIxNzY1ZGU4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAwMDoxNjoxNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fc3RhdGUuYyBiL25ldC94ZnJtL3hmcm1fc3RhdGUuY1xuaW5kZXggMzZhNGY2NzkzZWRlZi4uZjQ5NGMxYWM1N2E0MCAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fc3RhdGUuY1xuKysrIGIvbmV0L3hmcm0veGZybV9zdGF0ZS5jXG5AQCAtODIzLDkgKzgyMyw5IEBAIGludCBfX3hmcm1fc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxuIFx0XHRpZiAoIWhsaXN0X3VuaGFzaGVkKFx1MDAyNngtXHUwMDNlYnlzZXEpKVxuIFx0XHRcdGhsaXN0X2RlbF9pbml0X3JjdShcdTAwMjZ4LVx1MDAzZWJ5c2VxKTtcbiBcdFx0aWYgKCFobGlzdF91bmhhc2hlZChcdTAwMjZ4LVx1MDAzZXN0YXRlX2NhY2hlKSlcbi1cdFx0XHRobGlzdF9kZWxfcmN1KFx1MDAyNngtXHUwMDNlc3RhdGVfY2FjaGUpO1xuK1x0XHRcdGhsaXN0X2RlbF9pbml0X3JjdShcdTAwMjZ4LVx1MDAzZXN0YXRlX2NhY2hlKTtcbiBcdFx0aWYgKCFobGlzdF91bmhhc2hlZChcdTAwMjZ4LVx1MDAzZXN0YXRlX2NhY2hlX2lucHV0KSlcbi1cdFx0XHRobGlzdF9kZWxfcmN1KFx1MDAyNngtXHUwMDNlc3RhdGVfY2FjaGVfaW5wdXQpO1xuK1x0XHRcdGhsaXN0X2RlbF9pbml0X3JjdShcdTAwMjZ4LVx1MDAzZXN0YXRlX2NhY2hlX2lucHV0KTtcbiBcbiBcdFx0aWYgKCFobGlzdF91bmhhc2hlZChcdTAwMjZ4LVx1MDAzZWJ5c3BpKSlcbiBcdFx0XHRobGlzdF9kZWxfaW5pdF9yY3UoXHUwMDI2eC1cdTAwM2VieXNwaSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMDoxNjoxOS4zMTk2ODg5NTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjkzMDgzNjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgU2VjdXJpdHkgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3hmcm0veGZybV9zdGF0ZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IHRoZXkncmUgcmVwbGFjaW5nIGBobGlzdF9kZWxfcmN1YCB3aXRoIGBobGlzdF9kZWxfaW5pdF9yY3VgIGZvciBgeC1cdTAwM2VzdGF0ZV9jYWNoZWAgYW5kIGB4LVx1MDAzZXN0YXRlX2NhY2hlX2lucHV0YCB3aXRoaW4gdGhlIGBfX3hmcm1fc3RhdGVfZGVsZXRlYCBmdW5jdGlvbi4gSW1tZWRpYXRlbHksIG15IGV4cGVydCBleWUgY2F0Y2hlcyB0aGF0IHRoaXMgaXMgKm5vdCoganVzdCBjb3NtZXRpYy4gSXQncyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uLiBUaGUgcmVhc29uIGJlaW5nLCBpbml0aWFsaXppbmcgdGhlIGhsaXN0IG5vZGUgYWZ0ZXIgZGVsZXRpbmcgaXQgd2l0aCBgaGxpc3RfZGVsX2luaXRfcmN1YCBpcyBjcnVjaWFsLiBJdCdzIGEgdGV4dGJvb2sgd2F5IHRvIHByZXZlbnQgdGhvc2UgbmFzdHkgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgc2NlbmFyaW9zLiBJZiwgZm9yIHdoYXRldmVyIHJlYXNvbiwgY29kZSBsYXRlciBvbiBjaGVja3MgaWYgdGhhdCBub2RlIGlzIHN0aWxsIGhhc2hlZCB1c2luZyBgaGxpc3RfdW5oYXNoZWRgLCB0aGUgaW5pdGlhbGl6YXRpb24gaXMgZ29pbmcgdG8gYmUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGNyYXNoIGFuZCBhIHBlcmZlY3RseSBub3JtYWwgc3RhdGUuIFNvLCBJIG5lZWQgdG8gZ2V0IGludG8gYG5ldC94ZnJtL3hmcm1fc3RhdGUuY2AgYW5kIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQgdG8gYXBwcmVjaWF0ZSB0aGUgaW1wbGljYXRpb25zIGZ1bGx5LiBHb3R0YSB1bmRlcnN0YW5kIHRoZSBmbG93IG9mIGV4ZWN1dGlvbiBhbmQgaG93IHRoZXNlIHN0YXRlIGNhY2hlcyBhcmUgdXNlZCB0byBhcHByZWNpYXRlIHRoZSBzcGVjaWZpYyB2dWxuZXJhYmlsaXRpZXMgdGhpcyBwYXRjaCBwcmV2ZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1MCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjE2OjIzLjYxMjc3NDg0MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjQyNDY3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX194ZnJtX3N0YXRlX2RlbGV0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS94ZnJtX3N0YXRlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0veGZybV9zdGF0ZS5jPTIyOD1zdGF0aWMgREVGSU5FX1NQSU5MT0NLKHhmcm1fc3RhdGVfZGV2X2djX2xvY2spO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yMjktXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjIzMDppbnQgX194ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTIzMS1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz02Mzk9c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IHhmcm1fdGltZXJfaGFuZGxlcihzdHJ1Y3QgaHJ0aW1lciAqbWUpXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzE3LVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo3MTg6XFx0ZXJyID0gX194ZnJtX3N0YXRlX2RlbGV0ZSh4KTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzE5LVxcdGlmICghZXJyKVxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTgwOT1FWFBPUlRfU1lNQk9MKF9feGZybV9zdGF0ZV9kZXN0cm95KTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODEwLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4MTE6aW50IF9feGZybV9zdGF0ZV9kZWxldGUoc3RydWN0IHhmcm1fc3RhdGUgKngpXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTgxMi17XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODQ5LX1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6ODUwOkVYUE9SVF9TWU1CT0woX194ZnJtX3N0YXRlX2RlbGV0ZSk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTg1MS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9ODUyPWludCB4ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04NTYtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZ4LVxcdTAwM2Vsb2NrKTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6ODU3OlxcdGVyciA9IF9feGZybV9zdGF0ZV9kZWxldGUoeCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTg1OC1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2eC1cXHUwMDNlbG9jayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjE2OjIzLjc3NzAyNzQ0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIyMjU5NDQ1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgZm9jdXNpbmcgb24gd2hhdCB0aGlzIGZ1bmN0aW9uIGlzIGRvaW5nOlxuXG4qKkFuYWx5emluZyB0aGUgYF9feGZybV9zdGF0ZV9kZWxldGVgIEZ1bmN0aW9uKipcblxuT2theSwgc28gYF9feGZybV9zdGF0ZV9kZWxldGVgIGlzIGV4cG9ydGVkLCB3aGljaCBtZWFucyBpdCdzIGRlc2lnbmVkIHRvIGJlIGNhbGxlZCBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgaW50ZWdyYWwgdG8gdGhlIFhGUk0gKElQc2VjKSBzdWJzeXN0ZW0sIGFzIGl0J3MgdXNlZCBkaXJlY3RseSB3aXRoaW4gYHhmcm1fc3RhdGVfZGVsZXRlYCBhbmQgdGhlIGB4ZnJtX3RpbWVyX2hhbmRsZXJgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhpcyBtdXN0IGJlIHNvbWUgY3JpdGljYWwgaW50ZXJuYWwgZGVsZXRpb24gZnVuY3Rpb24uIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGF0IHRoZSBwcmVzZW5jZSBhbmQgZnVuY3Rpb25hbGl0eSBvZiB0aGlzIGNvbXBvbmVudCBkZXBlbmQgb24gYENPTkZJR19YRlJNYCBiZWluZyBlbmFibGVkIGluIHRoZSBrZXJuZWwgY29uZmlnLCB3aGljaCBtYWtlcyBzZW5zZS4gSSdsbCBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGFzc29jaWF0ZWQgd2l0aCBYRlJNIHRvIGdldCBhIGJldHRlciBzZW5zZSBvZiBpdHMgZGVwZW5kZW5jaWVzIGFuZCBhbnkgYXNzb2NpYXRlZCBvcHRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IGl0cyBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA5NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjE2OjI2Ljk5OTY0NjU2MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE0MzI0NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhGUk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9LY29uZmlnLTQtI1xcbm5ldC94ZnJtL0tjb25maWc6NTpjb25maWcgWEZSTVxcbm5ldC94ZnJtL0tjb25maWctNi1cXHRib29sXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTEwLVxcbm5ldC94ZnJtL0tjb25maWc6MTE6Y29uZmlnIFhGUk1fT0ZGTE9BRFxcbm5ldC94ZnJtL0tjb25maWctMTItXFx0Ym9vbFxcbm5ldC94ZnJtL0tjb25maWctMTMtXFxubmV0L3hmcm0vS2NvbmZpZzoxNDpjb25maWcgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0yMj1pZiBJTkVUXFxubmV0L3hmcm0vS2NvbmZpZzoyMzpjb25maWcgWEZSTV9VU0VSXFxubmV0L3hmcm0vS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZSBcXFwiVHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMzEtXFxubmV0L3hmcm0vS2NvbmZpZzozMjpjb25maWcgWEZSTV9VU0VSX0NPTVBBVFxcbm5ldC94ZnJtL0tjb25maWctMzMtXFx0dHJpc3RhdGUgXFxcIkNvbXBhdGlibGUgQUJJIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTQyLVxcbm5ldC94ZnJtL0tjb25maWc6NDM6Y29uZmlnIFhGUk1fSU5URVJGQUNFXFxubmV0L3hmcm0vS2NvbmZpZy00NC1cXHR0cmlzdGF0ZSBcXFwiVHJhbnNmb3JtYXRpb24gdmlydHVhbCBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTUwLVxcbm5ldC94ZnJtL0tjb25maWc6NTE6Y29uZmlnIFhGUk1fU1VCX1BPTElDWVxcbm5ldC94ZnJtL0tjb25maWctNTItXFx0Ym9vbCBcXFwiVHJhbnNmb3JtYXRpb24gc3ViIHBvbGljeSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy02MC1cXG5uZXQveGZybS9LY29uZmlnOjYxOmNvbmZpZyBYRlJNX01JR1JBVEVcXG5uZXQveGZybS9LY29uZmlnLTYyLVxcdGJvb2wgXFxcIlRyYW5zZm9ybWF0aW9uIG1pZ3JhdGUgZGF0YWJhc2VcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTcxLVxcbm5ldC94ZnJtL0tjb25maWc6NzI6Y29uZmlnIFhGUk1fU1RBVElTVElDU1xcbm5ldC94ZnJtL0tjb25maWctNzMtXFx0Ym9vbCBcXFwiVHJhbnNmb3JtYXRpb24gc3RhdGlzdGljc1xcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctODMtIyBSRkMgODIyMSBsaXN0cyBhcyBNVVNUIGJlIGltcGxlbWVudGVkLlxcbm5ldC94ZnJtL0tjb25maWc6ODQ6Y29uZmlnIFhGUk1fQUhcXG5uZXQveGZybS9LY29uZmlnLTg1LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTkyLSMgYWxnb3JpdGhtcyB0aGF0IFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXFxubmV0L3hmcm0vS2NvbmZpZzo5Mzpjb25maWcgWEZSTV9FU1BcXG5uZXQveGZybS9LY29uZmlnLTk0LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTEwNS1cXG5uZXQveGZybS9LY29uZmlnOjEwNjpjb25maWcgWEZSTV9JUENPTVBcXG5uZXQveGZybS9LY29uZmlnLTEwNy1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0xMjU9Y29uZmlnIE5FVF9LRVlfTUlHUkFURVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0xNDAtXFxubmV0L3hmcm0vS2NvbmZpZzoxNDE6Y29uZmlnIFhGUk1fSVBURlNcXG5uZXQveGZybS9LY29uZmlnLTE0Mi1cXHR0cmlzdGF0ZSBcXFwiSVBzZWMgSVAtVEZTL0FHR0ZSQUcgKFJGQyA5MzQ3KSBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTE1Ni1cXG5uZXQveGZybS9LY29uZmlnOjE1Nzpjb25maWcgWEZSTV9FU1BJTlRDUFxcbm5ldC94ZnJtL0tjb25maWctMTU4LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6MTY6MjcuMTExMDg0NjU1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIyODA0MDMzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3NpbmcgYXMgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFhGUk0gQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBgWEZSTWAuIEl0J3MgYSBmdW5kYW1lbnRhbCBib29sZWFuIGNvbmZpZywgdHlwaWNhbGx5IGVuYWJsZWQgdGhyb3VnaCB0aGluZ3MgbGlrZSBgWEZSTV9VU0VSYCwgYElORVRfRVNQYCwgYW5kIHRoZSBsaWtlLiBNeSBmaXJzdCB0aG91Z2h0IGlzIGFsd2F5cyB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGhvdyBpdCdzIGJyb3VnaHQgaW50byB0aGUgYnVpbGQuIFNvLCBJIG5lZWQgdG8gdHJhY2UgYmFjayAqd2hhdCogZXhhY3RseSBpcyBzZWxlY3RpbmcgYFhGUk1gLiBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIHRoZSBrZXJuZWwncyBidWlsZCBzeXN0ZW0gdG8gc2VlIHdoaWNoIG90aGVyIG9wdGlvbnMgb3IgbW9kdWxlcyBhcmUgYnJpbmdpbmcgdGhpcyBvbmUgaW4uIEtub3dpbmcgdGhlIFwid2h5XCIgYmVoaW5kIHRoZSBzZWxlY3Rpb24gb2YgYFhGUk1gIHdpbGwgZ2l2ZSBtZSBpbnZhbHVhYmxlIGluc2lnaHQgaW50byBpdHMgcm9sZSBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gVW5kZXJzdGFuZGluZyB0aGUgZGVjaXNpb24tbWFraW5nIHByb2Nlc3MgaGVyZSBpcyBrZXkgdG8gdHJvdWJsZXNob290aW5nLCBvcHRpbWl6aW5nLCBvciBwb3RlbnRpYWxseSBtb2RpZnlpbmcgdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE3OCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjE2OjMwLjMzOTEyOTQwNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDUxMjMzNjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBYRlJNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTE5ND1jb25maWcgSVhHQkVfSVBTRUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTk4LVxcdGRlZmF1bHQgeVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MTk5OlxcdHNlbGVjdCBYRlJNX0FMR09cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIwMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIyMD1jb25maWcgSVhHQkVWRl9JUFNFQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMjQtXFx0ZGVmYXVsdCB5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyMjU6XFx0c2VsZWN0IFhGUk1fQUxHT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjI2LVxcdGhlbHBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MzA0PWNvbmZpZyBORVRfSVBWVElcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzA3LVxcdHNlbGVjdCBORVRfSVBfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZzozMDg6XFx0c2VsZWN0IFhGUk1cXG5uZXQvaXB2NC9LY29uZmlnLTMwOS1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTMzOT1jb25maWcgSU5FVF9BSFxcbm5ldC9pcHY0L0tjb25maWctMzQwLVxcdHRyaXN0YXRlIFxcXCJJUDogQUggdHJhbnNmb3JtYXRpb25cXFwiXFxubmV0L2lwdjQvS2NvbmZpZzozNDE6XFx0c2VsZWN0IFhGUk1fQUhcXG5uZXQvaXB2NC9LY29uZmlnLTM0Mi1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM1ND1jb25maWcgSU5FVF9FU1BcXG5uZXQvaXB2NC9LY29uZmlnLTM1NS1cXHR0cmlzdGF0ZSBcXFwiSVA6IEVTUCB0cmFuc2Zvcm1hdGlvblxcXCJcXG5uZXQvaXB2NC9LY29uZmlnOjM1NjpcXHRzZWxlY3QgWEZSTV9FU1BcXG5uZXQvaXB2NC9LY29uZmlnLTM1Ny1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM2OT1jb25maWcgSU5FVF9FU1BfT0ZGTE9BRFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zNzEtXFx0ZGVwZW5kcyBvbiBJTkVUX0VTUFxcbm5ldC9pcHY0L0tjb25maWc6MzcyOlxcdHNlbGVjdCBYRlJNX09GRkxPQURcXG5uZXQvaXB2NC9LY29uZmlnLTM3My1cXHRkZWZhdWx0IG5cXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MzgyPWNvbmZpZyBJTkVUX0VTUElOVENQXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTM4Ni1cXHRzZWxlY3QgTkVUX1NPQ0tfTVNHXFxubmV0L2lwdjQvS2NvbmZpZzozODc6XFx0c2VsZWN0IFhGUk1fRVNQSU5UQ1BcXG5uZXQvaXB2NC9LY29uZmlnLTM4OC1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM5ND1jb25maWcgSU5FVF9JUENPTVBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzk2LVxcdHNlbGVjdCBJTkVUX1hGUk1fVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZzozOTc6XFx0c2VsZWN0IFhGUk1fSVBDT01QXFxubmV0L2lwdjQvS2NvbmZpZy0zOTgtXFx0aGVscFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz00Nz1jb25maWcgSU5FVDZfQUhcXG5uZXQvaXB2Ni9LY29uZmlnLTQ4LVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBBSCB0cmFuc2Zvcm1hdGlvblxcXCJcXG5uZXQvaXB2Ni9LY29uZmlnOjQ5OlxcdHNlbGVjdCBYRlJNX0FIXFxubmV0L2lwdjYvS2NvbmZpZy01MC1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTYyPWNvbmZpZyBJTkVUNl9FU1BcXG5uZXQvaXB2Ni9LY29uZmlnLTYzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBFU1AgdHJhbnNmb3JtYXRpb25cXFwiXFxubmV0L2lwdjYvS2NvbmZpZzo2NDpcXHRzZWxlY3QgWEZSTV9FU1BcXG5uZXQvaXB2Ni9LY29uZmlnLTY1LVxcdGhlbHBcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9Nzc9Y29uZmlnIElORVQ2X0VTUF9PRkZMT0FEXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTc5LVxcdGRlcGVuZHMgb24gSU5FVDZfRVNQXFxubmV0L2lwdjYvS2NvbmZpZzo4MDpcXHRzZWxlY3QgWEZSTV9PRkZMT0FEXFxubmV0L2lwdjYvS2NvbmZpZy04MS1cXHRkZWZhdWx0IG5cXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9OTA9Y29uZmlnIElORVQ2X0VTUElOVENQXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTk0LVxcdHNlbGVjdCBORVRfU09DS19NU0dcXG5uZXQvaXB2Ni9LY29uZmlnOjk1OlxcdHNlbGVjdCBYRlJNX0VTUElOVENQXFxubmV0L2lwdjYvS2NvbmZpZy05Ni1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTEwMj1jb25maWcgSU5FVDZfSVBDT01QXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTEwNC1cXHRzZWxlY3QgSU5FVDZfWEZSTV9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnOjEwNTpcXHRzZWxlY3QgWEZSTV9JUENPTVBcXG5uZXQvaXB2Ni9LY29uZmlnLTEwNi1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTExMj1jb25maWcgSVBWNl9NSVA2XFxubmV0L2lwdjYvS2NvbmZpZy0xMTMtXFx0dHJpc3RhdGUgXFxcIklQdjY6IE1vYmlsaXR5XFxcIlxcbm5ldC9pcHY2L0tjb25maWc6MTE0OlxcdHNlbGVjdCBYRlJNXFxubmV0L2lwdjYvS2NvbmZpZy0xMTUtXFx0aGVscFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xNTA9Y29uZmlnIElQVjZfVlRJXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE1My1cXHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWc6MTU0OlxcdHNlbGVjdCBYRlJNXFxubmV0L2lwdjYvS2NvbmZpZy0xNTUtXFx0aGVscFxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0xND1jb25maWcgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZVxcbm5ldC94ZnJtL0tjb25maWc6MTY6XFx0c2VsZWN0IFhGUk1cXG5uZXQveGZybS9LY29uZmlnLTE3LVxcdHNlbGVjdCBDUllQVE9cXG4tLVxcbm5ldC94ZnJtL0tjb25maWc9MjM9Y29uZmlnIFhGUk1fVVNFUlxcbm5ldC94ZnJtL0tjb25maWctMjQtXFx0dHJpc3RhdGUgXFxcIlRyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcXFwiXFxubmV0L3hmcm0vS2NvbmZpZzoyNTpcXHRzZWxlY3QgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy0yNi1cXHRoZWxwXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTg0PWNvbmZpZyBYRlJNX0FIXFxubmV0L3hmcm0vS2NvbmZpZy04NS1cXHR0cmlzdGF0ZVxcbm5ldC94ZnJtL0tjb25maWc6ODY6XFx0c2VsZWN0IFhGUk1fQUxHT1xcbm5ldC94ZnJtL0tjb25maWctODctXFx0c2VsZWN0IENSWVBUT1xcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz05Mz1jb25maWcgWEZSTV9FU1BcXG5uZXQveGZybS9LY29uZmlnLTk0LVxcdHRyaXN0YXRlXFxubmV0L3hmcm0vS2NvbmZpZzo5NTpcXHRzZWxlY3QgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy05Ni1cXHRzZWxlY3QgQ1JZUFRPXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTEwNj1jb25maWcgWEZSTV9JUENPTVBcXG5uZXQveGZybS9LY29uZmlnLTEwNy1cXHR0cmlzdGF0ZVxcbm5ldC94ZnJtL0tjb25maWc6MTA4OlxcdHNlbGVjdCBYRlJNX0FMR09cXG5uZXQveGZybS9LY29uZmlnLTEwOS1cXHRzZWxlY3QgQ1JZUFRPXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTExMj1jb25maWcgTkVUX0tFWVxcbm5ldC94ZnJtL0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJQRl9LRVkgc29ja2V0cyAoZGVwcmVjYXRlZClcXFwiXFxubmV0L3hmcm0vS2NvbmZpZzoxMTQ6XFx0c2VsZWN0IFhGUk1fQUxHT1xcbm5ldC94ZnJtL0tjb25maWctMTE1LVxcdGhlbHBcXG4tLVxcbm5ldC94ZnJtL0tjb25maWc9MTI1PWNvbmZpZyBORVRfS0VZX01JR1JBVEVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTI3LVxcdGRlcGVuZHMgb24gTkVUX0tFWVxcbm5ldC94ZnJtL0tjb25maWc6MTI4OlxcdHNlbGVjdCBYRlJNX01JR1JBVEVcXG5uZXQveGZybS9LY29uZmlnLTEyOS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjE2OjM1LjM5MDM2Nzc4NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNjExNDQ3OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgWEZSTSBDb25maWd1cmF0aW9uIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIG9uIHVzZXItc3BhY2UgY29uZmlndXJhdGlvbiBmb3IgWEZSTSwgc3BlY2lmaWNhbGx5IHRocm91Z2ggYFhGUk1fVVNFUmAuIEknbGwgZGVmaW5pdGVseSBpbmNsdWRlIGBYRlJNX1VTRVJgIGFuZCBgWEZSTV9BTEdPYCB3aXRoaW4gRW5hYmxlQ29uZmlncyBmb3IgZ29vZCBtZWFzdXJlLiBOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgdnVsbmVyYWJsZSBmdW5jdGlvbnMgZm9yIGZ1enppbmcuXG5cbk15IGFuYWx5c2lzIG9mIHRoZSBwYXRjaCBwb2ludHMgbWUgdG93YXJkIGBfX3hmcm1fc3RhdGVfZGVsZXRlYC4gVGhhdCBsb29rcyBwcm9taXNpbmcuIE5vdywgbGV0J3MgdHJhY2UgaXRzIGNhbGwgY2hhaW4uIEl04oCZcyBjYWxsZWQgZGlyZWN0bHkgYnkgYHhmcm1fc3RhdGVfZGVsZXRlYCBhbmQsIGluZGlyZWN0bHksIHRocm91Z2ggYHhmcm1fdGltZXJfaGFuZGxlcmAuIGB4ZnJtX3N0YXRlX2RlbGV0ZWAgaXRzZWxmIGlzIHRyaWdnZXJlZCBieSBgeGZybV9kZWxfc2FgIHdpdGhpbiBgbmV0L3hmcm0veGZybV91c2VyLmNgLiBBaGEhIEFuZCBgeGZybV9kZWxfc2FgIGlzLCBpbiB0dXJuLCBjYWxsZWQgd2hlbiB0aGUgYFhGUk1fTVNHX0RFTFNBYCBuZXRsaW5rIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuIFRoYXQncyB0aGUga2V5LiBJIG5lZWQgdG8gdmVyaWZ5IHRoaXMgZW50aXJlIGNoYWluIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIHVuZGVyc3RhbmQgdGhlIHRyaWdnZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNzksIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6MTY6MzkuNDUxNTE1NDAzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTYyNDkzMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9zdGF0ZV9kZWxldGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fc3RhdGUuYz0yMjg9c3RhdGljIERFRklORV9TUElOTE9DSyh4ZnJtX3N0YXRlX2Rldl9nY19sb2NrKTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMjI5LVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoyMzA6aW50IF9feGZybV9zdGF0ZV9kZWxldGUoc3RydWN0IHhmcm1fc3RhdGUgKngpO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yMzEtXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9NTkzPUVYUE9SVF9TWU1CT0woeGZybV9zdGF0ZV9mcmVlKTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNTk0LVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo1OTU6c3RhdGljIHZvaWQgeGZybV9zdGF0ZV9kZWxldGVfdHVubmVsKHN0cnVjdCB4ZnJtX3N0YXRlICp4KTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNTk2LXN0YXRpYyB2b2lkIHhmcm1fc3RhdGVfZ2NfZGVzdHJveShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy02MTAtXFx0eGZybV91bnNldF90eXBlX29mZmxvYWQoeCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjYxMTpcXHR4ZnJtX3N0YXRlX2RlbGV0ZV90dW5uZWwoeCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTYxMi1cXHRpZiAoeC1cXHUwMDNldHlwZSkge1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTYzOT1zdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgeGZybV90aW1lcl9oYW5kbGVyKHN0cnVjdCBocnRpbWVyICptZSlcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy03MTctXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjcxODpcXHRlcnIgPSBfX3hmcm1fc3RhdGVfZGVsZXRlKHgpO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy03MTktXFx0aWYgKCFlcnIpXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9ODA5PUVYUE9SVF9TWU1CT0woX194ZnJtX3N0YXRlX2Rlc3Ryb3kpO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04MTAtXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjgxMTppbnQgX194ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODEyLXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04MzctXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjgzODpcXHRcXHR4ZnJtX3N0YXRlX2RlbGV0ZV90dW5uZWwoeCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTgzOS1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04NDktfVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4NTA6RVhQT1JUX1NZTUJPTChfX3hmcm1fc3RhdGVfZGVsZXRlKTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODUxLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4NTI6aW50IHhmcm1fc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04NTMte1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTg1Ni1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNngtXFx1MDAzZWxvY2spO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4NTc6XFx0ZXJyID0gX194ZnJtX3N0YXRlX2RlbGV0ZSh4KTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODU4LVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ4LVxcdTAwM2Vsb2NrKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04NjEtfVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4NjI6RVhQT1JUX1NZTUJPTCh4ZnJtX3N0YXRlX2RlbGV0ZSk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTg2My1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz04NjY9eGZybV9zdGF0ZV9mbHVzaF9zZWNjdHhfY2hlY2soc3RydWN0IG5ldCAqbmV0LCB1OCBwcm90bywgYm9vbCB0YXNrX3ZhbGlkKVxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTg3NC1cXHRcXHRcXHRpZiAoeGZybV9pZF9wcm90b19tYXRjaCh4LVxcdTAwM2VpZC5wcm90bywgcHJvdG8pIFxcdTAwMjZcXHUwMDI2XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjg3NTpcXHRcXHRcXHQgICAoZXJyID0gc2VjdXJpdHlfeGZybV9zdGF0ZV9kZWxldGUoeCkpICE9IDApIHtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODc2LVxcdFxcdFxcdFxcdHhmcm1fYXVkaXRfc3RhdGVfZGVsZXRlKHgsIDAsIHRhc2tfdmFsaWQpO1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTg4Nj14ZnJtX2Rldl9zdGF0ZV9mbHVzaF9zZWNjdHhfY2hlY2soc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIHRhc2tfdmFsaWQpXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODk3LVxcdFxcdFxcdGlmICh4c28tXFx1MDAzZWRldiA9PSBkZXYgXFx1MDAyNlxcdTAwMjZcXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6ODk4OlxcdFxcdFxcdCAgIChlcnIgPSBzZWN1cml0eV94ZnJtX3N0YXRlX2RlbGV0ZSh4KSkgIT0gMCkge1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04OTktXFx0XFx0XFx0XFx0eGZybV9hdWRpdF9zdGF0ZV9kZWxldGUoeCwgMCwgdGFza192YWxpZCk7XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9OTIxPWludCB4ZnJtX3N0YXRlX2ZsdXNoKHN0cnVjdCBuZXQgKm5ldCwgdTggcHJvdG8sIGJvb2wgdGFza192YWxpZClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy05MzktXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjk0MDpcXHRcXHRcXHRcXHRlcnIgPSB4ZnJtX3N0YXRlX2RlbGV0ZSh4KTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtOTQxLVxcdFxcdFxcdFxcdHhmcm1fYXVkaXRfc3RhdGVfZGVsZXRlKHgsIGVyciA/IDAgOiAxLFxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTk2MT1pbnQgeGZybV9kZXZfc3RhdGVfZmx1c2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIHRhc2tfdmFsaWQpXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtOTgyLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo5ODM6XFx0XFx0XFx0XFx0ZXJyID0geGZybV9zdGF0ZV9kZWxldGUoeCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTk4NC1cXHRcXHRcXHRcXHR4ZnJtX2Rldl9zdGF0ZV9mcmVlKHgpO1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTE4OTU9aW50IHhmcm1fc3RhdGVfYWRkKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE5MzktXFx0aWYgKHgxKSB7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjE5NDA6XFx0XFx0eGZybV9zdGF0ZV9kZWxldGUoeDEpO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xOTQxLVxcdFxcdHhmcm1fc3RhdGVfcHV0KHgxKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz0yMjI2PWludCB4ZnJtX3N0YXRlX3VwZGF0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yMjczLVxcdGlmICgheCkge1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoyMjc0OlxcdFxcdHhmcm1fc3RhdGVfZGVsZXRlKHgxKTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMjI3NS1cXHRcXHR4ZnJtX3N0YXRlX3B1dCh4MSk7XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9MzE0Nz1FWFBPUlRfU1lNQk9MKHhmcm1fZmx1c2hfZ2MpO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0zMTQ4LVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzozMTQ5OnN0YXRpYyB2b2lkIHhmcm1fc3RhdGVfZGVsZXRlX3R1bm5lbChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzE1MC17XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzE1NC1cXHRcXHRpZiAoYXRvbWljX2RlY19yZXR1cm4oXFx1MDAyNnQtXFx1MDAzZXR1bm5lbF91c2VycykgPT0gMSlcXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6MzE1NTpcXHRcXHRcXHR4ZnJtX3N0YXRlX2RlbGV0ZSh0KTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzE1Ni1cXHRcXHR4ZnJtX3N0YXRlX3B1dCh0KTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTExMTg9c3RhdGljIGludCB4ZnJtX2RlbF9zYShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTExMzAtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MTEzMTpcXHRpZiAoKGVyciA9IHNlY3VyaXR5X3hmcm1fc3RhdGVfZGVsZXRlKHgpKSAhPSAwKVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTExMzItXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMTM5LVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjExNDA6XFx0ZXJyID0geGZybV9zdGF0ZV9kZWxldGUoeCk7XFxubmV0L3hmcm0veGZybV91c2VyLmMtMTE0MS1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTMwMDQ9c3RhdGljIGludCB4ZnJtX2FkZF9zYV9leHBpcmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMDMxLVxcdGlmICh1ZS1cXHUwMDNlaGFyZCkge1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjMwMzI6XFx0XFx0X194ZnJtX3N0YXRlX2RlbGV0ZSh4KTtcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMDMzLVxcdFxcdHhmcm1fYXVkaXRfc3RhdGVfZGVsZXRlKHgsIDEsIHRydWUpO1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MzM0Mz1zdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM0ODUtXFx0eGZybV9taWdyYXRlX3N5bmMoeGMsIHgpOyAvKiB0byBwcmV2ZW50IFNOL0lWIHJldXNlICovXFxubmV0L3hmcm0veGZybV91c2VyLmM6MzQ4NjpcXHRfX3hmcm1fc3RhdGVfZGVsZXRlKHgpO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM0ODctXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNngtXFx1MDAzZWxvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMDoxNjozOS42Njc3NzEzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk0MTA3MzQ2NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBQbGFuIGZvciBYRlJNIFN0YXRlIERlbGV0aW9uKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXRzIGltcGxpY2F0aW9ucyBmb3IgdGhlIFhGUk0gc3Vic3lzdGVtLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGUgY2hhbmdlcyB0byBgaGxpc3RfZGVsX3JjdWAgdG8gYGhsaXN0X2RlbF9pbml0X3JjdWAgaW4gYF9feGZybV9zdGF0ZV9kZWxldGVgIGZvciBgc3RhdGVfY2FjaGVgIGFuZCBgc3RhdGVfY2FjaGVfaW5wdXRgIGFyZSBwcmV0dHkgc2lnbmlmaWNhbnQsIGluZGljYXRpbmcgYSBwb3RlbnRpYWwgZml4IGZvciB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBzY2VuYXJpb3Mgd2l0aGluIHN0YXRlIG1hbmFnZW1lbnQuIFRoaXMgbG9va3MgcmlwZSBmb3IgZnV6emluZy5cblxuVGhlIGB4ZnJtX3N0YXRlX2RlbGV0ZWAgYW5kIGBfX3hmcm1fc3RhdGVfZGVsZXRlYCBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIHF1aXRlIGEgZmV3IHBsYWNlcywgd2hpY2ggaXMgZ29vZCBmb3IgY292ZXJhZ2U6IGB4ZnJtX2RlbF9zYWAgKHRyaWdnZXJlZCBieSBgWEZSTV9NU0dfREVMU0FgKSwgYHhmcm1fYWRkX3NhX2V4cGlyZWAgKHZpYSBgWEZSTV9NU0dfRVhQSVJFYCksIGB4ZnJtX2RvX21pZ3JhdGVfc3RhdGVgIChgWEZSTV9NU0dfTUlHUkFURWApLCBgeGZybV9zdGF0ZV9mbHVzaGAgKGBYRlJNX01TR19GTFVTSFNBYCksIGB4ZnJtX2Rldl9zdGF0ZV9mbHVzaGAsIGB4ZnJtX3N0YXRlX2FkZGAgKGBYRlJNX01TR19ORVdTQWApLCBgeGZybV9zdGF0ZV91cGRhdGVgIChgWEZSTV9NU0dfVVBEU0FgKSwgYW5kIGFsc28gZnJvbSBhIHRpbWVyIGhhbmRsZXIgKGB4ZnJtX3RpbWVyX2hhbmRsZXJgKS4gYF9feGZybV9zdGF0ZV9kZWxldGVgIGxvb2tzIHRvIGJlIHRoZSBjb3JlIGZ1bmN0aW9uIGhlcmUuXG5cbkkgdGhpbmsgc2V0dGluZyBgRm9jdXNTeW1ib2xzYCB0byByZWFsbHkgaG9uZSBpbiBvbiB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucyBpcyB0aGUgd2F5IHRvIGdvIGhlcmUuIEknbGwgaW5pdGlhbGx5IGZvY3VzIG9uIGB4ZnJtX3N0YXRlX2RlbGV0ZWAsIHNpbmNlIGl0J3MgdGhlIGNvcmUgZnVuY3Rpb24gYW5kIEkgY2FuIHNlZSBpdCBpcyBleHBvcnRlZCBhbmQgbm9uLWlubGluZS4gVGhlIG5ldGxpbmsgaGFuZGxlciBgeGZybV9kZWxfc2FgIGlzIGFsc28ga2V5IGJlY2F1c2UgaXQncyB0aGUgZGlyZWN0IHVzZXIgaW50ZXJmYWNlIGZvciBkZWxldGlvbiByZXF1ZXN0cy4gTGV0J3MgYWRkIGB4ZnJtX3N0YXRlX2ZsdXNoYCwgYHhmcm1fc3RhdGVfYWRkYCwgYW5kIGB4ZnJtX3N0YXRlX3VwZGF0ZWAgYXMgd2VsbCB0byBtYWtlIHN1cmUgd2UncmUgZ2V0dGluZyBjb3ZlcmFnZSBvZiB0aGUgbmV0bGluayBpbnRlcmZhY2UuXG5cbkFzIGZhciBhcyBjb25maWd1cmF0aW9ucywgYFhGUk1fVVNFUmAgYW5kIGBYRlJNX0FMR09gIGFyZSByZWxldmFudC4gYFhGUk1fVVNFUmAgZGVwZW5kcyBvbiBgSU5FVGAgd2hpY2ggSSB3aWxsIGtlZXAgaW4gbWluZC4gSSBjYW4ganVzdCBzcGVjaWZ5IHRoZXNlIHR3byBjb25maWdzLlxuXG5JbiBzaG9ydCwgdGhlIHBhdGNoIGZpeGVzIHdoYXQgbG9va3MgbGlrZSBhIGNyaXRpY2FsIG1lbW9yeSBzYWZldHkgaXNzdWUgaW4gWEZSTS4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggYWRkcmVzc2VzIHN0YXRlIGRlbGV0aW9uIHdoaWNoIGlzIGNhbGxlZCB2aWEgdmFyaW91cyBOZXRsaW5rIG1lc3NhZ2VzIGFuZCBleHBpcmF0aW9uLiBUaGlzIGlzIGNlcnRhaW5seSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBkZW1hbmRzIGZ1enppbmcgdG8gdmFsaWRhdGUgdGhlIGZpeCdzIGVmZmVjdGl2ZW5lc3MuIFRpbWUgdG8gc2V0IHVwIHRoZSBmdXp6aW5nIHJ1biBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5NDcsIk91dHB1dFRva2VucyI6MTg2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjE2OjQ5LjA3ODUwODk1OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzI0NDgwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTV9VU0VSXCIsXG4gICAgXCJYRlJNX0FMR09cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX3N0YXRlX2RlbGV0ZVwiLFxuICAgIFwieGZybV9kZWxfc2FcIixcbiAgICBcInhmcm1fc3RhdGVfZmx1c2hcIixcbiAgICBcInhmcm1fc3RhdGVfYWRkXCIsXG4gICAgXCJ4ZnJtX3N0YXRlX3VwZGF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGluIFhGUk0gc3RhdGUgZGVsZXRpb24gYnkgcHJvcGVybHkgaW5pdGlhbGl6aW5nIHRoZSBobGlzdCBub2RlIGFmdGVyIGRlbGV0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVBzZWMvWEZSTSBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBuZXRsaW5rIG1lc3NhZ2VzIChlLmcuLCBYRlJNX01TR19ERUxTQSwgWEZSTV9NU0dfRkxVU0hTQSkgb3Igc3RhdGUgZXhwaXJhdGlvbi4gSXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX1VTRVJcIixcbiAgICBcIlhGUk1fQUxHT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1fc3RhdGVfZGVsZXRlXCIsXG4gICAgXCJ4ZnJtX2RlbF9zYVwiLFxuICAgIFwieGZybV9zdGF0ZV9mbHVzaFwiLFxuICAgIFwieGZybV9zdGF0ZV9hZGRcIixcbiAgICBcInhmcm1fc3RhdGVfdXBkYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgaW4gWEZSTSBzdGF0ZSBkZWxldGlvbiBieSBwcm9wZXJseSBpbml0aWFsaXppbmcgdGhlIGhsaXN0IG5vZGUgYWZ0ZXIgZGVsZXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUHNlYy9YRlJNIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgdmlhIG5ldGxpbmsgbWVzc2FnZXMgKGUuZy4sIFhGUk1fTVNHX0RFTFNBLCBYRlJNX01TR19GTFVTSFNBKSBvciBzdGF0ZSBleHBpcmF0aW9uLiBJdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflown62dx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 23:56:25 +0000 UTC FinishedAt: 2026-08-01 00:16:50 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "2fbade66245059c78daeaccfce13ecf499fffb51", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER", "XFRM_ALGO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "2fbade66245059c78daeaccfce13ecf499fffb51", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER", "XFRM_ALGO" ], "series_id": "dd7d3126-d4e4-4997-b990-c22ee9511193" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "xfrm_state_delete", "xfrm_del_sa", "xfrm_state_flush", "xfrm_state_add", "xfrm_state_update" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7LAogICAgJiMzNDtYRlJNX0FMR08mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX3N0YXRlX2RlbGV0ZSYjMzQ7LAogICAgJiMzNDt4ZnJtX2RlbF9zYSYjMzQ7LAogICAgJiMzNDt4ZnJtX3N0YXRlX2ZsdXNoJiMzNDssCiAgICAmIzM0O3hmcm1fc3RhdGVfYWRkJiMzNDssCiAgICAmIzM0O3hmcm1fc3RhdGVfdXBkYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGluIFhGUk0gc3RhdGUgZGVsZXRpb24gYnkgcHJvcGVybHkgaW5pdGlhbGl6aW5nIHRoZSBobGlzdCBub2RlIGFmdGVyIGRlbGV0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVBzZWMvWEZSTSBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBuZXRsaW5rIG1lc3NhZ2VzIChlLmcuLCBYRlJNX01TR19ERUxTQSwgWEZSTV9NU0dfRkxVU0hTQSkgb3Igc3RhdGUgZXhwaXJhdGlvbi4gSXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDoxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ4NzAzMDQ0YmY0YWEyNWNkNDVmY2NkNmExOTg5YjEyYjE3NjVkZThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDAwOjE2OjE3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fc3RhdGUuYyBiL25ldC94ZnJtL3hmcm1fc3RhdGUuY1xuaW5kZXggMzZhNGY2NzkzZWRlZi4uZjQ5NGMxYWM1N2E0MCAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fc3RhdGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9zdGF0ZS5jXG5AQCAtODIzLDkgJiM0Mzs4MjMsOSBAQCBpbnQgX194ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbiBcdFx0aWYgKCFobGlzdF91bmhhc2hlZChcdTAwMjZ4LVx1MDAzZWJ5c2VxKSlcbiBcdFx0XHRobGlzdF9kZWxfaW5pdF9yY3UoXHUwMDI2eC1cdTAwM2VieXNlcSk7XG4gXHRcdGlmICghaGxpc3RfdW5oYXNoZWQoXHUwMDI2eC1cdTAwM2VzdGF0ZV9jYWNoZSkpXG4tXHRcdFx0aGxpc3RfZGVsX3JjdShcdTAwMjZ4LVx1MDAzZXN0YXRlX2NhY2hlKTtcbiYjNDM7XHRcdFx0aGxpc3RfZGVsX2luaXRfcmN1KFx1MDAyNngtXHUwMDNlc3RhdGVfY2FjaGUpO1xuIFx0XHRpZiAoIWhsaXN0X3VuaGFzaGVkKFx1MDAyNngtXHUwMDNlc3RhdGVfY2FjaGVfaW5wdXQpKVxuLVx0XHRcdGhsaXN0X2RlbF9yY3UoXHUwMDI2eC1cdTAwM2VzdGF0ZV9jYWNoZV9pbnB1dCk7XG4mIzQzO1x0XHRcdGhsaXN0X2RlbF9pbml0X3JjdShcdTAwMjZ4LVx1MDAzZXN0YXRlX2NhY2hlX2lucHV0KTtcbiBcbiBcdFx0aWYgKCFobGlzdF91bmhhc2hlZChcdTAwMjZ4LVx1MDAzZWJ5c3BpKSlcbiBcdFx0XHRobGlzdF9kZWxfaW5pdF9yY3UoXHUwMDI2eC1cdTAwM2VieXNwaSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDA6MTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7LAogICAgJiMzNDtYRlJNX0FMR08mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX3N0YXRlX2RlbGV0ZSYjMzQ7LAogICAgJiMzNDt4ZnJtX2RlbF9zYSYjMzQ7LAogICAgJiMzNDt4ZnJtX3N0YXRlX2ZsdXNoJiMzNDssCiAgICAmIzM0O3hmcm1fc3RhdGVfYWRkJiMzNDssCiAgICAmIzM0O3hmcm1fc3RhdGVfdXBkYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGluIFhGUk0gc3RhdGUgZGVsZXRpb24gYnkgcHJvcGVybHkgaW5pdGlhbGl6aW5nIHRoZSBobGlzdCBub2RlIGFmdGVyIGRlbGV0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVBzZWMvWEZSTSBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBuZXRsaW5rIG1lc3NhZ2VzIChlLmcuLCBYRlJNX01TR19ERUxTQSwgWEZSTV9NU0dfRkxVU0hTQSkgb3Igc3RhdGUgZXhwaXJhdGlvbi4gSXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQ4NzAzMDQ0YmY0YWEyNWNkNDVmY2NkNmExOTg5YjEyYjE3NjVkZTgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxIDAwOjE2OjE3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9zdGF0ZS5jIGIvbmV0L3hmcm0veGZybV9zdGF0ZS5jCmluZGV4IDM2YTRmNjc5M2VkZWYuLmY0OTRjMWFjNTdhNDAgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fc3RhdGUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX3N0YXRlLmMKQEAgLTgyMyw5ICYjNDM7ODIzLDkgQEAgaW50IF9feGZybV9zdGF0ZV9kZWxldGUoc3RydWN0IHhmcm1fc3RhdGUgKngpCiAJCWlmICghaGxpc3RfdW5oYXNoZWQoJmFtcDt4LSZndDtieXNlcSkpCiAJCQlobGlzdF9kZWxfaW5pdF9yY3UoJmFtcDt4LSZndDtieXNlcSk7CiAJCWlmICghaGxpc3RfdW5oYXNoZWQoJmFtcDt4LSZndDtzdGF0ZV9jYWNoZSkpCi0JCQlobGlzdF9kZWxfcmN1KCZhbXA7eC0mZ3Q7c3RhdGVfY2FjaGUpOwomIzQzOwkJCWhsaXN0X2RlbF9pbml0X3JjdSgmYW1wO3gtJmd0O3N0YXRlX2NhY2hlKTsKIAkJaWYgKCFobGlzdF91bmhhc2hlZCgmYW1wO3gtJmd0O3N0YXRlX2NhY2hlX2lucHV0KSkKLQkJCWhsaXN0X2RlbF9yY3UoJmFtcDt4LSZndDtzdGF0ZV9jYWNoZV9pbnB1dCk7CiYjNDM7CQkJaGxpc3RfZGVsX2luaXRfcmN1KCZhbXA7eC0mZ3Q7c3RhdGVfY2FjaGVfaW5wdXQpOwogCiAJCWlmICghaGxpc3RfdW5oYXNoZWQoJmFtcDt4LSZndDtieXNwaSkpCiAJCQlobGlzdF9kZWxfaW5pdF9yY3UoJmFtcDt4LSZndDtieXNwaSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBTZWN1cml0eSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC94ZnJtL3hmcm1fc3RhdGUuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgc3RyYWlnaHRmb3J3YXJkOiB0aGV5JiMzOTtyZSByZXBsYWNpbmcgYGhsaXN0X2RlbF9yY3VgIHdpdGggYGhsaXN0X2RlbF9pbml0X3JjdWAgZm9yIGB4LSZndDtzdGF0ZV9jYWNoZWAgYW5kIGB4LSZndDtzdGF0ZV9jYWNoZV9pbnB1dGAgd2l0aGluIHRoZSBgX194ZnJtX3N0YXRlX2RlbGV0ZWAgZnVuY3Rpb24uIEltbWVkaWF0ZWx5LCBteSBleHBlcnQgZXllIGNhdGNoZXMgdGhhdCB0aGlzIGlzICpub3QqIGp1c3QgY29zbWV0aWMuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24uIFRoZSByZWFzb24gYmVpbmcsIGluaXRpYWxpemluZyB0aGUgaGxpc3Qgbm9kZSBhZnRlciBkZWxldGluZyBpdCB3aXRoIGBobGlzdF9kZWxfaW5pdF9yY3VgIGlzIGNydWNpYWwuIEl0JiMzOTtzIGEgdGV4dGJvb2sgd2F5IHRvIHByZXZlbnQgdGhvc2UgbmFzdHkgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgc2NlbmFyaW9zLiBJZiwgZm9yIHdoYXRldmVyIHJlYXNvbiwgY29kZSBsYXRlciBvbiBjaGVja3MgaWYgdGhhdCBub2RlIGlzIHN0aWxsIGhhc2hlZCB1c2luZyBgaGxpc3RfdW5oYXNoZWRgLCB0aGUgaW5pdGlhbGl6YXRpb24gaXMgZ29pbmcgdG8gYmUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGNyYXNoIGFuZCBhIHBlcmZlY3RseSBub3JtYWwgc3RhdGUuIFNvLCBJIG5lZWQgdG8gZ2V0IGludG8gYG5ldC94ZnJtL3hmcm1fc3RhdGUuY2AgYW5kIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQgdG8gYXBwcmVjaWF0ZSB0aGUgaW1wbGljYXRpb25zIGZ1bGx5LiBHb3R0YSB1bmRlcnN0YW5kIHRoZSBmbG93IG9mIGV4ZWN1dGlvbiBhbmQgaG93IHRoZXNlIHN0YXRlIGNhY2hlcyBhcmUgdXNlZCB0byBhcHByZWNpYXRlIHRoZSBzcGVjaWZpYyB2dWxuZXJhYmlsaXRpZXMgdGhpcyBwYXRjaCBwcmV2ZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3hmcm1fc3RhdGVfZGVsZXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9zdGF0ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fc3RhdGUuYz0yMjg9c3RhdGljIERFRklORV9TUElOTE9DSyh4ZnJtX3N0YXRlX2Rldl9nY19sb2NrKTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yMjktXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6MjMwOmludCBfX3hmcm1fc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yMzEtXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTYzOT1zdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgeGZybV90aW1lcl9oYW5kbGVyKHN0cnVjdCBocnRpbWVyICptZSlcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzE3LVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjcxODpcdGVyciA9IF9feGZybV9zdGF0ZV9kZWxldGUoeCk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzE5LVx0aWYgKCFlcnIpXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTgwOT1FWFBPUlRfU1lNQk9MKF9feGZybV9zdGF0ZV9kZXN0cm95KTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04MTAtXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6ODExOmludCBfX3hmcm1fc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTgxMi17XG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTg0OS19XG5uZXQveGZybS94ZnJtX3N0YXRlLmM6ODUwOkVYUE9SVF9TWU1CT0woX194ZnJtX3N0YXRlX2RlbGV0ZSk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODUxLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTg1Mj1pbnQgeGZybV9zdGF0ZV9kZWxldGUoc3RydWN0IHhmcm1fc3RhdGUgKngpXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTg1Ni1cdHNwaW5fbG9ja19iaChcdTAwMjZ4LVx1MDAzZWxvY2spO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jOjg1NzpcdGVyciA9IF9feGZybV9zdGF0ZV9kZWxldGUoeCk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODU4LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDk1CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCBmb2N1c2luZyBvbiB3aGF0IHRoaXMgZnVuY3Rpb24gaXMgZG9pbmc6CgoqKkFuYWx5emluZyB0aGUgYF9feGZybV9zdGF0ZV9kZWxldGVgIEZ1bmN0aW9uKioKCk9rYXksIHNvIGBfX3hmcm1fc3RhdGVfZGVsZXRlYCBpcyBleHBvcnRlZCwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgZGVzaWduZWQgdG8gYmUgY2FsbGVkIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBpbnRlZ3JhbCB0byB0aGUgWEZSTSAoSVBzZWMpIHN1YnN5c3RlbSwgYXMgaXQmIzM5O3MgdXNlZCBkaXJlY3RseSB3aXRoaW4gYHhmcm1fc3RhdGVfZGVsZXRlYCBhbmQgdGhlIGB4ZnJtX3RpbWVyX2hhbmRsZXJgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhpcyBtdXN0IGJlIHNvbWUgY3JpdGljYWwgaW50ZXJuYWwgZGVsZXRpb24gZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB0aGUgcHJlc2VuY2UgYW5kIGZ1bmN0aW9uYWxpdHkgb2YgdGhpcyBjb21wb25lbnQgZGVwZW5kIG9uIGBDT05GSUdfWEZSTWAgYmVpbmcgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZywgd2hpY2ggbWFrZXMgc2Vuc2UuIEkmIzM5O2xsIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgYXNzb2NpYXRlZCB3aXRoIFhGUk0gdG8gZ2V0IGEgYmV0dGVyIHNlbnNlIG9mIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGFueSBhc3NvY2lhdGVkIG9wdGlvbnMgdGhhdCBtaWdodCBpbXBhY3QgaXRzIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYRlJNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9LY29uZmlnLTQtI1xubmV0L3hmcm0vS2NvbmZpZzo1OmNvbmZpZyBYRlJNXG5uZXQveGZybS9LY29uZmlnLTYtXHRib29sXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xMC1cbm5ldC94ZnJtL0tjb25maWc6MTE6Y29uZmlnIFhGUk1fT0ZGTE9BRFxubmV0L3hmcm0vS2NvbmZpZy0xMi1cdGJvb2xcbm5ldC94ZnJtL0tjb25maWctMTMtXG5uZXQveGZybS9LY29uZmlnOjE0OmNvbmZpZyBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctMTUtXHR0cmlzdGF0ZVxuLS1cbm5ldC94ZnJtL0tjb25maWc9MjI9aWYgSU5FVFxubmV0L3hmcm0vS2NvbmZpZzoyMzpjb25maWcgWEZSTV9VU0VSXG5uZXQveGZybS9LY29uZmlnLTI0LVx0dHJpc3RhdGUgXCYjMzQ7VHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctMzEtXG5uZXQveGZybS9LY29uZmlnOjMyOmNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXG5uZXQveGZybS9LY29uZmlnLTMzLVx0dHJpc3RhdGUgXCYjMzQ7Q29tcGF0aWJsZSBBQkkgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNDItXG5uZXQveGZybS9LY29uZmlnOjQzOmNvbmZpZyBYRlJNX0lOVEVSRkFDRVxubmV0L3hmcm0vS2NvbmZpZy00NC1cdHRyaXN0YXRlIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHZpcnR1YWwgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy01MC1cbm5ldC94ZnJtL0tjb25maWc6NTE6Y29uZmlnIFhGUk1fU1VCX1BPTElDWVxubmV0L3hmcm0vS2NvbmZpZy01Mi1cdGJvb2wgXCYjMzQ7VHJhbnNmb3JtYXRpb24gc3ViIHBvbGljeSBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy02MC1cbm5ldC94ZnJtL0tjb25maWc6NjE6Y29uZmlnIFhGUk1fTUlHUkFURVxubmV0L3hmcm0vS2NvbmZpZy02Mi1cdGJvb2wgXCYjMzQ7VHJhbnNmb3JtYXRpb24gbWlncmF0ZSBkYXRhYmFzZVwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNzEtXG5uZXQveGZybS9LY29uZmlnOjcyOmNvbmZpZyBYRlJNX1NUQVRJU1RJQ1Ncbm5ldC94ZnJtL0tjb25maWctNzMtXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHN0YXRpc3RpY3NcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTgzLSMgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZSBpbXBsZW1lbnRlZC5cbm5ldC94ZnJtL0tjb25maWc6ODQ6Y29uZmlnIFhGUk1fQUhcbm5ldC94ZnJtL0tjb25maWctODUtXHR0cmlzdGF0ZVxuLS1cbm5ldC94ZnJtL0tjb25maWctOTItIyBhbGdvcml0aG1zIHRoYXQgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZSBpbXBsZW1lbnRlZC5cbm5ldC94ZnJtL0tjb25maWc6OTM6Y29uZmlnIFhGUk1fRVNQXG5uZXQveGZybS9LY29uZmlnLTk0LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnLTEwNS1cbm5ldC94ZnJtL0tjb25maWc6MTA2OmNvbmZpZyBYRlJNX0lQQ09NUFxubmV0L3hmcm0vS2NvbmZpZy0xMDctXHR0cmlzdGF0ZVxuLS1cbm5ldC94ZnJtL0tjb25maWc9MTI1PWNvbmZpZyBORVRfS0VZX01JR1JBVEVcbi0tXG5uZXQveGZybS9LY29uZmlnLTE0MC1cbm5ldC94ZnJtL0tjb25maWc6MTQxOmNvbmZpZyBYRlJNX0lQVEZTXG5uZXQveGZybS9LY29uZmlnLTE0Mi1cdHRyaXN0YXRlIFwmIzM0O0lQc2VjIElQLVRGUy9BR0dGUkFHIChSRkMgOTM0NykgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xNTYtXG5uZXQveGZybS9LY29uZmlnOjE1Nzpjb25maWcgWEZSTV9FU1BJTlRDUFxubmV0L3hmcm0vS2NvbmZpZy0xNTgtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE3OAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3NpbmcgYXMgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBYRlJNIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIGBYRlJNYC4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBib29sZWFuIGNvbmZpZywgdHlwaWNhbGx5IGVuYWJsZWQgdGhyb3VnaCB0aGluZ3MgbGlrZSBgWEZSTV9VU0VSYCwgYElORVRfRVNQYCwgYW5kIHRoZSBsaWtlLiBNeSBmaXJzdCB0aG91Z2h0IGlzIGFsd2F5cyB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGhvdyBpdCYjMzk7cyBicm91Z2h0IGludG8gdGhlIGJ1aWxkLiBTbywgSSBuZWVkIHRvIHRyYWNlIGJhY2sgKndoYXQqIGV4YWN0bHkgaXMgc2VsZWN0aW5nIGBYRlJNYC4gSSYjMzk7bSBnb2luZyB0byBkaWcgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgdGhlIGtlcm5lbCYjMzk7cyBidWlsZCBzeXN0ZW0gdG8gc2VlIHdoaWNoIG90aGVyIG9wdGlvbnMgb3IgbW9kdWxlcyBhcmUgYnJpbmdpbmcgdGhpcyBvbmUgaW4uIEtub3dpbmcgdGhlICYjMzQ7d2h5JiMzNDsgYmVoaW5kIHRoZSBzZWxlY3Rpb24gb2YgYFhGUk1gIHdpbGwgZ2l2ZSBtZSBpbnZhbHVhYmxlIGluc2lnaHQgaW50byBpdHMgcm9sZSBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gVW5kZXJzdGFuZGluZyB0aGUgZGVjaXNpb24tbWFraW5nIHByb2Nlc3MgaGVyZSBpcyBrZXkgdG8gdHJvdWJsZXNob290aW5nLCBvcHRpbWl6aW5nLCBvciBwb3RlbnRpYWxseSBtb2RpZnlpbmcgdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgWEZSTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTE5ND1jb25maWcgSVhHQkVfSVBTRUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTE5OC1cdGRlZmF1bHQgeVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoxOTk6XHRzZWxlY3QgWEZSTV9BTEdPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIwMC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIyMD1jb25maWcgSVhHQkVWRl9JUFNFQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjI0LVx0ZGVmYXVsdCB5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjIyNTpcdHNlbGVjdCBYRlJNX0FMR09cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjI2LVx0aGVscFxuLS1cbm5ldC9pcHY0L0tjb25maWc9MzA0PWNvbmZpZyBORVRfSVBWVElcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTMwNy1cdHNlbGVjdCBORVRfSVBfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnOjMwODpcdHNlbGVjdCBYRlJNXG5uZXQvaXB2NC9LY29uZmlnLTMwOS1cdGhlbHBcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTMzOT1jb25maWcgSU5FVF9BSFxubmV0L2lwdjQvS2NvbmZpZy0zNDAtXHR0cmlzdGF0ZSBcJiMzNDtJUDogQUggdHJhbnNmb3JtYXRpb25cJiMzNDtcbm5ldC9pcHY0L0tjb25maWc6MzQxOlx0c2VsZWN0IFhGUk1fQUhcbm5ldC9pcHY0L0tjb25maWctMzQyLVx0aGVscFxuLS1cbm5ldC9pcHY0L0tjb25maWc9MzU0PWNvbmZpZyBJTkVUX0VTUFxubmV0L2lwdjQvS2NvbmZpZy0zNTUtXHR0cmlzdGF0ZSBcJiMzNDtJUDogRVNQIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG5uZXQvaXB2NC9LY29uZmlnOjM1NjpcdHNlbGVjdCBYRlJNX0VTUFxubmV0L2lwdjQvS2NvbmZpZy0zNTctXHRoZWxwXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zNjk9Y29uZmlnIElORVRfRVNQX09GRkxPQURcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTM3MS1cdGRlcGVuZHMgb24gSU5FVF9FU1Bcbm5ldC9pcHY0L0tjb25maWc6MzcyOlx0c2VsZWN0IFhGUk1fT0ZGTE9BRFxubmV0L2lwdjQvS2NvbmZpZy0zNzMtXHRkZWZhdWx0IG5cbi0tXG5uZXQvaXB2NC9LY29uZmlnPTM4Mj1jb25maWcgSU5FVF9FU1BJTlRDUFxuLS1cbm5ldC9pcHY0L0tjb25maWctMzg2LVx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L2lwdjQvS2NvbmZpZzozODc6XHRzZWxlY3QgWEZSTV9FU1BJTlRDUFxubmV0L2lwdjQvS2NvbmZpZy0zODgtXHRoZWxwXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zOTQ9Y29uZmlnIElORVRfSVBDT01QXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zOTYtXHRzZWxlY3QgSU5FVF9YRlJNX1RVTk5FTFxubmV0L2lwdjQvS2NvbmZpZzozOTc6XHRzZWxlY3QgWEZSTV9JUENPTVBcbm5ldC9pcHY0L0tjb25maWctMzk4LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9NDc9Y29uZmlnIElORVQ2X0FIXG5uZXQvaXB2Ni9LY29uZmlnLTQ4LVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogQUggdHJhbnNmb3JtYXRpb25cJiMzNDtcbm5ldC9pcHY2L0tjb25maWc6NDk6XHRzZWxlY3QgWEZSTV9BSFxubmV0L2lwdjYvS2NvbmZpZy01MC1cdGhlbHBcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTYyPWNvbmZpZyBJTkVUNl9FU1Bcbm5ldC9pcHY2L0tjb25maWctNjMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBFU1AgdHJhbnNmb3JtYXRpb25cJiMzNDtcbm5ldC9pcHY2L0tjb25maWc6NjQ6XHRzZWxlY3QgWEZSTV9FU1Bcbm5ldC9pcHY2L0tjb25maWctNjUtXHRoZWxwXG4tLVxubmV0L2lwdjYvS2NvbmZpZz03Nz1jb25maWcgSU5FVDZfRVNQX09GRkxPQURcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTc5LVx0ZGVwZW5kcyBvbiBJTkVUNl9FU1Bcbm5ldC9pcHY2L0tjb25maWc6ODA6XHRzZWxlY3QgWEZSTV9PRkZMT0FEXG5uZXQvaXB2Ni9LY29uZmlnLTgxLVx0ZGVmYXVsdCBuXG4tLVxubmV0L2lwdjYvS2NvbmZpZz05MD1jb25maWcgSU5FVDZfRVNQSU5UQ1Bcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTk0LVx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L2lwdjYvS2NvbmZpZzo5NTpcdHNlbGVjdCBYRlJNX0VTUElOVENQXG5uZXQvaXB2Ni9LY29uZmlnLTk2LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9MTAyPWNvbmZpZyBJTkVUNl9JUENPTVBcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTEwNC1cdHNlbGVjdCBJTkVUNl9YRlJNX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZzoxMDU6XHRzZWxlY3QgWEZSTV9JUENPTVBcbm5ldC9pcHY2L0tjb25maWctMTA2LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9MTEyPWNvbmZpZyBJUFY2X01JUDZcbm5ldC9pcHY2L0tjb25maWctMTEzLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogTW9iaWxpdHlcJiMzNDtcbm5ldC9pcHY2L0tjb25maWc6MTE0Olx0c2VsZWN0IFhGUk1cbm5ldC9pcHY2L0tjb25maWctMTE1LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9MTUwPWNvbmZpZyBJUFY2X1ZUSVxuLS1cbm5ldC9pcHY2L0tjb25maWctMTUzLVx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWc6MTU0Olx0c2VsZWN0IFhGUk1cbm5ldC9pcHY2L0tjb25maWctMTU1LVx0aGVscFxuLS1cbm5ldC94ZnJtL0tjb25maWc9MTQ9Y29uZmlnIFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy0xNS1cdHRyaXN0YXRlXG5uZXQveGZybS9LY29uZmlnOjE2Olx0c2VsZWN0IFhGUk1cbm5ldC94ZnJtL0tjb25maWctMTctXHRzZWxlY3QgQ1JZUFRPXG4tLVxubmV0L3hmcm0vS2NvbmZpZz0yMz1jb25maWcgWEZSTV9VU0VSXG5uZXQveGZybS9LY29uZmlnLTI0LVx0dHJpc3RhdGUgXCYjMzQ7VHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVwmIzM0O1xubmV0L3hmcm0vS2NvbmZpZzoyNTpcdHNlbGVjdCBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctMjYtXHRoZWxwXG4tLVxubmV0L3hmcm0vS2NvbmZpZz04ND1jb25maWcgWEZSTV9BSFxubmV0L3hmcm0vS2NvbmZpZy04NS1cdHRyaXN0YXRlXG5uZXQveGZybS9LY29uZmlnOjg2Olx0c2VsZWN0IFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy04Ny1cdHNlbGVjdCBDUllQVE9cbi0tXG5uZXQveGZybS9LY29uZmlnPTkzPWNvbmZpZyBYRlJNX0VTUFxubmV0L3hmcm0vS2NvbmZpZy05NC1cdHRyaXN0YXRlXG5uZXQveGZybS9LY29uZmlnOjk1Olx0c2VsZWN0IFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy05Ni1cdHNlbGVjdCBDUllQVE9cbi0tXG5uZXQveGZybS9LY29uZmlnPTEwNj1jb25maWcgWEZSTV9JUENPTVBcbm5ldC94ZnJtL0tjb25maWctMTA3LVx0dHJpc3RhdGVcbm5ldC94ZnJtL0tjb25maWc6MTA4Olx0c2VsZWN0IFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy0xMDktXHRzZWxlY3QgQ1JZUFRPXG4tLVxubmV0L3hmcm0vS2NvbmZpZz0xMTI9Y29uZmlnIE5FVF9LRVlcbm5ldC94ZnJtL0tjb25maWctMTEzLVx0dHJpc3RhdGUgXCYjMzQ7UEZfS0VZIHNvY2tldHMgKGRlcHJlY2F0ZWQpXCYjMzQ7XG5uZXQveGZybS9LY29uZmlnOjExNDpcdHNlbGVjdCBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctMTE1LVx0aGVscFxuLS1cbm5ldC94ZnJtL0tjb25maWc9MTI1PWNvbmZpZyBORVRfS0VZX01JR1JBVEVcbi0tXG5uZXQveGZybS9LY29uZmlnLTEyNy1cdGRlcGVuZHMgb24gTkVUX0tFWVxubmV0L3hmcm0vS2NvbmZpZzoxMjg6XHRzZWxlY3QgWEZSTV9NSUdSQVRFXG5uZXQveGZybS9LY29uZmlnLTEyOS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTc5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFhGUk0gQ29uZmlndXJhdGlvbiBTdHJhdGVneSoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHVzZXItc3BhY2UgY29uZmlndXJhdGlvbiBmb3IgWEZSTSwgc3BlY2lmaWNhbGx5IHRocm91Z2ggYFhGUk1fVVNFUmAuIEkmIzM5O2xsIGRlZmluaXRlbHkgaW5jbHVkZSBgWEZSTV9VU0VSYCBhbmQgYFhGUk1fQUxHT2Agd2l0aGluIEVuYWJsZUNvbmZpZ3MgZm9yIGdvb2QgbWVhc3VyZS4gTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIHZ1bG5lcmFibGUgZnVuY3Rpb25zIGZvciBmdXp6aW5nLgoKTXkgYW5hbHlzaXMgb2YgdGhlIHBhdGNoIHBvaW50cyBtZSB0b3dhcmQgYF9feGZybV9zdGF0ZV9kZWxldGVgLiBUaGF0IGxvb2tzIHByb21pc2luZy4gTm93LCBsZXQmIzM5O3MgdHJhY2UgaXRzIGNhbGwgY2hhaW4uIEl04oCZcyBjYWxsZWQgZGlyZWN0bHkgYnkgYHhmcm1fc3RhdGVfZGVsZXRlYCBhbmQsIGluZGlyZWN0bHksIHRocm91Z2ggYHhmcm1fdGltZXJfaGFuZGxlcmAuIGB4ZnJtX3N0YXRlX2RlbGV0ZWAgaXRzZWxmIGlzIHRyaWdnZXJlZCBieSBgeGZybV9kZWxfc2FgIHdpdGhpbiBgbmV0L3hmcm0veGZybV91c2VyLmNgLiBBaGEhIEFuZCBgeGZybV9kZWxfc2FgIGlzLCBpbiB0dXJuLCBjYWxsZWQgd2hlbiB0aGUgYFhGUk1fTVNHX0RFTFNBYCBuZXRsaW5rIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuIFRoYXQmIzM5O3MgdGhlIGtleS4gSSBuZWVkIHRvIHZlcmlmeSB0aGlzIGVudGlyZSBjaGFpbiB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSB1bmRlcnN0YW5kIHRoZSB0cmlnZ2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX3N0YXRlX2RlbGV0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX3N0YXRlLmM9MjI4PXN0YXRpYyBERUZJTkVfU1BJTkxPQ0soeGZybV9zdGF0ZV9kZXZfZ2NfbG9jayk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMjI5LVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjIzMDppbnQgX194ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMjMxLVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz01OTM9RVhQT1JUX1NZTUJPTCh4ZnJtX3N0YXRlX2ZyZWUpO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jLTU5NC1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo1OTU6c3RhdGljIHZvaWQgeGZybV9zdGF0ZV9kZWxldGVfdHVubmVsKHN0cnVjdCB4ZnJtX3N0YXRlICp4KTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy01OTYtc3RhdGljIHZvaWQgeGZybV9zdGF0ZV9nY19kZXN0cm95KHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy02MTAtXHR4ZnJtX3Vuc2V0X3R5cGVfb2ZmbG9hZCh4KTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo2MTE6XHR4ZnJtX3N0YXRlX2RlbGV0ZV90dW5uZWwoeCk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNjEyLVx0aWYgKHgtXHUwMDNldHlwZSkge1xuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz02Mzk9c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IHhmcm1fdGltZXJfaGFuZGxlcihzdHJ1Y3QgaHJ0aW1lciAqbWUpXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTcxNy1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo3MTg6XHRlcnIgPSBfX3hmcm1fc3RhdGVfZGVsZXRlKHgpO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jLTcxOS1cdGlmICghZXJyKVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz04MDk9RVhQT1JUX1NZTUJPTChfX3hmcm1fc3RhdGVfZGVzdHJveSk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODEwLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjgxMTppbnQgX194ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04MTIte1xuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04MzctXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6ODM4Olx0XHR4ZnJtX3N0YXRlX2RlbGV0ZV90dW5uZWwoeCk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODM5LVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04NDktfVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjg1MDpFWFBPUlRfU1lNQk9MKF9feGZybV9zdGF0ZV9kZWxldGUpO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jLTg1MS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4NTI6aW50IHhmcm1fc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTg1My17XG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTg1Ni1cdHNwaW5fbG9ja19iaChcdTAwMjZ4LVx1MDAzZWxvY2spO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jOjg1NzpcdGVyciA9IF9feGZybV9zdGF0ZV9kZWxldGUoeCk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODU4LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODYxLX1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4NjI6RVhQT1JUX1NZTUJPTCh4ZnJtX3N0YXRlX2RlbGV0ZSk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODYzLVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz04NjY9eGZybV9zdGF0ZV9mbHVzaF9zZWNjdHhfY2hlY2soc3RydWN0IG5ldCAqbmV0LCB1OCBwcm90bywgYm9vbCB0YXNrX3ZhbGlkKVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04NzQtXHRcdFx0aWYgKHhmcm1faWRfcHJvdG9fbWF0Y2goeC1cdTAwM2VpZC5wcm90bywgcHJvdG8pIFx1MDAyNlx1MDAyNlxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjg3NTpcdFx0XHQgICAoZXJyID0gc2VjdXJpdHlfeGZybV9zdGF0ZV9kZWxldGUoeCkpICE9IDApIHtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04NzYtXHRcdFx0XHR4ZnJtX2F1ZGl0X3N0YXRlX2RlbGV0ZSh4LCAwLCB0YXNrX3ZhbGlkKTtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9ODg2PXhmcm1fZGV2X3N0YXRlX2ZsdXNoX3NlY2N0eF9jaGVjayhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgdGFza192YWxpZClcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODk3LVx0XHRcdGlmICh4c28tXHUwMDNlZGV2ID09IGRldiBcdTAwMjZcdTAwMjZcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4OTg6XHRcdFx0ICAgKGVyciA9IHNlY3VyaXR5X3hmcm1fc3RhdGVfZGVsZXRlKHgpKSAhPSAwKSB7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODk5LVx0XHRcdFx0eGZybV9hdWRpdF9zdGF0ZV9kZWxldGUoeCwgMCwgdGFza192YWxpZCk7XG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTkyMT1pbnQgeGZybV9zdGF0ZV9mbHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHU4IHByb3RvLCBib29sIHRhc2tfdmFsaWQpXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTkzOS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo5NDA6XHRcdFx0XHRlcnIgPSB4ZnJtX3N0YXRlX2RlbGV0ZSh4KTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy05NDEtXHRcdFx0XHR4ZnJtX2F1ZGl0X3N0YXRlX2RlbGV0ZSh4LCBlcnIgPyAwIDogMSxcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9OTYxPWludCB4ZnJtX2Rldl9zdGF0ZV9mbHVzaChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgdGFza192YWxpZClcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtOTgyLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjk4MzpcdFx0XHRcdGVyciA9IHhmcm1fc3RhdGVfZGVsZXRlKHgpO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jLTk4NC1cdFx0XHRcdHhmcm1fZGV2X3N0YXRlX2ZyZWUoeCk7XG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTE4OTU9aW50IHhmcm1fc3RhdGVfYWRkKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xOTM5LVx0aWYgKHgxKSB7XG5uZXQveGZybS94ZnJtX3N0YXRlLmM6MTk0MDpcdFx0eGZybV9zdGF0ZV9kZWxldGUoeDEpO1xubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE5NDEtXHRcdHhmcm1fc3RhdGVfcHV0KHgxKTtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9MjIyNj1pbnQgeGZybV9zdGF0ZV91cGRhdGUoc3RydWN0IHhmcm1fc3RhdGUgKngpXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTIyNzMtXHRpZiAoIXgpIHtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoyMjc0Olx0XHR4ZnJtX3N0YXRlX2RlbGV0ZSh4MSk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMjI3NS1cdFx0eGZybV9zdGF0ZV9wdXQoeDEpO1xuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz0zMTQ3PUVYUE9SVF9TWU1CT0woeGZybV9mbHVzaF9nYyk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzE0OC1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzozMTQ5OnN0YXRpYyB2b2lkIHhmcm1fc3RhdGVfZGVsZXRlX3R1bm5lbChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0zMTUwLXtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzE1NC1cdFx0aWYgKGF0b21pY19kZWNfcmV0dXJuKFx1MDAyNnQtXHUwMDNldHVubmVsX3VzZXJzKSA9PSAxKVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjMxNTU6XHRcdFx0eGZybV9zdGF0ZV9kZWxldGUodCk7XG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzE1Ni1cdFx0eGZybV9zdGF0ZV9wdXQodCk7XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MTExOD1zdGF0aWMgaW50IHhmcm1fZGVsX3NhKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTExMzAtXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMTMxOlx0aWYgKChlcnIgPSBzZWN1cml0eV94ZnJtX3N0YXRlX2RlbGV0ZSh4KSkgIT0gMClcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTExMzItXHRcdGdvdG8gb3V0O1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTExMzktXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMTQwOlx0ZXJyID0geGZybV9zdGF0ZV9kZWxldGUoeCk7XG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMTQxLVx0aWYgKGVyciBcdTAwM2MgMClcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zMDA0PXN0YXRpYyBpbnQgeGZybV9hZGRfc2FfZXhwaXJlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMwMzEtXHRpZiAodWUtXHUwMDNlaGFyZCkge1xubmV0L3hmcm0veGZybV91c2VyLmM6MzAzMjpcdFx0X194ZnJtX3N0YXRlX2RlbGV0ZSh4KTtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMwMzMtXHRcdHhmcm1fYXVkaXRfc3RhdGVfZGVsZXRlKHgsIDEsIHRydWUpO1xuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTMzNDM9c3RhdGljIGludCB4ZnJtX2RvX21pZ3JhdGVfc3RhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMzQ4NS1cdHhmcm1fbWlncmF0ZV9zeW5jKHhjLCB4KTsgLyogdG8gcHJldmVudCBTTi9JViByZXVzZSAqL1xubmV0L3hmcm0veGZybV91c2VyLmM6MzQ4NjpcdF9feGZybV9zdGF0ZV9kZWxldGUoeCk7XG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNDg3LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODk0NwoJCQkJCQkJb3V0cHV0OiAxODYKCQkJCQkJCXRob3VnaHRzOiA2MDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBQbGFuIGZvciBYRlJNIFN0YXRlIERlbGV0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdHMgaW1wbGljYXRpb25zIGZvciB0aGUgWEZSTSBzdWJzeXN0ZW0uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBjaGFuZ2VzIHRvIGBobGlzdF9kZWxfcmN1YCB0byBgaGxpc3RfZGVsX2luaXRfcmN1YCBpbiBgX194ZnJtX3N0YXRlX2RlbGV0ZWAgZm9yIGBzdGF0ZV9jYWNoZWAgYW5kIGBzdGF0ZV9jYWNoZV9pbnB1dGAgYXJlIHByZXR0eSBzaWduaWZpY2FudCwgaW5kaWNhdGluZyBhIHBvdGVudGlhbCBmaXggZm9yIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIHNjZW5hcmlvcyB3aXRoaW4gc3RhdGUgbWFuYWdlbWVudC4gVGhpcyBsb29rcyByaXBlIGZvciBmdXp6aW5nLgoKVGhlIGB4ZnJtX3N0YXRlX2RlbGV0ZWAgYW5kIGBfX3hmcm1fc3RhdGVfZGVsZXRlYCBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIHF1aXRlIGEgZmV3IHBsYWNlcywgd2hpY2ggaXMgZ29vZCBmb3IgY292ZXJhZ2U6IGB4ZnJtX2RlbF9zYWAgKHRyaWdnZXJlZCBieSBgWEZSTV9NU0dfREVMU0FgKSwgYHhmcm1fYWRkX3NhX2V4cGlyZWAgKHZpYSBgWEZSTV9NU0dfRVhQSVJFYCksIGB4ZnJtX2RvX21pZ3JhdGVfc3RhdGVgIChgWEZSTV9NU0dfTUlHUkFURWApLCBgeGZybV9zdGF0ZV9mbHVzaGAgKGBYRlJNX01TR19GTFVTSFNBYCksIGB4ZnJtX2Rldl9zdGF0ZV9mbHVzaGAsIGB4ZnJtX3N0YXRlX2FkZGAgKGBYRlJNX01TR19ORVdTQWApLCBgeGZybV9zdGF0ZV91cGRhdGVgIChgWEZSTV9NU0dfVVBEU0FgKSwgYW5kIGFsc28gZnJvbSBhIHRpbWVyIGhhbmRsZXIgKGB4ZnJtX3RpbWVyX2hhbmRsZXJgKS4gYF9feGZybV9zdGF0ZV9kZWxldGVgIGxvb2tzIHRvIGJlIHRoZSBjb3JlIGZ1bmN0aW9uIGhlcmUuCgpJIHRoaW5rIHNldHRpbmcgYEZvY3VzU3ltYm9sc2AgdG8gcmVhbGx5IGhvbmUgaW4gb24gdGhlIGltcG9ydGFudCBmdW5jdGlvbnMgaXMgdGhlIHdheSB0byBnbyBoZXJlLiBJJiMzOTtsbCBpbml0aWFsbHkgZm9jdXMgb24gYHhmcm1fc3RhdGVfZGVsZXRlYCwgc2luY2UgaXQmIzM5O3MgdGhlIGNvcmUgZnVuY3Rpb24gYW5kIEkgY2FuIHNlZSBpdCBpcyBleHBvcnRlZCBhbmQgbm9uLWlubGluZS4gVGhlIG5ldGxpbmsgaGFuZGxlciBgeGZybV9kZWxfc2FgIGlzIGFsc28ga2V5IGJlY2F1c2UgaXQmIzM5O3MgdGhlIGRpcmVjdCB1c2VyIGludGVyZmFjZSBmb3IgZGVsZXRpb24gcmVxdWVzdHMuIExldCYjMzk7cyBhZGQgYHhmcm1fc3RhdGVfZmx1c2hgLCBgeGZybV9zdGF0ZV9hZGRgLCBhbmQgYHhmcm1fc3RhdGVfdXBkYXRlYCBhcyB3ZWxsIHRvIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgZ2V0dGluZyBjb3ZlcmFnZSBvZiB0aGUgbmV0bGluayBpbnRlcmZhY2UuCgpBcyBmYXIgYXMgY29uZmlndXJhdGlvbnMsIGBYRlJNX1VTRVJgIGFuZCBgWEZSTV9BTEdPYCBhcmUgcmVsZXZhbnQuIGBYRlJNX1VTRVJgIGRlcGVuZHMgb24gYElORVRgIHdoaWNoIEkgd2lsbCBrZWVwIGluIG1pbmQuIEkgY2FuIGp1c3Qgc3BlY2lmeSB0aGVzZSB0d28gY29uZmlncy4KCkluIHNob3J0LCB0aGUgcGF0Y2ggZml4ZXMgd2hhdCBsb29rcyBsaWtlIGEgY3JpdGljYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSBpbiBYRlJNLiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCBhZGRyZXNzZXMgc3RhdGUgZGVsZXRpb24gd2hpY2ggaXMgY2FsbGVkIHZpYSB2YXJpb3VzIE5ldGxpbmsgbWVzc2FnZXMgYW5kIGV4cGlyYXRpb24uIFRoaXMgaXMgY2VydGFpbmx5IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIGRlbWFuZHMgZnV6emluZyB0byB2YWxpZGF0ZSB0aGUgZml4JiMzOTtzIGVmZmVjdGl2ZW5lc3MuIFRpbWUgdG8gc2V0IHVwIHRoZSBmdXp6aW5nIHJ1biBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNX1VTRVImIzM0OywKICAgICYjMzQ7WEZSTV9BTEdPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eGZybV9zdGF0ZV9kZWxldGUmIzM0OywKICAgICYjMzQ7eGZybV9kZWxfc2EmIzM0OywKICAgICYjMzQ7eGZybV9zdGF0ZV9mbHVzaCYjMzQ7LAogICAgJiMzNDt4ZnJtX3N0YXRlX2FkZCYjMzQ7LAogICAgJiMzNDt4ZnJtX3N0YXRlX3VwZGF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBpbiBYRlJNIHN0YXRlIGRlbGV0aW9uIGJ5IHByb3Blcmx5IGluaXRpYWxpemluZyB0aGUgaGxpc3Qgbm9kZSBhZnRlciBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQc2VjL1hGUk0gc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgbmV0bGluayBtZXNzYWdlcyAoZS5nLiwgWEZSTV9NU0dfREVMU0EsIFhGUk1fTVNHX0ZMVVNIU0EpIG9yIHN0YXRlIGV4cGlyYXRpb24uIEl0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7LAogICAgJiMzNDtYRlJNX0FMR08mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX3N0YXRlX2RlbGV0ZSYjMzQ7LAogICAgJiMzNDt4ZnJtX2RlbF9zYSYjMzQ7LAogICAgJiMzNDt4ZnJtX3N0YXRlX2ZsdXNoJiMzNDssCiAgICAmIzM0O3hmcm1fc3RhdGVfYWRkJiMzNDssCiAgICAmIzM0O3hmcm1fc3RhdGVfdXBkYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGluIFhGUk0gc3RhdGUgZGVsZXRpb24gYnkgcHJvcGVybHkgaW5pdGlhbGl6aW5nIHRoZSBobGlzdCBub2RlIGFmdGVyIGRlbGV0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVBzZWMvWEZSTSBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBuZXRsaW5rIG1lc3NhZ2VzIChlLmcuLCBYRlJNX01TR19ERUxTQSwgWEZSTV9NU0dfRkxVU0hTQSkgb3Igc3RhdGUgZXhwaXJhdGlvbi4gSXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjE2OjE4Ljc3NDA1Mjc1OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNTI3NzE3NTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1fVVNFUlwiLFxuICAgIFwiWEZSTV9BTEdPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieGZybV9zdGF0ZV9kZWxldGVcIixcbiAgICBcInhmcm1fZGVsX3NhXCIsXG4gICAgXCJ4ZnJtX3N0YXRlX2ZsdXNoXCIsXG4gICAgXCJ4ZnJtX3N0YXRlX2FkZFwiLFxuICAgIFwieGZybV9zdGF0ZV91cGRhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBpbiBYRlJNIHN0YXRlIGRlbGV0aW9uIGJ5IHByb3Blcmx5IGluaXRpYWxpemluZyB0aGUgaGxpc3Qgbm9kZSBhZnRlciBkZWxldGlvbi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIElQc2VjL1hGUk0gc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgbmV0bGluayBtZXNzYWdlcyAoZS5nLiwgWEZSTV9NU0dfREVMU0EsIFhGUk1fTVNHX0ZMVVNIU0EpIG9yIHN0YXRlIGV4cGlyYXRpb24uIEl0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjE2OjE4Ljc3NDA4MzMwOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQzMjUyMDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDg3MDMwNDRiZjRhYTI1Y2Q0NWZjY2Q2YTE5ODliMTJiMTc2NWRlOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxIDAwOjE2OjE3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fc3RhdGUuYyBiL25ldC94ZnJtL3hmcm1fc3RhdGUuY1xcbmluZGV4IDM2YTRmNjc5M2VkZWYuLmY0OTRjMWFjNTdhNDAgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV9zdGF0ZS5jXFxuKysrIGIvbmV0L3hmcm0veGZybV9zdGF0ZS5jXFxuQEAgLTgyMyw5ICs4MjMsOSBAQCBpbnQgX194ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG4gXFx0XFx0aWYgKCFobGlzdF91bmhhc2hlZChcXHUwMDI2eC1cXHUwMDNlYnlzZXEpKVxcbiBcXHRcXHRcXHRobGlzdF9kZWxfaW5pdF9yY3UoXFx1MDAyNngtXFx1MDAzZWJ5c2VxKTtcXG4gXFx0XFx0aWYgKCFobGlzdF91bmhhc2hlZChcXHUwMDI2eC1cXHUwMDNlc3RhdGVfY2FjaGUpKVxcbi1cXHRcXHRcXHRobGlzdF9kZWxfcmN1KFxcdTAwMjZ4LVxcdTAwM2VzdGF0ZV9jYWNoZSk7XFxuK1xcdFxcdFxcdGhsaXN0X2RlbF9pbml0X3JjdShcXHUwMDI2eC1cXHUwMDNlc3RhdGVfY2FjaGUpO1xcbiBcXHRcXHRpZiAoIWhsaXN0X3VuaGFzaGVkKFxcdTAwMjZ4LVxcdTAwM2VzdGF0ZV9jYWNoZV9pbnB1dCkpXFxuLVxcdFxcdFxcdGhsaXN0X2RlbF9yY3UoXFx1MDAyNngtXFx1MDAzZXN0YXRlX2NhY2hlX2lucHV0KTtcXG4rXFx0XFx0XFx0aGxpc3RfZGVsX2luaXRfcmN1KFxcdTAwMjZ4LVxcdTAwM2VzdGF0ZV9jYWNoZV9pbnB1dCk7XFxuIFxcbiBcXHRcXHRpZiAoIWhsaXN0X3VuaGFzaGVkKFxcdTAwMjZ4LVxcdTAwM2VieXNwaSkpXFxuIFxcdFxcdFxcdGhsaXN0X2RlbF9pbml0X3JjdShcXHUwMDI2eC1cXHUwMDNlYnlzcGkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMDoxNjoxOS4zMTk2ODYzMTZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyOTk4MjA3MTg1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX1VTRVJcIixcbiAgICBcIlhGUk1fQUxHT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1fc3RhdGVfZGVsZXRlXCIsXG4gICAgXCJ4ZnJtX2RlbF9zYVwiLFxuICAgIFwieGZybV9zdGF0ZV9mbHVzaFwiLFxuICAgIFwieGZybV9zdGF0ZV9hZGRcIixcbiAgICBcInhmcm1fc3RhdGVfdXBkYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgaW4gWEZSTSBzdGF0ZSBkZWxldGlvbiBieSBwcm9wZXJseSBpbml0aWFsaXppbmcgdGhlIGhsaXN0IG5vZGUgYWZ0ZXIgZGVsZXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUHNlYy9YRlJNIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgdmlhIG5ldGxpbmsgbWVzc2FnZXMgKGUuZy4sIFhGUk1fTVNHX0RFTFNBLCBYRlJNX01TR19GTFVTSFNBKSBvciBzdGF0ZSBleHBpcmF0aW9uLiBJdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkODcwMzA0NGJmNGFhMjVjZDQ1ZmNjZDZhMTk4OWIxMmIxNzY1ZGU4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAwMDoxNjoxNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fc3RhdGUuYyBiL25ldC94ZnJtL3hmcm1fc3RhdGUuY1xuaW5kZXggMzZhNGY2NzkzZWRlZi4uZjQ5NGMxYWM1N2E0MCAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fc3RhdGUuY1xuKysrIGIvbmV0L3hmcm0veGZybV9zdGF0ZS5jXG5AQCAtODIzLDkgKzgyMyw5IEBAIGludCBfX3hmcm1fc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxuIFx0XHRpZiAoIWhsaXN0X3VuaGFzaGVkKFx1MDAyNngtXHUwMDNlYnlzZXEpKVxuIFx0XHRcdGhsaXN0X2RlbF9pbml0X3JjdShcdTAwMjZ4LVx1MDAzZWJ5c2VxKTtcbiBcdFx0aWYgKCFobGlzdF91bmhhc2hlZChcdTAwMjZ4LVx1MDAzZXN0YXRlX2NhY2hlKSlcbi1cdFx0XHRobGlzdF9kZWxfcmN1KFx1MDAyNngtXHUwMDNlc3RhdGVfY2FjaGUpO1xuK1x0XHRcdGhsaXN0X2RlbF9pbml0X3JjdShcdTAwMjZ4LVx1MDAzZXN0YXRlX2NhY2hlKTtcbiBcdFx0aWYgKCFobGlzdF91bmhhc2hlZChcdTAwMjZ4LVx1MDAzZXN0YXRlX2NhY2hlX2lucHV0KSlcbi1cdFx0XHRobGlzdF9kZWxfcmN1KFx1MDAyNngtXHUwMDNlc3RhdGVfY2FjaGVfaW5wdXQpO1xuK1x0XHRcdGhsaXN0X2RlbF9pbml0X3JjdShcdTAwMjZ4LVx1MDAzZXN0YXRlX2NhY2hlX2lucHV0KTtcbiBcbiBcdFx0aWYgKCFobGlzdF91bmhhc2hlZChcdTAwMjZ4LVx1MDAzZWJ5c3BpKSlcbiBcdFx0XHRobGlzdF9kZWxfaW5pdF9yY3UoXHUwMDI2eC1cdTAwM2VieXNwaSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMDoxNjoxOS4zMTk2ODg5NTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjkzMDgzNjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgU2VjdXJpdHkgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3hmcm0veGZybV9zdGF0ZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IHRoZXkncmUgcmVwbGFjaW5nIGBobGlzdF9kZWxfcmN1YCB3aXRoIGBobGlzdF9kZWxfaW5pdF9yY3VgIGZvciBgeC1cdTAwM2VzdGF0ZV9jYWNoZWAgYW5kIGB4LVx1MDAzZXN0YXRlX2NhY2hlX2lucHV0YCB3aXRoaW4gdGhlIGBfX3hmcm1fc3RhdGVfZGVsZXRlYCBmdW5jdGlvbi4gSW1tZWRpYXRlbHksIG15IGV4cGVydCBleWUgY2F0Y2hlcyB0aGF0IHRoaXMgaXMgKm5vdCoganVzdCBjb3NtZXRpYy4gSXQncyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uLiBUaGUgcmVhc29uIGJlaW5nLCBpbml0aWFsaXppbmcgdGhlIGhsaXN0IG5vZGUgYWZ0ZXIgZGVsZXRpbmcgaXQgd2l0aCBgaGxpc3RfZGVsX2luaXRfcmN1YCBpcyBjcnVjaWFsLiBJdCdzIGEgdGV4dGJvb2sgd2F5IHRvIHByZXZlbnQgdGhvc2UgbmFzdHkgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgc2NlbmFyaW9zLiBJZiwgZm9yIHdoYXRldmVyIHJlYXNvbiwgY29kZSBsYXRlciBvbiBjaGVja3MgaWYgdGhhdCBub2RlIGlzIHN0aWxsIGhhc2hlZCB1c2luZyBgaGxpc3RfdW5oYXNoZWRgLCB0aGUgaW5pdGlhbGl6YXRpb24gaXMgZ29pbmcgdG8gYmUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGNyYXNoIGFuZCBhIHBlcmZlY3RseSBub3JtYWwgc3RhdGUuIFNvLCBJIG5lZWQgdG8gZ2V0IGludG8gYG5ldC94ZnJtL3hmcm1fc3RhdGUuY2AgYW5kIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQgdG8gYXBwcmVjaWF0ZSB0aGUgaW1wbGljYXRpb25zIGZ1bGx5LiBHb3R0YSB1bmRlcnN0YW5kIHRoZSBmbG93IG9mIGV4ZWN1dGlvbiBhbmQgaG93IHRoZXNlIHN0YXRlIGNhY2hlcyBhcmUgdXNlZCB0byBhcHByZWNpYXRlIHRoZSBzcGVjaWZpYyB2dWxuZXJhYmlsaXRpZXMgdGhpcyBwYXRjaCBwcmV2ZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1MCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjE2OjIzLjYxMjc3NDg0MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjQyNDY3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX194ZnJtX3N0YXRlX2RlbGV0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS94ZnJtX3N0YXRlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0veGZybV9zdGF0ZS5jPTIyOD1zdGF0aWMgREVGSU5FX1NQSU5MT0NLKHhmcm1fc3RhdGVfZGV2X2djX2xvY2spO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yMjktXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjIzMDppbnQgX194ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTIzMS1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz02Mzk9c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IHhmcm1fdGltZXJfaGFuZGxlcihzdHJ1Y3QgaHJ0aW1lciAqbWUpXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzE3LVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo3MTg6XFx0ZXJyID0gX194ZnJtX3N0YXRlX2RlbGV0ZSh4KTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzE5LVxcdGlmICghZXJyKVxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTgwOT1FWFBPUlRfU1lNQk9MKF9feGZybV9zdGF0ZV9kZXN0cm95KTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODEwLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4MTE6aW50IF9feGZybV9zdGF0ZV9kZWxldGUoc3RydWN0IHhmcm1fc3RhdGUgKngpXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTgxMi17XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODQ5LX1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6ODUwOkVYUE9SVF9TWU1CT0woX194ZnJtX3N0YXRlX2RlbGV0ZSk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTg1MS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9ODUyPWludCB4ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04NTYtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZ4LVxcdTAwM2Vsb2NrKTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6ODU3OlxcdGVyciA9IF9feGZybV9zdGF0ZV9kZWxldGUoeCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTg1OC1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2eC1cXHUwMDNlbG9jayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjE2OjIzLjc3NzAyNzQ0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIyMjU5NDQ1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgZm9jdXNpbmcgb24gd2hhdCB0aGlzIGZ1bmN0aW9uIGlzIGRvaW5nOlxuXG4qKkFuYWx5emluZyB0aGUgYF9feGZybV9zdGF0ZV9kZWxldGVgIEZ1bmN0aW9uKipcblxuT2theSwgc28gYF9feGZybV9zdGF0ZV9kZWxldGVgIGlzIGV4cG9ydGVkLCB3aGljaCBtZWFucyBpdCdzIGRlc2lnbmVkIHRvIGJlIGNhbGxlZCBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgaW50ZWdyYWwgdG8gdGhlIFhGUk0gKElQc2VjKSBzdWJzeXN0ZW0sIGFzIGl0J3MgdXNlZCBkaXJlY3RseSB3aXRoaW4gYHhmcm1fc3RhdGVfZGVsZXRlYCBhbmQgdGhlIGB4ZnJtX3RpbWVyX2hhbmRsZXJgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhpcyBtdXN0IGJlIHNvbWUgY3JpdGljYWwgaW50ZXJuYWwgZGVsZXRpb24gZnVuY3Rpb24uIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGF0IHRoZSBwcmVzZW5jZSBhbmQgZnVuY3Rpb25hbGl0eSBvZiB0aGlzIGNvbXBvbmVudCBkZXBlbmQgb24gYENPTkZJR19YRlJNYCBiZWluZyBlbmFibGVkIGluIHRoZSBrZXJuZWwgY29uZmlnLCB3aGljaCBtYWtlcyBzZW5zZS4gSSdsbCBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGFzc29jaWF0ZWQgd2l0aCBYRlJNIHRvIGdldCBhIGJldHRlciBzZW5zZSBvZiBpdHMgZGVwZW5kZW5jaWVzIGFuZCBhbnkgYXNzb2NpYXRlZCBvcHRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IGl0cyBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA5NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjE2OjI2Ljk5OTY0NjU2MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE0MzI0NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhGUk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9LY29uZmlnLTQtI1xcbm5ldC94ZnJtL0tjb25maWc6NTpjb25maWcgWEZSTVxcbm5ldC94ZnJtL0tjb25maWctNi1cXHRib29sXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTEwLVxcbm5ldC94ZnJtL0tjb25maWc6MTE6Y29uZmlnIFhGUk1fT0ZGTE9BRFxcbm5ldC94ZnJtL0tjb25maWctMTItXFx0Ym9vbFxcbm5ldC94ZnJtL0tjb25maWctMTMtXFxubmV0L3hmcm0vS2NvbmZpZzoxNDpjb25maWcgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0yMj1pZiBJTkVUXFxubmV0L3hmcm0vS2NvbmZpZzoyMzpjb25maWcgWEZSTV9VU0VSXFxubmV0L3hmcm0vS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZSBcXFwiVHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMzEtXFxubmV0L3hmcm0vS2NvbmZpZzozMjpjb25maWcgWEZSTV9VU0VSX0NPTVBBVFxcbm5ldC94ZnJtL0tjb25maWctMzMtXFx0dHJpc3RhdGUgXFxcIkNvbXBhdGlibGUgQUJJIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTQyLVxcbm5ldC94ZnJtL0tjb25maWc6NDM6Y29uZmlnIFhGUk1fSU5URVJGQUNFXFxubmV0L3hmcm0vS2NvbmZpZy00NC1cXHR0cmlzdGF0ZSBcXFwiVHJhbnNmb3JtYXRpb24gdmlydHVhbCBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTUwLVxcbm5ldC94ZnJtL0tjb25maWc6NTE6Y29uZmlnIFhGUk1fU1VCX1BPTElDWVxcbm5ldC94ZnJtL0tjb25maWctNTItXFx0Ym9vbCBcXFwiVHJhbnNmb3JtYXRpb24gc3ViIHBvbGljeSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy02MC1cXG5uZXQveGZybS9LY29uZmlnOjYxOmNvbmZpZyBYRlJNX01JR1JBVEVcXG5uZXQveGZybS9LY29uZmlnLTYyLVxcdGJvb2wgXFxcIlRyYW5zZm9ybWF0aW9uIG1pZ3JhdGUgZGF0YWJhc2VcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTcxLVxcbm5ldC94ZnJtL0tjb25maWc6NzI6Y29uZmlnIFhGUk1fU1RBVElTVElDU1xcbm5ldC94ZnJtL0tjb25maWctNzMtXFx0Ym9vbCBcXFwiVHJhbnNmb3JtYXRpb24gc3RhdGlzdGljc1xcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctODMtIyBSRkMgODIyMSBsaXN0cyBhcyBNVVNUIGJlIGltcGxlbWVudGVkLlxcbm5ldC94ZnJtL0tjb25maWc6ODQ6Y29uZmlnIFhGUk1fQUhcXG5uZXQveGZybS9LY29uZmlnLTg1LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTkyLSMgYWxnb3JpdGhtcyB0aGF0IFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXFxubmV0L3hmcm0vS2NvbmZpZzo5Mzpjb25maWcgWEZSTV9FU1BcXG5uZXQveGZybS9LY29uZmlnLTk0LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTEwNS1cXG5uZXQveGZybS9LY29uZmlnOjEwNjpjb25maWcgWEZSTV9JUENPTVBcXG5uZXQveGZybS9LY29uZmlnLTEwNy1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0xMjU9Y29uZmlnIE5FVF9LRVlfTUlHUkFURVxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0xNDAtXFxubmV0L3hmcm0vS2NvbmZpZzoxNDE6Y29uZmlnIFhGUk1fSVBURlNcXG5uZXQveGZybS9LY29uZmlnLTE0Mi1cXHR0cmlzdGF0ZSBcXFwiSVBzZWMgSVAtVEZTL0FHR0ZSQUcgKFJGQyA5MzQ3KSBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTE1Ni1cXG5uZXQveGZybS9LY29uZmlnOjE1Nzpjb25maWcgWEZSTV9FU1BJTlRDUFxcbm5ldC94ZnJtL0tjb25maWctMTU4LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6MTY6MjcuMTExMDg0NjU1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIyODA0MDMzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3NpbmcgYXMgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFhGUk0gQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBgWEZSTWAuIEl0J3MgYSBmdW5kYW1lbnRhbCBib29sZWFuIGNvbmZpZywgdHlwaWNhbGx5IGVuYWJsZWQgdGhyb3VnaCB0aGluZ3MgbGlrZSBgWEZSTV9VU0VSYCwgYElORVRfRVNQYCwgYW5kIHRoZSBsaWtlLiBNeSBmaXJzdCB0aG91Z2h0IGlzIGFsd2F5cyB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGhvdyBpdCdzIGJyb3VnaHQgaW50byB0aGUgYnVpbGQuIFNvLCBJIG5lZWQgdG8gdHJhY2UgYmFjayAqd2hhdCogZXhhY3RseSBpcyBzZWxlY3RpbmcgYFhGUk1gLiBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIHRoZSBrZXJuZWwncyBidWlsZCBzeXN0ZW0gdG8gc2VlIHdoaWNoIG90aGVyIG9wdGlvbnMgb3IgbW9kdWxlcyBhcmUgYnJpbmdpbmcgdGhpcyBvbmUgaW4uIEtub3dpbmcgdGhlIFwid2h5XCIgYmVoaW5kIHRoZSBzZWxlY3Rpb24gb2YgYFhGUk1gIHdpbGwgZ2l2ZSBtZSBpbnZhbHVhYmxlIGluc2lnaHQgaW50byBpdHMgcm9sZSBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gVW5kZXJzdGFuZGluZyB0aGUgZGVjaXNpb24tbWFraW5nIHByb2Nlc3MgaGVyZSBpcyBrZXkgdG8gdHJvdWJsZXNob290aW5nLCBvcHRpbWl6aW5nLCBvciBwb3RlbnRpYWxseSBtb2RpZnlpbmcgdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE3OCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjE2OjMwLjMzOTEyOTQwNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDUxMjMzNjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBYRlJNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTE5ND1jb25maWcgSVhHQkVfSVBTRUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTk4LVxcdGRlZmF1bHQgeVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MTk5OlxcdHNlbGVjdCBYRlJNX0FMR09cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIwMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTIyMD1jb25maWcgSVhHQkVWRl9JUFNFQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMjQtXFx0ZGVmYXVsdCB5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoyMjU6XFx0c2VsZWN0IFhGUk1fQUxHT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjI2LVxcdGhlbHBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MzA0PWNvbmZpZyBORVRfSVBWVElcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzA3LVxcdHNlbGVjdCBORVRfSVBfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZzozMDg6XFx0c2VsZWN0IFhGUk1cXG5uZXQvaXB2NC9LY29uZmlnLTMwOS1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTMzOT1jb25maWcgSU5FVF9BSFxcbm5ldC9pcHY0L0tjb25maWctMzQwLVxcdHRyaXN0YXRlIFxcXCJJUDogQUggdHJhbnNmb3JtYXRpb25cXFwiXFxubmV0L2lwdjQvS2NvbmZpZzozNDE6XFx0c2VsZWN0IFhGUk1fQUhcXG5uZXQvaXB2NC9LY29uZmlnLTM0Mi1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM1ND1jb25maWcgSU5FVF9FU1BcXG5uZXQvaXB2NC9LY29uZmlnLTM1NS1cXHR0cmlzdGF0ZSBcXFwiSVA6IEVTUCB0cmFuc2Zvcm1hdGlvblxcXCJcXG5uZXQvaXB2NC9LY29uZmlnOjM1NjpcXHRzZWxlY3QgWEZSTV9FU1BcXG5uZXQvaXB2NC9LY29uZmlnLTM1Ny1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM2OT1jb25maWcgSU5FVF9FU1BfT0ZGTE9BRFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zNzEtXFx0ZGVwZW5kcyBvbiBJTkVUX0VTUFxcbm5ldC9pcHY0L0tjb25maWc6MzcyOlxcdHNlbGVjdCBYRlJNX09GRkxPQURcXG5uZXQvaXB2NC9LY29uZmlnLTM3My1cXHRkZWZhdWx0IG5cXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MzgyPWNvbmZpZyBJTkVUX0VTUElOVENQXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTM4Ni1cXHRzZWxlY3QgTkVUX1NPQ0tfTVNHXFxubmV0L2lwdjQvS2NvbmZpZzozODc6XFx0c2VsZWN0IFhGUk1fRVNQSU5UQ1BcXG5uZXQvaXB2NC9LY29uZmlnLTM4OC1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM5ND1jb25maWcgSU5FVF9JUENPTVBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzk2LVxcdHNlbGVjdCBJTkVUX1hGUk1fVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZzozOTc6XFx0c2VsZWN0IFhGUk1fSVBDT01QXFxubmV0L2lwdjQvS2NvbmZpZy0zOTgtXFx0aGVscFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz00Nz1jb25maWcgSU5FVDZfQUhcXG5uZXQvaXB2Ni9LY29uZmlnLTQ4LVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBBSCB0cmFuc2Zvcm1hdGlvblxcXCJcXG5uZXQvaXB2Ni9LY29uZmlnOjQ5OlxcdHNlbGVjdCBYRlJNX0FIXFxubmV0L2lwdjYvS2NvbmZpZy01MC1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTYyPWNvbmZpZyBJTkVUNl9FU1BcXG5uZXQvaXB2Ni9LY29uZmlnLTYzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBFU1AgdHJhbnNmb3JtYXRpb25cXFwiXFxubmV0L2lwdjYvS2NvbmZpZzo2NDpcXHRzZWxlY3QgWEZSTV9FU1BcXG5uZXQvaXB2Ni9LY29uZmlnLTY1LVxcdGhlbHBcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9Nzc9Y29uZmlnIElORVQ2X0VTUF9PRkZMT0FEXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTc5LVxcdGRlcGVuZHMgb24gSU5FVDZfRVNQXFxubmV0L2lwdjYvS2NvbmZpZzo4MDpcXHRzZWxlY3QgWEZSTV9PRkZMT0FEXFxubmV0L2lwdjYvS2NvbmZpZy04MS1cXHRkZWZhdWx0IG5cXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9OTA9Y29uZmlnIElORVQ2X0VTUElOVENQXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTk0LVxcdHNlbGVjdCBORVRfU09DS19NU0dcXG5uZXQvaXB2Ni9LY29uZmlnOjk1OlxcdHNlbGVjdCBYRlJNX0VTUElOVENQXFxubmV0L2lwdjYvS2NvbmZpZy05Ni1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTEwMj1jb25maWcgSU5FVDZfSVBDT01QXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTEwNC1cXHRzZWxlY3QgSU5FVDZfWEZSTV9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnOjEwNTpcXHRzZWxlY3QgWEZSTV9JUENPTVBcXG5uZXQvaXB2Ni9LY29uZmlnLTEwNi1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTExMj1jb25maWcgSVBWNl9NSVA2XFxubmV0L2lwdjYvS2NvbmZpZy0xMTMtXFx0dHJpc3RhdGUgXFxcIklQdjY6IE1vYmlsaXR5XFxcIlxcbm5ldC9pcHY2L0tjb25maWc6MTE0OlxcdHNlbGVjdCBYRlJNXFxubmV0L2lwdjYvS2NvbmZpZy0xMTUtXFx0aGVscFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xNTA9Y29uZmlnIElQVjZfVlRJXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE1My1cXHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWc6MTU0OlxcdHNlbGVjdCBYRlJNXFxubmV0L2lwdjYvS2NvbmZpZy0xNTUtXFx0aGVscFxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0xND1jb25maWcgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZVxcbm5ldC94ZnJtL0tjb25maWc6MTY6XFx0c2VsZWN0IFhGUk1cXG5uZXQveGZybS9LY29uZmlnLTE3LVxcdHNlbGVjdCBDUllQVE9cXG4tLVxcbm5ldC94ZnJtL0tjb25maWc9MjM9Y29uZmlnIFhGUk1fVVNFUlxcbm5ldC94ZnJtL0tjb25maWctMjQtXFx0dHJpc3RhdGUgXFxcIlRyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcXFwiXFxubmV0L3hmcm0vS2NvbmZpZzoyNTpcXHRzZWxlY3QgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy0yNi1cXHRoZWxwXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTg0PWNvbmZpZyBYRlJNX0FIXFxubmV0L3hmcm0vS2NvbmZpZy04NS1cXHR0cmlzdGF0ZVxcbm5ldC94ZnJtL0tjb25maWc6ODY6XFx0c2VsZWN0IFhGUk1fQUxHT1xcbm5ldC94ZnJtL0tjb25maWctODctXFx0c2VsZWN0IENSWVBUT1xcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz05Mz1jb25maWcgWEZSTV9FU1BcXG5uZXQveGZybS9LY29uZmlnLTk0LVxcdHRyaXN0YXRlXFxubmV0L3hmcm0vS2NvbmZpZzo5NTpcXHRzZWxlY3QgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy05Ni1cXHRzZWxlY3QgQ1JZUFRPXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTEwNj1jb25maWcgWEZSTV9JUENPTVBcXG5uZXQveGZybS9LY29uZmlnLTEwNy1cXHR0cmlzdGF0ZVxcbm5ldC94ZnJtL0tjb25maWc6MTA4OlxcdHNlbGVjdCBYRlJNX0FMR09cXG5uZXQveGZybS9LY29uZmlnLTEwOS1cXHRzZWxlY3QgQ1JZUFRPXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTExMj1jb25maWcgTkVUX0tFWVxcbm5ldC94ZnJtL0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJQRl9LRVkgc29ja2V0cyAoZGVwcmVjYXRlZClcXFwiXFxubmV0L3hmcm0vS2NvbmZpZzoxMTQ6XFx0c2VsZWN0IFhGUk1fQUxHT1xcbm5ldC94ZnJtL0tjb25maWctMTE1LVxcdGhlbHBcXG4tLVxcbm5ldC94ZnJtL0tjb25maWc9MTI1PWNvbmZpZyBORVRfS0VZX01JR1JBVEVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTI3LVxcdGRlcGVuZHMgb24gTkVUX0tFWVxcbm5ldC94ZnJtL0tjb25maWc6MTI4OlxcdHNlbGVjdCBYRlJNX01JR1JBVEVcXG5uZXQveGZybS9LY29uZmlnLTEyOS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjE2OjM1LjM5MDM2Nzc4NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNjExNDQ3OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgWEZSTSBDb25maWd1cmF0aW9uIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIG9uIHVzZXItc3BhY2UgY29uZmlndXJhdGlvbiBmb3IgWEZSTSwgc3BlY2lmaWNhbGx5IHRocm91Z2ggYFhGUk1fVVNFUmAuIEknbGwgZGVmaW5pdGVseSBpbmNsdWRlIGBYRlJNX1VTRVJgIGFuZCBgWEZSTV9BTEdPYCB3aXRoaW4gRW5hYmxlQ29uZmlncyBmb3IgZ29vZCBtZWFzdXJlLiBOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgdnVsbmVyYWJsZSBmdW5jdGlvbnMgZm9yIGZ1enppbmcuXG5cbk15IGFuYWx5c2lzIG9mIHRoZSBwYXRjaCBwb2ludHMgbWUgdG93YXJkIGBfX3hmcm1fc3RhdGVfZGVsZXRlYC4gVGhhdCBsb29rcyBwcm9taXNpbmcuIE5vdywgbGV0J3MgdHJhY2UgaXRzIGNhbGwgY2hhaW4uIEl04oCZcyBjYWxsZWQgZGlyZWN0bHkgYnkgYHhmcm1fc3RhdGVfZGVsZXRlYCBhbmQsIGluZGlyZWN0bHksIHRocm91Z2ggYHhmcm1fdGltZXJfaGFuZGxlcmAuIGB4ZnJtX3N0YXRlX2RlbGV0ZWAgaXRzZWxmIGlzIHRyaWdnZXJlZCBieSBgeGZybV9kZWxfc2FgIHdpdGhpbiBgbmV0L3hmcm0veGZybV91c2VyLmNgLiBBaGEhIEFuZCBgeGZybV9kZWxfc2FgIGlzLCBpbiB0dXJuLCBjYWxsZWQgd2hlbiB0aGUgYFhGUk1fTVNHX0RFTFNBYCBuZXRsaW5rIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuIFRoYXQncyB0aGUga2V5LiBJIG5lZWQgdG8gdmVyaWZ5IHRoaXMgZW50aXJlIGNoYWluIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIHVuZGVyc3RhbmQgdGhlIHRyaWdnZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNzksIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6MTY6MzkuNDUxNTE1NDAzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTYyNDkzMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9zdGF0ZV9kZWxldGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fc3RhdGUuYz0yMjg9c3RhdGljIERFRklORV9TUElOTE9DSyh4ZnJtX3N0YXRlX2Rldl9nY19sb2NrKTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMjI5LVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoyMzA6aW50IF9feGZybV9zdGF0ZV9kZWxldGUoc3RydWN0IHhmcm1fc3RhdGUgKngpO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yMzEtXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9NTkzPUVYUE9SVF9TWU1CT0woeGZybV9zdGF0ZV9mcmVlKTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNTk0LVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo1OTU6c3RhdGljIHZvaWQgeGZybV9zdGF0ZV9kZWxldGVfdHVubmVsKHN0cnVjdCB4ZnJtX3N0YXRlICp4KTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNTk2LXN0YXRpYyB2b2lkIHhmcm1fc3RhdGVfZ2NfZGVzdHJveShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy02MTAtXFx0eGZybV91bnNldF90eXBlX29mZmxvYWQoeCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjYxMTpcXHR4ZnJtX3N0YXRlX2RlbGV0ZV90dW5uZWwoeCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTYxMi1cXHRpZiAoeC1cXHUwMDNldHlwZSkge1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTYzOT1zdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgeGZybV90aW1lcl9oYW5kbGVyKHN0cnVjdCBocnRpbWVyICptZSlcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy03MTctXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjcxODpcXHRlcnIgPSBfX3hmcm1fc3RhdGVfZGVsZXRlKHgpO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy03MTktXFx0aWYgKCFlcnIpXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9ODA5PUVYUE9SVF9TWU1CT0woX194ZnJtX3N0YXRlX2Rlc3Ryb3kpO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04MTAtXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjgxMTppbnQgX194ZnJtX3N0YXRlX2RlbGV0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODEyLXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04MzctXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjgzODpcXHRcXHR4ZnJtX3N0YXRlX2RlbGV0ZV90dW5uZWwoeCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTgzOS1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04NDktfVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4NTA6RVhQT1JUX1NZTUJPTChfX3hmcm1fc3RhdGVfZGVsZXRlKTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODUxLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4NTI6aW50IHhmcm1fc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04NTMte1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTg1Ni1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNngtXFx1MDAzZWxvY2spO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4NTc6XFx0ZXJyID0gX194ZnJtX3N0YXRlX2RlbGV0ZSh4KTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODU4LVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ4LVxcdTAwM2Vsb2NrKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04NjEtfVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo4NjI6RVhQT1JUX1NZTUJPTCh4ZnJtX3N0YXRlX2RlbGV0ZSk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTg2My1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz04NjY9eGZybV9zdGF0ZV9mbHVzaF9zZWNjdHhfY2hlY2soc3RydWN0IG5ldCAqbmV0LCB1OCBwcm90bywgYm9vbCB0YXNrX3ZhbGlkKVxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTg3NC1cXHRcXHRcXHRpZiAoeGZybV9pZF9wcm90b19tYXRjaCh4LVxcdTAwM2VpZC5wcm90bywgcHJvdG8pIFxcdTAwMjZcXHUwMDI2XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjg3NTpcXHRcXHRcXHQgICAoZXJyID0gc2VjdXJpdHlfeGZybV9zdGF0ZV9kZWxldGUoeCkpICE9IDApIHtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODc2LVxcdFxcdFxcdFxcdHhmcm1fYXVkaXRfc3RhdGVfZGVsZXRlKHgsIDAsIHRhc2tfdmFsaWQpO1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTg4Nj14ZnJtX2Rldl9zdGF0ZV9mbHVzaF9zZWNjdHhfY2hlY2soc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIHRhc2tfdmFsaWQpXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtODk3LVxcdFxcdFxcdGlmICh4c28tXFx1MDAzZWRldiA9PSBkZXYgXFx1MDAyNlxcdTAwMjZcXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6ODk4OlxcdFxcdFxcdCAgIChlcnIgPSBzZWN1cml0eV94ZnJtX3N0YXRlX2RlbGV0ZSh4KSkgIT0gMCkge1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy04OTktXFx0XFx0XFx0XFx0eGZybV9hdWRpdF9zdGF0ZV9kZWxldGUoeCwgMCwgdGFza192YWxpZCk7XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9OTIxPWludCB4ZnJtX3N0YXRlX2ZsdXNoKHN0cnVjdCBuZXQgKm5ldCwgdTggcHJvdG8sIGJvb2wgdGFza192YWxpZClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy05MzktXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjk0MDpcXHRcXHRcXHRcXHRlcnIgPSB4ZnJtX3N0YXRlX2RlbGV0ZSh4KTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtOTQxLVxcdFxcdFxcdFxcdHhmcm1fYXVkaXRfc3RhdGVfZGVsZXRlKHgsIGVyciA/IDAgOiAxLFxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTk2MT1pbnQgeGZybV9kZXZfc3RhdGVfZmx1c2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIHRhc2tfdmFsaWQpXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtOTgyLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo5ODM6XFx0XFx0XFx0XFx0ZXJyID0geGZybV9zdGF0ZV9kZWxldGUoeCk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTk4NC1cXHRcXHRcXHRcXHR4ZnJtX2Rldl9zdGF0ZV9mcmVlKHgpO1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTE4OTU9aW50IHhmcm1fc3RhdGVfYWRkKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE5MzktXFx0aWYgKHgxKSB7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjE5NDA6XFx0XFx0eGZybV9zdGF0ZV9kZWxldGUoeDEpO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xOTQxLVxcdFxcdHhmcm1fc3RhdGVfcHV0KHgxKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz0yMjI2PWludCB4ZnJtX3N0YXRlX3VwZGF0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yMjczLVxcdGlmICgheCkge1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoyMjc0OlxcdFxcdHhmcm1fc3RhdGVfZGVsZXRlKHgxKTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMjI3NS1cXHRcXHR4ZnJtX3N0YXRlX3B1dCh4MSk7XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM9MzE0Nz1FWFBPUlRfU1lNQk9MKHhmcm1fZmx1c2hfZ2MpO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0zMTQ4LVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzozMTQ5OnN0YXRpYyB2b2lkIHhmcm1fc3RhdGVfZGVsZXRlX3R1bm5lbChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzE1MC17XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzE1NC1cXHRcXHRpZiAoYXRvbWljX2RlY19yZXR1cm4oXFx1MDAyNnQtXFx1MDAzZXR1bm5lbF91c2VycykgPT0gMSlcXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6MzE1NTpcXHRcXHRcXHR4ZnJtX3N0YXRlX2RlbGV0ZSh0KTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzE1Ni1cXHRcXHR4ZnJtX3N0YXRlX3B1dCh0KTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTExMTg9c3RhdGljIGludCB4ZnJtX2RlbF9zYShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTExMzAtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MTEzMTpcXHRpZiAoKGVyciA9IHNlY3VyaXR5X3hmcm1fc3RhdGVfZGVsZXRlKHgpKSAhPSAwKVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTExMzItXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMTM5LVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjExNDA6XFx0ZXJyID0geGZybV9zdGF0ZV9kZWxldGUoeCk7XFxubmV0L3hmcm0veGZybV91c2VyLmMtMTE0MS1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTMwMDQ9c3RhdGljIGludCB4ZnJtX2FkZF9zYV9leHBpcmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMDMxLVxcdGlmICh1ZS1cXHUwMDNlaGFyZCkge1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjMwMzI6XFx0XFx0X194ZnJtX3N0YXRlX2RlbGV0ZSh4KTtcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMDMzLVxcdFxcdHhmcm1fYXVkaXRfc3RhdGVfZGVsZXRlKHgsIDEsIHRydWUpO1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MzM0Mz1zdGF0aWMgaW50IHhmcm1fZG9fbWlncmF0ZV9zdGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM0ODUtXFx0eGZybV9taWdyYXRlX3N5bmMoeGMsIHgpOyAvKiB0byBwcmV2ZW50IFNOL0lWIHJldXNlICovXFxubmV0L3hmcm0veGZybV91c2VyLmM6MzQ4NjpcXHRfX3hmcm1fc3RhdGVfZGVsZXRlKHgpO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM0ODctXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNngtXFx1MDAzZWxvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMDoxNjozOS42Njc3NzEzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk0MTA3MzQ2NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBQbGFuIGZvciBYRlJNIFN0YXRlIERlbGV0aW9uKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXRzIGltcGxpY2F0aW9ucyBmb3IgdGhlIFhGUk0gc3Vic3lzdGVtLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGUgY2hhbmdlcyB0byBgaGxpc3RfZGVsX3JjdWAgdG8gYGhsaXN0X2RlbF9pbml0X3JjdWAgaW4gYF9feGZybV9zdGF0ZV9kZWxldGVgIGZvciBgc3RhdGVfY2FjaGVgIGFuZCBgc3RhdGVfY2FjaGVfaW5wdXRgIGFyZSBwcmV0dHkgc2lnbmlmaWNhbnQsIGluZGljYXRpbmcgYSBwb3RlbnRpYWwgZml4IGZvciB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSBzY2VuYXJpb3Mgd2l0aGluIHN0YXRlIG1hbmFnZW1lbnQuIFRoaXMgbG9va3MgcmlwZSBmb3IgZnV6emluZy5cblxuVGhlIGB4ZnJtX3N0YXRlX2RlbGV0ZWAgYW5kIGBfX3hmcm1fc3RhdGVfZGVsZXRlYCBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIHF1aXRlIGEgZmV3IHBsYWNlcywgd2hpY2ggaXMgZ29vZCBmb3IgY292ZXJhZ2U6IGB4ZnJtX2RlbF9zYWAgKHRyaWdnZXJlZCBieSBgWEZSTV9NU0dfREVMU0FgKSwgYHhmcm1fYWRkX3NhX2V4cGlyZWAgKHZpYSBgWEZSTV9NU0dfRVhQSVJFYCksIGB4ZnJtX2RvX21pZ3JhdGVfc3RhdGVgIChgWEZSTV9NU0dfTUlHUkFURWApLCBgeGZybV9zdGF0ZV9mbHVzaGAgKGBYRlJNX01TR19GTFVTSFNBYCksIGB4ZnJtX2Rldl9zdGF0ZV9mbHVzaGAsIGB4ZnJtX3N0YXRlX2FkZGAgKGBYRlJNX01TR19ORVdTQWApLCBgeGZybV9zdGF0ZV91cGRhdGVgIChgWEZSTV9NU0dfVVBEU0FgKSwgYW5kIGFsc28gZnJvbSBhIHRpbWVyIGhhbmRsZXIgKGB4ZnJtX3RpbWVyX2hhbmRsZXJgKS4gYF9feGZybV9zdGF0ZV9kZWxldGVgIGxvb2tzIHRvIGJlIHRoZSBjb3JlIGZ1bmN0aW9uIGhlcmUuXG5cbkkgdGhpbmsgc2V0dGluZyBgRm9jdXNTeW1ib2xzYCB0byByZWFsbHkgaG9uZSBpbiBvbiB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucyBpcyB0aGUgd2F5IHRvIGdvIGhlcmUuIEknbGwgaW5pdGlhbGx5IGZvY3VzIG9uIGB4ZnJtX3N0YXRlX2RlbGV0ZWAsIHNpbmNlIGl0J3MgdGhlIGNvcmUgZnVuY3Rpb24gYW5kIEkgY2FuIHNlZSBpdCBpcyBleHBvcnRlZCBhbmQgbm9uLWlubGluZS4gVGhlIG5ldGxpbmsgaGFuZGxlciBgeGZybV9kZWxfc2FgIGlzIGFsc28ga2V5IGJlY2F1c2UgaXQncyB0aGUgZGlyZWN0IHVzZXIgaW50ZXJmYWNlIGZvciBkZWxldGlvbiByZXF1ZXN0cy4gTGV0J3MgYWRkIGB4ZnJtX3N0YXRlX2ZsdXNoYCwgYHhmcm1fc3RhdGVfYWRkYCwgYW5kIGB4ZnJtX3N0YXRlX3VwZGF0ZWAgYXMgd2VsbCB0byBtYWtlIHN1cmUgd2UncmUgZ2V0dGluZyBjb3ZlcmFnZSBvZiB0aGUgbmV0bGluayBpbnRlcmZhY2UuXG5cbkFzIGZhciBhcyBjb25maWd1cmF0aW9ucywgYFhGUk1fVVNFUmAgYW5kIGBYRlJNX0FMR09gIGFyZSByZWxldmFudC4gYFhGUk1fVVNFUmAgZGVwZW5kcyBvbiBgSU5FVGAgd2hpY2ggSSB3aWxsIGtlZXAgaW4gbWluZC4gSSBjYW4ganVzdCBzcGVjaWZ5IHRoZXNlIHR3byBjb25maWdzLlxuXG5JbiBzaG9ydCwgdGhlIHBhdGNoIGZpeGVzIHdoYXQgbG9va3MgbGlrZSBhIGNyaXRpY2FsIG1lbW9yeSBzYWZldHkgaXNzdWUgaW4gWEZSTS4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggYWRkcmVzc2VzIHN0YXRlIGRlbGV0aW9uIHdoaWNoIGlzIGNhbGxlZCB2aWEgdmFyaW91cyBOZXRsaW5rIG1lc3NhZ2VzIGFuZCBleHBpcmF0aW9uLiBUaGlzIGlzIGNlcnRhaW5seSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBkZW1hbmRzIGZ1enppbmcgdG8gdmFsaWRhdGUgdGhlIGZpeCdzIGVmZmVjdGl2ZW5lc3MuIFRpbWUgdG8gc2V0IHVwIHRoZSBmdXp6aW5nIHJ1biBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5NDcsIk91dHB1dFRva2VucyI6MTg2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjE2OjQ5LjA3ODUwODk1OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzI0NDgwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTV9VU0VSXCIsXG4gICAgXCJYRlJNX0FMR09cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX3N0YXRlX2RlbGV0ZVwiLFxuICAgIFwieGZybV9kZWxfc2FcIixcbiAgICBcInhmcm1fc3RhdGVfZmx1c2hcIixcbiAgICBcInhmcm1fc3RhdGVfYWRkXCIsXG4gICAgXCJ4ZnJtX3N0YXRlX3VwZGF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlIGluIFhGUk0gc3RhdGUgZGVsZXRpb24gYnkgcHJvcGVybHkgaW5pdGlhbGl6aW5nIHRoZSBobGlzdCBub2RlIGFmdGVyIGRlbGV0aW9uLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgSVBzZWMvWEZSTSBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBuZXRsaW5rIG1lc3NhZ2VzIChlLmcuLCBYRlJNX01TR19ERUxTQSwgWEZSTV9NU0dfRkxVU0hTQSkgb3Igc3RhdGUgZXhwaXJhdGlvbi4gSXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX1VTRVJcIixcbiAgICBcIlhGUk1fQUxHT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1fc3RhdGVfZGVsZXRlXCIsXG4gICAgXCJ4ZnJtX2RlbF9zYVwiLFxuICAgIFwieGZybV9zdGF0ZV9mbHVzaFwiLFxuICAgIFwieGZybV9zdGF0ZV9hZGRcIixcbiAgICBcInhmcm1fc3RhdGVfdXBkYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUgaW4gWEZSTSBzdGF0ZSBkZWxldGlvbiBieSBwcm9wZXJseSBpbml0aWFsaXppbmcgdGhlIGhsaXN0IG5vZGUgYWZ0ZXIgZGVsZXRpb24uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBJUHNlYy9YRlJNIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgdmlhIG5ldGxpbmsgbWVzc2FnZXMgKGUuZy4sIFhGUk1fTVNHX0RFTFNBLCBYRlJNX01TR19GTFVTSFNBKSBvciBzdGF0ZSBleHBpcmF0aW9uLiBJdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflown62dx[1] Phase: Succeeded StartedAt: 2026-08-01 00:17:00 +0000 UTC FinishedAt: 2026-08-01 00:17:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-01 00:17:00 +0000 UTC FinishedAt: 2026-08-01 00:17:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[2] Phase: Succeeded StartedAt: 2026-08-01 00:17:00 +0000 UTC FinishedAt: 2026-08-01 04:18:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-01 00:17:00 +0000 UTC FinishedAt: 2026-08-01 04:18:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-01 00:17:00 +0000 UTC FinishedAt: 2026-08-01 00:17:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-01 00:17:00 +0000 UTC FinishedAt: 2026-08-01 00:17:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflown62dx/series-workflown62dx-convert-artifact-1310455083/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-01 00:17:30 +0000 UTC FinishedAt: 2026-08-01 00:43:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-01 00:17:30 +0000 UTC FinishedAt: 2026-08-01 00:43:03 +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:*9ea24c91-9a38-447d-b4ea-1f18c93b513a,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-workflown62dx/series-workflown62dx-convert-artifact-1310455083/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": "2d567ffe-60c8-4d23-8f7c-b68ce79b075c", "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-workflown62dx/series-workflown62dx-build-action-2389673513/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-01 00:17:30 +0000 UTC FinishedAt: 2026-08-01 00:42:53 +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:*9ea24c91-9a38-447d-b4ea-1f18c93b513a,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-workflown62dx/series-workflown62dx-convert-artifact-1310455083/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": "2d567ffe-60c8-4d23-8f7c-b68ce79b075c", "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-workflown62dx/series-workflown62dx-build-action-2389673513/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-01 00:43:03 +0000 UTC FinishedAt: 2026-08-01 00:43:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-01 00:43:03 +0000 UTC FinishedAt: 2026-08-01 00:43:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-01 00:43:03 +0000 UTC FinishedAt: 2026-08-01 00:43:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-01 00:43:03 +0000 UTC FinishedAt: 2026-08-01 00:43:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflown62dx/series-workflown62dx-convert-artifact-2637029122/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-01 00:43:13 +0000 UTC FinishedAt: 2026-08-01 00:45:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-01 00:43:13 +0000 UTC FinishedAt: 2026-08-01 00:45:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2d567ffe-60c8-4d23-8f7c-b68ce79b075c,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-workflown62dx/series-workflown62dx-build-action-2389673513/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-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-01 00:45:22 +0000 UTC FinishedAt: 2026-08-01 00:45:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-01 00:45:22 +0000 UTC FinishedAt: 2026-08-01 00:45:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-01 00:45:22 +0000 UTC FinishedAt: 2026-08-01 01:13:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-01 00:45:22 +0000 UTC FinishedAt: 2026-08-01 01:13:07 +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:*9ea24c91-9a38-447d-b4ea-1f18c93b513a,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-workflown62dx/series-workflown62dx-convert-artifact-2637029122/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": "95fcbff8-110f-4342-8084-8181e9c0d154", "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-workflown62dx/series-workflown62dx-build-action-3798059350/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-01 00:45:22 +0000 UTC FinishedAt: 2026-08-01 01:12:55 +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:*9ea24c91-9a38-447d-b4ea-1f18c93b513a,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-workflown62dx/series-workflown62dx-convert-artifact-2637029122/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": "95fcbff8-110f-4342-8084-8181e9c0d154", "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-workflown62dx/series-workflown62dx-build-action-3798059350/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-01 01:13:07 +0000 UTC FinishedAt: 2026-08-01 01:13:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-01 01:13:07 +0000 UTC FinishedAt: 2026-08-01 01:13:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-01 01:13:07 +0000 UTC FinishedAt: 2026-08-01 01:15:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-01 01:13:07 +0000 UTC FinishedAt: 2026-08-01 01:14:54 +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:*95fcbff8-110f-4342-8084-8181e9c0d154,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-workflown62dx/series-workflown62dx-build-action-3798059350/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-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-01 01:15:05 +0000 UTC FinishedAt: 2026-08-01 04:18:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-01 01:15:05 +0000 UTC FinishedAt: 2026-08-01 01:15:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-01 01:15:05 +0000 UTC FinishedAt: 2026-08-01 01:15:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-01 01:15:06 +0000 UTC FinishedAt: 2026-08-01 04:18:15 +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":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"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:*2d567ffe-60c8-4d23-8f7c-b68ce79b075c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*95fcbff8-110f-4342-8084-8181e9c0d154,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-workflown62dx/series-workflown62dx-build-action-2389673513/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-workflown62dx/series-workflown62dx-build-action-3798059350/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-01 01:15:06 +0000 UTC FinishedAt: 2026-08-01 01:15:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-01 01:15:06 +0000 UTC FinishedAt: 2026-08-01 01:15:11 +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":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"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-workflown62dx/series-workflown62dx-convert-artifact-757451063/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-01 01:15:07 +0000 UTC FinishedAt: 2026-08-01 01:15:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-01 01:15:23 +0000 UTC FinishedAt: 2026-08-01 04:18:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflown62dx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_state_delete","xfrm_del_sa","xfrm_state_flush","xfrm_state_add","xfrm_state_update"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2fbade66245059c78daeaccfce13ecf499fffb51","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER","XFRM_ALGO"],"series_id":"dd7d3126-d4e4-4997-b990-c22ee9511193","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-01 01:15:23 +0000 UTC FinishedAt: 2026-08-01 04:18:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2d567ffe-60c8-4d23-8f7c-b68ce79b075c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*95fcbff8-110f-4342-8084-8181e9c0d154,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-workflown62dx/series-workflown62dx-build-action-2389673513/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-workflown62dx/series-workflown62dx-build-action-3798059350/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-workflown62dx/series-workflown62dx-convert-artifact-757451063/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,}