Name: series-workflowzfbrv Phase: Succeeded StartedAt: 2026-07-15 22:45:18 +0000 UTC FinishedAt: 2026-07-16 04:17:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[0] Phase: Succeeded StartedAt: 2026-07-15 22:45:18 +0000 UTC FinishedAt: 2026-07-15 23:05:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[0].run-triage Phase: Succeeded StartedAt: 2026-07-15 22:45:18 +0000 UTC FinishedAt: 2026-07-15 23:05:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "ac798f757d6475dc6fee2ec899980d6740714596", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "ac798f757d6475dc6fee2ec899980d6740714596", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "e7babeed-582d-488e-80a7-23b7725e923f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_put_reg_conn", "ieee80211_add_link_elems", "ieee80211_send_assoc" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE1IDIzOjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3B1dF9yZWdfY29ubiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfYWRkX2xpbmtfZWxlbXMmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3NlbmRfYXNzb2MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBhZGRpbmcgdGhlIHJlZ3VsYXRvcnkgY29ubmVjdGl2aXR5IGVsZW1lbnQgdG8gYXNzb2NpYXRpb24gcmVxdWVzdHMgaW4gbWFjODAyMTEuIFRoaXMgaXMgcmVhY2hhYmxlIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGFmZmVjdHMgNkdIeiBiYW5kIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjM6MDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxM2NhZTg3MmQ0MzlkYzVlYTEyOTQ4MmFlMTg3Zjk1NjQzZThjNmRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMjM6MDU6MTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmggYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuaW5kZXggZDU4NTgyMDI0NWRkYjkuLjExZjQ0OWU4ZmYwMDNmIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXG5AQCAtMjc3MSw4ICYjNDM7Mjc3MSw4IEBAIGludCBpZWVlODAyMTFfcHV0X2VodF9jYXAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBpbnQgaWVlZTgwMjExX3B1dF91aHJfY2FwKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0XHQgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kKTtcbi1pbnQgaWVlZTgwMjExX3B1dF9yZWdfY29ubihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLVx0XHRcdCAgIGVudW0gaWVlZTgwMjExX2NoYW5uZWxfZmxhZ3MgZmxhZ3MpO1xuJiM0Mzt2b2lkIGllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4mIzQzO1x0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbiBcbiAvKiBjaGFubmVsIG1hbmFnZW1lbnQgKi9cbiBib29sIGllZWU4MDIxMV9jaGFuZGVmX2h0X29wZXIoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9odF9vcGVyYXRpb24gKmh0X29wZXIsXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL21sbWUuYyBiL25ldC9tYWM4MDIxMS9tbG1lLmNcbmluZGV4IDllOTIzMzdiYjZmOWU1Li4xYWZkYjYxMGRmZjI0OCAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9tbG1lLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9tbG1lLmNcbkBAIC0yMzA3LDEzICYjNDM7MjMwNywxNCBAQCBpZWVlODAyMTFfYWRkX2xpbmtfZWxlbXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHRvZmZzZXQgPSBpZWVlODAyMTFfYWRkX2JlZm9yZV9yZWdfY29ubihza2IsIGV4dHJhX2VsZW1zLFxuIFx0XHRcdFx0XHQgICAgICAgZXh0cmFfZWxlbXNfbGVuLCBvZmZzZXQpO1xuIFxuLVx0aWYgKHNiYW5kLVx1MDAzZWJhbmQgPT0gTkw4MDIxMV9CQU5EXzZHSFopIHtcbiYjNDM7XHQvKiBvbmx5IGFkZCB0aGlzIG9uIHRoZSBhc3NvYyBsaW5rLCBub3QgaW4gcGVyLVNUQSBwcm9maWxlcyAqL1xuJiM0MztcdGlmIChsaW5rKSB7XG4gXHRcdC8qXG4gXHRcdCAqIGFzIHBlciBTZWN0aW9uIEUuMi43IG9mIElFRUUgODAyLjExIFJFVm1lIEQ3LjAsIG5vbi1BUCBTVEFcbiBcdFx0ICogY2FwYWJsZSBvZiBvcGVyYXRpbmcgb24gdGhlIDYgR0h6IGJhbmQgc2hhbGwgdHJhbnNtaXRcbiBcdFx0ICogcmVndWxhdG9yeSBjb25uZWN0aXZpdHkgZWxlbWVudC5cbiBcdFx0ICovXG4tXHRcdGllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc2tiLCBjaGFuLVx1MDAzZWZsYWdzKTtcbiYjNDM7XHRcdGllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc2RhdGEsIHNrYik7XG4gXHR9XG4gXG4gXHQvKlxuQEAgLTI1NjQsMTEgJiM0MzsyNTY1LDggQEAgaWVlZTgwMjExX2xpbmtfY29tbW9uX2VsZW1zX3NpemUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHRcdHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2hlX21jc19uc3Nfc3VwcCkgJiM0MztcbiBcdFx0SUVFRTgwMjExX0hFX1BQRV9USFJFU19NQVhfTEVOO1xuIFxuLVx0aWYgKHNiYW5kLVx1MDAzZWJhbmQgPT0gTkw4MDIxMV9CQU5EXzZHSFopIHtcbiYjNDM7XHRpZiAoc2JhbmQtXHUwMDNlYmFuZCA9PSBOTDgwMjExX0JBTkRfNkdIWilcbiBcdFx0c2l6ZSAmIzQzOz0gMiAmIzQzOyAxICYjNDM7IHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2hlXzZnaHpfY2FwYSk7XG4tXHRcdC8qIHJlZyBjb25uZWN0aW9uICovXG4tXHRcdHNpemUgJiM0Mzs9IDQ7XG4tXHR9XG4gXG4gXHRzaXplICYjNDM7PSAyICYjNDM7IDEgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfZWh0X2NhcF9lbGVtKSAmIzQzO1xuIFx0XHRzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9laHRfbWNzX25zc19zdXBwKSAmIzQzO1xuQEAgLTI2MTUsNyAmIzQzOzI2MTMsOCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9zZW5kX2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuIFx0ICAgICAgIDIgJiM0MzsgYXNzb2NfZGF0YS1cdTAwM2Vzc2lkX2xlbiAmIzQzOyAvKiBTU0lEICovXG4gXHQgICAgICAgYXNzb2NfZGF0YS1cdTAwM2VpZV9sZW4gJiM0MzsgLyogZXh0cmEgSUVzICovXG4gXHQgICAgICAgKGFzc29jX2RhdGEtXHUwMDNlZmlsc19rZWtfbGVuID8gMTYgLyogQUVTLVNJViAqLyA6IDApICYjNDM7XG4tXHQgICAgICAgOTsgLyogV01NICovXG4mIzQzO1x0ICAgICAgIDkgLyogV01NICovICYjNDM7XG4mIzQzO1x0ICAgICAgIDQgLyogcmVndWxhdG9yeSBjb25uZWN0aXZpdHksIGlmIDYgR0h6IGlzIHN1cHBvcnRlZCAqLztcbiBcbiBcdGZvciAobGlua19pZCA9IDA7IGxpbmtfaWQgXHUwMDNjIElFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LUzsgbGlua19pZCYjNDM7JiM0MzspIHtcbiBcdFx0c3RydWN0IGNmZzgwMjExX2JzcyAqY2JzcyA9IGFzc29jX2RhdGEtXHUwMDNlbGlua1tsaW5rX2lkXS5ic3M7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3V0aWwuYyBiL25ldC9tYWM4MDIxMS91dGlsLmNcbmluZGV4IGY2ZDRhZTQxMjdjODczLi4zNGY1MDBkZWIyYzg3OCAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS91dGlsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS91dGlsLmNcbkBAIC0yNzAzLDEyICYjNDM7MjcwMywzMSBAQCBpbnQgaWVlZTgwMjExX3B1dF9oZV9jYXAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1pbnQgaWVlZTgwMjExX3B1dF9yZWdfY29ubihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLVx0XHRcdCAgIGVudW0gaWVlZTgwMjExX2NoYW5uZWxfZmxhZ3MgZmxhZ3MpXG4mIzQzO3ZvaWQgaWVlZTgwMjExX3B1dF9yZWdfY29ubihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiYjNDM7XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG4gXHR1OCByZWdfY29ubiA9IElFRUU4MDIxMV9SRUdfQ09OTl9MUElfVkFMSUQgfFxuIFx0XHQgICAgICBJRUVFODAyMTFfUkVHX0NPTk5fTFBJX1ZBTFVFIHxcbiBcdFx0ICAgICAgSUVFRTgwMjExX1JFR19DT05OX1NQX1ZBTElEO1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xuJiM0MztcdGJvb2wgYXZhaWxhYmxlX2NoYW5uZWxzID0gZmFsc2U7XG4mIzQzO1x0dTMyIGZsYWdzID0gMDtcbiYjNDM7XHRpbnQgaTtcbiYjNDM7XG4mIzQzO1x0c2JhbmQgPSBsb2NhbC1cdTAwM2Vody53aXBoeS1cdTAwM2ViYW5kc1tOTDgwMjExX0JBTkRfNkdIWl07XG4mIzQzO1x0aWYgKCFzYmFuZClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2Mgc2JhbmQtXHUwMDNlbl9jaGFubmVsczsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGlmIChzYmFuZC1cdTAwM2VjaGFubmVsc1tpXS5mbGFncyBcdTAwMjYgSUVFRTgwMjExX0NIQU5fRElTQUJMRUQpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0ZmxhZ3MgfD0gc2JhbmQtXHUwMDNlY2hhbm5lbHNbaV0uZmxhZ3M7XG4mIzQzO1x0XHRhdmFpbGFibGVfY2hhbm5lbHMgPSB0cnVlO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKCFhdmFpbGFibGVfY2hhbm5lbHMpXG4mIzQzO1x0XHRyZXR1cm47XG4gXG4gXHRpZiAoIShmbGFncyBcdTAwMjYgSUVFRTgwMjExX0NIQU5fTk9fNkdIWl9BRkNfQ0xJRU5UKSlcbiBcdFx0cmVnX2Nvbm4gfD0gSUVFRTgwMjExX1JFR19DT05OX1NQX1ZBTFVFO1xuQEAgLTI3MTcsNyAmIzQzOzI3MzYsNiBAQCBpbnQgaWVlZTgwMjExX3B1dF9yZWdfY29ubihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c2tiX3B1dF91OChza2IsIDEgJiM0Mzsgc2l6ZW9mKHJlZ19jb25uKSk7XG4gXHRza2JfcHV0X3U4KHNrYiwgV0xBTl9FSURfRVhUX05PTl9BUF9TVEFfUkVHX0NPTik7XG4gXHRza2JfcHV0X3U4KHNrYiwgcmVnX2Nvbm4pO1xuLVx0cmV0dXJuIDA7XG4gfVxuIFxuIGludCBpZWVlODAyMTFfcHV0X2hlXzZnaHpfY2FwKHN0cnVjdCBza19idWZmICpza2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjM6MDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfcHV0X3JlZ19jb25uJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hZGRfbGlua19lbGVtcyYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfc2VuZF9hc3NvYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGFkZGluZyB0aGUgcmVndWxhdG9yeSBjb25uZWN0aXZpdHkgZWxlbWVudCB0byBhc3NvY2lhdGlvbiByZXF1ZXN0cyBpbiBtYWM4MDIxMS4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIHRoYXQgYWZmZWN0cyA2R0h6IGJhbmQgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTNjYWU4NzJkNDM5ZGM1ZWExMjk0ODJhZTE4N2Y5NTY0M2U4YzZkZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDE1IDIzOjA1OjE0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmggYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaAppbmRleCBkNTg1ODIwMjQ1ZGRiOS4uMTFmNDQ5ZThmZjAwM2YgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCkBAIC0yNzcxLDggJiM0MzsyNzcxLDggQEAgaW50IGllZWU4MDIxMV9wdXRfZWh0X2NhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogaW50IGllZWU4MDIxMV9wdXRfdWhyX2NhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIAkJCSAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQpOwotaW50IGllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc3RydWN0IHNrX2J1ZmYgKnNrYiwKLQkJCSAgIGVudW0gaWVlZTgwMjExX2NoYW5uZWxfZmxhZ3MgZmxhZ3MpOwomIzQzO3ZvaWQgaWVlZTgwMjExX3B1dF9yZWdfY29ubihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKJiM0MzsJCQkgICAgc3RydWN0IHNrX2J1ZmYgKnNrYik7CiAKIC8qIGNoYW5uZWwgbWFuYWdlbWVudCAqLwogYm9vbCBpZWVlODAyMTFfY2hhbmRlZl9odF9vcGVyKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaHRfb3BlcmF0aW9uICpodF9vcGVyLApkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL21sbWUuYyBiL25ldC9tYWM4MDIxMS9tbG1lLmMKaW5kZXggOWU5MjMzN2JiNmY5ZTUuLjFhZmRiNjEwZGZmMjQ4IDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvbWxtZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9tbG1lLmMKQEAgLTIzMDcsMTMgJiM0MzsyMzA3LDE0IEBAIGllZWU4MDIxMV9hZGRfbGlua19lbGVtcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIAlvZmZzZXQgPSBpZWVlODAyMTFfYWRkX2JlZm9yZV9yZWdfY29ubihza2IsIGV4dHJhX2VsZW1zLAogCQkJCQkgICAgICAgZXh0cmFfZWxlbXNfbGVuLCBvZmZzZXQpOwogCi0JaWYgKHNiYW5kLSZndDtiYW5kID09IE5MODAyMTFfQkFORF82R0haKSB7CiYjNDM7CS8qIG9ubHkgYWRkIHRoaXMgb24gdGhlIGFzc29jIGxpbmssIG5vdCBpbiBwZXItU1RBIHByb2ZpbGVzICovCiYjNDM7CWlmIChsaW5rKSB7CiAJCS8qCiAJCSAqIGFzIHBlciBTZWN0aW9uIEUuMi43IG9mIElFRUUgODAyLjExIFJFVm1lIEQ3LjAsIG5vbi1BUCBTVEEKIAkJICogY2FwYWJsZSBvZiBvcGVyYXRpbmcgb24gdGhlIDYgR0h6IGJhbmQgc2hhbGwgdHJhbnNtaXQKIAkJICogcmVndWxhdG9yeSBjb25uZWN0aXZpdHkgZWxlbWVudC4KIAkJICovCi0JCWllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc2tiLCBjaGFuLSZndDtmbGFncyk7CiYjNDM7CQlpZWVlODAyMTFfcHV0X3JlZ19jb25uKHNkYXRhLCBza2IpOwogCX0KIAogCS8qCkBAIC0yNTY0LDExICYjNDM7MjU2NSw4IEBAIGllZWU4MDIxMV9saW5rX2NvbW1vbl9lbGVtc19zaXplKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLAogCQlzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9oZV9tY3NfbnNzX3N1cHApICYjNDM7CiAJCUlFRUU4MDIxMV9IRV9QUEVfVEhSRVNfTUFYX0xFTjsKIAotCWlmIChzYmFuZC0mZ3Q7YmFuZCA9PSBOTDgwMjExX0JBTkRfNkdIWikgewomIzQzOwlpZiAoc2JhbmQtJmd0O2JhbmQgPT0gTkw4MDIxMV9CQU5EXzZHSFopCiAJCXNpemUgJiM0Mzs9IDIgJiM0MzsgMSAmIzQzOyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9oZV82Z2h6X2NhcGEpOwotCQkvKiByZWcgY29ubmVjdGlvbiAqLwotCQlzaXplICYjNDM7PSA0OwotCX0KIAogCXNpemUgJiM0Mzs9IDIgJiM0MzsgMSAmIzQzOyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9laHRfY2FwX2VsZW0pICYjNDM7CiAJCXNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2VodF9tY3NfbnNzX3N1cHApICYjNDM7CkBAIC0yNjE1LDcgJiM0MzsyNjEzLDggQEAgc3RhdGljIGludCBpZWVlODAyMTFfc2VuZF9hc3NvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSkKIAkgICAgICAgMiAmIzQzOyBhc3NvY19kYXRhLSZndDtzc2lkX2xlbiAmIzQzOyAvKiBTU0lEICovCiAJICAgICAgIGFzc29jX2RhdGEtJmd0O2llX2xlbiAmIzQzOyAvKiBleHRyYSBJRXMgKi8KIAkgICAgICAgKGFzc29jX2RhdGEtJmd0O2ZpbHNfa2VrX2xlbiA/IDE2IC8qIEFFUy1TSVYgKi8gOiAwKSAmIzQzOwotCSAgICAgICA5OyAvKiBXTU0gKi8KJiM0MzsJICAgICAgIDkgLyogV01NICovICYjNDM7CiYjNDM7CSAgICAgICA0IC8qIHJlZ3VsYXRvcnkgY29ubmVjdGl2aXR5LCBpZiA2IEdIeiBpcyBzdXBwb3J0ZWQgKi87CiAKIAlmb3IgKGxpbmtfaWQgPSAwOyBsaW5rX2lkICZsdDsgSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTOyBsaW5rX2lkJiM0MzsmIzQzOykgewogCQlzdHJ1Y3QgY2ZnODAyMTFfYnNzICpjYnNzID0gYXNzb2NfZGF0YS0mZ3Q7bGlua1tsaW5rX2lkXS5ic3M7CmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdXRpbC5jIGIvbmV0L21hYzgwMjExL3V0aWwuYwppbmRleCBmNmQ0YWU0MTI3Yzg3My4uMzRmNTAwZGViMmM4NzggMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS91dGlsLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL3V0aWwuYwpAQCAtMjcwMywxMiAmIzQzOzI3MDMsMzEgQEAgaW50IGllZWU4MDIxMV9wdXRfaGVfY2FwKHN0cnVjdCBza19idWZmICpza2IsCiAJcmV0dXJuIDA7CiB9CiAKLWludCBpZWVlODAyMTFfcHV0X3JlZ19jb25uKHN0cnVjdCBza19idWZmICpza2IsCi0JCQkgICBlbnVtIGllZWU4MDIxMV9jaGFubmVsX2ZsYWdzIGZsYWdzKQomIzQzO3ZvaWQgaWVlZTgwMjExX3B1dF9yZWdfY29ubihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKJiM0MzsJCQkgICAgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKJiM0MzsJc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS0mZ3Q7bG9jYWw7CiAJdTggcmVnX2Nvbm4gPSBJRUVFODAyMTFfUkVHX0NPTk5fTFBJX1ZBTElEIHwKIAkJICAgICAgSUVFRTgwMjExX1JFR19DT05OX0xQSV9WQUxVRSB8CiAJCSAgICAgIElFRUU4MDIxMV9SRUdfQ09OTl9TUF9WQUxJRDsKJiM0MzsJc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7CiYjNDM7CWJvb2wgYXZhaWxhYmxlX2NoYW5uZWxzID0gZmFsc2U7CiYjNDM7CXUzMiBmbGFncyA9IDA7CiYjNDM7CWludCBpOwomIzQzOwomIzQzOwlzYmFuZCA9IGxvY2FsLSZndDtody53aXBoeS0mZ3Q7YmFuZHNbTkw4MDIxMV9CQU5EXzZHSFpdOwomIzQzOwlpZiAoIXNiYW5kKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgc2JhbmQtJmd0O25fY2hhbm5lbHM7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlpZiAoc2JhbmQtJmd0O2NoYW5uZWxzW2ldLmZsYWdzICZhbXA7IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwkJZmxhZ3MgfD0gc2JhbmQtJmd0O2NoYW5uZWxzW2ldLmZsYWdzOwomIzQzOwkJYXZhaWxhYmxlX2NoYW5uZWxzID0gdHJ1ZTsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoIWF2YWlsYWJsZV9jaGFubmVscykKJiM0MzsJCXJldHVybjsKIAogCWlmICghKGZsYWdzICZhbXA7IElFRUU4MDIxMV9DSEFOX05PXzZHSFpfQUZDX0NMSUVOVCkpCiAJCXJlZ19jb25uIHw9IElFRUU4MDIxMV9SRUdfQ09OTl9TUF9WQUxVRTsKQEAgLTI3MTcsNyAmIzQzOzI3MzYsNiBAQCBpbnQgaWVlZTgwMjExX3B1dF9yZWdfY29ubihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXNrYl9wdXRfdTgoc2tiLCAxICYjNDM7IHNpemVvZihyZWdfY29ubikpOwogCXNrYl9wdXRfdTgoc2tiLCBXTEFOX0VJRF9FWFRfTk9OX0FQX1NUQV9SRUdfQ09OKTsKIAlza2JfcHV0X3U4KHNrYiwgcmVnX2Nvbm4pOwotCXJldHVybiAwOwogfQogCiBpbnQgaWVlZTgwMjExX3B1dF9oZV82Z2h6X2NhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTQ5CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIGBtYWM4MDIxMWAgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHRvdWNoaW5nIHNvbWUgY29yZSBgbWFjODAyMTFgIGZpbGVzOiBgaWVlZTgwMjExX2kuaGAsIGBtbG1lLmNgLCBhbmQgYHV0aWwuY2AuIFJpZ2h0IG9mZiB0aGUgYmF0LCBpdCYjMzk7cyBtZXNzaW5nIHdpdGggdGhlIHNpZ25hdHVyZSBhbmQgbG9naWMgb2YgYGllZWU4MDIxMV9wdXRfcmVnX2Nvbm5gLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBhcyBzb21ldGhpbmcgcmVndWxhdG9yeS1yZWxhdGVkLCBkZWFsaW5nIHdpdGggdGhlIGNvbm5lY3Rpdml0eSBlbGVtZW50IGluIGFuIGFzc29jaWF0aW9uIHJlcXVlc3QsIEkgYXNzdW1lLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSwgYW5kIGdpdmVuIHRoYXQgdGhpcyBpcyBtYWM4MDIxMSwgaXQgaXMgcmVhZGlseSBhY2Nlc3NpYmxlIHdoZW4gdXNpbmcgYG1hYzgwMjExX2h3c2ltYCBpbiB2aXJ0dWFsIGVudmlyb25tZW50cy4KCkZpcnN0LCBJIG5lZWQgdG8gc2VlICpob3cqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgdXNlZC4gV2hlcmUgaXMgYGllZWU4MDIxMV9wdXRfcmVnX2Nvbm5gIGNhbGxlZCBmcm9tPyBBaCwgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBjYWxsZWQgd2l0aGluIGBpZWVlODAyMTFfYWRkX2xpbmtfZWxlbXNgLiBBbmQgdGhhdCwgaW4gdHVybiwgaXMgbW9zdCBsaWtlbHkgdXNlZCBpbiBgaWVlZTgwMjExX3NlbmRfYXNzb2NgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCB3aGljaCBjb25maXJtcyB0aGF0IGluaXRpYWwgYXNzb2NpYXRpb24gY29udGV4dCBJIHdhcyBhc3N1bWluZy4KCk5leHQsIEkgbmVlZCB0byBrbm93IHdoZXJlIHRoZSBob29rcyBhcmUuIFRoZSBuZXh0IHN0ZXAgaXMgZmlndXJpbmcgb3V0IHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGRyaXZlIHRoaXMgY29kZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2V0IHVwIHByb3Blcmx5IGZvciB0ZXN0aW5nIHRoaXMuIExldCBtZSBjaGVjayB0aGUga2VybmVsIGNvbmZpZyBvcHRpb25zIHJlbGF0ZWQgdG8gYG1hYzgwMjExYC4gUmlnaHQsIGBDT05GSUdfTUFDODAyMTFgIGlzIHRoZSBtYWluIG9uZSwgYXMgZXhwZWN0ZWQuCgpOb3csIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGNvZGUgZm9yIGBpZWVlODAyMTFfcHV0X3JlZ19jb25uYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGNoYW5nZXMgbWFkZSB0byB0aGF0IGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIzOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9wdXRfcmVnX2Nvbm4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI3NzE9aW50IGllZWU4MDIxMV9wdXRfdWhyX2NhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI3NzMtXHRcdFx0ICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZCk7XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyNzc0OnZvaWQgaWVlZTgwMjExX3B1dF9yZWdfY29ubihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI3NzUtXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MjE1Mz1pZWVlODAyMTFfYWRkX2xpbmtfZWxlbXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0yMzE2LVx0XHQgKi9cbm5ldC9tYWM4MDIxMS9tbG1lLmM6MjMxNzpcdFx0aWVlZTgwMjExX3B1dF9yZWdfY29ubihzZGF0YSwgc2tiKTtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjMxOC1cdH1cbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jPTI2Mzg9aW50IGllZWU4MDIxMV9wdXRfaGVfY2FwKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy0yNzA1LVxubmV0L21hYzgwMjExL3V0aWwuYzoyNzA2OnZvaWQgaWVlZTgwMjExX3B1dF9yZWdfY29ubihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjcwNy1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzQ3CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2g6IEZ1bmN0aW9uYWwgTG9naWMgYW5kIENvZGUgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gYGllZWU4MDIxMV9wdXRfcmVnX2Nvbm5gLiBJdCYjMzk7cyByZWZhY3RvcmluZyB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlLCBzd2FwcGluZyBgc2tiYCBhbmQgYGZsYWdzYCBmb3IgYHNkYXRhYCBhbmQgYHNrYmAg4oCTIHByb2JhYmx5IGZvciBiZXR0ZXIgZGF0YSBmbG93IGFuZCBjbGFyaXR5LCBsZXNzIGdsb2JhbCB2YXJpYWJsZSByZWxpYW5jZS4gIFRoZSBjcnVjaWFsIHBhcnQgaXMgaG93IGl0IGl0ZXJhdGVzIGFjcm9zcyB0aGUgNkdIeiBjaGFubmVscyB0byBkZXRlcm1pbmUgY2hhbm5lbCBhdmFpbGFiaWxpdHkgYW5kIHNldCB0aGUgYGZsYWdzYCBiYXNlZCBvbiB0aG9zZSBjaGVja3MuIFRoYXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhlIG5ldyBmdW5jdGlvbmFsaXR5IGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGxvZ2ljLgoKTm93IEkgbmVlZCB0byBzZWUgaG93IHRoaXMgbW9kaWZpZWQgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgdG8gY2hlY2sgYGllZWU4MDIxMV9hZGRfbGlua19lbGVtc2AgYW5kIGBpZWVlODAyMTFfc2VuZF9hc3NvY2AgaW4gYG5ldC9tYWM4MDIxMS9tbG1lLmNgLiBUaGVzZSBhcmUgbGlrZWx5IHdoZXJlIHRoZSBuZXcgYGllZWU4MDIxMV9wdXRfcmVnX2Nvbm5gIGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgd2hlcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlZCBgZmxhZ3NgIHdvdWxkIGJlIHByb2Nlc3NlZC4gVGhpcyBpcyB3aGVyZSB0aGUgcGF0Y2ggdG91Y2hlcyB0aGUgbWFuYWdlbWVudCBmcmFtZSBsb2dpYyBhbmQgdGhlIGFzc29jaWF0aW9uIHByb2Nlc3MsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2FkZF9saW5rX2VsZW1zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvbWxtZS5jPTIxNTI9c3RhdGljIHNpemVfdFxubmV0L21hYzgwMjExL21sbWUuYzoyMTUzOmllZWU4MDIxMV9hZGRfbGlua19lbGVtcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjE1NC1cdFx0XHQgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2ICpjYXBhYixcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTI0MTU9aWVlZTgwMjExX2Fzc29jX2FkZF9tbF9lbGVtKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjUwMS1cdFx0ICogbGF0ZXIpLCBmb2xsb3dlZCBieSB0aGUgZWxlbWVudHMgYWRkZWQgYmVsb3cgYnlcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MjUwMjpcdFx0ICogY2FsbGluZyBpZWVlODAyMTFfYWRkX2xpbmtfZWxlbXMoKS5cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjUwMy1cdFx0ICovXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0yNTA1LVxubmV0L21hYzgwMjExL21sbWUuYzoyNTA2Olx0XHRleHRyYV91c2VkID0gaWVlZTgwMjExX2FkZF9saW5rX2VsZW1zKHNkYXRhLCBza2IsIFx1MDAyNmNhcGFiLFxubmV0L21hYzgwMjExL21sbWUuYy0yNTA3LVx0XHRcdFx0XHRcdCAgICAgIGV4dF9jYXBhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MjU4MD1zdGF0aWMgaW50IGllZWU4MDIxMV9zZW5kX2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjcyMy1cdGxpbmtfY2FwYWIgPSBjYXBhYjtcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MjcyNDpcdG9mZnNldCA9IGllZWU4MDIxMV9hZGRfbGlua19lbGVtcyhzZGF0YSwgc2tiLCBcdTAwMjZsaW5rX2NhcGFiLFxubmV0L21hYzgwMjExL21sbWUuYy0yNzI1LVx0XHRcdFx0XHQgIGV4dF9jYXBhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTExMDA9aWVlZTgwMjExX2J1aWxkX21sX3JlY29uZl9yZXEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0xMTI5MS1cdFx0XHRleHRyYV91c2VkID1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTEyOTI6XHRcdFx0XHRpZWVlODAyMTFfYWRkX2xpbmtfZWxlbXMoc2RhdGEsIHNrYiwgXHUwMDI2Y2FwYWIsIE5VTEwsXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMjkzLVx0XHRcdFx0XHRcdFx0IGFkZF9saW5rc19kYXRhLVx1MDAzZWxpbmtbbGlua19pZF0uZWxlbXMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjM6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg2MgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgZm9jdXNpbmcgb24gdGhlIElFRUUgODAyLjExIHdpcmVsZXNzIHN0YW5kYXJkLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGFzc29jaWF0aW9uIHJlcXVlc3QgaGFuZGxpbmcuIEkgc2VlIGl0IG1vZGlmaWVzIGBpZWVlODAyMTFfcHV0X3JlZ19jb25uYCBhbmQgYGllZWU4MDIxMV9hZGRfbGlua19lbGVtc2AsIGJvdGggb2Ygd2hpY2ggYXJlIHRyaWdnZXJlZCBkdXJpbmcgdGhlIGFzc29jaWF0aW9uIHByb2Nlc3MuIFRoaXMgaXMgZ29vZDsgdGhlIGFzc29jaWF0aW9uIHByb2Nlc3MgaXMgYSBjb21tb24gcG9pbnQgb2YgZW50cnksIGFuZCB0aGVyZWZvcmUsIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyB0aGUgbG9naWMgaXMgbGlrZWx5IGNvbXBsZXggZW5vdWdoIHRvIGJlIHdvcnRoIGEgZGVlcCBkaXZlLiBJJiMzOTt2ZSBhbHJlYWR5IGdvdCBteSBzaWdodHMgc2V0IG9uIHRob3NlIGZ1bmN0aW9ucy4KCk15ICYjMzk7Rm9jdXNTeW1ib2xzJiMzOTsgYXJlIHJpZ2h0IG9uIHBvaW50LiBJIG5lZWQgdG8ga2VlcCB0aG9zZSBhdCB0aGUgZm9yZWZyb250IG9mIG15IGludmVzdGlnYXRpb24sIGVzcGVjaWFsbHkgdGhlIGBpZWVlODAyMTFfc2VuZF9hc3NvY2AgZnVuY3Rpb24sIHdoaWNoIGFwcGVhcnMgdG8gYmUgdGhlIHRyaWdnZXIgZm9yIHRoZXNlIG90aGVyIHJvdXRpbmVzLiBJIGFsc28gc2hvdWxkIGtlZXAgYE1BQzgwMjExYCBlbmFibGVkLgoKTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlnLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBrZXkgY29uZmlndXJhdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YgYmVmb3JlIG1vdmluZyBmb3J3YXJkLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55IGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIGluZmx1ZW5jZSB0aGUgYXR0YWNrIHN1cmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjE6Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xubmV0L21hYzgwMjExL0tjb25maWctMjItXHRib29sXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxubmV0L21hYzgwMjExL0tjb25maWctNDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1MDpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXHRzdHJpbmdcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFwmIzM0O1NvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxubmV0L21hYzgwMjExL0tjb25maWc6NjA6Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1Rcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIG1hYzgwMjExXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cdGJvb2wgXCYjMzQ7RW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNzgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xubmV0L21hYzgwMjExL0tjb25maWctODAtXHRib29sIFwmIzM0O0VuYWJsZSBMRUQgdHJpZ2dlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cdGJvb2wgXCYjMzQ7RXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cdGJvb2wgXCYjMzQ7VHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMTExLVx0Ym9vbCBcJiMzNDtTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTE2OmNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVx0Ym9vbCBcJiMzNDtEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXHRib29sIFwmIzM0O1ZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNTQ6Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTU1LVx0Ym9vbCBcJiMzNDtWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTY0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIEhUIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXHRib29sIFwmIzM0O1ZlcmJvc2UgT0NCIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4Njpjb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTg3LVx0Ym9vbCBcJiMzNDtWZXJib3NlIElCU1MgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTk4LVx0Ym9vbCBcJiMzNDtWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxubmV0L21hYzgwMjExL0tjb25maWc6MjIyOmNvbmZpZyBNQUM4MDIxMV9NUEFUSF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjIzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGF0aCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBURExTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5Mzpjb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cdGJvb2wgXCYjMzQ7RXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMzA3LVxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVx0aW50IFwmIzM0O1N0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcJiMzNDsgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIzOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0NjQKCQkJCQkJCW91dHB1dDogMTE5CgkJCQkJCQl0aG91Z2h0czogMjMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyBhbmQgQ2FsbCBHcmFwaHMqKgoKT2theSwgc28gdGhlIGJhc2UgY29uZmlndXJhdGlvbiBoZXJlIGlzIGBNQUM4MDIxMWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgd2UgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSByZWxhdGVkIGNvbmZpZ3MgdGhhdCBzaG91bGQgYWxzbyBiZSBlbmFibGVkIGFsb25nc2lkZSB0aGlzIG9uZS4gVGhlIGNvZGUgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGBOTDgwMjExX0JBTkRfNkdIWmAsIHdoaWNoLCBhcyBJIGtub3csIGlzIGEgcGFydCBvZiB0aGUgYGNmZzgwMjExYCBhbmQgYG1hYzgwMjExYCBmcmFtZXdvcmtzLiBIb3dldmVyLCBJIGRvbiYjMzk7dCBzZWUgYW55IG90aGVyICpleHBsaWNpdCogY29uZmlndXJhdGlvbnMgcGVydGFpbmluZyB0byA2R0h6IHRoYXQgaW1tZWRpYXRlbHkganVtcCBvdXQuCgpMZXQgbWUgcmV2aXNpdCBgaWVlZTgwMjExX3B1dF9yZWdfY29ubmAuIFVuZGVyc3RhbmRpbmcgaXRzIHVzYWdlIGlzIGtleS4gQWgsIGl0JiMzOTtzIGNhbGxlZCBieSBgaWVlZTgwMjExX2FkZF9saW5rX2VsZW1zYCwgd2hpY2ggaW4gdHVybiBpcyBjYWxsZWQgYnkgYGllZWU4MDIxMV9zZW5kX2Fzc29jYCwgd2hpY2ggaXRzZWxmIGlzIGNhbGxlZCBieSBgaWVlZTgwMjExX2J1aWxkX21sX3JlY29uZl9yZXFgLiBUaGF0IGNhbGwgZ3JhcGggcHJvdmlkZXMgYSBjbGVhciB2aWV3IG9mIGl0cyBmdW5jdGlvbi4KClRoZXJlZm9yZSwgSSB0aGluayBmb2N1c2luZyBvbiBgaWVlZTgwMjExX3B1dF9yZWdfY29ubmAgYW5kIGBpZWVlODAyMTFfYWRkX2xpbmtfZWxlbXNgIHdpbGwgZ2l2ZSBhIGdvb2QgdW5kZXJzdGFuZGluZywgYW5kIHRyYWNpbmcgdGhlIHBhdGggdGhyb3VnaCBgaWVlZTgwMjExX3NlbmRfYXNzb2NgIHdpbGwgYWxzbyBiZSBoZWxwZnVsLCB3aGljaCBjb3ZlcnMgdGhlIGNydWNpYWwgc3RlcHMgaGVyZS4KCk5vdywgSSB0aGluayBJIGhhdmUgYSBjbGVhciBwaWN0dXJlLiBMZXQmIzM5O3MgYHNldC1yZXN1bHRzYCBhbmQgbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfcHV0X3JlZ19jb25uJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hZGRfbGlua19lbGVtcyYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfc2VuZF9hc3NvYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGFkZGluZyB0aGUgcmVndWxhdG9yeSBjb25uZWN0aXZpdHkgZWxlbWVudCB0byBhc3NvY2lhdGlvbiByZXF1ZXN0cyBpbiBtYWM4MDIxMS4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIHRoYXQgYWZmZWN0cyA2R0h6IGJhbmQgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfcHV0X3JlZ19jb25uJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hZGRfbGlua19lbGVtcyYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfc2VuZF9hc3NvYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGFkZGluZyB0aGUgcmVndWxhdG9yeSBjb25uZWN0aXZpdHkgZWxlbWVudCB0byBhc3NvY2lhdGlvbiByZXF1ZXN0cyBpbiBtYWM4MDIxMS4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIHRoYXQgYWZmZWN0cyA2R0h6IGJhbmQgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIzOjA1OjE1LjU4ODI0OTIzNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTI0NDk1OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX3B1dF9yZWdfY29ublwiLFxuICAgIFwiaWVlZTgwMjExX2FkZF9saW5rX2VsZW1zXCIsXG4gICAgXCJpZWVlODAyMTFfc2VuZF9hc3NvY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgYWRkaW5nIHRoZSByZWd1bGF0b3J5IGNvbm5lY3Rpdml0eSBlbGVtZW50IHRvIGFzc29jaWF0aW9uIHJlcXVlc3RzIGluIG1hYzgwMjExLiBUaGlzIGlzIHJlYWNoYWJsZSBmdW5jdGlvbmFsIGNvZGUgdGhhdCBhZmZlY3RzIDZHSHogYmFuZCBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzowNToxNS41ODgyNTQ2ODVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNDgwMjM5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDEzY2FlODcyZDQzOWRjNWVhMTI5NDgyYWUxODdmOTU2NDNlOGM2ZGRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMTUgMjM6MDU6MTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmggYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxcbmluZGV4IGQ1ODU4MjAyNDVkZGI5Li4xMWY0NDllOGZmMDAzZiAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxcbisrKyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXFxuQEAgLTI3NzEsOCArMjc3MSw4IEBAIGludCBpZWVlODAyMTFfcHV0X2VodF9jYXAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gaW50IGllZWU4MDIxMV9wdXRfdWhyX2NhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHQgIHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbiBcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kKTtcXG4taW50IGllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tXFx0XFx0XFx0ICAgZW51bSBpZWVlODAyMTFfY2hhbm5lbF9mbGFncyBmbGFncyk7XFxuK3ZvaWQgaWVlZTgwMjExX3B1dF9yZWdfY29ubihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4rXFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpO1xcbiBcXG4gLyogY2hhbm5lbCBtYW5hZ2VtZW50ICovXFxuIGJvb2wgaWVlZTgwMjExX2NoYW5kZWZfaHRfb3Blcihjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2h0X29wZXJhdGlvbiAqaHRfb3BlcixcXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL21sbWUuYyBiL25ldC9tYWM4MDIxMS9tbG1lLmNcXG5pbmRleCA5ZTkyMzM3YmI2ZjllNS4uMWFmZGI2MTBkZmYyNDggMTAwNjQ0XFxuLS0tIGEvbmV0L21hYzgwMjExL21sbWUuY1xcbisrKyBiL25ldC9tYWM4MDIxMS9tbG1lLmNcXG5AQCAtMjMwNywxMyArMjMwNywxNCBAQCBpZWVlODAyMTFfYWRkX2xpbmtfZWxlbXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuIFxcdG9mZnNldCA9IGllZWU4MDIxMV9hZGRfYmVmb3JlX3JlZ19jb25uKHNrYiwgZXh0cmFfZWxlbXMsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgICBleHRyYV9lbGVtc19sZW4sIG9mZnNldCk7XFxuIFxcbi1cXHRpZiAoc2JhbmQtXFx1MDAzZWJhbmQgPT0gTkw4MDIxMV9CQU5EXzZHSFopIHtcXG4rXFx0Lyogb25seSBhZGQgdGhpcyBvbiB0aGUgYXNzb2MgbGluaywgbm90IGluIHBlci1TVEEgcHJvZmlsZXMgKi9cXG4rXFx0aWYgKGxpbmspIHtcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogYXMgcGVyIFNlY3Rpb24gRS4yLjcgb2YgSUVFRSA4MDIuMTEgUkVWbWUgRDcuMCwgbm9uLUFQIFNUQVxcbiBcXHRcXHQgKiBjYXBhYmxlIG9mIG9wZXJhdGluZyBvbiB0aGUgNiBHSHogYmFuZCBzaGFsbCB0cmFuc21pdFxcbiBcXHRcXHQgKiByZWd1bGF0b3J5IGNvbm5lY3Rpdml0eSBlbGVtZW50LlxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0aWVlZTgwMjExX3B1dF9yZWdfY29ubihza2IsIGNoYW4tXFx1MDAzZWZsYWdzKTtcXG4rXFx0XFx0aWVlZTgwMjExX3B1dF9yZWdfY29ubihzZGF0YSwgc2tiKTtcXG4gXFx0fVxcbiBcXG4gXFx0LypcXG5AQCAtMjU2NCwxMSArMjU2NSw4IEBAIGllZWU4MDIxMV9saW5rX2NvbW1vbl9lbGVtc19zaXplKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbiBcXHRcXHRzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9oZV9tY3NfbnNzX3N1cHApICtcXG4gXFx0XFx0SUVFRTgwMjExX0hFX1BQRV9USFJFU19NQVhfTEVOO1xcbiBcXG4tXFx0aWYgKHNiYW5kLVxcdTAwM2ViYW5kID09IE5MODAyMTFfQkFORF82R0haKSB7XFxuK1xcdGlmIChzYmFuZC1cXHUwMDNlYmFuZCA9PSBOTDgwMjExX0JBTkRfNkdIWilcXG4gXFx0XFx0c2l6ZSArPSAyICsgMSArIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2hlXzZnaHpfY2FwYSk7XFxuLVxcdFxcdC8qIHJlZyBjb25uZWN0aW9uICovXFxuLVxcdFxcdHNpemUgKz0gNDtcXG4tXFx0fVxcbiBcXG4gXFx0c2l6ZSArPSAyICsgMSArIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2VodF9jYXBfZWxlbSkgK1xcbiBcXHRcXHRzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9laHRfbWNzX25zc19zdXBwKSArXFxuQEAgLTI2MTUsNyArMjYxMyw4IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3NlbmRfYXNzb2Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuIFxcdCAgICAgICAyICsgYXNzb2NfZGF0YS1cXHUwMDNlc3NpZF9sZW4gKyAvKiBTU0lEICovXFxuIFxcdCAgICAgICBhc3NvY19kYXRhLVxcdTAwM2VpZV9sZW4gKyAvKiBleHRyYSBJRXMgKi9cXG4gXFx0ICAgICAgIChhc3NvY19kYXRhLVxcdTAwM2VmaWxzX2tla19sZW4gPyAxNiAvKiBBRVMtU0lWICovIDogMCkgK1xcbi1cXHQgICAgICAgOTsgLyogV01NICovXFxuK1xcdCAgICAgICA5IC8qIFdNTSAqLyArXFxuK1xcdCAgICAgICA0IC8qIHJlZ3VsYXRvcnkgY29ubmVjdGl2aXR5LCBpZiA2IEdIeiBpcyBzdXBwb3J0ZWQgKi87XFxuIFxcbiBcXHRmb3IgKGxpbmtfaWQgPSAwOyBsaW5rX2lkIFxcdTAwM2MgSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTOyBsaW5rX2lkKyspIHtcXG4gXFx0XFx0c3RydWN0IGNmZzgwMjExX2JzcyAqY2JzcyA9IGFzc29jX2RhdGEtXFx1MDAzZWxpbmtbbGlua19pZF0uYnNzO1xcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdXRpbC5jIGIvbmV0L21hYzgwMjExL3V0aWwuY1xcbmluZGV4IGY2ZDRhZTQxMjdjODczLi4zNGY1MDBkZWIyYzg3OCAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvdXRpbC5jXFxuKysrIGIvbmV0L21hYzgwMjExL3V0aWwuY1xcbkBAIC0yNzAzLDEyICsyNzAzLDMxIEBAIGludCBpZWVlODAyMTFfcHV0X2hlX2NhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4taW50IGllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tXFx0XFx0XFx0ICAgZW51bSBpZWVlODAyMTFfY2hhbm5lbF9mbGFncyBmbGFncylcXG4rdm9pZCBpZWVlODAyMTFfcHV0X3JlZ19jb25uKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbitcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbitcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG4gXFx0dTggcmVnX2Nvbm4gPSBJRUVFODAyMTFfUkVHX0NPTk5fTFBJX1ZBTElEIHxcXG4gXFx0XFx0ICAgICAgSUVFRTgwMjExX1JFR19DT05OX0xQSV9WQUxVRSB8XFxuIFxcdFxcdCAgICAgIElFRUU4MDIxMV9SRUdfQ09OTl9TUF9WQUxJRDtcXG4rXFx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7XFxuK1xcdGJvb2wgYXZhaWxhYmxlX2NoYW5uZWxzID0gZmFsc2U7XFxuK1xcdHUzMiBmbGFncyA9IDA7XFxuK1xcdGludCBpO1xcbitcXG4rXFx0c2JhbmQgPSBsb2NhbC1cXHUwMDNlaHcud2lwaHktXFx1MDAzZWJhbmRzW05MODAyMTFfQkFORF82R0haXTtcXG4rXFx0aWYgKCFzYmFuZClcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHNiYW5kLVxcdTAwM2VuX2NoYW5uZWxzOyBpKyspIHtcXG4rXFx0XFx0aWYgKHNiYW5kLVxcdTAwM2VjaGFubmVsc1tpXS5mbGFncyBcXHUwMDI2IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0ZmxhZ3MgfD0gc2JhbmQtXFx1MDAzZWNoYW5uZWxzW2ldLmZsYWdzO1xcbitcXHRcXHRhdmFpbGFibGVfY2hhbm5lbHMgPSB0cnVlO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoIWF2YWlsYWJsZV9jaGFubmVscylcXG4rXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0aWYgKCEoZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfQ0hBTl9OT182R0haX0FGQ19DTElFTlQpKVxcbiBcXHRcXHRyZWdfY29ubiB8PSBJRUVFODAyMTFfUkVHX0NPTk5fU1BfVkFMVUU7XFxuQEAgLTI3MTcsNyArMjczNiw2IEBAIGludCBpZWVlODAyMTFfcHV0X3JlZ19jb25uKHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHNrYl9wdXRfdTgoc2tiLCAxICsgc2l6ZW9mKHJlZ19jb25uKSk7XFxuIFxcdHNrYl9wdXRfdTgoc2tiLCBXTEFOX0VJRF9FWFRfTk9OX0FQX1NUQV9SRUdfQ09OKTtcXG4gXFx0c2tiX3B1dF91OChza2IsIHJlZ19jb25uKTtcXG4tXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIGludCBpZWVlODAyMTFfcHV0X2hlXzZnaHpfY2FwKHN0cnVjdCBza19idWZmICpza2IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIzOjA1OjE2LjA5NjEyNzYyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxOTQxNjYwNjAxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9wdXRfcmVnX2Nvbm5cIixcbiAgICBcImllZWU4MDIxMV9hZGRfbGlua19lbGVtc1wiLFxuICAgIFwiaWVlZTgwMjExX3NlbmRfYXNzb2NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGFkZGluZyB0aGUgcmVndWxhdG9yeSBjb25uZWN0aXZpdHkgZWxlbWVudCB0byBhc3NvY2lhdGlvbiByZXF1ZXN0cyBpbiBtYWM4MDIxMS4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIHRoYXQgYWZmZWN0cyA2R0h6IGJhbmQgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxM2NhZTg3MmQ0MzlkYzVlYTEyOTQ4MmFlMTg3Zjk1NjQzZThjNmRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMjM6MDU6MTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaCBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXG5pbmRleCBkNTg1ODIwMjQ1ZGRiOS4uMTFmNDQ5ZThmZjAwM2YgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuKysrIGIvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhcbkBAIC0yNzcxLDggKzI3NzEsOCBAQCBpbnQgaWVlZTgwMjExX3B1dF9laHRfY2FwKHN0cnVjdCBza19idWZmICpza2IsXG4gaW50IGllZWU4MDIxMV9wdXRfdWhyX2NhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHRcdFx0ICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZCk7XG4taW50IGllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc3RydWN0IHNrX2J1ZmYgKnNrYixcbi1cdFx0XHQgICBlbnVtIGllZWU4MDIxMV9jaGFubmVsX2ZsYWdzIGZsYWdzKTtcbit2b2lkIGllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4rXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpO1xuIFxuIC8qIGNoYW5uZWwgbWFuYWdlbWVudCAqL1xuIGJvb2wgaWVlZTgwMjExX2NoYW5kZWZfaHRfb3Blcihjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2h0X29wZXJhdGlvbiAqaHRfb3BlcixcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvbWxtZS5jIGIvbmV0L21hYzgwMjExL21sbWUuY1xuaW5kZXggOWU5MjMzN2JiNmY5ZTUuLjFhZmRiNjEwZGZmMjQ4IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL21sbWUuY1xuKysrIGIvbmV0L21hYzgwMjExL21sbWUuY1xuQEAgLTIzMDcsMTMgKzIzMDcsMTQgQEAgaWVlZTgwMjExX2FkZF9saW5rX2VsZW1zKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0b2Zmc2V0ID0gaWVlZTgwMjExX2FkZF9iZWZvcmVfcmVnX2Nvbm4oc2tiLCBleHRyYV9lbGVtcyxcbiBcdFx0XHRcdFx0ICAgICAgIGV4dHJhX2VsZW1zX2xlbiwgb2Zmc2V0KTtcbiBcbi1cdGlmIChzYmFuZC1cdTAwM2ViYW5kID09IE5MODAyMTFfQkFORF82R0haKSB7XG4rXHQvKiBvbmx5IGFkZCB0aGlzIG9uIHRoZSBhc3NvYyBsaW5rLCBub3QgaW4gcGVyLVNUQSBwcm9maWxlcyAqL1xuK1x0aWYgKGxpbmspIHtcbiBcdFx0LypcbiBcdFx0ICogYXMgcGVyIFNlY3Rpb24gRS4yLjcgb2YgSUVFRSA4MDIuMTEgUkVWbWUgRDcuMCwgbm9uLUFQIFNUQVxuIFx0XHQgKiBjYXBhYmxlIG9mIG9wZXJhdGluZyBvbiB0aGUgNiBHSHogYmFuZCBzaGFsbCB0cmFuc21pdFxuIFx0XHQgKiByZWd1bGF0b3J5IGNvbm5lY3Rpdml0eSBlbGVtZW50LlxuIFx0XHQgKi9cbi1cdFx0aWVlZTgwMjExX3B1dF9yZWdfY29ubihza2IsIGNoYW4tXHUwMDNlZmxhZ3MpO1xuK1x0XHRpZWVlODAyMTFfcHV0X3JlZ19jb25uKHNkYXRhLCBza2IpO1xuIFx0fVxuIFxuIFx0LypcbkBAIC0yNTY0LDExICsyNTY1LDggQEAgaWVlZTgwMjExX2xpbmtfY29tbW9uX2VsZW1zX3NpemUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHRcdHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2hlX21jc19uc3Nfc3VwcCkgK1xuIFx0XHRJRUVFODAyMTFfSEVfUFBFX1RIUkVTX01BWF9MRU47XG4gXG4tXHRpZiAoc2JhbmQtXHUwMDNlYmFuZCA9PSBOTDgwMjExX0JBTkRfNkdIWikge1xuK1x0aWYgKHNiYW5kLVx1MDAzZWJhbmQgPT0gTkw4MDIxMV9CQU5EXzZHSFopXG4gXHRcdHNpemUgKz0gMiArIDEgKyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9oZV82Z2h6X2NhcGEpO1xuLVx0XHQvKiByZWcgY29ubmVjdGlvbiAqL1xuLVx0XHRzaXplICs9IDQ7XG4tXHR9XG4gXG4gXHRzaXplICs9IDIgKyAxICsgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfZWh0X2NhcF9lbGVtKSArXG4gXHRcdHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2VodF9tY3NfbnNzX3N1cHApICtcbkBAIC0yNjE1LDcgKzI2MTMsOCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9zZW5kX2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuIFx0ICAgICAgIDIgKyBhc3NvY19kYXRhLVx1MDAzZXNzaWRfbGVuICsgLyogU1NJRCAqL1xuIFx0ICAgICAgIGFzc29jX2RhdGEtXHUwMDNlaWVfbGVuICsgLyogZXh0cmEgSUVzICovXG4gXHQgICAgICAgKGFzc29jX2RhdGEtXHUwMDNlZmlsc19rZWtfbGVuID8gMTYgLyogQUVTLVNJViAqLyA6IDApICtcbi1cdCAgICAgICA5OyAvKiBXTU0gKi9cbitcdCAgICAgICA5IC8qIFdNTSAqLyArXG4rXHQgICAgICAgNCAvKiByZWd1bGF0b3J5IGNvbm5lY3Rpdml0eSwgaWYgNiBHSHogaXMgc3VwcG9ydGVkICovO1xuIFxuIFx0Zm9yIChsaW5rX2lkID0gMDsgbGlua19pZCBcdTAwM2MgSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTOyBsaW5rX2lkKyspIHtcbiBcdFx0c3RydWN0IGNmZzgwMjExX2JzcyAqY2JzcyA9IGFzc29jX2RhdGEtXHUwMDNlbGlua1tsaW5rX2lkXS5ic3M7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3V0aWwuYyBiL25ldC9tYWM4MDIxMS91dGlsLmNcbmluZGV4IGY2ZDRhZTQxMjdjODczLi4zNGY1MDBkZWIyYzg3OCAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS91dGlsLmNcbisrKyBiL25ldC9tYWM4MDIxMS91dGlsLmNcbkBAIC0yNzAzLDEyICsyNzAzLDMxIEBAIGludCBpZWVlODAyMTFfcHV0X2hlX2NhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLWludCBpZWVlODAyMTFfcHV0X3JlZ19jb25uKHN0cnVjdCBza19idWZmICpza2IsXG4tXHRcdFx0ICAgZW51bSBpZWVlODAyMTFfY2hhbm5lbF9mbGFncyBmbGFncylcbit2b2lkIGllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4rXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuK1x0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbiBcdHU4IHJlZ19jb25uID0gSUVFRTgwMjExX1JFR19DT05OX0xQSV9WQUxJRCB8XG4gXHRcdCAgICAgIElFRUU4MDIxMV9SRUdfQ09OTl9MUElfVkFMVUUgfFxuIFx0XHQgICAgICBJRUVFODAyMTFfUkVHX0NPTk5fU1BfVkFMSUQ7XG4rXHRzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDtcbitcdGJvb2wgYXZhaWxhYmxlX2NoYW5uZWxzID0gZmFsc2U7XG4rXHR1MzIgZmxhZ3MgPSAwO1xuK1x0aW50IGk7XG4rXG4rXHRzYmFuZCA9IGxvY2FsLVx1MDAzZWh3LndpcGh5LVx1MDAzZWJhbmRzW05MODAyMTFfQkFORF82R0haXTtcbitcdGlmICghc2JhbmQpXG4rXHRcdHJldHVybjtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHNiYW5kLVx1MDAzZW5fY2hhbm5lbHM7IGkrKykge1xuK1x0XHRpZiAoc2JhbmQtXHUwMDNlY2hhbm5lbHNbaV0uZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHRmbGFncyB8PSBzYmFuZC1cdTAwM2VjaGFubmVsc1tpXS5mbGFncztcbitcdFx0YXZhaWxhYmxlX2NoYW5uZWxzID0gdHJ1ZTtcbitcdH1cbitcbitcdGlmICghYXZhaWxhYmxlX2NoYW5uZWxzKVxuK1x0XHRyZXR1cm47XG4gXG4gXHRpZiAoIShmbGFncyBcdTAwMjYgSUVFRTgwMjExX0NIQU5fTk9fNkdIWl9BRkNfQ0xJRU5UKSlcbiBcdFx0cmVnX2Nvbm4gfD0gSUVFRTgwMjExX1JFR19DT05OX1NQX1ZBTFVFO1xuQEAgLTI3MTcsNyArMjczNiw2IEBAIGludCBpZWVlODAyMTFfcHV0X3JlZ19jb25uKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRza2JfcHV0X3U4KHNrYiwgMSArIHNpemVvZihyZWdfY29ubikpO1xuIFx0c2tiX3B1dF91OChza2IsIFdMQU5fRUlEX0VYVF9OT05fQVBfU1RBX1JFR19DT04pO1xuIFx0c2tiX3B1dF91OChza2IsIHJlZ19jb25uKTtcbi1cdHJldHVybiAwO1xuIH1cbiBcbiBpbnQgaWVlZTgwMjExX3B1dF9oZV82Z2h6X2NhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjM6MDU6MTYuMDk2MTMwNDhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzI4NTM5MTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIGBtYWM4MDIxMWAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHRvdWNoaW5nIHNvbWUgY29yZSBgbWFjODAyMTFgIGZpbGVzOiBgaWVlZTgwMjExX2kuaGAsIGBtbG1lLmNgLCBhbmQgYHV0aWwuY2AuIFJpZ2h0IG9mZiB0aGUgYmF0LCBpdCdzIG1lc3Npbmcgd2l0aCB0aGUgc2lnbmF0dXJlIGFuZCBsb2dpYyBvZiBgaWVlZTgwMjExX3B1dF9yZWdfY29ubmAsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIGFzIHNvbWV0aGluZyByZWd1bGF0b3J5LXJlbGF0ZWQsIGRlYWxpbmcgd2l0aCB0aGUgY29ubmVjdGl2aXR5IGVsZW1lbnQgaW4gYW4gYXNzb2NpYXRpb24gcmVxdWVzdCwgSSBhc3N1bWUuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlLCBhbmQgZ2l2ZW4gdGhhdCB0aGlzIGlzIG1hYzgwMjExLCBpdCBpcyByZWFkaWx5IGFjY2Vzc2libGUgd2hlbiB1c2luZyBgbWFjODAyMTFfaHdzaW1gIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLlxuXG5GaXJzdCwgSSBuZWVkIHRvIHNlZSAqaG93KiB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQuIFdoZXJlIGlzIGBpZWVlODAyMTFfcHV0X3JlZ19jb25uYCBjYWxsZWQgZnJvbT8gQWgsIGl0IGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgd2l0aGluIGBpZWVlODAyMTFfYWRkX2xpbmtfZWxlbXNgLiBBbmQgdGhhdCwgaW4gdHVybiwgaXMgbW9zdCBsaWtlbHkgdXNlZCBpbiBgaWVlZTgwMjExX3NlbmRfYXNzb2NgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCB3aGljaCBjb25maXJtcyB0aGF0IGluaXRpYWwgYXNzb2NpYXRpb24gY29udGV4dCBJIHdhcyBhc3N1bWluZy5cblxuTmV4dCwgSSBuZWVkIHRvIGtub3cgd2hlcmUgdGhlIGhvb2tzIGFyZS4gVGhlIG5leHQgc3RlcCBpcyBmaWd1cmluZyBvdXQgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZHJpdmUgdGhpcyBjb2RlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBidWlsZCBlbnZpcm9ubWVudCBpcyBzZXQgdXAgcHJvcGVybHkgZm9yIHRlc3RpbmcgdGhpcy4gTGV0IG1lIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlnIG9wdGlvbnMgcmVsYXRlZCB0byBgbWFjODAyMTFgLiBSaWdodCwgYENPTkZJR19NQUM4MDIxMWAgaXMgdGhlIG1haW4gb25lLCBhcyBleHBlY3RlZC5cblxuTm93LCBsZXQncyBkaXZlIGludG8gdGhlIGNvZGUgZm9yIGBpZWVlODAyMTFfcHV0X3JlZ19jb25uYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGNoYW5nZXMgbWFkZSB0byB0aGF0IGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTQ5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjkwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjM6MDU6MjEuODI0NjcxNjU3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjU3NTMxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfcHV0X3JlZ19jb25uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9Mjc3MT1pbnQgaWVlZTgwMjExX3B1dF91aHJfY2FwKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yNzczLVxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQpO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI3NzQ6dm9pZCBpZWVlODAyMTFfcHV0X3JlZ19jb25uKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI3NzUtXFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz0yMTUzPWllZWU4MDIxMV9hZGRfbGlua19lbGVtcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjMxNi1cXHRcXHQgKi9cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjIzMTc6XFx0XFx0aWVlZTgwMjExX3B1dF9yZWdfY29ubihzZGF0YSwgc2tiKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTIzMTgtXFx0fVxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYz0yNjM4PWludCBpZWVlODAyMTFfcHV0X2hlX2NhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0yNzA1LVxcbm5ldC9tYWM4MDIxMS91dGlsLmM6MjcwNjp2b2lkIGllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL3V0aWwuYy0yNzA3LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzowNToyMS45ODEyNTM1NjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODI3MDg5NTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2g6IEZ1bmN0aW9uYWwgTG9naWMgYW5kIENvZGUgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbmFsIGNoYW5nZSB0byBgaWVlZTgwMjExX3B1dF9yZWdfY29ubmAuIEl0J3MgcmVmYWN0b3JpbmcgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSwgc3dhcHBpbmcgYHNrYmAgYW5kIGBmbGFnc2AgZm9yIGBzZGF0YWAgYW5kIGBza2JgIOKAkyBwcm9iYWJseSBmb3IgYmV0dGVyIGRhdGEgZmxvdyBhbmQgY2xhcml0eSwgbGVzcyBnbG9iYWwgdmFyaWFibGUgcmVsaWFuY2UuICBUaGUgY3J1Y2lhbCBwYXJ0IGlzIGhvdyBpdCBpdGVyYXRlcyBhY3Jvc3MgdGhlIDZHSHogY2hhbm5lbHMgdG8gZGV0ZXJtaW5lIGNoYW5uZWwgYXZhaWxhYmlsaXR5IGFuZCBzZXQgdGhlIGBmbGFnc2AgYmFzZWQgb24gdGhvc2UgY2hlY2tzLiBUaGF0J3MgdGhlIGNvcmUgb2YgdGhlIG5ldyBmdW5jdGlvbmFsaXR5IGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGxvZ2ljLlxuXG5Ob3cgSSBuZWVkIHRvIHNlZSBob3cgdGhpcyBtb2RpZmllZCBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkgbmVlZCB0byBjaGVjayBgaWVlZTgwMjExX2FkZF9saW5rX2VsZW1zYCBhbmQgYGllZWU4MDIxMV9zZW5kX2Fzc29jYCBpbiBgbmV0L21hYzgwMjExL21sbWUuY2AuIFRoZXNlIGFyZSBsaWtlbHkgd2hlcmUgdGhlIG5ldyBgaWVlZTgwMjExX3B1dF9yZWdfY29ubmAgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCB3aGVyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaGFuZ2VkIGBmbGFnc2Agd291bGQgYmUgcHJvY2Vzc2VkLiBUaGlzIGlzIHdoZXJlIHRoZSBwYXRjaCB0b3VjaGVzIHRoZSBtYW5hZ2VtZW50IGZyYW1lIGxvZ2ljIGFuZCB0aGUgYXNzb2NpYXRpb24gcHJvY2Vzcywgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc0NywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzowNToyNS44MDgzNDU2NTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2OTY1NTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9hZGRfbGlua19lbGVtc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9tbG1lLmM9MjE1Mj1zdGF0aWMgc2l6ZV90XFxubmV0L21hYzgwMjExL21sbWUuYzoyMTUzOmllZWU4MDIxMV9hZGRfbGlua19lbGVtcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTIxNTQtXFx0XFx0XFx0IHN0cnVjdCBza19idWZmICpza2IsIHUxNiAqY2FwYWIsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTI0MTU9aWVlZTgwMjExX2Fzc29jX2FkZF9tbF9lbGVtKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0yNTAxLVxcdFxcdCAqIGxhdGVyKSwgZm9sbG93ZWQgYnkgdGhlIGVsZW1lbnRzIGFkZGVkIGJlbG93IGJ5XFxubmV0L21hYzgwMjExL21sbWUuYzoyNTAyOlxcdFxcdCAqIGNhbGxpbmcgaWVlZTgwMjExX2FkZF9saW5rX2VsZW1zKCkuXFxubmV0L21hYzgwMjExL21sbWUuYy0yNTAzLVxcdFxcdCAqL1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0yNTA1LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MjUwNjpcXHRcXHRleHRyYV91c2VkID0gaWVlZTgwMjExX2FkZF9saW5rX2VsZW1zKHNkYXRhLCBza2IsIFxcdTAwMjZjYXBhYixcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI1MDctXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgZXh0X2NhcGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTI1ODA9c3RhdGljIGludCBpZWVlODAyMTFfc2VuZF9hc3NvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjcyMy1cXHRsaW5rX2NhcGFiID0gY2FwYWI7XFxubmV0L21hYzgwMjExL21sbWUuYzoyNzI0OlxcdG9mZnNldCA9IGllZWU4MDIxMV9hZGRfbGlua19lbGVtcyhzZGF0YSwgc2tiLCBcXHUwMDI2bGlua19jYXBhYixcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI3MjUtXFx0XFx0XFx0XFx0XFx0ICBleHRfY2FwYSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTExMDA9aWVlZTgwMjExX2J1aWxkX21sX3JlY29uZl9yZXEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMjkxLVxcdFxcdFxcdGV4dHJhX3VzZWQgPVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTEyOTI6XFx0XFx0XFx0XFx0aWVlZTgwMjExX2FkZF9saW5rX2VsZW1zKHNkYXRhLCBza2IsIFxcdTAwMjZjYXBhYiwgTlVMTCxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMjkzLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCBhZGRfbGlua3NfZGF0YS1cXHUwMDNlbGlua1tsaW5rX2lkXS5lbGVtcyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjM6MDU6MjYuMDk1MzE3MDIyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5MDY0MjQzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBmb2N1c2luZyBvbiB0aGUgSUVFRSA4MDIuMTEgd2lyZWxlc3Mgc3RhbmRhcmQsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgYXNzb2NpYXRpb24gcmVxdWVzdCBoYW5kbGluZy4gSSBzZWUgaXQgbW9kaWZpZXMgYGllZWU4MDIxMV9wdXRfcmVnX2Nvbm5gIGFuZCBgaWVlZTgwMjExX2FkZF9saW5rX2VsZW1zYCwgYm90aCBvZiB3aGljaCBhcmUgdHJpZ2dlcmVkIGR1cmluZyB0aGUgYXNzb2NpYXRpb24gcHJvY2Vzcy4gVGhpcyBpcyBnb29kOyB0aGUgYXNzb2NpYXRpb24gcHJvY2VzcyBpcyBhIGNvbW1vbiBwb2ludCBvZiBlbnRyeSwgYW5kIHRoZXJlZm9yZSwgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc28gdGhlIGxvZ2ljIGlzIGxpa2VseSBjb21wbGV4IGVub3VnaCB0byBiZSB3b3J0aCBhIGRlZXAgZGl2ZS4gSSd2ZSBhbHJlYWR5IGdvdCBteSBzaWdodHMgc2V0IG9uIHRob3NlIGZ1bmN0aW9ucy5cblxuTXkgJ0ZvY3VzU3ltYm9scycgYXJlIHJpZ2h0IG9uIHBvaW50LiBJIG5lZWQgdG8ga2VlcCB0aG9zZSBhdCB0aGUgZm9yZWZyb250IG9mIG15IGludmVzdGlnYXRpb24sIGVzcGVjaWFsbHkgdGhlIGBpZWVlODAyMTFfc2VuZF9hc3NvY2AgZnVuY3Rpb24sIHdoaWNoIGFwcGVhcnMgdG8gYmUgdGhlIHRyaWdnZXIgZm9yIHRoZXNlIG90aGVyIHJvdXRpbmVzLiBJIGFsc28gc2hvdWxkIGtlZXAgYE1BQzgwMjExYCBlbmFibGVkLlxuXG5Ob3csIGxldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgb25seSByZWxldmFudCBjb25maWcsIGFuZCBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGtleSBjb25maWd1cmF0aW9ucyBJIHNob3VsZCBiZSBhd2FyZSBvZiBiZWZvcmUgbW92aW5nIGZvcndhcmQuIEkgd2FudCB0byBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueSBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCBpbmZsdWVuY2UgdGhlIGF0dGFjayBzdXJmYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODYyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIzOjA1OjI5Ljg4NTk2MTM5OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzkyMTUxNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cXHRib29sXFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXFxubmV0L21hYzgwMjExL0tjb25maWctNDktXFxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cXHRzdHJpbmdcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXFxcIlNvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBtYWM4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cXHRib29sIFxcXCJFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIkVuYWJsZSBMRUQgdHJpZ2dlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkV4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cXHRib29sIFxcXCJUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXFxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cXHRib29sIFxcXCJTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXFx0Ym9vbCBcXFwiRG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cXHRib29sIFxcXCJWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiVmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTY0LVxcdGJvb2wgXFxcIlZlcmJvc2UgSFQgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTc2LVxcdGJvb2wgXFxcIlZlcmJvc2UgT0NCIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXFx0Ym9vbCBcXFwiVmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTk4LVxcdGJvb2wgXFxcIlZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjEwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXFx0Ym9vbCBcXFwiVmVyYm9zZSBURExTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXFxubmV0L21hYzgwMjExL0tjb25maWctMjk0LVxcdGJvb2wgXFxcIkV4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXFxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVxcdGludCBcXFwiU3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVxcXCIgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzowNTozMC4xNjUxODIzNDRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDIxNjU5MjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyBhbmQgQ2FsbCBHcmFwaHMqKlxuXG5Pa2F5LCBzbyB0aGUgYmFzZSBjb25maWd1cmF0aW9uIGhlcmUgaXMgYE1BQzgwMjExYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlbid0IG1pc3NlZCBhbnkgcmVsYXRlZCBjb25maWdzIHRoYXQgc2hvdWxkIGFsc28gYmUgZW5hYmxlZCBhbG9uZ3NpZGUgdGhpcyBvbmUuIFRoZSBjb2RlIHNwZWNpZmljYWxseSBtZW50aW9ucyBgTkw4MDIxMV9CQU5EXzZHSFpgLCB3aGljaCwgYXMgSSBrbm93LCBpcyBhIHBhcnQgb2YgdGhlIGBjZmc4MDIxMWAgYW5kIGBtYWM4MDIxMWAgZnJhbWV3b3Jrcy4gSG93ZXZlciwgSSBkb24ndCBzZWUgYW55IG90aGVyICpleHBsaWNpdCogY29uZmlndXJhdGlvbnMgcGVydGFpbmluZyB0byA2R0h6IHRoYXQgaW1tZWRpYXRlbHkganVtcCBvdXQuXG5cbkxldCBtZSByZXZpc2l0IGBpZWVlODAyMTFfcHV0X3JlZ19jb25uYC4gVW5kZXJzdGFuZGluZyBpdHMgdXNhZ2UgaXMga2V5LiBBaCwgaXQncyBjYWxsZWQgYnkgYGllZWU4MDIxMV9hZGRfbGlua19lbGVtc2AsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGBpZWVlODAyMTFfc2VuZF9hc3NvY2AsIHdoaWNoIGl0c2VsZiBpcyBjYWxsZWQgYnkgYGllZWU4MDIxMV9idWlsZF9tbF9yZWNvbmZfcmVxYC4gVGhhdCBjYWxsIGdyYXBoIHByb3ZpZGVzIGEgY2xlYXIgdmlldyBvZiBpdHMgZnVuY3Rpb24uXG5cblRoZXJlZm9yZSwgSSB0aGluayBmb2N1c2luZyBvbiBgaWVlZTgwMjExX3B1dF9yZWdfY29ubmAgYW5kIGBpZWVlODAyMTFfYWRkX2xpbmtfZWxlbXNgIHdpbGwgZ2l2ZSBhIGdvb2QgdW5kZXJzdGFuZGluZywgYW5kIHRyYWNpbmcgdGhlIHBhdGggdGhyb3VnaCBgaWVlZTgwMjExX3NlbmRfYXNzb2NgIHdpbGwgYWxzbyBiZSBoZWxwZnVsLCB3aGljaCBjb3ZlcnMgdGhlIGNydWNpYWwgc3RlcHMgaGVyZS5cblxuTm93LCBJIHRoaW5rIEkgaGF2ZSBhIGNsZWFyIHBpY3R1cmUuIExldCdzIGBzZXQtcmVzdWx0c2AgYW5kIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ2NCwiT3V0cHV0VG9rZW5zIjoxMTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjM6MDU6MzUuMTg2ODQ0NDIzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI1ODgxOTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9wdXRfcmVnX2Nvbm5cIixcbiAgICBcImllZWU4MDIxMV9hZGRfbGlua19lbGVtc1wiLFxuICAgIFwiaWVlZTgwMjExX3NlbmRfYXNzb2NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGFkZGluZyB0aGUgcmVndWxhdG9yeSBjb25uZWN0aXZpdHkgZWxlbWVudCB0byBhc3NvY2lhdGlvbiByZXF1ZXN0cyBpbiBtYWM4MDIxMS4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIHRoYXQgYWZmZWN0cyA2R0h6IGJhbmQgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9wdXRfcmVnX2Nvbm5cIixcbiAgICBcImllZWU4MDIxMV9hZGRfbGlua19lbGVtc1wiLFxuICAgIFwiaWVlZTgwMjExX3NlbmRfYXNzb2NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGFkZGluZyB0aGUgcmVndWxhdG9yeSBjb25uZWN0aXZpdHkgZWxlbWVudCB0byBhc3NvY2lhdGlvbiByZXF1ZXN0cyBpbiBtYWM4MDIxMS4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIHRoYXQgYWZmZWN0cyA2R0h6IGJhbmQgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzfbrv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-15 22:45:18 +0000 UTC FinishedAt: 2026-07-15 23:05:37 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "ac798f757d6475dc6fee2ec899980d6740714596", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "ac798f757d6475dc6fee2ec899980d6740714596", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "e7babeed-582d-488e-80a7-23b7725e923f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_put_reg_conn", "ieee80211_add_link_elems", "ieee80211_send_assoc" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE1IDIzOjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX3B1dF9yZWdfY29ubiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfYWRkX2xpbmtfZWxlbXMmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3NlbmRfYXNzb2MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBhZGRpbmcgdGhlIHJlZ3VsYXRvcnkgY29ubmVjdGl2aXR5IGVsZW1lbnQgdG8gYXNzb2NpYXRpb24gcmVxdWVzdHMgaW4gbWFjODAyMTEuIFRoaXMgaXMgcmVhY2hhYmxlIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGFmZmVjdHMgNkdIeiBiYW5kIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjM6MDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxM2NhZTg3MmQ0MzlkYzVlYTEyOTQ4MmFlMTg3Zjk1NjQzZThjNmRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMjM6MDU6MTQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmggYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuaW5kZXggZDU4NTgyMDI0NWRkYjkuLjExZjQ0OWU4ZmYwMDNmIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXG5AQCAtMjc3MSw4ICYjNDM7Mjc3MSw4IEBAIGludCBpZWVlODAyMTFfcHV0X2VodF9jYXAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBpbnQgaWVlZTgwMjExX3B1dF91aHJfY2FwKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0XHQgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kKTtcbi1pbnQgaWVlZTgwMjExX3B1dF9yZWdfY29ubihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLVx0XHRcdCAgIGVudW0gaWVlZTgwMjExX2NoYW5uZWxfZmxhZ3MgZmxhZ3MpO1xuJiM0Mzt2b2lkIGllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4mIzQzO1x0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbiBcbiAvKiBjaGFubmVsIG1hbmFnZW1lbnQgKi9cbiBib29sIGllZWU4MDIxMV9jaGFuZGVmX2h0X29wZXIoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9odF9vcGVyYXRpb24gKmh0X29wZXIsXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL21sbWUuYyBiL25ldC9tYWM4MDIxMS9tbG1lLmNcbmluZGV4IDllOTIzMzdiYjZmOWU1Li4xYWZkYjYxMGRmZjI0OCAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9tbG1lLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9tbG1lLmNcbkBAIC0yMzA3LDEzICYjNDM7MjMwNywxNCBAQCBpZWVlODAyMTFfYWRkX2xpbmtfZWxlbXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHRvZmZzZXQgPSBpZWVlODAyMTFfYWRkX2JlZm9yZV9yZWdfY29ubihza2IsIGV4dHJhX2VsZW1zLFxuIFx0XHRcdFx0XHQgICAgICAgZXh0cmFfZWxlbXNfbGVuLCBvZmZzZXQpO1xuIFxuLVx0aWYgKHNiYW5kLVx1MDAzZWJhbmQgPT0gTkw4MDIxMV9CQU5EXzZHSFopIHtcbiYjNDM7XHQvKiBvbmx5IGFkZCB0aGlzIG9uIHRoZSBhc3NvYyBsaW5rLCBub3QgaW4gcGVyLVNUQSBwcm9maWxlcyAqL1xuJiM0MztcdGlmIChsaW5rKSB7XG4gXHRcdC8qXG4gXHRcdCAqIGFzIHBlciBTZWN0aW9uIEUuMi43IG9mIElFRUUgODAyLjExIFJFVm1lIEQ3LjAsIG5vbi1BUCBTVEFcbiBcdFx0ICogY2FwYWJsZSBvZiBvcGVyYXRpbmcgb24gdGhlIDYgR0h6IGJhbmQgc2hhbGwgdHJhbnNtaXRcbiBcdFx0ICogcmVndWxhdG9yeSBjb25uZWN0aXZpdHkgZWxlbWVudC5cbiBcdFx0ICovXG4tXHRcdGllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc2tiLCBjaGFuLVx1MDAzZWZsYWdzKTtcbiYjNDM7XHRcdGllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc2RhdGEsIHNrYik7XG4gXHR9XG4gXG4gXHQvKlxuQEAgLTI1NjQsMTEgJiM0MzsyNTY1LDggQEAgaWVlZTgwMjExX2xpbmtfY29tbW9uX2VsZW1zX3NpemUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHRcdHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2hlX21jc19uc3Nfc3VwcCkgJiM0MztcbiBcdFx0SUVFRTgwMjExX0hFX1BQRV9USFJFU19NQVhfTEVOO1xuIFxuLVx0aWYgKHNiYW5kLVx1MDAzZWJhbmQgPT0gTkw4MDIxMV9CQU5EXzZHSFopIHtcbiYjNDM7XHRpZiAoc2JhbmQtXHUwMDNlYmFuZCA9PSBOTDgwMjExX0JBTkRfNkdIWilcbiBcdFx0c2l6ZSAmIzQzOz0gMiAmIzQzOyAxICYjNDM7IHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2hlXzZnaHpfY2FwYSk7XG4tXHRcdC8qIHJlZyBjb25uZWN0aW9uICovXG4tXHRcdHNpemUgJiM0Mzs9IDQ7XG4tXHR9XG4gXG4gXHRzaXplICYjNDM7PSAyICYjNDM7IDEgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfZWh0X2NhcF9lbGVtKSAmIzQzO1xuIFx0XHRzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9laHRfbWNzX25zc19zdXBwKSAmIzQzO1xuQEAgLTI2MTUsNyAmIzQzOzI2MTMsOCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9zZW5kX2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuIFx0ICAgICAgIDIgJiM0MzsgYXNzb2NfZGF0YS1cdTAwM2Vzc2lkX2xlbiAmIzQzOyAvKiBTU0lEICovXG4gXHQgICAgICAgYXNzb2NfZGF0YS1cdTAwM2VpZV9sZW4gJiM0MzsgLyogZXh0cmEgSUVzICovXG4gXHQgICAgICAgKGFzc29jX2RhdGEtXHUwMDNlZmlsc19rZWtfbGVuID8gMTYgLyogQUVTLVNJViAqLyA6IDApICYjNDM7XG4tXHQgICAgICAgOTsgLyogV01NICovXG4mIzQzO1x0ICAgICAgIDkgLyogV01NICovICYjNDM7XG4mIzQzO1x0ICAgICAgIDQgLyogcmVndWxhdG9yeSBjb25uZWN0aXZpdHksIGlmIDYgR0h6IGlzIHN1cHBvcnRlZCAqLztcbiBcbiBcdGZvciAobGlua19pZCA9IDA7IGxpbmtfaWQgXHUwMDNjIElFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LUzsgbGlua19pZCYjNDM7JiM0MzspIHtcbiBcdFx0c3RydWN0IGNmZzgwMjExX2JzcyAqY2JzcyA9IGFzc29jX2RhdGEtXHUwMDNlbGlua1tsaW5rX2lkXS5ic3M7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3V0aWwuYyBiL25ldC9tYWM4MDIxMS91dGlsLmNcbmluZGV4IGY2ZDRhZTQxMjdjODczLi4zNGY1MDBkZWIyYzg3OCAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS91dGlsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS91dGlsLmNcbkBAIC0yNzAzLDEyICYjNDM7MjcwMywzMSBAQCBpbnQgaWVlZTgwMjExX3B1dF9oZV9jYXAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1pbnQgaWVlZTgwMjExX3B1dF9yZWdfY29ubihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLVx0XHRcdCAgIGVudW0gaWVlZTgwMjExX2NoYW5uZWxfZmxhZ3MgZmxhZ3MpXG4mIzQzO3ZvaWQgaWVlZTgwMjExX3B1dF9yZWdfY29ubihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiYjNDM7XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG4gXHR1OCByZWdfY29ubiA9IElFRUU4MDIxMV9SRUdfQ09OTl9MUElfVkFMSUQgfFxuIFx0XHQgICAgICBJRUVFODAyMTFfUkVHX0NPTk5fTFBJX1ZBTFVFIHxcbiBcdFx0ICAgICAgSUVFRTgwMjExX1JFR19DT05OX1NQX1ZBTElEO1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xuJiM0MztcdGJvb2wgYXZhaWxhYmxlX2NoYW5uZWxzID0gZmFsc2U7XG4mIzQzO1x0dTMyIGZsYWdzID0gMDtcbiYjNDM7XHRpbnQgaTtcbiYjNDM7XG4mIzQzO1x0c2JhbmQgPSBsb2NhbC1cdTAwM2Vody53aXBoeS1cdTAwM2ViYW5kc1tOTDgwMjExX0JBTkRfNkdIWl07XG4mIzQzO1x0aWYgKCFzYmFuZClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2Mgc2JhbmQtXHUwMDNlbl9jaGFubmVsczsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGlmIChzYmFuZC1cdTAwM2VjaGFubmVsc1tpXS5mbGFncyBcdTAwMjYgSUVFRTgwMjExX0NIQU5fRElTQUJMRUQpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0ZmxhZ3MgfD0gc2JhbmQtXHUwMDNlY2hhbm5lbHNbaV0uZmxhZ3M7XG4mIzQzO1x0XHRhdmFpbGFibGVfY2hhbm5lbHMgPSB0cnVlO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKCFhdmFpbGFibGVfY2hhbm5lbHMpXG4mIzQzO1x0XHRyZXR1cm47XG4gXG4gXHRpZiAoIShmbGFncyBcdTAwMjYgSUVFRTgwMjExX0NIQU5fTk9fNkdIWl9BRkNfQ0xJRU5UKSlcbiBcdFx0cmVnX2Nvbm4gfD0gSUVFRTgwMjExX1JFR19DT05OX1NQX1ZBTFVFO1xuQEAgLTI3MTcsNyAmIzQzOzI3MzYsNiBAQCBpbnQgaWVlZTgwMjExX3B1dF9yZWdfY29ubihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0c2tiX3B1dF91OChza2IsIDEgJiM0Mzsgc2l6ZW9mKHJlZ19jb25uKSk7XG4gXHRza2JfcHV0X3U4KHNrYiwgV0xBTl9FSURfRVhUX05PTl9BUF9TVEFfUkVHX0NPTik7XG4gXHRza2JfcHV0X3U4KHNrYiwgcmVnX2Nvbm4pO1xuLVx0cmV0dXJuIDA7XG4gfVxuIFxuIGludCBpZWVlODAyMTFfcHV0X2hlXzZnaHpfY2FwKHN0cnVjdCBza19idWZmICpza2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjM6MDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfcHV0X3JlZ19jb25uJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hZGRfbGlua19lbGVtcyYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfc2VuZF9hc3NvYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGFkZGluZyB0aGUgcmVndWxhdG9yeSBjb25uZWN0aXZpdHkgZWxlbWVudCB0byBhc3NvY2lhdGlvbiByZXF1ZXN0cyBpbiBtYWM4MDIxMS4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIHRoYXQgYWZmZWN0cyA2R0h6IGJhbmQgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTNjYWU4NzJkNDM5ZGM1ZWExMjk0ODJhZTE4N2Y5NTY0M2U4YzZkZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDE1IDIzOjA1OjE0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmggYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaAppbmRleCBkNTg1ODIwMjQ1ZGRiOS4uMTFmNDQ5ZThmZjAwM2YgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCkBAIC0yNzcxLDggJiM0MzsyNzcxLDggQEAgaW50IGllZWU4MDIxMV9wdXRfZWh0X2NhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogaW50IGllZWU4MDIxMV9wdXRfdWhyX2NhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIAkJCSAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQpOwotaW50IGllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc3RydWN0IHNrX2J1ZmYgKnNrYiwKLQkJCSAgIGVudW0gaWVlZTgwMjExX2NoYW5uZWxfZmxhZ3MgZmxhZ3MpOwomIzQzO3ZvaWQgaWVlZTgwMjExX3B1dF9yZWdfY29ubihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKJiM0MzsJCQkgICAgc3RydWN0IHNrX2J1ZmYgKnNrYik7CiAKIC8qIGNoYW5uZWwgbWFuYWdlbWVudCAqLwogYm9vbCBpZWVlODAyMTFfY2hhbmRlZl9odF9vcGVyKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaHRfb3BlcmF0aW9uICpodF9vcGVyLApkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL21sbWUuYyBiL25ldC9tYWM4MDIxMS9tbG1lLmMKaW5kZXggOWU5MjMzN2JiNmY5ZTUuLjFhZmRiNjEwZGZmMjQ4IDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvbWxtZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9tbG1lLmMKQEAgLTIzMDcsMTMgJiM0MzsyMzA3LDE0IEBAIGllZWU4MDIxMV9hZGRfbGlua19lbGVtcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIAlvZmZzZXQgPSBpZWVlODAyMTFfYWRkX2JlZm9yZV9yZWdfY29ubihza2IsIGV4dHJhX2VsZW1zLAogCQkJCQkgICAgICAgZXh0cmFfZWxlbXNfbGVuLCBvZmZzZXQpOwogCi0JaWYgKHNiYW5kLSZndDtiYW5kID09IE5MODAyMTFfQkFORF82R0haKSB7CiYjNDM7CS8qIG9ubHkgYWRkIHRoaXMgb24gdGhlIGFzc29jIGxpbmssIG5vdCBpbiBwZXItU1RBIHByb2ZpbGVzICovCiYjNDM7CWlmIChsaW5rKSB7CiAJCS8qCiAJCSAqIGFzIHBlciBTZWN0aW9uIEUuMi43IG9mIElFRUUgODAyLjExIFJFVm1lIEQ3LjAsIG5vbi1BUCBTVEEKIAkJICogY2FwYWJsZSBvZiBvcGVyYXRpbmcgb24gdGhlIDYgR0h6IGJhbmQgc2hhbGwgdHJhbnNtaXQKIAkJICogcmVndWxhdG9yeSBjb25uZWN0aXZpdHkgZWxlbWVudC4KIAkJICovCi0JCWllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc2tiLCBjaGFuLSZndDtmbGFncyk7CiYjNDM7CQlpZWVlODAyMTFfcHV0X3JlZ19jb25uKHNkYXRhLCBza2IpOwogCX0KIAogCS8qCkBAIC0yNTY0LDExICYjNDM7MjU2NSw4IEBAIGllZWU4MDIxMV9saW5rX2NvbW1vbl9lbGVtc19zaXplKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLAogCQlzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9oZV9tY3NfbnNzX3N1cHApICYjNDM7CiAJCUlFRUU4MDIxMV9IRV9QUEVfVEhSRVNfTUFYX0xFTjsKIAotCWlmIChzYmFuZC0mZ3Q7YmFuZCA9PSBOTDgwMjExX0JBTkRfNkdIWikgewomIzQzOwlpZiAoc2JhbmQtJmd0O2JhbmQgPT0gTkw4MDIxMV9CQU5EXzZHSFopCiAJCXNpemUgJiM0Mzs9IDIgJiM0MzsgMSAmIzQzOyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9oZV82Z2h6X2NhcGEpOwotCQkvKiByZWcgY29ubmVjdGlvbiAqLwotCQlzaXplICYjNDM7PSA0OwotCX0KIAogCXNpemUgJiM0Mzs9IDIgJiM0MzsgMSAmIzQzOyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9laHRfY2FwX2VsZW0pICYjNDM7CiAJCXNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2VodF9tY3NfbnNzX3N1cHApICYjNDM7CkBAIC0yNjE1LDcgJiM0MzsyNjEzLDggQEAgc3RhdGljIGludCBpZWVlODAyMTFfc2VuZF9hc3NvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSkKIAkgICAgICAgMiAmIzQzOyBhc3NvY19kYXRhLSZndDtzc2lkX2xlbiAmIzQzOyAvKiBTU0lEICovCiAJICAgICAgIGFzc29jX2RhdGEtJmd0O2llX2xlbiAmIzQzOyAvKiBleHRyYSBJRXMgKi8KIAkgICAgICAgKGFzc29jX2RhdGEtJmd0O2ZpbHNfa2VrX2xlbiA/IDE2IC8qIEFFUy1TSVYgKi8gOiAwKSAmIzQzOwotCSAgICAgICA5OyAvKiBXTU0gKi8KJiM0MzsJICAgICAgIDkgLyogV01NICovICYjNDM7CiYjNDM7CSAgICAgICA0IC8qIHJlZ3VsYXRvcnkgY29ubmVjdGl2aXR5LCBpZiA2IEdIeiBpcyBzdXBwb3J0ZWQgKi87CiAKIAlmb3IgKGxpbmtfaWQgPSAwOyBsaW5rX2lkICZsdDsgSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTOyBsaW5rX2lkJiM0MzsmIzQzOykgewogCQlzdHJ1Y3QgY2ZnODAyMTFfYnNzICpjYnNzID0gYXNzb2NfZGF0YS0mZ3Q7bGlua1tsaW5rX2lkXS5ic3M7CmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdXRpbC5jIGIvbmV0L21hYzgwMjExL3V0aWwuYwppbmRleCBmNmQ0YWU0MTI3Yzg3My4uMzRmNTAwZGViMmM4NzggMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS91dGlsLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL3V0aWwuYwpAQCAtMjcwMywxMiAmIzQzOzI3MDMsMzEgQEAgaW50IGllZWU4MDIxMV9wdXRfaGVfY2FwKHN0cnVjdCBza19idWZmICpza2IsCiAJcmV0dXJuIDA7CiB9CiAKLWludCBpZWVlODAyMTFfcHV0X3JlZ19jb25uKHN0cnVjdCBza19idWZmICpza2IsCi0JCQkgICBlbnVtIGllZWU4MDIxMV9jaGFubmVsX2ZsYWdzIGZsYWdzKQomIzQzO3ZvaWQgaWVlZTgwMjExX3B1dF9yZWdfY29ubihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKJiM0MzsJCQkgICAgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKJiM0MzsJc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS0mZ3Q7bG9jYWw7CiAJdTggcmVnX2Nvbm4gPSBJRUVFODAyMTFfUkVHX0NPTk5fTFBJX1ZBTElEIHwKIAkJICAgICAgSUVFRTgwMjExX1JFR19DT05OX0xQSV9WQUxVRSB8CiAJCSAgICAgIElFRUU4MDIxMV9SRUdfQ09OTl9TUF9WQUxJRDsKJiM0MzsJc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7CiYjNDM7CWJvb2wgYXZhaWxhYmxlX2NoYW5uZWxzID0gZmFsc2U7CiYjNDM7CXUzMiBmbGFncyA9IDA7CiYjNDM7CWludCBpOwomIzQzOwomIzQzOwlzYmFuZCA9IGxvY2FsLSZndDtody53aXBoeS0mZ3Q7YmFuZHNbTkw4MDIxMV9CQU5EXzZHSFpdOwomIzQzOwlpZiAoIXNiYW5kKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgc2JhbmQtJmd0O25fY2hhbm5lbHM7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlpZiAoc2JhbmQtJmd0O2NoYW5uZWxzW2ldLmZsYWdzICZhbXA7IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEKQomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwkJZmxhZ3MgfD0gc2JhbmQtJmd0O2NoYW5uZWxzW2ldLmZsYWdzOwomIzQzOwkJYXZhaWxhYmxlX2NoYW5uZWxzID0gdHJ1ZTsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoIWF2YWlsYWJsZV9jaGFubmVscykKJiM0MzsJCXJldHVybjsKIAogCWlmICghKGZsYWdzICZhbXA7IElFRUU4MDIxMV9DSEFOX05PXzZHSFpfQUZDX0NMSUVOVCkpCiAJCXJlZ19jb25uIHw9IElFRUU4MDIxMV9SRUdfQ09OTl9TUF9WQUxVRTsKQEAgLTI3MTcsNyAmIzQzOzI3MzYsNiBAQCBpbnQgaWVlZTgwMjExX3B1dF9yZWdfY29ubihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXNrYl9wdXRfdTgoc2tiLCAxICYjNDM7IHNpemVvZihyZWdfY29ubikpOwogCXNrYl9wdXRfdTgoc2tiLCBXTEFOX0VJRF9FWFRfTk9OX0FQX1NUQV9SRUdfQ09OKTsKIAlza2JfcHV0X3U4KHNrYiwgcmVnX2Nvbm4pOwotCXJldHVybiAwOwogfQogCiBpbnQgaWVlZTgwMjExX3B1dF9oZV82Z2h6X2NhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTQ5CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMjkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIGBtYWM4MDIxMWAgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHRvdWNoaW5nIHNvbWUgY29yZSBgbWFjODAyMTFgIGZpbGVzOiBgaWVlZTgwMjExX2kuaGAsIGBtbG1lLmNgLCBhbmQgYHV0aWwuY2AuIFJpZ2h0IG9mZiB0aGUgYmF0LCBpdCYjMzk7cyBtZXNzaW5nIHdpdGggdGhlIHNpZ25hdHVyZSBhbmQgbG9naWMgb2YgYGllZWU4MDIxMV9wdXRfcmVnX2Nvbm5gLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBhcyBzb21ldGhpbmcgcmVndWxhdG9yeS1yZWxhdGVkLCBkZWFsaW5nIHdpdGggdGhlIGNvbm5lY3Rpdml0eSBlbGVtZW50IGluIGFuIGFzc29jaWF0aW9uIHJlcXVlc3QsIEkgYXNzdW1lLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSwgYW5kIGdpdmVuIHRoYXQgdGhpcyBpcyBtYWM4MDIxMSwgaXQgaXMgcmVhZGlseSBhY2Nlc3NpYmxlIHdoZW4gdXNpbmcgYG1hYzgwMjExX2h3c2ltYCBpbiB2aXJ0dWFsIGVudmlyb25tZW50cy4KCkZpcnN0LCBJIG5lZWQgdG8gc2VlICpob3cqIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgdXNlZC4gV2hlcmUgaXMgYGllZWU4MDIxMV9wdXRfcmVnX2Nvbm5gIGNhbGxlZCBmcm9tPyBBaCwgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBjYWxsZWQgd2l0aGluIGBpZWVlODAyMTFfYWRkX2xpbmtfZWxlbXNgLiBBbmQgdGhhdCwgaW4gdHVybiwgaXMgbW9zdCBsaWtlbHkgdXNlZCBpbiBgaWVlZTgwMjExX3NlbmRfYXNzb2NgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCB3aGljaCBjb25maXJtcyB0aGF0IGluaXRpYWwgYXNzb2NpYXRpb24gY29udGV4dCBJIHdhcyBhc3N1bWluZy4KCk5leHQsIEkgbmVlZCB0byBrbm93IHdoZXJlIHRoZSBob29rcyBhcmUuIFRoZSBuZXh0IHN0ZXAgaXMgZmlndXJpbmcgb3V0IHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGRyaXZlIHRoaXMgY29kZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaXMgc2V0IHVwIHByb3Blcmx5IGZvciB0ZXN0aW5nIHRoaXMuIExldCBtZSBjaGVjayB0aGUga2VybmVsIGNvbmZpZyBvcHRpb25zIHJlbGF0ZWQgdG8gYG1hYzgwMjExYC4gUmlnaHQsIGBDT05GSUdfTUFDODAyMTFgIGlzIHRoZSBtYWluIG9uZSwgYXMgZXhwZWN0ZWQuCgpOb3csIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGNvZGUgZm9yIGBpZWVlODAyMTFfcHV0X3JlZ19jb25uYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGNoYW5nZXMgbWFkZSB0byB0aGF0IGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIzOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9wdXRfcmVnX2Nvbm4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI3NzE9aW50IGllZWU4MDIxMV9wdXRfdWhyX2NhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI3NzMtXHRcdFx0ICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZCk7XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyNzc0OnZvaWQgaWVlZTgwMjExX3B1dF9yZWdfY29ubihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI3NzUtXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MjE1Mz1pZWVlODAyMTFfYWRkX2xpbmtfZWxlbXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0yMzE2LVx0XHQgKi9cbm5ldC9tYWM4MDIxMS9tbG1lLmM6MjMxNzpcdFx0aWVlZTgwMjExX3B1dF9yZWdfY29ubihzZGF0YSwgc2tiKTtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjMxOC1cdH1cbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jPTI2Mzg9aW50IGllZWU4MDIxMV9wdXRfaGVfY2FwKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy0yNzA1LVxubmV0L21hYzgwMjExL3V0aWwuYzoyNzA2OnZvaWQgaWVlZTgwMjExX3B1dF9yZWdfY29ubihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjcwNy1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMzowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzQ3CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2g6IEZ1bmN0aW9uYWwgTG9naWMgYW5kIENvZGUgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gYGllZWU4MDIxMV9wdXRfcmVnX2Nvbm5gLiBJdCYjMzk7cyByZWZhY3RvcmluZyB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlLCBzd2FwcGluZyBgc2tiYCBhbmQgYGZsYWdzYCBmb3IgYHNkYXRhYCBhbmQgYHNrYmAg4oCTIHByb2JhYmx5IGZvciBiZXR0ZXIgZGF0YSBmbG93IGFuZCBjbGFyaXR5LCBsZXNzIGdsb2JhbCB2YXJpYWJsZSByZWxpYW5jZS4gIFRoZSBjcnVjaWFsIHBhcnQgaXMgaG93IGl0IGl0ZXJhdGVzIGFjcm9zcyB0aGUgNkdIeiBjaGFubmVscyB0byBkZXRlcm1pbmUgY2hhbm5lbCBhdmFpbGFiaWxpdHkgYW5kIHNldCB0aGUgYGZsYWdzYCBiYXNlZCBvbiB0aG9zZSBjaGVja3MuIFRoYXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhlIG5ldyBmdW5jdGlvbmFsaXR5IGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGxvZ2ljLgoKTm93IEkgbmVlZCB0byBzZWUgaG93IHRoaXMgbW9kaWZpZWQgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgdG8gY2hlY2sgYGllZWU4MDIxMV9hZGRfbGlua19lbGVtc2AgYW5kIGBpZWVlODAyMTFfc2VuZF9hc3NvY2AgaW4gYG5ldC9tYWM4MDIxMS9tbG1lLmNgLiBUaGVzZSBhcmUgbGlrZWx5IHdoZXJlIHRoZSBuZXcgYGllZWU4MDIxMV9wdXRfcmVnX2Nvbm5gIGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgd2hlcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlZCBgZmxhZ3NgIHdvdWxkIGJlIHByb2Nlc3NlZC4gVGhpcyBpcyB3aGVyZSB0aGUgcGF0Y2ggdG91Y2hlcyB0aGUgbWFuYWdlbWVudCBmcmFtZSBsb2dpYyBhbmQgdGhlIGFzc29jaWF0aW9uIHByb2Nlc3MsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2FkZF9saW5rX2VsZW1zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvbWxtZS5jPTIxNTI9c3RhdGljIHNpemVfdFxubmV0L21hYzgwMjExL21sbWUuYzoyMTUzOmllZWU4MDIxMV9hZGRfbGlua19lbGVtcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjE1NC1cdFx0XHQgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2ICpjYXBhYixcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTI0MTU9aWVlZTgwMjExX2Fzc29jX2FkZF9tbF9lbGVtKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjUwMS1cdFx0ICogbGF0ZXIpLCBmb2xsb3dlZCBieSB0aGUgZWxlbWVudHMgYWRkZWQgYmVsb3cgYnlcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MjUwMjpcdFx0ICogY2FsbGluZyBpZWVlODAyMTFfYWRkX2xpbmtfZWxlbXMoKS5cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjUwMy1cdFx0ICovXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0yNTA1LVxubmV0L21hYzgwMjExL21sbWUuYzoyNTA2Olx0XHRleHRyYV91c2VkID0gaWVlZTgwMjExX2FkZF9saW5rX2VsZW1zKHNkYXRhLCBza2IsIFx1MDAyNmNhcGFiLFxubmV0L21hYzgwMjExL21sbWUuYy0yNTA3LVx0XHRcdFx0XHRcdCAgICAgIGV4dF9jYXBhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MjU4MD1zdGF0aWMgaW50IGllZWU4MDIxMV9zZW5kX2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjcyMy1cdGxpbmtfY2FwYWIgPSBjYXBhYjtcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MjcyNDpcdG9mZnNldCA9IGllZWU4MDIxMV9hZGRfbGlua19lbGVtcyhzZGF0YSwgc2tiLCBcdTAwMjZsaW5rX2NhcGFiLFxubmV0L21hYzgwMjExL21sbWUuYy0yNzI1LVx0XHRcdFx0XHQgIGV4dF9jYXBhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTExMDA9aWVlZTgwMjExX2J1aWxkX21sX3JlY29uZl9yZXEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0xMTI5MS1cdFx0XHRleHRyYV91c2VkID1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTEyOTI6XHRcdFx0XHRpZWVlODAyMTFfYWRkX2xpbmtfZWxlbXMoc2RhdGEsIHNrYiwgXHUwMDI2Y2FwYWIsIE5VTEwsXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMjkzLVx0XHRcdFx0XHRcdFx0IGFkZF9saW5rc19kYXRhLVx1MDAzZWxpbmtbbGlua19pZF0uZWxlbXMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjM6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg2MgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgZm9jdXNpbmcgb24gdGhlIElFRUUgODAyLjExIHdpcmVsZXNzIHN0YW5kYXJkLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIGFzc29jaWF0aW9uIHJlcXVlc3QgaGFuZGxpbmcuIEkgc2VlIGl0IG1vZGlmaWVzIGBpZWVlODAyMTFfcHV0X3JlZ19jb25uYCBhbmQgYGllZWU4MDIxMV9hZGRfbGlua19lbGVtc2AsIGJvdGggb2Ygd2hpY2ggYXJlIHRyaWdnZXJlZCBkdXJpbmcgdGhlIGFzc29jaWF0aW9uIHByb2Nlc3MuIFRoaXMgaXMgZ29vZDsgdGhlIGFzc29jaWF0aW9uIHByb2Nlc3MgaXMgYSBjb21tb24gcG9pbnQgb2YgZW50cnksIGFuZCB0aGVyZWZvcmUsIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyB0aGUgbG9naWMgaXMgbGlrZWx5IGNvbXBsZXggZW5vdWdoIHRvIGJlIHdvcnRoIGEgZGVlcCBkaXZlLiBJJiMzOTt2ZSBhbHJlYWR5IGdvdCBteSBzaWdodHMgc2V0IG9uIHRob3NlIGZ1bmN0aW9ucy4KCk15ICYjMzk7Rm9jdXNTeW1ib2xzJiMzOTsgYXJlIHJpZ2h0IG9uIHBvaW50LiBJIG5lZWQgdG8ga2VlcCB0aG9zZSBhdCB0aGUgZm9yZWZyb250IG9mIG15IGludmVzdGlnYXRpb24sIGVzcGVjaWFsbHkgdGhlIGBpZWVlODAyMTFfc2VuZF9hc3NvY2AgZnVuY3Rpb24sIHdoaWNoIGFwcGVhcnMgdG8gYmUgdGhlIHRyaWdnZXIgZm9yIHRoZXNlIG90aGVyIHJvdXRpbmVzLiBJIGFsc28gc2hvdWxkIGtlZXAgYE1BQzgwMjExYCBlbmFibGVkLgoKTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlnLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBrZXkgY29uZmlndXJhdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YgYmVmb3JlIG1vdmluZyBmb3J3YXJkLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55IGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIGluZmx1ZW5jZSB0aGUgYXR0YWNrIHN1cmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjM6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L21hYzgwMjExL0tjb25maWc6Mjpjb25maWcgTUFDODAyMTFcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIElFRUUgODAyLjExIE5ldHdvcmtpbmcgU3RhY2sgKG1hYzgwMjExKVwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTE5PWlmIE1BQzgwMjExICE9IG5cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjE6Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xubmV0L21hYzgwMjExL0tjb25maWctMjItXHRib29sXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0OmNvbmZpZyBNQUM4MDIxMV9SQ19NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTMxPWNob2ljZVxuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxubmV0L21hYzgwMjExL0tjb25maWc6NDE6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTQ4PWVuZGNob2ljZVxubmV0L21hYzgwMjExL0tjb25maWctNDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1MDpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVFxubmV0L21hYzgwMjExL0tjb25maWctNTEtXHRzdHJpbmdcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz01Nz1jb21tZW50IFwmIzM0O1NvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxubmV0L21hYzgwMjExL0tjb25maWc6NjA6Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1Rcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTYxLVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIG1hYzgwMjExXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cdGJvb2wgXCYjMzQ7RW5hYmxlIG1hYzgwMjExIG1lc2ggbmV0d29ya2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNzgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xubmV0L21hYzgwMjExL0tjb25maWctODAtXHRib29sIFwmIzM0O0VuYWJsZSBMRUQgdHJpZ2dlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04OS1cdGJvb2wgXCYjMzQ7RXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo5Nzpjb25maWcgTUFDODAyMTFfTUVTU0FHRV9UUkFDSU5HXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cdGJvb2wgXCYjMzQ7VHJhY2UgYWxsIG1hYzgwMjExIGRlYnVnIG1lc3NhZ2VzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTA5LVxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxubmV0L21hYzgwMjExL0tjb25maWctMTExLVx0Ym9vbCBcJiMzNDtTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTE2OmNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxubmV0L21hYzgwMjExL0tjb25maWctMTE3LVx0Ym9vbCBcJiMzNDtEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxubmV0L21hYzgwMjExL0tjb25maWc6MTMyOmNvbmZpZyBNQUM4MDIxMV9WRVJCT1NFX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXHRib29sIFwmIzM0O1ZlcmJvc2UgZGVidWdnaW5nIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNTQ6Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTU1LVx0Ym9vbCBcJiMzNDtWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTYzOmNvbmZpZyBNQUM4MDIxMV9IVF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTY0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIEhUIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3NC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXHRib29sIFwmIzM0O1ZlcmJvc2UgT0NCIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4Njpjb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTg3LVx0Ym9vbCBcJiMzNDtWZXJib3NlIElCU1MgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6MTk3OmNvbmZpZyBNQUM4MDIxMV9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTk4LVx0Ym9vbCBcJiMzNDtWZXJib3NlIHBvd2Vyc2F2ZSBtb2RlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwOC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxubmV0L21hYzgwMjExL0tjb25maWc6MjIyOmNvbmZpZyBNQUM4MDIxMV9NUEFUSF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjIzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGF0aCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMzU6Y29uZmlnIE1BQzgwMjExX01IV01QX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBIV01QIHJvdXRpbmcgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjQ3LVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjAtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNzA6Y29uZmlnIE1BQzgwMjExX01FU0hfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBvd2Vyc2F2ZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBURExTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5Mzpjb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5NC1cdGJvb2wgXCYjMzQ7RXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMzA3LVxubmV0L21hYzgwMjExL0tjb25maWc6MzA4OmNvbmZpZyBNQUM4MDIxMV9TVEFfSEFTSF9NQVhfU0laRVxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVx0aW50IFwmIzM0O1N0YXRpb24gaGFzaCB0YWJsZSBtYXhpbXVtIHNpemVcJiMzNDsgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIzOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0NjQKCQkJCQkJCW91dHB1dDogMTE5CgkJCQkJCQl0aG91Z2h0czogMjMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyBhbmQgQ2FsbCBHcmFwaHMqKgoKT2theSwgc28gdGhlIGJhc2UgY29uZmlndXJhdGlvbiBoZXJlIGlzIGBNQUM4MDIxMWAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgd2UgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSByZWxhdGVkIGNvbmZpZ3MgdGhhdCBzaG91bGQgYWxzbyBiZSBlbmFibGVkIGFsb25nc2lkZSB0aGlzIG9uZS4gVGhlIGNvZGUgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGBOTDgwMjExX0JBTkRfNkdIWmAsIHdoaWNoLCBhcyBJIGtub3csIGlzIGEgcGFydCBvZiB0aGUgYGNmZzgwMjExYCBhbmQgYG1hYzgwMjExYCBmcmFtZXdvcmtzLiBIb3dldmVyLCBJIGRvbiYjMzk7dCBzZWUgYW55IG90aGVyICpleHBsaWNpdCogY29uZmlndXJhdGlvbnMgcGVydGFpbmluZyB0byA2R0h6IHRoYXQgaW1tZWRpYXRlbHkganVtcCBvdXQuCgpMZXQgbWUgcmV2aXNpdCBgaWVlZTgwMjExX3B1dF9yZWdfY29ubmAuIFVuZGVyc3RhbmRpbmcgaXRzIHVzYWdlIGlzIGtleS4gQWgsIGl0JiMzOTtzIGNhbGxlZCBieSBgaWVlZTgwMjExX2FkZF9saW5rX2VsZW1zYCwgd2hpY2ggaW4gdHVybiBpcyBjYWxsZWQgYnkgYGllZWU4MDIxMV9zZW5kX2Fzc29jYCwgd2hpY2ggaXRzZWxmIGlzIGNhbGxlZCBieSBgaWVlZTgwMjExX2J1aWxkX21sX3JlY29uZl9yZXFgLiBUaGF0IGNhbGwgZ3JhcGggcHJvdmlkZXMgYSBjbGVhciB2aWV3IG9mIGl0cyBmdW5jdGlvbi4KClRoZXJlZm9yZSwgSSB0aGluayBmb2N1c2luZyBvbiBgaWVlZTgwMjExX3B1dF9yZWdfY29ubmAgYW5kIGBpZWVlODAyMTFfYWRkX2xpbmtfZWxlbXNgIHdpbGwgZ2l2ZSBhIGdvb2QgdW5kZXJzdGFuZGluZywgYW5kIHRyYWNpbmcgdGhlIHBhdGggdGhyb3VnaCBgaWVlZTgwMjExX3NlbmRfYXNzb2NgIHdpbGwgYWxzbyBiZSBoZWxwZnVsLCB3aGljaCBjb3ZlcnMgdGhlIGNydWNpYWwgc3RlcHMgaGVyZS4KCk5vdywgSSB0aGluayBJIGhhdmUgYSBjbGVhciBwaWN0dXJlLiBMZXQmIzM5O3MgYHNldC1yZXN1bHRzYCBhbmQgbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMzowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfcHV0X3JlZ19jb25uJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hZGRfbGlua19lbGVtcyYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfc2VuZF9hc3NvYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGFkZGluZyB0aGUgcmVndWxhdG9yeSBjb25uZWN0aXZpdHkgZWxlbWVudCB0byBhc3NvY2lhdGlvbiByZXF1ZXN0cyBpbiBtYWM4MDIxMS4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIHRoYXQgYWZmZWN0cyA2R0h6IGJhbmQgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfcHV0X3JlZ19jb25uJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hZGRfbGlua19lbGVtcyYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfc2VuZF9hc3NvYyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGFkZGluZyB0aGUgcmVndWxhdG9yeSBjb25uZWN0aXZpdHkgZWxlbWVudCB0byBhc3NvY2lhdGlvbiByZXF1ZXN0cyBpbiBtYWM4MDIxMS4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIHRoYXQgYWZmZWN0cyA2R0h6IGJhbmQgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIzOjA1OjE1LjU4ODI0OTIzNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTI0NDk1OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX3B1dF9yZWdfY29ublwiLFxuICAgIFwiaWVlZTgwMjExX2FkZF9saW5rX2VsZW1zXCIsXG4gICAgXCJpZWVlODAyMTFfc2VuZF9hc3NvY1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgYWRkaW5nIHRoZSByZWd1bGF0b3J5IGNvbm5lY3Rpdml0eSBlbGVtZW50IHRvIGFzc29jaWF0aW9uIHJlcXVlc3RzIGluIG1hYzgwMjExLiBUaGlzIGlzIHJlYWNoYWJsZSBmdW5jdGlvbmFsIGNvZGUgdGhhdCBhZmZlY3RzIDZHSHogYmFuZCBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzowNToxNS41ODgyNTQ2ODVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNDgwMjM5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDEzY2FlODcyZDQzOWRjNWVhMTI5NDgyYWUxODdmOTU2NDNlOGM2ZGRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMTUgMjM6MDU6MTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmggYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxcbmluZGV4IGQ1ODU4MjAyNDVkZGI5Li4xMWY0NDllOGZmMDAzZiAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxcbisrKyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXFxuQEAgLTI3NzEsOCArMjc3MSw4IEBAIGludCBpZWVlODAyMTFfcHV0X2VodF9jYXAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gaW50IGllZWU4MDIxMV9wdXRfdWhyX2NhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHQgIHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbiBcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kKTtcXG4taW50IGllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tXFx0XFx0XFx0ICAgZW51bSBpZWVlODAyMTFfY2hhbm5lbF9mbGFncyBmbGFncyk7XFxuK3ZvaWQgaWVlZTgwMjExX3B1dF9yZWdfY29ubihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4rXFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpO1xcbiBcXG4gLyogY2hhbm5lbCBtYW5hZ2VtZW50ICovXFxuIGJvb2wgaWVlZTgwMjExX2NoYW5kZWZfaHRfb3Blcihjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2h0X29wZXJhdGlvbiAqaHRfb3BlcixcXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL21sbWUuYyBiL25ldC9tYWM4MDIxMS9tbG1lLmNcXG5pbmRleCA5ZTkyMzM3YmI2ZjllNS4uMWFmZGI2MTBkZmYyNDggMTAwNjQ0XFxuLS0tIGEvbmV0L21hYzgwMjExL21sbWUuY1xcbisrKyBiL25ldC9tYWM4MDIxMS9tbG1lLmNcXG5AQCAtMjMwNywxMyArMjMwNywxNCBAQCBpZWVlODAyMTFfYWRkX2xpbmtfZWxlbXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuIFxcdG9mZnNldCA9IGllZWU4MDIxMV9hZGRfYmVmb3JlX3JlZ19jb25uKHNrYiwgZXh0cmFfZWxlbXMsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgICBleHRyYV9lbGVtc19sZW4sIG9mZnNldCk7XFxuIFxcbi1cXHRpZiAoc2JhbmQtXFx1MDAzZWJhbmQgPT0gTkw4MDIxMV9CQU5EXzZHSFopIHtcXG4rXFx0Lyogb25seSBhZGQgdGhpcyBvbiB0aGUgYXNzb2MgbGluaywgbm90IGluIHBlci1TVEEgcHJvZmlsZXMgKi9cXG4rXFx0aWYgKGxpbmspIHtcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogYXMgcGVyIFNlY3Rpb24gRS4yLjcgb2YgSUVFRSA4MDIuMTEgUkVWbWUgRDcuMCwgbm9uLUFQIFNUQVxcbiBcXHRcXHQgKiBjYXBhYmxlIG9mIG9wZXJhdGluZyBvbiB0aGUgNiBHSHogYmFuZCBzaGFsbCB0cmFuc21pdFxcbiBcXHRcXHQgKiByZWd1bGF0b3J5IGNvbm5lY3Rpdml0eSBlbGVtZW50LlxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0aWVlZTgwMjExX3B1dF9yZWdfY29ubihza2IsIGNoYW4tXFx1MDAzZWZsYWdzKTtcXG4rXFx0XFx0aWVlZTgwMjExX3B1dF9yZWdfY29ubihzZGF0YSwgc2tiKTtcXG4gXFx0fVxcbiBcXG4gXFx0LypcXG5AQCAtMjU2NCwxMSArMjU2NSw4IEBAIGllZWU4MDIxMV9saW5rX2NvbW1vbl9lbGVtc19zaXplKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbiBcXHRcXHRzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9oZV9tY3NfbnNzX3N1cHApICtcXG4gXFx0XFx0SUVFRTgwMjExX0hFX1BQRV9USFJFU19NQVhfTEVOO1xcbiBcXG4tXFx0aWYgKHNiYW5kLVxcdTAwM2ViYW5kID09IE5MODAyMTFfQkFORF82R0haKSB7XFxuK1xcdGlmIChzYmFuZC1cXHUwMDNlYmFuZCA9PSBOTDgwMjExX0JBTkRfNkdIWilcXG4gXFx0XFx0c2l6ZSArPSAyICsgMSArIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2hlXzZnaHpfY2FwYSk7XFxuLVxcdFxcdC8qIHJlZyBjb25uZWN0aW9uICovXFxuLVxcdFxcdHNpemUgKz0gNDtcXG4tXFx0fVxcbiBcXG4gXFx0c2l6ZSArPSAyICsgMSArIHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2VodF9jYXBfZWxlbSkgK1xcbiBcXHRcXHRzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9laHRfbWNzX25zc19zdXBwKSArXFxuQEAgLTI2MTUsNyArMjYxMyw4IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3NlbmRfYXNzb2Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuIFxcdCAgICAgICAyICsgYXNzb2NfZGF0YS1cXHUwMDNlc3NpZF9sZW4gKyAvKiBTU0lEICovXFxuIFxcdCAgICAgICBhc3NvY19kYXRhLVxcdTAwM2VpZV9sZW4gKyAvKiBleHRyYSBJRXMgKi9cXG4gXFx0ICAgICAgIChhc3NvY19kYXRhLVxcdTAwM2VmaWxzX2tla19sZW4gPyAxNiAvKiBBRVMtU0lWICovIDogMCkgK1xcbi1cXHQgICAgICAgOTsgLyogV01NICovXFxuK1xcdCAgICAgICA5IC8qIFdNTSAqLyArXFxuK1xcdCAgICAgICA0IC8qIHJlZ3VsYXRvcnkgY29ubmVjdGl2aXR5LCBpZiA2IEdIeiBpcyBzdXBwb3J0ZWQgKi87XFxuIFxcbiBcXHRmb3IgKGxpbmtfaWQgPSAwOyBsaW5rX2lkIFxcdTAwM2MgSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTOyBsaW5rX2lkKyspIHtcXG4gXFx0XFx0c3RydWN0IGNmZzgwMjExX2JzcyAqY2JzcyA9IGFzc29jX2RhdGEtXFx1MDAzZWxpbmtbbGlua19pZF0uYnNzO1xcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdXRpbC5jIGIvbmV0L21hYzgwMjExL3V0aWwuY1xcbmluZGV4IGY2ZDRhZTQxMjdjODczLi4zNGY1MDBkZWIyYzg3OCAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvdXRpbC5jXFxuKysrIGIvbmV0L21hYzgwMjExL3V0aWwuY1xcbkBAIC0yNzAzLDEyICsyNzAzLDMxIEBAIGludCBpZWVlODAyMTFfcHV0X2hlX2NhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4taW50IGllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tXFx0XFx0XFx0ICAgZW51bSBpZWVlODAyMTFfY2hhbm5lbF9mbGFncyBmbGFncylcXG4rdm9pZCBpZWVlODAyMTFfcHV0X3JlZ19jb25uKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbitcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbitcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG4gXFx0dTggcmVnX2Nvbm4gPSBJRUVFODAyMTFfUkVHX0NPTk5fTFBJX1ZBTElEIHxcXG4gXFx0XFx0ICAgICAgSUVFRTgwMjExX1JFR19DT05OX0xQSV9WQUxVRSB8XFxuIFxcdFxcdCAgICAgIElFRUU4MDIxMV9SRUdfQ09OTl9TUF9WQUxJRDtcXG4rXFx0c3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQ7XFxuK1xcdGJvb2wgYXZhaWxhYmxlX2NoYW5uZWxzID0gZmFsc2U7XFxuK1xcdHUzMiBmbGFncyA9IDA7XFxuK1xcdGludCBpO1xcbitcXG4rXFx0c2JhbmQgPSBsb2NhbC1cXHUwMDNlaHcud2lwaHktXFx1MDAzZWJhbmRzW05MODAyMTFfQkFORF82R0haXTtcXG4rXFx0aWYgKCFzYmFuZClcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHNiYW5kLVxcdTAwM2VuX2NoYW5uZWxzOyBpKyspIHtcXG4rXFx0XFx0aWYgKHNiYW5kLVxcdTAwM2VjaGFubmVsc1tpXS5mbGFncyBcXHUwMDI2IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0ZmxhZ3MgfD0gc2JhbmQtXFx1MDAzZWNoYW5uZWxzW2ldLmZsYWdzO1xcbitcXHRcXHRhdmFpbGFibGVfY2hhbm5lbHMgPSB0cnVlO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoIWF2YWlsYWJsZV9jaGFubmVscylcXG4rXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0aWYgKCEoZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfQ0hBTl9OT182R0haX0FGQ19DTElFTlQpKVxcbiBcXHRcXHRyZWdfY29ubiB8PSBJRUVFODAyMTFfUkVHX0NPTk5fU1BfVkFMVUU7XFxuQEAgLTI3MTcsNyArMjczNiw2IEBAIGludCBpZWVlODAyMTFfcHV0X3JlZ19jb25uKHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHNrYl9wdXRfdTgoc2tiLCAxICsgc2l6ZW9mKHJlZ19jb25uKSk7XFxuIFxcdHNrYl9wdXRfdTgoc2tiLCBXTEFOX0VJRF9FWFRfTk9OX0FQX1NUQV9SRUdfQ09OKTtcXG4gXFx0c2tiX3B1dF91OChza2IsIHJlZ19jb25uKTtcXG4tXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuIGludCBpZWVlODAyMTFfcHV0X2hlXzZnaHpfY2FwKHN0cnVjdCBza19idWZmICpza2IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIzOjA1OjE2LjA5NjEyNzYyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxOTQxNjYwNjAxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9wdXRfcmVnX2Nvbm5cIixcbiAgICBcImllZWU4MDIxMV9hZGRfbGlua19lbGVtc1wiLFxuICAgIFwiaWVlZTgwMjExX3NlbmRfYXNzb2NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGFkZGluZyB0aGUgcmVndWxhdG9yeSBjb25uZWN0aXZpdHkgZWxlbWVudCB0byBhc3NvY2lhdGlvbiByZXF1ZXN0cyBpbiBtYWM4MDIxMS4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIHRoYXQgYWZmZWN0cyA2R0h6IGJhbmQgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxM2NhZTg3MmQ0MzlkYzVlYTEyOTQ4MmFlMTg3Zjk1NjQzZThjNmRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMjM6MDU6MTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaCBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXG5pbmRleCBkNTg1ODIwMjQ1ZGRiOS4uMTFmNDQ5ZThmZjAwM2YgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuKysrIGIvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhcbkBAIC0yNzcxLDggKzI3NzEsOCBAQCBpbnQgaWVlZTgwMjExX3B1dF9laHRfY2FwKHN0cnVjdCBza19idWZmICpza2IsXG4gaW50IGllZWU4MDIxMV9wdXRfdWhyX2NhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHRcdFx0ICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZCk7XG4taW50IGllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc3RydWN0IHNrX2J1ZmYgKnNrYixcbi1cdFx0XHQgICBlbnVtIGllZWU4MDIxMV9jaGFubmVsX2ZsYWdzIGZsYWdzKTtcbit2b2lkIGllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4rXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpO1xuIFxuIC8qIGNoYW5uZWwgbWFuYWdlbWVudCAqL1xuIGJvb2wgaWVlZTgwMjExX2NoYW5kZWZfaHRfb3Blcihjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2h0X29wZXJhdGlvbiAqaHRfb3BlcixcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvbWxtZS5jIGIvbmV0L21hYzgwMjExL21sbWUuY1xuaW5kZXggOWU5MjMzN2JiNmY5ZTUuLjFhZmRiNjEwZGZmMjQ4IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL21sbWUuY1xuKysrIGIvbmV0L21hYzgwMjExL21sbWUuY1xuQEAgLTIzMDcsMTMgKzIzMDcsMTQgQEAgaWVlZTgwMjExX2FkZF9saW5rX2VsZW1zKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0b2Zmc2V0ID0gaWVlZTgwMjExX2FkZF9iZWZvcmVfcmVnX2Nvbm4oc2tiLCBleHRyYV9lbGVtcyxcbiBcdFx0XHRcdFx0ICAgICAgIGV4dHJhX2VsZW1zX2xlbiwgb2Zmc2V0KTtcbiBcbi1cdGlmIChzYmFuZC1cdTAwM2ViYW5kID09IE5MODAyMTFfQkFORF82R0haKSB7XG4rXHQvKiBvbmx5IGFkZCB0aGlzIG9uIHRoZSBhc3NvYyBsaW5rLCBub3QgaW4gcGVyLVNUQSBwcm9maWxlcyAqL1xuK1x0aWYgKGxpbmspIHtcbiBcdFx0LypcbiBcdFx0ICogYXMgcGVyIFNlY3Rpb24gRS4yLjcgb2YgSUVFRSA4MDIuMTEgUkVWbWUgRDcuMCwgbm9uLUFQIFNUQVxuIFx0XHQgKiBjYXBhYmxlIG9mIG9wZXJhdGluZyBvbiB0aGUgNiBHSHogYmFuZCBzaGFsbCB0cmFuc21pdFxuIFx0XHQgKiByZWd1bGF0b3J5IGNvbm5lY3Rpdml0eSBlbGVtZW50LlxuIFx0XHQgKi9cbi1cdFx0aWVlZTgwMjExX3B1dF9yZWdfY29ubihza2IsIGNoYW4tXHUwMDNlZmxhZ3MpO1xuK1x0XHRpZWVlODAyMTFfcHV0X3JlZ19jb25uKHNkYXRhLCBza2IpO1xuIFx0fVxuIFxuIFx0LypcbkBAIC0yNTY0LDExICsyNTY1LDggQEAgaWVlZTgwMjExX2xpbmtfY29tbW9uX2VsZW1zX3NpemUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHRcdHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2hlX21jc19uc3Nfc3VwcCkgK1xuIFx0XHRJRUVFODAyMTFfSEVfUFBFX1RIUkVTX01BWF9MRU47XG4gXG4tXHRpZiAoc2JhbmQtXHUwMDNlYmFuZCA9PSBOTDgwMjExX0JBTkRfNkdIWikge1xuK1x0aWYgKHNiYW5kLVx1MDAzZWJhbmQgPT0gTkw4MDIxMV9CQU5EXzZHSFopXG4gXHRcdHNpemUgKz0gMiArIDEgKyBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9oZV82Z2h6X2NhcGEpO1xuLVx0XHQvKiByZWcgY29ubmVjdGlvbiAqL1xuLVx0XHRzaXplICs9IDQ7XG4tXHR9XG4gXG4gXHRzaXplICs9IDIgKyAxICsgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfZWh0X2NhcF9lbGVtKSArXG4gXHRcdHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX2VodF9tY3NfbnNzX3N1cHApICtcbkBAIC0yNjE1LDcgKzI2MTMsOCBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9zZW5kX2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuIFx0ICAgICAgIDIgKyBhc3NvY19kYXRhLVx1MDAzZXNzaWRfbGVuICsgLyogU1NJRCAqL1xuIFx0ICAgICAgIGFzc29jX2RhdGEtXHUwMDNlaWVfbGVuICsgLyogZXh0cmEgSUVzICovXG4gXHQgICAgICAgKGFzc29jX2RhdGEtXHUwMDNlZmlsc19rZWtfbGVuID8gMTYgLyogQUVTLVNJViAqLyA6IDApICtcbi1cdCAgICAgICA5OyAvKiBXTU0gKi9cbitcdCAgICAgICA5IC8qIFdNTSAqLyArXG4rXHQgICAgICAgNCAvKiByZWd1bGF0b3J5IGNvbm5lY3Rpdml0eSwgaWYgNiBHSHogaXMgc3VwcG9ydGVkICovO1xuIFxuIFx0Zm9yIChsaW5rX2lkID0gMDsgbGlua19pZCBcdTAwM2MgSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTOyBsaW5rX2lkKyspIHtcbiBcdFx0c3RydWN0IGNmZzgwMjExX2JzcyAqY2JzcyA9IGFzc29jX2RhdGEtXHUwMDNlbGlua1tsaW5rX2lkXS5ic3M7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3V0aWwuYyBiL25ldC9tYWM4MDIxMS91dGlsLmNcbmluZGV4IGY2ZDRhZTQxMjdjODczLi4zNGY1MDBkZWIyYzg3OCAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS91dGlsLmNcbisrKyBiL25ldC9tYWM4MDIxMS91dGlsLmNcbkBAIC0yNzAzLDEyICsyNzAzLDMxIEBAIGludCBpZWVlODAyMTFfcHV0X2hlX2NhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLWludCBpZWVlODAyMTFfcHV0X3JlZ19jb25uKHN0cnVjdCBza19idWZmICpza2IsXG4tXHRcdFx0ICAgZW51bSBpZWVlODAyMTFfY2hhbm5lbF9mbGFncyBmbGFncylcbit2b2lkIGllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4rXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuK1x0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbiBcdHU4IHJlZ19jb25uID0gSUVFRTgwMjExX1JFR19DT05OX0xQSV9WQUxJRCB8XG4gXHRcdCAgICAgIElFRUU4MDIxMV9SRUdfQ09OTl9MUElfVkFMVUUgfFxuIFx0XHQgICAgICBJRUVFODAyMTFfUkVHX0NPTk5fU1BfVkFMSUQ7XG4rXHRzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDtcbitcdGJvb2wgYXZhaWxhYmxlX2NoYW5uZWxzID0gZmFsc2U7XG4rXHR1MzIgZmxhZ3MgPSAwO1xuK1x0aW50IGk7XG4rXG4rXHRzYmFuZCA9IGxvY2FsLVx1MDAzZWh3LndpcGh5LVx1MDAzZWJhbmRzW05MODAyMTFfQkFORF82R0haXTtcbitcdGlmICghc2JhbmQpXG4rXHRcdHJldHVybjtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHNiYW5kLVx1MDAzZW5fY2hhbm5lbHM7IGkrKykge1xuK1x0XHRpZiAoc2JhbmQtXHUwMDNlY2hhbm5lbHNbaV0uZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9DSEFOX0RJU0FCTEVEKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHRmbGFncyB8PSBzYmFuZC1cdTAwM2VjaGFubmVsc1tpXS5mbGFncztcbitcdFx0YXZhaWxhYmxlX2NoYW5uZWxzID0gdHJ1ZTtcbitcdH1cbitcbitcdGlmICghYXZhaWxhYmxlX2NoYW5uZWxzKVxuK1x0XHRyZXR1cm47XG4gXG4gXHRpZiAoIShmbGFncyBcdTAwMjYgSUVFRTgwMjExX0NIQU5fTk9fNkdIWl9BRkNfQ0xJRU5UKSlcbiBcdFx0cmVnX2Nvbm4gfD0gSUVFRTgwMjExX1JFR19DT05OX1NQX1ZBTFVFO1xuQEAgLTI3MTcsNyArMjczNiw2IEBAIGludCBpZWVlODAyMTFfcHV0X3JlZ19jb25uKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRza2JfcHV0X3U4KHNrYiwgMSArIHNpemVvZihyZWdfY29ubikpO1xuIFx0c2tiX3B1dF91OChza2IsIFdMQU5fRUlEX0VYVF9OT05fQVBfU1RBX1JFR19DT04pO1xuIFx0c2tiX3B1dF91OChza2IsIHJlZ19jb25uKTtcbi1cdHJldHVybiAwO1xuIH1cbiBcbiBpbnQgaWVlZTgwMjExX3B1dF9oZV82Z2h6X2NhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjM6MDU6MTYuMDk2MTMwNDhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzI4NTM5MTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIGBtYWM4MDIxMWAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHRvdWNoaW5nIHNvbWUgY29yZSBgbWFjODAyMTFgIGZpbGVzOiBgaWVlZTgwMjExX2kuaGAsIGBtbG1lLmNgLCBhbmQgYHV0aWwuY2AuIFJpZ2h0IG9mZiB0aGUgYmF0LCBpdCdzIG1lc3Npbmcgd2l0aCB0aGUgc2lnbmF0dXJlIGFuZCBsb2dpYyBvZiBgaWVlZTgwMjExX3B1dF9yZWdfY29ubmAsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIGFzIHNvbWV0aGluZyByZWd1bGF0b3J5LXJlbGF0ZWQsIGRlYWxpbmcgd2l0aCB0aGUgY29ubmVjdGl2aXR5IGVsZW1lbnQgaW4gYW4gYXNzb2NpYXRpb24gcmVxdWVzdCwgSSBhc3N1bWUuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlLCBhbmQgZ2l2ZW4gdGhhdCB0aGlzIGlzIG1hYzgwMjExLCBpdCBpcyByZWFkaWx5IGFjY2Vzc2libGUgd2hlbiB1c2luZyBgbWFjODAyMTFfaHdzaW1gIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLlxuXG5GaXJzdCwgSSBuZWVkIHRvIHNlZSAqaG93KiB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQuIFdoZXJlIGlzIGBpZWVlODAyMTFfcHV0X3JlZ19jb25uYCBjYWxsZWQgZnJvbT8gQWgsIGl0IGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgd2l0aGluIGBpZWVlODAyMTFfYWRkX2xpbmtfZWxlbXNgLiBBbmQgdGhhdCwgaW4gdHVybiwgaXMgbW9zdCBsaWtlbHkgdXNlZCBpbiBgaWVlZTgwMjExX3NlbmRfYXNzb2NgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCB3aGljaCBjb25maXJtcyB0aGF0IGluaXRpYWwgYXNzb2NpYXRpb24gY29udGV4dCBJIHdhcyBhc3N1bWluZy5cblxuTmV4dCwgSSBuZWVkIHRvIGtub3cgd2hlcmUgdGhlIGhvb2tzIGFyZS4gVGhlIG5leHQgc3RlcCBpcyBmaWd1cmluZyBvdXQgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZHJpdmUgdGhpcyBjb2RlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBidWlsZCBlbnZpcm9ubWVudCBpcyBzZXQgdXAgcHJvcGVybHkgZm9yIHRlc3RpbmcgdGhpcy4gTGV0IG1lIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlnIG9wdGlvbnMgcmVsYXRlZCB0byBgbWFjODAyMTFgLiBSaWdodCwgYENPTkZJR19NQUM4MDIxMWAgaXMgdGhlIG1haW4gb25lLCBhcyBleHBlY3RlZC5cblxuTm93LCBsZXQncyBkaXZlIGludG8gdGhlIGNvZGUgZm9yIGBpZWVlODAyMTFfcHV0X3JlZ19jb25uYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGNoYW5nZXMgbWFkZSB0byB0aGF0IGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTQ5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjkwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjM6MDU6MjEuODI0NjcxNjU3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjU3NTMxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfcHV0X3JlZ19jb25uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9Mjc3MT1pbnQgaWVlZTgwMjExX3B1dF91aHJfY2FwKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yNzczLVxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCAqc2JhbmQpO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI3NzQ6dm9pZCBpZWVlODAyMTFfcHV0X3JlZ19jb25uKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI3NzUtXFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz0yMTUzPWllZWU4MDIxMV9hZGRfbGlua19lbGVtcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjMxNi1cXHRcXHQgKi9cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjIzMTc6XFx0XFx0aWVlZTgwMjExX3B1dF9yZWdfY29ubihzZGF0YSwgc2tiKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTIzMTgtXFx0fVxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYz0yNjM4PWludCBpZWVlODAyMTFfcHV0X2hlX2NhcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0yNzA1LVxcbm5ldC9tYWM4MDIxMS91dGlsLmM6MjcwNjp2b2lkIGllZWU4MDIxMV9wdXRfcmVnX2Nvbm4oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxubmV0L21hYzgwMjExL3V0aWwuYy0yNzA3LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzowNToyMS45ODEyNTM1NjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODI3MDg5NTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2g6IEZ1bmN0aW9uYWwgTG9naWMgYW5kIENvZGUgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbmFsIGNoYW5nZSB0byBgaWVlZTgwMjExX3B1dF9yZWdfY29ubmAuIEl0J3MgcmVmYWN0b3JpbmcgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSwgc3dhcHBpbmcgYHNrYmAgYW5kIGBmbGFnc2AgZm9yIGBzZGF0YWAgYW5kIGBza2JgIOKAkyBwcm9iYWJseSBmb3IgYmV0dGVyIGRhdGEgZmxvdyBhbmQgY2xhcml0eSwgbGVzcyBnbG9iYWwgdmFyaWFibGUgcmVsaWFuY2UuICBUaGUgY3J1Y2lhbCBwYXJ0IGlzIGhvdyBpdCBpdGVyYXRlcyBhY3Jvc3MgdGhlIDZHSHogY2hhbm5lbHMgdG8gZGV0ZXJtaW5lIGNoYW5uZWwgYXZhaWxhYmlsaXR5IGFuZCBzZXQgdGhlIGBmbGFnc2AgYmFzZWQgb24gdGhvc2UgY2hlY2tzLiBUaGF0J3MgdGhlIGNvcmUgb2YgdGhlIG5ldyBmdW5jdGlvbmFsaXR5IGFuZCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGxvZ2ljLlxuXG5Ob3cgSSBuZWVkIHRvIHNlZSBob3cgdGhpcyBtb2RpZmllZCBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkgbmVlZCB0byBjaGVjayBgaWVlZTgwMjExX2FkZF9saW5rX2VsZW1zYCBhbmQgYGllZWU4MDIxMV9zZW5kX2Fzc29jYCBpbiBgbmV0L21hYzgwMjExL21sbWUuY2AuIFRoZXNlIGFyZSBsaWtlbHkgd2hlcmUgdGhlIG5ldyBgaWVlZTgwMjExX3B1dF9yZWdfY29ubmAgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCB3aGVyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBjaGFuZ2VkIGBmbGFnc2Agd291bGQgYmUgcHJvY2Vzc2VkLiBUaGlzIGlzIHdoZXJlIHRoZSBwYXRjaCB0b3VjaGVzIHRoZSBtYW5hZ2VtZW50IGZyYW1lIGxvZ2ljIGFuZCB0aGUgYXNzb2NpYXRpb24gcHJvY2Vzcywgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc0NywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzowNToyNS44MDgzNDU2NTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2OTY1NTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9hZGRfbGlua19lbGVtc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9tbG1lLmM9MjE1Mj1zdGF0aWMgc2l6ZV90XFxubmV0L21hYzgwMjExL21sbWUuYzoyMTUzOmllZWU4MDIxMV9hZGRfbGlua19lbGVtcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTIxNTQtXFx0XFx0XFx0IHN0cnVjdCBza19idWZmICpza2IsIHUxNiAqY2FwYWIsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTI0MTU9aWVlZTgwMjExX2Fzc29jX2FkZF9tbF9lbGVtKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0yNTAxLVxcdFxcdCAqIGxhdGVyKSwgZm9sbG93ZWQgYnkgdGhlIGVsZW1lbnRzIGFkZGVkIGJlbG93IGJ5XFxubmV0L21hYzgwMjExL21sbWUuYzoyNTAyOlxcdFxcdCAqIGNhbGxpbmcgaWVlZTgwMjExX2FkZF9saW5rX2VsZW1zKCkuXFxubmV0L21hYzgwMjExL21sbWUuYy0yNTAzLVxcdFxcdCAqL1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0yNTA1LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MjUwNjpcXHRcXHRleHRyYV91c2VkID0gaWVlZTgwMjExX2FkZF9saW5rX2VsZW1zKHNkYXRhLCBza2IsIFxcdTAwMjZjYXBhYixcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI1MDctXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgZXh0X2NhcGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTI1ODA9c3RhdGljIGludCBpZWVlODAyMTFfc2VuZF9hc3NvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjcyMy1cXHRsaW5rX2NhcGFiID0gY2FwYWI7XFxubmV0L21hYzgwMjExL21sbWUuYzoyNzI0OlxcdG9mZnNldCA9IGllZWU4MDIxMV9hZGRfbGlua19lbGVtcyhzZGF0YSwgc2tiLCBcXHUwMDI2bGlua19jYXBhYixcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI3MjUtXFx0XFx0XFx0XFx0XFx0ICBleHRfY2FwYSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTExMDA9aWVlZTgwMjExX2J1aWxkX21sX3JlY29uZl9yZXEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMjkxLVxcdFxcdFxcdGV4dHJhX3VzZWQgPVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTEyOTI6XFx0XFx0XFx0XFx0aWVlZTgwMjExX2FkZF9saW5rX2VsZW1zKHNkYXRhLCBza2IsIFxcdTAwMjZjYXBhYiwgTlVMTCxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMjkzLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCBhZGRfbGlua3NfZGF0YS1cXHUwMDNlbGlua1tsaW5rX2lkXS5lbGVtcyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjM6MDU6MjYuMDk1MzE3MDIyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5MDY0MjQzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBmb2N1c2luZyBvbiB0aGUgSUVFRSA4MDIuMTEgd2lyZWxlc3Mgc3RhbmRhcmQsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgYXNzb2NpYXRpb24gcmVxdWVzdCBoYW5kbGluZy4gSSBzZWUgaXQgbW9kaWZpZXMgYGllZWU4MDIxMV9wdXRfcmVnX2Nvbm5gIGFuZCBgaWVlZTgwMjExX2FkZF9saW5rX2VsZW1zYCwgYm90aCBvZiB3aGljaCBhcmUgdHJpZ2dlcmVkIGR1cmluZyB0aGUgYXNzb2NpYXRpb24gcHJvY2Vzcy4gVGhpcyBpcyBnb29kOyB0aGUgYXNzb2NpYXRpb24gcHJvY2VzcyBpcyBhIGNvbW1vbiBwb2ludCBvZiBlbnRyeSwgYW5kIHRoZXJlZm9yZSwgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc28gdGhlIGxvZ2ljIGlzIGxpa2VseSBjb21wbGV4IGVub3VnaCB0byBiZSB3b3J0aCBhIGRlZXAgZGl2ZS4gSSd2ZSBhbHJlYWR5IGdvdCBteSBzaWdodHMgc2V0IG9uIHRob3NlIGZ1bmN0aW9ucy5cblxuTXkgJ0ZvY3VzU3ltYm9scycgYXJlIHJpZ2h0IG9uIHBvaW50LiBJIG5lZWQgdG8ga2VlcCB0aG9zZSBhdCB0aGUgZm9yZWZyb250IG9mIG15IGludmVzdGlnYXRpb24sIGVzcGVjaWFsbHkgdGhlIGBpZWVlODAyMTFfc2VuZF9hc3NvY2AgZnVuY3Rpb24sIHdoaWNoIGFwcGVhcnMgdG8gYmUgdGhlIHRyaWdnZXIgZm9yIHRoZXNlIG90aGVyIHJvdXRpbmVzLiBJIGFsc28gc2hvdWxkIGtlZXAgYE1BQzgwMjExYCBlbmFibGVkLlxuXG5Ob3csIGxldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgb25seSByZWxldmFudCBjb25maWcsIGFuZCBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGtleSBjb25maWd1cmF0aW9ucyBJIHNob3VsZCBiZSBhd2FyZSBvZiBiZWZvcmUgbW92aW5nIGZvcndhcmQuIEkgd2FudCB0byBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueSBkZXBlbmRlbmNpZXMgdGhhdCBjb3VsZCBpbmZsdWVuY2UgdGhlIGF0dGFjayBzdXJmYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODYyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIzOjA1OjI5Ljg4NTk2MTM5OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzkyMTUxNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cXHRib29sXFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXFxubmV0L21hYzgwMjExL0tjb25maWctNDktXFxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cXHRzdHJpbmdcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXFxcIlNvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBtYWM4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cXHRib29sIFxcXCJFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIkVuYWJsZSBMRUQgdHJpZ2dlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkV4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cXHRib29sIFxcXCJUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXFxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cXHRib29sIFxcXCJTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXFx0Ym9vbCBcXFwiRG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cXHRib29sIFxcXCJWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiVmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTY0LVxcdGJvb2wgXFxcIlZlcmJvc2UgSFQgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTc2LVxcdGJvb2wgXFxcIlZlcmJvc2UgT0NCIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXFx0Ym9vbCBcXFwiVmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTk4LVxcdGJvb2wgXFxcIlZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjEwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXFx0Ym9vbCBcXFwiVmVyYm9zZSBURExTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXFxubmV0L21hYzgwMjExL0tjb25maWctMjk0LVxcdGJvb2wgXFxcIkV4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXFxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVxcdGludCBcXFwiU3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVxcXCIgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMzowNTozMC4xNjUxODIzNDRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDIxNjU5MjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyBhbmQgQ2FsbCBHcmFwaHMqKlxuXG5Pa2F5LCBzbyB0aGUgYmFzZSBjb25maWd1cmF0aW9uIGhlcmUgaXMgYE1BQzgwMjExYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlbid0IG1pc3NlZCBhbnkgcmVsYXRlZCBjb25maWdzIHRoYXQgc2hvdWxkIGFsc28gYmUgZW5hYmxlZCBhbG9uZ3NpZGUgdGhpcyBvbmUuIFRoZSBjb2RlIHNwZWNpZmljYWxseSBtZW50aW9ucyBgTkw4MDIxMV9CQU5EXzZHSFpgLCB3aGljaCwgYXMgSSBrbm93LCBpcyBhIHBhcnQgb2YgdGhlIGBjZmc4MDIxMWAgYW5kIGBtYWM4MDIxMWAgZnJhbWV3b3Jrcy4gSG93ZXZlciwgSSBkb24ndCBzZWUgYW55IG90aGVyICpleHBsaWNpdCogY29uZmlndXJhdGlvbnMgcGVydGFpbmluZyB0byA2R0h6IHRoYXQgaW1tZWRpYXRlbHkganVtcCBvdXQuXG5cbkxldCBtZSByZXZpc2l0IGBpZWVlODAyMTFfcHV0X3JlZ19jb25uYC4gVW5kZXJzdGFuZGluZyBpdHMgdXNhZ2UgaXMga2V5LiBBaCwgaXQncyBjYWxsZWQgYnkgYGllZWU4MDIxMV9hZGRfbGlua19lbGVtc2AsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGBpZWVlODAyMTFfc2VuZF9hc3NvY2AsIHdoaWNoIGl0c2VsZiBpcyBjYWxsZWQgYnkgYGllZWU4MDIxMV9idWlsZF9tbF9yZWNvbmZfcmVxYC4gVGhhdCBjYWxsIGdyYXBoIHByb3ZpZGVzIGEgY2xlYXIgdmlldyBvZiBpdHMgZnVuY3Rpb24uXG5cblRoZXJlZm9yZSwgSSB0aGluayBmb2N1c2luZyBvbiBgaWVlZTgwMjExX3B1dF9yZWdfY29ubmAgYW5kIGBpZWVlODAyMTFfYWRkX2xpbmtfZWxlbXNgIHdpbGwgZ2l2ZSBhIGdvb2QgdW5kZXJzdGFuZGluZywgYW5kIHRyYWNpbmcgdGhlIHBhdGggdGhyb3VnaCBgaWVlZTgwMjExX3NlbmRfYXNzb2NgIHdpbGwgYWxzbyBiZSBoZWxwZnVsLCB3aGljaCBjb3ZlcnMgdGhlIGNydWNpYWwgc3RlcHMgaGVyZS5cblxuTm93LCBJIHRoaW5rIEkgaGF2ZSBhIGNsZWFyIHBpY3R1cmUuIExldCdzIGBzZXQtcmVzdWx0c2AgYW5kIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ2NCwiT3V0cHV0VG9rZW5zIjoxMTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjM6MDU6MzUuMTg2ODQ0NDIzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI1ODgxOTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9wdXRfcmVnX2Nvbm5cIixcbiAgICBcImllZWU4MDIxMV9hZGRfbGlua19lbGVtc1wiLFxuICAgIFwiaWVlZTgwMjExX3NlbmRfYXNzb2NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGFkZGluZyB0aGUgcmVndWxhdG9yeSBjb25uZWN0aXZpdHkgZWxlbWVudCB0byBhc3NvY2lhdGlvbiByZXF1ZXN0cyBpbiBtYWM4MDIxMS4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIHRoYXQgYWZmZWN0cyA2R0h6IGJhbmQgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9wdXRfcmVnX2Nvbm5cIixcbiAgICBcImllZWU4MDIxMV9hZGRfbGlua19lbGVtc1wiLFxuICAgIFwiaWVlZTgwMjExX3NlbmRfYXNzb2NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGFkZGluZyB0aGUgcmVndWxhdG9yeSBjb25uZWN0aXZpdHkgZWxlbWVudCB0byBhc3NvY2lhdGlvbiByZXF1ZXN0cyBpbiBtYWM4MDIxMS4gVGhpcyBpcyByZWFjaGFibGUgZnVuY3Rpb25hbCBjb2RlIHRoYXQgYWZmZWN0cyA2R0h6IGJhbmQgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzfbrv[1] Phase: Succeeded StartedAt: 2026-07-15 23:05:48 +0000 UTC FinishedAt: 2026-07-15 23:05:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-15 23:05:48 +0000 UTC FinishedAt: 2026-07-15 23:05:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[2] Phase: Succeeded StartedAt: 2026-07-15 23:05:48 +0000 UTC FinishedAt: 2026-07-16 04:17:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-15 23:05:48 +0000 UTC FinishedAt: 2026-07-16 04:17:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-15 23:05:48 +0000 UTC FinishedAt: 2026-07-15 23:05:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-15 23:05:48 +0000 UTC FinishedAt: 2026-07-15 23:05:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowzfbrv/series-workflowzfbrv-convert-artifact-3735331738/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-15 23:05:58 +0000 UTC FinishedAt: 2026-07-16 00:11:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-15 23:05:58 +0000 UTC FinishedAt: 2026-07-16 00:11:13 +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:*157c0073-31f3-4334-ab1f-13cfedb7b3c0,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-workflowzfbrv/series-workflowzfbrv-convert-artifact-3735331738/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": "ba633e08-2cf0-4eab-be9f-5a06b534c714", "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-workflowzfbrv/series-workflowzfbrv-build-action-2474898504/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-15 23:05:58 +0000 UTC FinishedAt: 2026-07-16 00:10:47 +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:*157c0073-31f3-4334-ab1f-13cfedb7b3c0,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-workflowzfbrv/series-workflowzfbrv-convert-artifact-3735331738/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": "ba633e08-2cf0-4eab-be9f-5a06b534c714", "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-workflowzfbrv/series-workflowzfbrv-build-action-2474898504/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-16 00:11:13 +0000 UTC FinishedAt: 2026-07-16 00:11:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-16 00:11:13 +0000 UTC FinishedAt: 2026-07-16 00:11:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-16 00:11:13 +0000 UTC FinishedAt: 2026-07-16 00:11:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-16 00:11:13 +0000 UTC FinishedAt: 2026-07-16 00:11:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowzfbrv/series-workflowzfbrv-convert-artifact-3730451189/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-16 00:11:34 +0000 UTC FinishedAt: 2026-07-16 00:13:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-16 00:11:34 +0000 UTC FinishedAt: 2026-07-16 00:13:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ba633e08-2cf0-4eab-be9f-5a06b534c714,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-workflowzfbrv/series-workflowzfbrv-build-action-2474898504/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-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-16 00:13:48 +0000 UTC FinishedAt: 2026-07-16 00:13:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-16 00:13:48 +0000 UTC FinishedAt: 2026-07-16 00:13:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-16 00:13:48 +0000 UTC FinishedAt: 2026-07-16 01:12:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-16 00:13:48 +0000 UTC FinishedAt: 2026-07-16 01:12:04 +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:*157c0073-31f3-4334-ab1f-13cfedb7b3c0,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-workflowzfbrv/series-workflowzfbrv-convert-artifact-3730451189/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": "82fc71bc-26c2-4d9f-9ab9-fbeefd252921", "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-workflowzfbrv/series-workflowzfbrv-build-action-1932209409/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-16 00:13:48 +0000 UTC FinishedAt: 2026-07-16 01:11:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*157c0073-31f3-4334-ab1f-13cfedb7b3c0,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-workflowzfbrv/series-workflowzfbrv-convert-artifact-3730451189/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": "82fc71bc-26c2-4d9f-9ab9-fbeefd252921", "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-workflowzfbrv/series-workflowzfbrv-build-action-1932209409/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-16 01:12:04 +0000 UTC FinishedAt: 2026-07-16 01:12:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-16 01:12:04 +0000 UTC FinishedAt: 2026-07-16 01:12:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-16 01:12:04 +0000 UTC FinishedAt: 2026-07-16 01:14:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-16 01:12:04 +0000 UTC FinishedAt: 2026-07-16 01:13:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*82fc71bc-26c2-4d9f-9ab9-fbeefd252921,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-workflowzfbrv/series-workflowzfbrv-build-action-1932209409/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-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-16 01:14:03 +0000 UTC FinishedAt: 2026-07-16 04:17:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-16 01:14:03 +0000 UTC FinishedAt: 2026-07-16 04:17:04 +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":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"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:*ba633e08-2cf0-4eab-be9f-5a06b534c714,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*82fc71bc-26c2-4d9f-9ab9-fbeefd252921,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-workflowzfbrv/series-workflowzfbrv-build-action-2474898504/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-workflowzfbrv/series-workflowzfbrv-build-action-1932209409/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-16 01:14:03 +0000 UTC FinishedAt: 2026-07-16 01:14:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-16 01:14:03 +0000 UTC FinishedAt: 2026-07-16 01:14:08 +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":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"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-workflowzfbrv/series-workflowzfbrv-convert-artifact-1903569114/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-16 01:14:03 +0000 UTC FinishedAt: 2026-07-16 01:14:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-16 01:14:03 +0000 UTC FinishedAt: 2026-07-16 01:14:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-16 01:14:03 +0000 UTC FinishedAt: 2026-07-16 01:14:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-16 01:14:13 +0000 UTC FinishedAt: 2026-07-16 04:17:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzfbrv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_put_reg_conn","ieee80211_add_link_elems","ieee80211_send_assoc"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ac798f757d6475dc6fee2ec899980d6740714596","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"e7babeed-582d-488e-80a7-23b7725e923f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-16 01:14:13 +0000 UTC FinishedAt: 2026-07-16 04:16:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ba633e08-2cf0-4eab-be9f-5a06b534c714,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*82fc71bc-26c2-4d9f-9ab9-fbeefd252921,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-workflowzfbrv/series-workflowzfbrv-build-action-2474898504/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-workflowzfbrv/series-workflowzfbrv-build-action-1932209409/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-workflowzfbrv/series-workflowzfbrv-convert-artifact-1903569114/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,}