Name: series-workflowwsff5 Phase: Succeeded StartedAt: 2026-07-01 00:20:57 +0000 UTC FinishedAt: 2026-07-01 02:13:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[0] Phase: Succeeded StartedAt: 2026-07-01 00:20:57 +0000 UTC FinishedAt: 2026-07-01 01:05:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 00:20:57 +0000 UTC FinishedAt: 2026-07-01 01:05:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2a00517db8de4be7df3d483b215c5544fb30a191", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RMNET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2a00517db8de4be7df3d483b215c5544fb30a191", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RMNET" ], "series_id": "6afa2075-a610-4249-a2c4-808a35bdd30e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rmnet_map_validate_packet_len", "rmnet_map_ingress_handler", "rmnet_map_deaggregate" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JNTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW4mIzM0OywKICAgICYjMzQ7cm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtybW5ldF9tYXBfZGVhZ2dyZWdhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IGxlbmd0aCB2YWxpZGF0aW9uIGxvZ2ljIGluIHRoZSBSTU5FVCBkcml2ZXImIzM5O3MgaW5ncmVzcyBwYXRoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2VzIGFuZCBpcyBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDE6MDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzMWFhNTEyODI1NGZiNjk2YjhjNGY5Mjc0NDkyODk3MmRhNmM1MzNjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAwMTowNToxNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuY1xuaW5kZXggOWYzNDc5NTAwZjg1YTEuLmQwNTVhMjYyOGQ4YzlkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuY1xuQEAgLTEyNiw3ICYjNDM7MTI2LDEwIEBAIHJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdFx0Y29uc3VtZV9za2Ioc2tiKTtcbiBcdH0gZWxzZSB7XG4tXHRcdF9fcm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcihza2IsIHBvcnQpO1xuJiM0MztcdFx0aWYgKHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuKHNrYiwgcG9ydCkpXG4mIzQzO1x0XHRcdF9fcm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcihza2IsIHBvcnQpO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdH1cbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXAuaFxuaW5kZXggYjcwMjg0MDk1NTY4Y2UuLjYwY2E4Yjc4MGM4OGFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X21hcC5oXG5AQCAtNTksNSAmIzQzOzU5LDYgQEAgdm9pZCBybW5ldF9tYXBfdHhfYWdncmVnYXRlX2luaXQoc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpO1xuIHZvaWQgcm1uZXRfbWFwX3R4X2FnZ3JlZ2F0ZV9leGl0KHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0KTtcbiB2b2lkIHJtbmV0X21hcF91cGRhdGVfdWxfYWdnX2NvbmZpZyhzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydCwgdTMyIHNpemUsXG4gXHRcdFx0XHQgICAgdTMyIGNvdW50LCB1MzIgdGltZSk7XG4mIzQzO3UzMiBybW5ldF9tYXBfdmFsaWRhdGVfcGFja2V0X2xlbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydCk7XG4gXG4gI2VuZGlmIC8qIF9STU5FVF9NQVBfSF8gKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXBfZGF0YS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwX2RhdGEuY1xuaW5kZXggOGI0NjQwYzVkNjFlYmUuLjMwNWFlMTVhZThmMzkzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwX2RhdGEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwX2RhdGEuY1xuQEAgLTMzMyw1NCAmIzQzOzMzMyw2MiBAQCBzdHJ1Y3Qgcm1uZXRfbWFwX2hlYWRlciAqcm1uZXRfbWFwX2FkZF9tYXBfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gbWFwX2hlYWRlcjtcbiB9XG4gXG4tLyogRGVhZ2dyZWdhdGVzIGEgc2luZ2xlIHBhY2tldFxuLSAqIEEgd2hvbGUgbmV3IGJ1ZmZlciBpcyBhbGxvY2F0ZWQgZm9yIGVhY2ggcG9ydGlvbiBvZiBhbiBhZ2dyZWdhdGVkIGZyYW1lLlxuLSAqIENhbGxlciBzaG91bGQga2VlcCBjYWxsaW5nIGRlYWdncmVnYXRlKCkgb24gdGhlIHNvdXJjZSBza2IgdW50aWwgMCBpc1xuLSAqIHJldHVybmVkLCBpbmRpY2F0aW5nIHRoYXQgdGhlcmUgYXJlIG5vIG1vcmUgcGFja2V0cyB0byBkZWFnZ3JlZ2F0ZS4gQ2FsbGVyXG4tICogaXMgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgdGhlIG9yaWdpbmFsIHNrYi5cbi0gKi9cbi1zdHJ1Y3Qgc2tfYnVmZiAqcm1uZXRfbWFwX2RlYWdncmVnYXRlKHN0cnVjdCBza19idWZmICpza2IsXG4tXHRcdFx0XHQgICAgICBzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydClcbiYjNDM7dTMyIHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0KVxuIHtcbiBcdHN0cnVjdCBybW5ldF9tYXBfdjVfY3N1bV9oZWFkZXIgKm5leHRfaGRyID0gTlVMTDtcbiBcdHN0cnVjdCBybW5ldF9tYXBfaGVhZGVyICptYXBoO1xuIFx0dm9pZCAqZGF0YSA9IHNrYi1cdTAwM2VkYXRhO1xuLVx0c3RydWN0IHNrX2J1ZmYgKnNrYm47XG4tXHR1OCBuZXh0aGRyX3R5cGU7XG4gXHR1MzIgcGFja2V0X2xlbjtcbiBcbi1cdGlmIChza2ItXHUwMDNlbGVuID09IDApXG4tXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBzaXplb2YoKm1hcGgpKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4gXG4gXHRtYXBoID0gKHN0cnVjdCBybW5ldF9tYXBfaGVhZGVyICopc2tiLVx1MDAzZWRhdGE7XG4mIzQzO1xuJiM0MztcdC8qIFNvbWUgaGFyZHdhcmUgY2FuIHNlbmQgdXMgZW1wdHkgZnJhbWVzLiBDYXRjaCB0aGVtICovXG4mIzQzO1x0aWYgKCFtYXBoLVx1MDAzZXBrdF9sZW4pXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4gXHRwYWNrZXRfbGVuID0gbnRvaHMobWFwaC1cdTAwM2Vwa3RfbGVuKSAmIzQzOyBzaXplb2YoKm1hcGgpO1xuIFxuIFx0aWYgKHBvcnQtXHUwMDNlZGF0YV9mb3JtYXQgXHUwMDI2IFJNTkVUX0ZMQUdTX0lOR1JFU1NfTUFQX0NLU1VNVjQpIHtcbiBcdFx0cGFja2V0X2xlbiAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBybW5ldF9tYXBfZGxfY3N1bV90cmFpbGVyKTtcbi1cdH0gZWxzZSBpZiAocG9ydC1cdTAwM2VkYXRhX2Zvcm1hdCBcdTAwMjYgUk1ORVRfRkxBR1NfSU5HUkVTU19NQVBfQ0tTVU1WNSkge1xuLVx0XHRpZiAoIShtYXBoLVx1MDAzZWZsYWdzIFx1MDAyNiBNQVBfQ01EX0ZMQUcpKSB7XG4tXHRcdFx0cGFja2V0X2xlbiAmIzQzOz0gc2l6ZW9mKCpuZXh0X2hkcik7XG4tXHRcdFx0aWYgKG1hcGgtXHUwMDNlZmxhZ3MgXHUwMDI2IE1BUF9ORVhUX0hFQURFUl9GTEFHKVxuLVx0XHRcdFx0bmV4dF9oZHIgPSBkYXRhICYjNDM7IHNpemVvZigqbWFwaCk7XG4tXHRcdFx0ZWxzZVxuLVx0XHRcdFx0LyogTWFwdjUgZGF0YSBwa3Qgd2l0aG91dCBjc3VtIGhkciBpcyBpbnZhbGlkICovXG4tXHRcdFx0XHRyZXR1cm4gTlVMTDtcbi1cdFx0fVxuJiM0MztcdH0gZWxzZSBpZiAoKHBvcnQtXHUwMDNlZGF0YV9mb3JtYXQgXHUwMDI2IFJNTkVUX0ZMQUdTX0lOR1JFU1NfTUFQX0NLU1VNVjUpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIShtYXBoLVx1MDAzZWZsYWdzIFx1MDAyNiBNQVBfQ01EX0ZMQUcpKSB7XG4mIzQzO1x0XHQvKiBNYXB2NSBkYXRhIHBrdCB3aXRob3V0IGNzdW0gaGRyIGlzIGludmFsaWQgKi9cbiYjNDM7XHRcdGlmICghKG1hcGgtXHUwMDNlZmxhZ3MgXHUwMDI2IE1BUF9ORVhUX0hFQURFUl9GTEFHKSlcbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdFx0cGFja2V0X2xlbiAmIzQzOz0gc2l6ZW9mKCpuZXh0X2hkcik7XG4mIzQzO1x0XHRuZXh0X2hkciA9IGRhdGEgJiM0Mzsgc2l6ZW9mKCptYXBoKTtcbiBcdH1cbiBcbi1cdGlmICgoKGludClza2ItXHUwMDNlbGVuIC0gKGludClwYWNrZXRfbGVuKSBcdTAwM2MgMClcbi1cdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIHBhY2tldF9sZW4pXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiBcbi1cdC8qIFNvbWUgaGFyZHdhcmUgY2FuIHNlbmQgdXMgZW1wdHkgZnJhbWVzLiBDYXRjaCB0aGVtICovXG4tXHRpZiAoIW1hcGgtXHUwMDNlcGt0X2xlbilcbi1cdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0aWYgKG5leHRfaGRyIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICB1OF9nZXRfYml0cyhuZXh0X2hkci1cdTAwM2VoZWFkZXJfaW5mbywgTUFQVjVfSERSSU5GT19IRFJfVFlQRV9GTUFTSykgIT1cbiYjNDM7XHQgICAgUk1ORVRfTUFQX0hFQURFUl9UWVBFX0NTVU1fT0ZGTE9BRClcbiYjNDM7XHRcdHJldHVybiAwO1xuIFxuLVx0aWYgKG5leHRfaGRyKSB7XG4tXHRcdG5leHRoZHJfdHlwZSA9IHU4X2dldF9iaXRzKG5leHRfaGRyLVx1MDAzZWhlYWRlcl9pbmZvLFxuLVx0XHRcdFx0XHQgICBNQVBWNV9IRFJJTkZPX0hEUl9UWVBFX0ZNQVNLKTtcbi1cdFx0aWYgKG5leHRoZHJfdHlwZSAhPSBSTU5FVF9NQVBfSEVBREVSX1RZUEVfQ1NVTV9PRkZMT0FEKVxuLVx0XHRcdHJldHVybiBOVUxMO1xuLVx0fVxuJiM0MztcdHJldHVybiBwYWNrZXRfbGVuO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKiBEZWFnZ3JlZ2F0ZXMgYSBzaW5nbGUgcGFja2V0XG4mIzQzOyAqIEEgd2hvbGUgbmV3IGJ1ZmZlciBpcyBhbGxvY2F0ZWQgZm9yIGVhY2ggcG9ydGlvbiBvZiBhbiBhZ2dyZWdhdGVkIGZyYW1lLlxuJiM0MzsgKiBDYWxsZXIgc2hvdWxkIGtlZXAgY2FsbGluZyBkZWFnZ3JlZ2F0ZSgpIG9uIHRoZSBzb3VyY2Ugc2tiIHVudGlsIDAgaXNcbiYjNDM7ICogcmV0dXJuZWQsIGluZGljYXRpbmcgdGhhdCB0aGVyZSBhcmUgbm8gbW9yZSBwYWNrZXRzIHRvIGRlYWdncmVnYXRlLiBDYWxsZXJcbiYjNDM7ICogaXMgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgdGhlIG9yaWdpbmFsIHNrYi5cbiYjNDM7ICovXG4mIzQzO3N0cnVjdCBza19idWZmICpybW5ldF9tYXBfZGVhZ2dyZWdhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiYjNDM7XHRcdFx0XHQgICAgICBzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBza19idWZmICpza2JuO1xuJiM0MztcdHUzMiBwYWNrZXRfbGVuO1xuJiM0MztcbiYjNDM7XHRwYWNrZXRfbGVuID0gcm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW4oc2tiLCBwb3J0KTtcbiYjNDM7XHRpZiAoIXBhY2tldF9sZW4pXG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdHNrYm4gPSBhbGxvY19za2IocGFja2V0X2xlbiAmIzQzOyBSTU5FVF9NQVBfREVBR0dSX1NQQUNJTkcsIEdGUF9BVE9NSUMpO1xuIFx0aWYgKCFza2JuKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjA1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JNTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW4mIzM0OywKICAgICYjMzQ7cm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtybW5ldF9tYXBfZGVhZ2dyZWdhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IGxlbmd0aCB2YWxpZGF0aW9uIGxvZ2ljIGluIHRoZSBSTU5FVCBkcml2ZXImIzM5O3MgaW5ncmVzcyBwYXRoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2VzIGFuZCBpcyBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDMxYWE1MTI4MjU0ZmI2OTZiOGM0ZjkyNzQ0OTI4OTcyZGE2YzUzM2MKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxIDAxOjA1OjE1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2hhbmRsZXJzLmMKaW5kZXggOWYzNDc5NTAwZjg1YTEuLmQwNTVhMjYyOGQ4YzlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2hhbmRsZXJzLmMKQEAgLTEyNiw3ICYjNDM7MTI2LDEwIEBAIHJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAogCQljb25zdW1lX3NrYihza2IpOwogCX0gZWxzZSB7Ci0JCV9fcm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcihza2IsIHBvcnQpOwomIzQzOwkJaWYgKHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuKHNrYiwgcG9ydCkpCiYjNDM7CQkJX19ybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyKHNrYiwgcG9ydCk7CiYjNDM7CQllbHNlCiYjNDM7CQkJa2ZyZWVfc2tiKHNrYik7CiAJfQogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXAuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X21hcC5oCmluZGV4IGI3MDI4NDA5NTU2OGNlLi42MGNhOGI3ODBjODhhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwLmgKQEAgLTU5LDUgJiM0Mzs1OSw2IEBAIHZvaWQgcm1uZXRfbWFwX3R4X2FnZ3JlZ2F0ZV9pbml0KHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0KTsKIHZvaWQgcm1uZXRfbWFwX3R4X2FnZ3JlZ2F0ZV9leGl0KHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0KTsKIHZvaWQgcm1uZXRfbWFwX3VwZGF0ZV91bF9hZ2dfY29uZmlnKHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0LCB1MzIgc2l6ZSwKIAkJCQkgICAgdTMyIGNvdW50LCB1MzIgdGltZSk7CiYjNDM7dTMyIHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0KTsKIAogI2VuZGlmIC8qIF9STU5FVF9NQVBfSF8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X21hcF9kYXRhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXBfZGF0YS5jCmluZGV4IDhiNDY0MGM1ZDYxZWJlLi4zMDVhZTE1YWU4ZjM5MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwX2RhdGEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXBfZGF0YS5jCkBAIC0zMzMsNTQgJiM0MzszMzMsNjIgQEAgc3RydWN0IHJtbmV0X21hcF9oZWFkZXIgKnJtbmV0X21hcF9hZGRfbWFwX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXJldHVybiBtYXBfaGVhZGVyOwogfQogCi0vKiBEZWFnZ3JlZ2F0ZXMgYSBzaW5nbGUgcGFja2V0Ci0gKiBBIHdob2xlIG5ldyBidWZmZXIgaXMgYWxsb2NhdGVkIGZvciBlYWNoIHBvcnRpb24gb2YgYW4gYWdncmVnYXRlZCBmcmFtZS4KLSAqIENhbGxlciBzaG91bGQga2VlcCBjYWxsaW5nIGRlYWdncmVnYXRlKCkgb24gdGhlIHNvdXJjZSBza2IgdW50aWwgMCBpcwotICogcmV0dXJuZWQsIGluZGljYXRpbmcgdGhhdCB0aGVyZSBhcmUgbm8gbW9yZSBwYWNrZXRzIHRvIGRlYWdncmVnYXRlLiBDYWxsZXIKLSAqIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSBvcmlnaW5hbCBza2IuCi0gKi8KLXN0cnVjdCBza19idWZmICpybW5ldF9tYXBfZGVhZ2dyZWdhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwKLQkJCQkgICAgICBzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydCkKJiM0Mzt1MzIgcm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW4oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpCiB7CiAJc3RydWN0IHJtbmV0X21hcF92NV9jc3VtX2hlYWRlciAqbmV4dF9oZHIgPSBOVUxMOwogCXN0cnVjdCBybW5ldF9tYXBfaGVhZGVyICptYXBoOwogCXZvaWQgKmRhdGEgPSBza2ItJmd0O2RhdGE7Ci0Jc3RydWN0IHNrX2J1ZmYgKnNrYm47Ci0JdTggbmV4dGhkcl90eXBlOwogCXUzMiBwYWNrZXRfbGVuOwogCi0JaWYgKHNrYi0mZ3Q7bGVuID09IDApCi0JCXJldHVybiBOVUxMOwomIzQzOwlpZiAoc2tiLSZndDtsZW4gJmx0OyBzaXplb2YoKm1hcGgpKQomIzQzOwkJcmV0dXJuIDA7CiAKIAltYXBoID0gKHN0cnVjdCBybW5ldF9tYXBfaGVhZGVyICopc2tiLSZndDtkYXRhOwomIzQzOwomIzQzOwkvKiBTb21lIGhhcmR3YXJlIGNhbiBzZW5kIHVzIGVtcHR5IGZyYW1lcy4gQ2F0Y2ggdGhlbSAqLwomIzQzOwlpZiAoIW1hcGgtJmd0O3BrdF9sZW4pCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKIAlwYWNrZXRfbGVuID0gbnRvaHMobWFwaC0mZ3Q7cGt0X2xlbikgJiM0Mzsgc2l6ZW9mKCptYXBoKTsKIAogCWlmIChwb3J0LSZndDtkYXRhX2Zvcm1hdCAmYW1wOyBSTU5FVF9GTEFHU19JTkdSRVNTX01BUF9DS1NVTVY0KSB7CiAJCXBhY2tldF9sZW4gJiM0Mzs9IHNpemVvZihzdHJ1Y3Qgcm1uZXRfbWFwX2RsX2NzdW1fdHJhaWxlcik7Ci0JfSBlbHNlIGlmIChwb3J0LSZndDtkYXRhX2Zvcm1hdCAmYW1wOyBSTU5FVF9GTEFHU19JTkdSRVNTX01BUF9DS1NVTVY1KSB7Ci0JCWlmICghKG1hcGgtJmd0O2ZsYWdzICZhbXA7IE1BUF9DTURfRkxBRykpIHsKLQkJCXBhY2tldF9sZW4gJiM0Mzs9IHNpemVvZigqbmV4dF9oZHIpOwotCQkJaWYgKG1hcGgtJmd0O2ZsYWdzICZhbXA7IE1BUF9ORVhUX0hFQURFUl9GTEFHKQotCQkJCW5leHRfaGRyID0gZGF0YSAmIzQzOyBzaXplb2YoKm1hcGgpOwotCQkJZWxzZQotCQkJCS8qIE1hcHY1IGRhdGEgcGt0IHdpdGhvdXQgY3N1bSBoZHIgaXMgaW52YWxpZCAqLwotCQkJCXJldHVybiBOVUxMOwotCQl9CiYjNDM7CX0gZWxzZSBpZiAoKHBvcnQtJmd0O2RhdGFfZm9ybWF0ICZhbXA7IFJNTkVUX0ZMQUdTX0lOR1JFU1NfTUFQX0NLU1VNVjUpICZhbXA7JmFtcDsKJiM0MzsJCSAgICEobWFwaC0mZ3Q7ZmxhZ3MgJmFtcDsgTUFQX0NNRF9GTEFHKSkgewomIzQzOwkJLyogTWFwdjUgZGF0YSBwa3Qgd2l0aG91dCBjc3VtIGhkciBpcyBpbnZhbGlkICovCiYjNDM7CQlpZiAoIShtYXBoLSZndDtmbGFncyAmYW1wOyBNQVBfTkVYVF9IRUFERVJfRkxBRykpCiYjNDM7CQkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CQlwYWNrZXRfbGVuICYjNDM7PSBzaXplb2YoKm5leHRfaGRyKTsKJiM0MzsJCW5leHRfaGRyID0gZGF0YSAmIzQzOyBzaXplb2YoKm1hcGgpOwogCX0KIAotCWlmICgoKGludClza2ItJmd0O2xlbiAtIChpbnQpcGFja2V0X2xlbikgJmx0OyAwKQotCQlyZXR1cm4gTlVMTDsKJiM0MzsJaWYgKHNrYi0mZ3Q7bGVuICZsdDsgcGFja2V0X2xlbikKJiM0MzsJCXJldHVybiAwOwogCi0JLyogU29tZSBoYXJkd2FyZSBjYW4gc2VuZCB1cyBlbXB0eSBmcmFtZXMuIENhdGNoIHRoZW0gKi8KLQlpZiAoIW1hcGgtJmd0O3BrdF9sZW4pCi0JCXJldHVybiBOVUxMOwomIzQzOwlpZiAobmV4dF9oZHIgJmFtcDsmYW1wOwomIzQzOwkgICAgdThfZ2V0X2JpdHMobmV4dF9oZHItJmd0O2hlYWRlcl9pbmZvLCBNQVBWNV9IRFJJTkZPX0hEUl9UWVBFX0ZNQVNLKSAhPQomIzQzOwkgICAgUk1ORVRfTUFQX0hFQURFUl9UWVBFX0NTVU1fT0ZGTE9BRCkKJiM0MzsJCXJldHVybiAwOwogCi0JaWYgKG5leHRfaGRyKSB7Ci0JCW5leHRoZHJfdHlwZSA9IHU4X2dldF9iaXRzKG5leHRfaGRyLSZndDtoZWFkZXJfaW5mbywKLQkJCQkJICAgTUFQVjVfSERSSU5GT19IRFJfVFlQRV9GTUFTSyk7Ci0JCWlmIChuZXh0aGRyX3R5cGUgIT0gUk1ORVRfTUFQX0hFQURFUl9UWVBFX0NTVU1fT0ZGTE9BRCkKLQkJCXJldHVybiBOVUxMOwotCX0KJiM0MzsJcmV0dXJuIHBhY2tldF9sZW47CiYjNDM7fQomIzQzOwomIzQzOy8qIERlYWdncmVnYXRlcyBhIHNpbmdsZSBwYWNrZXQKJiM0MzsgKiBBIHdob2xlIG5ldyBidWZmZXIgaXMgYWxsb2NhdGVkIGZvciBlYWNoIHBvcnRpb24gb2YgYW4gYWdncmVnYXRlZCBmcmFtZS4KJiM0MzsgKiBDYWxsZXIgc2hvdWxkIGtlZXAgY2FsbGluZyBkZWFnZ3JlZ2F0ZSgpIG9uIHRoZSBzb3VyY2Ugc2tiIHVudGlsIDAgaXMKJiM0MzsgKiByZXR1cm5lZCwgaW5kaWNhdGluZyB0aGF0IHRoZXJlIGFyZSBubyBtb3JlIHBhY2tldHMgdG8gZGVhZ2dyZWdhdGUuIENhbGxlcgomIzQzOyAqIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSBvcmlnaW5hbCBza2IuCiYjNDM7ICovCiYjNDM7c3RydWN0IHNrX2J1ZmYgKnJtbmV0X21hcF9kZWFnZ3JlZ2F0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAomIzQzOwkJCQkgICAgICBzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBza19idWZmICpza2JuOwomIzQzOwl1MzIgcGFja2V0X2xlbjsKJiM0MzsKJiM0MzsJcGFja2V0X2xlbiA9IHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuKHNrYiwgcG9ydCk7CiYjNDM7CWlmICghcGFja2V0X2xlbikKJiM0MzsJCXJldHVybiBOVUxMOwogCiAJc2tibiA9IGFsbG9jX3NrYihwYWNrZXRfbGVuICYjNDM7IFJNTkVUX01BUF9ERUFHR1JfU1BBQ0lORywgR0ZQX0FUT01JQyk7CiAJaWYgKCFza2JuKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDczCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUk1ORVQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBgcm1uZXRgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIGBybW5ldF9oYW5kbGVycy5jYCBhbmQgYHJtbmV0X21hcF9kYXRhLmNgLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIHRoaXMgbmV3IGZ1bmN0aW9uLCBgcm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW5gLiBJdCBzZWVtcyBsaWtlIHRoZXkmIzM5O3ZlIGV4dHJhY3RlZCB0aGUgcGFja2V0IGxlbmd0aCB2YWxpZGF0aW9uIGxvZ2ljIGZyb20gdGhlIGV4aXN0aW5nIGBybW5ldF9tYXBfZGVhZ2dyZWdhdGVgIGZ1bmN0aW9uLCBhbmQgYXJlIG5vdyByZXVzaW5nIGl0IHdpdGhpbiBgcm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcmAuIFNtYXJ0LCByZWR1Y2luZyBjb2RlIGR1cGxpY2F0aW9uIGlzIGFsd2F5cyBhIGdvb2QgbW92ZS4KCk5vdywgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYWx3YXlzIHJlYWNoYWJpbGl0eSBhbmQgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQ6IElzIHRoaXMgY29kZSBhY3R1YWxseSBnb2luZyB0byBiZSB1c2VkPyBVbmRlciB3aGF0IGNvbmRpdGlvbnM/IFdoYXQgS2NvbmZpZyBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgdGhpcyBuZXcgcGF0aD8gVGhlIGRyaXZlciBpcyBgcm1uZXRgLCB3aGljaCBJIGtub3cgaXMgUXVhbGNvbW0mIzM5O3MgSVBDIHJvdXRlciwgdGhlIFJNTkVUIGltcGxlbWVudGF0aW9uLiBTbywgbXkgbmV4dCBzdGVwIGlzIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGRyaXZlci4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgcGF0Y2guIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Uk1ORVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTA3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIE5ldHdvcmsgRHJpdmVyIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIFF1YWxjb21tIFJNTkVUIGRyaXZlciBhcmUgZGVmaW5lZC4gTXkgZmlyc3QgaW5zdGluY3QsIGJhc2VkIG9uIGV4cGVyaWVuY2UsIGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSB0cmVlLiBUaGUgbmFtaW5nIGNvbnZlbnRpb24gc3VnZ2VzdHMgdGhlIG1vc3QgbGlrZWx5IGxvY2F0aW9uIGlzIHVuZGVyIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHBsYWNlIHRvIHN0YXJ0LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGF0IGRpcmVjdG9yeSwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGZvciB0aGUgb3B0aW9ucyB0aGF0IGNvbnRyb2wgdGhlIGRyaXZlciYjMzk7cyBidWlsZCBhbmQgZmVhdHVyZXMuIEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBwbGFjZSBrZXJuZWwgZGV2ZWxvcGVycyBkZWZpbmUgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXTigJlzIGhpZ2hseSBwcm9iYWJsZSBpdCB3aWxsIGJlIGluIHRoZSBwYXJlbnQgZGlyZWN0b3J5LCBvciBpbiB0aGUgY3VycmVudCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDE6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtybW5ldF9jb25maWcuYyYjMzQ7LAogICAgJiMzNDtybW5ldF9jb25maWcuaCYjMzQ7LAogICAgJiMzNDtybW5ldF9oYW5kbGVycy5jJiMzNDssCiAgICAmIzM0O3JtbmV0X2hhbmRsZXJzLmgmIzM0OywKICAgICYjMzQ7cm1uZXRfbWFwLmgmIzM0OywKICAgICYjMzQ7cm1uZXRfbWFwX2NvbW1hbmQuYyYjMzQ7LAogICAgJiMzNDtybW5ldF9tYXBfZGF0YS5jJiMzNDssCiAgICAmIzM0O3JtbmV0X3ByaXZhdGUuaCYjMzQ7LAogICAgJiMzNDtybW5ldF92bmQuYyYjMzQ7LAogICAgJiMzNDtybW5ldF92bmQuaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDE6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIzMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqUmUtZXhhbWluaW5nIHRoZSBRdWFsY29tbSBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgY2lyY2xlIGJhY2sgdG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGhhdmluZyBhIGh1bmNoLCBhbmQgaXQmIzM5O3MgbmFnZ2luZyBhdCBtZS4gUGVyaGFwcywganVzdCBwZXJoYXBzLCB3aGF0IHdlJiMzOTtyZSBsb29raW5nIGZvciBpc24mIzM5O3Qgc29tZSBvYnNjdXJlIGZsYWcgb3IgZGVwZW5kZW5jeSBJJiMzOTt2ZSBvdmVybG9va2VkLiBNYXliZSB0aGUga2V5IGlzIHJpZ2h0IGluIGZyb250IG9mIHVzLCBidXJpZWQgd2l0aGluIGEgc2VlbWluZ2x5IHN0cmFpZ2h0Zm9yd2FyZCBjb25maWd1cmF0aW9uIGVudHJ5LiBJIGtlZXAgcmV0dXJuaW5nIHRvIGBjb25maWcgUk1ORVRgIHdoaWNoIHNlZW1zIG92ZXJseSBzaW1wbGlzdGljLiBJcyBpdCAqcmVhbGx5KiB0aGF0IGVhc3k/IElzIHRoaXMgdGhlIG1pc3NpbmcgcGllY2Ugb2YgdGhlIHB1enpsZSB0aGF0IGV4cGxhaW5zIHRoZSBiZWhhdmlvcj8gSSBuZWVkIHRvIHJldmlzaXQgdGhlIHN0cnVjdHVyZSBvZiB0aGUgY29uZmlndXJhdGlvbiBmaWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSTU5FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9LY29uZmlnOjY6bWVudWNvbmZpZyBSTU5FVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7Um1OZXQgTUFQIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NDIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqTmF2aWdhdGluZyB0aGUgUXVhbGNvbW0gUk1ORVQgS2NvbmZpZyoqCgpSaWdodCwgbGV0JiMzOTtzIHNlZSwgaXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBuZXN0bGVkIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvS2NvbmZpZ2AuIFRpbWUgdG8gZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBRdWFsY29tbSBSTU5FVCBkcml2ZXIgaXMgY29uZmlndXJlZC4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHZhcmlvdXMgY29tcGlsZS10aW1lIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBwYXJ0aWN1bGFyIG5ldHdvcmtpbmcgY29tcG9uZW50LiBJdOKAmWxsIHRlbGwgbWUgZXZlcnl0aGluZyBJIG5lZWQgdG8ga25vdyBhYm91dCB0aGUgZmVhdHVyZSBzZXQuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgcGllY2VzIGFuZCBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGxheW91dC4gTGV04oCZcyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBSTU5FVCBNQVAgZHJpdmVyXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgUk1ORVRcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O1JtTmV0IE1BUCBkcml2ZXJcJiMzNDtcbiAgIDg6XHRcdGRlZmF1bHQgblxuICAgOTpcdFx0c2VsZWN0IEdST19DRUxMU1xuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBJZiB5b3Ugc2VsZWN0IHRoaXMsIHlvdSB3aWxsIGVuYWJsZSB0aGUgUk1ORVQgbW9kdWxlIHdoaWNoIGlzIHVzZWRcbiAgMTI6XHRcdCAgZm9yIGhhbmRsaW5nIGRhdGEgaW4gdGhlIG11bHRpcGxleGluZyBhbmQgYWdncmVnYXRpb24gcHJvdG9jb2wgKE1BUClcbiAgMTM6XHRcdCAgZm9ybWF0IGluIHRoZSBlbWJlZGRlZCBkYXRhIHBhdGguIFJNTkVUIGRldmljZXMgY2FuIGJlIGF0dGFjaGVkIHRvXG4gIDE0Olx0XHQgIGFueSBJUCBtb2RlIHBoeXNpY2FsIGRldmljZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDE6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk0NAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDEzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHJtbmV0IENvbmZpZ3VyYXRpb24gYW5kIEhhbmRsZXIgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYENPTkZJR19STU5FVGAsIHdoaWNoIGlzIG91ciBzdGFydGluZyBwb2ludC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbiB0aGUgYHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuYCBhbmQgYHJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXJgIGZ1bmN0aW9ucy4gVGhpcyBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnOiBpcyB0aGlzIGZ1enphYmxlPyBBYnNvbHV0ZWx5LiBJdOKAmXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB0byB0aGUgcGFja2V0IHBhcnNpbmcgbG9naWMgKndpdGhpbiogYSBuZXR3b3JrIGRyaXZlci4gVGhhdCYjMzk7cyBwcmltZSBmdXp6aW5nIHRlcnJpdG9yeS4KClNwZWNpZmljYWxseSwgYHJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXJgIGlzIHRyaWdnZXJlZCBieSBpbmNvbWluZyBwYWNrZXRzLiBTaW5jZSBpdCYjMzk7cyBuZXR3b3JrLWZhY2luZywgd2UgY2FuIGRlZmluaXRlbHkgdGFyZ2V0IGl0IHRocm91Z2ggdGhlIG5ldHdvcmsgaW50ZXJmYWNlcy4gQW5kIGhleSwgbGV0JiMzOTtzIG5vdCBmb3JnZXQgdGhhdCBgcm1uZXRfbWFwX2RlYWdncmVnYXRlYCBpcyBhbHNvIGNhbGxlZCBvbiBpbmdyZXNzLiBJdCYjMzk7cyBhbGwgdGllZCB0b2dldGhlci4KCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gYHJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXJgLiBJJiMzOTtsbCBsb2NhdGUgaXQgaW4gYHJtbmV0X2hhbmRsZXJzLmNgIGFuZCBzdGFydCBkaWdnaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jPTU1PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jOjU2Ol9fcm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYy01Ny1cdFx0XHQgICAgc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYz0xMDg9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2hhbmRsZXJzLmM6MTA5OnJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2hhbmRsZXJzLmMtMTEwLVx0XHRcdCAgc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYy0xMjQtXHRcdHdoaWxlICgoc2tibiA9IHJtbmV0X21hcF9kZWFnZ3JlZ2F0ZShza2IsIHBvcnQpKSAhPSBOVUxMKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYzoxMjU6XHRcdFx0X19ybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyKHNrYm4sIHBvcnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYy0xMjYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYy0xMjktXHRcdGlmIChybW5ldF9tYXBfdmFsaWRhdGVfcGFja2V0X2xlbihza2IsIHBvcnQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYzoxMzA6XHRcdFx0X19ybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyKHNrYiwgcG9ydCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jLTEzMS1cdFx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2hhbmRsZXJzLmM9MjAzPXJ4X2hhbmRsZXJfcmVzdWx0X3Qgcm1uZXRfcnhfaGFuZGxlcihzdHJ1Y3Qgc2tfYnVmZiAqKnBza2IpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYy0yMjktXHRjYXNlIFJNTkVUX0VQTU9ERV9WTkQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jOjIzMDpcdFx0cm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcihza2IsIHBvcnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYy0yMzEtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTM3CgkJCQkJCQlvdXRwdXQ6IDEwOAoJCQkJCQkJdGhvdWdodHM6IDIzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBSTU5FVCBEcml2ZXIgSW5ncmVzcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlLCBpdCYjMzk7cyBjbGVhciB0aGUgdGFyZ2V0IGlzIHRoZSBSTU5FVCBkcml2ZXImIzM5O3MgcGFja2V0IGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgcm1uZXRfcnhfaGFuZGxlcmAgZnVuY3Rpb24sIHdoaWNoIGlzIHJlZ2lzdGVyZWQgYXMgYW4gYHJ4X2hhbmRsZXJgIG9uIGEgbmV0ZGV2LiBUaGF0IG1lYW5zIGl0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBpbmNvbWluZyBwYWNrZXRzLgoKVGhlIHJlYWxseSBpbnRlcmVzdGluZyBwYXJ0cyBmb3IgZnV6emluZyBhcmUgZ29pbmcgdG8gYmUgdGhvc2UgbW9kaWZpZWQgZnVuY3Rpb25zOiBgcm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW5gLCBgcm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcmAsIGFuZCBgcm1uZXRfbWFwX2RlYWdncmVnYXRlYC4gVGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHdoZXJlIHRoZSBwYWNrZXQgbGVuZ3RoIHZhbGlkYXRpb24gYW5kIGluZ3Jlc3MgaGFuZGxpbmcgbG9naWMgaGFzIGJlZW4gY2hhbmdlZC4gSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGVzZSB0aHJlZS4KCkxldCYjMzk7cyBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBDT05GSUdfUk1ORVRgIGlzIHRoZSBtYWluIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMsIGFuZCB5ZXMsIHRoYXQmIzM5O3MgdGhlIHByaW1hcnkgb25lLgoKTm93LCBsZXQmIzM5O3MgZG9jdW1lbnQgdGhlc2UgZmluZGluZ3M6IGBzZXQtcmVzdWx0c2AuIEJhc2VkIG9uIG15IGFuYWx5c2lzLCB0aGlzIGRlZmluaXRlbHkgbG9va3MgV29ydGhGdXp6aW5nOiBUcnVlLiBNeSBGb2N1c1N5bWJvbHMgc2hvdWxkIGJlIHRob3NlIHRocmVlIGZ1bmN0aW9ucyBJIGlkZW50aWZpZWQ6IGBybW5ldF9tYXBfdmFsaWRhdGVfcGFja2V0X2xlbmAsIGBybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyYCwgYW5kIGBybW5ldF9tYXBfZGVhZ2dyZWdhdGVgLiBBbmQsIG9mIGNvdXJzZSwgSSYjMzk7bGwgbmVlZCB0byBFbmFibGVDb25maWdzOiBgUk1ORVRgLgoKVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIGlzIG1vZGlmeWluZyBjcnVjaWFsIHBhY2tldCBsZW5ndGggdmFsaWRhdGlvbiBsb2dpYyB3aXRoaW4gdGhlIFJNTkVUIGRyaXZlciYjMzk7cyBpbmdyZXNzIHBhdGguIFRoaXMgaXMgZnVuY3Rpb25hbCBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIGNvZGUgdGhhdCYjMzk7cyByZWFjaGFibGUgdmlhIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgcmlwZSBmb3IgZnV6emluZy4gSSBjYW4gcmVhY2ggdGhpcyBieSBwcm92aWRpbmcgZGlmZmVyZW50IGRhdGEgaW50byBhIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2UsIHdoaWNoIGlzIGEgcGVyZmVjdCB0YXJnZXQgZm9yIG15IGV4cGVydGlzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDE6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JNTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW4mIzM0OywKICAgICYjMzQ7cm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtybW5ldF9tYXBfZGVhZ2dyZWdhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IGxlbmd0aCB2YWxpZGF0aW9uIGxvZ2ljIGluIHRoZSBSTU5FVCBkcml2ZXImIzM5O3MgaW5ncmVzcyBwYXRoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2VzIGFuZCBpcyBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JNTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW4mIzM0OywKICAgICYjMzQ7cm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtybW5ldF9tYXBfZGVhZ2dyZWdhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IGxlbmd0aCB2YWxpZGF0aW9uIGxvZ2ljIGluIHRoZSBSTU5FVCBkcml2ZXImIzM5O3MgaW5ncmVzcyBwYXRoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2VzIGFuZCBpcyBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTowNToxNi44MTM5MjYxNzlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTQ4NTA2OTM3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSTU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuXCIsXG4gICAgXCJybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyXCIsXG4gICAgXCJybW5ldF9tYXBfZGVhZ2dyZWdhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgbGVuZ3RoIHZhbGlkYXRpb24gbG9naWMgaW4gdGhlIFJNTkVUIGRyaXZlcidzIGluZ3Jlc3MgcGF0aC4gVGhpcyBpcyBmdW5jdGlvbmFsIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgY29kZSB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlcyBhbmQgaXMgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTowNToxNi44MTM5MzIwMDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNDM0MTY4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDMxYWE1MTI4MjU0ZmI2OTZiOGM0ZjkyNzQ0OTI4OTcyZGE2YzUzM2NcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMSAwMTowNToxNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuY1xcbmluZGV4IDlmMzQ3OTUwMGY4NWExLi5kMDU1YTI2MjhkOGM5ZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuY1xcbkBAIC0xMjYsNyArMTI2LDEwIEBAIHJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFxuIFxcdFxcdGNvbnN1bWVfc2tiKHNrYik7XFxuIFxcdH0gZWxzZSB7XFxuLVxcdFxcdF9fcm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcihza2IsIHBvcnQpO1xcbitcXHRcXHRpZiAocm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW4oc2tiLCBwb3J0KSlcXG4rXFx0XFx0XFx0X19ybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyKHNrYiwgcG9ydCk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdH1cXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXAuaFxcbmluZGV4IGI3MDI4NDA5NTU2OGNlLi42MGNhOGI3ODBjODhhZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXAuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X21hcC5oXFxuQEAgLTU5LDUgKzU5LDYgQEAgdm9pZCBybW5ldF9tYXBfdHhfYWdncmVnYXRlX2luaXQoc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpO1xcbiB2b2lkIHJtbmV0X21hcF90eF9hZ2dyZWdhdGVfZXhpdChzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydCk7XFxuIHZvaWQgcm1uZXRfbWFwX3VwZGF0ZV91bF9hZ2dfY29uZmlnKHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0LCB1MzIgc2l6ZSxcXG4gXFx0XFx0XFx0XFx0ICAgIHUzMiBjb3VudCwgdTMyIHRpbWUpO1xcbit1MzIgcm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW4oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpO1xcbiBcXG4gI2VuZGlmIC8qIF9STU5FVF9NQVBfSF8gKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwX2RhdGEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X21hcF9kYXRhLmNcXG5pbmRleCA4YjQ2NDBjNWQ2MWViZS4uMzA1YWUxNWFlOGYzOTMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwX2RhdGEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X21hcF9kYXRhLmNcXG5AQCAtMzMzLDU0ICszMzMsNjIgQEAgc3RydWN0IHJtbmV0X21hcF9oZWFkZXIgKnJtbmV0X21hcF9hZGRfbWFwX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRyZXR1cm4gbWFwX2hlYWRlcjtcXG4gfVxcbiBcXG4tLyogRGVhZ2dyZWdhdGVzIGEgc2luZ2xlIHBhY2tldFxcbi0gKiBBIHdob2xlIG5ldyBidWZmZXIgaXMgYWxsb2NhdGVkIGZvciBlYWNoIHBvcnRpb24gb2YgYW4gYWdncmVnYXRlZCBmcmFtZS5cXG4tICogQ2FsbGVyIHNob3VsZCBrZWVwIGNhbGxpbmcgZGVhZ2dyZWdhdGUoKSBvbiB0aGUgc291cmNlIHNrYiB1bnRpbCAwIGlzXFxuLSAqIHJldHVybmVkLCBpbmRpY2F0aW5nIHRoYXQgdGhlcmUgYXJlIG5vIG1vcmUgcGFja2V0cyB0byBkZWFnZ3JlZ2F0ZS4gQ2FsbGVyXFxuLSAqIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSBvcmlnaW5hbCBza2IuXFxuLSAqL1xcbi1zdHJ1Y3Qgc2tfYnVmZiAqcm1uZXRfbWFwX2RlYWdncmVnYXRlKHN0cnVjdCBza19idWZmICpza2IsXFxuLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0KVxcbit1MzIgcm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW4oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpXFxuIHtcXG4gXFx0c3RydWN0IHJtbmV0X21hcF92NV9jc3VtX2hlYWRlciAqbmV4dF9oZHIgPSBOVUxMO1xcbiBcXHRzdHJ1Y3Qgcm1uZXRfbWFwX2hlYWRlciAqbWFwaDtcXG4gXFx0dm9pZCAqZGF0YSA9IHNrYi1cXHUwMDNlZGF0YTtcXG4tXFx0c3RydWN0IHNrX2J1ZmYgKnNrYm47XFxuLVxcdHU4IG5leHRoZHJfdHlwZTtcXG4gXFx0dTMyIHBhY2tldF9sZW47XFxuIFxcbi1cXHRpZiAoc2tiLVxcdTAwM2VsZW4gPT0gMClcXG4tXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIHNpemVvZigqbWFwaCkpXFxuK1xcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0bWFwaCA9IChzdHJ1Y3Qgcm1uZXRfbWFwX2hlYWRlciAqKXNrYi1cXHUwMDNlZGF0YTtcXG4rXFxuK1xcdC8qIFNvbWUgaGFyZHdhcmUgY2FuIHNlbmQgdXMgZW1wdHkgZnJhbWVzLiBDYXRjaCB0aGVtICovXFxuK1xcdGlmICghbWFwaC1cXHUwMDNlcGt0X2xlbilcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbiBcXHRwYWNrZXRfbGVuID0gbnRvaHMobWFwaC1cXHUwMDNlcGt0X2xlbikgKyBzaXplb2YoKm1hcGgpO1xcbiBcXG4gXFx0aWYgKHBvcnQtXFx1MDAzZWRhdGFfZm9ybWF0IFxcdTAwMjYgUk1ORVRfRkxBR1NfSU5HUkVTU19NQVBfQ0tTVU1WNCkge1xcbiBcXHRcXHRwYWNrZXRfbGVuICs9IHNpemVvZihzdHJ1Y3Qgcm1uZXRfbWFwX2RsX2NzdW1fdHJhaWxlcik7XFxuLVxcdH0gZWxzZSBpZiAocG9ydC1cXHUwMDNlZGF0YV9mb3JtYXQgXFx1MDAyNiBSTU5FVF9GTEFHU19JTkdSRVNTX01BUF9DS1NVTVY1KSB7XFxuLVxcdFxcdGlmICghKG1hcGgtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTUFQX0NNRF9GTEFHKSkge1xcbi1cXHRcXHRcXHRwYWNrZXRfbGVuICs9IHNpemVvZigqbmV4dF9oZHIpO1xcbi1cXHRcXHRcXHRpZiAobWFwaC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBNQVBfTkVYVF9IRUFERVJfRkxBRylcXG4tXFx0XFx0XFx0XFx0bmV4dF9oZHIgPSBkYXRhICsgc2l6ZW9mKCptYXBoKTtcXG4tXFx0XFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRcXHQvKiBNYXB2NSBkYXRhIHBrdCB3aXRob3V0IGNzdW0gaGRyIGlzIGludmFsaWQgKi9cXG4tXFx0XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuLVxcdFxcdH1cXG4rXFx0fSBlbHNlIGlmICgocG9ydC1cXHUwMDNlZGF0YV9mb3JtYXQgXFx1MDAyNiBSTU5FVF9GTEFHU19JTkdSRVNTX01BUF9DS1NVTVY1KSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAhKG1hcGgtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTUFQX0NNRF9GTEFHKSkge1xcbitcXHRcXHQvKiBNYXB2NSBkYXRhIHBrdCB3aXRob3V0IGNzdW0gaGRyIGlzIGludmFsaWQgKi9cXG4rXFx0XFx0aWYgKCEobWFwaC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBNQVBfTkVYVF9IRUFERVJfRkxBRykpXFxuK1xcdFxcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0XFx0cGFja2V0X2xlbiArPSBzaXplb2YoKm5leHRfaGRyKTtcXG4rXFx0XFx0bmV4dF9oZHIgPSBkYXRhICsgc2l6ZW9mKCptYXBoKTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKCgoaW50KXNrYi1cXHUwMDNlbGVuIC0gKGludClwYWNrZXRfbGVuKSBcXHUwMDNjIDApXFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbitcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBwYWNrZXRfbGVuKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdC8qIFNvbWUgaGFyZHdhcmUgY2FuIHNlbmQgdXMgZW1wdHkgZnJhbWVzLiBDYXRjaCB0aGVtICovXFxuLVxcdGlmICghbWFwaC1cXHUwMDNlcGt0X2xlbilcXG4tXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdGlmIChuZXh0X2hkciBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgdThfZ2V0X2JpdHMobmV4dF9oZHItXFx1MDAzZWhlYWRlcl9pbmZvLCBNQVBWNV9IRFJJTkZPX0hEUl9UWVBFX0ZNQVNLKSAhPVxcbitcXHQgICAgUk1ORVRfTUFQX0hFQURFUl9UWVBFX0NTVU1fT0ZGTE9BRClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuIFxcbi1cXHRpZiAobmV4dF9oZHIpIHtcXG4tXFx0XFx0bmV4dGhkcl90eXBlID0gdThfZ2V0X2JpdHMobmV4dF9oZHItXFx1MDAzZWhlYWRlcl9pbmZvLFxcbi1cXHRcXHRcXHRcXHRcXHQgICBNQVBWNV9IRFJJTkZPX0hEUl9UWVBFX0ZNQVNLKTtcXG4tXFx0XFx0aWYgKG5leHRoZHJfdHlwZSAhPSBSTU5FVF9NQVBfSEVBREVSX1RZUEVfQ1NVTV9PRkZMT0FEKVxcbi1cXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4tXFx0fVxcbitcXHRyZXR1cm4gcGFja2V0X2xlbjtcXG4rfVxcbitcXG4rLyogRGVhZ2dyZWdhdGVzIGEgc2luZ2xlIHBhY2tldFxcbisgKiBBIHdob2xlIG5ldyBidWZmZXIgaXMgYWxsb2NhdGVkIGZvciBlYWNoIHBvcnRpb24gb2YgYW4gYWdncmVnYXRlZCBmcmFtZS5cXG4rICogQ2FsbGVyIHNob3VsZCBrZWVwIGNhbGxpbmcgZGVhZ2dyZWdhdGUoKSBvbiB0aGUgc291cmNlIHNrYiB1bnRpbCAwIGlzXFxuKyAqIHJldHVybmVkLCBpbmRpY2F0aW5nIHRoYXQgdGhlcmUgYXJlIG5vIG1vcmUgcGFja2V0cyB0byBkZWFnZ3JlZ2F0ZS4gQ2FsbGVyXFxuKyAqIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSBvcmlnaW5hbCBza2IuXFxuKyAqL1xcbitzdHJ1Y3Qgc2tfYnVmZiAqcm1uZXRfbWFwX2RlYWdncmVnYXRlKHN0cnVjdCBza19idWZmICpza2IsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0KVxcbit7XFxuK1xcdHN0cnVjdCBza19idWZmICpza2JuO1xcbitcXHR1MzIgcGFja2V0X2xlbjtcXG4rXFxuK1xcdHBhY2tldF9sZW4gPSBybW5ldF9tYXBfdmFsaWRhdGVfcGFja2V0X2xlbihza2IsIHBvcnQpO1xcbitcXHRpZiAoIXBhY2tldF9sZW4pXFxuK1xcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4gXFx0c2tibiA9IGFsbG9jX3NrYihwYWNrZXRfbGVuICsgUk1ORVRfTUFQX0RFQUdHUl9TUEFDSU5HLCBHRlBfQVRPTUlDKTtcXG4gXFx0aWYgKCFza2JuKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTowNToxNy40Mzg4NTU3ODhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0ODYwMTI2NjYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJNTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW5cIixcbiAgICBcInJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXJcIixcbiAgICBcInJtbmV0X21hcF9kZWFnZ3JlZ2F0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHBhY2tldCBsZW5ndGggdmFsaWRhdGlvbiBsb2dpYyBpbiB0aGUgUk1ORVQgZHJpdmVyJ3MgaW5ncmVzcyBwYXRoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2VzIGFuZCBpcyBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzFhYTUxMjgyNTRmYjY5NmI4YzRmOTI3NDQ5Mjg5NzJkYTZjNTMzY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMDE6MDU6MTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuY1xuaW5kZXggOWYzNDc5NTAwZjg1YTEuLmQwNTVhMjYyOGQ4YzlkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuY1xuQEAgLTEyNiw3ICsxMjYsMTAgQEAgcm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIFx0XHRjb25zdW1lX3NrYihza2IpO1xuIFx0fSBlbHNlIHtcbi1cdFx0X19ybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyKHNrYiwgcG9ydCk7XG4rXHRcdGlmIChybW5ldF9tYXBfdmFsaWRhdGVfcGFja2V0X2xlbihza2IsIHBvcnQpKVxuK1x0XHRcdF9fcm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcihza2IsIHBvcnQpO1xuK1x0XHRlbHNlXG4rXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHR9XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X21hcC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwLmhcbmluZGV4IGI3MDI4NDA5NTU2OGNlLi42MGNhOGI3ODBjODhhZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X21hcC5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXAuaFxuQEAgLTU5LDUgKzU5LDYgQEAgdm9pZCBybW5ldF9tYXBfdHhfYWdncmVnYXRlX2luaXQoc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpO1xuIHZvaWQgcm1uZXRfbWFwX3R4X2FnZ3JlZ2F0ZV9leGl0KHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0KTtcbiB2b2lkIHJtbmV0X21hcF91cGRhdGVfdWxfYWdnX2NvbmZpZyhzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydCwgdTMyIHNpemUsXG4gXHRcdFx0XHQgICAgdTMyIGNvdW50LCB1MzIgdGltZSk7XG4rdTMyIHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0KTtcbiBcbiAjZW5kaWYgLyogX1JNTkVUX01BUF9IXyAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X21hcF9kYXRhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXBfZGF0YS5jXG5pbmRleCA4YjQ2NDBjNWQ2MWViZS4uMzA1YWUxNWFlOGYzOTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXBfZGF0YS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXBfZGF0YS5jXG5AQCAtMzMzLDU0ICszMzMsNjIgQEAgc3RydWN0IHJtbmV0X21hcF9oZWFkZXIgKnJtbmV0X21hcF9hZGRfbWFwX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0cmV0dXJuIG1hcF9oZWFkZXI7XG4gfVxuIFxuLS8qIERlYWdncmVnYXRlcyBhIHNpbmdsZSBwYWNrZXRcbi0gKiBBIHdob2xlIG5ldyBidWZmZXIgaXMgYWxsb2NhdGVkIGZvciBlYWNoIHBvcnRpb24gb2YgYW4gYWdncmVnYXRlZCBmcmFtZS5cbi0gKiBDYWxsZXIgc2hvdWxkIGtlZXAgY2FsbGluZyBkZWFnZ3JlZ2F0ZSgpIG9uIHRoZSBzb3VyY2Ugc2tiIHVudGlsIDAgaXNcbi0gKiByZXR1cm5lZCwgaW5kaWNhdGluZyB0aGF0IHRoZXJlIGFyZSBubyBtb3JlIHBhY2tldHMgdG8gZGVhZ2dyZWdhdGUuIENhbGxlclxuLSAqIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSBvcmlnaW5hbCBza2IuXG4tICovXG4tc3RydWN0IHNrX2J1ZmYgKnJtbmV0X21hcF9kZWFnZ3JlZ2F0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLVx0XHRcdFx0ICAgICAgc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpXG4rdTMyIHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0KVxuIHtcbiBcdHN0cnVjdCBybW5ldF9tYXBfdjVfY3N1bV9oZWFkZXIgKm5leHRfaGRyID0gTlVMTDtcbiBcdHN0cnVjdCBybW5ldF9tYXBfaGVhZGVyICptYXBoO1xuIFx0dm9pZCAqZGF0YSA9IHNrYi1cdTAwM2VkYXRhO1xuLVx0c3RydWN0IHNrX2J1ZmYgKnNrYm47XG4tXHR1OCBuZXh0aGRyX3R5cGU7XG4gXHR1MzIgcGFja2V0X2xlbjtcbiBcbi1cdGlmIChza2ItXHUwMDNlbGVuID09IDApXG4tXHRcdHJldHVybiBOVUxMO1xuK1x0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIHNpemVvZigqbWFwaCkpXG4rXHRcdHJldHVybiAwO1xuIFxuIFx0bWFwaCA9IChzdHJ1Y3Qgcm1uZXRfbWFwX2hlYWRlciAqKXNrYi1cdTAwM2VkYXRhO1xuK1xuK1x0LyogU29tZSBoYXJkd2FyZSBjYW4gc2VuZCB1cyBlbXB0eSBmcmFtZXMuIENhdGNoIHRoZW0gKi9cbitcdGlmICghbWFwaC1cdTAwM2Vwa3RfbGVuKVxuK1x0XHRyZXR1cm4gMDtcbitcbiBcdHBhY2tldF9sZW4gPSBudG9ocyhtYXBoLVx1MDAzZXBrdF9sZW4pICsgc2l6ZW9mKCptYXBoKTtcbiBcbiBcdGlmIChwb3J0LVx1MDAzZWRhdGFfZm9ybWF0IFx1MDAyNiBSTU5FVF9GTEFHU19JTkdSRVNTX01BUF9DS1NVTVY0KSB7XG4gXHRcdHBhY2tldF9sZW4gKz0gc2l6ZW9mKHN0cnVjdCBybW5ldF9tYXBfZGxfY3N1bV90cmFpbGVyKTtcbi1cdH0gZWxzZSBpZiAocG9ydC1cdTAwM2VkYXRhX2Zvcm1hdCBcdTAwMjYgUk1ORVRfRkxBR1NfSU5HUkVTU19NQVBfQ0tTVU1WNSkge1xuLVx0XHRpZiAoIShtYXBoLVx1MDAzZWZsYWdzIFx1MDAyNiBNQVBfQ01EX0ZMQUcpKSB7XG4tXHRcdFx0cGFja2V0X2xlbiArPSBzaXplb2YoKm5leHRfaGRyKTtcbi1cdFx0XHRpZiAobWFwaC1cdTAwM2VmbGFncyBcdTAwMjYgTUFQX05FWFRfSEVBREVSX0ZMQUcpXG4tXHRcdFx0XHRuZXh0X2hkciA9IGRhdGEgKyBzaXplb2YoKm1hcGgpO1xuLVx0XHRcdGVsc2Vcbi1cdFx0XHRcdC8qIE1hcHY1IGRhdGEgcGt0IHdpdGhvdXQgY3N1bSBoZHIgaXMgaW52YWxpZCAqL1xuLVx0XHRcdFx0cmV0dXJuIE5VTEw7XG4tXHRcdH1cbitcdH0gZWxzZSBpZiAoKHBvcnQtXHUwMDNlZGF0YV9mb3JtYXQgXHUwMDI2IFJNTkVUX0ZMQUdTX0lOR1JFU1NfTUFQX0NLU1VNVjUpIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAhKG1hcGgtXHUwMDNlZmxhZ3MgXHUwMDI2IE1BUF9DTURfRkxBRykpIHtcbitcdFx0LyogTWFwdjUgZGF0YSBwa3Qgd2l0aG91dCBjc3VtIGhkciBpcyBpbnZhbGlkICovXG4rXHRcdGlmICghKG1hcGgtXHUwMDNlZmxhZ3MgXHUwMDI2IE1BUF9ORVhUX0hFQURFUl9GTEFHKSlcbitcdFx0XHRyZXR1cm4gMDtcbitcbitcdFx0cGFja2V0X2xlbiArPSBzaXplb2YoKm5leHRfaGRyKTtcbitcdFx0bmV4dF9oZHIgPSBkYXRhICsgc2l6ZW9mKCptYXBoKTtcbiBcdH1cbiBcbi1cdGlmICgoKGludClza2ItXHUwMDNlbGVuIC0gKGludClwYWNrZXRfbGVuKSBcdTAwM2MgMClcbi1cdFx0cmV0dXJuIE5VTEw7XG4rXHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgcGFja2V0X2xlbilcbitcdFx0cmV0dXJuIDA7XG4gXG4tXHQvKiBTb21lIGhhcmR3YXJlIGNhbiBzZW5kIHVzIGVtcHR5IGZyYW1lcy4gQ2F0Y2ggdGhlbSAqL1xuLVx0aWYgKCFtYXBoLVx1MDAzZXBrdF9sZW4pXG4tXHRcdHJldHVybiBOVUxMO1xuK1x0aWYgKG5leHRfaGRyIFx1MDAyNlx1MDAyNlxuK1x0ICAgIHU4X2dldF9iaXRzKG5leHRfaGRyLVx1MDAzZWhlYWRlcl9pbmZvLCBNQVBWNV9IRFJJTkZPX0hEUl9UWVBFX0ZNQVNLKSAhPVxuK1x0ICAgIFJNTkVUX01BUF9IRUFERVJfVFlQRV9DU1VNX09GRkxPQUQpXG4rXHRcdHJldHVybiAwO1xuIFxuLVx0aWYgKG5leHRfaGRyKSB7XG4tXHRcdG5leHRoZHJfdHlwZSA9IHU4X2dldF9iaXRzKG5leHRfaGRyLVx1MDAzZWhlYWRlcl9pbmZvLFxuLVx0XHRcdFx0XHQgICBNQVBWNV9IRFJJTkZPX0hEUl9UWVBFX0ZNQVNLKTtcbi1cdFx0aWYgKG5leHRoZHJfdHlwZSAhPSBSTU5FVF9NQVBfSEVBREVSX1RZUEVfQ1NVTV9PRkZMT0FEKVxuLVx0XHRcdHJldHVybiBOVUxMO1xuLVx0fVxuK1x0cmV0dXJuIHBhY2tldF9sZW47XG4rfVxuK1xuKy8qIERlYWdncmVnYXRlcyBhIHNpbmdsZSBwYWNrZXRcbisgKiBBIHdob2xlIG5ldyBidWZmZXIgaXMgYWxsb2NhdGVkIGZvciBlYWNoIHBvcnRpb24gb2YgYW4gYWdncmVnYXRlZCBmcmFtZS5cbisgKiBDYWxsZXIgc2hvdWxkIGtlZXAgY2FsbGluZyBkZWFnZ3JlZ2F0ZSgpIG9uIHRoZSBzb3VyY2Ugc2tiIHVudGlsIDAgaXNcbisgKiByZXR1cm5lZCwgaW5kaWNhdGluZyB0aGF0IHRoZXJlIGFyZSBubyBtb3JlIHBhY2tldHMgdG8gZGVhZ2dyZWdhdGUuIENhbGxlclxuKyAqIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSBvcmlnaW5hbCBza2IuXG4rICovXG4rc3RydWN0IHNrX2J1ZmYgKnJtbmV0X21hcF9kZWFnZ3JlZ2F0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuK1x0XHRcdFx0ICAgICAgc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpXG4re1xuK1x0c3RydWN0IHNrX2J1ZmYgKnNrYm47XG4rXHR1MzIgcGFja2V0X2xlbjtcbitcbitcdHBhY2tldF9sZW4gPSBybW5ldF9tYXBfdmFsaWRhdGVfcGFja2V0X2xlbihza2IsIHBvcnQpO1xuK1x0aWYgKCFwYWNrZXRfbGVuKVxuK1x0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdHNrYm4gPSBhbGxvY19za2IocGFja2V0X2xlbiArIFJNTkVUX01BUF9ERUFHR1JfU1BBQ0lORywgR0ZQX0FUT01JQyk7XG4gXHRpZiAoIXNrYm4pXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTowNToxNy40Mzg4NTcxODhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDk5OTg3NzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUk1ORVQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBgcm1uZXRgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIGBybW5ldF9oYW5kbGVycy5jYCBhbmQgYHJtbmV0X21hcF9kYXRhLmNgLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIHRoaXMgbmV3IGZ1bmN0aW9uLCBgcm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW5gLiBJdCBzZWVtcyBsaWtlIHRoZXkndmUgZXh0cmFjdGVkIHRoZSBwYWNrZXQgbGVuZ3RoIHZhbGlkYXRpb24gbG9naWMgZnJvbSB0aGUgZXhpc3RpbmcgYHJtbmV0X21hcF9kZWFnZ3JlZ2F0ZWAgZnVuY3Rpb24sIGFuZCBhcmUgbm93IHJldXNpbmcgaXQgd2l0aGluIGBybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyYC4gU21hcnQsIHJlZHVjaW5nIGNvZGUgZHVwbGljYXRpb24gaXMgYWx3YXlzIGEgZ29vZCBtb3ZlLlxuXG5Ob3csIG15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGFsd2F5cyByZWFjaGFiaWxpdHkgYW5kIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0OiBJcyB0aGlzIGNvZGUgYWN0dWFsbHkgZ29pbmcgdG8gYmUgdXNlZD8gVW5kZXIgd2hhdCBjb25kaXRpb25zPyBXaGF0IEtjb25maWcgb3B0aW9ucyBhcmUgcmVxdWlyZWQgdG8gZW5hYmxlIHRoaXMgbmV3IHBhdGg/IFRoZSBkcml2ZXIgaXMgYHJtbmV0YCwgd2hpY2ggSSBrbm93IGlzIFF1YWxjb21tJ3MgSVBDIHJvdXRlciwgdGhlIFJNTkVUIGltcGxlbWVudGF0aW9uLiBTbywgbXkgbmV4dCBzdGVwIGlzIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGRyaXZlci4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgcGF0Y2guIExldCdzIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ3MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjA1OjIxLjUzODg0NzEwN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzA4Mzk1ODgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlJNTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjA1OjIxLjk2OTY5NTgzNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMjM1NjUxNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBOZXR3b3JrIERyaXZlciBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIFF1YWxjb21tIFJNTkVUIGRyaXZlciBhcmUgZGVmaW5lZC4gTXkgZmlyc3QgaW5zdGluY3QsIGJhc2VkIG9uIGV4cGVyaWVuY2UsIGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSB0cmVlLiBUaGUgbmFtaW5nIGNvbnZlbnRpb24gc3VnZ2VzdHMgdGhlIG1vc3QgbGlrZWx5IGxvY2F0aW9uIGlzIHVuZGVyIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvYCBkaXJlY3RvcnkuIFRoYXQncyBhIGNsYXNzaWMgcGxhY2UgdG8gc3RhcnQuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGUgaW4gdGhhdCBkaXJlY3RvcnksIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBmb3IgdGhlIG9wdGlvbnMgdGhhdCBjb250cm9sIHRoZSBkcml2ZXIncyBidWlsZCBhbmQgZmVhdHVyZXMuIEl0J3MgdGhlIHN0YW5kYXJkIHBsYWNlIGtlcm5lbCBkZXZlbG9wZXJzIGRlZmluZSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJdOKAmXMgaGlnaGx5IHByb2JhYmxlIGl0IHdpbGwgYmUgaW4gdGhlIHBhcmVudCBkaXJlY3RvcnksIG9yIGluIHRoZSBjdXJyZW50IG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkwNywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjA1OjI0Ljk5MzI2NDQ3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzYxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJybW5ldF9jb25maWcuY1wiLFxuICAgIFwicm1uZXRfY29uZmlnLmhcIixcbiAgICBcInJtbmV0X2hhbmRsZXJzLmNcIixcbiAgICBcInJtbmV0X2hhbmRsZXJzLmhcIixcbiAgICBcInJtbmV0X21hcC5oXCIsXG4gICAgXCJybW5ldF9tYXBfY29tbWFuZC5jXCIsXG4gICAgXCJybW5ldF9tYXBfZGF0YS5jXCIsXG4gICAgXCJybW5ldF9wcml2YXRlLmhcIixcbiAgICBcInJtbmV0X3ZuZC5jXCIsXG4gICAgXCJybW5ldF92bmQuaFwiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTowNToyNC45OTM0MDMxMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTczMzQ3OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqUmUtZXhhbWluaW5nIHRoZSBRdWFsY29tbSBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGNpcmNsZSBiYWNrIHRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vS2NvbmZpZ2AgZmlsZS4gSSdtIGhhdmluZyBhIGh1bmNoLCBhbmQgaXQncyBuYWdnaW5nIGF0IG1lLiBQZXJoYXBzLCBqdXN0IHBlcmhhcHMsIHdoYXQgd2UncmUgbG9va2luZyBmb3IgaXNuJ3Qgc29tZSBvYnNjdXJlIGZsYWcgb3IgZGVwZW5kZW5jeSBJJ3ZlIG92ZXJsb29rZWQuIE1heWJlIHRoZSBrZXkgaXMgcmlnaHQgaW4gZnJvbnQgb2YgdXMsIGJ1cmllZCB3aXRoaW4gYSBzZWVtaW5nbHkgc3RyYWlnaHRmb3J3YXJkIGNvbmZpZ3VyYXRpb24gZW50cnkuIEkga2VlcCByZXR1cm5pbmcgdG8gYGNvbmZpZyBSTU5FVGAgd2hpY2ggc2VlbXMgb3Zlcmx5IHNpbXBsaXN0aWMuIElzIGl0ICpyZWFsbHkqIHRoYXQgZWFzeT8gSXMgdGhpcyB0aGUgbWlzc2luZyBwaWVjZSBvZiB0aGUgcHV6emxlIHRoYXQgZXhwbGFpbnMgdGhlIGJlaGF2aW9yPyBJIG5lZWQgdG8gcmV2aXNpdCB0aGUgc3RydWN0dXJlIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMzEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDE6MDU6MjguNDUwNzM5OTgzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzOTczODYzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUk1ORVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9LY29uZmlnOjY6bWVudWNvbmZpZyBSTU5FVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiUm1OZXQgTUFQIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDE6MDU6MjguNzkwNDg5MjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODY5ODQyMzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipOYXZpZ2F0aW5nIHRoZSBRdWFsY29tbSBSTU5FVCBLY29uZmlnKipcblxuUmlnaHQsIGxldCdzIHNlZSwgaXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBuZXN0bGVkIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvS2NvbmZpZ2AuIFRpbWUgdG8gZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBRdWFsY29tbSBSTU5FVCBkcml2ZXIgaXMgY29uZmlndXJlZC4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHZhcmlvdXMgY29tcGlsZS10aW1lIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBwYXJ0aWN1bGFyIG5ldHdvcmtpbmcgY29tcG9uZW50LiBJdOKAmWxsIHRlbGwgbWUgZXZlcnl0aGluZyBJIG5lZWQgdG8ga25vdyBhYm91dCB0aGUgZmVhdHVyZSBzZXQuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgcGllY2VzIGFuZCBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGxheW91dC4gTGV04oCZcyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NDIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTowNTozMS42NjAzMzQxMzlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgzMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgUk1ORVQgTUFQIGRyaXZlclxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIFJNTkVUXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiUm1OZXQgTUFQIGRyaXZlclxcXCJcXG4gICA4OlxcdFxcdGRlZmF1bHQgblxcbiAgIDk6XFx0XFx0c2VsZWN0IEdST19DRUxMU1xcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBJZiB5b3Ugc2VsZWN0IHRoaXMsIHlvdSB3aWxsIGVuYWJsZSB0aGUgUk1ORVQgbW9kdWxlIHdoaWNoIGlzIHVzZWRcXG4gIDEyOlxcdFxcdCAgZm9yIGhhbmRsaW5nIGRhdGEgaW4gdGhlIG11bHRpcGxleGluZyBhbmQgYWdncmVnYXRpb24gcHJvdG9jb2wgKE1BUClcXG4gIDEzOlxcdFxcdCAgZm9ybWF0IGluIHRoZSBlbWJlZGRlZCBkYXRhIHBhdGguIFJNTkVUIGRldmljZXMgY2FuIGJlIGF0dGFjaGVkIHRvXFxuICAxNDpcXHRcXHQgIGFueSBJUCBtb2RlIHBoeXNpY2FsIGRldmljZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDE6MDU6MzEuNjYwNDA0NzY5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MzYzNzg5NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBybW5ldCBDb25maWd1cmF0aW9uIGFuZCBIYW5kbGVyIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYENPTkZJR19STU5FVGAsIHdoaWNoIGlzIG91ciBzdGFydGluZyBwb2ludC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbiB0aGUgYHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuYCBhbmQgYHJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXJgIGZ1bmN0aW9ucy4gVGhpcyBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnOiBpcyB0aGlzIGZ1enphYmxlPyBBYnNvbHV0ZWx5LiBJdOKAmXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB0byB0aGUgcGFja2V0IHBhcnNpbmcgbG9naWMgKndpdGhpbiogYSBuZXR3b3JrIGRyaXZlci4gVGhhdCdzIHByaW1lIGZ1enppbmcgdGVycml0b3J5LlxuXG5TcGVjaWZpY2FsbHksIGBybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyYCBpcyB0cmlnZ2VyZWQgYnkgaW5jb21pbmcgcGFja2V0cy4gU2luY2UgaXQncyBuZXR3b3JrLWZhY2luZywgd2UgY2FuIGRlZmluaXRlbHkgdGFyZ2V0IGl0IHRocm91Z2ggdGhlIG5ldHdvcmsgaW50ZXJmYWNlcy4gQW5kIGhleSwgbGV0J3Mgbm90IGZvcmdldCB0aGF0IGBybW5ldF9tYXBfZGVhZ2dyZWdhdGVgIGlzIGFsc28gY2FsbGVkIG9uIGluZ3Jlc3MuIEl0J3MgYWxsIHRpZWQgdG9nZXRoZXIuXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byBgcm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcmAuIEknbGwgbG9jYXRlIGl0IGluIGBybW5ldF9oYW5kbGVycy5jYCBhbmQgc3RhcnQgZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk0NCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjA1OjM2LjA5Njc4NjUwNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ1NTA0OTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jPTU1PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYzo1NjpfX3JtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jLTU3LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2hhbmRsZXJzLmM9MTA4PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYzoxMDk6cm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2hhbmRsZXJzLmMtMTEwLVxcdFxcdFxcdCAgc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jLTEyNC1cXHRcXHR3aGlsZSAoKHNrYm4gPSBybW5ldF9tYXBfZGVhZ2dyZWdhdGUoc2tiLCBwb3J0KSkgIT0gTlVMTClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jOjEyNTpcXHRcXHRcXHRfX3JtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXIoc2tibiwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYy0xMjYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jLTEyOS1cXHRcXHRpZiAocm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW4oc2tiLCBwb3J0KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jOjEzMDpcXHRcXHRcXHRfX3JtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXIoc2tiLCBwb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jLTEzMS1cXHRcXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jPTIwMz1yeF9oYW5kbGVyX3Jlc3VsdF90IHJtbmV0X3J4X2hhbmRsZXIoc3RydWN0IHNrX2J1ZmYgKipwc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYy0yMjktXFx0Y2FzZSBSTU5FVF9FUE1PREVfVk5EOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2hhbmRsZXJzLmM6MjMwOlxcdFxcdHJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXIoc2tiLCBwb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jLTIzMS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDE6MDU6MzYuNjQyMjk2OTUyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzOTExOTM2NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgUk1ORVQgRHJpdmVyIEluZ3Jlc3MqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmUsIGl0J3MgY2xlYXIgdGhlIHRhcmdldCBpcyB0aGUgUk1ORVQgZHJpdmVyJ3MgcGFja2V0IGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgcm1uZXRfcnhfaGFuZGxlcmAgZnVuY3Rpb24sIHdoaWNoIGlzIHJlZ2lzdGVyZWQgYXMgYW4gYHJ4X2hhbmRsZXJgIG9uIGEgbmV0ZGV2LiBUaGF0IG1lYW5zIGl0J3MgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGluY29taW5nIHBhY2tldHMuXG5cblRoZSByZWFsbHkgaW50ZXJlc3RpbmcgcGFydHMgZm9yIGZ1enppbmcgYXJlIGdvaW5nIHRvIGJlIHRob3NlIG1vZGlmaWVkIGZ1bmN0aW9uczogYHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuYCwgYHJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXJgLCBhbmQgYHJtbmV0X21hcF9kZWFnZ3JlZ2F0ZWAuIFRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyB3aGVyZSB0aGUgcGFja2V0IGxlbmd0aCB2YWxpZGF0aW9uIGFuZCBpbmdyZXNzIGhhbmRsaW5nIGxvZ2ljIGhhcyBiZWVuIGNoYW5nZWQuIEkgbmVlZCB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gdGhlc2UgdGhyZWUuXG5cbkxldCdzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYENPTkZJR19STU5FVGAgaXMgdGhlIG1haW4gZW5hYmxpbmcgY29uZmlndXJhdGlvbiBmb3IgdGhpcywgYW5kIHllcywgdGhhdCdzIHRoZSBwcmltYXJ5IG9uZS5cblxuTm93LCBsZXQncyBkb2N1bWVudCB0aGVzZSBmaW5kaW5nczogYHNldC1yZXN1bHRzYC4gQmFzZWQgb24gbXkgYW5hbHlzaXMsIHRoaXMgZGVmaW5pdGVseSBsb29rcyBXb3J0aEZ1enppbmc6IFRydWUuIE15IEZvY3VzU3ltYm9scyBzaG91bGQgYmUgdGhvc2UgdGhyZWUgZnVuY3Rpb25zIEkgaWRlbnRpZmllZDogYHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuYCwgYHJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXJgLCBhbmQgYHJtbmV0X21hcF9kZWFnZ3JlZ2F0ZWAuIEFuZCwgb2YgY291cnNlLCBJJ2xsIG5lZWQgdG8gRW5hYmxlQ29uZmlnczogYFJNTkVUYC5cblxuVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIGlzIG1vZGlmeWluZyBjcnVjaWFsIHBhY2tldCBsZW5ndGggdmFsaWRhdGlvbiBsb2dpYyB3aXRoaW4gdGhlIFJNTkVUIGRyaXZlcidzIGluZ3Jlc3MgcGF0aC4gVGhpcyBpcyBmdW5jdGlvbmFsIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgY29kZSB0aGF0J3MgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlcywgbWFraW5nIGl0IHJpcGUgZm9yIGZ1enppbmcuIEkgY2FuIHJlYWNoIHRoaXMgYnkgcHJvdmlkaW5nIGRpZmZlcmVudCBkYXRhIGludG8gYSB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlLCB3aGljaCBpcyBhIHBlcmZlY3QgdGFyZ2V0IGZvciBteSBleHBlcnRpc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5MzcsIk91dHB1dFRva2VucyI6MTA4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjA1OjQyLjAzMzQ5MzI3NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NTQ4MzUzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUk1ORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJybW5ldF9tYXBfdmFsaWRhdGVfcGFja2V0X2xlblwiLFxuICAgIFwicm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlclwiLFxuICAgIFwicm1uZXRfbWFwX2RlYWdncmVnYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IGxlbmd0aCB2YWxpZGF0aW9uIGxvZ2ljIGluIHRoZSBSTU5FVCBkcml2ZXIncyBpbmdyZXNzIHBhdGguIFRoaXMgaXMgZnVuY3Rpb25hbCBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgdmlydHVhbCBuZXR3b3JrIGludGVyZmFjZXMgYW5kIGlzIGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSTU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuXCIsXG4gICAgXCJybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyXCIsXG4gICAgXCJybW5ldF9tYXBfZGVhZ2dyZWdhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgbGVuZ3RoIHZhbGlkYXRpb24gbG9naWMgaW4gdGhlIFJNTkVUIGRyaXZlcidzIGluZ3Jlc3MgcGF0aC4gVGhpcyBpcyBmdW5jdGlvbmFsIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgY29kZSB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlcyBhbmQgaXMgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowwsff5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 00:20:57 +0000 UTC FinishedAt: 2026-07-01 01:05:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2a00517db8de4be7df3d483b215c5544fb30a191", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RMNET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2a00517db8de4be7df3d483b215c5544fb30a191", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RMNET" ], "series_id": "6afa2075-a610-4249-a2c4-808a35bdd30e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rmnet_map_validate_packet_len", "rmnet_map_ingress_handler", "rmnet_map_deaggregate" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JNTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW4mIzM0OywKICAgICYjMzQ7cm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtybW5ldF9tYXBfZGVhZ2dyZWdhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IGxlbmd0aCB2YWxpZGF0aW9uIGxvZ2ljIGluIHRoZSBSTU5FVCBkcml2ZXImIzM5O3MgaW5ncmVzcyBwYXRoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2VzIGFuZCBpcyBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDE6MDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzMWFhNTEyODI1NGZiNjk2YjhjNGY5Mjc0NDkyODk3MmRhNmM1MzNjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAwMTowNToxNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuY1xuaW5kZXggOWYzNDc5NTAwZjg1YTEuLmQwNTVhMjYyOGQ4YzlkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuY1xuQEAgLTEyNiw3ICYjNDM7MTI2LDEwIEBAIHJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBcdFx0Y29uc3VtZV9za2Ioc2tiKTtcbiBcdH0gZWxzZSB7XG4tXHRcdF9fcm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcihza2IsIHBvcnQpO1xuJiM0MztcdFx0aWYgKHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuKHNrYiwgcG9ydCkpXG4mIzQzO1x0XHRcdF9fcm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcihza2IsIHBvcnQpO1xuJiM0MztcdFx0ZWxzZVxuJiM0MztcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdH1cbiB9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXAuaFxuaW5kZXggYjcwMjg0MDk1NTY4Y2UuLjYwY2E4Yjc4MGM4OGFkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X21hcC5oXG5AQCAtNTksNSAmIzQzOzU5LDYgQEAgdm9pZCBybW5ldF9tYXBfdHhfYWdncmVnYXRlX2luaXQoc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpO1xuIHZvaWQgcm1uZXRfbWFwX3R4X2FnZ3JlZ2F0ZV9leGl0KHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0KTtcbiB2b2lkIHJtbmV0X21hcF91cGRhdGVfdWxfYWdnX2NvbmZpZyhzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydCwgdTMyIHNpemUsXG4gXHRcdFx0XHQgICAgdTMyIGNvdW50LCB1MzIgdGltZSk7XG4mIzQzO3UzMiBybW5ldF9tYXBfdmFsaWRhdGVfcGFja2V0X2xlbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydCk7XG4gXG4gI2VuZGlmIC8qIF9STU5FVF9NQVBfSF8gKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXBfZGF0YS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwX2RhdGEuY1xuaW5kZXggOGI0NjQwYzVkNjFlYmUuLjMwNWFlMTVhZThmMzkzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwX2RhdGEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwX2RhdGEuY1xuQEAgLTMzMyw1NCAmIzQzOzMzMyw2MiBAQCBzdHJ1Y3Qgcm1uZXRfbWFwX2hlYWRlciAqcm1uZXRfbWFwX2FkZF9tYXBfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gbWFwX2hlYWRlcjtcbiB9XG4gXG4tLyogRGVhZ2dyZWdhdGVzIGEgc2luZ2xlIHBhY2tldFxuLSAqIEEgd2hvbGUgbmV3IGJ1ZmZlciBpcyBhbGxvY2F0ZWQgZm9yIGVhY2ggcG9ydGlvbiBvZiBhbiBhZ2dyZWdhdGVkIGZyYW1lLlxuLSAqIENhbGxlciBzaG91bGQga2VlcCBjYWxsaW5nIGRlYWdncmVnYXRlKCkgb24gdGhlIHNvdXJjZSBza2IgdW50aWwgMCBpc1xuLSAqIHJldHVybmVkLCBpbmRpY2F0aW5nIHRoYXQgdGhlcmUgYXJlIG5vIG1vcmUgcGFja2V0cyB0byBkZWFnZ3JlZ2F0ZS4gQ2FsbGVyXG4tICogaXMgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgdGhlIG9yaWdpbmFsIHNrYi5cbi0gKi9cbi1zdHJ1Y3Qgc2tfYnVmZiAqcm1uZXRfbWFwX2RlYWdncmVnYXRlKHN0cnVjdCBza19idWZmICpza2IsXG4tXHRcdFx0XHQgICAgICBzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydClcbiYjNDM7dTMyIHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0KVxuIHtcbiBcdHN0cnVjdCBybW5ldF9tYXBfdjVfY3N1bV9oZWFkZXIgKm5leHRfaGRyID0gTlVMTDtcbiBcdHN0cnVjdCBybW5ldF9tYXBfaGVhZGVyICptYXBoO1xuIFx0dm9pZCAqZGF0YSA9IHNrYi1cdTAwM2VkYXRhO1xuLVx0c3RydWN0IHNrX2J1ZmYgKnNrYm47XG4tXHR1OCBuZXh0aGRyX3R5cGU7XG4gXHR1MzIgcGFja2V0X2xlbjtcbiBcbi1cdGlmIChza2ItXHUwMDNlbGVuID09IDApXG4tXHRcdHJldHVybiBOVUxMO1xuJiM0MztcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBzaXplb2YoKm1hcGgpKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4gXG4gXHRtYXBoID0gKHN0cnVjdCBybW5ldF9tYXBfaGVhZGVyICopc2tiLVx1MDAzZWRhdGE7XG4mIzQzO1xuJiM0MztcdC8qIFNvbWUgaGFyZHdhcmUgY2FuIHNlbmQgdXMgZW1wdHkgZnJhbWVzLiBDYXRjaCB0aGVtICovXG4mIzQzO1x0aWYgKCFtYXBoLVx1MDAzZXBrdF9sZW4pXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4gXHRwYWNrZXRfbGVuID0gbnRvaHMobWFwaC1cdTAwM2Vwa3RfbGVuKSAmIzQzOyBzaXplb2YoKm1hcGgpO1xuIFxuIFx0aWYgKHBvcnQtXHUwMDNlZGF0YV9mb3JtYXQgXHUwMDI2IFJNTkVUX0ZMQUdTX0lOR1JFU1NfTUFQX0NLU1VNVjQpIHtcbiBcdFx0cGFja2V0X2xlbiAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBybW5ldF9tYXBfZGxfY3N1bV90cmFpbGVyKTtcbi1cdH0gZWxzZSBpZiAocG9ydC1cdTAwM2VkYXRhX2Zvcm1hdCBcdTAwMjYgUk1ORVRfRkxBR1NfSU5HUkVTU19NQVBfQ0tTVU1WNSkge1xuLVx0XHRpZiAoIShtYXBoLVx1MDAzZWZsYWdzIFx1MDAyNiBNQVBfQ01EX0ZMQUcpKSB7XG4tXHRcdFx0cGFja2V0X2xlbiAmIzQzOz0gc2l6ZW9mKCpuZXh0X2hkcik7XG4tXHRcdFx0aWYgKG1hcGgtXHUwMDNlZmxhZ3MgXHUwMDI2IE1BUF9ORVhUX0hFQURFUl9GTEFHKVxuLVx0XHRcdFx0bmV4dF9oZHIgPSBkYXRhICYjNDM7IHNpemVvZigqbWFwaCk7XG4tXHRcdFx0ZWxzZVxuLVx0XHRcdFx0LyogTWFwdjUgZGF0YSBwa3Qgd2l0aG91dCBjc3VtIGhkciBpcyBpbnZhbGlkICovXG4tXHRcdFx0XHRyZXR1cm4gTlVMTDtcbi1cdFx0fVxuJiM0MztcdH0gZWxzZSBpZiAoKHBvcnQtXHUwMDNlZGF0YV9mb3JtYXQgXHUwMDI2IFJNTkVUX0ZMQUdTX0lOR1JFU1NfTUFQX0NLU1VNVjUpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIShtYXBoLVx1MDAzZWZsYWdzIFx1MDAyNiBNQVBfQ01EX0ZMQUcpKSB7XG4mIzQzO1x0XHQvKiBNYXB2NSBkYXRhIHBrdCB3aXRob3V0IGNzdW0gaGRyIGlzIGludmFsaWQgKi9cbiYjNDM7XHRcdGlmICghKG1hcGgtXHUwMDNlZmxhZ3MgXHUwMDI2IE1BUF9ORVhUX0hFQURFUl9GTEFHKSlcbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdFx0cGFja2V0X2xlbiAmIzQzOz0gc2l6ZW9mKCpuZXh0X2hkcik7XG4mIzQzO1x0XHRuZXh0X2hkciA9IGRhdGEgJiM0Mzsgc2l6ZW9mKCptYXBoKTtcbiBcdH1cbiBcbi1cdGlmICgoKGludClza2ItXHUwMDNlbGVuIC0gKGludClwYWNrZXRfbGVuKSBcdTAwM2MgMClcbi1cdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIHBhY2tldF9sZW4pXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiBcbi1cdC8qIFNvbWUgaGFyZHdhcmUgY2FuIHNlbmQgdXMgZW1wdHkgZnJhbWVzLiBDYXRjaCB0aGVtICovXG4tXHRpZiAoIW1hcGgtXHUwMDNlcGt0X2xlbilcbi1cdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0aWYgKG5leHRfaGRyIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICB1OF9nZXRfYml0cyhuZXh0X2hkci1cdTAwM2VoZWFkZXJfaW5mbywgTUFQVjVfSERSSU5GT19IRFJfVFlQRV9GTUFTSykgIT1cbiYjNDM7XHQgICAgUk1ORVRfTUFQX0hFQURFUl9UWVBFX0NTVU1fT0ZGTE9BRClcbiYjNDM7XHRcdHJldHVybiAwO1xuIFxuLVx0aWYgKG5leHRfaGRyKSB7XG4tXHRcdG5leHRoZHJfdHlwZSA9IHU4X2dldF9iaXRzKG5leHRfaGRyLVx1MDAzZWhlYWRlcl9pbmZvLFxuLVx0XHRcdFx0XHQgICBNQVBWNV9IRFJJTkZPX0hEUl9UWVBFX0ZNQVNLKTtcbi1cdFx0aWYgKG5leHRoZHJfdHlwZSAhPSBSTU5FVF9NQVBfSEVBREVSX1RZUEVfQ1NVTV9PRkZMT0FEKVxuLVx0XHRcdHJldHVybiBOVUxMO1xuLVx0fVxuJiM0MztcdHJldHVybiBwYWNrZXRfbGVuO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKiBEZWFnZ3JlZ2F0ZXMgYSBzaW5nbGUgcGFja2V0XG4mIzQzOyAqIEEgd2hvbGUgbmV3IGJ1ZmZlciBpcyBhbGxvY2F0ZWQgZm9yIGVhY2ggcG9ydGlvbiBvZiBhbiBhZ2dyZWdhdGVkIGZyYW1lLlxuJiM0MzsgKiBDYWxsZXIgc2hvdWxkIGtlZXAgY2FsbGluZyBkZWFnZ3JlZ2F0ZSgpIG9uIHRoZSBzb3VyY2Ugc2tiIHVudGlsIDAgaXNcbiYjNDM7ICogcmV0dXJuZWQsIGluZGljYXRpbmcgdGhhdCB0aGVyZSBhcmUgbm8gbW9yZSBwYWNrZXRzIHRvIGRlYWdncmVnYXRlLiBDYWxsZXJcbiYjNDM7ICogaXMgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgdGhlIG9yaWdpbmFsIHNrYi5cbiYjNDM7ICovXG4mIzQzO3N0cnVjdCBza19idWZmICpybW5ldF9tYXBfZGVhZ2dyZWdhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiYjNDM7XHRcdFx0XHQgICAgICBzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBza19idWZmICpza2JuO1xuJiM0MztcdHUzMiBwYWNrZXRfbGVuO1xuJiM0MztcbiYjNDM7XHRwYWNrZXRfbGVuID0gcm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW4oc2tiLCBwb3J0KTtcbiYjNDM7XHRpZiAoIXBhY2tldF9sZW4pXG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdHNrYm4gPSBhbGxvY19za2IocGFja2V0X2xlbiAmIzQzOyBSTU5FVF9NQVBfREVBR0dSX1NQQUNJTkcsIEdGUF9BVE9NSUMpO1xuIFx0aWYgKCFza2JuKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjA1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JNTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW4mIzM0OywKICAgICYjMzQ7cm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtybW5ldF9tYXBfZGVhZ2dyZWdhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IGxlbmd0aCB2YWxpZGF0aW9uIGxvZ2ljIGluIHRoZSBSTU5FVCBkcml2ZXImIzM5O3MgaW5ncmVzcyBwYXRoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2VzIGFuZCBpcyBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDMxYWE1MTI4MjU0ZmI2OTZiOGM0ZjkyNzQ0OTI4OTcyZGE2YzUzM2MKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxIDAxOjA1OjE1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2hhbmRsZXJzLmMKaW5kZXggOWYzNDc5NTAwZjg1YTEuLmQwNTVhMjYyOGQ4YzlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2hhbmRsZXJzLmMKQEAgLTEyNiw3ICYjNDM7MTI2LDEwIEBAIHJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAogCQljb25zdW1lX3NrYihza2IpOwogCX0gZWxzZSB7Ci0JCV9fcm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcihza2IsIHBvcnQpOwomIzQzOwkJaWYgKHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuKHNrYiwgcG9ydCkpCiYjNDM7CQkJX19ybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyKHNrYiwgcG9ydCk7CiYjNDM7CQllbHNlCiYjNDM7CQkJa2ZyZWVfc2tiKHNrYik7CiAJfQogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXAuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X21hcC5oCmluZGV4IGI3MDI4NDA5NTU2OGNlLi42MGNhOGI3ODBjODhhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwLmgKQEAgLTU5LDUgJiM0Mzs1OSw2IEBAIHZvaWQgcm1uZXRfbWFwX3R4X2FnZ3JlZ2F0ZV9pbml0KHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0KTsKIHZvaWQgcm1uZXRfbWFwX3R4X2FnZ3JlZ2F0ZV9leGl0KHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0KTsKIHZvaWQgcm1uZXRfbWFwX3VwZGF0ZV91bF9hZ2dfY29uZmlnKHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0LCB1MzIgc2l6ZSwKIAkJCQkgICAgdTMyIGNvdW50LCB1MzIgdGltZSk7CiYjNDM7dTMyIHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0KTsKIAogI2VuZGlmIC8qIF9STU5FVF9NQVBfSF8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X21hcF9kYXRhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXBfZGF0YS5jCmluZGV4IDhiNDY0MGM1ZDYxZWJlLi4zMDVhZTE1YWU4ZjM5MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwX2RhdGEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXBfZGF0YS5jCkBAIC0zMzMsNTQgJiM0MzszMzMsNjIgQEAgc3RydWN0IHJtbmV0X21hcF9oZWFkZXIgKnJtbmV0X21hcF9hZGRfbWFwX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXJldHVybiBtYXBfaGVhZGVyOwogfQogCi0vKiBEZWFnZ3JlZ2F0ZXMgYSBzaW5nbGUgcGFja2V0Ci0gKiBBIHdob2xlIG5ldyBidWZmZXIgaXMgYWxsb2NhdGVkIGZvciBlYWNoIHBvcnRpb24gb2YgYW4gYWdncmVnYXRlZCBmcmFtZS4KLSAqIENhbGxlciBzaG91bGQga2VlcCBjYWxsaW5nIGRlYWdncmVnYXRlKCkgb24gdGhlIHNvdXJjZSBza2IgdW50aWwgMCBpcwotICogcmV0dXJuZWQsIGluZGljYXRpbmcgdGhhdCB0aGVyZSBhcmUgbm8gbW9yZSBwYWNrZXRzIHRvIGRlYWdncmVnYXRlLiBDYWxsZXIKLSAqIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSBvcmlnaW5hbCBza2IuCi0gKi8KLXN0cnVjdCBza19idWZmICpybW5ldF9tYXBfZGVhZ2dyZWdhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwKLQkJCQkgICAgICBzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydCkKJiM0Mzt1MzIgcm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW4oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpCiB7CiAJc3RydWN0IHJtbmV0X21hcF92NV9jc3VtX2hlYWRlciAqbmV4dF9oZHIgPSBOVUxMOwogCXN0cnVjdCBybW5ldF9tYXBfaGVhZGVyICptYXBoOwogCXZvaWQgKmRhdGEgPSBza2ItJmd0O2RhdGE7Ci0Jc3RydWN0IHNrX2J1ZmYgKnNrYm47Ci0JdTggbmV4dGhkcl90eXBlOwogCXUzMiBwYWNrZXRfbGVuOwogCi0JaWYgKHNrYi0mZ3Q7bGVuID09IDApCi0JCXJldHVybiBOVUxMOwomIzQzOwlpZiAoc2tiLSZndDtsZW4gJmx0OyBzaXplb2YoKm1hcGgpKQomIzQzOwkJcmV0dXJuIDA7CiAKIAltYXBoID0gKHN0cnVjdCBybW5ldF9tYXBfaGVhZGVyICopc2tiLSZndDtkYXRhOwomIzQzOwomIzQzOwkvKiBTb21lIGhhcmR3YXJlIGNhbiBzZW5kIHVzIGVtcHR5IGZyYW1lcy4gQ2F0Y2ggdGhlbSAqLwomIzQzOwlpZiAoIW1hcGgtJmd0O3BrdF9sZW4pCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKIAlwYWNrZXRfbGVuID0gbnRvaHMobWFwaC0mZ3Q7cGt0X2xlbikgJiM0Mzsgc2l6ZW9mKCptYXBoKTsKIAogCWlmIChwb3J0LSZndDtkYXRhX2Zvcm1hdCAmYW1wOyBSTU5FVF9GTEFHU19JTkdSRVNTX01BUF9DS1NVTVY0KSB7CiAJCXBhY2tldF9sZW4gJiM0Mzs9IHNpemVvZihzdHJ1Y3Qgcm1uZXRfbWFwX2RsX2NzdW1fdHJhaWxlcik7Ci0JfSBlbHNlIGlmIChwb3J0LSZndDtkYXRhX2Zvcm1hdCAmYW1wOyBSTU5FVF9GTEFHU19JTkdSRVNTX01BUF9DS1NVTVY1KSB7Ci0JCWlmICghKG1hcGgtJmd0O2ZsYWdzICZhbXA7IE1BUF9DTURfRkxBRykpIHsKLQkJCXBhY2tldF9sZW4gJiM0Mzs9IHNpemVvZigqbmV4dF9oZHIpOwotCQkJaWYgKG1hcGgtJmd0O2ZsYWdzICZhbXA7IE1BUF9ORVhUX0hFQURFUl9GTEFHKQotCQkJCW5leHRfaGRyID0gZGF0YSAmIzQzOyBzaXplb2YoKm1hcGgpOwotCQkJZWxzZQotCQkJCS8qIE1hcHY1IGRhdGEgcGt0IHdpdGhvdXQgY3N1bSBoZHIgaXMgaW52YWxpZCAqLwotCQkJCXJldHVybiBOVUxMOwotCQl9CiYjNDM7CX0gZWxzZSBpZiAoKHBvcnQtJmd0O2RhdGFfZm9ybWF0ICZhbXA7IFJNTkVUX0ZMQUdTX0lOR1JFU1NfTUFQX0NLU1VNVjUpICZhbXA7JmFtcDsKJiM0MzsJCSAgICEobWFwaC0mZ3Q7ZmxhZ3MgJmFtcDsgTUFQX0NNRF9GTEFHKSkgewomIzQzOwkJLyogTWFwdjUgZGF0YSBwa3Qgd2l0aG91dCBjc3VtIGhkciBpcyBpbnZhbGlkICovCiYjNDM7CQlpZiAoIShtYXBoLSZndDtmbGFncyAmYW1wOyBNQVBfTkVYVF9IRUFERVJfRkxBRykpCiYjNDM7CQkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CQlwYWNrZXRfbGVuICYjNDM7PSBzaXplb2YoKm5leHRfaGRyKTsKJiM0MzsJCW5leHRfaGRyID0gZGF0YSAmIzQzOyBzaXplb2YoKm1hcGgpOwogCX0KIAotCWlmICgoKGludClza2ItJmd0O2xlbiAtIChpbnQpcGFja2V0X2xlbikgJmx0OyAwKQotCQlyZXR1cm4gTlVMTDsKJiM0MzsJaWYgKHNrYi0mZ3Q7bGVuICZsdDsgcGFja2V0X2xlbikKJiM0MzsJCXJldHVybiAwOwogCi0JLyogU29tZSBoYXJkd2FyZSBjYW4gc2VuZCB1cyBlbXB0eSBmcmFtZXMuIENhdGNoIHRoZW0gKi8KLQlpZiAoIW1hcGgtJmd0O3BrdF9sZW4pCi0JCXJldHVybiBOVUxMOwomIzQzOwlpZiAobmV4dF9oZHIgJmFtcDsmYW1wOwomIzQzOwkgICAgdThfZ2V0X2JpdHMobmV4dF9oZHItJmd0O2hlYWRlcl9pbmZvLCBNQVBWNV9IRFJJTkZPX0hEUl9UWVBFX0ZNQVNLKSAhPQomIzQzOwkgICAgUk1ORVRfTUFQX0hFQURFUl9UWVBFX0NTVU1fT0ZGTE9BRCkKJiM0MzsJCXJldHVybiAwOwogCi0JaWYgKG5leHRfaGRyKSB7Ci0JCW5leHRoZHJfdHlwZSA9IHU4X2dldF9iaXRzKG5leHRfaGRyLSZndDtoZWFkZXJfaW5mbywKLQkJCQkJICAgTUFQVjVfSERSSU5GT19IRFJfVFlQRV9GTUFTSyk7Ci0JCWlmIChuZXh0aGRyX3R5cGUgIT0gUk1ORVRfTUFQX0hFQURFUl9UWVBFX0NTVU1fT0ZGTE9BRCkKLQkJCXJldHVybiBOVUxMOwotCX0KJiM0MzsJcmV0dXJuIHBhY2tldF9sZW47CiYjNDM7fQomIzQzOwomIzQzOy8qIERlYWdncmVnYXRlcyBhIHNpbmdsZSBwYWNrZXQKJiM0MzsgKiBBIHdob2xlIG5ldyBidWZmZXIgaXMgYWxsb2NhdGVkIGZvciBlYWNoIHBvcnRpb24gb2YgYW4gYWdncmVnYXRlZCBmcmFtZS4KJiM0MzsgKiBDYWxsZXIgc2hvdWxkIGtlZXAgY2FsbGluZyBkZWFnZ3JlZ2F0ZSgpIG9uIHRoZSBzb3VyY2Ugc2tiIHVudGlsIDAgaXMKJiM0MzsgKiByZXR1cm5lZCwgaW5kaWNhdGluZyB0aGF0IHRoZXJlIGFyZSBubyBtb3JlIHBhY2tldHMgdG8gZGVhZ2dyZWdhdGUuIENhbGxlcgomIzQzOyAqIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSBvcmlnaW5hbCBza2IuCiYjNDM7ICovCiYjNDM7c3RydWN0IHNrX2J1ZmYgKnJtbmV0X21hcF9kZWFnZ3JlZ2F0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAomIzQzOwkJCQkgICAgICBzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBza19idWZmICpza2JuOwomIzQzOwl1MzIgcGFja2V0X2xlbjsKJiM0MzsKJiM0MzsJcGFja2V0X2xlbiA9IHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuKHNrYiwgcG9ydCk7CiYjNDM7CWlmICghcGFja2V0X2xlbikKJiM0MzsJCXJldHVybiBOVUxMOwogCiAJc2tibiA9IGFsbG9jX3NrYihwYWNrZXRfbGVuICYjNDM7IFJNTkVUX01BUF9ERUFHR1JfU1BBQ0lORywgR0ZQX0FUT01JQyk7CiAJaWYgKCFza2JuKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDczCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUk1ORVQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBgcm1uZXRgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIGBybW5ldF9oYW5kbGVycy5jYCBhbmQgYHJtbmV0X21hcF9kYXRhLmNgLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIHRoaXMgbmV3IGZ1bmN0aW9uLCBgcm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW5gLiBJdCBzZWVtcyBsaWtlIHRoZXkmIzM5O3ZlIGV4dHJhY3RlZCB0aGUgcGFja2V0IGxlbmd0aCB2YWxpZGF0aW9uIGxvZ2ljIGZyb20gdGhlIGV4aXN0aW5nIGBybW5ldF9tYXBfZGVhZ2dyZWdhdGVgIGZ1bmN0aW9uLCBhbmQgYXJlIG5vdyByZXVzaW5nIGl0IHdpdGhpbiBgcm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcmAuIFNtYXJ0LCByZWR1Y2luZyBjb2RlIGR1cGxpY2F0aW9uIGlzIGFsd2F5cyBhIGdvb2QgbW92ZS4KCk5vdywgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYWx3YXlzIHJlYWNoYWJpbGl0eSBhbmQgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQ6IElzIHRoaXMgY29kZSBhY3R1YWxseSBnb2luZyB0byBiZSB1c2VkPyBVbmRlciB3aGF0IGNvbmRpdGlvbnM/IFdoYXQgS2NvbmZpZyBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgdGhpcyBuZXcgcGF0aD8gVGhlIGRyaXZlciBpcyBgcm1uZXRgLCB3aGljaCBJIGtub3cgaXMgUXVhbGNvbW0mIzM5O3MgSVBDIHJvdXRlciwgdGhlIFJNTkVUIGltcGxlbWVudGF0aW9uLiBTbywgbXkgbmV4dCBzdGVwIGlzIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGRyaXZlci4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgcGF0Y2guIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Uk1ORVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTA3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIE5ldHdvcmsgRHJpdmVyIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIFF1YWxjb21tIFJNTkVUIGRyaXZlciBhcmUgZGVmaW5lZC4gTXkgZmlyc3QgaW5zdGluY3QsIGJhc2VkIG9uIGV4cGVyaWVuY2UsIGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSB0cmVlLiBUaGUgbmFtaW5nIGNvbnZlbnRpb24gc3VnZ2VzdHMgdGhlIG1vc3QgbGlrZWx5IGxvY2F0aW9uIGlzIHVuZGVyIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHBsYWNlIHRvIHN0YXJ0LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiB0aGF0IGRpcmVjdG9yeSwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGZvciB0aGUgb3B0aW9ucyB0aGF0IGNvbnRyb2wgdGhlIGRyaXZlciYjMzk7cyBidWlsZCBhbmQgZmVhdHVyZXMuIEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBwbGFjZSBrZXJuZWwgZGV2ZWxvcGVycyBkZWZpbmUgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXTigJlzIGhpZ2hseSBwcm9iYWJsZSBpdCB3aWxsIGJlIGluIHRoZSBwYXJlbnQgZGlyZWN0b3J5LCBvciBpbiB0aGUgY3VycmVudCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDE6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtybW5ldF9jb25maWcuYyYjMzQ7LAogICAgJiMzNDtybW5ldF9jb25maWcuaCYjMzQ7LAogICAgJiMzNDtybW5ldF9oYW5kbGVycy5jJiMzNDssCiAgICAmIzM0O3JtbmV0X2hhbmRsZXJzLmgmIzM0OywKICAgICYjMzQ7cm1uZXRfbWFwLmgmIzM0OywKICAgICYjMzQ7cm1uZXRfbWFwX2NvbW1hbmQuYyYjMzQ7LAogICAgJiMzNDtybW5ldF9tYXBfZGF0YS5jJiMzNDssCiAgICAmIzM0O3JtbmV0X3ByaXZhdGUuaCYjMzQ7LAogICAgJiMzNDtybW5ldF92bmQuYyYjMzQ7LAogICAgJiMzNDtybW5ldF92bmQuaCYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDE6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIzMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqUmUtZXhhbWluaW5nIHRoZSBRdWFsY29tbSBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgY2lyY2xlIGJhY2sgdG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGhhdmluZyBhIGh1bmNoLCBhbmQgaXQmIzM5O3MgbmFnZ2luZyBhdCBtZS4gUGVyaGFwcywganVzdCBwZXJoYXBzLCB3aGF0IHdlJiMzOTtyZSBsb29raW5nIGZvciBpc24mIzM5O3Qgc29tZSBvYnNjdXJlIGZsYWcgb3IgZGVwZW5kZW5jeSBJJiMzOTt2ZSBvdmVybG9va2VkLiBNYXliZSB0aGUga2V5IGlzIHJpZ2h0IGluIGZyb250IG9mIHVzLCBidXJpZWQgd2l0aGluIGEgc2VlbWluZ2x5IHN0cmFpZ2h0Zm9yd2FyZCBjb25maWd1cmF0aW9uIGVudHJ5LiBJIGtlZXAgcmV0dXJuaW5nIHRvIGBjb25maWcgUk1ORVRgIHdoaWNoIHNlZW1zIG92ZXJseSBzaW1wbGlzdGljLiBJcyBpdCAqcmVhbGx5KiB0aGF0IGVhc3k/IElzIHRoaXMgdGhlIG1pc3NpbmcgcGllY2Ugb2YgdGhlIHB1enpsZSB0aGF0IGV4cGxhaW5zIHRoZSBiZWhhdmlvcj8gSSBuZWVkIHRvIHJldmlzaXQgdGhlIHN0cnVjdHVyZSBvZiB0aGUgY29uZmlndXJhdGlvbiBmaWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSTU5FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9LY29uZmlnLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9LY29uZmlnOjY6bWVudWNvbmZpZyBSTU5FVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7Um1OZXQgTUFQIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NDIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqTmF2aWdhdGluZyB0aGUgUXVhbGNvbW0gUk1ORVQgS2NvbmZpZyoqCgpSaWdodCwgbGV0JiMzOTtzIHNlZSwgaXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBuZXN0bGVkIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvS2NvbmZpZ2AuIFRpbWUgdG8gZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBRdWFsY29tbSBSTU5FVCBkcml2ZXIgaXMgY29uZmlndXJlZC4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHZhcmlvdXMgY29tcGlsZS10aW1lIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBwYXJ0aWN1bGFyIG5ldHdvcmtpbmcgY29tcG9uZW50LiBJdOKAmWxsIHRlbGwgbWUgZXZlcnl0aGluZyBJIG5lZWQgdG8ga25vdyBhYm91dCB0aGUgZmVhdHVyZSBzZXQuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgcGllY2VzIGFuZCBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGxheW91dC4gTGV04oCZcyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDAxOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBSTU5FVCBNQVAgZHJpdmVyXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgUk1ORVRcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O1JtTmV0IE1BUCBkcml2ZXJcJiMzNDtcbiAgIDg6XHRcdGRlZmF1bHQgblxuICAgOTpcdFx0c2VsZWN0IEdST19DRUxMU1xuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBJZiB5b3Ugc2VsZWN0IHRoaXMsIHlvdSB3aWxsIGVuYWJsZSB0aGUgUk1ORVQgbW9kdWxlIHdoaWNoIGlzIHVzZWRcbiAgMTI6XHRcdCAgZm9yIGhhbmRsaW5nIGRhdGEgaW4gdGhlIG11bHRpcGxleGluZyBhbmQgYWdncmVnYXRpb24gcHJvdG9jb2wgKE1BUClcbiAgMTM6XHRcdCAgZm9ybWF0IGluIHRoZSBlbWJlZGRlZCBkYXRhIHBhdGguIFJNTkVUIGRldmljZXMgY2FuIGJlIGF0dGFjaGVkIHRvXG4gIDE0Olx0XHQgIGFueSBJUCBtb2RlIHBoeXNpY2FsIGRldmljZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDE6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk0NAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDEzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHJtbmV0IENvbmZpZ3VyYXRpb24gYW5kIEhhbmRsZXIgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYENPTkZJR19STU5FVGAsIHdoaWNoIGlzIG91ciBzdGFydGluZyBwb2ludC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbiB0aGUgYHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuYCBhbmQgYHJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXJgIGZ1bmN0aW9ucy4gVGhpcyBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnOiBpcyB0aGlzIGZ1enphYmxlPyBBYnNvbHV0ZWx5LiBJdOKAmXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB0byB0aGUgcGFja2V0IHBhcnNpbmcgbG9naWMgKndpdGhpbiogYSBuZXR3b3JrIGRyaXZlci4gVGhhdCYjMzk7cyBwcmltZSBmdXp6aW5nIHRlcnJpdG9yeS4KClNwZWNpZmljYWxseSwgYHJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXJgIGlzIHRyaWdnZXJlZCBieSBpbmNvbWluZyBwYWNrZXRzLiBTaW5jZSBpdCYjMzk7cyBuZXR3b3JrLWZhY2luZywgd2UgY2FuIGRlZmluaXRlbHkgdGFyZ2V0IGl0IHRocm91Z2ggdGhlIG5ldHdvcmsgaW50ZXJmYWNlcy4gQW5kIGhleSwgbGV0JiMzOTtzIG5vdCBmb3JnZXQgdGhhdCBgcm1uZXRfbWFwX2RlYWdncmVnYXRlYCBpcyBhbHNvIGNhbGxlZCBvbiBpbmdyZXNzLiBJdCYjMzk7cyBhbGwgdGllZCB0b2dldGhlci4KCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gYHJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXJgLiBJJiMzOTtsbCBsb2NhdGUgaXQgaW4gYHJtbmV0X2hhbmRsZXJzLmNgIGFuZCBzdGFydCBkaWdnaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jPTU1PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jOjU2Ol9fcm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYy01Ny1cdFx0XHQgICAgc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYz0xMDg9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2hhbmRsZXJzLmM6MTA5OnJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2hhbmRsZXJzLmMtMTEwLVx0XHRcdCAgc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYy0xMjQtXHRcdHdoaWxlICgoc2tibiA9IHJtbmV0X21hcF9kZWFnZ3JlZ2F0ZShza2IsIHBvcnQpKSAhPSBOVUxMKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYzoxMjU6XHRcdFx0X19ybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyKHNrYm4sIHBvcnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYy0xMjYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYy0xMjktXHRcdGlmIChybW5ldF9tYXBfdmFsaWRhdGVfcGFja2V0X2xlbihza2IsIHBvcnQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYzoxMzA6XHRcdFx0X19ybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyKHNrYiwgcG9ydCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jLTEzMS1cdFx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2hhbmRsZXJzLmM9MjAzPXJ4X2hhbmRsZXJfcmVzdWx0X3Qgcm1uZXRfcnhfaGFuZGxlcihzdHJ1Y3Qgc2tfYnVmZiAqKnBza2IpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYy0yMjktXHRjYXNlIFJNTkVUX0VQTU9ERV9WTkQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jOjIzMDpcdFx0cm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcihza2IsIHBvcnQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYy0yMzEtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAwMTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTM3CgkJCQkJCQlvdXRwdXQ6IDEwOAoJCQkJCQkJdGhvdWdodHM6IDIzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciBSTU5FVCBEcml2ZXIgSW5ncmVzcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlLCBpdCYjMzk7cyBjbGVhciB0aGUgdGFyZ2V0IGlzIHRoZSBSTU5FVCBkcml2ZXImIzM5O3MgcGFja2V0IGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgcm1uZXRfcnhfaGFuZGxlcmAgZnVuY3Rpb24sIHdoaWNoIGlzIHJlZ2lzdGVyZWQgYXMgYW4gYHJ4X2hhbmRsZXJgIG9uIGEgbmV0ZGV2LiBUaGF0IG1lYW5zIGl0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBpbmNvbWluZyBwYWNrZXRzLgoKVGhlIHJlYWxseSBpbnRlcmVzdGluZyBwYXJ0cyBmb3IgZnV6emluZyBhcmUgZ29pbmcgdG8gYmUgdGhvc2UgbW9kaWZpZWQgZnVuY3Rpb25zOiBgcm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW5gLCBgcm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcmAsIGFuZCBgcm1uZXRfbWFwX2RlYWdncmVnYXRlYC4gVGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHdoZXJlIHRoZSBwYWNrZXQgbGVuZ3RoIHZhbGlkYXRpb24gYW5kIGluZ3Jlc3MgaGFuZGxpbmcgbG9naWMgaGFzIGJlZW4gY2hhbmdlZC4gSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGVzZSB0aHJlZS4KCkxldCYjMzk7cyBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBDT05GSUdfUk1ORVRgIGlzIHRoZSBtYWluIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMsIGFuZCB5ZXMsIHRoYXQmIzM5O3MgdGhlIHByaW1hcnkgb25lLgoKTm93LCBsZXQmIzM5O3MgZG9jdW1lbnQgdGhlc2UgZmluZGluZ3M6IGBzZXQtcmVzdWx0c2AuIEJhc2VkIG9uIG15IGFuYWx5c2lzLCB0aGlzIGRlZmluaXRlbHkgbG9va3MgV29ydGhGdXp6aW5nOiBUcnVlLiBNeSBGb2N1c1N5bWJvbHMgc2hvdWxkIGJlIHRob3NlIHRocmVlIGZ1bmN0aW9ucyBJIGlkZW50aWZpZWQ6IGBybW5ldF9tYXBfdmFsaWRhdGVfcGFja2V0X2xlbmAsIGBybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyYCwgYW5kIGBybW5ldF9tYXBfZGVhZ2dyZWdhdGVgLiBBbmQsIG9mIGNvdXJzZSwgSSYjMzk7bGwgbmVlZCB0byBFbmFibGVDb25maWdzOiBgUk1ORVRgLgoKVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIGlzIG1vZGlmeWluZyBjcnVjaWFsIHBhY2tldCBsZW5ndGggdmFsaWRhdGlvbiBsb2dpYyB3aXRoaW4gdGhlIFJNTkVUIGRyaXZlciYjMzk7cyBpbmdyZXNzIHBhdGguIFRoaXMgaXMgZnVuY3Rpb25hbCBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIGNvZGUgdGhhdCYjMzk7cyByZWFjaGFibGUgdmlhIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgcmlwZSBmb3IgZnV6emluZy4gSSBjYW4gcmVhY2ggdGhpcyBieSBwcm92aWRpbmcgZGlmZmVyZW50IGRhdGEgaW50byBhIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2UsIHdoaWNoIGlzIGEgcGVyZmVjdCB0YXJnZXQgZm9yIG15IGV4cGVydGlzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMDE6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JNTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW4mIzM0OywKICAgICYjMzQ7cm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtybW5ldF9tYXBfZGVhZ2dyZWdhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IGxlbmd0aCB2YWxpZGF0aW9uIGxvZ2ljIGluIHRoZSBSTU5FVCBkcml2ZXImIzM5O3MgaW5ncmVzcyBwYXRoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2VzIGFuZCBpcyBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JNTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW4mIzM0OywKICAgICYjMzQ7cm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlciYjMzQ7LAogICAgJiMzNDtybW5ldF9tYXBfZGVhZ2dyZWdhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IGxlbmd0aCB2YWxpZGF0aW9uIGxvZ2ljIGluIHRoZSBSTU5FVCBkcml2ZXImIzM5O3MgaW5ncmVzcyBwYXRoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2VzIGFuZCBpcyBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTowNToxNi44MTM5MjYxNzlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTQ4NTA2OTM3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSTU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuXCIsXG4gICAgXCJybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyXCIsXG4gICAgXCJybW5ldF9tYXBfZGVhZ2dyZWdhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgbGVuZ3RoIHZhbGlkYXRpb24gbG9naWMgaW4gdGhlIFJNTkVUIGRyaXZlcidzIGluZ3Jlc3MgcGF0aC4gVGhpcyBpcyBmdW5jdGlvbmFsIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgY29kZSB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlcyBhbmQgaXMgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTowNToxNi44MTM5MzIwMDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyNDM0MTY4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDMxYWE1MTI4MjU0ZmI2OTZiOGM0ZjkyNzQ0OTI4OTcyZGE2YzUzM2NcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMSAwMTowNToxNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuY1xcbmluZGV4IDlmMzQ3OTUwMGY4NWExLi5kMDU1YTI2MjhkOGM5ZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuY1xcbkBAIC0xMjYsNyArMTI2LDEwIEBAIHJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFxuIFxcdFxcdGNvbnN1bWVfc2tiKHNrYik7XFxuIFxcdH0gZWxzZSB7XFxuLVxcdFxcdF9fcm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcihza2IsIHBvcnQpO1xcbitcXHRcXHRpZiAocm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW4oc2tiLCBwb3J0KSlcXG4rXFx0XFx0XFx0X19ybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyKHNrYiwgcG9ydCk7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdH1cXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXAuaFxcbmluZGV4IGI3MDI4NDA5NTU2OGNlLi42MGNhOGI3ODBjODhhZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXAuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X21hcC5oXFxuQEAgLTU5LDUgKzU5LDYgQEAgdm9pZCBybW5ldF9tYXBfdHhfYWdncmVnYXRlX2luaXQoc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpO1xcbiB2b2lkIHJtbmV0X21hcF90eF9hZ2dyZWdhdGVfZXhpdChzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydCk7XFxuIHZvaWQgcm1uZXRfbWFwX3VwZGF0ZV91bF9hZ2dfY29uZmlnKHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0LCB1MzIgc2l6ZSxcXG4gXFx0XFx0XFx0XFx0ICAgIHUzMiBjb3VudCwgdTMyIHRpbWUpO1xcbit1MzIgcm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW4oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpO1xcbiBcXG4gI2VuZGlmIC8qIF9STU5FVF9NQVBfSF8gKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwX2RhdGEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X21hcF9kYXRhLmNcXG5pbmRleCA4YjQ2NDBjNWQ2MWViZS4uMzA1YWUxNWFlOGYzOTMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwX2RhdGEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X21hcF9kYXRhLmNcXG5AQCAtMzMzLDU0ICszMzMsNjIgQEAgc3RydWN0IHJtbmV0X21hcF9oZWFkZXIgKnJtbmV0X21hcF9hZGRfbWFwX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRyZXR1cm4gbWFwX2hlYWRlcjtcXG4gfVxcbiBcXG4tLyogRGVhZ2dyZWdhdGVzIGEgc2luZ2xlIHBhY2tldFxcbi0gKiBBIHdob2xlIG5ldyBidWZmZXIgaXMgYWxsb2NhdGVkIGZvciBlYWNoIHBvcnRpb24gb2YgYW4gYWdncmVnYXRlZCBmcmFtZS5cXG4tICogQ2FsbGVyIHNob3VsZCBrZWVwIGNhbGxpbmcgZGVhZ2dyZWdhdGUoKSBvbiB0aGUgc291cmNlIHNrYiB1bnRpbCAwIGlzXFxuLSAqIHJldHVybmVkLCBpbmRpY2F0aW5nIHRoYXQgdGhlcmUgYXJlIG5vIG1vcmUgcGFja2V0cyB0byBkZWFnZ3JlZ2F0ZS4gQ2FsbGVyXFxuLSAqIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSBvcmlnaW5hbCBza2IuXFxuLSAqL1xcbi1zdHJ1Y3Qgc2tfYnVmZiAqcm1uZXRfbWFwX2RlYWdncmVnYXRlKHN0cnVjdCBza19idWZmICpza2IsXFxuLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0KVxcbit1MzIgcm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW4oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpXFxuIHtcXG4gXFx0c3RydWN0IHJtbmV0X21hcF92NV9jc3VtX2hlYWRlciAqbmV4dF9oZHIgPSBOVUxMO1xcbiBcXHRzdHJ1Y3Qgcm1uZXRfbWFwX2hlYWRlciAqbWFwaDtcXG4gXFx0dm9pZCAqZGF0YSA9IHNrYi1cXHUwMDNlZGF0YTtcXG4tXFx0c3RydWN0IHNrX2J1ZmYgKnNrYm47XFxuLVxcdHU4IG5leHRoZHJfdHlwZTtcXG4gXFx0dTMyIHBhY2tldF9sZW47XFxuIFxcbi1cXHRpZiAoc2tiLVxcdTAwM2VsZW4gPT0gMClcXG4tXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdGlmIChza2ItXFx1MDAzZWxlbiBcXHUwMDNjIHNpemVvZigqbWFwaCkpXFxuK1xcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0bWFwaCA9IChzdHJ1Y3Qgcm1uZXRfbWFwX2hlYWRlciAqKXNrYi1cXHUwMDNlZGF0YTtcXG4rXFxuK1xcdC8qIFNvbWUgaGFyZHdhcmUgY2FuIHNlbmQgdXMgZW1wdHkgZnJhbWVzLiBDYXRjaCB0aGVtICovXFxuK1xcdGlmICghbWFwaC1cXHUwMDNlcGt0X2xlbilcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbiBcXHRwYWNrZXRfbGVuID0gbnRvaHMobWFwaC1cXHUwMDNlcGt0X2xlbikgKyBzaXplb2YoKm1hcGgpO1xcbiBcXG4gXFx0aWYgKHBvcnQtXFx1MDAzZWRhdGFfZm9ybWF0IFxcdTAwMjYgUk1ORVRfRkxBR1NfSU5HUkVTU19NQVBfQ0tTVU1WNCkge1xcbiBcXHRcXHRwYWNrZXRfbGVuICs9IHNpemVvZihzdHJ1Y3Qgcm1uZXRfbWFwX2RsX2NzdW1fdHJhaWxlcik7XFxuLVxcdH0gZWxzZSBpZiAocG9ydC1cXHUwMDNlZGF0YV9mb3JtYXQgXFx1MDAyNiBSTU5FVF9GTEFHU19JTkdSRVNTX01BUF9DS1NVTVY1KSB7XFxuLVxcdFxcdGlmICghKG1hcGgtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTUFQX0NNRF9GTEFHKSkge1xcbi1cXHRcXHRcXHRwYWNrZXRfbGVuICs9IHNpemVvZigqbmV4dF9oZHIpO1xcbi1cXHRcXHRcXHRpZiAobWFwaC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBNQVBfTkVYVF9IRUFERVJfRkxBRylcXG4tXFx0XFx0XFx0XFx0bmV4dF9oZHIgPSBkYXRhICsgc2l6ZW9mKCptYXBoKTtcXG4tXFx0XFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRcXHQvKiBNYXB2NSBkYXRhIHBrdCB3aXRob3V0IGNzdW0gaGRyIGlzIGludmFsaWQgKi9cXG4tXFx0XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuLVxcdFxcdH1cXG4rXFx0fSBlbHNlIGlmICgocG9ydC1cXHUwMDNlZGF0YV9mb3JtYXQgXFx1MDAyNiBSTU5FVF9GTEFHU19JTkdSRVNTX01BUF9DS1NVTVY1KSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAhKG1hcGgtXFx1MDAzZWZsYWdzIFxcdTAwMjYgTUFQX0NNRF9GTEFHKSkge1xcbitcXHRcXHQvKiBNYXB2NSBkYXRhIHBrdCB3aXRob3V0IGNzdW0gaGRyIGlzIGludmFsaWQgKi9cXG4rXFx0XFx0aWYgKCEobWFwaC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBNQVBfTkVYVF9IRUFERVJfRkxBRykpXFxuK1xcdFxcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0XFx0cGFja2V0X2xlbiArPSBzaXplb2YoKm5leHRfaGRyKTtcXG4rXFx0XFx0bmV4dF9oZHIgPSBkYXRhICsgc2l6ZW9mKCptYXBoKTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKCgoaW50KXNrYi1cXHUwMDNlbGVuIC0gKGludClwYWNrZXRfbGVuKSBcXHUwMDNjIDApXFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbitcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBwYWNrZXRfbGVuKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdC8qIFNvbWUgaGFyZHdhcmUgY2FuIHNlbmQgdXMgZW1wdHkgZnJhbWVzLiBDYXRjaCB0aGVtICovXFxuLVxcdGlmICghbWFwaC1cXHUwMDNlcGt0X2xlbilcXG4tXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdGlmIChuZXh0X2hkciBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgdThfZ2V0X2JpdHMobmV4dF9oZHItXFx1MDAzZWhlYWRlcl9pbmZvLCBNQVBWNV9IRFJJTkZPX0hEUl9UWVBFX0ZNQVNLKSAhPVxcbitcXHQgICAgUk1ORVRfTUFQX0hFQURFUl9UWVBFX0NTVU1fT0ZGTE9BRClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuIFxcbi1cXHRpZiAobmV4dF9oZHIpIHtcXG4tXFx0XFx0bmV4dGhkcl90eXBlID0gdThfZ2V0X2JpdHMobmV4dF9oZHItXFx1MDAzZWhlYWRlcl9pbmZvLFxcbi1cXHRcXHRcXHRcXHRcXHQgICBNQVBWNV9IRFJJTkZPX0hEUl9UWVBFX0ZNQVNLKTtcXG4tXFx0XFx0aWYgKG5leHRoZHJfdHlwZSAhPSBSTU5FVF9NQVBfSEVBREVSX1RZUEVfQ1NVTV9PRkZMT0FEKVxcbi1cXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4tXFx0fVxcbitcXHRyZXR1cm4gcGFja2V0X2xlbjtcXG4rfVxcbitcXG4rLyogRGVhZ2dyZWdhdGVzIGEgc2luZ2xlIHBhY2tldFxcbisgKiBBIHdob2xlIG5ldyBidWZmZXIgaXMgYWxsb2NhdGVkIGZvciBlYWNoIHBvcnRpb24gb2YgYW4gYWdncmVnYXRlZCBmcmFtZS5cXG4rICogQ2FsbGVyIHNob3VsZCBrZWVwIGNhbGxpbmcgZGVhZ2dyZWdhdGUoKSBvbiB0aGUgc291cmNlIHNrYiB1bnRpbCAwIGlzXFxuKyAqIHJldHVybmVkLCBpbmRpY2F0aW5nIHRoYXQgdGhlcmUgYXJlIG5vIG1vcmUgcGFja2V0cyB0byBkZWFnZ3JlZ2F0ZS4gQ2FsbGVyXFxuKyAqIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSBvcmlnaW5hbCBza2IuXFxuKyAqL1xcbitzdHJ1Y3Qgc2tfYnVmZiAqcm1uZXRfbWFwX2RlYWdncmVnYXRlKHN0cnVjdCBza19idWZmICpza2IsXFxuK1xcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0KVxcbit7XFxuK1xcdHN0cnVjdCBza19idWZmICpza2JuO1xcbitcXHR1MzIgcGFja2V0X2xlbjtcXG4rXFxuK1xcdHBhY2tldF9sZW4gPSBybW5ldF9tYXBfdmFsaWRhdGVfcGFja2V0X2xlbihza2IsIHBvcnQpO1xcbitcXHRpZiAoIXBhY2tldF9sZW4pXFxuK1xcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4gXFx0c2tibiA9IGFsbG9jX3NrYihwYWNrZXRfbGVuICsgUk1ORVRfTUFQX0RFQUdHUl9TUEFDSU5HLCBHRlBfQVRPTUlDKTtcXG4gXFx0aWYgKCFza2JuKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTowNToxNy40Mzg4NTU3ODhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0ODYwMTI2NjYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJNTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW5cIixcbiAgICBcInJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXJcIixcbiAgICBcInJtbmV0X21hcF9kZWFnZ3JlZ2F0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHBhY2tldCBsZW5ndGggdmFsaWRhdGlvbiBsb2dpYyBpbiB0aGUgUk1ORVQgZHJpdmVyJ3MgaW5ncmVzcyBwYXRoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgbmV0d29yayBwYWNrZXQgcHJvY2Vzc2luZyBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2VzIGFuZCBpcyBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzFhYTUxMjgyNTRmYjY5NmI4YzRmOTI3NDQ5Mjg5NzJkYTZjNTMzY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMDE6MDU6MTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuY1xuaW5kZXggOWYzNDc5NTAwZjg1YTEuLmQwNTVhMjYyOGQ4YzlkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuY1xuQEAgLTEyNiw3ICsxMjYsMTAgQEAgcm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIFx0XHRjb25zdW1lX3NrYihza2IpO1xuIFx0fSBlbHNlIHtcbi1cdFx0X19ybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyKHNrYiwgcG9ydCk7XG4rXHRcdGlmIChybW5ldF9tYXBfdmFsaWRhdGVfcGFja2V0X2xlbihza2IsIHBvcnQpKVxuK1x0XHRcdF9fcm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcihza2IsIHBvcnQpO1xuK1x0XHRlbHNlXG4rXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHR9XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X21hcC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfbWFwLmhcbmluZGV4IGI3MDI4NDA5NTU2OGNlLi42MGNhOGI3ODBjODhhZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X21hcC5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXAuaFxuQEAgLTU5LDUgKzU5LDYgQEAgdm9pZCBybW5ldF9tYXBfdHhfYWdncmVnYXRlX2luaXQoc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpO1xuIHZvaWQgcm1uZXRfbWFwX3R4X2FnZ3JlZ2F0ZV9leGl0KHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0KTtcbiB2b2lkIHJtbmV0X21hcF91cGRhdGVfdWxfYWdnX2NvbmZpZyhzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydCwgdTMyIHNpemUsXG4gXHRcdFx0XHQgICAgdTMyIGNvdW50LCB1MzIgdGltZSk7XG4rdTMyIHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0KTtcbiBcbiAjZW5kaWYgLyogX1JNTkVUX01BUF9IXyAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X21hcF9kYXRhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXBfZGF0YS5jXG5pbmRleCA4YjQ2NDBjNWQ2MWViZS4uMzA1YWUxNWFlOGYzOTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXBfZGF0YS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9tYXBfZGF0YS5jXG5AQCAtMzMzLDU0ICszMzMsNjIgQEAgc3RydWN0IHJtbmV0X21hcF9oZWFkZXIgKnJtbmV0X21hcF9hZGRfbWFwX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0cmV0dXJuIG1hcF9oZWFkZXI7XG4gfVxuIFxuLS8qIERlYWdncmVnYXRlcyBhIHNpbmdsZSBwYWNrZXRcbi0gKiBBIHdob2xlIG5ldyBidWZmZXIgaXMgYWxsb2NhdGVkIGZvciBlYWNoIHBvcnRpb24gb2YgYW4gYWdncmVnYXRlZCBmcmFtZS5cbi0gKiBDYWxsZXIgc2hvdWxkIGtlZXAgY2FsbGluZyBkZWFnZ3JlZ2F0ZSgpIG9uIHRoZSBzb3VyY2Ugc2tiIHVudGlsIDAgaXNcbi0gKiByZXR1cm5lZCwgaW5kaWNhdGluZyB0aGF0IHRoZXJlIGFyZSBubyBtb3JlIHBhY2tldHMgdG8gZGVhZ2dyZWdhdGUuIENhbGxlclxuLSAqIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSBvcmlnaW5hbCBza2IuXG4tICovXG4tc3RydWN0IHNrX2J1ZmYgKnJtbmV0X21hcF9kZWFnZ3JlZ2F0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLVx0XHRcdFx0ICAgICAgc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpXG4rdTMyIHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBybW5ldF9wb3J0ICpwb3J0KVxuIHtcbiBcdHN0cnVjdCBybW5ldF9tYXBfdjVfY3N1bV9oZWFkZXIgKm5leHRfaGRyID0gTlVMTDtcbiBcdHN0cnVjdCBybW5ldF9tYXBfaGVhZGVyICptYXBoO1xuIFx0dm9pZCAqZGF0YSA9IHNrYi1cdTAwM2VkYXRhO1xuLVx0c3RydWN0IHNrX2J1ZmYgKnNrYm47XG4tXHR1OCBuZXh0aGRyX3R5cGU7XG4gXHR1MzIgcGFja2V0X2xlbjtcbiBcbi1cdGlmIChza2ItXHUwMDNlbGVuID09IDApXG4tXHRcdHJldHVybiBOVUxMO1xuK1x0aWYgKHNrYi1cdTAwM2VsZW4gXHUwMDNjIHNpemVvZigqbWFwaCkpXG4rXHRcdHJldHVybiAwO1xuIFxuIFx0bWFwaCA9IChzdHJ1Y3Qgcm1uZXRfbWFwX2hlYWRlciAqKXNrYi1cdTAwM2VkYXRhO1xuK1xuK1x0LyogU29tZSBoYXJkd2FyZSBjYW4gc2VuZCB1cyBlbXB0eSBmcmFtZXMuIENhdGNoIHRoZW0gKi9cbitcdGlmICghbWFwaC1cdTAwM2Vwa3RfbGVuKVxuK1x0XHRyZXR1cm4gMDtcbitcbiBcdHBhY2tldF9sZW4gPSBudG9ocyhtYXBoLVx1MDAzZXBrdF9sZW4pICsgc2l6ZW9mKCptYXBoKTtcbiBcbiBcdGlmIChwb3J0LVx1MDAzZWRhdGFfZm9ybWF0IFx1MDAyNiBSTU5FVF9GTEFHU19JTkdSRVNTX01BUF9DS1NVTVY0KSB7XG4gXHRcdHBhY2tldF9sZW4gKz0gc2l6ZW9mKHN0cnVjdCBybW5ldF9tYXBfZGxfY3N1bV90cmFpbGVyKTtcbi1cdH0gZWxzZSBpZiAocG9ydC1cdTAwM2VkYXRhX2Zvcm1hdCBcdTAwMjYgUk1ORVRfRkxBR1NfSU5HUkVTU19NQVBfQ0tTVU1WNSkge1xuLVx0XHRpZiAoIShtYXBoLVx1MDAzZWZsYWdzIFx1MDAyNiBNQVBfQ01EX0ZMQUcpKSB7XG4tXHRcdFx0cGFja2V0X2xlbiArPSBzaXplb2YoKm5leHRfaGRyKTtcbi1cdFx0XHRpZiAobWFwaC1cdTAwM2VmbGFncyBcdTAwMjYgTUFQX05FWFRfSEVBREVSX0ZMQUcpXG4tXHRcdFx0XHRuZXh0X2hkciA9IGRhdGEgKyBzaXplb2YoKm1hcGgpO1xuLVx0XHRcdGVsc2Vcbi1cdFx0XHRcdC8qIE1hcHY1IGRhdGEgcGt0IHdpdGhvdXQgY3N1bSBoZHIgaXMgaW52YWxpZCAqL1xuLVx0XHRcdFx0cmV0dXJuIE5VTEw7XG4tXHRcdH1cbitcdH0gZWxzZSBpZiAoKHBvcnQtXHUwMDNlZGF0YV9mb3JtYXQgXHUwMDI2IFJNTkVUX0ZMQUdTX0lOR1JFU1NfTUFQX0NLU1VNVjUpIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAhKG1hcGgtXHUwMDNlZmxhZ3MgXHUwMDI2IE1BUF9DTURfRkxBRykpIHtcbitcdFx0LyogTWFwdjUgZGF0YSBwa3Qgd2l0aG91dCBjc3VtIGhkciBpcyBpbnZhbGlkICovXG4rXHRcdGlmICghKG1hcGgtXHUwMDNlZmxhZ3MgXHUwMDI2IE1BUF9ORVhUX0hFQURFUl9GTEFHKSlcbitcdFx0XHRyZXR1cm4gMDtcbitcbitcdFx0cGFja2V0X2xlbiArPSBzaXplb2YoKm5leHRfaGRyKTtcbitcdFx0bmV4dF9oZHIgPSBkYXRhICsgc2l6ZW9mKCptYXBoKTtcbiBcdH1cbiBcbi1cdGlmICgoKGludClza2ItXHUwMDNlbGVuIC0gKGludClwYWNrZXRfbGVuKSBcdTAwM2MgMClcbi1cdFx0cmV0dXJuIE5VTEw7XG4rXHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgcGFja2V0X2xlbilcbitcdFx0cmV0dXJuIDA7XG4gXG4tXHQvKiBTb21lIGhhcmR3YXJlIGNhbiBzZW5kIHVzIGVtcHR5IGZyYW1lcy4gQ2F0Y2ggdGhlbSAqL1xuLVx0aWYgKCFtYXBoLVx1MDAzZXBrdF9sZW4pXG4tXHRcdHJldHVybiBOVUxMO1xuK1x0aWYgKG5leHRfaGRyIFx1MDAyNlx1MDAyNlxuK1x0ICAgIHU4X2dldF9iaXRzKG5leHRfaGRyLVx1MDAzZWhlYWRlcl9pbmZvLCBNQVBWNV9IRFJJTkZPX0hEUl9UWVBFX0ZNQVNLKSAhPVxuK1x0ICAgIFJNTkVUX01BUF9IRUFERVJfVFlQRV9DU1VNX09GRkxPQUQpXG4rXHRcdHJldHVybiAwO1xuIFxuLVx0aWYgKG5leHRfaGRyKSB7XG4tXHRcdG5leHRoZHJfdHlwZSA9IHU4X2dldF9iaXRzKG5leHRfaGRyLVx1MDAzZWhlYWRlcl9pbmZvLFxuLVx0XHRcdFx0XHQgICBNQVBWNV9IRFJJTkZPX0hEUl9UWVBFX0ZNQVNLKTtcbi1cdFx0aWYgKG5leHRoZHJfdHlwZSAhPSBSTU5FVF9NQVBfSEVBREVSX1RZUEVfQ1NVTV9PRkZMT0FEKVxuLVx0XHRcdHJldHVybiBOVUxMO1xuLVx0fVxuK1x0cmV0dXJuIHBhY2tldF9sZW47XG4rfVxuK1xuKy8qIERlYWdncmVnYXRlcyBhIHNpbmdsZSBwYWNrZXRcbisgKiBBIHdob2xlIG5ldyBidWZmZXIgaXMgYWxsb2NhdGVkIGZvciBlYWNoIHBvcnRpb24gb2YgYW4gYWdncmVnYXRlZCBmcmFtZS5cbisgKiBDYWxsZXIgc2hvdWxkIGtlZXAgY2FsbGluZyBkZWFnZ3JlZ2F0ZSgpIG9uIHRoZSBzb3VyY2Ugc2tiIHVudGlsIDAgaXNcbisgKiByZXR1cm5lZCwgaW5kaWNhdGluZyB0aGF0IHRoZXJlIGFyZSBubyBtb3JlIHBhY2tldHMgdG8gZGVhZ2dyZWdhdGUuIENhbGxlclxuKyAqIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSBvcmlnaW5hbCBza2IuXG4rICovXG4rc3RydWN0IHNrX2J1ZmYgKnJtbmV0X21hcF9kZWFnZ3JlZ2F0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuK1x0XHRcdFx0ICAgICAgc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpXG4re1xuK1x0c3RydWN0IHNrX2J1ZmYgKnNrYm47XG4rXHR1MzIgcGFja2V0X2xlbjtcbitcbitcdHBhY2tldF9sZW4gPSBybW5ldF9tYXBfdmFsaWRhdGVfcGFja2V0X2xlbihza2IsIHBvcnQpO1xuK1x0aWYgKCFwYWNrZXRfbGVuKVxuK1x0XHRyZXR1cm4gTlVMTDtcbiBcbiBcdHNrYm4gPSBhbGxvY19za2IocGFja2V0X2xlbiArIFJNTkVUX01BUF9ERUFHR1JfU1BBQ0lORywgR0ZQX0FUT01JQyk7XG4gXHRpZiAoIXNrYm4pXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTowNToxNy40Mzg4NTcxODhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDk5OTg3NzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUk1ORVQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBgcm1uZXRgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIGBybW5ldF9oYW5kbGVycy5jYCBhbmQgYHJtbmV0X21hcF9kYXRhLmNgLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIHRoaXMgbmV3IGZ1bmN0aW9uLCBgcm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW5gLiBJdCBzZWVtcyBsaWtlIHRoZXkndmUgZXh0cmFjdGVkIHRoZSBwYWNrZXQgbGVuZ3RoIHZhbGlkYXRpb24gbG9naWMgZnJvbSB0aGUgZXhpc3RpbmcgYHJtbmV0X21hcF9kZWFnZ3JlZ2F0ZWAgZnVuY3Rpb24sIGFuZCBhcmUgbm93IHJldXNpbmcgaXQgd2l0aGluIGBybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyYC4gU21hcnQsIHJlZHVjaW5nIGNvZGUgZHVwbGljYXRpb24gaXMgYWx3YXlzIGEgZ29vZCBtb3ZlLlxuXG5Ob3csIG15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGFsd2F5cyByZWFjaGFiaWxpdHkgYW5kIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0OiBJcyB0aGlzIGNvZGUgYWN0dWFsbHkgZ29pbmcgdG8gYmUgdXNlZD8gVW5kZXIgd2hhdCBjb25kaXRpb25zPyBXaGF0IEtjb25maWcgb3B0aW9ucyBhcmUgcmVxdWlyZWQgdG8gZW5hYmxlIHRoaXMgbmV3IHBhdGg/IFRoZSBkcml2ZXIgaXMgYHJtbmV0YCwgd2hpY2ggSSBrbm93IGlzIFF1YWxjb21tJ3MgSVBDIHJvdXRlciwgdGhlIFJNTkVUIGltcGxlbWVudGF0aW9uLiBTbywgbXkgbmV4dCBzdGVwIGlzIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGRyaXZlci4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgcGF0Y2guIExldCdzIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ3MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjA1OjIxLjUzODg0NzEwN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzA4Mzk1ODgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlJNTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjA1OjIxLjk2OTY5NTgzNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMjM1NjUxNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBOZXR3b3JrIERyaXZlciBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIFF1YWxjb21tIFJNTkVUIGRyaXZlciBhcmUgZGVmaW5lZC4gTXkgZmlyc3QgaW5zdGluY3QsIGJhc2VkIG9uIGV4cGVyaWVuY2UsIGlzIHRvIGRpdmUgaW50byB0aGUga2VybmVsIHNvdXJjZSB0cmVlLiBUaGUgbmFtaW5nIGNvbnZlbnRpb24gc3VnZ2VzdHMgdGhlIG1vc3QgbGlrZWx5IGxvY2F0aW9uIGlzIHVuZGVyIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvYCBkaXJlY3RvcnkuIFRoYXQncyBhIGNsYXNzaWMgcGxhY2UgdG8gc3RhcnQuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGUgaW4gdGhhdCBkaXJlY3RvcnksIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBmb3IgdGhlIG9wdGlvbnMgdGhhdCBjb250cm9sIHRoZSBkcml2ZXIncyBidWlsZCBhbmQgZmVhdHVyZXMuIEl0J3MgdGhlIHN0YW5kYXJkIHBsYWNlIGtlcm5lbCBkZXZlbG9wZXJzIGRlZmluZSB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJdOKAmXMgaGlnaGx5IHByb2JhYmxlIGl0IHdpbGwgYmUgaW4gdGhlIHBhcmVudCBkaXJlY3RvcnksIG9yIGluIHRoZSBjdXJyZW50IG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkwNywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjA1OjI0Ljk5MzI2NDQ3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzYxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJybW5ldF9jb25maWcuY1wiLFxuICAgIFwicm1uZXRfY29uZmlnLmhcIixcbiAgICBcInJtbmV0X2hhbmRsZXJzLmNcIixcbiAgICBcInJtbmV0X2hhbmRsZXJzLmhcIixcbiAgICBcInJtbmV0X21hcC5oXCIsXG4gICAgXCJybW5ldF9tYXBfY29tbWFuZC5jXCIsXG4gICAgXCJybW5ldF9tYXBfZGF0YS5jXCIsXG4gICAgXCJybW5ldF9wcml2YXRlLmhcIixcbiAgICBcInJtbmV0X3ZuZC5jXCIsXG4gICAgXCJybW5ldF92bmQuaFwiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTowNToyNC45OTM0MDMxMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTczMzQ3OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqUmUtZXhhbWluaW5nIHRoZSBRdWFsY29tbSBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGNpcmNsZSBiYWNrIHRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vS2NvbmZpZ2AgZmlsZS4gSSdtIGhhdmluZyBhIGh1bmNoLCBhbmQgaXQncyBuYWdnaW5nIGF0IG1lLiBQZXJoYXBzLCBqdXN0IHBlcmhhcHMsIHdoYXQgd2UncmUgbG9va2luZyBmb3IgaXNuJ3Qgc29tZSBvYnNjdXJlIGZsYWcgb3IgZGVwZW5kZW5jeSBJJ3ZlIG92ZXJsb29rZWQuIE1heWJlIHRoZSBrZXkgaXMgcmlnaHQgaW4gZnJvbnQgb2YgdXMsIGJ1cmllZCB3aXRoaW4gYSBzZWVtaW5nbHkgc3RyYWlnaHRmb3J3YXJkIGNvbmZpZ3VyYXRpb24gZW50cnkuIEkga2VlcCByZXR1cm5pbmcgdG8gYGNvbmZpZyBSTU5FVGAgd2hpY2ggc2VlbXMgb3Zlcmx5IHNpbXBsaXN0aWMuIElzIGl0ICpyZWFsbHkqIHRoYXQgZWFzeT8gSXMgdGhpcyB0aGUgbWlzc2luZyBwaWVjZSBvZiB0aGUgcHV6emxlIHRoYXQgZXhwbGFpbnMgdGhlIGJlaGF2aW9yPyBJIG5lZWQgdG8gcmV2aXNpdCB0aGUgc3RydWN0dXJlIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMzEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDE6MDU6MjguNDUwNzM5OTgzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzOTczODYzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUk1ORVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9LY29uZmlnOjY6bWVudWNvbmZpZyBSTU5FVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiUm1OZXQgTUFQIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDE6MDU6MjguNzkwNDg5MjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODY5ODQyMzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipOYXZpZ2F0aW5nIHRoZSBRdWFsY29tbSBSTU5FVCBLY29uZmlnKipcblxuUmlnaHQsIGxldCdzIHNlZSwgaXQgbG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBuZXN0bGVkIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvS2NvbmZpZ2AuIFRpbWUgdG8gZGl2ZSBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBRdWFsY29tbSBSTU5FVCBkcml2ZXIgaXMgY29uZmlndXJlZC4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHZhcmlvdXMgY29tcGlsZS10aW1lIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBwYXJ0aWN1bGFyIG5ldHdvcmtpbmcgY29tcG9uZW50LiBJdOKAmWxsIHRlbGwgbWUgZXZlcnl0aGluZyBJIG5lZWQgdG8ga25vdyBhYm91dCB0aGUgZmVhdHVyZSBzZXQuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgcmVsZXZhbnQgcGllY2VzIGFuZCBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGxheW91dC4gTGV04oCZcyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NDIsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQwMTowNTozMS42NjAzMzQxMzlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgzMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgUk1ORVQgTUFQIGRyaXZlclxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIFJNTkVUXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiUm1OZXQgTUFQIGRyaXZlclxcXCJcXG4gICA4OlxcdFxcdGRlZmF1bHQgblxcbiAgIDk6XFx0XFx0c2VsZWN0IEdST19DRUxMU1xcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBJZiB5b3Ugc2VsZWN0IHRoaXMsIHlvdSB3aWxsIGVuYWJsZSB0aGUgUk1ORVQgbW9kdWxlIHdoaWNoIGlzIHVzZWRcXG4gIDEyOlxcdFxcdCAgZm9yIGhhbmRsaW5nIGRhdGEgaW4gdGhlIG11bHRpcGxleGluZyBhbmQgYWdncmVnYXRpb24gcHJvdG9jb2wgKE1BUClcXG4gIDEzOlxcdFxcdCAgZm9ybWF0IGluIHRoZSBlbWJlZGRlZCBkYXRhIHBhdGguIFJNTkVUIGRldmljZXMgY2FuIGJlIGF0dGFjaGVkIHRvXFxuICAxNDpcXHRcXHQgIGFueSBJUCBtb2RlIHBoeXNpY2FsIGRldmljZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDE6MDU6MzEuNjYwNDA0NzY5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MzYzNzg5NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBybW5ldCBDb25maWd1cmF0aW9uIGFuZCBIYW5kbGVyIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYENPTkZJR19STU5FVGAsIHdoaWNoIGlzIG91ciBzdGFydGluZyBwb2ludC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBpbiB0aGUgYHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuYCBhbmQgYHJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXJgIGZ1bmN0aW9ucy4gVGhpcyBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnOiBpcyB0aGlzIGZ1enphYmxlPyBBYnNvbHV0ZWx5LiBJdOKAmXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB0byB0aGUgcGFja2V0IHBhcnNpbmcgbG9naWMgKndpdGhpbiogYSBuZXR3b3JrIGRyaXZlci4gVGhhdCdzIHByaW1lIGZ1enppbmcgdGVycml0b3J5LlxuXG5TcGVjaWZpY2FsbHksIGBybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyYCBpcyB0cmlnZ2VyZWQgYnkgaW5jb21pbmcgcGFja2V0cy4gU2luY2UgaXQncyBuZXR3b3JrLWZhY2luZywgd2UgY2FuIGRlZmluaXRlbHkgdGFyZ2V0IGl0IHRocm91Z2ggdGhlIG5ldHdvcmsgaW50ZXJmYWNlcy4gQW5kIGhleSwgbGV0J3Mgbm90IGZvcmdldCB0aGF0IGBybW5ldF9tYXBfZGVhZ2dyZWdhdGVgIGlzIGFsc28gY2FsbGVkIG9uIGluZ3Jlc3MuIEl0J3MgYWxsIHRpZWQgdG9nZXRoZXIuXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byBgcm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcmAuIEknbGwgbG9jYXRlIGl0IGluIGBybW5ldF9oYW5kbGVycy5jYCBhbmQgc3RhcnQgZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk0NCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjA1OjM2LjA5Njc4NjUwNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ1NTA0OTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jPTU1PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYzo1NjpfX3JtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jLTU3LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgcm1uZXRfcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2hhbmRsZXJzLmM9MTA4PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYzoxMDk6cm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2hhbmRsZXJzLmMtMTEwLVxcdFxcdFxcdCAgc3RydWN0IHJtbmV0X3BvcnQgKnBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jLTEyNC1cXHRcXHR3aGlsZSAoKHNrYm4gPSBybW5ldF9tYXBfZGVhZ2dyZWdhdGUoc2tiLCBwb3J0KSkgIT0gTlVMTClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jOjEyNTpcXHRcXHRcXHRfX3JtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXIoc2tibiwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYy0xMjYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jLTEyOS1cXHRcXHRpZiAocm1uZXRfbWFwX3ZhbGlkYXRlX3BhY2tldF9sZW4oc2tiLCBwb3J0KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jOjEzMDpcXHRcXHRcXHRfX3JtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXIoc2tiLCBwb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jLTEzMS1cXHRcXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jPTIwMz1yeF9oYW5kbGVyX3Jlc3VsdF90IHJtbmV0X3J4X2hhbmRsZXIoc3RydWN0IHNrX2J1ZmYgKipwc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcXVhbGNvbW0vcm1uZXQvcm1uZXRfaGFuZGxlcnMuYy0yMjktXFx0Y2FzZSBSTU5FVF9FUE1PREVfVk5EOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0L3JtbmV0X2hhbmRsZXJzLmM6MjMwOlxcdFxcdHJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXIoc2tiLCBwb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9ybW5ldC9ybW5ldF9oYW5kbGVycy5jLTIzMS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMDE6MDU6MzYuNjQyMjk2OTUyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzOTExOTM2NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgUk1ORVQgRHJpdmVyIEluZ3Jlc3MqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmUsIGl0J3MgY2xlYXIgdGhlIHRhcmdldCBpcyB0aGUgUk1ORVQgZHJpdmVyJ3MgcGFja2V0IGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgcm1uZXRfcnhfaGFuZGxlcmAgZnVuY3Rpb24sIHdoaWNoIGlzIHJlZ2lzdGVyZWQgYXMgYW4gYHJ4X2hhbmRsZXJgIG9uIGEgbmV0ZGV2LiBUaGF0IG1lYW5zIGl0J3MgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGluY29taW5nIHBhY2tldHMuXG5cblRoZSByZWFsbHkgaW50ZXJlc3RpbmcgcGFydHMgZm9yIGZ1enppbmcgYXJlIGdvaW5nIHRvIGJlIHRob3NlIG1vZGlmaWVkIGZ1bmN0aW9uczogYHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuYCwgYHJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXJgLCBhbmQgYHJtbmV0X21hcF9kZWFnZ3JlZ2F0ZWAuIFRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyB3aGVyZSB0aGUgcGFja2V0IGxlbmd0aCB2YWxpZGF0aW9uIGFuZCBpbmdyZXNzIGhhbmRsaW5nIGxvZ2ljIGhhcyBiZWVuIGNoYW5nZWQuIEkgbmVlZCB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gdGhlc2UgdGhyZWUuXG5cbkxldCdzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYENPTkZJR19STU5FVGAgaXMgdGhlIG1haW4gZW5hYmxpbmcgY29uZmlndXJhdGlvbiBmb3IgdGhpcywgYW5kIHllcywgdGhhdCdzIHRoZSBwcmltYXJ5IG9uZS5cblxuTm93LCBsZXQncyBkb2N1bWVudCB0aGVzZSBmaW5kaW5nczogYHNldC1yZXN1bHRzYC4gQmFzZWQgb24gbXkgYW5hbHlzaXMsIHRoaXMgZGVmaW5pdGVseSBsb29rcyBXb3J0aEZ1enppbmc6IFRydWUuIE15IEZvY3VzU3ltYm9scyBzaG91bGQgYmUgdGhvc2UgdGhyZWUgZnVuY3Rpb25zIEkgaWRlbnRpZmllZDogYHJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuYCwgYHJtbmV0X21hcF9pbmdyZXNzX2hhbmRsZXJgLCBhbmQgYHJtbmV0X21hcF9kZWFnZ3JlZ2F0ZWAuIEFuZCwgb2YgY291cnNlLCBJJ2xsIG5lZWQgdG8gRW5hYmxlQ29uZmlnczogYFJNTkVUYC5cblxuVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIGlzIG1vZGlmeWluZyBjcnVjaWFsIHBhY2tldCBsZW5ndGggdmFsaWRhdGlvbiBsb2dpYyB3aXRoaW4gdGhlIFJNTkVUIGRyaXZlcidzIGluZ3Jlc3MgcGF0aC4gVGhpcyBpcyBmdW5jdGlvbmFsIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgY29kZSB0aGF0J3MgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlcywgbWFraW5nIGl0IHJpcGUgZm9yIGZ1enppbmcuIEkgY2FuIHJlYWNoIHRoaXMgYnkgcHJvdmlkaW5nIGRpZmZlcmVudCBkYXRhIGludG8gYSB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlLCB3aGljaCBpcyBhIHBlcmZlY3QgdGFyZ2V0IGZvciBteSBleHBlcnRpc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5MzcsIk91dHB1dFRva2VucyI6MTA4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDAxOjA1OjQyLjAzMzQ5MzI3NVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NTQ4MzUzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUk1ORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJybW5ldF9tYXBfdmFsaWRhdGVfcGFja2V0X2xlblwiLFxuICAgIFwicm1uZXRfbWFwX2luZ3Jlc3NfaGFuZGxlclwiLFxuICAgIFwicm1uZXRfbWFwX2RlYWdncmVnYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcGFja2V0IGxlbmd0aCB2YWxpZGF0aW9uIGxvZ2ljIGluIHRoZSBSTU5FVCBkcml2ZXIncyBpbmdyZXNzIHBhdGguIFRoaXMgaXMgZnVuY3Rpb25hbCBuZXR3b3JrIHBhY2tldCBwcm9jZXNzaW5nIGNvZGUgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgdmlydHVhbCBuZXR3b3JrIGludGVyZmFjZXMgYW5kIGlzIGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSTU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJtbmV0X21hcF92YWxpZGF0ZV9wYWNrZXRfbGVuXCIsXG4gICAgXCJybW5ldF9tYXBfaW5ncmVzc19oYW5kbGVyXCIsXG4gICAgXCJybW5ldF9tYXBfZGVhZ2dyZWdhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBwYWNrZXQgbGVuZ3RoIHZhbGlkYXRpb24gbG9naWMgaW4gdGhlIFJNTkVUIGRyaXZlcidzIGluZ3Jlc3MgcGF0aC4gVGhpcyBpcyBmdW5jdGlvbmFsIG5ldHdvcmsgcGFja2V0IHByb2Nlc3NpbmcgY29kZSB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlcyBhbmQgaXMgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowwsff5[1] Phase: Succeeded StartedAt: 2026-07-01 01:05:53 +0000 UTC FinishedAt: 2026-07-01 01:05:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-01 01:05:53 +0000 UTC FinishedAt: 2026-07-01 01:05:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[2] Phase: Succeeded StartedAt: 2026-07-01 01:05:53 +0000 UTC FinishedAt: 2026-07-01 02:13:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-01 01:05:53 +0000 UTC FinishedAt: 2026-07-01 02:13:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-01 01:05:53 +0000 UTC FinishedAt: 2026-07-01 01:06:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-01 01:05:53 +0000 UTC FinishedAt: 2026-07-01 01:06:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwsff5/series-workflowwsff5-convert-artifact-3083068693/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-01 01:06:30 +0000 UTC FinishedAt: 2026-07-01 01:39:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-01 01:06:30 +0000 UTC FinishedAt: 2026-07-01 01:39:30 +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:*e12c9df0-62b4-4ac1-afb5-fa2b8d849146,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-workflowwsff5/series-workflowwsff5-convert-artifact-3083068693/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": "6c5c6174-f29f-4b65-8a6c-84099c9bacb3", "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-workflowwsff5/series-workflowwsff5-build-action-4035198331/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-01 01:06:30 +0000 UTC FinishedAt: 2026-07-01 01:39:06 +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:*e12c9df0-62b4-4ac1-afb5-fa2b8d849146,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-workflowwsff5/series-workflowwsff5-convert-artifact-3083068693/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": "6c5c6174-f29f-4b65-8a6c-84099c9bacb3", "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-workflowwsff5/series-workflowwsff5-build-action-4035198331/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-01 01:39:30 +0000 UTC FinishedAt: 2026-07-01 01:39:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-01 01:39:30 +0000 UTC FinishedAt: 2026-07-01 01:39:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-01 01:39:30 +0000 UTC FinishedAt: 2026-07-01 01:39:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-01 01:39:30 +0000 UTC FinishedAt: 2026-07-01 01:39:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwsff5/series-workflowwsff5-convert-artifact-3524552688/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-01 01:39:51 +0000 UTC FinishedAt: 2026-07-01 01:41:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-01 01:39:51 +0000 UTC FinishedAt: 2026-07-01 01:41:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6c5c6174-f29f-4b65-8a6c-84099c9bacb3,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-workflowwsff5/series-workflowwsff5-build-action-4035198331/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-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-01 01:41:53 +0000 UTC FinishedAt: 2026-07-01 01:41:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-01 01:41:53 +0000 UTC FinishedAt: 2026-07-01 01:41:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-01 01:41:53 +0000 UTC FinishedAt: 2026-07-01 02:08:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-01 01:41:53 +0000 UTC FinishedAt: 2026-07-01 02:08:20 +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:*e12c9df0-62b4-4ac1-afb5-fa2b8d849146,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-workflowwsff5/series-workflowwsff5-convert-artifact-3524552688/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": "f46bdb4f-0c32-40f3-a114-e27f88c9ed49", "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-workflowwsff5/series-workflowwsff5-build-action-1654573292/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-01 01:41:53 +0000 UTC FinishedAt: 2026-07-01 02:08: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:*e12c9df0-62b4-4ac1-afb5-fa2b8d849146,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-workflowwsff5/series-workflowwsff5-convert-artifact-3524552688/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": "f46bdb4f-0c32-40f3-a114-e27f88c9ed49", "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-workflowwsff5/series-workflowwsff5-build-action-1654573292/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-01 02:08:20 +0000 UTC FinishedAt: 2026-07-01 02:08:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-01 02:08:20 +0000 UTC FinishedAt: 2026-07-01 02:08:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-01 02:08:20 +0000 UTC FinishedAt: 2026-07-01 02:10:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-01 02:08:20 +0000 UTC FinishedAt: 2026-07-01 02:10:15 +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:*f46bdb4f-0c32-40f3-a114-e27f88c9ed49,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-workflowwsff5/series-workflowwsff5-build-action-1654573292/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-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-01 02:10:27 +0000 UTC FinishedAt: 2026-07-01 02:13:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-01 02:10:27 +0000 UTC FinishedAt: 2026-07-01 02:13:49 +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":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"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:*6c5c6174-f29f-4b65-8a6c-84099c9bacb3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f46bdb4f-0c32-40f3-a114-e27f88c9ed49,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-workflowwsff5/series-workflowwsff5-build-action-4035198331/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-workflowwsff5/series-workflowwsff5-build-action-1654573292/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-01 02:10:27 +0000 UTC FinishedAt: 2026-07-01 02:11:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-01 02:10:27 +0000 UTC FinishedAt: 2026-07-01 02:11:07 +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":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"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-workflowwsff5/series-workflowwsff5-convert-artifact-2957824617/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-01 02:10:27 +0000 UTC FinishedAt: 2026-07-01 02:10:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-01 02:10:27 +0000 UTC FinishedAt: 2026-07-01 02:10:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-01 02:10:27 +0000 UTC FinishedAt: 2026-07-01 02:10:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-01 02:11:15 +0000 UTC FinishedAt: 2026-07-01 02:13:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwsff5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rmnet_map_validate_packet_len","rmnet_map_ingress_handler","rmnet_map_deaggregate"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2a00517db8de4be7df3d483b215c5544fb30a191","config_name":"upstream-apparmor-kasan.config","enable_configs":["RMNET"],"series_id":"6afa2075-a610-4249-a2c4-808a35bdd30e","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-01 02:11:15 +0000 UTC FinishedAt: 2026-07-01 02:13:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6c5c6174-f29f-4b65-8a6c-84099c9bacb3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f46bdb4f-0c32-40f3-a114-e27f88c9ed49,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-workflowwsff5/series-workflowwsff5-build-action-4035198331/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-workflowwsff5/series-workflowwsff5-build-action-1654573292/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-workflowwsff5/series-workflowwsff5-convert-artifact-2957824617/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,}