Name: series-workflowfrxtx Phase: Succeeded StartedAt: 2026-09-04 05:42:12 +0000 UTC FinishedAt: 2026-09-04 09:48:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[0] Phase: Succeeded StartedAt: 2026-09-04 05:42:12 +0000 UTC FinishedAt: 2026-09-04 06:08:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[0].run-triage Phase: Succeeded StartedAt: 2026-09-04 05:42:12 +0000 UTC FinishedAt: 2026-09-04 06:08:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "adf50c47a47f0f0f0b79dd58ffade9919cddebea", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "adf50c47a47f0f0f0b79dd58ffade9919cddebea", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6" ], "series_id": "3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ipv6_flowlabel_opt", "ipv6_flowlabel_get", "fl_sock_at_lease_limit" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcHY2X2Zsb3dsYWJlbF9vcHQmIzM0OywKICAgICYjMzQ7aXB2Nl9mbG93bGFiZWxfZ2V0JiMzNDssCiAgICAmIzM0O2ZsX3NvY2tfYXRfbGVhc2VfbGltaXQmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KClgIGFuZCBhZGRzIGFuIGBGTF9NQVhfUEVSX1NPQ0tgIGNhcGFjaXR5IGNoZWNrIHdoZW4gYXR0YWNoaW5nL2xlYXNpbmcgZXhpc3RpbmcgSVB2NiBmbG93IGxhYmVscyBpbiBgaXB2Nl9mbG93bGFiZWxfZ2V0KClgLiBcblxuVGhlIGNoYW5nZXMgb25seSBpbnRyb2R1Y2UgYSBjb3VudGVyLWJhc2VkIGxvb3AgaXRlcmF0aW5nIG92ZXIgYW4gZXhpc3RpbmcgUkNVLXByb3RlY3RlZCBsaXN0IGFuZCBhbiBlcnJvciBicmFuY2ggKGAtRU5PQlVGU2ApIHVuZGVyIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KClgLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBhbGxvY2F0ZWQsIHJlYWQsIG9yIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgYXJlIGFueSBidWZmZXIgbGVuZ3RocyBvciBkYXRhIHN0cnVjdHVyZXMgbW9kaWZpZWQgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBkYXRhLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBwZXItc29ja2V0IGxpbWl0IGNoZWNrIChmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KSB0byBwcmV2ZW50IHVucHJpdmlsZWdlZCB1c2VycyBmcm9tIGFjcXVpcmluZyBleGNlc3NpdmUgZmxvd2xhYmVscyB2aWEgaXB2Nl9mbG93bGFiZWxfZ2V0KCkuIFRoaXMgbW9kaWZpZXMgY29yZSBJUHY2IG5ldHdvcmtpbmcgbG9naWMgZGlyZWN0bHkgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzZXRzb2Nrb3B0KFNPTF9JUFY2LCBJUFY2X0ZMT1dMQUJFTF9NR1IsIC4uLikgd2l0aCBJUFY2X0ZMX0FfR0VULiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZGQ4ODhlYmEzMDk3NTJhZDgzNmYzYzY1OTExODQzYWFiMzJjODY0Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMDY6MDc6NDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jIGIvbmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jXG5pbmRleCAxYWI1YWQwZGNmMjRmLi4wMDY1ODVkYzhiNWM2IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNcbkBAIC00NjEsNiAmIzQzOzQ2MSwyMSBAQCBmbF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpbjZfZmxvd2xhYmVsX3JlcSAqZnJlcSxcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbiYjNDM7c3RhdGljIGJvb2wgZmxfc29ja19hdF9sZWFzZV9saW1pdChjb25zdCBzdHJ1Y3Qgc29jayAqc2spXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgaXB2Nl9mbF9zb2NrbGlzdCAqc2ZsO1xuJiM0MztcdGludCBjb3VudCA9IDA7XG4mIzQzO1xuJiM0MztcdHJjdV9yZWFkX2xvY2soKTtcbiYjNDM7XHRmb3JfZWFjaF9za19mbF9yY3Uoc2ssIHNmbCkge1xuJiM0MztcdFx0aWYgKCYjNDM7JiM0Mztjb3VudCBcdTAwM2U9IEZMX01BWF9QRVJfU09DSylcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcdHJjdV9yZWFkX3VubG9jaygpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gY291bnQgXHUwMDNlPSBGTF9NQVhfUEVSX1NPQ0s7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBtZW1fY2hlY2soc3RydWN0IHNvY2sgKnNrKVxuIHtcbiBcdGNvbnN0IGludCB1bnByaXZfdG90YWxfbGltaXQgPSBGTF9NQVhfU0laRSAtIChGTF9NQVhfU0laRSAvIDQpO1xuQEAgLTY3OSw2ICYjNDM7Njk0LDEwIEBAIHN0YXRpYyBpbnQgaXB2Nl9mbG93bGFiZWxfZ2V0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGluNl9mbG93bGFiZWxfcmVxICpmcmVxLFxuIFx0XHRcdGVyciA9IC1FTk9NRU07XG4gXHRcdFx0aWYgKCFzZmwxKVxuIFx0XHRcdFx0Z290byByZWxlYXNlO1xuJiM0MztcdFx0XHRlcnIgPSAtRU5PQlVGUztcbiYjNDM7XHRcdFx0aWYgKGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoc2spIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0XHQgICAgIWNhcGFibGUoQ0FQX05FVF9BRE1JTikpXG4mIzQzO1x0XHRcdFx0Z290byByZWxlYXNlO1xuIFx0XHRcdGlmIChmbC1cdTAwM2VsaW5nZXIgXHUwMDNlIGZsMS1cdTAwM2VsaW5nZXIpXG4gXHRcdFx0XHRmbDEtXHUwMDNlbGluZ2VyID0gZmwtXHUwMDNlbGluZ2VyO1xuIFx0XHRcdGlmICgobG9uZykoZmwtXHUwMDNlZXhwaXJlcyAtIGZsMS1cdTAwM2VleHBpcmVzKSBcdTAwM2UgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNjowNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXB2Nl9mbG93bGFiZWxfb3B0JiMzNDssCiAgICAmIzM0O2lwdjZfZmxvd2xhYmVsX2dldCYjMzQ7LAogICAgJiMzNDtmbF9zb2NrX2F0X2xlYXNlX2xpbWl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBwZXItc29ja2V0IGxpbWl0IGNoZWNrIChmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KSB0byBwcmV2ZW50IHVucHJpdmlsZWdlZCB1c2VycyBmcm9tIGFjcXVpcmluZyBleGNlc3NpdmUgZmxvd2xhYmVscyB2aWEgaXB2Nl9mbG93bGFiZWxfZ2V0KCkuIFRoaXMgbW9kaWZpZXMgY29yZSBJUHY2IG5ldHdvcmtpbmcgbG9naWMgZGlyZWN0bHkgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzZXRzb2Nrb3B0KFNPTF9JUFY2LCBJUFY2X0ZMT1dMQUJFTF9NR1IsIC4uLikgd2l0aCBJUFY2X0ZMX0FfR0VULiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZGQ4ODhlYmEzMDk3NTJhZDgzNmYzYzY1OTExODQzYWFiMzJjODY0YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDQgMDY6MDc6NDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMgYi9uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMKaW5kZXggMWFiNWFkMGRjZjI0Zi4uMDA2NTg1ZGM4YjVjNiAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L2lwNl9mbG93bGFiZWwuYwpAQCAtNDYxLDYgJiM0Mzs0NjEsMjEgQEAgZmxfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaW42X2Zsb3dsYWJlbF9yZXEgKmZyZXEsCiAJcmV0dXJuIE5VTEw7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KGNvbnN0IHN0cnVjdCBzb2NrICpzaykKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBpcHY2X2ZsX3NvY2tsaXN0ICpzZmw7CiYjNDM7CWludCBjb3VudCA9IDA7CiYjNDM7CiYjNDM7CXJjdV9yZWFkX2xvY2soKTsKJiM0MzsJZm9yX2VhY2hfc2tfZmxfcmN1KHNrLCBzZmwpIHsKJiM0MzsJCWlmICgmIzQzOyYjNDM7Y291bnQgJmd0Oz0gRkxfTUFYX1BFUl9TT0NLKQomIzQzOwkJCWJyZWFrOwomIzQzOwl9CiYjNDM7CXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwomIzQzOwlyZXR1cm4gY291bnQgJmd0Oz0gRkxfTUFYX1BFUl9TT0NLOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgbWVtX2NoZWNrKHN0cnVjdCBzb2NrICpzaykKIHsKIAljb25zdCBpbnQgdW5wcml2X3RvdGFsX2xpbWl0ID0gRkxfTUFYX1NJWkUgLSAoRkxfTUFYX1NJWkUgLyA0KTsKQEAgLTY3OSw2ICYjNDM7Njk0LDEwIEBAIHN0YXRpYyBpbnQgaXB2Nl9mbG93bGFiZWxfZ2V0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGluNl9mbG93bGFiZWxfcmVxICpmcmVxLAogCQkJZXJyID0gLUVOT01FTTsKIAkJCWlmICghc2ZsMSkKIAkJCQlnb3RvIHJlbGVhc2U7CiYjNDM7CQkJZXJyID0gLUVOT0JVRlM7CiYjNDM7CQkJaWYgKGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoc2spICZhbXA7JmFtcDsKJiM0MzsJCQkgICAgIWNhcGFibGUoQ0FQX05FVF9BRE1JTikpCiYjNDM7CQkJCWdvdG8gcmVsZWFzZTsKIAkJCWlmIChmbC0mZ3Q7bGluZ2VyICZndDsgZmwxLSZndDtsaW5nZXIpCiAJCQkJZmwxLSZndDtsaW5nZXIgPSBmbC0mZ3Q7bGluZ2VyOwogCQkJaWYgKChsb25nKShmbC0mZ3Q7ZXhwaXJlcyAtIGZsMS0mZ3Q7ZXhwaXJlcykgJmd0OyAwKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTQyCgkJCQkJCQlvdXRwdXQ6IDgwCgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJUHY2IEZsb3dsYWJlbCBQYXRjaCoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW4uIEkgbmVlZCB0byBnZXQgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCB0aGlzIHBhdGNoIGlzIGRvaW5nLiBUaGUgZmlyc3Qgc3RlcCBpcyBhbHdheXMgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGxvY2F0aW9uIG9mIHRoZSBjaGFuZ2VzLCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIGBuZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNgLiBOb3csIHdpdGggdGhlIGZpbGUgaWRlbnRpZmllZCwgSSBuZWVkIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O2xsIHB1bGwgdXAgYGdyZXBwZXJgIChvciBwb3NzaWJseSBqdXN0IGEgcXVpY2sgYHJlYWQtZmlsZWAgY29tbWFuZCwgZGVwZW5kaW5nIG9uIHRoZSBzY2FsZSkgdG8gcXVpY2tseSBleGFtaW5lIGBuZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNgIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIGBLY29uZmlnYCBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gZmxhZ3MsIGFzIHdlbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDY6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQ1NTpcdGRvbmU6XG4gNDU2Olx0XHRpZiAoZmwpIHtcbiA0NTc6XHRcdFx0a2ZyZWUoZmwtXHUwMDNlb3B0KTtcbiA0NTg6XHRcdFx0a2ZyZWUoZmwpO1xuIDQ1OTpcdFx0fVxuIDQ2MDpcdFx0KmVycl9wID0gZXJyO1xuIDQ2MTpcdFx0cmV0dXJuIE5VTEw7XG4gNDYyOlx0fVxuIDQ2MzpcdFxuIDQ2NDpcdHN0YXRpYyBib29sIGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrKVxuIDQ2NTpcdHtcbiA0NjY6XHRcdGNvbnN0IHN0cnVjdCBpcHY2X2ZsX3NvY2tsaXN0ICpzZmw7XG4gNDY3Olx0XHRpbnQgY291bnQgPSAwO1xuIDQ2ODpcdFxuIDQ2OTpcdFx0cmN1X3JlYWRfbG9jaygpO1xuIDQ3MDpcdFx0Zm9yX2VhY2hfc2tfZmxfcmN1KHNrLCBzZmwpIHtcbiA0NzE6XHRcdFx0aWYgKCYjNDM7JiM0Mztjb3VudCBcdTAwM2U9IEZMX01BWF9QRVJfU09DSylcbiA0NzI6XHRcdFx0XHRicmVhaztcbiA0NzM6XHRcdH1cbiA0NzQ6XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIDQ3NTpcdFxuIDQ3NjpcdFx0cmV0dXJuIGNvdW50IFx1MDAzZT0gRkxfTUFYX1BFUl9TT0NLO1xuIDQ3NzpcdH1cbiA0Nzg6XHRcbiA0Nzk6XHRzdGF0aWMgaW50IG1lbV9jaGVjayhzdHJ1Y3Qgc29jayAqc2spXG4gNDgwOlx0e1xuIDQ4MTpcdFx0Y29uc3QgaW50IHVucHJpdl90b3RhbF9saW1pdCA9IEZMX01BWF9TSVpFIC0gKEZMX01BWF9TSVpFIC8gNCk7XG4gNDgyOlx0XHRjb25zdCBpbnQgdW5wcml2X3VzZXJfbGltaXQgPSB1bnByaXZfdG90YWxfbGltaXQgLyAyO1xuIDQ4MzpcdFx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xuIDQ4NDpcdFx0aW50IHJvb207XG4gNDg1Olx0XHRzdHJ1Y3QgaXB2Nl9mbF9zb2NrbGlzdCAqc2ZsO1xuIDQ4NjpcdFx0aW50IGNvdW50ID0gMDtcbiA0ODc6XHRcbiA0ODg6XHRcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2aXA2X2ZsX2xvY2spO1xuIDQ4OTpcdFxuIDQ5MDpcdFx0cm9vbSA9IEZMX01BWF9TSVpFIC0gZmxfc2l6ZTtcbiA0OTE6XHRcbiA0OTI6XHRcdGlmIChyb29tIFx1MDAzZSBGTF9NQVhfU0laRSAtIEZMX01BWF9QRVJfU09DSylcbiA0OTM6XHRcdFx0cmV0dXJuIDA7XG4gNDk0Olx0XG4gNDk1Olx0XHRyY3VfcmVhZF9sb2NrKCk7XG4gNDk2Olx0XHRmb3JfZWFjaF9za19mbF9yY3Uoc2ssIHNmbClcbiA0OTc6XHRcdFx0Y291bnQmIzQzOyYjNDM7O1xuIDQ5ODpcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gNDk5Olx0XG4gNTAwOlx0XHRpZiAocm9vbSBcdTAwM2M9IDAgfHxcbiA1MDE6XHRcdCAgICAoKGNvdW50IFx1MDAzZT0gRkxfTUFYX1BFUl9TT0NLIHx8XG4gNTAyOlx0XHQgICAgICAoY291bnQgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IHJvb20gXHUwMDNjIEZMX01BWF9TSVpFIC8gMikgfHxcbiA1MDM6XHRcdCAgICAgIHJvb20gXHUwMDNjIEZMX01BWF9TSVpFIC8gNCB8fFxuIDUwNDpcdFx0ICAgICAgbmV0LVx1MDAzZWlwdjYuZmxvd2xhYmVsX2NvdW50IFx1MDAzZT0gdW5wcml2X3VzZXJfbGltaXQpIFx1MDAyNlx1MDAyNlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2NzA6XHRcdFx0XHRcdGZsMSA9IHNmbC1cdTAwM2VmbDtcbiA2NzE6XHRcdFx0XHRcdGlmICghYXRvbWljX2luY19ub3RfemVybyhcdTAwMjZmbDEtXHUwMDNldXNlcnMpKVxuIDY3MjpcdFx0XHRcdFx0XHRmbDEgPSBOVUxMO1xuIDY3MzpcdFx0XHRcdFx0YnJlYWs7XG4gNjc0Olx0XHRcdFx0fVxuIDY3NTpcdFx0XHR9XG4gNjc2Olx0XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIDY3NzpcdFxuIDY3ODpcdFx0XHRpZiAoIWZsMSlcbiA2Nzk6XHRcdFx0XHRmbDEgPSBmbF9sb29rdXAobmV0LCBmcmVxLVx1MDAzZWZscl9sYWJlbCk7XG4gNjgwOlx0XHRcdGlmIChmbDEpIHtcbiA2ODE6XHRyZWNoZWNrOlxuIDY4MjpcdFx0XHRcdGVyciA9IC1FRVhJU1Q7XG4gNjgzOlx0XHRcdFx0aWYgKGZyZXEtXHUwMDNlZmxyX2ZsYWdzXHUwMDI2SVBWNl9GTF9GX0VYQ0wpXG4gNjg0Olx0XHRcdFx0XHRnb3RvIHJlbGVhc2U7XG4gNjg1Olx0XHRcdFx0ZXJyID0gLUVQRVJNO1xuIDY4NjpcdFx0XHRcdGlmIChmbDEtXHUwMDNlc2hhcmUgPT0gSVBWNl9GTF9TX0VYQ0wgfHxcbiA2ODc6XHRcdFx0XHQgICAgZmwxLVx1MDAzZXNoYXJlICE9IGZsLVx1MDAzZXNoYXJlIHx8XG4gNjg4Olx0XHRcdFx0ICAgICgoZmwxLVx1MDAzZXNoYXJlID09IElQVjZfRkxfU19QUk9DRVNTKSBcdTAwMjZcdTAwMjZcbiA2ODk6XHRcdFx0XHQgICAgIChmbDEtXHUwMDNlb3duZXIucGlkICE9IGZsLVx1MDAzZW93bmVyLnBpZCkpIHx8XG4gNjkwOlx0XHRcdFx0ICAgICgoZmwxLVx1MDAzZXNoYXJlID09IElQVjZfRkxfU19VU0VSKSBcdTAwMjZcdTAwMjZcbiA2OTE6XHRcdFx0XHQgICAgICF1aWRfZXEoZmwxLVx1MDAzZW93bmVyLnVpZCwgZmwtXHUwMDNlb3duZXIudWlkKSkpXG4gNjkyOlx0XHRcdFx0XHRnb3RvIHJlbGVhc2U7XG4gNjkzOlx0XG4gNjk0Olx0XHRcdFx0ZXJyID0gLUVOT01FTTtcbiA2OTU6XHRcdFx0XHRpZiAoIXNmbDEpXG4gNjk2Olx0XHRcdFx0XHRnb3RvIHJlbGVhc2U7XG4gNjk3Olx0XHRcdFx0ZXJyID0gLUVOT0JVRlM7XG4gNjk4Olx0XHRcdFx0aWYgKGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoc2spIFx1MDAyNlx1MDAyNlxuIDY5OTpcdFx0XHRcdCAgICAhY2FwYWJsZShDQVBfTkVUX0FETUlOKSlcbiA3MDA6XHRcdFx0XHRcdGdvdG8gcmVsZWFzZTtcbiA3MDE6XHRcdFx0XHRpZiAoZmwtXHUwMDNlbGluZ2VyIFx1MDAzZSBmbDEtXHUwMDNlbGluZ2VyKVxuIDcwMjpcdFx0XHRcdFx0ZmwxLVx1MDAzZWxpbmdlciA9IGZsLVx1MDAzZWxpbmdlcjtcbiA3MDM6XHRcdFx0XHRpZiAoKGxvbmcpKGZsLVx1MDAzZWV4cGlyZXMgLSBmbDEtXHUwMDNlZXhwaXJlcykgXHUwMDNlIDApXG4gNzA0Olx0XHRcdFx0XHRmbDEtXHUwMDNlZXhwaXJlcyA9IGZsLVx1MDAzZWV4cGlyZXM7XG4gNzA1Olx0XHRcdFx0ZmxfbGluayhzaywgc2ZsMSwgZmwxKTtcbiA3MDY6XHRcdFx0XHRmbF9mcmVlKGZsKTtcbiA3MDc6XHRcdFx0XHRyZXR1cm4gMDtcbiA3MDg6XHRcbiA3MDk6XHRyZWxlYXNlOlxuIDcxMDpcdFx0XHRcdGZsX3JlbGVhc2UoZmwxKTtcbiA3MTE6XHRcdFx0XHRnb3RvIGRvbmU7XG4gNzEyOlx0XHRcdH1cbiA3MTM6XHRcdH1cbiA3MTQ6XHRcdGVyciA9IC1FTk9FTlQ7XG4gNzE1Olx0XHRpZiAoIShmcmVxLVx1MDAzZWZscl9mbGFncyBcdTAwMjYgSVBWNl9GTF9GX0NSRUFURSkpXG4gNzE2Olx0XHRcdGdvdG8gZG9uZTtcbiA3MTc6XHRcbiA3MTg6XHRcdGVyciA9IC1FTk9NRU07XG4gNzE5Olx0XHRpZiAoIXNmbDEpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkwNwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVB2NiBGbG93IExhYmVsIE1hbmFnZW1lbnQgQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGlwdjZfZmxvd2xhYmVsX2dldGAuIFRoaXMgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkIHNwZWNpZmljYWxseSB3aGVuIGEgdXNlcnNwYWNlIGFwcGxpY2F0aW9uIHVzZXMgYHNldHNvY2tvcHRgIHdpdGggdGhlIGBJUFY2X0ZMT1dMQUJFTF9NR1JgIG9wdGlvbiBvbiBhbiBJUHY2IHNvY2tldC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIFdoZXJlIGV4YWN0bHkgaXMgYGlwNl9mbG93bGFiZWwuY2AgY29tcGlsZWQ/IEFuZCBtb3JlIGltcG9ydGFudGx5LCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBjb250cm9sIGl0cyBpbmNsdXNpb24gb3IgZXhjbHVzaW9uIGR1cmluZyB0aGUga2VybmVsIGJ1aWxkPyBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMgdG8gc2VlIHdoYXQgZmVhdHVyZXMgb3IgbW9kdWxlcyByZWx5IG9uIGl0IGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMgaXQmIzM5O3MgZW5hYmxlZC4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9uIG90aGVyIHBhcnRzIG9mIHRoZSBuZXR3b3JrIHN0YWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwNl9mbG93bGFiZWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvTWFrZWZpbGU9OD1pcHY2LXkgOj1cdGFmX2luZXQ2Lm8gYW55Y2FzdC5vIGlwNl9vdXRwdXQubyBpcDZfaW5wdXQubyBhZGRyY29uZi5vIFxcXG4tLVxubmV0L2lwdjYvTWFrZWZpbGUtMTEtXHRcdHJhdy5vIGljbXAubyBtY2FzdC5vIHJlYXNzZW1ibHkubyB0Y3BfaXB2Ni5vIHBpbmcubyBcXFxubmV0L2lwdjYvTWFrZWZpbGU6MTI6XHRcdGV4dGhkcnMubyBkYXRhZ3JhbS5vIGlwNl9mbG93bGFiZWwubyBpbmV0Nl9jb25uZWN0aW9uX3NvY2subyBcXFxubmV0L2lwdjYvTWFrZWZpbGUtMTMtXHRcdHVkcF9vZmZsb2FkLm8gc2VnNi5vIGZpYjZfbm90aWZpZXIubyBycGwubyBpb2FtNi5vXG4tLVxubmV0L2lwdjYvYWZfaW5ldDYuYz05OTk9c3RhdGljIGludCBfX2luaXQgaW5ldDZfaW5pdCh2b2lkKVxuLS1cbm5ldC9pcHY2L2FmX2luZXQ2LmMtMTA4NS1cdFx0Z290byBuZGlzY19sYXRlX2ZhaWw7XG5uZXQvaXB2Ni9hZl9pbmV0Ni5jOjEwODY6XHRlcnIgPSBpcDZfZmxvd2xhYmVsX2luaXQoKTtcbm5ldC9pcHY2L2FmX2luZXQ2LmMtMTA4Ny1cdGlmIChlcnIpXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jOjEwODg6XHRcdGdvdG8gaXA2X2Zsb3dsYWJlbF9mYWlsO1xubmV0L2lwdjYvYWZfaW5ldDYuYy0xMDg5LVx0ZXJyID0gaXB2Nl9hbnljYXN0X2luaXQoKTtcbi0tXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTExODUtaXB2Nl9hbnljYXN0X2ZhaWw6XG5uZXQvaXB2Ni9hZl9pbmV0Ni5jOjExODY6XHRpcDZfZmxvd2xhYmVsX2NsZWFudXAoKTtcbm5ldC9pcHY2L2FmX2luZXQ2LmM6MTE4NzppcDZfZmxvd2xhYmVsX2ZhaWw6XG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTExODgtXHRuZGlzY19sYXRlX2NsZWFudXAoKTtcbi0tXG5uZXQvaXB2Ni9kYXRhZ3JhbS5jPTcyPWludCBpcDZfZGF0YWdyYW1fZHN0X3VwZGF0ZShzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgZml4X3NrX3NhZGRyKVxubmV0L2lwdjYvZGF0YWdyYW0uYy03My17XG5uZXQvaXB2Ni9kYXRhZ3JhbS5jOjc0Olx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsb3dsYWJlbCA9IE5VTEw7XG5uZXQvaXB2Ni9kYXRhZ3JhbS5jLTc1LVx0c3RydWN0IGluZXRfc29jayAqaW5ldCA9IGluZXRfc2soc2spO1xuLS1cbm5ldC9pcHY2L2ljbXAuYz05MjE9c3RhdGljIGVudW0gc2tiX2Ryb3BfcmVhc29uIGljbXB2Nl9lY2hvX3JlcGx5KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvaWNtcC5jLTk2NC1cdCAgICBGTE9XTEFCRUxfUkVGTEVDVF9JQ01QVjZfRUNIT19SRVBMSUVTKVxubmV0L2lwdjYvaWNtcC5jOjk2NTpcdFx0Zmw2LmZsb3dsYWJlbCA9IGlwNl9mbG93bGFiZWwoaXB2Nl9oZHIoc2tiKSk7XG5uZXQvaXB2Ni9pY21wLmMtOTY2LVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0yLS8qXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MzogKlx0aXA2X2Zsb3dsYWJlbC5jXHRcdElQdjYgZmxvd2xhYmVsIG1hbmFnZXIuXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNC0gKlxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz00Mz1zdGF0aWMgaW50IGZsX3NpemU7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NDQ6c3RhdGljIHN0cnVjdCBpcDZfZmxvd2xhYmVsIF9fcmN1ICpmbF9odFtGTF9IQVNIX01BU0smIzQzOzFdO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTQ1LVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz01OD1FWFBPUlRfU1lNQk9MKGlwdjZfZmxvd2xhYmVsX2V4Y2x1c2l2ZSk7XG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTczLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjc0OnN0YXRpYyBpbmxpbmUgc3RydWN0IGlwNl9mbG93bGFiZWwgKl9fZmxfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCwgX19iZTMyIGxhYmVsKVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTc1LXtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo3NjpcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbDtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03Ny1cbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODQtXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6ODU6c3RhdGljIHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbF9sb29rdXAoc3RydWN0IG5ldCAqbmV0LCBfX2JlMzIgbGFiZWwpXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODYte1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjg3Olx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTg4LVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05Ni1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo5NzpzdGF0aWMgYm9vbCBmbF9zaGFyZWRfZXhjbHVzaXZlKHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbClcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05OC17XG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTEwND1zdGF0aWMgdm9pZCBmbF9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMTA1LXtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoxMDY6XHRzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmwgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IGlwNl9mbG93bGFiZWwsIHJjdSk7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMTA3LVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0xMTQtXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MTE1OnN0YXRpYyB2b2lkIGZsX2ZyZWUoc3RydWN0IGlwNl9mbG93bGFiZWwgKmZsKVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTExNi17XG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTEyNS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoxMjY6c3RhdGljIHZvaWQgZmxfcmVsZWFzZShzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmwpXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMTI3LXtcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9MTQzPXN0YXRpYyB2b2lkIGlwNl9mbF9nYyhzdHJ1Y3QgdGltZXJfbGlzdCAqdW51c2VkKVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0xNTEtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYz0gRkxfSEFTSF9NQVNLOyBpJiM0MzsmIzQzOykge1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjE1MjpcdFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjE1MzpcdFx0c3RydWN0IGlwNl9mbG93bGFiZWwgX19yY3UgKipmbHA7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMTU0LVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz0xODQ9c3RhdGljIHZvaWQgX19uZXRfZXhpdCBpcDZfZmxfcHVyZ2Uoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0xODktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYz0gRkxfSEFTSF9NQVNLOyBpJiM0MzsmIzQzOykge1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjE5MDpcdFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjE5MTpcdFx0c3RydWN0IGlwNl9mbG93bGFiZWwgX19yY3UgKipmbHA7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMTkyLVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0yMDktXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MjEwOnN0YXRpYyBzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmxfaW50ZXJuKHN0cnVjdCBuZXQgKm5ldCxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoyMTE6XHRcdFx0XHQgICAgICAgc3RydWN0IGlwNl9mbG93bGFiZWwgKmZsLCBfX2JlMzIgbGFiZWwpXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMjEyLXtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoyMTM6XHRzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqbGZsO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTIxNC1cbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMjU1LVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjI1NjpzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqX19mbDZfc29ja19sb29rdXAoc3RydWN0IHNvY2sgKnNrLCBfX2JlMzIgbGFiZWwpXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMjU3LXtcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMjYzLVx0Zm9yX2VhY2hfc2tfZmxfcmN1KHNrLCBzZmwpIHtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoyNjQ6XHRcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCA9IHNmbC1cdTAwM2VmbDtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0yNjUtXG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTMwOD1zdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKmZsNl9tZXJnZV9vcHRpb25zKHN0cnVjdCBpcHY2X3R4b3B0aW9ucyAqb3B0X3NwYWNlLFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjMwOTpcdFx0XHRcdFx0IHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0zMTAtXHRcdFx0XHRcdCBzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKmZvcHQpXG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTMzNz1zdGF0aWMgdW5zaWduZWQgbG9uZyBjaGVja19saW5nZXIodW5zaWduZWQgbG9uZyB0dGwpXG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTM0NS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzozNDY6c3RhdGljIGludCBmbDZfcmVuZXcoc3RydWN0IGlwNl9mbG93bGFiZWwgKmZsLCB1bnNpZ25lZCBsb25nIGxpbmdlciwgdW5zaWduZWQgbG9uZyBleHBpcmVzKVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTM0Ny17XG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTM2Ny1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzozNjg6c3RhdGljIHN0cnVjdCBpcDZfZmxvd2xhYmVsICpcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0zNjktZmxfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaW42X2Zsb3dsYWJlbF9yZXEgKmZyZXEsXG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTM3MS17XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MzcyOlx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsID0gTlVMTDtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0zNzMtXHRpbnQgb2xlbjtcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9NTExPXN0YXRpYyBpbmxpbmUgdm9pZCBmbF9saW5rKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGlwdjZfZmxfc29ja2xpc3QgKnNmbCxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo1MTI6XHRcdFx0ICAgc3RydWN0IGlwNl9mbG93bGFiZWwgKmZsKVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTUxMy17XG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTU5OD1zdGF0aWMgaW50IGlwdjZfZmxvd2xhYmVsX3JlbmV3KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGluNl9mbG93bGFiZWxfcmVxICpmcmVxKVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy02MTYtXHQgICAgbnNfY2FwYWJsZShuZXQtXHUwMDNldXNlcl9ucywgQ0FQX05FVF9BRE1JTikpIHtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo2MTc6XHRcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCA9IGZsX2xvb2t1cChuZXQsIGZyZXEtXHUwMDNlZmxyX2xhYmVsKTtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy02MTgtXG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTYyOT1zdGF0aWMgaW50IGlwdjZfZmxvd2xhYmVsX2dldChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpbjZfZmxvd2xhYmVsX3JlcSAqZnJlcSxcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNjMyLVx0c3RydWN0IGlwdjZfZmxfc29ja2xpc3QgKnNmbCwgKnNmbDEgPSBOVUxMO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjYzMzpcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCwgKmZsMSA9IE5VTEw7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNjM0LVx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz03Nzg9c3RydWN0IGlwNmZsX2l0ZXJfc3RhdGUge1xuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03ODUtXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6Nzg2OnN0YXRpYyBzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqaXA2ZmxfZ2V0X2ZpcnN0KHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTc4Ny17XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6Nzg4Olx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsID0gTlVMTDtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03ODktXHRzdHJ1Y3QgaXA2ZmxfaXRlcl9zdGF0ZSAqc3RhdGUgPSBpcDZmbF9zZXFfcHJpdmF0ZShzZXEpO1xuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy04MDItXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6ODAzOnN0YXRpYyBzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqaXA2ZmxfZ2V0X25leHQoc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbClcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy04MDQte1xuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy04MjYtXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6ODI3OnN0YXRpYyBzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqaXA2ZmxfZ2V0X2lkeChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgbG9mZl90IHBvcylcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy04Mjgte1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjgyOTpcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCA9IGlwNmZsX2dldF9maXJzdChzZXEpO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTgzMC1cdGlmIChmbClcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9ODQ3PXN0YXRpYyB2b2lkICppcDZmbF9zZXFfbmV4dChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdiwgbG9mZl90ICpwb3MpXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODQ4LXtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo4NDk6XHRzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmw7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODUwLVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz04NjU9c3RhdGljIGludCBpcDZmbF9zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODcwLVx0fSBlbHNlIHtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo4NzE6XHRcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCA9IHY7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODcyLVx0XHRzZXFfcHJpbnRmKHNlcSxcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9ODkwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2VxX29wZXJhdGlvbnMgaXA2Zmxfc2VxX29wcyA9IHtcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODk2LVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjg5NzpzdGF0aWMgaW50IF9fbmV0X2luaXQgaXA2X2Zsb3dsYWJlbF9wcm9jX2luaXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTg5OC17XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6ODk5Olx0aWYgKCFwcm9jX2NyZWF0ZV9uZXQoXCYjMzQ7aXA2X2Zsb3dsYWJlbFwmIzM0OywgMDQ0NCwgbmV0LVx1MDAzZXByb2NfbmV0LFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkwMC1cdFx0XHRcdTAwMjZpcDZmbF9zZXFfb3BzLCBzaXplb2Yoc3RydWN0IGlwNmZsX2l0ZXJfc3RhdGUpKSlcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTA0LVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkwNTpzdGF0aWMgdm9pZCBfX25ldF9leGl0IGlwNl9mbG93bGFiZWxfcHJvY19maW5pKHN0cnVjdCBuZXQgKm5ldClcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05MDYte1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkwNzpcdHJlbW92ZV9wcm9jX2VudHJ5KFwmIzM0O2lwNl9mbG93bGFiZWxcJiMzNDssIG5ldC1cdTAwM2Vwcm9jX25ldCk7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTA4LX1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05MDktI2Vsc2Vcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo5MTA6c3RhdGljIGlubGluZSBpbnQgaXA2X2Zsb3dsYWJlbF9wcm9jX2luaXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkxMS17XG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkxMy19XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTE0OnN0YXRpYyBpbmxpbmUgdm9pZCBpcDZfZmxvd2xhYmVsX3Byb2NfZmluaShzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTE1LXtcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTE4LVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkxOTpzdGF0aWMgdm9pZCBfX25ldF9leGl0IGlwNl9mbG93bGFiZWxfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkyMC17XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTIxLVx0aXA2X2ZsX3B1cmdlKG5ldCk7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTIyOlx0aXA2X2Zsb3dsYWJlbF9wcm9jX2ZpbmkobmV0KTtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05MjMtfVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkyNC1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo5MjU6c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBpcDZfZmxvd2xhYmVsX25ldF9vcHMgPSB7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTI2Olx0LmluaXQgPSBpcDZfZmxvd2xhYmVsX3Byb2NfaW5pdCxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo5Mjc6XHQuZXhpdCA9IGlwNl9mbG93bGFiZWxfbmV0X2V4aXQsXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTI4LX07XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTI5LVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkzMDppbnQgaXA2X2Zsb3dsYWJlbF9pbml0KHZvaWQpXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTMxLXtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo5MzI6XHRyZXR1cm4gcmVnaXN0ZXJfcGVybmV0X3N1YnN5cyhcdTAwMjZpcDZfZmxvd2xhYmVsX25ldF9vcHMpO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkzMy19XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTM0LVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkzNTp2b2lkIGlwNl9mbG93bGFiZWxfY2xlYW51cCh2b2lkKVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkzNi17XG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkzOC1cdHRpbWVyX2RlbGV0ZShcdTAwMjZpcDZfZmxfZ2NfdGltZXIpO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkzOTpcdHVucmVnaXN0ZXJfcGVybmV0X3N1YnN5cyhcdTAwMjZpcDZfZmxvd2xhYmVsX25ldF9vcHMpO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTk0MC19XG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jPTYzMz1zdGF0aWMgaW50IHByZXBhcmVfaXA2Z3JlX3htaXRfaXB2NihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy02NjctXHRpZiAodC1cdTAwM2VwYXJtcy5mbGFncyBcdTAwMjYgSVA2X1ROTF9GX1VTRV9PUklHX0ZMT1dMQUJFTClcbm5ldC9pcHY2L2lwNl9ncmUuYzo2Njg6XHRcdGZsNi1cdTAwM2VmbG93bGFiZWwgfD0gaXA2X2Zsb3dsYWJlbChpcHY2aCk7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtNjY5LVxuLS1cbm5ldC9pcHY2L2lwNl90dW5uZWwuYz0xMjk3PWlweGlwNl90bmxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9pcHY2L2lwNl90dW5uZWwuYy0xMzg4LVx0XHRcdGlmICh0LVx1MDAzZXBhcm1zLmZsYWdzIFx1MDAyNiBJUDZfVE5MX0ZfVVNFX09SSUdfRkxPV0xBQkVMKVxubmV0L2lwdjYvaXA2X3R1bm5lbC5jOjEzODk6XHRcdFx0XHRmbDYuZmxvd2xhYmVsIHw9IGlwNl9mbG93bGFiZWwoaXB2NmgpO1xubmV0L2lwdjYvaXA2X3R1bm5lbC5jLTEzOTAtXHRcdFx0YnJlYWs7XG4tLVxubmV0L2lwdjYvcmF3LmM9NzQyPXN0YXRpYyBpbnQgcmF3djZfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcbi0tXG5uZXQvaXB2Ni9yYXcuYy03NTEtXHRzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKm9wdCA9IE5VTEw7XG5uZXQvaXB2Ni9yYXcuYzo3NTI6XHRzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmxvd2xhYmVsID0gTlVMTDtcbm5ldC9pcHY2L3Jhdy5jLTc1My1cdHN0cnVjdCBkc3RfZW50cnkgKmRzdCA9IE5VTEw7XG4tLVxubmV0L2lwdjYvcm91dGUuYz0yMzY3PXN0YXRpYyB2b2lkIGlwNl9tdWx0aXBhdGhfbDNfa2V5cyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtMjQwNi1cdFx0a2V5cy1cdTAwM2VhZGRycy52NmFkZHJzLmRzdCA9IGtleV9pcGgtXHUwMDNlZGFkZHI7XG5uZXQvaXB2Ni9yb3V0ZS5jOjI0MDc6XHRcdGtleXMtXHUwMDNldGFncy5mbG93X2xhYmVsID0gaXA2X2Zsb3dsYWJlbChrZXlfaXBoKTtcbm5ldC9pcHY2L3JvdXRlLmMtMjQwOC1cdFx0a2V5cy1cdTAwM2ViYXNpYy5pcF9wcm90byA9IGtleV9pcGgtXHUwMDNlbmV4dGhkcjtcbi0tXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM9MTI0PXN0YXRpYyBfX2JlMzIgc2VnNl9tYWtlX2Zsb3dsYWJlbChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTEzNS1cdH0gZWxzZSBpZiAoIWRvX2Zsb3dsYWJlbCBcdTAwMjZcdTAwMjYgc2tiLVx1MDAzZXByb3RvY29sID09IGh0b25zKEVUSF9QX0lQVjYpKSB7XG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6MTM2Olx0XHRmbG93bGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlubmVyX2hkcik7XG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtMTM3LVx0fVxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmM9MTMzPXN0YXRpYyBpbnQgdGNwX3Y2X2Nvbm5lY3Qoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqdWFkZHIsXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0xNjItXHRcdGlmIChmbDYtXHUwMDNlZmxvd2xhYmVsIFx1MDAyNiBJUFY2X0ZMT1dMQUJFTF9NQVNLKSB7XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjE2MzpcdFx0XHRzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmxvd2xhYmVsO1xubmV0L2lwdjYvdGNwX2lwdjYuYy0xNjQtXHRcdFx0Zmxvd2xhYmVsID0gZmw2X3NvY2tfbG9va3VwKHNrLCBmbDYtXHUwMDNlZmxvd2xhYmVsKTtcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTU1MD1zdGF0aWMgaW50IHRjcF92Nl9zZW5kX3N5bmFjayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBkc3RfZW50cnkgKmRzdCxcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTU3OC1cdFx0aWYgKGluZXQ2X3Rlc3RfYml0KFJFUEZMT1csIHNrKSBcdTAwMjZcdTAwMjYgaXJlcS1cdTAwM2Vwa3RvcHRzKVxubmV0L2lwdjYvdGNwX2lwdjYuYzo1Nzk6XHRcdFx0Zmw2LVx1MDAzZWZsb3dsYWJlbCA9IGlwNl9mbG93bGFiZWwoaXB2Nl9oZHIoaXJlcS1cdTAwM2Vwa3RvcHRzKSk7XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTU4MC1cbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTEwMDU9c3RhdGljIHZvaWQgdGNwX3Y2X3NlbmRfcmVzZXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTExMS1cdFx0XHRpZiAoaW5ldDZfdGVzdF9iaXQoUkVQRkxPVywgc2spKVxubmV0L2lwdjYvdGNwX2lwdjYuYzoxMTEyOlx0XHRcdFx0bGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlwdjZoKTtcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTExMy1cdFx0XHRwcmlvcml0eSA9IFJFQURfT05DRShzay1cdTAwM2Vza19wcmlvcml0eSk7XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0xMTIzLVx0XHQgICAgRkxPV0xBQkVMX1JFRkxFQ1RfVENQX1JFU0VUKVxubmV0L2lwdjYvdGNwX2lwdjYuYzoxMTI0Olx0XHRcdGxhYmVsID0gaXA2X2Zsb3dsYWJlbChpcHY2aCk7XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTExMjUtXHR9XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMzgyPXN0YXRpYyBzdHJ1Y3Qgc29jayAqdGNwX3Y2X3N5bl9yZWN2X3NvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTQ2MC1cdGlmIChpbmV0Nl90ZXN0X2JpdChSRVBGTE9XLCBzaykpXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjE0NjE6XHRcdG5ld25wLVx1MDAzZWZsb3dfbGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlwdjZfaGRyKHNrYikpO1xubmV0L2lwdjYvdGNwX2lwdjYuYy0xNDYyLVxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmM9MTU2Nz1pbnQgdGNwX3Y2X2RvX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0xNjkyLVx0XHRpZiAoaW5ldDZfdGVzdF9iaXQoUkVQRkxPVywgc2spKVxubmV0L2lwdjYvdGNwX2lwdjYuYzoxNjkzOlx0XHRcdG5wLVx1MDAzZWZsb3dfbGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlwdjZfaGRyKG9wdF9za2IpKTtcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTY5NC1cdFx0aWYgKGlwdjZfb3B0X2FjY2VwdGVkKHNrLCBvcHRfc2tiLCBcdTAwMjZUQ1BfU0tCX0NCKG9wdF9za2IpLVx1MDAzZWhlYWRlci5oNikpIHtcbi0tXG5uZXQvaXB2Ni91ZHAuYz0xNDcyPWludCB1ZHB2Nl9zZW5kbXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxuLS1cbm5ldC9pcHY2L3VkcC5jLTE0NzctXHRzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyLCAqZmluYWxfcCwgZmluYWw7XG5uZXQvaXB2Ni91ZHAuYzoxNDc4Olx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsb3dsYWJlbCA9IE5VTEw7XG5uZXQvaXB2Ni91ZHAuYy0xNDc5LVx0c3RydWN0IGluZXRfc29jayAqaW5ldCA9IGluZXRfc2soc2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzE4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyB0aGUgSVB2NiBGbG93IExhYmVsIEltcGxlbWVudGF0aW9uKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBgaXA2X2Zsb3dsYWJlbC5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hlcmUgZG9lcyB0aGlzIGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZT8mIzM0OyBJIGtub3cgdGhhdCB0aGlzIGZpbGUgaXMgZGVmaW5pdGVseSB0aWVkIHRvIGBpcHY2LXlgLCB3aGljaCwgaW4gdHVybiwgaXMgY29tcGlsZWQgb25seSB3aGVuIGBDT05GSUdfSVBWNmAgaXMgc2V0LiBHaXZlbiB0aGF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29uZmlndXJhdGlvbi4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBgbmV0L2lwdjYvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBJUHY2IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbmZsdWVuY2UgdGhlIGluY2x1c2lvbiBvZiB0aGlzIHNwZWNpZmljIGZsb3cgbGFiZWwgY29kZS4gS25vd2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBhbmQgb3ZlcmFsbCByb2xlIHRoaXMgbW9kdWxlIHBsYXlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUFY2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWctNS1cbm5ldC9pcHY2L0tjb25maWc6NjptZW51Y29uZmlnIElQVjZcbm5ldC9pcHY2L0tjb25maWctNy1cdGJvb2wgXCYjMzQ7VGhlIElQdjYgcHJvdG9jb2xcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTE5PWlmIElQVjZcbm5ldC9pcHY2L0tjb25maWctMjAtXG5uZXQvaXB2Ni9LY29uZmlnOjIxOmNvbmZpZyBJUFY2X1JPVVRFUl9QUkVGXG5uZXQvaXB2Ni9LY29uZmlnLTIyLVx0Ym9vbCBcJiMzNDtJUHY2OiBSb3V0ZXIgUHJlZmVyZW5jZSAoUkZDIDQxOTEpIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMwLVxubmV0L2lwdjYvS2NvbmZpZzozMTpjb25maWcgSVBWNl9ST1VURV9JTkZPXG5uZXQvaXB2Ni9LY29uZmlnLTMyLVx0Ym9vbCBcJiMzNDtJUHY2OiBSb3V0ZSBJbmZvcm1hdGlvbiAoUkZDIDQxOTEpIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTM4LVxubmV0L2lwdjYvS2NvbmZpZzozOTpjb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxubmV0L2lwdjYvS2NvbmZpZy00MC1cdGJvb2wgXCYjMzQ7SVB2NjogRW5hYmxlIFJGQyA0NDI5IE9wdGltaXN0aWMgREFEXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0xMDI9Y29uZmlnIElORVQ2X0lQQ09NUFxuLS1cbm5ldC9pcHY2L0tjb25maWctMTExLVxubmV0L2lwdjYvS2NvbmZpZzoxMTI6Y29uZmlnIElQVjZfTUlQNlxubmV0L2lwdjYvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBNb2JpbGl0eVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTE5LVxubmV0L2lwdjYvS2NvbmZpZzoxMjA6Y29uZmlnIElQVjZfSUxBXG5uZXQvaXB2Ni9LY29uZmlnLTEyMS1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IElkZW50aWZpZXIgTG9jYXRvciBBZGRyZXNzaW5nIChJTEEpXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0xNDY9Y29uZmlnIElORVQ2X1RVTk5FTFxuLS1cbm5ldC9pcHY2L0tjb25maWctMTQ5LVxubmV0L2lwdjYvS2NvbmZpZzoxNTA6Y29uZmlnIElQVjZfVlRJXG5uZXQvaXB2Ni9LY29uZmlnLTE1MS1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgKHNlY3VyZSkgSVB2NjogdHVubmVsaW5nXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xNjEtXG5uZXQvaXB2Ni9LY29uZmlnOjE2Mjpjb25maWcgSVBWNl9TSVRcbm5ldC9pcHY2L0tjb25maWctMTYzLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogSVB2Ni1pbi1JUHY0IHR1bm5lbCAoU0lUIGRyaXZlcilcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE3Ni1cbm5ldC9pcHY2L0tjb25maWc6MTc3OmNvbmZpZyBJUFY2X1NJVF82UkRcbm5ldC9pcHY2L0tjb25maWctMTc4LVx0Ym9vbCBcJiMzNDtJUHY2OiBJUHY2IFJhcGlkIERlcGxveW1lbnQgKDZSRClcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE5NS1cbm5ldC9pcHY2L0tjb25maWc6MTk2OmNvbmZpZyBJUFY2X05ESVNDX05PREVUWVBFXG5uZXQvaXB2Ni9LY29uZmlnLTE5Ny1cdGJvb2xcbm5ldC9pcHY2L0tjb25maWctMTk4LVxubmV0L2lwdjYvS2NvbmZpZzoxOTk6Y29uZmlnIElQVjZfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IElQLWluLUlQdjYgdHVubmVsIChSRkMyNDczKVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjA5LVxubmV0L2lwdjYvS2NvbmZpZzoyMTA6Y29uZmlnIElQVjZfR1JFXG5uZXQvaXB2Ni9LY29uZmlnLTIxMS1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEdSRSB0dW5uZWxcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTIyNy1cbm5ldC9pcHY2L0tjb25maWc6MjI4OmNvbmZpZyBJUFY2X0ZPVVxubmV0L2lwdjYvS2NvbmZpZy0yMjktXHR0cmlzdGF0ZVxuLS1cbm5ldC9pcHY2L0tjb25maWctMjMxLVxubmV0L2lwdjYvS2NvbmZpZzoyMzI6Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0yMzMtXHR0cmlzdGF0ZVxuLS1cbm5ldC9pcHY2L0tjb25maWctMjM2LVxubmV0L2lwdjYvS2NvbmZpZzoyMzc6Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2Ni9LY29uZmlnLTIzOC1cdGJvb2wgXCYjMzQ7SVB2NjogTXVsdGlwbGUgUm91dGluZyBUYWJsZXNcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI0Mi1cbm5ldC9pcHY2L0tjb25maWc6MjQzOmNvbmZpZyBJUFY2X1NVQlRSRUVTXG5uZXQvaXB2Ni9LY29uZmlnLTI0NC1cdGJvb2wgXCYjMzQ7SVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjU2LVxubmV0L2lwdjYvS2NvbmZpZzoyNTc6Y29uZmlnIElQVjZfTVJPVVRFXG5uZXQvaXB2Ni9LY29uZmlnLTI1OC1cdGJvb2wgXCYjMzQ7SVB2NjogbXVsdGljYXN0IHJvdXRpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI2NC1cbm5ldC9pcHY2L0tjb25maWc6MjY1OmNvbmZpZyBJUFY2X01ST1VURV9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L0tjb25maWctMjY2LVx0Ym9vbCBcJiMzNDtJUHY2OiBtdWx0aWNhc3QgcG9saWN5IHJvdXRpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI3OC1cbm5ldC9pcHY2L0tjb25maWc6Mjc5OmNvbmZpZyBJUFY2X1BJTVNNX1YyXG5uZXQvaXB2Ni9LY29uZmlnLTI4MC1cdGJvb2wgXCYjMzQ7SVB2NjogUElNLVNNIHZlcnNpb24gMiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yODUtXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTI4Ny1cdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI5OS1cbm5ldC9pcHY2L0tjb25maWc6MzAwOmNvbmZpZyBJUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvS2NvbmZpZy0zMDEtXHRib29sIFwmIzM0O0lQdjY6IFNlZ21lbnQgUm91dGluZyBITUFDIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMxMS1cbm5ldC9pcHY2L0tjb25maWc6MzEyOmNvbmZpZyBJUFY2X1NFRzZfQlBGXG5uZXQvaXB2Ni9LY29uZmlnLTMxMy1cdGRlZl9ib29sIHlcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMxNi1cbm5ldC9pcHY2L0tjb25maWc6MzE3OmNvbmZpZyBJUFY2X1JQTF9MV1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0zMTgtXHRib29sIFwmIzM0O0lQdjY6IFJQTCBTb3VyY2UgUm91dGluZyBIZWFkZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzI3LVxubmV0L2lwdjYvS2NvbmZpZzozMjg6Y29uZmlnIElQVjZfSU9BTTZfTFdUVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMzI5LVx0Ym9vbCBcJiMzNDtJUHY2OiBJT0FNIFByZS1hbGxvY2F0ZWQgVHJhY2UgaW5zZXJ0aW9uIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMwOTQKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGNvZGUgZXhwbG9yYXRpb25zOgoKKipEaXZpbmcgaW50byBJUHY2IEZsb3cgTGFiZWwgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdXNhZ2UgcGF0dGVybnMgb2YgYSBmZXcga2V5IElQdjYgZmxvdyBsYWJlbCBmdW5jdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29yayBzdGFjay4gSSYjMzk7bSBmb2N1c2luZyBvbiBgaXB2Nl9mbG93bGFiZWxfZ2V0YCwgYGZsX3NvY2tfYXRfbGVhc2VfbGltaXRgLCBhbmQgYGlwdjZfZmxvd2xhYmVsX29wdGAgc3BlY2lmaWNhbGx5LCBhbGwgcmVzaWRpbmcgaW4gYG5ldC9pcHY2L2lwNl9mbG93bGFiZWwuY2AuIFdoYXQgSSYjMzk7bSBhZnRlciBpcyBhIGJldHRlciBncmFzcCBvZiAqaG93KiB0aGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCwgKndoZW4qIHRoZXkgYXJlIHVzZWQsIGFuZCBpbiB3aGF0ICpjb250ZXh0KiB3aXRoaW4gdGhlIGJyb2FkZXIgSVB2NiBwYWNrZXQgcHJvY2Vzc2luZyB3b3JrZmxvdy4gQXJlIHRoZXkgcHJpbWFyaWx5IGludm9sdmVkIGluIHNvY2tldCBjcmVhdGlvbiwgcGFja2V0IHJvdXRpbmcsIGNvbm5lY3Rpb24gc2V0dXAsIG9yIHBlcmhhcHMgZXZlbiBlcnJvciBoYW5kbGluZyByZWxhdGVkIHRvIGZsb3cgbGFiZWwgZXhoYXVzdGlvbj8gSSBleHBlY3QgSSYjMzk7bGwgcHJvYmFibHkgYWxzbyBiZSBsb29raW5nIGF0IHRoZSBkYXRhIHN0cnVjdHVyZXMgdGhleSBvcGVyYXRlIG9uIGFuZCBhbnkgYXNzb2NpYXRlZCBsb2NraW5nL3N5bmNocm9uaXphdGlvbiBpbnZvbHZlZC4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB3aWxsIGludm9sdmUgc29tZSBjb2RlIHNwZWx1bmtpbmcgaW4gdGhpcyBmaWxlIGFuZCBwcm9iYWJseSBvdGhlcnMgaW4gdGhlIGBuZXQvaXB2NmAgZGlyZWN0b3J5IHRvIHByb3ZpZGUgYSBtb3JlIGhvbGlzdGljIHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBrZXkgYXJlYS4gSSYjMzk7bSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBzZWVpbmcgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoIHRoZSBmbG93IGxhYmVsIG9wdGlvbiBhbmQgYW55IGxpbWl0cyBpbXBvc2VkIG9uIGZsb3cgbGFiZWwgdXNlIG9uIGEgcGVyLXNvY2tldCBvciBzeXN0ZW0gYmFzaXMuIFRoaXMgaXMgbXkgc3RhcnRpbmcgcG9pbnQgZm9yIGEgZGVlcGVyIGRpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwdjZfZmxvd2xhYmVsXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9NTU9c3RhdGljIERFRklORV9TUElOTE9DSyhpcDZfc2tfZmxfbG9jayk7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNTYtXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NTc6REVGSU5FX1NUQVRJQ19LRVlfREVGRVJSRURfRkFMU0UoaXB2Nl9mbG93bGFiZWxfZXhjbHVzaXZlLCBIWik7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NTg6RVhQT1JUX1NZTUJPTChpcHY2X2Zsb3dsYWJlbF9leGNsdXNpdmUpO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTU5LVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz0xMTU9c3RhdGljIHZvaWQgZmxfZnJlZShzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmwpXG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTEyMC1cdGlmIChmbF9zaGFyZWRfZXhjbHVzaXZlKGZsKSB8fCBmbC1cdTAwM2VvcHQpXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MTIxOlx0XHRzdGF0aWNfYnJhbmNoX3Nsb3dfZGVjX2RlZmVycmVkKFx1MDAyNmlwdjZfZmxvd2xhYmVsX2V4Y2x1c2l2ZSk7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMTIyLVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz0yMTA9c3RhdGljIHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbF9pbnRlcm4oc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0yMzMtXHRcdCAqIE9UT0ggbm8gbmVlZCB0byBzZWFyY2ggdGhlIGFjdGl2ZSBzb2NrZXQgZmlyc3QsIGxpa2UgaXQgaXNcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoyMzQ6XHRcdCAqIGRvbmUgaW4gaXB2Nl9mbG93bGFiZWxfb3B0IC0gc29jayBpcyBsb2NrZWQsIHNvIG5ldyBlbnRyeVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTIzNS1cdFx0ICogd2l0aCB0aGUgc2FtZSBsYWJlbCBjYW4gb25seSBhcHBlYXIgb24gYW5vdGhlciBzb2NrXG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTM2OT1mbF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpbjZfZmxvd2xhYmVsX3JlcSAqZnJlcSxcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNDUwLVx0XHRXUklURV9PTkNFKHNvY2tfbmV0KHNrKS1cdTAwM2VpcHY2LmZsb3dsYWJlbF9oYXNfZXhjbCwgMSk7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NDUxOlx0XHRzdGF0aWNfYnJhbmNoX2RlZmVycmVkX2luYyhcdTAwMjZpcHY2X2Zsb3dsYWJlbF9leGNsdXNpdmUpO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTQ1Mi1cdH1cbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9NTExPXN0YXRpYyBpbmxpbmUgdm9pZCBmbF9saW5rKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGlwdjZfZmxfc29ja2xpc3QgKnNmbCxcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNTIyLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjUyMzppbnQgaXB2Nl9mbG93bGFiZWxfb3B0X2dldChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpbjZfZmxvd2xhYmVsX3JlcSAqZnJlcSxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy01MjQtXHRcdFx0ICAgaW50IGZsYWdzKVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy01NjItXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NTYzOnN0YXRpYyBpbnQgaXB2Nl9mbG93bGFiZWxfcHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGluNl9mbG93bGFiZWxfcmVxICpmcmVxKVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTU2NC17XG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTU5Ny1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo1OTg6c3RhdGljIGludCBpcHY2X2Zsb3dsYWJlbF9yZW5ldyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpbjZfZmxvd2xhYmVsX3JlcSAqZnJlcSlcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy01OTkte1xuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy02MjgtXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NjI5OnN0YXRpYyBpbnQgaXB2Nl9mbG93bGFiZWxfZ2V0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGluNl9mbG93bGFiZWxfcmVxICpmcmVxLFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTYzMC1cdFx0c29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbilcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNzU0LVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjc1NTppbnQgaXB2Nl9mbG93bGFiZWxfb3B0KHN0cnVjdCBzb2NrICpzaywgc29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbilcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03NTYte1xuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03NjUtXHRjYXNlIElQVjZfRkxfQV9QVVQ6XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NzY2Olx0XHRyZXR1cm4gaXB2Nl9mbG93bGFiZWxfcHV0KHNrLCBcdTAwMjZmcmVxKTtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03NjctXHRjYXNlIElQVjZfRkxfQV9SRU5FVzpcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo3Njg6XHRcdHJldHVybiBpcHY2X2Zsb3dsYWJlbF9yZW5ldyhzaywgXHUwMDI2ZnJlcSk7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNzY5LVx0Y2FzZSBJUFY2X0ZMX0FfR0VUOlxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjc3MDpcdFx0cmV0dXJuIGlwdjZfZmxvd2xhYmVsX2dldChzaywgXHUwMDI2ZnJlcSwgb3B0dmFsLCBvcHRsZW4pO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTc3MS1cdGRlZmF1bHQ6XG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTkzNT12b2lkIGlwNl9mbG93bGFiZWxfY2xlYW51cCh2b2lkKVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkzNi17XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTM3Olx0c3RhdGljX2tleV9kZWZlcnJlZF9mbHVzaChcdTAwMjZpcHY2X2Zsb3dsYWJlbF9leGNsdXNpdmUpO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkzOC1cdHRpbWVyX2RlbGV0ZShcdTAwMjZpcDZfZmxfZ2NfdGltZXIpO1xuLS1cbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYz0zNzY9aW50IGRvX2lwdjZfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4tLVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTkyNy1cdGNhc2UgSVBWNl9GTE9XTEFCRUxfTUdSOlxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjkyODpcdFx0cmV0diA9IGlwdjZfZmxvd2xhYmVsX29wdChzaywgb3B0dmFsLCBvcHRsZW4pO1xubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTkyOS1cdFx0YnJlYWs7XG4tLVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jPTEwNzg9aW50IGRvX2lwdjZfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4tLVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTEzNzEtXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM6MTM3MjpcdFx0dmFsID0gaXB2Nl9mbG93bGFiZWxfb3B0X2dldChzaywgXHUwMDI2ZnJlcSwgZmxhZ3MpO1xubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTEzNzMtXHRcdGlmICh2YWwgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MDg3CgkJCQkJCQlvdXRwdXQ6IDE0OQoJCQkJCQkJdGhvdWdodHM6IDM4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVGhpcyBQYXRjaCBmb3IgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7dmUgZ290IGEgcGF0Y2ggaW4gYG5ldC9pcHY2L2lwNl9mbG93bGFiZWwuY2AuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIG5ldyBmdW5jdGlvbiwgYGZsX3NvY2tfYXRfbGVhc2VfbGltaXRgLCBhbmQgdGhlbiBjYWxsaW5nIGl0IHdpdGhpbiBgaXB2Nl9mbG93bGFiZWxfZ2V0YCBkdXJpbmcgdGhlIGZsb3dsYWJlbCBsZWFzaW5nL3NoYXJpbmcgcHJvY2Vzcy4gU3BlY2lmaWNhbGx5LCB0aGlzIGNoZWNrIGlzIHB1dCBpbiBwbGFjZSB0byBlbmZvcmNlIGBGTF9NQVhfUEVSX1NPQ0tgIGZvciB1bnByaXZpbGVnZWQgc29ja2V0cy4KClRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIGFsd2F5cywgJiMzNDtJcyB0aGlzIHJlYWNoYWJsZSBjb2RlPyYjMzQ7IEFic29sdXRlbHksIGl0IGlzISBJdCYjMzk7cyBhY2Nlc3NpYmxlIHZpYSBgc2V0c29ja29wdGAgd2l0aCBgU09MX0lQVjZgLCBgSVBWNl9GTE9XTEFCRUxfTUdSYCwgYW5kIHRoZSBhY3Rpb24gYElQVjZfRkxfQV9HRVRgLiBFeGNlbGxlbnQuIFRoYXQmIzM5O3MgYSBkaXJlY3QgdXNlci1zcGFjZSBpbnRlcmZhY2UuCgpUaGlzIHBhdGNoIHRvdWNoZXMgdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjaywgc3BlY2lmaWNhbGx5IElQdjYsIGFuZCBpdCYjMzk7cyBhcmNoaXRlY3R1cmUgYWdub3N0aWMgaW4gaXRzIGFwcGxpY2F0aW9uIGFzIGl0IHVzZXMgc3RhbmRhcmQgbmV0d29yayBwcm90b2NvbHMuIFRoZSBrZXkgc3ltYm9scyB0byBmb2N1cyBvbiBhcmUgYGlwdjZfZmxvd2xhYmVsX29wdGAsIGBpcHY2X2Zsb3dsYWJlbF9nZXRgLCBhbmQsIG9mIGNvdXJzZSwgYGZsX3NvY2tfYXRfbGVhc2VfbGltaXRgLgoKRnJvbSBhIGNvbmZpZ3VyYXRpb24gcGVyc3BlY3RpdmUsIHRoaXMgcmVxdWlyZXMgYENPTkZJR19JUFY2YCwgd2hpY2ggaXMgYSBwcmV0dHkgc3RhbmRhcmQgb3B0aW9uLiBObyBzdXJwcmlzZXMgdGhlcmUuIERvdWJsZS1jaGVja2luZywgYW5kIHllcywgYElQVjZgIGlzIGEgc3RhbmRhcmQgbWVudWNvbmZpZyBpdGVtLgoKTm93LCBsZXQmIzM5O3MgYXBwbHkgdGhlIGZ1enppbmcgcnVsZXM6IEZvY3VzaW5nIG9uIG5vbi11YmlxdWl0b3VzIGtlcm5lbCBmdW5jdGlvbnM/IFRoZXNlIHRocmVlIGFyZSAqZXh0cmVtZWx5KiBzcGVjaWZpYyB0byBmbG93bGFiZWwgbWFuYWdlbWVudCwgc28gdGhleSBhcmUgYSBnb29kIGZpdC4KCkZpbmFsbHksIGRvZXMgdGhpcyBwYXRjaCBtZWV0IHRoZSBjcml0ZXJpYSBmb3IgYmVpbmcgJiMzNDtXb3J0aEZ1enppbmcmIzM0Oz8gV2VsbCwgaXQgaGl0cyBhbGwgdGhlIGNoZWNrYm94ZXM6IGl0JiMzOTtzIGluIGEgY29yZSBzdWJzeXN0ZW0gKG5ldHdvcmtpbmcsIElQdjYpLCBpdCBpbnRyb2R1Y2VzIGxvZ2ljIG1vZGlmaWNhdGlvbnMgKGJvdW5kcyBjaGVja2luZyBhbmQgcmVzb3VyY2UgbGltaXRpbmcpLCAqYW5kKiBpdCYjMzk7cyByZWFjaGFibGUgdmlhIGEgdXNlci1zcGFjZSBzeXN0ZW0gY2FsbCAoYHNldHNvY2tvcHRgKS4gVGhpcyBpcyBhIGNsZWFyIGNhc2UgZm9yIGBXb3J0aEZ1enppbmcgPSB0cnVlYC4KCkFscmlnaHQsIHRpbWUgdG8gZm9ybXVsYXRlIHRoZSByZWFzb25pbmcgYW5kIHNldCB0aGUgcmVzdWx0cyBhY2NvcmRpbmdseS4gVGhpcyBpcyBhIHNvbGlkIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDY6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcHY2X2Zsb3dsYWJlbF9vcHQmIzM0OywKICAgICYjMzQ7aXB2Nl9mbG93bGFiZWxfZ2V0JiMzNDssCiAgICAmIzM0O2ZsX3NvY2tfYXRfbGVhc2VfbGltaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHBlci1zb2NrZXQgbGltaXQgY2hlY2sgKGZsX3NvY2tfYXRfbGVhc2VfbGltaXQpIHRvIHByZXZlbnQgdW5wcml2aWxlZ2VkIHVzZXJzIGZyb20gYWNxdWlyaW5nIGV4Y2Vzc2l2ZSBmbG93bGFiZWxzIHZpYSBpcHY2X2Zsb3dsYWJlbF9nZXQoKS4gVGhpcyBtb2RpZmllcyBjb3JlIElQdjYgbmV0d29ya2luZyBsb2dpYyBkaXJlY3RseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNldHNvY2tvcHQoU09MX0lQVjYsIElQVjZfRkxPV0xBQkVMX01HUiwgLi4uKSB3aXRoIElQVjZfRkxfQV9HRVQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcHY2X2Zsb3dsYWJlbF9vcHQmIzM0OywKICAgICYjMzQ7aXB2Nl9mbG93bGFiZWxfZ2V0JiMzNDssCiAgICAmIzM0O2ZsX3NvY2tfYXRfbGVhc2VfbGltaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHBlci1zb2NrZXQgbGltaXQgY2hlY2sgKGZsX3NvY2tfYXRfbGVhc2VfbGltaXQpIHRvIHByZXZlbnQgdW5wcml2aWxlZ2VkIHVzZXJzIGZyb20gYWNxdWlyaW5nIGV4Y2Vzc2l2ZSBmbG93bGFiZWxzIHZpYSBpcHY2X2Zsb3dsYWJlbF9nZXQoKS4gVGhpcyBtb2RpZmllcyBjb3JlIElQdjYgbmV0d29ya2luZyBsb2dpYyBkaXJlY3RseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNldHNvY2tvcHQoU09MX0lQVjYsIElQVjZfRkxPV0xBQkVMX01HUiwgLi4uKSB3aXRoIElQVjZfRkxfQV9HRVQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDY6MDg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KClgIGFuZCBhZGRzIGFuIGBGTF9NQVhfUEVSX1NPQ0tgIGNhcGFjaXR5IGNoZWNrIHdoZW4gYXR0YWNoaW5nL2xlYXNpbmcgZXhpc3RpbmcgSVB2NiBmbG93IGxhYmVscyBpbiBgaXB2Nl9mbG93bGFiZWxfZ2V0KClgLiBcblxuVGhlIGNoYW5nZXMgb25seSBpbnRyb2R1Y2UgYSBjb3VudGVyLWJhc2VkIGxvb3AgaXRlcmF0aW5nIG92ZXIgYW4gZXhpc3RpbmcgUkNVLXByb3RlY3RlZCBsaXN0IGFuZCBhbiBlcnJvciBicmFuY2ggKGAtRU5PQlVGU2ApIHVuZGVyIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KClgLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBhbGxvY2F0ZWQsIHJlYWQsIG9yIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgYXJlIGFueSBidWZmZXIgbGVuZ3RocyBvciBkYXRhIHN0cnVjdHVyZXMgbW9kaWZpZWQgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBkYXRhLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkZDg4OGViYTMwOTc1MmFkODM2ZjNjNjU5MTE4NDNhYWIzMmM4NjRjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgNCAwNjowNzo0NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9mbG93bGFiZWwuYyBiL25ldC9pcHY2L2lwNl9mbG93bGFiZWwuYwppbmRleCAxYWI1YWQwZGNmMjRmLi4wMDY1ODVkYzhiNWM2IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jCkBAIC00NjEsNiAmIzQzOzQ2MSwyMSBAQCBmbF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpbjZfZmxvd2xhYmVsX3JlcSAqZnJlcSwKIAlyZXR1cm4gTlVMTDsKIH0KIAomIzQzO3N0YXRpYyBib29sIGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrKQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IGlwdjZfZmxfc29ja2xpc3QgKnNmbDsKJiM0MzsJaW50IGNvdW50ID0gMDsKJiM0MzsKJiM0MzsJcmN1X3JlYWRfbG9jaygpOwomIzQzOwlmb3JfZWFjaF9za19mbF9yY3Uoc2ssIHNmbCkgewomIzQzOwkJaWYgKCYjNDM7JiM0Mztjb3VudCAmZ3Q7PSBGTF9NQVhfUEVSX1NPQ0spCiYjNDM7CQkJYnJlYWs7CiYjNDM7CX0KJiM0MzsJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CiYjNDM7CXJldHVybiBjb3VudCAmZ3Q7PSBGTF9NQVhfUEVSX1NPQ0s7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBtZW1fY2hlY2soc3RydWN0IHNvY2sgKnNrKQogewogCWNvbnN0IGludCB1bnByaXZfdG90YWxfbGltaXQgPSBGTF9NQVhfU0laRSAtIChGTF9NQVhfU0laRSAvIDQpOwpAQCAtNjc5LDYgJiM0Mzs2OTQsMTAgQEAgc3RhdGljIGludCBpcHY2X2Zsb3dsYWJlbF9nZXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaW42X2Zsb3dsYWJlbF9yZXEgKmZyZXEsCiAJCQllcnIgPSAtRU5PTUVNOwogCQkJaWYgKCFzZmwxKQogCQkJCWdvdG8gcmVsZWFzZTsKJiM0MzsJCQllcnIgPSAtRU5PQlVGUzsKJiM0MzsJCQlpZiAoZmxfc29ja19hdF9sZWFzZV9saW1pdChzaykgJmFtcDsmYW1wOwomIzQzOwkJCSAgICAhY2FwYWJsZShDQVBfTkVUX0FETUlOKSkKJiM0MzsJCQkJZ290byByZWxlYXNlOwogCQkJaWYgKGZsLSZndDtsaW5nZXIgJmd0OyBmbDEtJmd0O2xpbmdlcikKIAkJCQlmbDEtJmd0O2xpbmdlciA9IGZsLSZndDtsaW5nZXI7CiAJCQlpZiAoKGxvbmcpKGZsLSZndDtleHBpcmVzIC0gZmwxLSZndDtleHBpcmVzKSAmZ3Q7IDApCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzU0CgkJCQkJCQlvdXRwdXQ6IDgwCgkJCQkJCQl0aG91Z2h0czogNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIEZsb3dsYWJlbCBDb2RlKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiB0aGUgY29udGV4dC4gRmlyc3QsIEkgbmVlZCB0byB6ZXJvIGluIG9uIGBuZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNgLiBMZXQmIzM5O3MgdXNlIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBnZXQgdGhhdCBmaWxlIG9wZW4gYW5kIGluIGZyb250IG9mIG1lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZSwgdGhlIGN1cnJlbnQgc3RhdGUgb2YgZmxvd2xhYmVsIGltcGxlbWVudGF0aW9uLCBiZWZvcmUgSSBjYW4gcmVhbGx5IGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY2L2lwNl9mbG93bGFiZWwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDUwOlx0XHRcdFdSSVRFX09OQ0Uoc29ja19uZXQoc2spLVx1MDAzZWlwdjYuZmxvd2xhYmVsX2hhc19leGNsLCAxKTtcbiA0NTE6XHRcdFx0c3RhdGljX2JyYW5jaF9kZWZlcnJlZF9pbmMoXHUwMDI2aXB2Nl9mbG93bGFiZWxfZXhjbHVzaXZlKTtcbiA0NTI6XHRcdH1cbiA0NTM6XHRcdHJldHVybiBmbDtcbiA0NTQ6XHRcbiA0NTU6XHRkb25lOlxuIDQ1NjpcdFx0aWYgKGZsKSB7XG4gNDU3Olx0XHRcdGtmcmVlKGZsLVx1MDAzZW9wdCk7XG4gNDU4Olx0XHRcdGtmcmVlKGZsKTtcbiA0NTk6XHRcdH1cbiA0NjA6XHRcdCplcnJfcCA9IGVycjtcbiA0NjE6XHRcdHJldHVybiBOVUxMO1xuIDQ2MjpcdH1cbiA0NjM6XHRcbiA0NjQ6XHRzdGF0aWMgYm9vbCBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KGNvbnN0IHN0cnVjdCBzb2NrICpzaylcbiA0NjU6XHR7XG4gNDY2Olx0XHRjb25zdCBzdHJ1Y3QgaXB2Nl9mbF9zb2NrbGlzdCAqc2ZsO1xuIDQ2NzpcdFx0aW50IGNvdW50ID0gMDtcbiA0Njg6XHRcbiA0Njk6XHRcdHJjdV9yZWFkX2xvY2soKTtcbiA0NzA6XHRcdGZvcl9lYWNoX3NrX2ZsX3JjdShzaywgc2ZsKSB7XG4gNDcxOlx0XHRcdGlmICgmIzQzOyYjNDM7Y291bnQgXHUwMDNlPSBGTF9NQVhfUEVSX1NPQ0spXG4gNDcyOlx0XHRcdFx0YnJlYWs7XG4gNDczOlx0XHR9XG4gNDc0Olx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiA0NzU6XHRcbiA0NzY6XHRcdHJldHVybiBjb3VudCBcdTAwM2U9IEZMX01BWF9QRVJfU09DSztcbiA0Nzc6XHR9XG4gNDc4Olx0XG4gNDc5Olx0c3RhdGljIGludCBtZW1fY2hlY2soc3RydWN0IHNvY2sgKnNrKVxuIDQ4MDpcdHtcbiA0ODE6XHRcdGNvbnN0IGludCB1bnByaXZfdG90YWxfbGltaXQgPSBGTF9NQVhfU0laRSAtIChGTF9NQVhfU0laRSAvIDQpO1xuIDQ4MjpcdFx0Y29uc3QgaW50IHVucHJpdl91c2VyX2xpbWl0ID0gdW5wcml2X3RvdGFsX2xpbWl0IC8gMjtcbiA0ODM6XHRcdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrKTtcbiA0ODQ6XHRcdGludCByb29tO1xuIDQ4NTpcdFx0c3RydWN0IGlwdjZfZmxfc29ja2xpc3QgKnNmbDtcbiA0ODY6XHRcdGludCBjb3VudCA9IDA7XG4gNDg3Olx0XG4gNDg4Olx0XHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmlwNl9mbF9sb2NrKTtcbiA0ODk6XHRcbiA0OTA6XHRcdHJvb20gPSBGTF9NQVhfU0laRSAtIGZsX3NpemU7XG4gNDkxOlx0XG4gNDkyOlx0XHRpZiAocm9vbSBcdTAwM2UgRkxfTUFYX1NJWkUgLSBGTF9NQVhfUEVSX1NPQ0spXG4gNDkzOlx0XHRcdHJldHVybiAwO1xuIDQ5NDpcdFxuIDQ5NTpcdFx0cmN1X3JlYWRfbG9jaygpO1xuIDQ5NjpcdFx0Zm9yX2VhY2hfc2tfZmxfcmN1KHNrLCBzZmwpXG4gNDk3Olx0XHRcdGNvdW50JiM0MzsmIzQzOztcbiA0OTg6XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIDQ5OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY2L2lwNl9mbG93bGFiZWwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjYwOlx0XG4gNjYxOlx0XHRpZiAoZnJlcS1cdTAwM2VmbHJfbGFiZWwpIHtcbiA2NjI6XHRcdFx0ZXJyID0gLUVFWElTVDtcbiA2NjM6XHRcdFx0cmN1X3JlYWRfbG9jaygpO1xuIDY2NDpcdFx0XHRmb3JfZWFjaF9za19mbF9yY3Uoc2ssIHNmbCkge1xuIDY2NTpcdFx0XHRcdGlmIChzZmwtXHUwMDNlZmwtXHUwMDNlbGFiZWwgPT0gZnJlcS1cdTAwM2VmbHJfbGFiZWwpIHtcbiA2NjY6XHRcdFx0XHRcdGlmIChmcmVxLVx1MDAzZWZscl9mbGFncyBcdTAwMjYgSVBWNl9GTF9GX0VYQ0wpIHtcbiA2Njc6XHRcdFx0XHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gNjY4Olx0XHRcdFx0XHRcdGdvdG8gZG9uZTtcbiA2Njk6XHRcdFx0XHRcdH1cbiA2NzA6XHRcdFx0XHRcdGZsMSA9IHNmbC1cdTAwM2VmbDtcbiA2NzE6XHRcdFx0XHRcdGlmICghYXRvbWljX2luY19ub3RfemVybyhcdTAwMjZmbDEtXHUwMDNldXNlcnMpKVxuIDY3MjpcdFx0XHRcdFx0XHRmbDEgPSBOVUxMO1xuIDY3MzpcdFx0XHRcdFx0YnJlYWs7XG4gNjc0Olx0XHRcdFx0fVxuIDY3NTpcdFx0XHR9XG4gNjc2Olx0XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIDY3NzpcdFxuIDY3ODpcdFx0XHRpZiAoIWZsMSlcbiA2Nzk6XHRcdFx0XHRmbDEgPSBmbF9sb29rdXAobmV0LCBmcmVxLVx1MDAzZWZscl9sYWJlbCk7XG4gNjgwOlx0XHRcdGlmIChmbDEpIHtcbiA2ODE6XHRyZWNoZWNrOlxuIDY4MjpcdFx0XHRcdGVyciA9IC1FRVhJU1Q7XG4gNjgzOlx0XHRcdFx0aWYgKGZyZXEtXHUwMDNlZmxyX2ZsYWdzXHUwMDI2SVBWNl9GTF9GX0VYQ0wpXG4gNjg0Olx0XHRcdFx0XHRnb3RvIHJlbGVhc2U7XG4gNjg1Olx0XHRcdFx0ZXJyID0gLUVQRVJNO1xuIDY4NjpcdFx0XHRcdGlmIChmbDEtXHUwMDNlc2hhcmUgPT0gSVBWNl9GTF9TX0VYQ0wgfHxcbiA2ODc6XHRcdFx0XHQgICAgZmwxLVx1MDAzZXNoYXJlICE9IGZsLVx1MDAzZXNoYXJlIHx8XG4gNjg4Olx0XHRcdFx0ICAgICgoZmwxLVx1MDAzZXNoYXJlID09IElQVjZfRkxfU19QUk9DRVNTKSBcdTAwMjZcdTAwMjZcbiA2ODk6XHRcdFx0XHQgICAgIChmbDEtXHUwMDNlb3duZXIucGlkICE9IGZsLVx1MDAzZW93bmVyLnBpZCkpIHx8XG4gNjkwOlx0XHRcdFx0ICAgICgoZmwxLVx1MDAzZXNoYXJlID09IElQVjZfRkxfU19VU0VSKSBcdTAwMjZcdTAwMjZcbiA2OTE6XHRcdFx0XHQgICAgICF1aWRfZXEoZmwxLVx1MDAzZW93bmVyLnVpZCwgZmwtXHUwMDNlb3duZXIudWlkKSkpXG4gNjkyOlx0XHRcdFx0XHRnb3RvIHJlbGVhc2U7XG4gNjkzOlx0XG4gNjk0Olx0XHRcdFx0ZXJyID0gLUVOT01FTTtcbiA2OTU6XHRcdFx0XHRpZiAoIXNmbDEpXG4gNjk2Olx0XHRcdFx0XHRnb3RvIHJlbGVhc2U7XG4gNjk3Olx0XHRcdFx0ZXJyID0gLUVOT0JVRlM7XG4gNjk4Olx0XHRcdFx0aWYgKGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoc2spIFx1MDAyNlx1MDAyNlxuIDY5OTpcdFx0XHRcdCAgICAhY2FwYWJsZShDQVBfTkVUX0FETUlOKSlcbiA3MDA6XHRcdFx0XHRcdGdvdG8gcmVsZWFzZTtcbiA3MDE6XHRcdFx0XHRpZiAoZmwtXHUwMDNlbGluZ2VyIFx1MDAzZSBmbDEtXHUwMDNlbGluZ2VyKVxuIDcwMjpcdFx0XHRcdFx0ZmwxLVx1MDAzZWxpbmdlciA9IGZsLVx1MDAzZWxpbmdlcjtcbiA3MDM6XHRcdFx0XHRpZiAoKGxvbmcpKGZsLVx1MDAzZWV4cGlyZXMgLSBmbDEtXHUwMDNlZXhwaXJlcykgXHUwMDNlIDApXG4gNzA0Olx0XHRcdFx0XHRmbDEtXHUwMDNlZXhwaXJlcyA9IGZsLVx1MDAzZWV4cGlyZXM7XG4gNzA1Olx0XHRcdFx0ZmxfbGluayhzaywgc2ZsMSwgZmwxKTtcbiA3MDY6XHRcdFx0XHRmbF9mcmVlKGZsKTtcbiA3MDc6XHRcdFx0XHRyZXR1cm4gMDtcbiA3MDg6XHRcbiA3MDk6XHRyZWxlYXNlOlxuIDcxMDpcdFx0XHRcdGZsX3JlbGVhc2UoZmwxKTtcbiA3MTE6XHRcdFx0XHRnb3RvIGRvbmU7XG4gNzEyOlx0XHRcdH1cbiA3MTM6XHRcdH1cbiA3MTQ6XHRcdGVyciA9IC1FTk9FTlQ7XG4gNzE1Olx0XHRpZiAoIShmcmVxLVx1MDAzZWZscl9mbGFncyBcdTAwMjYgSVBWNl9GTF9GX0NSRUFURSkpXG4gNzE2Olx0XHRcdGdvdG8gZG9uZTtcbiA3MTc6XHRcbiA3MTg6XHRcdGVyciA9IC1FTk9NRU07XG4gNzE5Olx0XHRpZiAoIXNmbDEpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMTYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHJvbGUgb2YgdGhlIHRoaW5raW5nIHByb2Nlc3MgYXMgZGVzY3JpYmVkOgoKKipEaXZpbmcgRGVlcGVyIGludG8gRmxvdyBMYWJlbCBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCBiZWZvcmUgSSBmaW5hbGl6ZSBteSBhc3Nlc3NtZW50IG9mIHRoaXMgZmxvdyBsYWJlbCBsb2dpYywgSSBuZWVkIGEgY2xlYXJlciBwaWN0dXJlLiBJJiMzOTttIGdvaW5nIHRvIHNoaWZ0IGZvY3VzIGFuZCB0cmFjZSB0aGUgcmVzdCBvZiB0aGUgY29kZSBleGVjdXRpb24uIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgZXhhbWluZSB0aGUgcmVtYWluaW5nIHBhcnRzIG9mIGBpcHY2X2Zsb3dsYWJlbF9nZXRgIGZ1bmN0aW9uLiBBbmQgZXF1YWxseSBpbXBvcnRhbnQsIEkgd2lsbCBiZSBkZWx2aW5nIGludG8gdGhlIGlubmVyIHdvcmtpbmdzIG9mIGBmbF9jcmVhdGVgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBwaWVjZXMgSSBuZWVkIHRvIHRydWx5IHVuZGVyc3RhbmQgaG93IGV2ZXJ5dGhpbmcgZml0cyB0b2dldGhlciBmb3IgdGhlIGZsb3cgbGFiZWwgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2MzA6XHRcdFx0c29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbilcbiA2MzE6XHR7XG4gNjMyOlx0XHRzdHJ1Y3QgaXB2Nl9mbF9zb2NrbGlzdCAqc2ZsLCAqc2ZsMSA9IE5VTEw7XG4gNjMzOlx0XHRzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmwsICpmbDEgPSBOVUxMO1xuIDYzNDpcdFx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xuIDYzNTpcdFx0aW50IGVycjtcbiA2MzY6XHRcbiA2Mzc6XHRcdGlmIChmcmVxLVx1MDAzZWZscl9mbGFncyBcdTAwMjYgSVBWNl9GTF9GX1JFRkxFQ1QpIHtcbiA2Mzg6XHRcdFx0aWYgKFJFQURfT05DRShuZXQtXHUwMDNlaXB2Ni5zeXNjdGwuZmxvd2xhYmVsX2NvbnNpc3RlbmN5KSkge1xuIDYzOTpcdFx0XHRcdG5ldF9pbmZvX3JhdGVsaW1pdGVkKFwmIzM0O0NhbiBub3Qgc2V0IElQVjZfRkxfRl9SRUZMRUNUIGlmIGZsb3dsYWJlbF9jb25zaXN0ZW5jeSBzeXNjdGwgaXMgZW5hYmxlXFxuXCYjMzQ7KTtcbiA2NDA6XHRcdFx0XHRyZXR1cm4gLUVQRVJNO1xuIDY0MTpcdFx0XHR9XG4gNjQyOlx0XG4gNjQzOlx0XHRcdGlmIChzay1cdTAwM2Vza19wcm90b2NvbCAhPSBJUFBST1RPX1RDUClcbiA2NDQ6XHRcdFx0XHRyZXR1cm4gLUVOT1BST1RPT1BUO1xuIDY0NTpcdFx0XHRpbmV0Nl9zZXRfYml0KFJFUEZMT1csIHNrKTtcbiA2NDY6XHRcdFx0cmV0dXJuIDA7XG4gNjQ3Olx0XHR9XG4gNjQ4Olx0XG4gNjQ5Olx0XHRpZiAoZnJlcS1cdTAwM2VmbHJfbGFiZWwgXHUwMDI2IH5JUFY2X0ZMT1dMQUJFTF9NQVNLKVxuIDY1MDpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA2NTE6XHRcdGlmIChSRUFEX09OQ0UobmV0LVx1MDAzZWlwdjYuc3lzY3RsLmZsb3dsYWJlbF9zdGF0ZV9yYW5nZXMpIFx1MDAyNlx1MDAyNlxuIDY1MjpcdFx0ICAgIChmcmVxLVx1MDAzZWZscl9sYWJlbCBcdTAwMjYgSVBWNl9GTE9XTEFCRUxfU1RBVEVMRVNTX0ZMQUcpKVxuIDY1MzpcdFx0XHRyZXR1cm4gLUVSQU5HRTtcbiA2NTQ6XHRcbiA2NTU6XHRcdGZsID0gZmxfY3JlYXRlKG5ldCwgc2ssIGZyZXEsIG9wdHZhbCwgb3B0bGVuLCBcdTAwMjZlcnIpO1xuIDY1NjpcdFx0aWYgKCFmbClcbiA2NTc6XHRcdFx0cmV0dXJuIGVycjtcbiA2NTg6XHRcbiA2NTk6XHRcdHNmbDEgPSBrbWFsbG9jX29iaigqc2ZsMSk7XG4gNjYwOlx0XG4gNjYxOlx0XHRpZiAoZnJlcS1cdTAwM2VmbHJfbGFiZWwpIHtcbiA2NjI6XHRcdFx0ZXJyID0gLUVFWElTVDtcbiA2NjM6XHRcdFx0cmN1X3JlYWRfbG9jaygpO1xuIDY2NDpcdFx0XHRmb3JfZWFjaF9za19mbF9yY3Uoc2ssIHNmbCkge1xuIDY2NTpcdFx0XHRcdGlmIChzZmwtXHUwMDNlZmwtXHUwMDNlbGFiZWwgPT0gZnJlcS1cdTAwM2VmbHJfbGFiZWwpIHtcbiA2NjY6XHRcdFx0XHRcdGlmIChmcmVxLVx1MDAzZWZscl9mbGFncyBcdTAwMjYgSVBWNl9GTF9GX0VYQ0wpIHtcbiA2Njc6XHRcdFx0XHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gNjY4Olx0XHRcdFx0XHRcdGdvdG8gZG9uZTtcbiA2Njk6XHRcdFx0XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDY6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA4NgoJCQkJCQkJb3V0cHV0OiAxNjQKCQkJCQkJCXRob3VnaHRzOiA3NzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRmxvdyBMYWJlbCBMZWFzZSBMaW1pdCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGNvbmNlcm4gd2FzIGFib3V0IGEgcG90ZW50aWFsIGJ1ZyBpbiBgaXB2Nl9mbG93bGFiZWxfZ2V0KClgLiBJdCBzZWVtcyB0aGF0IHdoZW4gYSBzb2NrZXQgKnJldXNlcyogYW4gZXhpc3RpbmcgZmxvdyBsYWJlbCAoYGZsMWApLCB0aGUgY29kZSB3YXNuJiMzOTt0IGNvcnJlY3RseSBjaGVja2luZyB0aGUgcGVyLXNvY2tldCBsaW1pdCBgRkxfTUFYX1BFUl9TT0NLYC4gV2UgZG8gaGF2ZSBgbWVtX2NoZWNrKHNrKWAgaW4gYGZsX2NyZWF0ZSgpYCwgYnV0IGl0JiMzOTtzIG9ubHkgY2FsbGVkIHdoZW4gKmNyZWF0aW5nKiBhIG5ldyBmbG93IGxhYmVsLiBNeSBodW5jaCB3YXMgdGhhdCB3aGVuICpyZXVzaW5nKiBhIGxhYmVsICh2aWEgYGZyZXEtJmd0O2Zscl9sYWJlbGAgYW5kIGZpbmRpbmcgYGZsMWApLCB3ZSBzdGlsbCBjYWxsIGBmbF9jcmVhdGVgLCBidXQgcGVyaGFwcyB0aGUgYG1lbV9jaGVja2AgbG9naWMgd2FzIGJ5cGFzc2VkLCBlc3BlY2lhbGx5IGlmIGByb29tICZndDsgRkxfTUFYX1NJWkUgLSBGTF9NQVhfUEVSX1NPQ0tgIG9yIGluIHNjZW5hcmlvcyBvZiByZXBlYXRlZGx5IGxlYXNpbmcgZXhpc3RpbmcgbGFiZWxzLgoKSSBkb3ZlIGludG8gYGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoc2spYCB0byBjb25maXJtLiBJdCBpdGVyYXRlcyB0aHJvdWdoIHRoZSBzb2NrZXQmIzM5O3MgZmxvdyBsYWJlbHMgYW5kIGNvdW50cyB0aGVtLiBJZiB0aGUgY291bnQgKGBjb3VudGApIHJlYWNoZXMgb3IgZXhjZWVkcyBgRkxfTUFYX1BFUl9TT0NLYCwgYW5kIHRoZSBzb2NrZXQgZG9lc24mIzM5O3QgaGF2ZSBgQ0FQX05FVF9BRE1JTmAsIGl0IHJldHVybnMgYC1FTk9CVUZTYC4gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgbGltaXQgZW5mb3JjZW1lbnQuIFRoZSBjaGVjayBpbiBgaXB2Nl9mbG93bGFiZWxfZ2V0YCB1c2VzIHRoYXQgZnVuY3Rpb24gdG8gcHJldmVudCBleGNlZWRpbmcgdGhlIGxpbWl0LgoKTm93LCBsZXQmIzM5O3MgdGhpbmsgYWJvdXQgdGhpcyBmcm9tIGEgS01TQU4vS0FTQU4gcGVyc3BlY3RpdmUuIERvZXMgdGhpcyBwYXRjaDoKCjEuICAqKkludHJvZHVjZSBrZXJuZWwgc3RydWN0dXJlcyBleHBvc2VkIHRvIHVzZXIgc3BhY2Ugd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcz8qKiBOby4KMi4gICoqUmVseSBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBpbiBjb25kaXRpb25hbCBsb2dpYz8qKiBObywgYmVjYXVzZSBgY291bnRgIGlzIGluaXRpYWxpemVkIHRvIHplcm8sIGFuZCBgc2tgIGFuZCBgc2ZsYCBhcmUgY29ycmVjdGx5IGhhbmRsZWQuCjMuICAqKkFsbG9jYXRlIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGFyZSB1c2VkIGxhdGVyPyoqIE5vLgo0LiAgKipJbnRyb2R1Y2UgYm91bmRzIGNoZWNrIGZsYXdzIHRoYXQgY291bGQgbGVhZCB0byByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgYnl0ZXM/KiogTm8uCgpUaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MuIEl0JiMzOTtzIHNvbGVseSBhYm91dCByZXNvdXJjZSBsaW1pdGluZyBhbmQgYWNjb3VudGluZyBmb3IgZmxvd2xhYmVsIHVzYWdlIHBlciBzb2NrZXQuIEtBU0FOIGFuZCB0aGUgdXN1YWwgdGVzdGluZyBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgY29ycmVjdG5lc3MgaGVyZS4gV2UgZG9uJiMzOTt0IG5lZWQgS01TQU4gdG8gZmxhZyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBiZWNhdXNlIHRoZXJlIGlzbiYjMzk7dCBhbnkuCgpJJiMzOTttIGNvbmZpZGVudCBpbiBjYWxsaW5nIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoKWAgYW5kIGFkZHMgYW4gYEZMX01BWF9QRVJfU09DS2AgY2FwYWNpdHkgY2hlY2sgd2hlbiBhdHRhY2hpbmcvbGVhc2luZyBleGlzdGluZyBJUHY2IGZsb3cgbGFiZWxzIGluIGBpcHY2X2Zsb3dsYWJlbF9nZXQoKWAuIFxuXG5UaGUgY2hhbmdlcyBvbmx5IGludHJvZHVjZSBhIGNvdW50ZXItYmFzZWQgbG9vcCBpdGVyYXRpbmcgb3ZlciBhbiBleGlzdGluZyBSQ1UtcHJvdGVjdGVkIGxpc3QgYW5kIGFuIGVycm9yIGJyYW5jaCAoYC1FTk9CVUZTYCkgdW5kZXIgYGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoKWAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGFsbG9jYXRlZCwgcmVhZCwgb3IgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBhcmUgYW55IGJ1ZmZlciBsZW5ndGhzIG9yIGRhdGEgc3RydWN0dXJlcyBtb2RpZmllZCBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoKWAgYW5kIGFkZHMgYW4gYEZMX01BWF9QRVJfU09DS2AgY2FwYWNpdHkgY2hlY2sgd2hlbiBhdHRhY2hpbmcvbGVhc2luZyBleGlzdGluZyBJUHY2IGZsb3cgbGFiZWxzIGluIGBpcHY2X2Zsb3dsYWJlbF9nZXQoKWAuIFxuXG5UaGUgY2hhbmdlcyBvbmx5IGludHJvZHVjZSBhIGNvdW50ZXItYmFzZWQgbG9vcCBpdGVyYXRpbmcgb3ZlciBhbiBleGlzdGluZyBSQ1UtcHJvdGVjdGVkIGxpc3QgYW5kIGFuIGVycm9yIGJyYW5jaCAoYC1FTk9CVUZTYCkgdW5kZXIgYGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoKWAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGFsbG9jYXRlZCwgcmVhZCwgb3IgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBhcmUgYW55IGJ1ZmZlciBsZW5ndGhzIG9yIGRhdGEgc3RydWN0dXJlcyBtb2RpZmllZCBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDc6NDYuNzQzNjQwMTc3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk3NDEzMTI3OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwdjZfZmxvd2xhYmVsX29wdFwiLFxuICAgIFwiaXB2Nl9mbG93bGFiZWxfZ2V0XCIsXG4gICAgXCJmbF9zb2NrX2F0X2xlYXNlX2xpbWl0XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KClgIGFuZCBhZGRzIGFuIGBGTF9NQVhfUEVSX1NPQ0tgIGNhcGFjaXR5IGNoZWNrIHdoZW4gYXR0YWNoaW5nL2xlYXNpbmcgZXhpc3RpbmcgSVB2NiBmbG93IGxhYmVscyBpbiBgaXB2Nl9mbG93bGFiZWxfZ2V0KClgLiBcXG5cXG5UaGUgY2hhbmdlcyBvbmx5IGludHJvZHVjZSBhIGNvdW50ZXItYmFzZWQgbG9vcCBpdGVyYXRpbmcgb3ZlciBhbiBleGlzdGluZyBSQ1UtcHJvdGVjdGVkIGxpc3QgYW5kIGFuIGVycm9yIGJyYW5jaCAoYC1FTk9CVUZTYCkgdW5kZXIgYGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoKWAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGFsbG9jYXRlZCwgcmVhZCwgb3IgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBhcmUgYW55IGJ1ZmZlciBsZW5ndGhzIG9yIGRhdGEgc3RydWN0dXJlcyBtb2RpZmllZCBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgcGVyLXNvY2tldCBsaW1pdCBjaGVjayAoZmxfc29ja19hdF9sZWFzZV9saW1pdCkgdG8gcHJldmVudCB1bnByaXZpbGVnZWQgdXNlcnMgZnJvbSBhY3F1aXJpbmcgZXhjZXNzaXZlIGZsb3dsYWJlbHMgdmlhIGlwdjZfZmxvd2xhYmVsX2dldCgpLiBUaGlzIG1vZGlmaWVzIGNvcmUgSVB2NiBuZXR3b3JraW5nIGxvZ2ljIGRpcmVjdGx5IHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc2V0c29ja29wdChTT0xfSVBWNiwgSVBWNl9GTE9XTEFCRUxfTUdSLCAuLi4pIHdpdGggSVBWNl9GTF9BX0dFVC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDc6NDYuNzQzNjQ3MDk3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTY2MDMzNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkZDg4OGViYTMwOTc1MmFkODM2ZjNjNjU5MTE4NDNhYWIzMmM4NjRjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDQgMDY6MDc6NDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jIGIvbmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jXFxuaW5kZXggMWFiNWFkMGRjZjI0Zi4uMDA2NTg1ZGM4YjVjNiAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNcXG4rKysgYi9uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNcXG5AQCAtNDYxLDYgKzQ2MSwyMSBAQCBmbF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpbjZfZmxvd2xhYmVsX3JlcSAqZnJlcSxcXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBpcHY2X2ZsX3NvY2tsaXN0ICpzZmw7XFxuK1xcdGludCBjb3VudCA9IDA7XFxuK1xcbitcXHRyY3VfcmVhZF9sb2NrKCk7XFxuK1xcdGZvcl9lYWNoX3NrX2ZsX3JjdShzaywgc2ZsKSB7XFxuK1xcdFxcdGlmICgrK2NvdW50IFxcdTAwM2U9IEZMX01BWF9QRVJfU09DSylcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdH1cXG4rXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK1xcbitcXHRyZXR1cm4gY291bnQgXFx1MDAzZT0gRkxfTUFYX1BFUl9TT0NLO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG1lbV9jaGVjayhzdHJ1Y3Qgc29jayAqc2spXFxuIHtcXG4gXFx0Y29uc3QgaW50IHVucHJpdl90b3RhbF9saW1pdCA9IEZMX01BWF9TSVpFIC0gKEZMX01BWF9TSVpFIC8gNCk7XFxuQEAgLTY3OSw2ICs2OTQsMTAgQEAgc3RhdGljIGludCBpcHY2X2Zsb3dsYWJlbF9nZXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaW42X2Zsb3dsYWJlbF9yZXEgKmZyZXEsXFxuIFxcdFxcdFxcdGVyciA9IC1FTk9NRU07XFxuIFxcdFxcdFxcdGlmICghc2ZsMSlcXG4gXFx0XFx0XFx0XFx0Z290byByZWxlYXNlO1xcbitcXHRcXHRcXHRlcnIgPSAtRU5PQlVGUztcXG4rXFx0XFx0XFx0aWYgKGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoc2spIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdFxcdCAgICAhY2FwYWJsZShDQVBfTkVUX0FETUlOKSlcXG4rXFx0XFx0XFx0XFx0Z290byByZWxlYXNlO1xcbiBcXHRcXHRcXHRpZiAoZmwtXFx1MDAzZWxpbmdlciBcXHUwMDNlIGZsMS1cXHUwMDNlbGluZ2VyKVxcbiBcXHRcXHRcXHRcXHRmbDEtXFx1MDAzZWxpbmdlciA9IGZsLVxcdTAwM2VsaW5nZXI7XFxuIFxcdFxcdFxcdGlmICgobG9uZykoZmwtXFx1MDAzZWV4cGlyZXMgLSBmbDEtXFx1MDAzZWV4cGlyZXMpIFxcdTAwM2UgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDc6NDcuMjAwOTEyMzI5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyMDczNDgwNjY3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXB2Nl9mbG93bGFiZWxfb3B0XCIsXG4gICAgXCJpcHY2X2Zsb3dsYWJlbF9nZXRcIixcbiAgICBcImZsX3NvY2tfYXRfbGVhc2VfbGltaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgcGVyLXNvY2tldCBsaW1pdCBjaGVjayAoZmxfc29ja19hdF9sZWFzZV9saW1pdCkgdG8gcHJldmVudCB1bnByaXZpbGVnZWQgdXNlcnMgZnJvbSBhY3F1aXJpbmcgZXhjZXNzaXZlIGZsb3dsYWJlbHMgdmlhIGlwdjZfZmxvd2xhYmVsX2dldCgpLiBUaGlzIG1vZGlmaWVzIGNvcmUgSVB2NiBuZXR3b3JraW5nIGxvZ2ljIGRpcmVjdGx5IHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc2V0c29ja29wdChTT0xfSVBWNiwgSVBWNl9GTE9XTEFCRUxfTUdSLCAuLi4pIHdpdGggSVBWNl9GTF9BX0dFVC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkZDg4OGViYTMwOTc1MmFkODM2ZjNjNjU5MTE4NDNhYWIzMmM4NjRjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAwNjowNzo0NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9mbG93bGFiZWwuYyBiL25ldC9pcHY2L2lwNl9mbG93bGFiZWwuY1xuaW5kZXggMWFiNWFkMGRjZjI0Zi4uMDA2NTg1ZGM4YjVjNiAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L2lwNl9mbG93bGFiZWwuY1xuKysrIGIvbmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jXG5AQCAtNDYxLDYgKzQ2MSwyMSBAQCBmbF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpbjZfZmxvd2xhYmVsX3JlcSAqZnJlcSxcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KGNvbnN0IHN0cnVjdCBzb2NrICpzaylcbit7XG4rXHRjb25zdCBzdHJ1Y3QgaXB2Nl9mbF9zb2NrbGlzdCAqc2ZsO1xuK1x0aW50IGNvdW50ID0gMDtcbitcbitcdHJjdV9yZWFkX2xvY2soKTtcbitcdGZvcl9lYWNoX3NrX2ZsX3JjdShzaywgc2ZsKSB7XG4rXHRcdGlmICgrK2NvdW50IFx1MDAzZT0gRkxfTUFYX1BFUl9TT0NLKVxuK1x0XHRcdGJyZWFrO1xuK1x0fVxuK1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXG4rXHRyZXR1cm4gY291bnQgXHUwMDNlPSBGTF9NQVhfUEVSX1NPQ0s7XG4rfVxuK1xuIHN0YXRpYyBpbnQgbWVtX2NoZWNrKHN0cnVjdCBzb2NrICpzaylcbiB7XG4gXHRjb25zdCBpbnQgdW5wcml2X3RvdGFsX2xpbWl0ID0gRkxfTUFYX1NJWkUgLSAoRkxfTUFYX1NJWkUgLyA0KTtcbkBAIC02NzksNiArNjk0LDEwIEBAIHN0YXRpYyBpbnQgaXB2Nl9mbG93bGFiZWxfZ2V0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGluNl9mbG93bGFiZWxfcmVxICpmcmVxLFxuIFx0XHRcdGVyciA9IC1FTk9NRU07XG4gXHRcdFx0aWYgKCFzZmwxKVxuIFx0XHRcdFx0Z290byByZWxlYXNlO1xuK1x0XHRcdGVyciA9IC1FTk9CVUZTO1xuK1x0XHRcdGlmIChmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KHNrKSBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgIWNhcGFibGUoQ0FQX05FVF9BRE1JTikpXG4rXHRcdFx0XHRnb3RvIHJlbGVhc2U7XG4gXHRcdFx0aWYgKGZsLVx1MDAzZWxpbmdlciBcdTAwM2UgZmwxLVx1MDAzZWxpbmdlcilcbiBcdFx0XHRcdGZsMS1cdTAwM2VsaW5nZXIgPSBmbC1cdTAwM2VsaW5nZXI7XG4gXHRcdFx0aWYgKChsb25nKShmbC1cdTAwM2VleHBpcmVzIC0gZmwxLVx1MDAzZWV4cGlyZXMpIFx1MDAzZSAwKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDc6NDcuMjAwOTEzNzg5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjgxMjUzNTk5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQdjYgRmxvd2xhYmVsIFBhdGNoKipcblxuT2theSwgdGltZSB0byBkaXZlIGluLiBJIG5lZWQgdG8gZ2V0IGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgdGhpcyBwYXRjaCBpcyBkb2luZy4gVGhlIGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIHBpbnBvaW50IHRoZSBleGFjdCBsb2NhdGlvbiBvZiB0aGUgY2hhbmdlcywgc28gSSdtIGZvY3VzaW5nIG9uIGBuZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNgLiBOb3csIHdpdGggdGhlIGZpbGUgaWRlbnRpZmllZCwgSSBuZWVkIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LiBMZXQncyBzZWUuLi4gSSdsbCBwdWxsIHVwIGBncmVwcGVyYCAob3IgcG9zc2libHkganVzdCBhIHF1aWNrIGByZWFkLWZpbGVgIGNvbW1hbmQsIGRlcGVuZGluZyBvbiB0aGUgc2NhbGUpIHRvIHF1aWNrbHkgZXhhbWluZSBgbmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBgS2NvbmZpZ2AgZm9yIHRoZSBjb25maWd1cmF0aW9uIGZsYWdzLCBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTQyLCJPdXRwdXRUb2tlbnMiOjgwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNjowNzo1NC4wMTM0NTM2NjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjAxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDU1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDU1OlxcdGRvbmU6XFxuIDQ1NjpcXHRcXHRpZiAoZmwpIHtcXG4gNDU3OlxcdFxcdFxcdGtmcmVlKGZsLVxcdTAwM2VvcHQpO1xcbiA0NTg6XFx0XFx0XFx0a2ZyZWUoZmwpO1xcbiA0NTk6XFx0XFx0fVxcbiA0NjA6XFx0XFx0KmVycl9wID0gZXJyO1xcbiA0NjE6XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDQ2MjpcXHR9XFxuIDQ2MzpcXHRcXG4gNDY0OlxcdHN0YXRpYyBib29sIGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrKVxcbiA0NjU6XFx0e1xcbiA0NjY6XFx0XFx0Y29uc3Qgc3RydWN0IGlwdjZfZmxfc29ja2xpc3QgKnNmbDtcXG4gNDY3OlxcdFxcdGludCBjb3VudCA9IDA7XFxuIDQ2ODpcXHRcXG4gNDY5OlxcdFxcdHJjdV9yZWFkX2xvY2soKTtcXG4gNDcwOlxcdFxcdGZvcl9lYWNoX3NrX2ZsX3JjdShzaywgc2ZsKSB7XFxuIDQ3MTpcXHRcXHRcXHRpZiAoKytjb3VudCBcXHUwMDNlPSBGTF9NQVhfUEVSX1NPQ0spXFxuIDQ3MjpcXHRcXHRcXHRcXHRicmVhaztcXG4gNDczOlxcdFxcdH1cXG4gNDc0OlxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiA0NzU6XFx0XFxuIDQ3NjpcXHRcXHRyZXR1cm4gY291bnQgXFx1MDAzZT0gRkxfTUFYX1BFUl9TT0NLO1xcbiA0Nzc6XFx0fVxcbiA0Nzg6XFx0XFxuIDQ3OTpcXHRzdGF0aWMgaW50IG1lbV9jaGVjayhzdHJ1Y3Qgc29jayAqc2spXFxuIDQ4MDpcXHR7XFxuIDQ4MTpcXHRcXHRjb25zdCBpbnQgdW5wcml2X3RvdGFsX2xpbWl0ID0gRkxfTUFYX1NJWkUgLSAoRkxfTUFYX1NJWkUgLyA0KTtcXG4gNDgyOlxcdFxcdGNvbnN0IGludCB1bnByaXZfdXNlcl9saW1pdCA9IHVucHJpdl90b3RhbF9saW1pdCAvIDI7XFxuIDQ4MzpcXHRcXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7XFxuIDQ4NDpcXHRcXHRpbnQgcm9vbTtcXG4gNDg1OlxcdFxcdHN0cnVjdCBpcHY2X2ZsX3NvY2tsaXN0ICpzZmw7XFxuIDQ4NjpcXHRcXHRpbnQgY291bnQgPSAwO1xcbiA0ODc6XFx0XFxuIDQ4ODpcXHRcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZpcDZfZmxfbG9jayk7XFxuIDQ4OTpcXHRcXG4gNDkwOlxcdFxcdHJvb20gPSBGTF9NQVhfU0laRSAtIGZsX3NpemU7XFxuIDQ5MTpcXHRcXG4gNDkyOlxcdFxcdGlmIChyb29tIFxcdTAwM2UgRkxfTUFYX1NJWkUgLSBGTF9NQVhfUEVSX1NPQ0spXFxuIDQ5MzpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNDk0OlxcdFxcbiA0OTU6XFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbiA0OTY6XFx0XFx0Zm9yX2VhY2hfc2tfZmxfcmN1KHNrLCBzZmwpXFxuIDQ5NzpcXHRcXHRcXHRjb3VudCsrO1xcbiA0OTg6XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIDQ5OTpcXHRcXG4gNTAwOlxcdFxcdGlmIChyb29tIFxcdTAwM2M9IDAgfHxcXG4gNTAxOlxcdFxcdCAgICAoKGNvdW50IFxcdTAwM2U9IEZMX01BWF9QRVJfU09DSyB8fFxcbiA1MDI6XFx0XFx0ICAgICAgKGNvdW50IFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiByb29tIFxcdTAwM2MgRkxfTUFYX1NJWkUgLyAyKSB8fFxcbiA1MDM6XFx0XFx0ICAgICAgcm9vbSBcXHUwMDNjIEZMX01BWF9TSVpFIC8gNCB8fFxcbiA1MDQ6XFx0XFx0ICAgICAgbmV0LVxcdTAwM2VpcHY2LmZsb3dsYWJlbF9jb3VudCBcXHUwMDNlPSB1bnByaXZfdXNlcl9saW1pdCkgXFx1MDAyNlxcdTAwMjZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDc6NTQuMDEzNTUxMDU3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY3MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY3MDpcXHRcXHRcXHRcXHRcXHRmbDEgPSBzZmwtXFx1MDAzZWZsO1xcbiA2NzE6XFx0XFx0XFx0XFx0XFx0aWYgKCFhdG9taWNfaW5jX25vdF96ZXJvKFxcdTAwMjZmbDEtXFx1MDAzZXVzZXJzKSlcXG4gNjcyOlxcdFxcdFxcdFxcdFxcdFxcdGZsMSA9IE5VTEw7XFxuIDY3MzpcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4gNjc0OlxcdFxcdFxcdFxcdH1cXG4gNjc1OlxcdFxcdFxcdH1cXG4gNjc2OlxcdFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiA2Nzc6XFx0XFxuIDY3ODpcXHRcXHRcXHRpZiAoIWZsMSlcXG4gNjc5OlxcdFxcdFxcdFxcdGZsMSA9IGZsX2xvb2t1cChuZXQsIGZyZXEtXFx1MDAzZWZscl9sYWJlbCk7XFxuIDY4MDpcXHRcXHRcXHRpZiAoZmwxKSB7XFxuIDY4MTpcXHRyZWNoZWNrOlxcbiA2ODI6XFx0XFx0XFx0XFx0ZXJyID0gLUVFWElTVDtcXG4gNjgzOlxcdFxcdFxcdFxcdGlmIChmcmVxLVxcdTAwM2VmbHJfZmxhZ3NcXHUwMDI2SVBWNl9GTF9GX0VYQ0wpXFxuIDY4NDpcXHRcXHRcXHRcXHRcXHRnb3RvIHJlbGVhc2U7XFxuIDY4NTpcXHRcXHRcXHRcXHRlcnIgPSAtRVBFUk07XFxuIDY4NjpcXHRcXHRcXHRcXHRpZiAoZmwxLVxcdTAwM2VzaGFyZSA9PSBJUFY2X0ZMX1NfRVhDTCB8fFxcbiA2ODc6XFx0XFx0XFx0XFx0ICAgIGZsMS1cXHUwMDNlc2hhcmUgIT0gZmwtXFx1MDAzZXNoYXJlIHx8XFxuIDY4ODpcXHRcXHRcXHRcXHQgICAgKChmbDEtXFx1MDAzZXNoYXJlID09IElQVjZfRkxfU19QUk9DRVNTKSBcXHUwMDI2XFx1MDAyNlxcbiA2ODk6XFx0XFx0XFx0XFx0ICAgICAoZmwxLVxcdTAwM2Vvd25lci5waWQgIT0gZmwtXFx1MDAzZW93bmVyLnBpZCkpIHx8XFxuIDY5MDpcXHRcXHRcXHRcXHQgICAgKChmbDEtXFx1MDAzZXNoYXJlID09IElQVjZfRkxfU19VU0VSKSBcXHUwMDI2XFx1MDAyNlxcbiA2OTE6XFx0XFx0XFx0XFx0ICAgICAhdWlkX2VxKGZsMS1cXHUwMDNlb3duZXIudWlkLCBmbC1cXHUwMDNlb3duZXIudWlkKSkpXFxuIDY5MjpcXHRcXHRcXHRcXHRcXHRnb3RvIHJlbGVhc2U7XFxuIDY5MzpcXHRcXG4gNjk0OlxcdFxcdFxcdFxcdGVyciA9IC1FTk9NRU07XFxuIDY5NTpcXHRcXHRcXHRcXHRpZiAoIXNmbDEpXFxuIDY5NjpcXHRcXHRcXHRcXHRcXHRnb3RvIHJlbGVhc2U7XFxuIDY5NzpcXHRcXHRcXHRcXHRlcnIgPSAtRU5PQlVGUztcXG4gNjk4OlxcdFxcdFxcdFxcdGlmIChmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KHNrKSBcXHUwMDI2XFx1MDAyNlxcbiA2OTk6XFx0XFx0XFx0XFx0ICAgICFjYXBhYmxlKENBUF9ORVRfQURNSU4pKVxcbiA3MDA6XFx0XFx0XFx0XFx0XFx0Z290byByZWxlYXNlO1xcbiA3MDE6XFx0XFx0XFx0XFx0aWYgKGZsLVxcdTAwM2VsaW5nZXIgXFx1MDAzZSBmbDEtXFx1MDAzZWxpbmdlcilcXG4gNzAyOlxcdFxcdFxcdFxcdFxcdGZsMS1cXHUwMDNlbGluZ2VyID0gZmwtXFx1MDAzZWxpbmdlcjtcXG4gNzAzOlxcdFxcdFxcdFxcdGlmICgobG9uZykoZmwtXFx1MDAzZWV4cGlyZXMgLSBmbDEtXFx1MDAzZWV4cGlyZXMpIFxcdTAwM2UgMClcXG4gNzA0OlxcdFxcdFxcdFxcdFxcdGZsMS1cXHUwMDNlZXhwaXJlcyA9IGZsLVxcdTAwM2VleHBpcmVzO1xcbiA3MDU6XFx0XFx0XFx0XFx0ZmxfbGluayhzaywgc2ZsMSwgZmwxKTtcXG4gNzA2OlxcdFxcdFxcdFxcdGZsX2ZyZWUoZmwpO1xcbiA3MDc6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDcwODpcXHRcXG4gNzA5OlxcdHJlbGVhc2U6XFxuIDcxMDpcXHRcXHRcXHRcXHRmbF9yZWxlYXNlKGZsMSk7XFxuIDcxMTpcXHRcXHRcXHRcXHRnb3RvIGRvbmU7XFxuIDcxMjpcXHRcXHRcXHR9XFxuIDcxMzpcXHRcXHR9XFxuIDcxNDpcXHRcXHRlcnIgPSAtRU5PRU5UO1xcbiA3MTU6XFx0XFx0aWYgKCEoZnJlcS1cXHUwMDNlZmxyX2ZsYWdzIFxcdTAwMjYgSVBWNl9GTF9GX0NSRUFURSkpXFxuIDcxNjpcXHRcXHRcXHRnb3RvIGRvbmU7XFxuIDcxNzpcXHRcXG4gNzE4OlxcdFxcdGVyciA9IC1FTk9NRU07XFxuIDcxOTpcXHRcXHRpZiAoIXNmbDEpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA2OjA3OjU0LjAxMzYxMDY5N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE5NzYxMTcyMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJUHY2IEZsb3cgTGFiZWwgTWFuYWdlbWVudCBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGlwdjZfZmxvd2xhYmVsX2dldGAuIFRoaXMgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkIHNwZWNpZmljYWxseSB3aGVuIGEgdXNlcnNwYWNlIGFwcGxpY2F0aW9uIHVzZXMgYHNldHNvY2tvcHRgIHdpdGggdGhlIGBJUFY2X0ZMT1dMQUJFTF9NR1JgIG9wdGlvbiBvbiBhbiBJUHY2IHNvY2tldC4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gV2hlcmUgZXhhY3RseSBpcyBgaXA2X2Zsb3dsYWJlbC5jYCBjb21waWxlZD8gQW5kIG1vcmUgaW1wb3J0YW50bHksIHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGNvbnRyb2wgaXRzIGluY2x1c2lvbiBvciBleGNsdXNpb24gZHVyaW5nIHRoZSBrZXJuZWwgYnVpbGQ/IEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcyB0byBzZWUgd2hhdCBmZWF0dXJlcyBvciBtb2R1bGVzIHJlbHkgb24gaXQgYW5kIHVuZGVyIHdoYXQgY29uZGl0aW9ucyBpdCdzIGVuYWJsZWQuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGltcGFjdCBvbiBvdGhlciBwYXJ0cyBvZiB0aGUgbmV0d29yayBzdGFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkwNywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIiwicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDc6NTUuOTg5NzMwNTA4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0OTk1NjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwNl9mbG93bGFiZWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L01ha2VmaWxlPTg9aXB2Ni15IDo9XFx0YWZfaW5ldDYubyBhbnljYXN0Lm8gaXA2X291dHB1dC5vIGlwNl9pbnB1dC5vIGFkZHJjb25mLm8gXFxcXFxcbi0tXFxubmV0L2lwdjYvTWFrZWZpbGUtMTEtXFx0XFx0cmF3Lm8gaWNtcC5vIG1jYXN0Lm8gcmVhc3NlbWJseS5vIHRjcF9pcHY2Lm8gcGluZy5vIFxcXFxcXG5uZXQvaXB2Ni9NYWtlZmlsZToxMjpcXHRcXHRleHRoZHJzLm8gZGF0YWdyYW0ubyBpcDZfZmxvd2xhYmVsLm8gaW5ldDZfY29ubmVjdGlvbl9zb2NrLm8gXFxcXFxcbm5ldC9pcHY2L01ha2VmaWxlLTEzLVxcdFxcdHVkcF9vZmZsb2FkLm8gc2VnNi5vIGZpYjZfbm90aWZpZXIubyBycGwubyBpb2FtNi5vXFxuLS1cXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jPTk5OT1zdGF0aWMgaW50IF9faW5pdCBpbmV0Nl9pbml0KHZvaWQpXFxuLS1cXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTEwODUtXFx0XFx0Z290byBuZGlzY19sYXRlX2ZhaWw7XFxubmV0L2lwdjYvYWZfaW5ldDYuYzoxMDg2OlxcdGVyciA9IGlwNl9mbG93bGFiZWxfaW5pdCgpO1xcbm5ldC9pcHY2L2FmX2luZXQ2LmMtMTA4Ny1cXHRpZiAoZXJyKVxcbm5ldC9pcHY2L2FmX2luZXQ2LmM6MTA4ODpcXHRcXHRnb3RvIGlwNl9mbG93bGFiZWxfZmFpbDtcXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTEwODktXFx0ZXJyID0gaXB2Nl9hbnljYXN0X2luaXQoKTtcXG4tLVxcbm5ldC9pcHY2L2FmX2luZXQ2LmMtMTE4NS1pcHY2X2FueWNhc3RfZmFpbDpcXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jOjExODY6XFx0aXA2X2Zsb3dsYWJlbF9jbGVhbnVwKCk7XFxubmV0L2lwdjYvYWZfaW5ldDYuYzoxMTg3OmlwNl9mbG93bGFiZWxfZmFpbDpcXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTExODgtXFx0bmRpc2NfbGF0ZV9jbGVhbnVwKCk7XFxuLS1cXG5uZXQvaXB2Ni9kYXRhZ3JhbS5jPTcyPWludCBpcDZfZGF0YWdyYW1fZHN0X3VwZGF0ZShzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgZml4X3NrX3NhZGRyKVxcbm5ldC9pcHY2L2RhdGFncmFtLmMtNzMte1xcbm5ldC9pcHY2L2RhdGFncmFtLmM6NzQ6XFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsb3dsYWJlbCA9IE5VTEw7XFxubmV0L2lwdjYvZGF0YWdyYW0uYy03NS1cXHRzdHJ1Y3QgaW5ldF9zb2NrICppbmV0ID0gaW5ldF9zayhzayk7XFxuLS1cXG5uZXQvaXB2Ni9pY21wLmM9OTIxPXN0YXRpYyBlbnVtIHNrYl9kcm9wX3JlYXNvbiBpY21wdjZfZWNob19yZXBseShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvaWNtcC5jLTk2NC1cXHQgICAgRkxPV0xBQkVMX1JFRkxFQ1RfSUNNUFY2X0VDSE9fUkVQTElFUylcXG5uZXQvaXB2Ni9pY21wLmM6OTY1OlxcdFxcdGZsNi5mbG93bGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlwdjZfaGRyKHNrYikpO1xcbm5ldC9pcHY2L2ljbXAuYy05NjYtXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMi0vKlxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzozOiAqXFx0aXA2X2Zsb3dsYWJlbC5jXFx0XFx0SVB2NiBmbG93bGFiZWwgbWFuYWdlci5cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNC0gKlxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTQzPXN0YXRpYyBpbnQgZmxfc2l6ZTtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NDQ6c3RhdGljIHN0cnVjdCBpcDZfZmxvd2xhYmVsIF9fcmN1ICpmbF9odFtGTF9IQVNIX01BU0srMV07XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTQ1LVxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTU4PUVYUE9SVF9TWU1CT0woaXB2Nl9mbG93bGFiZWxfZXhjbHVzaXZlKTtcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03My1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NzQ6c3RhdGljIGlubGluZSBzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqX19mbF9sb29rdXAoc3RydWN0IG5ldCAqbmV0LCBfX2JlMzIgbGFiZWwpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTc1LXtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NzY6XFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsO1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03Ny1cXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy04NC1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6ODU6c3RhdGljIHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbF9sb29rdXAoc3RydWN0IG5ldCAqbmV0LCBfX2JlMzIgbGFiZWwpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTg2LXtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6ODc6XFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsO1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy04OC1cXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05Ni1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTc6c3RhdGljIGJvb2wgZmxfc2hhcmVkX2V4Y2x1c2l2ZShzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmwpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTk4LXtcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz0xMDQ9c3RhdGljIHZvaWQgZmxfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpoZWFkKVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0xMDUte1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoxMDY6XFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsID0gY29udGFpbmVyX29mKGhlYWQsIHN0cnVjdCBpcDZfZmxvd2xhYmVsLCByY3UpO1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0xMDctXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMTE0LVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoxMTU6c3RhdGljIHZvaWQgZmxfZnJlZShzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmwpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTExNi17XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMTI1LVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoxMjY6c3RhdGljIHZvaWQgZmxfcmVsZWFzZShzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmwpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTEyNy17XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9MTQzPXN0YXRpYyB2b2lkIGlwNl9mbF9nYyhzdHJ1Y3QgdGltZXJfbGlzdCAqdW51c2VkKVxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTE1MS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2M9IEZMX0hBU0hfTUFTSzsgaSsrKSB7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjE1MjpcXHRcXHRzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmw7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjE1MzpcXHRcXHRzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCBfX3JjdSAqKmZscDtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMTU0LVxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTE4ND1zdGF0aWMgdm9pZCBfX25ldF9leGl0IGlwNl9mbF9wdXJnZShzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMTg5LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYz0gRkxfSEFTSF9NQVNLOyBpKyspIHtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MTkwOlxcdFxcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbDtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MTkxOlxcdFxcdHN0cnVjdCBpcDZfZmxvd2xhYmVsIF9fcmN1ICoqZmxwO1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0xOTItXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMjA5LVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoyMTA6c3RhdGljIHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbF9pbnRlcm4oc3RydWN0IG5ldCAqbmV0LFxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoyMTE6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCwgX19iZTMyIGxhYmVsKVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0yMTIte1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoyMTM6XFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmxmbDtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMjE0LVxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTI1NS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MjU2OnN0cnVjdCBpcDZfZmxvd2xhYmVsICpfX2ZsNl9zb2NrX2xvb2t1cChzdHJ1Y3Qgc29jayAqc2ssIF9fYmUzMiBsYWJlbClcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMjU3LXtcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0yNjMtXFx0Zm9yX2VhY2hfc2tfZmxfcmN1KHNrLCBzZmwpIHtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MjY0OlxcdFxcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCA9IHNmbC1cXHUwMDNlZmw7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTI2NS1cXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz0zMDg9c3RydWN0IGlwdjZfdHhvcHRpb25zICpmbDZfbWVyZ2Vfb3B0aW9ucyhzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKm9wdF9zcGFjZSxcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MzA5OlxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmwsXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTMxMC1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IGlwdjZfdHhvcHRpb25zICpmb3B0KVxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTMzNz1zdGF0aWMgdW5zaWduZWQgbG9uZyBjaGVja19saW5nZXIodW5zaWduZWQgbG9uZyB0dGwpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMzQ1LVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzozNDY6c3RhdGljIGludCBmbDZfcmVuZXcoc3RydWN0IGlwNl9mbG93bGFiZWwgKmZsLCB1bnNpZ25lZCBsb25nIGxpbmdlciwgdW5zaWduZWQgbG9uZyBleHBpcmVzKVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0zNDcte1xcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTM2Ny1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MzY4OnN0YXRpYyBzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTM2OS1mbF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpbjZfZmxvd2xhYmVsX3JlcSAqZnJlcSxcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0zNzEte1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzozNzI6XFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsID0gTlVMTDtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMzczLVxcdGludCBvbGVuO1xcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTUxMT1zdGF0aWMgaW5saW5lIHZvaWQgZmxfbGluayhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpcHY2X2ZsX3NvY2tsaXN0ICpzZmwsXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjUxMjpcXHRcXHRcXHQgICBzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmwpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTUxMy17XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9NTk4PXN0YXRpYyBpbnQgaXB2Nl9mbG93bGFiZWxfcmVuZXcoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaW42X2Zsb3dsYWJlbF9yZXEgKmZyZXEpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNjE2LVxcdCAgICBuc19jYXBhYmxlKG5ldC1cXHUwMDNldXNlcl9ucywgQ0FQX05FVF9BRE1JTikpIHtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NjE3OlxcdFxcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCA9IGZsX2xvb2t1cChuZXQsIGZyZXEtXFx1MDAzZWZscl9sYWJlbCk7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTYxOC1cXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz02Mjk9c3RhdGljIGludCBpcHY2X2Zsb3dsYWJlbF9nZXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaW42X2Zsb3dsYWJlbF9yZXEgKmZyZXEsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNjMyLVxcdHN0cnVjdCBpcHY2X2ZsX3NvY2tsaXN0ICpzZmwsICpzZmwxID0gTlVMTDtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NjMzOlxcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCwgKmZsMSA9IE5VTEw7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTYzNC1cXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9Nzc4PXN0cnVjdCBpcDZmbF9pdGVyX3N0YXRlIHtcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03ODUtXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjc4NjpzdGF0aWMgc3RydWN0IGlwNl9mbG93bGFiZWwgKmlwNmZsX2dldF9maXJzdChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNzg3LXtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6Nzg4OlxcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCA9IE5VTEw7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTc4OS1cXHRzdHJ1Y3QgaXA2ZmxfaXRlcl9zdGF0ZSAqc3RhdGUgPSBpcDZmbF9zZXFfcHJpdmF0ZShzZXEpO1xcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTgwMi1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6ODAzOnN0YXRpYyBzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqaXA2ZmxfZ2V0X25leHQoc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbClcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODA0LXtcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy04MjYtXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjgyNzpzdGF0aWMgc3RydWN0IGlwNl9mbG93bGFiZWwgKmlwNmZsX2dldF9pZHgoc3RydWN0IHNlcV9maWxlICpzZXEsIGxvZmZfdCBwb3MpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTgyOC17XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjgyOTpcXHRzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmwgPSBpcDZmbF9nZXRfZmlyc3Qoc2VxKTtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODMwLVxcdGlmIChmbClcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz04NDc9c3RhdGljIHZvaWQgKmlwNmZsX3NlcV9uZXh0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2LCBsb2ZmX3QgKnBvcylcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODQ4LXtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6ODQ5OlxcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbDtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODUwLVxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTg2NT1zdGF0aWMgaW50IGlwNmZsX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTg3MC1cXHR9IGVsc2Uge1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo4NzE6XFx0XFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsID0gdjtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODcyLVxcdFxcdHNlcV9wcmludGYoc2VxLFxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTg5MD1zdGF0aWMgY29uc3Qgc3RydWN0IHNlcV9vcGVyYXRpb25zIGlwNmZsX3NlcV9vcHMgPSB7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODk2LVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo4OTc6c3RhdGljIGludCBfX25ldF9pbml0IGlwNl9mbG93bGFiZWxfcHJvY19pbml0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODk4LXtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6ODk5OlxcdGlmICghcHJvY19jcmVhdGVfbmV0KFxcXCJpcDZfZmxvd2xhYmVsXFxcIiwgMDQ0NCwgbmV0LVxcdTAwM2Vwcm9jX25ldCxcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTAwLVxcdFxcdFxcdFxcdTAwMjZpcDZmbF9zZXFfb3BzLCBzaXplb2Yoc3RydWN0IGlwNmZsX2l0ZXJfc3RhdGUpKSlcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05MDQtXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkwNTpzdGF0aWMgdm9pZCBfX25ldF9leGl0IGlwNl9mbG93bGFiZWxfcHJvY19maW5pKHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTA2LXtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTA3OlxcdHJlbW92ZV9wcm9jX2VudHJ5KFxcXCJpcDZfZmxvd2xhYmVsXFxcIiwgbmV0LVxcdTAwM2Vwcm9jX25ldCk7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkwOC19XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkwOS0jZWxzZVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo5MTA6c3RhdGljIGlubGluZSBpbnQgaXA2X2Zsb3dsYWJlbF9wcm9jX2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05MTEte1xcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkxMy19XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkxNDpzdGF0aWMgaW5saW5lIHZvaWQgaXA2X2Zsb3dsYWJlbF9wcm9jX2Zpbmkoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05MTUte1xcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkxOC1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTE5OnN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgaXA2X2Zsb3dsYWJlbF9uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkyMC17XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkyMS1cXHRpcDZfZmxfcHVyZ2UobmV0KTtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTIyOlxcdGlwNl9mbG93bGFiZWxfcHJvY19maW5pKG5ldCk7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkyMy19XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkyNC1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTI1OnN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgaXA2X2Zsb3dsYWJlbF9uZXRfb3BzID0ge1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo5MjY6XFx0LmluaXQgPSBpcDZfZmxvd2xhYmVsX3Byb2NfaW5pdCxcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTI3OlxcdC5leGl0ID0gaXA2X2Zsb3dsYWJlbF9uZXRfZXhpdCxcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTI4LX07XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkyOS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTMwOmludCBpcDZfZmxvd2xhYmVsX2luaXQodm9pZClcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTMxLXtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTMyOlxcdHJldHVybiByZWdpc3Rlcl9wZXJuZXRfc3Vic3lzKFxcdTAwMjZpcDZfZmxvd2xhYmVsX25ldF9vcHMpO1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05MzMtfVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05MzQtXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkzNTp2b2lkIGlwNl9mbG93bGFiZWxfY2xlYW51cCh2b2lkKVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05MzYte1xcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkzOC1cXHR0aW1lcl9kZWxldGUoXFx1MDAyNmlwNl9mbF9nY190aW1lcik7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkzOTpcXHR1bnJlZ2lzdGVyX3Blcm5ldF9zdWJzeXMoXFx1MDAyNmlwNl9mbG93bGFiZWxfbmV0X29wcyk7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTk0MC19XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9NjMzPXN0YXRpYyBpbnQgcHJlcGFyZV9pcDZncmVfeG1pdF9pcHY2KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtNjY3LVxcdGlmICh0LVxcdTAwM2VwYXJtcy5mbGFncyBcXHUwMDI2IElQNl9UTkxfRl9VU0VfT1JJR19GTE9XTEFCRUwpXFxubmV0L2lwdjYvaXA2X2dyZS5jOjY2ODpcXHRcXHRmbDYtXFx1MDAzZWZsb3dsYWJlbCB8PSBpcDZfZmxvd2xhYmVsKGlwdjZoKTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtNjY5LVxcbi0tXFxubmV0L2lwdjYvaXA2X3R1bm5lbC5jPTEyOTc9aXB4aXA2X3RubF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfdHVubmVsLmMtMTM4OC1cXHRcXHRcXHRpZiAodC1cXHUwMDNlcGFybXMuZmxhZ3MgXFx1MDAyNiBJUDZfVE5MX0ZfVVNFX09SSUdfRkxPV0xBQkVMKVxcbm5ldC9pcHY2L2lwNl90dW5uZWwuYzoxMzg5OlxcdFxcdFxcdFxcdGZsNi5mbG93bGFiZWwgfD0gaXA2X2Zsb3dsYWJlbChpcHY2aCk7XFxubmV0L2lwdjYvaXA2X3R1bm5lbC5jLTEzOTAtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvaXB2Ni9yYXcuYz03NDI9c3RhdGljIGludCByYXd2Nl9zZW5kbXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbi0tXFxubmV0L2lwdjYvcmF3LmMtNzUxLVxcdHN0cnVjdCBpcHY2X3R4b3B0aW9ucyAqb3B0ID0gTlVMTDtcXG5uZXQvaXB2Ni9yYXcuYzo3NTI6XFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsb3dsYWJlbCA9IE5VTEw7XFxubmV0L2lwdjYvcmF3LmMtNzUzLVxcdHN0cnVjdCBkc3RfZW50cnkgKmRzdCA9IE5VTEw7XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTIzNjc9c3RhdGljIHZvaWQgaXA2X211bHRpcGF0aF9sM19rZXlzKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTI0MDYtXFx0XFx0a2V5cy1cXHUwMDNlYWRkcnMudjZhZGRycy5kc3QgPSBrZXlfaXBoLVxcdTAwM2VkYWRkcjtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjI0MDc6XFx0XFx0a2V5cy1cXHUwMDNldGFncy5mbG93X2xhYmVsID0gaXA2X2Zsb3dsYWJlbChrZXlfaXBoKTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTI0MDgtXFx0XFx0a2V5cy1cXHUwMDNlYmFzaWMuaXBfcHJvdG8gPSBrZXlfaXBoLVxcdTAwM2VuZXh0aGRyO1xcbi0tXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jPTEyND1zdGF0aWMgX19iZTMyIHNlZzZfbWFrZV9mbG93bGFiZWwoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTEzNS1cXHR9IGVsc2UgaWYgKCFkb19mbG93bGFiZWwgXFx1MDAyNlxcdTAwMjYgc2tiLVxcdTAwM2Vwcm90b2NvbCA9PSBodG9ucyhFVEhfUF9JUFY2KSkge1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzoxMzY6XFx0XFx0Zmxvd2xhYmVsID0gaXA2X2Zsb3dsYWJlbChpbm5lcl9oZHIpO1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy0xMzctXFx0fVxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMzM9c3RhdGljIGludCB0Y3BfdjZfY29ubmVjdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1YWRkcixcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTYyLVxcdFxcdGlmIChmbDYtXFx1MDAzZWZsb3dsYWJlbCBcXHUwMDI2IElQVjZfRkxPV0xBQkVMX01BU0spIHtcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjE2MzpcXHRcXHRcXHRzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmxvd2xhYmVsO1xcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTY0LVxcdFxcdFxcdGZsb3dsYWJlbCA9IGZsNl9zb2NrX2xvb2t1cChzaywgZmw2LVxcdTAwM2VmbG93bGFiZWwpO1xcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz01NTA9c3RhdGljIGludCB0Y3BfdjZfc2VuZF9zeW5hY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTU3OC1cXHRcXHRpZiAoaW5ldDZfdGVzdF9iaXQoUkVQRkxPVywgc2spIFxcdTAwMjZcXHUwMDI2IGlyZXEtXFx1MDAzZXBrdG9wdHMpXFxubmV0L2lwdjYvdGNwX2lwdjYuYzo1Nzk6XFx0XFx0XFx0Zmw2LVxcdTAwM2VmbG93bGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlwdjZfaGRyKGlyZXEtXFx1MDAzZXBrdG9wdHMpKTtcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTU4MC1cXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM9MTAwNT1zdGF0aWMgdm9pZCB0Y3BfdjZfc2VuZF9yZXNldChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTExMTEtXFx0XFx0XFx0aWYgKGluZXQ2X3Rlc3RfYml0KFJFUEZMT1csIHNrKSlcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjExMTI6XFx0XFx0XFx0XFx0bGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlwdjZoKTtcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTExMTMtXFx0XFx0XFx0cHJpb3JpdHkgPSBSRUFEX09OQ0Uoc2stXFx1MDAzZXNrX3ByaW9yaXR5KTtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTEyMy1cXHRcXHQgICAgRkxPV0xBQkVMX1JFRkxFQ1RfVENQX1JFU0VUKVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MTEyNDpcXHRcXHRcXHRsYWJlbCA9IGlwNl9mbG93bGFiZWwoaXB2NmgpO1xcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTEyNS1cXHR9XFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTEzODI9c3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE0NjAtXFx0aWYgKGluZXQ2X3Rlc3RfYml0KFJFUEZMT1csIHNrKSlcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjE0NjE6XFx0XFx0bmV3bnAtXFx1MDAzZWZsb3dfbGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlwdjZfaGRyKHNrYikpO1xcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTQ2Mi1cXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM9MTU2Nz1pbnQgdGNwX3Y2X2RvX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE2OTItXFx0XFx0aWYgKGluZXQ2X3Rlc3RfYml0KFJFUEZMT1csIHNrKSlcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjE2OTM6XFx0XFx0XFx0bnAtXFx1MDAzZWZsb3dfbGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlwdjZfaGRyKG9wdF9za2IpKTtcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE2OTQtXFx0XFx0aWYgKGlwdjZfb3B0X2FjY2VwdGVkKHNrLCBvcHRfc2tiLCBcXHUwMDI2VENQX1NLQl9DQihvcHRfc2tiKS1cXHUwMDNlaGVhZGVyLmg2KSkge1xcbi0tXFxubmV0L2lwdjYvdWRwLmM9MTQ3Mj1pbnQgdWRwdjZfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9pcHY2L3VkcC5jLTE0NzctXFx0c3RydWN0IGluNl9hZGRyICpkYWRkciwgKmZpbmFsX3AsIGZpbmFsO1xcbm5ldC9pcHY2L3VkcC5jOjE0Nzg6XFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsb3dsYWJlbCA9IE5VTEw7XFxubmV0L2lwdjYvdWRwLmMtMTQ3OS1cXHRzdHJ1Y3QgaW5ldF9zb2NrICppbmV0ID0gaW5ldF9zayhzayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA2OjA3OjU2LjAzNDczMTEwNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMzNTcwMDU0ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgdGhlIElQdjYgRmxvdyBMYWJlbCBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBpcDZfZmxvd2xhYmVsLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGVyZSBkb2VzIHRoaXMgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlP1wiIEkga25vdyB0aGF0IHRoaXMgZmlsZSBpcyBkZWZpbml0ZWx5IHRpZWQgdG8gYGlwdjYteWAsIHdoaWNoLCBpbiB0dXJuLCBpcyBjb21waWxlZCBvbmx5IHdoZW4gYENPTkZJR19JUFY2YCBpcyBzZXQuIEdpdmVuIHRoYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb25maWd1cmF0aW9uLiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGBuZXQvaXB2Ni9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIElQdjYgY29uZmlndXJhdGlvbiBvcHRpb25zIGluZmx1ZW5jZSB0aGUgaW5jbHVzaW9uIG9mIHRoaXMgc3BlY2lmaWMgZmxvdyBsYWJlbCBjb2RlLiBLbm93aW5nIHRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGFuZCBvdmVyYWxsIHJvbGUgdGhpcyBtb2R1bGUgcGxheXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzE4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDc6NTkuMzkxNzM4OTgyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDAxODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUFY2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9LY29uZmlnLTUtXFxubmV0L2lwdjYvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBWNlxcbm5ldC9pcHY2L0tjb25maWctNy1cXHRib29sIFxcXCJUaGUgSVB2NiBwcm90b2NvbFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTk9aWYgSVBWNlxcbm5ldC9pcHY2L0tjb25maWctMjAtXFxubmV0L2lwdjYvS2NvbmZpZzoyMTpjb25maWcgSVBWNl9ST1VURVJfUFJFRlxcbm5ldC9pcHY2L0tjb25maWctMjItXFx0Ym9vbCBcXFwiSVB2NjogUm91dGVyIFByZWZlcmVuY2UgKFJGQyA0MTkxKSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMC1cXG5uZXQvaXB2Ni9LY29uZmlnOjMxOmNvbmZpZyBJUFY2X1JPVVRFX0lORk9cXG5uZXQvaXB2Ni9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIklQdjY6IFJvdXRlIEluZm9ybWF0aW9uIChSRkMgNDE5MSkgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzgtXFxubmV0L2lwdjYvS2NvbmZpZzozOTpjb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxcbm5ldC9pcHY2L0tjb25maWctNDAtXFx0Ym9vbCBcXFwiSVB2NjogRW5hYmxlIFJGQyA0NDI5IE9wdGltaXN0aWMgREFEXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xMDI9Y29uZmlnIElORVQ2X0lQQ09NUFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xMTEtXFxubmV0L2lwdjYvS2NvbmZpZzoxMTI6Y29uZmlnIElQVjZfTUlQNlxcbm5ldC9pcHY2L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBNb2JpbGl0eVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTE5LVxcbm5ldC9pcHY2L0tjb25maWc6MTIwOmNvbmZpZyBJUFY2X0lMQVxcbm5ldC9pcHY2L0tjb25maWctMTIxLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJZGVudGlmaWVyIExvY2F0b3IgQWRkcmVzc2luZyAoSUxBKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTQ2PWNvbmZpZyBJTkVUNl9UVU5ORUxcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTQ5LVxcbm5ldC9pcHY2L0tjb25maWc6MTUwOmNvbmZpZyBJUFY2X1ZUSVxcbm5ldC9pcHY2L0tjb25maWctMTUxLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIChzZWN1cmUpIElQdjY6IHR1bm5lbGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTYxLVxcbm5ldC9pcHY2L0tjb25maWc6MTYyOmNvbmZpZyBJUFY2X1NJVFxcbm5ldC9pcHY2L0tjb25maWctMTYzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJUHY2LWluLUlQdjQgdHVubmVsIChTSVQgZHJpdmVyKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTc2LVxcbm5ldC9pcHY2L0tjb25maWc6MTc3OmNvbmZpZyBJUFY2X1NJVF82UkRcXG5uZXQvaXB2Ni9LY29uZmlnLTE3OC1cXHRib29sIFxcXCJJUHY2OiBJUHY2IFJhcGlkIERlcGxveW1lbnQgKDZSRClcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE5NS1cXG5uZXQvaXB2Ni9LY29uZmlnOjE5Njpjb25maWcgSVBWNl9ORElTQ19OT0RFVFlQRVxcbm5ldC9pcHY2L0tjb25maWctMTk3LVxcdGJvb2xcXG5uZXQvaXB2Ni9LY29uZmlnLTE5OC1cXG5uZXQvaXB2Ni9LY29uZmlnOjE5OTpjb25maWcgSVBWNl9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogSVAtaW4tSVB2NiB0dW5uZWwgKFJGQzI0NzMpXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMDktXFxubmV0L2lwdjYvS2NvbmZpZzoyMTA6Y29uZmlnIElQVjZfR1JFXFxubmV0L2lwdjYvS2NvbmZpZy0yMTEtXFx0dHJpc3RhdGUgXFxcIklQdjY6IEdSRSB0dW5uZWxcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIyNy1cXG5uZXQvaXB2Ni9LY29uZmlnOjIyODpjb25maWcgSVBWNl9GT1VcXG5uZXQvaXB2Ni9LY29uZmlnLTIyOS1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMzEtXFxubmV0L2lwdjYvS2NvbmZpZzoyMzI6Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjMzLVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIzNi1cXG5uZXQvaXB2Ni9LY29uZmlnOjIzNzpjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2Ni9LY29uZmlnLTIzOC1cXHRib29sIFxcXCJJUHY2OiBNdWx0aXBsZSBSb3V0aW5nIFRhYmxlc1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjQyLVxcbm5ldC9pcHY2L0tjb25maWc6MjQzOmNvbmZpZyBJUFY2X1NVQlRSRUVTXFxubmV0L2lwdjYvS2NvbmZpZy0yNDQtXFx0Ym9vbCBcXFwiSVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjU2LVxcbm5ldC9pcHY2L0tjb25maWc6MjU3OmNvbmZpZyBJUFY2X01ST1VURVxcbm5ldC9pcHY2L0tjb25maWctMjU4LVxcdGJvb2wgXFxcIklQdjY6IG11bHRpY2FzdCByb3V0aW5nXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yNjQtXFxubmV0L2lwdjYvS2NvbmZpZzoyNjU6Y29uZmlnIElQVjZfTVJPVVRFX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY2L0tjb25maWctMjY2LVxcdGJvb2wgXFxcIklQdjY6IG11bHRpY2FzdCBwb2xpY3kgcm91dGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjc4LVxcbm5ldC9pcHY2L0tjb25maWc6Mjc5OmNvbmZpZyBJUFY2X1BJTVNNX1YyXFxubmV0L2lwdjYvS2NvbmZpZy0yODAtXFx0Ym9vbCBcXFwiSVB2NjogUElNLVNNIHZlcnNpb24gMiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yODUtXFxubmV0L2lwdjYvS2NvbmZpZzoyODY6Y29uZmlnIElQVjZfU0VHNl9MV1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjg3LVxcdGJvb2wgXFxcIklQdjY6IFNlZ21lbnQgUm91dGluZyBIZWFkZXIgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yOTktXFxubmV0L2lwdjYvS2NvbmZpZzozMDA6Y29uZmlnIElQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvS2NvbmZpZy0zMDEtXFx0Ym9vbCBcXFwiSVB2NjogU2VnbWVudCBSb3V0aW5nIEhNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzExLVxcbm5ldC9pcHY2L0tjb25maWc6MzEyOmNvbmZpZyBJUFY2X1NFRzZfQlBGXFxubmV0L2lwdjYvS2NvbmZpZy0zMTMtXFx0ZGVmX2Jvb2wgeVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMTYtXFxubmV0L2lwdjYvS2NvbmZpZzozMTc6Y29uZmlnIElQVjZfUlBMX0xXVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0zMTgtXFx0Ym9vbCBcXFwiSVB2NjogUlBMIFNvdXJjZSBSb3V0aW5nIEhlYWRlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMjctXFxubmV0L2lwdjYvS2NvbmZpZzozMjg6Y29uZmlnIElQVjZfSU9BTTZfTFdUVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTMyOS1cXHRib29sIFxcXCJJUHY2OiBJT0FNIFByZS1hbGxvY2F0ZWQgVHJhY2UgaW5zZXJ0aW9uIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA2OjA3OjU5LjQzNzE1NTQzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM3OTM2NDE1NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIGNvZGUgZXhwbG9yYXRpb25zOlxuXG4qKkRpdmluZyBpbnRvIElQdjYgRmxvdyBMYWJlbCBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdXNhZ2UgcGF0dGVybnMgb2YgYSBmZXcga2V5IElQdjYgZmxvdyBsYWJlbCBmdW5jdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwncyBuZXR3b3JrIHN0YWNrLiBJJ20gZm9jdXNpbmcgb24gYGlwdjZfZmxvd2xhYmVsX2dldGAsIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0YCwgYW5kIGBpcHY2X2Zsb3dsYWJlbF9vcHRgIHNwZWNpZmljYWxseSwgYWxsIHJlc2lkaW5nIGluIGBuZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNgLiBXaGF0IEknbSBhZnRlciBpcyBhIGJldHRlciBncmFzcCBvZiAqaG93KiB0aGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCwgKndoZW4qIHRoZXkgYXJlIHVzZWQsIGFuZCBpbiB3aGF0ICpjb250ZXh0KiB3aXRoaW4gdGhlIGJyb2FkZXIgSVB2NiBwYWNrZXQgcHJvY2Vzc2luZyB3b3JrZmxvdy4gQXJlIHRoZXkgcHJpbWFyaWx5IGludm9sdmVkIGluIHNvY2tldCBjcmVhdGlvbiwgcGFja2V0IHJvdXRpbmcsIGNvbm5lY3Rpb24gc2V0dXAsIG9yIHBlcmhhcHMgZXZlbiBlcnJvciBoYW5kbGluZyByZWxhdGVkIHRvIGZsb3cgbGFiZWwgZXhoYXVzdGlvbj8gSSBleHBlY3QgSSdsbCBwcm9iYWJseSBhbHNvIGJlIGxvb2tpbmcgYXQgdGhlIGRhdGEgc3RydWN0dXJlcyB0aGV5IG9wZXJhdGUgb24gYW5kIGFueSBhc3NvY2lhdGVkIGxvY2tpbmcvc3luY2hyb25pemF0aW9uIGludm9sdmVkLiBJJ20gZXhwZWN0aW5nIHRoaXMgd2lsbCBpbnZvbHZlIHNvbWUgY29kZSBzcGVsdW5raW5nIGluIHRoaXMgZmlsZSBhbmQgcHJvYmFibHkgb3RoZXJzIGluIHRoZSBgbmV0L2lwdjZgIGRpcmVjdG9yeSB0byBwcm92aWRlIGEgbW9yZSBob2xpc3RpYyB1bmRlcnN0YW5kaW5nIG9mIHRoaXMga2V5IGFyZWEuIEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBzZWVpbmcgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoIHRoZSBmbG93IGxhYmVsIG9wdGlvbiBhbmQgYW55IGxpbWl0cyBpbXBvc2VkIG9uIGZsb3cgbGFiZWwgdXNlIG9uIGEgcGVyLXNvY2tldCBvciBzeXN0ZW0gYmFzaXMuIFRoaXMgaXMgbXkgc3RhcnRpbmcgcG9pbnQgZm9yIGEgZGVlcGVyIGRpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMDk0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDg6MDMuMjMwNzk5ODk5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTAxMDM4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcHY2X2Zsb3dsYWJlbF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz01NT1zdGF0aWMgREVGSU5FX1NQSU5MT0NLKGlwNl9za19mbF9sb2NrKTtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNTYtXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjU3OkRFRklORV9TVEFUSUNfS0VZX0RFRkVSUkVEX0ZBTFNFKGlwdjZfZmxvd2xhYmVsX2V4Y2x1c2l2ZSwgSFopO1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo1ODpFWFBPUlRfU1lNQk9MKGlwdjZfZmxvd2xhYmVsX2V4Y2x1c2l2ZSk7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTU5LVxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTExNT1zdGF0aWMgdm9pZCBmbF9mcmVlKHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbClcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0xMjAtXFx0aWYgKGZsX3NoYXJlZF9leGNsdXNpdmUoZmwpIHx8IGZsLVxcdTAwM2VvcHQpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjEyMTpcXHRcXHRzdGF0aWNfYnJhbmNoX3Nsb3dfZGVjX2RlZmVycmVkKFxcdTAwMjZpcHY2X2Zsb3dsYWJlbF9leGNsdXNpdmUpO1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0xMjItXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9MjEwPXN0YXRpYyBzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmxfaW50ZXJuKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0yMzMtXFx0XFx0ICogT1RPSCBubyBuZWVkIHRvIHNlYXJjaCB0aGUgYWN0aXZlIHNvY2tldCBmaXJzdCwgbGlrZSBpdCBpc1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoyMzQ6XFx0XFx0ICogZG9uZSBpbiBpcHY2X2Zsb3dsYWJlbF9vcHQgLSBzb2NrIGlzIGxvY2tlZCwgc28gbmV3IGVudHJ5XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTIzNS1cXHRcXHQgKiB3aXRoIHRoZSBzYW1lIGxhYmVsIGNhbiBvbmx5IGFwcGVhciBvbiBhbm90aGVyIHNvY2tcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz0zNjk9ZmxfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaW42X2Zsb3dsYWJlbF9yZXEgKmZyZXEsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNDUwLVxcdFxcdFdSSVRFX09OQ0Uoc29ja19uZXQoc2spLVxcdTAwM2VpcHY2LmZsb3dsYWJlbF9oYXNfZXhjbCwgMSk7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjQ1MTpcXHRcXHRzdGF0aWNfYnJhbmNoX2RlZmVycmVkX2luYyhcXHUwMDI2aXB2Nl9mbG93bGFiZWxfZXhjbHVzaXZlKTtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNDUyLVxcdH1cXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz01MTE9c3RhdGljIGlubGluZSB2b2lkIGZsX2xpbmsoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaXB2Nl9mbF9zb2NrbGlzdCAqc2ZsLFxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTUyMi1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NTIzOmludCBpcHY2X2Zsb3dsYWJlbF9vcHRfZ2V0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGluNl9mbG93bGFiZWxfcmVxICpmcmVxLFxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy01MjQtXFx0XFx0XFx0ICAgaW50IGZsYWdzKVxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTU2Mi1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NTYzOnN0YXRpYyBpbnQgaXB2Nl9mbG93bGFiZWxfcHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGluNl9mbG93bGFiZWxfcmVxICpmcmVxKVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy01NjQte1xcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTU5Ny1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NTk4OnN0YXRpYyBpbnQgaXB2Nl9mbG93bGFiZWxfcmVuZXcoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaW42X2Zsb3dsYWJlbF9yZXEgKmZyZXEpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTU5OS17XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNjI4LVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo2Mjk6c3RhdGljIGludCBpcHY2X2Zsb3dsYWJlbF9nZXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaW42X2Zsb3dsYWJlbF9yZXEgKmZyZXEsXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTYzMC1cXHRcXHRzb2NrcHRyX3Qgb3B0dmFsLCBpbnQgb3B0bGVuKVxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTc1NC1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NzU1OmludCBpcHY2X2Zsb3dsYWJlbF9vcHQoc3RydWN0IHNvY2sgKnNrLCBzb2NrcHRyX3Qgb3B0dmFsLCBpbnQgb3B0bGVuKVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03NTYte1xcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTc2NS1cXHRjYXNlIElQVjZfRkxfQV9QVVQ6XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjc2NjpcXHRcXHRyZXR1cm4gaXB2Nl9mbG93bGFiZWxfcHV0KHNrLCBcXHUwMDI2ZnJlcSk7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTc2Ny1cXHRjYXNlIElQVjZfRkxfQV9SRU5FVzpcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NzY4OlxcdFxcdHJldHVybiBpcHY2X2Zsb3dsYWJlbF9yZW5ldyhzaywgXFx1MDAyNmZyZXEpO1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03NjktXFx0Y2FzZSBJUFY2X0ZMX0FfR0VUOlxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo3NzA6XFx0XFx0cmV0dXJuIGlwdjZfZmxvd2xhYmVsX2dldChzaywgXFx1MDAyNmZyZXEsIG9wdHZhbCwgb3B0bGVuKTtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNzcxLVxcdGRlZmF1bHQ6XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9OTM1PXZvaWQgaXA2X2Zsb3dsYWJlbF9jbGVhbnVwKHZvaWQpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkzNi17XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkzNzpcXHRzdGF0aWNfa2V5X2RlZmVycmVkX2ZsdXNoKFxcdTAwMjZpcHY2X2Zsb3dsYWJlbF9leGNsdXNpdmUpO1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05MzgtXFx0dGltZXJfZGVsZXRlKFxcdTAwMjZpcDZfZmxfZ2NfdGltZXIpO1xcbi0tXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jPTM3Nj1pbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG4tLVxcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy05MjctXFx0Y2FzZSBJUFY2X0ZMT1dMQUJFTF9NR1I6XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjkyODpcXHRcXHRyZXR2ID0gaXB2Nl9mbG93bGFiZWxfb3B0KHNrLCBvcHR2YWwsIG9wdGxlbik7XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTkyOS1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYz0xMDc4PWludCBkb19pcHY2X2dldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbi0tXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTEzNzEtXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjEzNzI6XFx0XFx0dmFsID0gaXB2Nl9mbG93bGFiZWxfb3B0X2dldChzaywgXFx1MDAyNmZyZXEsIGZsYWdzKTtcXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtMTM3My1cXHRcXHRpZiAodmFsIFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDg6MDMuMjc5ODE0MzI3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ1Njk0NzMyODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFRoaXMgUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFdlJ3ZlIGdvdCBhIHBhdGNoIGluIGBuZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYSBuZXcgZnVuY3Rpb24sIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0YCwgYW5kIHRoZW4gY2FsbGluZyBpdCB3aXRoaW4gYGlwdjZfZmxvd2xhYmVsX2dldGAgZHVyaW5nIHRoZSBmbG93bGFiZWwgbGVhc2luZy9zaGFyaW5nIHByb2Nlc3MuIFNwZWNpZmljYWxseSwgdGhpcyBjaGVjayBpcyBwdXQgaW4gcGxhY2UgdG8gZW5mb3JjZSBgRkxfTUFYX1BFUl9TT0NLYCBmb3IgdW5wcml2aWxlZ2VkIHNvY2tldHMuXG5cblRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIGFsd2F5cywgXCJJcyB0aGlzIHJlYWNoYWJsZSBjb2RlP1wiIEFic29sdXRlbHksIGl0IGlzISBJdCdzIGFjY2Vzc2libGUgdmlhIGBzZXRzb2Nrb3B0YCB3aXRoIGBTT0xfSVBWNmAsIGBJUFY2X0ZMT1dMQUJFTF9NR1JgLCBhbmQgdGhlIGFjdGlvbiBgSVBWNl9GTF9BX0dFVGAuIEV4Y2VsbGVudC4gVGhhdCdzIGEgZGlyZWN0IHVzZXItc3BhY2UgaW50ZXJmYWNlLlxuXG5UaGlzIHBhdGNoIHRvdWNoZXMgdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjaywgc3BlY2lmaWNhbGx5IElQdjYsIGFuZCBpdCdzIGFyY2hpdGVjdHVyZSBhZ25vc3RpYyBpbiBpdHMgYXBwbGljYXRpb24gYXMgaXQgdXNlcyBzdGFuZGFyZCBuZXR3b3JrIHByb3RvY29scy4gVGhlIGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uIGFyZSBgaXB2Nl9mbG93bGFiZWxfb3B0YCwgYGlwdjZfZmxvd2xhYmVsX2dldGAsIGFuZCwgb2YgY291cnNlLCBgZmxfc29ja19hdF9sZWFzZV9saW1pdGAuXG5cbkZyb20gYSBjb25maWd1cmF0aW9uIHBlcnNwZWN0aXZlLCB0aGlzIHJlcXVpcmVzIGBDT05GSUdfSVBWNmAsIHdoaWNoIGlzIGEgcHJldHR5IHN0YW5kYXJkIG9wdGlvbi4gTm8gc3VycHJpc2VzIHRoZXJlLiBEb3VibGUtY2hlY2tpbmcsIGFuZCB5ZXMsIGBJUFY2YCBpcyBhIHN0YW5kYXJkIG1lbnVjb25maWcgaXRlbS5cblxuTm93LCBsZXQncyBhcHBseSB0aGUgZnV6emluZyBydWxlczogRm9jdXNpbmcgb24gbm9uLXViaXF1aXRvdXMga2VybmVsIGZ1bmN0aW9ucz8gVGhlc2UgdGhyZWUgYXJlICpleHRyZW1lbHkqIHNwZWNpZmljIHRvIGZsb3dsYWJlbCBtYW5hZ2VtZW50LCBzbyB0aGV5IGFyZSBhIGdvb2QgZml0LlxuXG5GaW5hbGx5LCBkb2VzIHRoaXMgcGF0Y2ggbWVldCB0aGUgY3JpdGVyaWEgZm9yIGJlaW5nIFwiV29ydGhGdXp6aW5nXCI/IFdlbGwsIGl0IGhpdHMgYWxsIHRoZSBjaGVja2JveGVzOiBpdCdzIGluIGEgY29yZSBzdWJzeXN0ZW0gKG5ldHdvcmtpbmcsIElQdjYpLCBpdCBpbnRyb2R1Y2VzIGxvZ2ljIG1vZGlmaWNhdGlvbnMgKGJvdW5kcyBjaGVja2luZyBhbmQgcmVzb3VyY2UgbGltaXRpbmcpLCAqYW5kKiBpdCdzIHJlYWNoYWJsZSB2aWEgYSB1c2VyLXNwYWNlIHN5c3RlbSBjYWxsIChgc2V0c29ja29wdGApLiBUaGlzIGlzIGEgY2xlYXIgY2FzZSBmb3IgYFdvcnRoRnV6emluZyA9IHRydWVgLlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGZvcm11bGF0ZSB0aGUgcmVhc29uaW5nIGFuZCBzZXQgdGhlIHJlc3VsdHMgYWNjb3JkaW5nbHkuIFRoaXMgaXMgYSBzb2xpZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MDg3LCJPdXRwdXRUb2tlbnMiOjE0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNjowODowNy44NDkyODk4OTVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjQyNTE5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwdjZfZmxvd2xhYmVsX29wdFwiLFxuICAgIFwiaXB2Nl9mbG93bGFiZWxfZ2V0XCIsXG4gICAgXCJmbF9zb2NrX2F0X2xlYXNlX2xpbWl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHBlci1zb2NrZXQgbGltaXQgY2hlY2sgKGZsX3NvY2tfYXRfbGVhc2VfbGltaXQpIHRvIHByZXZlbnQgdW5wcml2aWxlZ2VkIHVzZXJzIGZyb20gYWNxdWlyaW5nIGV4Y2Vzc2l2ZSBmbG93bGFiZWxzIHZpYSBpcHY2X2Zsb3dsYWJlbF9nZXQoKS4gVGhpcyBtb2RpZmllcyBjb3JlIElQdjYgbmV0d29ya2luZyBsb2dpYyBkaXJlY3RseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNldHNvY2tvcHQoU09MX0lQVjYsIElQVjZfRkxPV0xBQkVMX01HUiwgLi4uKSB3aXRoIElQVjZfRkxfQV9HRVQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwdjZfZmxvd2xhYmVsX29wdFwiLFxuICAgIFwiaXB2Nl9mbG93bGFiZWxfZ2V0XCIsXG4gICAgXCJmbF9zb2NrX2F0X2xlYXNlX2xpbWl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHBlci1zb2NrZXQgbGltaXQgY2hlY2sgKGZsX3NvY2tfYXRfbGVhc2VfbGltaXQpIHRvIHByZXZlbnQgdW5wcml2aWxlZ2VkIHVzZXJzIGZyb20gYWNxdWlyaW5nIGV4Y2Vzc2l2ZSBmbG93bGFiZWxzIHZpYSBpcHY2X2Zsb3dsYWJlbF9nZXQoKS4gVGhpcyBtb2RpZmllcyBjb3JlIElQdjYgbmV0d29ya2luZyBsb2dpYyBkaXJlY3RseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNldHNvY2tvcHQoU09MX0lQVjYsIElQVjZfRkxPV0xBQkVMX01HUiwgLi4uKSB3aXRoIElQVjZfRkxfQV9HRVQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA2OjA4OjA3LjkzNTcyMzA5MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1NDkyMTc4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNjowODowNy45MzYyODcyNTFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxODU0ODY0ODI0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBgZmxfc29ja19hdF9sZWFzZV9saW1pdCgpYCBhbmQgYWRkcyBhbiBgRkxfTUFYX1BFUl9TT0NLYCBjYXBhY2l0eSBjaGVjayB3aGVuIGF0dGFjaGluZy9sZWFzaW5nIGV4aXN0aW5nIElQdjYgZmxvdyBsYWJlbHMgaW4gYGlwdjZfZmxvd2xhYmVsX2dldCgpYC4gXFxuXFxuVGhlIGNoYW5nZXMgb25seSBpbnRyb2R1Y2UgYSBjb3VudGVyLWJhc2VkIGxvb3AgaXRlcmF0aW5nIG92ZXIgYW4gZXhpc3RpbmcgUkNVLXByb3RlY3RlZCBsaXN0IGFuZCBhbiBlcnJvciBicmFuY2ggKGAtRU5PQlVGU2ApIHVuZGVyIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KClgLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBhbGxvY2F0ZWQsIHJlYWQsIG9yIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgYXJlIGFueSBidWZmZXIgbGVuZ3RocyBvciBkYXRhIHN0cnVjdHVyZXMgbW9kaWZpZWQgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBkYXRhLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGQ4ODhlYmEzMDk3NTJhZDgzNmYzYzY1OTExODQzYWFiMzJjODY0Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMDY6MDc6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMgYi9uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNcbmluZGV4IDFhYjVhZDBkY2YyNGYuLjAwNjU4NWRjOGI1YzYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNcbisrKyBiL25ldC9pcHY2L2lwNl9mbG93bGFiZWwuY1xuQEAgLTQ2MSw2ICs0NjEsMjEgQEAgZmxfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaW42X2Zsb3dsYWJlbF9yZXEgKmZyZXEsXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4rc3RhdGljIGJvb2wgZmxfc29ja19hdF9sZWFzZV9saW1pdChjb25zdCBzdHJ1Y3Qgc29jayAqc2spXG4re1xuK1x0Y29uc3Qgc3RydWN0IGlwdjZfZmxfc29ja2xpc3QgKnNmbDtcbitcdGludCBjb3VudCA9IDA7XG4rXG4rXHRyY3VfcmVhZF9sb2NrKCk7XG4rXHRmb3JfZWFjaF9za19mbF9yY3Uoc2ssIHNmbCkge1xuK1x0XHRpZiAoKytjb3VudCBcdTAwM2U9IEZMX01BWF9QRVJfU09DSylcbitcdFx0XHRicmVhaztcbitcdH1cbitcdHJjdV9yZWFkX3VubG9jaygpO1xuK1xuK1x0cmV0dXJuIGNvdW50IFx1MDAzZT0gRkxfTUFYX1BFUl9TT0NLO1xuK31cbitcbiBzdGF0aWMgaW50IG1lbV9jaGVjayhzdHJ1Y3Qgc29jayAqc2spXG4ge1xuIFx0Y29uc3QgaW50IHVucHJpdl90b3RhbF9saW1pdCA9IEZMX01BWF9TSVpFIC0gKEZMX01BWF9TSVpFIC8gNCk7XG5AQCAtNjc5LDYgKzY5NCwxMCBAQCBzdGF0aWMgaW50IGlwdjZfZmxvd2xhYmVsX2dldChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpbjZfZmxvd2xhYmVsX3JlcSAqZnJlcSxcbiBcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIFx0XHRcdGlmICghc2ZsMSlcbiBcdFx0XHRcdGdvdG8gcmVsZWFzZTtcbitcdFx0XHRlcnIgPSAtRU5PQlVGUztcbitcdFx0XHRpZiAoZmxfc29ja19hdF9sZWFzZV9saW1pdChzaykgXHUwMDI2XHUwMDI2XG4rXHRcdFx0ICAgICFjYXBhYmxlKENBUF9ORVRfQURNSU4pKVxuK1x0XHRcdFx0Z290byByZWxlYXNlO1xuIFx0XHRcdGlmIChmbC1cdTAwM2VsaW5nZXIgXHUwMDNlIGZsMS1cdTAwM2VsaW5nZXIpXG4gXHRcdFx0XHRmbDEtXHUwMDNlbGluZ2VyID0gZmwtXHUwMDNlbGluZ2VyO1xuIFx0XHRcdGlmICgobG9uZykoZmwtXHUwMDNlZXhwaXJlcyAtIGZsMS1cdTAwM2VleHBpcmVzKSBcdTAwM2UgMClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA2OjA4OjA3LjkzNjI4ODU1MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDU3MDE1OTQ3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIEZsb3dsYWJlbCBDb2RlKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGdldCBhIHNvbGlkIGdyYXNwIG9mIHRoZSBjb250ZXh0LiBGaXJzdCwgSSBuZWVkIHRvIHplcm8gaW4gb24gYG5ldC9pcHY2L2lwNl9mbG93bGFiZWwuY2AuIExldCdzIHVzZSBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gZ2V0IHRoYXQgZmlsZSBvcGVuIGFuZCBpbiBmcm9udCBvZiBtZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvZGUsIHRoZSBjdXJyZW50IHN0YXRlIG9mIGZsb3dsYWJlbCBpbXBsZW1lbnRhdGlvbiwgYmVmb3JlIEkgY2FuIHJlYWxseSBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM1NCwiT3V0cHV0VG9rZW5zIjo4MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDg6MTguNTA2NDUwNzJaIiwiU2VxIjoxNywiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU0ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ1MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ1MDpcXHRcXHRcXHRXUklURV9PTkNFKHNvY2tfbmV0KHNrKS1cXHUwMDNlaXB2Ni5mbG93bGFiZWxfaGFzX2V4Y2wsIDEpO1xcbiA0NTE6XFx0XFx0XFx0c3RhdGljX2JyYW5jaF9kZWZlcnJlZF9pbmMoXFx1MDAyNmlwdjZfZmxvd2xhYmVsX2V4Y2x1c2l2ZSk7XFxuIDQ1MjpcXHRcXHR9XFxuIDQ1MzpcXHRcXHRyZXR1cm4gZmw7XFxuIDQ1NDpcXHRcXG4gNDU1OlxcdGRvbmU6XFxuIDQ1NjpcXHRcXHRpZiAoZmwpIHtcXG4gNDU3OlxcdFxcdFxcdGtmcmVlKGZsLVxcdTAwM2VvcHQpO1xcbiA0NTg6XFx0XFx0XFx0a2ZyZWUoZmwpO1xcbiA0NTk6XFx0XFx0fVxcbiA0NjA6XFx0XFx0KmVycl9wID0gZXJyO1xcbiA0NjE6XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDQ2MjpcXHR9XFxuIDQ2MzpcXHRcXG4gNDY0OlxcdHN0YXRpYyBib29sIGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrKVxcbiA0NjU6XFx0e1xcbiA0NjY6XFx0XFx0Y29uc3Qgc3RydWN0IGlwdjZfZmxfc29ja2xpc3QgKnNmbDtcXG4gNDY3OlxcdFxcdGludCBjb3VudCA9IDA7XFxuIDQ2ODpcXHRcXG4gNDY5OlxcdFxcdHJjdV9yZWFkX2xvY2soKTtcXG4gNDcwOlxcdFxcdGZvcl9lYWNoX3NrX2ZsX3JjdShzaywgc2ZsKSB7XFxuIDQ3MTpcXHRcXHRcXHRpZiAoKytjb3VudCBcXHUwMDNlPSBGTF9NQVhfUEVSX1NPQ0spXFxuIDQ3MjpcXHRcXHRcXHRcXHRicmVhaztcXG4gNDczOlxcdFxcdH1cXG4gNDc0OlxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiA0NzU6XFx0XFxuIDQ3NjpcXHRcXHRyZXR1cm4gY291bnQgXFx1MDAzZT0gRkxfTUFYX1BFUl9TT0NLO1xcbiA0Nzc6XFx0fVxcbiA0Nzg6XFx0XFxuIDQ3OTpcXHRzdGF0aWMgaW50IG1lbV9jaGVjayhzdHJ1Y3Qgc29jayAqc2spXFxuIDQ4MDpcXHR7XFxuIDQ4MTpcXHRcXHRjb25zdCBpbnQgdW5wcml2X3RvdGFsX2xpbWl0ID0gRkxfTUFYX1NJWkUgLSAoRkxfTUFYX1NJWkUgLyA0KTtcXG4gNDgyOlxcdFxcdGNvbnN0IGludCB1bnByaXZfdXNlcl9saW1pdCA9IHVucHJpdl90b3RhbF9saW1pdCAvIDI7XFxuIDQ4MzpcXHRcXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7XFxuIDQ4NDpcXHRcXHRpbnQgcm9vbTtcXG4gNDg1OlxcdFxcdHN0cnVjdCBpcHY2X2ZsX3NvY2tsaXN0ICpzZmw7XFxuIDQ4NjpcXHRcXHRpbnQgY291bnQgPSAwO1xcbiA0ODc6XFx0XFxuIDQ4ODpcXHRcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZpcDZfZmxfbG9jayk7XFxuIDQ4OTpcXHRcXG4gNDkwOlxcdFxcdHJvb20gPSBGTF9NQVhfU0laRSAtIGZsX3NpemU7XFxuIDQ5MTpcXHRcXG4gNDkyOlxcdFxcdGlmIChyb29tIFxcdTAwM2UgRkxfTUFYX1NJWkUgLSBGTF9NQVhfUEVSX1NPQ0spXFxuIDQ5MzpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNDk0OlxcdFxcbiA0OTU6XFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbiA0OTY6XFx0XFx0Zm9yX2VhY2hfc2tfZmxfcmN1KHNrLCBzZmwpXFxuIDQ5NzpcXHRcXHRcXHRjb3VudCsrO1xcbiA0OTg6XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIDQ5OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDg6MTguNTA2NTI3MjFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY2MCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY2MDpcXHRcXG4gNjYxOlxcdFxcdGlmIChmcmVxLVxcdTAwM2VmbHJfbGFiZWwpIHtcXG4gNjYyOlxcdFxcdFxcdGVyciA9IC1FRVhJU1Q7XFxuIDY2MzpcXHRcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIDY2NDpcXHRcXHRcXHRmb3JfZWFjaF9za19mbF9yY3Uoc2ssIHNmbCkge1xcbiA2NjU6XFx0XFx0XFx0XFx0aWYgKHNmbC1cXHUwMDNlZmwtXFx1MDAzZWxhYmVsID09IGZyZXEtXFx1MDAzZWZscl9sYWJlbCkge1xcbiA2NjY6XFx0XFx0XFx0XFx0XFx0aWYgKGZyZXEtXFx1MDAzZWZscl9mbGFncyBcXHUwMDI2IElQVjZfRkxfRl9FWENMKSB7XFxuIDY2NzpcXHRcXHRcXHRcXHRcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gNjY4OlxcdFxcdFxcdFxcdFxcdFxcdGdvdG8gZG9uZTtcXG4gNjY5OlxcdFxcdFxcdFxcdFxcdH1cXG4gNjcwOlxcdFxcdFxcdFxcdFxcdGZsMSA9IHNmbC1cXHUwMDNlZmw7XFxuIDY3MTpcXHRcXHRcXHRcXHRcXHRpZiAoIWF0b21pY19pbmNfbm90X3plcm8oXFx1MDAyNmZsMS1cXHUwMDNldXNlcnMpKVxcbiA2NzI6XFx0XFx0XFx0XFx0XFx0XFx0ZmwxID0gTlVMTDtcXG4gNjczOlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbiA2NzQ6XFx0XFx0XFx0XFx0fVxcbiA2NzU6XFx0XFx0XFx0fVxcbiA2NzY6XFx0XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIDY3NzpcXHRcXG4gNjc4OlxcdFxcdFxcdGlmICghZmwxKVxcbiA2Nzk6XFx0XFx0XFx0XFx0ZmwxID0gZmxfbG9va3VwKG5ldCwgZnJlcS1cXHUwMDNlZmxyX2xhYmVsKTtcXG4gNjgwOlxcdFxcdFxcdGlmIChmbDEpIHtcXG4gNjgxOlxcdHJlY2hlY2s6XFxuIDY4MjpcXHRcXHRcXHRcXHRlcnIgPSAtRUVYSVNUO1xcbiA2ODM6XFx0XFx0XFx0XFx0aWYgKGZyZXEtXFx1MDAzZWZscl9mbGFnc1xcdTAwMjZJUFY2X0ZMX0ZfRVhDTClcXG4gNjg0OlxcdFxcdFxcdFxcdFxcdGdvdG8gcmVsZWFzZTtcXG4gNjg1OlxcdFxcdFxcdFxcdGVyciA9IC1FUEVSTTtcXG4gNjg2OlxcdFxcdFxcdFxcdGlmIChmbDEtXFx1MDAzZXNoYXJlID09IElQVjZfRkxfU19FWENMIHx8XFxuIDY4NzpcXHRcXHRcXHRcXHQgICAgZmwxLVxcdTAwM2VzaGFyZSAhPSBmbC1cXHUwMDNlc2hhcmUgfHxcXG4gNjg4OlxcdFxcdFxcdFxcdCAgICAoKGZsMS1cXHUwMDNlc2hhcmUgPT0gSVBWNl9GTF9TX1BST0NFU1MpIFxcdTAwMjZcXHUwMDI2XFxuIDY4OTpcXHRcXHRcXHRcXHQgICAgIChmbDEtXFx1MDAzZW93bmVyLnBpZCAhPSBmbC1cXHUwMDNlb3duZXIucGlkKSkgfHxcXG4gNjkwOlxcdFxcdFxcdFxcdCAgICAoKGZsMS1cXHUwMDNlc2hhcmUgPT0gSVBWNl9GTF9TX1VTRVIpIFxcdTAwMjZcXHUwMDI2XFxuIDY5MTpcXHRcXHRcXHRcXHQgICAgICF1aWRfZXEoZmwxLVxcdTAwM2Vvd25lci51aWQsIGZsLVxcdTAwM2Vvd25lci51aWQpKSlcXG4gNjkyOlxcdFxcdFxcdFxcdFxcdGdvdG8gcmVsZWFzZTtcXG4gNjkzOlxcdFxcbiA2OTQ6XFx0XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gNjk1OlxcdFxcdFxcdFxcdGlmICghc2ZsMSlcXG4gNjk2OlxcdFxcdFxcdFxcdFxcdGdvdG8gcmVsZWFzZTtcXG4gNjk3OlxcdFxcdFxcdFxcdGVyciA9IC1FTk9CVUZTO1xcbiA2OTg6XFx0XFx0XFx0XFx0aWYgKGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoc2spIFxcdTAwMjZcXHUwMDI2XFxuIDY5OTpcXHRcXHRcXHRcXHQgICAgIWNhcGFibGUoQ0FQX05FVF9BRE1JTikpXFxuIDcwMDpcXHRcXHRcXHRcXHRcXHRnb3RvIHJlbGVhc2U7XFxuIDcwMTpcXHRcXHRcXHRcXHRpZiAoZmwtXFx1MDAzZWxpbmdlciBcXHUwMDNlIGZsMS1cXHUwMDNlbGluZ2VyKVxcbiA3MDI6XFx0XFx0XFx0XFx0XFx0ZmwxLVxcdTAwM2VsaW5nZXIgPSBmbC1cXHUwMDNlbGluZ2VyO1xcbiA3MDM6XFx0XFx0XFx0XFx0aWYgKChsb25nKShmbC1cXHUwMDNlZXhwaXJlcyAtIGZsMS1cXHUwMDNlZXhwaXJlcykgXFx1MDAzZSAwKVxcbiA3MDQ6XFx0XFx0XFx0XFx0XFx0ZmwxLVxcdTAwM2VleHBpcmVzID0gZmwtXFx1MDAzZWV4cGlyZXM7XFxuIDcwNTpcXHRcXHRcXHRcXHRmbF9saW5rKHNrLCBzZmwxLCBmbDEpO1xcbiA3MDY6XFx0XFx0XFx0XFx0ZmxfZnJlZShmbCk7XFxuIDcwNzpcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNzA4OlxcdFxcbiA3MDk6XFx0cmVsZWFzZTpcXG4gNzEwOlxcdFxcdFxcdFxcdGZsX3JlbGVhc2UoZmwxKTtcXG4gNzExOlxcdFxcdFxcdFxcdGdvdG8gZG9uZTtcXG4gNzEyOlxcdFxcdFxcdH1cXG4gNzEzOlxcdFxcdH1cXG4gNzE0OlxcdFxcdGVyciA9IC1FTk9FTlQ7XFxuIDcxNTpcXHRcXHRpZiAoIShmcmVxLVxcdTAwM2VmbHJfZmxhZ3MgXFx1MDAyNiBJUFY2X0ZMX0ZfQ1JFQVRFKSlcXG4gNzE2OlxcdFxcdFxcdGdvdG8gZG9uZTtcXG4gNzE3OlxcdFxcbiA3MTg6XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gNzE5OlxcdFxcdGlmICghc2ZsMSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDg6MTguNTA2NTgyMzFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE1Mzg0MDAwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRha2luZyB0aGUgcm9sZSBvZiB0aGUgdGhpbmtpbmcgcHJvY2VzcyBhcyBkZXNjcmliZWQ6XG5cbioqRGl2aW5nIERlZXBlciBpbnRvIEZsb3cgTGFiZWwgSW1wbGVtZW50YXRpb24qKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBmaW5hbGl6ZSBteSBhc3Nlc3NtZW50IG9mIHRoaXMgZmxvdyBsYWJlbCBsb2dpYywgSSBuZWVkIGEgY2xlYXJlciBwaWN0dXJlLiBJJ20gZ29pbmcgdG8gc2hpZnQgZm9jdXMgYW5kIHRyYWNlIHRoZSByZXN0IG9mIHRoZSBjb2RlIGV4ZWN1dGlvbi4gU3BlY2lmaWNhbGx5LCBJJ2xsIGV4YW1pbmUgdGhlIHJlbWFpbmluZyBwYXJ0cyBvZiBgaXB2Nl9mbG93bGFiZWxfZ2V0YCBmdW5jdGlvbi4gQW5kIGVxdWFsbHkgaW1wb3J0YW50LCBJIHdpbGwgYmUgZGVsdmluZyBpbnRvIHRoZSBpbm5lciB3b3JraW5ncyBvZiBgZmxfY3JlYXRlYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgcGllY2VzIEkgbmVlZCB0byB0cnVseSB1bmRlcnN0YW5kIGhvdyBldmVyeXRoaW5nIGZpdHMgdG9nZXRoZXIgZm9yIHRoZSBmbG93IGxhYmVsIGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjE2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiLCJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNjowODoyMC42NjA0MjU4MjRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYzMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDYzMDpcXHRcXHRcXHRzb2NrcHRyX3Qgb3B0dmFsLCBpbnQgb3B0bGVuKVxcbiA2MzE6XFx0e1xcbiA2MzI6XFx0XFx0c3RydWN0IGlwdjZfZmxfc29ja2xpc3QgKnNmbCwgKnNmbDEgPSBOVUxMO1xcbiA2MzM6XFx0XFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsLCAqZmwxID0gTlVMTDtcXG4gNjM0OlxcdFxcdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrKTtcXG4gNjM1OlxcdFxcdGludCBlcnI7XFxuIDYzNjpcXHRcXG4gNjM3OlxcdFxcdGlmIChmcmVxLVxcdTAwM2VmbHJfZmxhZ3MgXFx1MDAyNiBJUFY2X0ZMX0ZfUkVGTEVDVCkge1xcbiA2Mzg6XFx0XFx0XFx0aWYgKFJFQURfT05DRShuZXQtXFx1MDAzZWlwdjYuc3lzY3RsLmZsb3dsYWJlbF9jb25zaXN0ZW5jeSkpIHtcXG4gNjM5OlxcdFxcdFxcdFxcdG5ldF9pbmZvX3JhdGVsaW1pdGVkKFxcXCJDYW4gbm90IHNldCBJUFY2X0ZMX0ZfUkVGTEVDVCBpZiBmbG93bGFiZWxfY29uc2lzdGVuY3kgc3lzY3RsIGlzIGVuYWJsZVxcXFxuXFxcIik7XFxuIDY0MDpcXHRcXHRcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbiA2NDE6XFx0XFx0XFx0fVxcbiA2NDI6XFx0XFxuIDY0MzpcXHRcXHRcXHRpZiAoc2stXFx1MDAzZXNrX3Byb3RvY29sICE9IElQUFJPVE9fVENQKVxcbiA2NDQ6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9QUk9UT09QVDtcXG4gNjQ1OlxcdFxcdFxcdGluZXQ2X3NldF9iaXQoUkVQRkxPVywgc2spO1xcbiA2NDY6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDY0NzpcXHRcXHR9XFxuIDY0ODpcXHRcXG4gNjQ5OlxcdFxcdGlmIChmcmVxLVxcdTAwM2VmbHJfbGFiZWwgXFx1MDAyNiB+SVBWNl9GTE9XTEFCRUxfTUFTSylcXG4gNjUwOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA2NTE6XFx0XFx0aWYgKFJFQURfT05DRShuZXQtXFx1MDAzZWlwdjYuc3lzY3RsLmZsb3dsYWJlbF9zdGF0ZV9yYW5nZXMpIFxcdTAwMjZcXHUwMDI2XFxuIDY1MjpcXHRcXHQgICAgKGZyZXEtXFx1MDAzZWZscl9sYWJlbCBcXHUwMDI2IElQVjZfRkxPV0xBQkVMX1NUQVRFTEVTU19GTEFHKSlcXG4gNjUzOlxcdFxcdFxcdHJldHVybiAtRVJBTkdFO1xcbiA2NTQ6XFx0XFxuIDY1NTpcXHRcXHRmbCA9IGZsX2NyZWF0ZShuZXQsIHNrLCBmcmVxLCBvcHR2YWwsIG9wdGxlbiwgXFx1MDAyNmVycik7XFxuIDY1NjpcXHRcXHRpZiAoIWZsKVxcbiA2NTc6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gNjU4OlxcdFxcbiA2NTk6XFx0XFx0c2ZsMSA9IGttYWxsb2Nfb2JqKCpzZmwxKTtcXG4gNjYwOlxcdFxcbiA2NjE6XFx0XFx0aWYgKGZyZXEtXFx1MDAzZWZscl9sYWJlbCkge1xcbiA2NjI6XFx0XFx0XFx0ZXJyID0gLUVFWElTVDtcXG4gNjYzOlxcdFxcdFxcdHJjdV9yZWFkX2xvY2soKTtcXG4gNjY0OlxcdFxcdFxcdGZvcl9lYWNoX3NrX2ZsX3JjdShzaywgc2ZsKSB7XFxuIDY2NTpcXHRcXHRcXHRcXHRpZiAoc2ZsLVxcdTAwM2VmbC1cXHUwMDNlbGFiZWwgPT0gZnJlcS1cXHUwMDNlZmxyX2xhYmVsKSB7XFxuIDY2NjpcXHRcXHRcXHRcXHRcXHRpZiAoZnJlcS1cXHUwMDNlZmxyX2ZsYWdzIFxcdTAwMjYgSVBWNl9GTF9GX0VYQ0wpIHtcXG4gNjY3OlxcdFxcdFxcdFxcdFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiA2Njg6XFx0XFx0XFx0XFx0XFx0XFx0Z290byBkb25lO1xcbiA2Njk6XFx0XFx0XFx0XFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNjowODoyMC42NjA1MjYyNDRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTgyNDM4MzEzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGbG93IExhYmVsIExlYXNlIExpbWl0IFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGNvbmNlcm4gd2FzIGFib3V0IGEgcG90ZW50aWFsIGJ1ZyBpbiBgaXB2Nl9mbG93bGFiZWxfZ2V0KClgLiBJdCBzZWVtcyB0aGF0IHdoZW4gYSBzb2NrZXQgKnJldXNlcyogYW4gZXhpc3RpbmcgZmxvdyBsYWJlbCAoYGZsMWApLCB0aGUgY29kZSB3YXNuJ3QgY29ycmVjdGx5IGNoZWNraW5nIHRoZSBwZXItc29ja2V0IGxpbWl0IGBGTF9NQVhfUEVSX1NPQ0tgLiBXZSBkbyBoYXZlIGBtZW1fY2hlY2soc2spYCBpbiBgZmxfY3JlYXRlKClgLCBidXQgaXQncyBvbmx5IGNhbGxlZCB3aGVuICpjcmVhdGluZyogYSBuZXcgZmxvdyBsYWJlbC4gTXkgaHVuY2ggd2FzIHRoYXQgd2hlbiAqcmV1c2luZyogYSBsYWJlbCAodmlhIGBmcmVxLVx1MDAzZWZscl9sYWJlbGAgYW5kIGZpbmRpbmcgYGZsMWApLCB3ZSBzdGlsbCBjYWxsIGBmbF9jcmVhdGVgLCBidXQgcGVyaGFwcyB0aGUgYG1lbV9jaGVja2AgbG9naWMgd2FzIGJ5cGFzc2VkLCBlc3BlY2lhbGx5IGlmIGByb29tIFx1MDAzZSBGTF9NQVhfU0laRSAtIEZMX01BWF9QRVJfU09DS2Agb3IgaW4gc2NlbmFyaW9zIG9mIHJlcGVhdGVkbHkgbGVhc2luZyBleGlzdGluZyBsYWJlbHMuXG5cbkkgZG92ZSBpbnRvIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KHNrKWAgdG8gY29uZmlybS4gSXQgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgc29ja2V0J3MgZmxvdyBsYWJlbHMgYW5kIGNvdW50cyB0aGVtLiBJZiB0aGUgY291bnQgKGBjb3VudGApIHJlYWNoZXMgb3IgZXhjZWVkcyBgRkxfTUFYX1BFUl9TT0NLYCwgYW5kIHRoZSBzb2NrZXQgZG9lc24ndCBoYXZlIGBDQVBfTkVUX0FETUlOYCwgaXQgcmV0dXJucyBgLUVOT0JVRlNgLiBUaGF0J3MgdGhlIGNvcmUgb2YgdGhlIGxpbWl0IGVuZm9yY2VtZW50LiBUaGUgY2hlY2sgaW4gYGlwdjZfZmxvd2xhYmVsX2dldGAgdXNlcyB0aGF0IGZ1bmN0aW9uIHRvIHByZXZlbnQgZXhjZWVkaW5nIHRoZSBsaW1pdC5cblxuTm93LCBsZXQncyB0aGluayBhYm91dCB0aGlzIGZyb20gYSBLTVNBTi9LQVNBTiBwZXJzcGVjdGl2ZS4gRG9lcyB0aGlzIHBhdGNoOlxuXG4xLiAgKipJbnRyb2R1Y2Uga2VybmVsIHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHM/KiogTm8uXG4yLiAgKipSZWx5IG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGluIGNvbmRpdGlvbmFsIGxvZ2ljPyoqIE5vLCBiZWNhdXNlIGBjb3VudGAgaXMgaW5pdGlhbGl6ZWQgdG8gemVybywgYW5kIGBza2AgYW5kIGBzZmxgIGFyZSBjb3JyZWN0bHkgaGFuZGxlZC5cbjMuICAqKkFsbG9jYXRlIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGFyZSB1c2VkIGxhdGVyPyoqIE5vLlxuNC4gICoqSW50cm9kdWNlIGJvdW5kcyBjaGVjayBmbGF3cyB0aGF0IGNvdWxkIGxlYWQgdG8gcmVhZGluZyB1bmluaXRpYWxpemVkIGJ5dGVzPyoqIE5vLlxuXG5UaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcy4gSXQncyBzb2xlbHkgYWJvdXQgcmVzb3VyY2UgbGltaXRpbmcgYW5kIGFjY291bnRpbmcgZm9yIGZsb3dsYWJlbCB1c2FnZSBwZXIgc29ja2V0LiBLQVNBTiBhbmQgdGhlIHVzdWFsIHRlc3Rpbmcgc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIGNvcnJlY3RuZXNzIGhlcmUuIFdlIGRvbid0IG5lZWQgS01TQU4gdG8gZmxhZyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBiZWNhdXNlIHRoZXJlIGlzbid0IGFueS5cblxuSSdtIGNvbmZpZGVudCBpbiBjYWxsaW5nIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwODYsIk91dHB1dFRva2VucyI6MTY0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzcxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDg6MjYuNDg0OTExOTYyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KClgIGFuZCBhZGRzIGFuIGBGTF9NQVhfUEVSX1NPQ0tgIGNhcGFjaXR5IGNoZWNrIHdoZW4gYXR0YWNoaW5nL2xlYXNpbmcgZXhpc3RpbmcgSVB2NiBmbG93IGxhYmVscyBpbiBgaXB2Nl9mbG93bGFiZWxfZ2V0KClgLiBcXG5cXG5UaGUgY2hhbmdlcyBvbmx5IGludHJvZHVjZSBhIGNvdW50ZXItYmFzZWQgbG9vcCBpdGVyYXRpbmcgb3ZlciBhbiBleGlzdGluZyBSQ1UtcHJvdGVjdGVkIGxpc3QgYW5kIGFuIGVycm9yIGJyYW5jaCAoYC1FTk9CVUZTYCkgdW5kZXIgYGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoKWAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGFsbG9jYXRlZCwgcmVhZCwgb3IgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBhcmUgYW55IGJ1ZmZlciBsZW5ndGhzIG9yIGRhdGEgc3RydWN0dXJlcyBtb2RpZmllZCBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KClgIGFuZCBhZGRzIGFuIGBGTF9NQVhfUEVSX1NPQ0tgIGNhcGFjaXR5IGNoZWNrIHdoZW4gYXR0YWNoaW5nL2xlYXNpbmcgZXhpc3RpbmcgSVB2NiBmbG93IGxhYmVscyBpbiBgaXB2Nl9mbG93bGFiZWxfZ2V0KClgLiBcXG5cXG5UaGUgY2hhbmdlcyBvbmx5IGludHJvZHVjZSBhIGNvdW50ZXItYmFzZWQgbG9vcCBpdGVyYXRpbmcgb3ZlciBhbiBleGlzdGluZyBSQ1UtcHJvdGVjdGVkIGxpc3QgYW5kIGFuIGVycm9yIGJyYW5jaCAoYC1FTk9CVUZTYCkgdW5kZXIgYGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoKWAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGFsbG9jYXRlZCwgcmVhZCwgb3IgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBhcmUgYW55IGJ1ZmZlciBsZW5ndGhzIG9yIGRhdGEgc3RydWN0dXJlcyBtb2RpZmllZCBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfrxtx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-04 05:42:12 +0000 UTC FinishedAt: 2026-09-04 06:08:27 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "adf50c47a47f0f0f0b79dd58ffade9919cddebea", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "adf50c47a47f0f0f0b79dd58ffade9919cddebea", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6" ], "series_id": "3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ipv6_flowlabel_opt", "ipv6_flowlabel_get", "fl_sock_at_lease_limit" ], "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+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcHY2X2Zsb3dsYWJlbF9vcHQmIzM0OywKICAgICYjMzQ7aXB2Nl9mbG93bGFiZWxfZ2V0JiMzNDssCiAgICAmIzM0O2ZsX3NvY2tfYXRfbGVhc2VfbGltaXQmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KClgIGFuZCBhZGRzIGFuIGBGTF9NQVhfUEVSX1NPQ0tgIGNhcGFjaXR5IGNoZWNrIHdoZW4gYXR0YWNoaW5nL2xlYXNpbmcgZXhpc3RpbmcgSVB2NiBmbG93IGxhYmVscyBpbiBgaXB2Nl9mbG93bGFiZWxfZ2V0KClgLiBcblxuVGhlIGNoYW5nZXMgb25seSBpbnRyb2R1Y2UgYSBjb3VudGVyLWJhc2VkIGxvb3AgaXRlcmF0aW5nIG92ZXIgYW4gZXhpc3RpbmcgUkNVLXByb3RlY3RlZCBsaXN0IGFuZCBhbiBlcnJvciBicmFuY2ggKGAtRU5PQlVGU2ApIHVuZGVyIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KClgLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBhbGxvY2F0ZWQsIHJlYWQsIG9yIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgYXJlIGFueSBidWZmZXIgbGVuZ3RocyBvciBkYXRhIHN0cnVjdHVyZXMgbW9kaWZpZWQgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBkYXRhLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBwZXItc29ja2V0IGxpbWl0IGNoZWNrIChmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KSB0byBwcmV2ZW50IHVucHJpdmlsZWdlZCB1c2VycyBmcm9tIGFjcXVpcmluZyBleGNlc3NpdmUgZmxvd2xhYmVscyB2aWEgaXB2Nl9mbG93bGFiZWxfZ2V0KCkuIFRoaXMgbW9kaWZpZXMgY29yZSBJUHY2IG5ldHdvcmtpbmcgbG9naWMgZGlyZWN0bHkgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzZXRzb2Nrb3B0KFNPTF9JUFY2LCBJUFY2X0ZMT1dMQUJFTF9NR1IsIC4uLikgd2l0aCBJUFY2X0ZMX0FfR0VULiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZGQ4ODhlYmEzMDk3NTJhZDgzNmYzYzY1OTExODQzYWFiMzJjODY0Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMDY6MDc6NDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jIGIvbmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jXG5pbmRleCAxYWI1YWQwZGNmMjRmLi4wMDY1ODVkYzhiNWM2IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNcbkBAIC00NjEsNiAmIzQzOzQ2MSwyMSBAQCBmbF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpbjZfZmxvd2xhYmVsX3JlcSAqZnJlcSxcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbiYjNDM7c3RhdGljIGJvb2wgZmxfc29ja19hdF9sZWFzZV9saW1pdChjb25zdCBzdHJ1Y3Qgc29jayAqc2spXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgaXB2Nl9mbF9zb2NrbGlzdCAqc2ZsO1xuJiM0MztcdGludCBjb3VudCA9IDA7XG4mIzQzO1xuJiM0MztcdHJjdV9yZWFkX2xvY2soKTtcbiYjNDM7XHRmb3JfZWFjaF9za19mbF9yY3Uoc2ssIHNmbCkge1xuJiM0MztcdFx0aWYgKCYjNDM7JiM0Mztjb3VudCBcdTAwM2U9IEZMX01BWF9QRVJfU09DSylcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcdHJjdV9yZWFkX3VubG9jaygpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gY291bnQgXHUwMDNlPSBGTF9NQVhfUEVSX1NPQ0s7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBtZW1fY2hlY2soc3RydWN0IHNvY2sgKnNrKVxuIHtcbiBcdGNvbnN0IGludCB1bnByaXZfdG90YWxfbGltaXQgPSBGTF9NQVhfU0laRSAtIChGTF9NQVhfU0laRSAvIDQpO1xuQEAgLTY3OSw2ICYjNDM7Njk0LDEwIEBAIHN0YXRpYyBpbnQgaXB2Nl9mbG93bGFiZWxfZ2V0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGluNl9mbG93bGFiZWxfcmVxICpmcmVxLFxuIFx0XHRcdGVyciA9IC1FTk9NRU07XG4gXHRcdFx0aWYgKCFzZmwxKVxuIFx0XHRcdFx0Z290byByZWxlYXNlO1xuJiM0MztcdFx0XHRlcnIgPSAtRU5PQlVGUztcbiYjNDM7XHRcdFx0aWYgKGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoc2spIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0XHQgICAgIWNhcGFibGUoQ0FQX05FVF9BRE1JTikpXG4mIzQzO1x0XHRcdFx0Z290byByZWxlYXNlO1xuIFx0XHRcdGlmIChmbC1cdTAwM2VsaW5nZXIgXHUwMDNlIGZsMS1cdTAwM2VsaW5nZXIpXG4gXHRcdFx0XHRmbDEtXHUwMDNlbGluZ2VyID0gZmwtXHUwMDNlbGluZ2VyO1xuIFx0XHRcdGlmICgobG9uZykoZmwtXHUwMDNlZXhwaXJlcyAtIGZsMS1cdTAwM2VleHBpcmVzKSBcdTAwM2UgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNjowNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXB2Nl9mbG93bGFiZWxfb3B0JiMzNDssCiAgICAmIzM0O2lwdjZfZmxvd2xhYmVsX2dldCYjMzQ7LAogICAgJiMzNDtmbF9zb2NrX2F0X2xlYXNlX2xpbWl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBwZXItc29ja2V0IGxpbWl0IGNoZWNrIChmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KSB0byBwcmV2ZW50IHVucHJpdmlsZWdlZCB1c2VycyBmcm9tIGFjcXVpcmluZyBleGNlc3NpdmUgZmxvd2xhYmVscyB2aWEgaXB2Nl9mbG93bGFiZWxfZ2V0KCkuIFRoaXMgbW9kaWZpZXMgY29yZSBJUHY2IG5ldHdvcmtpbmcgbG9naWMgZGlyZWN0bHkgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzZXRzb2Nrb3B0KFNPTF9JUFY2LCBJUFY2X0ZMT1dMQUJFTF9NR1IsIC4uLikgd2l0aCBJUFY2X0ZMX0FfR0VULiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZGQ4ODhlYmEzMDk3NTJhZDgzNmYzYzY1OTExODQzYWFiMzJjODY0YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDQgMDY6MDc6NDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMgYi9uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMKaW5kZXggMWFiNWFkMGRjZjI0Zi4uMDA2NTg1ZGM4YjVjNiAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L2lwNl9mbG93bGFiZWwuYwpAQCAtNDYxLDYgJiM0Mzs0NjEsMjEgQEAgZmxfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaW42X2Zsb3dsYWJlbF9yZXEgKmZyZXEsCiAJcmV0dXJuIE5VTEw7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KGNvbnN0IHN0cnVjdCBzb2NrICpzaykKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBpcHY2X2ZsX3NvY2tsaXN0ICpzZmw7CiYjNDM7CWludCBjb3VudCA9IDA7CiYjNDM7CiYjNDM7CXJjdV9yZWFkX2xvY2soKTsKJiM0MzsJZm9yX2VhY2hfc2tfZmxfcmN1KHNrLCBzZmwpIHsKJiM0MzsJCWlmICgmIzQzOyYjNDM7Y291bnQgJmd0Oz0gRkxfTUFYX1BFUl9TT0NLKQomIzQzOwkJCWJyZWFrOwomIzQzOwl9CiYjNDM7CXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwomIzQzOwlyZXR1cm4gY291bnQgJmd0Oz0gRkxfTUFYX1BFUl9TT0NLOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgbWVtX2NoZWNrKHN0cnVjdCBzb2NrICpzaykKIHsKIAljb25zdCBpbnQgdW5wcml2X3RvdGFsX2xpbWl0ID0gRkxfTUFYX1NJWkUgLSAoRkxfTUFYX1NJWkUgLyA0KTsKQEAgLTY3OSw2ICYjNDM7Njk0LDEwIEBAIHN0YXRpYyBpbnQgaXB2Nl9mbG93bGFiZWxfZ2V0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGluNl9mbG93bGFiZWxfcmVxICpmcmVxLAogCQkJZXJyID0gLUVOT01FTTsKIAkJCWlmICghc2ZsMSkKIAkJCQlnb3RvIHJlbGVhc2U7CiYjNDM7CQkJZXJyID0gLUVOT0JVRlM7CiYjNDM7CQkJaWYgKGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoc2spICZhbXA7JmFtcDsKJiM0MzsJCQkgICAgIWNhcGFibGUoQ0FQX05FVF9BRE1JTikpCiYjNDM7CQkJCWdvdG8gcmVsZWFzZTsKIAkJCWlmIChmbC0mZ3Q7bGluZ2VyICZndDsgZmwxLSZndDtsaW5nZXIpCiAJCQkJZmwxLSZndDtsaW5nZXIgPSBmbC0mZ3Q7bGluZ2VyOwogCQkJaWYgKChsb25nKShmbC0mZ3Q7ZXhwaXJlcyAtIGZsMS0mZ3Q7ZXhwaXJlcykgJmd0OyAwKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNjowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTQyCgkJCQkJCQlvdXRwdXQ6IDgwCgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJUHY2IEZsb3dsYWJlbCBQYXRjaCoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW4uIEkgbmVlZCB0byBnZXQgYSBnb29kIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCB0aGlzIHBhdGNoIGlzIGRvaW5nLiBUaGUgZmlyc3Qgc3RlcCBpcyBhbHdheXMgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGxvY2F0aW9uIG9mIHRoZSBjaGFuZ2VzLCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIGBuZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNgLiBOb3csIHdpdGggdGhlIGZpbGUgaWRlbnRpZmllZCwgSSBuZWVkIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O2xsIHB1bGwgdXAgYGdyZXBwZXJgIChvciBwb3NzaWJseSBqdXN0IGEgcXVpY2sgYHJlYWQtZmlsZWAgY29tbWFuZCwgZGVwZW5kaW5nIG9uIHRoZSBzY2FsZSkgdG8gcXVpY2tseSBleGFtaW5lIGBuZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNgIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIGBLY29uZmlnYCBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gZmxhZ3MsIGFzIHdlbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDY6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQ1NTpcdGRvbmU6XG4gNDU2Olx0XHRpZiAoZmwpIHtcbiA0NTc6XHRcdFx0a2ZyZWUoZmwtXHUwMDNlb3B0KTtcbiA0NTg6XHRcdFx0a2ZyZWUoZmwpO1xuIDQ1OTpcdFx0fVxuIDQ2MDpcdFx0KmVycl9wID0gZXJyO1xuIDQ2MTpcdFx0cmV0dXJuIE5VTEw7XG4gNDYyOlx0fVxuIDQ2MzpcdFxuIDQ2NDpcdHN0YXRpYyBib29sIGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrKVxuIDQ2NTpcdHtcbiA0NjY6XHRcdGNvbnN0IHN0cnVjdCBpcHY2X2ZsX3NvY2tsaXN0ICpzZmw7XG4gNDY3Olx0XHRpbnQgY291bnQgPSAwO1xuIDQ2ODpcdFxuIDQ2OTpcdFx0cmN1X3JlYWRfbG9jaygpO1xuIDQ3MDpcdFx0Zm9yX2VhY2hfc2tfZmxfcmN1KHNrLCBzZmwpIHtcbiA0NzE6XHRcdFx0aWYgKCYjNDM7JiM0Mztjb3VudCBcdTAwM2U9IEZMX01BWF9QRVJfU09DSylcbiA0NzI6XHRcdFx0XHRicmVhaztcbiA0NzM6XHRcdH1cbiA0NzQ6XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIDQ3NTpcdFxuIDQ3NjpcdFx0cmV0dXJuIGNvdW50IFx1MDAzZT0gRkxfTUFYX1BFUl9TT0NLO1xuIDQ3NzpcdH1cbiA0Nzg6XHRcbiA0Nzk6XHRzdGF0aWMgaW50IG1lbV9jaGVjayhzdHJ1Y3Qgc29jayAqc2spXG4gNDgwOlx0e1xuIDQ4MTpcdFx0Y29uc3QgaW50IHVucHJpdl90b3RhbF9saW1pdCA9IEZMX01BWF9TSVpFIC0gKEZMX01BWF9TSVpFIC8gNCk7XG4gNDgyOlx0XHRjb25zdCBpbnQgdW5wcml2X3VzZXJfbGltaXQgPSB1bnByaXZfdG90YWxfbGltaXQgLyAyO1xuIDQ4MzpcdFx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xuIDQ4NDpcdFx0aW50IHJvb207XG4gNDg1Olx0XHRzdHJ1Y3QgaXB2Nl9mbF9zb2NrbGlzdCAqc2ZsO1xuIDQ4NjpcdFx0aW50IGNvdW50ID0gMDtcbiA0ODc6XHRcbiA0ODg6XHRcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2aXA2X2ZsX2xvY2spO1xuIDQ4OTpcdFxuIDQ5MDpcdFx0cm9vbSA9IEZMX01BWF9TSVpFIC0gZmxfc2l6ZTtcbiA0OTE6XHRcbiA0OTI6XHRcdGlmIChyb29tIFx1MDAzZSBGTF9NQVhfU0laRSAtIEZMX01BWF9QRVJfU09DSylcbiA0OTM6XHRcdFx0cmV0dXJuIDA7XG4gNDk0Olx0XG4gNDk1Olx0XHRyY3VfcmVhZF9sb2NrKCk7XG4gNDk2Olx0XHRmb3JfZWFjaF9za19mbF9yY3Uoc2ssIHNmbClcbiA0OTc6XHRcdFx0Y291bnQmIzQzOyYjNDM7O1xuIDQ5ODpcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gNDk5Olx0XG4gNTAwOlx0XHRpZiAocm9vbSBcdTAwM2M9IDAgfHxcbiA1MDE6XHRcdCAgICAoKGNvdW50IFx1MDAzZT0gRkxfTUFYX1BFUl9TT0NLIHx8XG4gNTAyOlx0XHQgICAgICAoY291bnQgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IHJvb20gXHUwMDNjIEZMX01BWF9TSVpFIC8gMikgfHxcbiA1MDM6XHRcdCAgICAgIHJvb20gXHUwMDNjIEZMX01BWF9TSVpFIC8gNCB8fFxuIDUwNDpcdFx0ICAgICAgbmV0LVx1MDAzZWlwdjYuZmxvd2xhYmVsX2NvdW50IFx1MDAzZT0gdW5wcml2X3VzZXJfbGltaXQpIFx1MDAyNlx1MDAyNlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2NzA6XHRcdFx0XHRcdGZsMSA9IHNmbC1cdTAwM2VmbDtcbiA2NzE6XHRcdFx0XHRcdGlmICghYXRvbWljX2luY19ub3RfemVybyhcdTAwMjZmbDEtXHUwMDNldXNlcnMpKVxuIDY3MjpcdFx0XHRcdFx0XHRmbDEgPSBOVUxMO1xuIDY3MzpcdFx0XHRcdFx0YnJlYWs7XG4gNjc0Olx0XHRcdFx0fVxuIDY3NTpcdFx0XHR9XG4gNjc2Olx0XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIDY3NzpcdFxuIDY3ODpcdFx0XHRpZiAoIWZsMSlcbiA2Nzk6XHRcdFx0XHRmbDEgPSBmbF9sb29rdXAobmV0LCBmcmVxLVx1MDAzZWZscl9sYWJlbCk7XG4gNjgwOlx0XHRcdGlmIChmbDEpIHtcbiA2ODE6XHRyZWNoZWNrOlxuIDY4MjpcdFx0XHRcdGVyciA9IC1FRVhJU1Q7XG4gNjgzOlx0XHRcdFx0aWYgKGZyZXEtXHUwMDNlZmxyX2ZsYWdzXHUwMDI2SVBWNl9GTF9GX0VYQ0wpXG4gNjg0Olx0XHRcdFx0XHRnb3RvIHJlbGVhc2U7XG4gNjg1Olx0XHRcdFx0ZXJyID0gLUVQRVJNO1xuIDY4NjpcdFx0XHRcdGlmIChmbDEtXHUwMDNlc2hhcmUgPT0gSVBWNl9GTF9TX0VYQ0wgfHxcbiA2ODc6XHRcdFx0XHQgICAgZmwxLVx1MDAzZXNoYXJlICE9IGZsLVx1MDAzZXNoYXJlIHx8XG4gNjg4Olx0XHRcdFx0ICAgICgoZmwxLVx1MDAzZXNoYXJlID09IElQVjZfRkxfU19QUk9DRVNTKSBcdTAwMjZcdTAwMjZcbiA2ODk6XHRcdFx0XHQgICAgIChmbDEtXHUwMDNlb3duZXIucGlkICE9IGZsLVx1MDAzZW93bmVyLnBpZCkpIHx8XG4gNjkwOlx0XHRcdFx0ICAgICgoZmwxLVx1MDAzZXNoYXJlID09IElQVjZfRkxfU19VU0VSKSBcdTAwMjZcdTAwMjZcbiA2OTE6XHRcdFx0XHQgICAgICF1aWRfZXEoZmwxLVx1MDAzZW93bmVyLnVpZCwgZmwtXHUwMDNlb3duZXIudWlkKSkpXG4gNjkyOlx0XHRcdFx0XHRnb3RvIHJlbGVhc2U7XG4gNjkzOlx0XG4gNjk0Olx0XHRcdFx0ZXJyID0gLUVOT01FTTtcbiA2OTU6XHRcdFx0XHRpZiAoIXNmbDEpXG4gNjk2Olx0XHRcdFx0XHRnb3RvIHJlbGVhc2U7XG4gNjk3Olx0XHRcdFx0ZXJyID0gLUVOT0JVRlM7XG4gNjk4Olx0XHRcdFx0aWYgKGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoc2spIFx1MDAyNlx1MDAyNlxuIDY5OTpcdFx0XHRcdCAgICAhY2FwYWJsZShDQVBfTkVUX0FETUlOKSlcbiA3MDA6XHRcdFx0XHRcdGdvdG8gcmVsZWFzZTtcbiA3MDE6XHRcdFx0XHRpZiAoZmwtXHUwMDNlbGluZ2VyIFx1MDAzZSBmbDEtXHUwMDNlbGluZ2VyKVxuIDcwMjpcdFx0XHRcdFx0ZmwxLVx1MDAzZWxpbmdlciA9IGZsLVx1MDAzZWxpbmdlcjtcbiA3MDM6XHRcdFx0XHRpZiAoKGxvbmcpKGZsLVx1MDAzZWV4cGlyZXMgLSBmbDEtXHUwMDNlZXhwaXJlcykgXHUwMDNlIDApXG4gNzA0Olx0XHRcdFx0XHRmbDEtXHUwMDNlZXhwaXJlcyA9IGZsLVx1MDAzZWV4cGlyZXM7XG4gNzA1Olx0XHRcdFx0ZmxfbGluayhzaywgc2ZsMSwgZmwxKTtcbiA3MDY6XHRcdFx0XHRmbF9mcmVlKGZsKTtcbiA3MDc6XHRcdFx0XHRyZXR1cm4gMDtcbiA3MDg6XHRcbiA3MDk6XHRyZWxlYXNlOlxuIDcxMDpcdFx0XHRcdGZsX3JlbGVhc2UoZmwxKTtcbiA3MTE6XHRcdFx0XHRnb3RvIGRvbmU7XG4gNzEyOlx0XHRcdH1cbiA3MTM6XHRcdH1cbiA3MTQ6XHRcdGVyciA9IC1FTk9FTlQ7XG4gNzE1Olx0XHRpZiAoIShmcmVxLVx1MDAzZWZscl9mbGFncyBcdTAwMjYgSVBWNl9GTF9GX0NSRUFURSkpXG4gNzE2Olx0XHRcdGdvdG8gZG9uZTtcbiA3MTc6XHRcbiA3MTg6XHRcdGVyciA9IC1FTk9NRU07XG4gNzE5Olx0XHRpZiAoIXNmbDEpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkwNwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVB2NiBGbG93IExhYmVsIE1hbmFnZW1lbnQgQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGlwdjZfZmxvd2xhYmVsX2dldGAuIFRoaXMgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkIHNwZWNpZmljYWxseSB3aGVuIGEgdXNlcnNwYWNlIGFwcGxpY2F0aW9uIHVzZXMgYHNldHNvY2tvcHRgIHdpdGggdGhlIGBJUFY2X0ZMT1dMQUJFTF9NR1JgIG9wdGlvbiBvbiBhbiBJUHY2IHNvY2tldC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIFdoZXJlIGV4YWN0bHkgaXMgYGlwNl9mbG93bGFiZWwuY2AgY29tcGlsZWQ/IEFuZCBtb3JlIGltcG9ydGFudGx5LCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBjb250cm9sIGl0cyBpbmNsdXNpb24gb3IgZXhjbHVzaW9uIGR1cmluZyB0aGUga2VybmVsIGJ1aWxkPyBJIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMgdG8gc2VlIHdoYXQgZmVhdHVyZXMgb3IgbW9kdWxlcyByZWx5IG9uIGl0IGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMgaXQmIzM5O3MgZW5hYmxlZC4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9uIG90aGVyIHBhcnRzIG9mIHRoZSBuZXR3b3JrIHN0YWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwNl9mbG93bGFiZWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvTWFrZWZpbGU9OD1pcHY2LXkgOj1cdGFmX2luZXQ2Lm8gYW55Y2FzdC5vIGlwNl9vdXRwdXQubyBpcDZfaW5wdXQubyBhZGRyY29uZi5vIFxcXG4tLVxubmV0L2lwdjYvTWFrZWZpbGUtMTEtXHRcdHJhdy5vIGljbXAubyBtY2FzdC5vIHJlYXNzZW1ibHkubyB0Y3BfaXB2Ni5vIHBpbmcubyBcXFxubmV0L2lwdjYvTWFrZWZpbGU6MTI6XHRcdGV4dGhkcnMubyBkYXRhZ3JhbS5vIGlwNl9mbG93bGFiZWwubyBpbmV0Nl9jb25uZWN0aW9uX3NvY2subyBcXFxubmV0L2lwdjYvTWFrZWZpbGUtMTMtXHRcdHVkcF9vZmZsb2FkLm8gc2VnNi5vIGZpYjZfbm90aWZpZXIubyBycGwubyBpb2FtNi5vXG4tLVxubmV0L2lwdjYvYWZfaW5ldDYuYz05OTk9c3RhdGljIGludCBfX2luaXQgaW5ldDZfaW5pdCh2b2lkKVxuLS1cbm5ldC9pcHY2L2FmX2luZXQ2LmMtMTA4NS1cdFx0Z290byBuZGlzY19sYXRlX2ZhaWw7XG5uZXQvaXB2Ni9hZl9pbmV0Ni5jOjEwODY6XHRlcnIgPSBpcDZfZmxvd2xhYmVsX2luaXQoKTtcbm5ldC9pcHY2L2FmX2luZXQ2LmMtMTA4Ny1cdGlmIChlcnIpXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jOjEwODg6XHRcdGdvdG8gaXA2X2Zsb3dsYWJlbF9mYWlsO1xubmV0L2lwdjYvYWZfaW5ldDYuYy0xMDg5LVx0ZXJyID0gaXB2Nl9hbnljYXN0X2luaXQoKTtcbi0tXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTExODUtaXB2Nl9hbnljYXN0X2ZhaWw6XG5uZXQvaXB2Ni9hZl9pbmV0Ni5jOjExODY6XHRpcDZfZmxvd2xhYmVsX2NsZWFudXAoKTtcbm5ldC9pcHY2L2FmX2luZXQ2LmM6MTE4NzppcDZfZmxvd2xhYmVsX2ZhaWw6XG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTExODgtXHRuZGlzY19sYXRlX2NsZWFudXAoKTtcbi0tXG5uZXQvaXB2Ni9kYXRhZ3JhbS5jPTcyPWludCBpcDZfZGF0YWdyYW1fZHN0X3VwZGF0ZShzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgZml4X3NrX3NhZGRyKVxubmV0L2lwdjYvZGF0YWdyYW0uYy03My17XG5uZXQvaXB2Ni9kYXRhZ3JhbS5jOjc0Olx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsb3dsYWJlbCA9IE5VTEw7XG5uZXQvaXB2Ni9kYXRhZ3JhbS5jLTc1LVx0c3RydWN0IGluZXRfc29jayAqaW5ldCA9IGluZXRfc2soc2spO1xuLS1cbm5ldC9pcHY2L2ljbXAuYz05MjE9c3RhdGljIGVudW0gc2tiX2Ryb3BfcmVhc29uIGljbXB2Nl9lY2hvX3JlcGx5KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvaWNtcC5jLTk2NC1cdCAgICBGTE9XTEFCRUxfUkVGTEVDVF9JQ01QVjZfRUNIT19SRVBMSUVTKVxubmV0L2lwdjYvaWNtcC5jOjk2NTpcdFx0Zmw2LmZsb3dsYWJlbCA9IGlwNl9mbG93bGFiZWwoaXB2Nl9oZHIoc2tiKSk7XG5uZXQvaXB2Ni9pY21wLmMtOTY2LVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0yLS8qXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MzogKlx0aXA2X2Zsb3dsYWJlbC5jXHRcdElQdjYgZmxvd2xhYmVsIG1hbmFnZXIuXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNC0gKlxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz00Mz1zdGF0aWMgaW50IGZsX3NpemU7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NDQ6c3RhdGljIHN0cnVjdCBpcDZfZmxvd2xhYmVsIF9fcmN1ICpmbF9odFtGTF9IQVNIX01BU0smIzQzOzFdO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTQ1LVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz01OD1FWFBPUlRfU1lNQk9MKGlwdjZfZmxvd2xhYmVsX2V4Y2x1c2l2ZSk7XG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTczLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjc0OnN0YXRpYyBpbmxpbmUgc3RydWN0IGlwNl9mbG93bGFiZWwgKl9fZmxfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCwgX19iZTMyIGxhYmVsKVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTc1LXtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo3NjpcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbDtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03Ny1cbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODQtXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6ODU6c3RhdGljIHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbF9sb29rdXAoc3RydWN0IG5ldCAqbmV0LCBfX2JlMzIgbGFiZWwpXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODYte1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjg3Olx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTg4LVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05Ni1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo5NzpzdGF0aWMgYm9vbCBmbF9zaGFyZWRfZXhjbHVzaXZlKHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbClcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05OC17XG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTEwND1zdGF0aWMgdm9pZCBmbF9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMTA1LXtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoxMDY6XHRzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmwgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IGlwNl9mbG93bGFiZWwsIHJjdSk7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMTA3LVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0xMTQtXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MTE1OnN0YXRpYyB2b2lkIGZsX2ZyZWUoc3RydWN0IGlwNl9mbG93bGFiZWwgKmZsKVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTExNi17XG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTEyNS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoxMjY6c3RhdGljIHZvaWQgZmxfcmVsZWFzZShzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmwpXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMTI3LXtcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9MTQzPXN0YXRpYyB2b2lkIGlwNl9mbF9nYyhzdHJ1Y3QgdGltZXJfbGlzdCAqdW51c2VkKVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0xNTEtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYz0gRkxfSEFTSF9NQVNLOyBpJiM0MzsmIzQzOykge1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjE1MjpcdFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjE1MzpcdFx0c3RydWN0IGlwNl9mbG93bGFiZWwgX19yY3UgKipmbHA7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMTU0LVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz0xODQ9c3RhdGljIHZvaWQgX19uZXRfZXhpdCBpcDZfZmxfcHVyZ2Uoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0xODktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYz0gRkxfSEFTSF9NQVNLOyBpJiM0MzsmIzQzOykge1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjE5MDpcdFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjE5MTpcdFx0c3RydWN0IGlwNl9mbG93bGFiZWwgX19yY3UgKipmbHA7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMTkyLVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0yMDktXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MjEwOnN0YXRpYyBzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmxfaW50ZXJuKHN0cnVjdCBuZXQgKm5ldCxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoyMTE6XHRcdFx0XHQgICAgICAgc3RydWN0IGlwNl9mbG93bGFiZWwgKmZsLCBfX2JlMzIgbGFiZWwpXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMjEyLXtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoyMTM6XHRzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqbGZsO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTIxNC1cbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMjU1LVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjI1NjpzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqX19mbDZfc29ja19sb29rdXAoc3RydWN0IHNvY2sgKnNrLCBfX2JlMzIgbGFiZWwpXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMjU3LXtcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMjYzLVx0Zm9yX2VhY2hfc2tfZmxfcmN1KHNrLCBzZmwpIHtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoyNjQ6XHRcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCA9IHNmbC1cdTAwM2VmbDtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0yNjUtXG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTMwOD1zdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKmZsNl9tZXJnZV9vcHRpb25zKHN0cnVjdCBpcHY2X3R4b3B0aW9ucyAqb3B0X3NwYWNlLFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjMwOTpcdFx0XHRcdFx0IHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0zMTAtXHRcdFx0XHRcdCBzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKmZvcHQpXG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTMzNz1zdGF0aWMgdW5zaWduZWQgbG9uZyBjaGVja19saW5nZXIodW5zaWduZWQgbG9uZyB0dGwpXG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTM0NS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzozNDY6c3RhdGljIGludCBmbDZfcmVuZXcoc3RydWN0IGlwNl9mbG93bGFiZWwgKmZsLCB1bnNpZ25lZCBsb25nIGxpbmdlciwgdW5zaWduZWQgbG9uZyBleHBpcmVzKVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTM0Ny17XG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTM2Ny1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzozNjg6c3RhdGljIHN0cnVjdCBpcDZfZmxvd2xhYmVsICpcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0zNjktZmxfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaW42X2Zsb3dsYWJlbF9yZXEgKmZyZXEsXG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTM3MS17XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MzcyOlx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsID0gTlVMTDtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0zNzMtXHRpbnQgb2xlbjtcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9NTExPXN0YXRpYyBpbmxpbmUgdm9pZCBmbF9saW5rKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGlwdjZfZmxfc29ja2xpc3QgKnNmbCxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo1MTI6XHRcdFx0ICAgc3RydWN0IGlwNl9mbG93bGFiZWwgKmZsKVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTUxMy17XG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTU5OD1zdGF0aWMgaW50IGlwdjZfZmxvd2xhYmVsX3JlbmV3KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGluNl9mbG93bGFiZWxfcmVxICpmcmVxKVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy02MTYtXHQgICAgbnNfY2FwYWJsZShuZXQtXHUwMDNldXNlcl9ucywgQ0FQX05FVF9BRE1JTikpIHtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo2MTc6XHRcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCA9IGZsX2xvb2t1cChuZXQsIGZyZXEtXHUwMDNlZmxyX2xhYmVsKTtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy02MTgtXG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTYyOT1zdGF0aWMgaW50IGlwdjZfZmxvd2xhYmVsX2dldChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpbjZfZmxvd2xhYmVsX3JlcSAqZnJlcSxcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNjMyLVx0c3RydWN0IGlwdjZfZmxfc29ja2xpc3QgKnNmbCwgKnNmbDEgPSBOVUxMO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjYzMzpcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCwgKmZsMSA9IE5VTEw7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNjM0LVx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz03Nzg9c3RydWN0IGlwNmZsX2l0ZXJfc3RhdGUge1xuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03ODUtXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6Nzg2OnN0YXRpYyBzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqaXA2ZmxfZ2V0X2ZpcnN0KHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTc4Ny17XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6Nzg4Olx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsID0gTlVMTDtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03ODktXHRzdHJ1Y3QgaXA2ZmxfaXRlcl9zdGF0ZSAqc3RhdGUgPSBpcDZmbF9zZXFfcHJpdmF0ZShzZXEpO1xuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy04MDItXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6ODAzOnN0YXRpYyBzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqaXA2ZmxfZ2V0X25leHQoc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbClcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy04MDQte1xuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy04MjYtXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6ODI3OnN0YXRpYyBzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqaXA2ZmxfZ2V0X2lkeChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgbG9mZl90IHBvcylcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy04Mjgte1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjgyOTpcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCA9IGlwNmZsX2dldF9maXJzdChzZXEpO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTgzMC1cdGlmIChmbClcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9ODQ3PXN0YXRpYyB2b2lkICppcDZmbF9zZXFfbmV4dChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdiwgbG9mZl90ICpwb3MpXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODQ4LXtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo4NDk6XHRzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmw7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODUwLVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz04NjU9c3RhdGljIGludCBpcDZmbF9zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODcwLVx0fSBlbHNlIHtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo4NzE6XHRcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCA9IHY7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODcyLVx0XHRzZXFfcHJpbnRmKHNlcSxcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9ODkwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2VxX29wZXJhdGlvbnMgaXA2Zmxfc2VxX29wcyA9IHtcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODk2LVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjg5NzpzdGF0aWMgaW50IF9fbmV0X2luaXQgaXA2X2Zsb3dsYWJlbF9wcm9jX2luaXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTg5OC17XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6ODk5Olx0aWYgKCFwcm9jX2NyZWF0ZV9uZXQoXCYjMzQ7aXA2X2Zsb3dsYWJlbFwmIzM0OywgMDQ0NCwgbmV0LVx1MDAzZXByb2NfbmV0LFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkwMC1cdFx0XHRcdTAwMjZpcDZmbF9zZXFfb3BzLCBzaXplb2Yoc3RydWN0IGlwNmZsX2l0ZXJfc3RhdGUpKSlcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTA0LVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkwNTpzdGF0aWMgdm9pZCBfX25ldF9leGl0IGlwNl9mbG93bGFiZWxfcHJvY19maW5pKHN0cnVjdCBuZXQgKm5ldClcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05MDYte1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkwNzpcdHJlbW92ZV9wcm9jX2VudHJ5KFwmIzM0O2lwNl9mbG93bGFiZWxcJiMzNDssIG5ldC1cdTAwM2Vwcm9jX25ldCk7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTA4LX1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05MDktI2Vsc2Vcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo5MTA6c3RhdGljIGlubGluZSBpbnQgaXA2X2Zsb3dsYWJlbF9wcm9jX2luaXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkxMS17XG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkxMy19XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTE0OnN0YXRpYyBpbmxpbmUgdm9pZCBpcDZfZmxvd2xhYmVsX3Byb2NfZmluaShzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTE1LXtcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTE4LVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkxOTpzdGF0aWMgdm9pZCBfX25ldF9leGl0IGlwNl9mbG93bGFiZWxfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkyMC17XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTIxLVx0aXA2X2ZsX3B1cmdlKG5ldCk7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTIyOlx0aXA2X2Zsb3dsYWJlbF9wcm9jX2ZpbmkobmV0KTtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05MjMtfVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkyNC1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo5MjU6c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBpcDZfZmxvd2xhYmVsX25ldF9vcHMgPSB7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTI2Olx0LmluaXQgPSBpcDZfZmxvd2xhYmVsX3Byb2NfaW5pdCxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo5Mjc6XHQuZXhpdCA9IGlwNl9mbG93bGFiZWxfbmV0X2V4aXQsXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTI4LX07XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTI5LVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkzMDppbnQgaXA2X2Zsb3dsYWJlbF9pbml0KHZvaWQpXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTMxLXtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo5MzI6XHRyZXR1cm4gcmVnaXN0ZXJfcGVybmV0X3N1YnN5cyhcdTAwMjZpcDZfZmxvd2xhYmVsX25ldF9vcHMpO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkzMy19XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTM0LVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkzNTp2b2lkIGlwNl9mbG93bGFiZWxfY2xlYW51cCh2b2lkKVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkzNi17XG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkzOC1cdHRpbWVyX2RlbGV0ZShcdTAwMjZpcDZfZmxfZ2NfdGltZXIpO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkzOTpcdHVucmVnaXN0ZXJfcGVybmV0X3N1YnN5cyhcdTAwMjZpcDZfZmxvd2xhYmVsX25ldF9vcHMpO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTk0MC19XG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jPTYzMz1zdGF0aWMgaW50IHByZXBhcmVfaXA2Z3JlX3htaXRfaXB2NihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy02NjctXHRpZiAodC1cdTAwM2VwYXJtcy5mbGFncyBcdTAwMjYgSVA2X1ROTF9GX1VTRV9PUklHX0ZMT1dMQUJFTClcbm5ldC9pcHY2L2lwNl9ncmUuYzo2Njg6XHRcdGZsNi1cdTAwM2VmbG93bGFiZWwgfD0gaXA2X2Zsb3dsYWJlbChpcHY2aCk7XG5uZXQvaXB2Ni9pcDZfZ3JlLmMtNjY5LVxuLS1cbm5ldC9pcHY2L2lwNl90dW5uZWwuYz0xMjk3PWlweGlwNl90bmxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9pcHY2L2lwNl90dW5uZWwuYy0xMzg4LVx0XHRcdGlmICh0LVx1MDAzZXBhcm1zLmZsYWdzIFx1MDAyNiBJUDZfVE5MX0ZfVVNFX09SSUdfRkxPV0xBQkVMKVxubmV0L2lwdjYvaXA2X3R1bm5lbC5jOjEzODk6XHRcdFx0XHRmbDYuZmxvd2xhYmVsIHw9IGlwNl9mbG93bGFiZWwoaXB2NmgpO1xubmV0L2lwdjYvaXA2X3R1bm5lbC5jLTEzOTAtXHRcdFx0YnJlYWs7XG4tLVxubmV0L2lwdjYvcmF3LmM9NzQyPXN0YXRpYyBpbnQgcmF3djZfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcbi0tXG5uZXQvaXB2Ni9yYXcuYy03NTEtXHRzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKm9wdCA9IE5VTEw7XG5uZXQvaXB2Ni9yYXcuYzo3NTI6XHRzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmxvd2xhYmVsID0gTlVMTDtcbm5ldC9pcHY2L3Jhdy5jLTc1My1cdHN0cnVjdCBkc3RfZW50cnkgKmRzdCA9IE5VTEw7XG4tLVxubmV0L2lwdjYvcm91dGUuYz0yMzY3PXN0YXRpYyB2b2lkIGlwNl9tdWx0aXBhdGhfbDNfa2V5cyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY2L3JvdXRlLmMtMjQwNi1cdFx0a2V5cy1cdTAwM2VhZGRycy52NmFkZHJzLmRzdCA9IGtleV9pcGgtXHUwMDNlZGFkZHI7XG5uZXQvaXB2Ni9yb3V0ZS5jOjI0MDc6XHRcdGtleXMtXHUwMDNldGFncy5mbG93X2xhYmVsID0gaXA2X2Zsb3dsYWJlbChrZXlfaXBoKTtcbm5ldC9pcHY2L3JvdXRlLmMtMjQwOC1cdFx0a2V5cy1cdTAwM2ViYXNpYy5pcF9wcm90byA9IGtleV9pcGgtXHUwMDNlbmV4dGhkcjtcbi0tXG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM9MTI0PXN0YXRpYyBfX2JlMzIgc2VnNl9tYWtlX2Zsb3dsYWJlbChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTEzNS1cdH0gZWxzZSBpZiAoIWRvX2Zsb3dsYWJlbCBcdTAwMjZcdTAwMjYgc2tiLVx1MDAzZXByb3RvY29sID09IGh0b25zKEVUSF9QX0lQVjYpKSB7XG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmM6MTM2Olx0XHRmbG93bGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlubmVyX2hkcik7XG5uZXQvaXB2Ni9zZWc2X2lwdHVubmVsLmMtMTM3LVx0fVxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmM9MTMzPXN0YXRpYyBpbnQgdGNwX3Y2X2Nvbm5lY3Qoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqdWFkZHIsXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0xNjItXHRcdGlmIChmbDYtXHUwMDNlZmxvd2xhYmVsIFx1MDAyNiBJUFY2X0ZMT1dMQUJFTF9NQVNLKSB7XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjE2MzpcdFx0XHRzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmxvd2xhYmVsO1xubmV0L2lwdjYvdGNwX2lwdjYuYy0xNjQtXHRcdFx0Zmxvd2xhYmVsID0gZmw2X3NvY2tfbG9va3VwKHNrLCBmbDYtXHUwMDNlZmxvd2xhYmVsKTtcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTU1MD1zdGF0aWMgaW50IHRjcF92Nl9zZW5kX3N5bmFjayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBkc3RfZW50cnkgKmRzdCxcbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTU3OC1cdFx0aWYgKGluZXQ2X3Rlc3RfYml0KFJFUEZMT1csIHNrKSBcdTAwMjZcdTAwMjYgaXJlcS1cdTAwM2Vwa3RvcHRzKVxubmV0L2lwdjYvdGNwX2lwdjYuYzo1Nzk6XHRcdFx0Zmw2LVx1MDAzZWZsb3dsYWJlbCA9IGlwNl9mbG93bGFiZWwoaXB2Nl9oZHIoaXJlcS1cdTAwM2Vwa3RvcHRzKSk7XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTU4MC1cbi0tXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTEwMDU9c3RhdGljIHZvaWQgdGNwX3Y2X3NlbmRfcmVzZXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTExMS1cdFx0XHRpZiAoaW5ldDZfdGVzdF9iaXQoUkVQRkxPVywgc2spKVxubmV0L2lwdjYvdGNwX2lwdjYuYzoxMTEyOlx0XHRcdFx0bGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlwdjZoKTtcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTExMy1cdFx0XHRwcmlvcml0eSA9IFJFQURfT05DRShzay1cdTAwM2Vza19wcmlvcml0eSk7XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0xMTIzLVx0XHQgICAgRkxPV0xBQkVMX1JFRkxFQ1RfVENQX1JFU0VUKVxubmV0L2lwdjYvdGNwX2lwdjYuYzoxMTI0Olx0XHRcdGxhYmVsID0gaXA2X2Zsb3dsYWJlbChpcHY2aCk7XG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTExMjUtXHR9XG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMzgyPXN0YXRpYyBzdHJ1Y3Qgc29jayAqdGNwX3Y2X3N5bl9yZWN2X3NvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTQ2MC1cdGlmIChpbmV0Nl90ZXN0X2JpdChSRVBGTE9XLCBzaykpXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjE0NjE6XHRcdG5ld25wLVx1MDAzZWZsb3dfbGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlwdjZfaGRyKHNrYikpO1xubmV0L2lwdjYvdGNwX2lwdjYuYy0xNDYyLVxuLS1cbm5ldC9pcHY2L3RjcF9pcHY2LmM9MTU2Nz1pbnQgdGNwX3Y2X2RvX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvdGNwX2lwdjYuYy0xNjkyLVx0XHRpZiAoaW5ldDZfdGVzdF9iaXQoUkVQRkxPVywgc2spKVxubmV0L2lwdjYvdGNwX2lwdjYuYzoxNjkzOlx0XHRcdG5wLVx1MDAzZWZsb3dfbGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlwdjZfaGRyKG9wdF9za2IpKTtcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTY5NC1cdFx0aWYgKGlwdjZfb3B0X2FjY2VwdGVkKHNrLCBvcHRfc2tiLCBcdTAwMjZUQ1BfU0tCX0NCKG9wdF9za2IpLVx1MDAzZWhlYWRlci5oNikpIHtcbi0tXG5uZXQvaXB2Ni91ZHAuYz0xNDcyPWludCB1ZHB2Nl9zZW5kbXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxuLS1cbm5ldC9pcHY2L3VkcC5jLTE0NzctXHRzdHJ1Y3QgaW42X2FkZHIgKmRhZGRyLCAqZmluYWxfcCwgZmluYWw7XG5uZXQvaXB2Ni91ZHAuYzoxNDc4Olx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsb3dsYWJlbCA9IE5VTEw7XG5uZXQvaXB2Ni91ZHAuYy0xNDc5LVx0c3RydWN0IGluZXRfc29jayAqaW5ldCA9IGluZXRfc2soc2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzE4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyB0aGUgSVB2NiBGbG93IExhYmVsIEltcGxlbWVudGF0aW9uKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBgaXA2X2Zsb3dsYWJlbC5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hlcmUgZG9lcyB0aGlzIGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZT8mIzM0OyBJIGtub3cgdGhhdCB0aGlzIGZpbGUgaXMgZGVmaW5pdGVseSB0aWVkIHRvIGBpcHY2LXlgLCB3aGljaCwgaW4gdHVybiwgaXMgY29tcGlsZWQgb25seSB3aGVuIGBDT05GSUdfSVBWNmAgaXMgc2V0LiBHaXZlbiB0aGF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29uZmlndXJhdGlvbi4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBgbmV0L2lwdjYvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBJUHY2IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbmZsdWVuY2UgdGhlIGluY2x1c2lvbiBvZiB0aGlzIHNwZWNpZmljIGZsb3cgbGFiZWwgY29kZS4gS25vd2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBhbmQgb3ZlcmFsbCByb2xlIHRoaXMgbW9kdWxlIHBsYXlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUFY2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWctNS1cbm5ldC9pcHY2L0tjb25maWc6NjptZW51Y29uZmlnIElQVjZcbm5ldC9pcHY2L0tjb25maWctNy1cdGJvb2wgXCYjMzQ7VGhlIElQdjYgcHJvdG9jb2xcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTE5PWlmIElQVjZcbm5ldC9pcHY2L0tjb25maWctMjAtXG5uZXQvaXB2Ni9LY29uZmlnOjIxOmNvbmZpZyBJUFY2X1JPVVRFUl9QUkVGXG5uZXQvaXB2Ni9LY29uZmlnLTIyLVx0Ym9vbCBcJiMzNDtJUHY2OiBSb3V0ZXIgUHJlZmVyZW5jZSAoUkZDIDQxOTEpIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMwLVxubmV0L2lwdjYvS2NvbmZpZzozMTpjb25maWcgSVBWNl9ST1VURV9JTkZPXG5uZXQvaXB2Ni9LY29uZmlnLTMyLVx0Ym9vbCBcJiMzNDtJUHY2OiBSb3V0ZSBJbmZvcm1hdGlvbiAoUkZDIDQxOTEpIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTM4LVxubmV0L2lwdjYvS2NvbmZpZzozOTpjb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxubmV0L2lwdjYvS2NvbmZpZy00MC1cdGJvb2wgXCYjMzQ7SVB2NjogRW5hYmxlIFJGQyA0NDI5IE9wdGltaXN0aWMgREFEXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0xMDI9Y29uZmlnIElORVQ2X0lQQ09NUFxuLS1cbm5ldC9pcHY2L0tjb25maWctMTExLVxubmV0L2lwdjYvS2NvbmZpZzoxMTI6Y29uZmlnIElQVjZfTUlQNlxubmV0L2lwdjYvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBNb2JpbGl0eVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTE5LVxubmV0L2lwdjYvS2NvbmZpZzoxMjA6Y29uZmlnIElQVjZfSUxBXG5uZXQvaXB2Ni9LY29uZmlnLTEyMS1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IElkZW50aWZpZXIgTG9jYXRvciBBZGRyZXNzaW5nIChJTEEpXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0xNDY9Y29uZmlnIElORVQ2X1RVTk5FTFxuLS1cbm5ldC9pcHY2L0tjb25maWctMTQ5LVxubmV0L2lwdjYvS2NvbmZpZzoxNTA6Y29uZmlnIElQVjZfVlRJXG5uZXQvaXB2Ni9LY29uZmlnLTE1MS1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgKHNlY3VyZSkgSVB2NjogdHVubmVsaW5nXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xNjEtXG5uZXQvaXB2Ni9LY29uZmlnOjE2Mjpjb25maWcgSVBWNl9TSVRcbm5ldC9pcHY2L0tjb25maWctMTYzLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogSVB2Ni1pbi1JUHY0IHR1bm5lbCAoU0lUIGRyaXZlcilcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE3Ni1cbm5ldC9pcHY2L0tjb25maWc6MTc3OmNvbmZpZyBJUFY2X1NJVF82UkRcbm5ldC9pcHY2L0tjb25maWctMTc4LVx0Ym9vbCBcJiMzNDtJUHY2OiBJUHY2IFJhcGlkIERlcGxveW1lbnQgKDZSRClcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE5NS1cbm5ldC9pcHY2L0tjb25maWc6MTk2OmNvbmZpZyBJUFY2X05ESVNDX05PREVUWVBFXG5uZXQvaXB2Ni9LY29uZmlnLTE5Ny1cdGJvb2xcbm5ldC9pcHY2L0tjb25maWctMTk4LVxubmV0L2lwdjYvS2NvbmZpZzoxOTk6Y29uZmlnIElQVjZfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IElQLWluLUlQdjYgdHVubmVsIChSRkMyNDczKVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjA5LVxubmV0L2lwdjYvS2NvbmZpZzoyMTA6Y29uZmlnIElQVjZfR1JFXG5uZXQvaXB2Ni9LY29uZmlnLTIxMS1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEdSRSB0dW5uZWxcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTIyNy1cbm5ldC9pcHY2L0tjb25maWc6MjI4OmNvbmZpZyBJUFY2X0ZPVVxubmV0L2lwdjYvS2NvbmZpZy0yMjktXHR0cmlzdGF0ZVxuLS1cbm5ldC9pcHY2L0tjb25maWctMjMxLVxubmV0L2lwdjYvS2NvbmZpZzoyMzI6Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0yMzMtXHR0cmlzdGF0ZVxuLS1cbm5ldC9pcHY2L0tjb25maWctMjM2LVxubmV0L2lwdjYvS2NvbmZpZzoyMzc6Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2Ni9LY29uZmlnLTIzOC1cdGJvb2wgXCYjMzQ7SVB2NjogTXVsdGlwbGUgUm91dGluZyBUYWJsZXNcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI0Mi1cbm5ldC9pcHY2L0tjb25maWc6MjQzOmNvbmZpZyBJUFY2X1NVQlRSRUVTXG5uZXQvaXB2Ni9LY29uZmlnLTI0NC1cdGJvb2wgXCYjMzQ7SVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjU2LVxubmV0L2lwdjYvS2NvbmZpZzoyNTc6Y29uZmlnIElQVjZfTVJPVVRFXG5uZXQvaXB2Ni9LY29uZmlnLTI1OC1cdGJvb2wgXCYjMzQ7SVB2NjogbXVsdGljYXN0IHJvdXRpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI2NC1cbm5ldC9pcHY2L0tjb25maWc6MjY1OmNvbmZpZyBJUFY2X01ST1VURV9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L0tjb25maWctMjY2LVx0Ym9vbCBcJiMzNDtJUHY2OiBtdWx0aWNhc3QgcG9saWN5IHJvdXRpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI3OC1cbm5ldC9pcHY2L0tjb25maWc6Mjc5OmNvbmZpZyBJUFY2X1BJTVNNX1YyXG5uZXQvaXB2Ni9LY29uZmlnLTI4MC1cdGJvb2wgXCYjMzQ7SVB2NjogUElNLVNNIHZlcnNpb24gMiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yODUtXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTI4Ny1cdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI5OS1cbm5ldC9pcHY2L0tjb25maWc6MzAwOmNvbmZpZyBJUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvS2NvbmZpZy0zMDEtXHRib29sIFwmIzM0O0lQdjY6IFNlZ21lbnQgUm91dGluZyBITUFDIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMxMS1cbm5ldC9pcHY2L0tjb25maWc6MzEyOmNvbmZpZyBJUFY2X1NFRzZfQlBGXG5uZXQvaXB2Ni9LY29uZmlnLTMxMy1cdGRlZl9ib29sIHlcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMxNi1cbm5ldC9pcHY2L0tjb25maWc6MzE3OmNvbmZpZyBJUFY2X1JQTF9MV1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0zMTgtXHRib29sIFwmIzM0O0lQdjY6IFJQTCBTb3VyY2UgUm91dGluZyBIZWFkZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzI3LVxubmV0L2lwdjYvS2NvbmZpZzozMjg6Y29uZmlnIElQVjZfSU9BTTZfTFdUVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMzI5LVx0Ym9vbCBcJiMzNDtJUHY2OiBJT0FNIFByZS1hbGxvY2F0ZWQgVHJhY2UgaW5zZXJ0aW9uIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDY6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMwOTQKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGNvZGUgZXhwbG9yYXRpb25zOgoKKipEaXZpbmcgaW50byBJUHY2IEZsb3cgTGFiZWwgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdXNhZ2UgcGF0dGVybnMgb2YgYSBmZXcga2V5IElQdjYgZmxvdyBsYWJlbCBmdW5jdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29yayBzdGFjay4gSSYjMzk7bSBmb2N1c2luZyBvbiBgaXB2Nl9mbG93bGFiZWxfZ2V0YCwgYGZsX3NvY2tfYXRfbGVhc2VfbGltaXRgLCBhbmQgYGlwdjZfZmxvd2xhYmVsX29wdGAgc3BlY2lmaWNhbGx5LCBhbGwgcmVzaWRpbmcgaW4gYG5ldC9pcHY2L2lwNl9mbG93bGFiZWwuY2AuIFdoYXQgSSYjMzk7bSBhZnRlciBpcyBhIGJldHRlciBncmFzcCBvZiAqaG93KiB0aGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCwgKndoZW4qIHRoZXkgYXJlIHVzZWQsIGFuZCBpbiB3aGF0ICpjb250ZXh0KiB3aXRoaW4gdGhlIGJyb2FkZXIgSVB2NiBwYWNrZXQgcHJvY2Vzc2luZyB3b3JrZmxvdy4gQXJlIHRoZXkgcHJpbWFyaWx5IGludm9sdmVkIGluIHNvY2tldCBjcmVhdGlvbiwgcGFja2V0IHJvdXRpbmcsIGNvbm5lY3Rpb24gc2V0dXAsIG9yIHBlcmhhcHMgZXZlbiBlcnJvciBoYW5kbGluZyByZWxhdGVkIHRvIGZsb3cgbGFiZWwgZXhoYXVzdGlvbj8gSSBleHBlY3QgSSYjMzk7bGwgcHJvYmFibHkgYWxzbyBiZSBsb29raW5nIGF0IHRoZSBkYXRhIHN0cnVjdHVyZXMgdGhleSBvcGVyYXRlIG9uIGFuZCBhbnkgYXNzb2NpYXRlZCBsb2NraW5nL3N5bmNocm9uaXphdGlvbiBpbnZvbHZlZC4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB3aWxsIGludm9sdmUgc29tZSBjb2RlIHNwZWx1bmtpbmcgaW4gdGhpcyBmaWxlIGFuZCBwcm9iYWJseSBvdGhlcnMgaW4gdGhlIGBuZXQvaXB2NmAgZGlyZWN0b3J5IHRvIHByb3ZpZGUgYSBtb3JlIGhvbGlzdGljIHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBrZXkgYXJlYS4gSSYjMzk7bSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBzZWVpbmcgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoIHRoZSBmbG93IGxhYmVsIG9wdGlvbiBhbmQgYW55IGxpbWl0cyBpbXBvc2VkIG9uIGZsb3cgbGFiZWwgdXNlIG9uIGEgcGVyLXNvY2tldCBvciBzeXN0ZW0gYmFzaXMuIFRoaXMgaXMgbXkgc3RhcnRpbmcgcG9pbnQgZm9yIGEgZGVlcGVyIGRpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwdjZfZmxvd2xhYmVsXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9NTU9c3RhdGljIERFRklORV9TUElOTE9DSyhpcDZfc2tfZmxfbG9jayk7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNTYtXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NTc6REVGSU5FX1NUQVRJQ19LRVlfREVGRVJSRURfRkFMU0UoaXB2Nl9mbG93bGFiZWxfZXhjbHVzaXZlLCBIWik7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NTg6RVhQT1JUX1NZTUJPTChpcHY2X2Zsb3dsYWJlbF9leGNsdXNpdmUpO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTU5LVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz0xMTU9c3RhdGljIHZvaWQgZmxfZnJlZShzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmwpXG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTEyMC1cdGlmIChmbF9zaGFyZWRfZXhjbHVzaXZlKGZsKSB8fCBmbC1cdTAwM2VvcHQpXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MTIxOlx0XHRzdGF0aWNfYnJhbmNoX3Nsb3dfZGVjX2RlZmVycmVkKFx1MDAyNmlwdjZfZmxvd2xhYmVsX2V4Y2x1c2l2ZSk7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMTIyLVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz0yMTA9c3RhdGljIHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbF9pbnRlcm4oc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0yMzMtXHRcdCAqIE9UT0ggbm8gbmVlZCB0byBzZWFyY2ggdGhlIGFjdGl2ZSBzb2NrZXQgZmlyc3QsIGxpa2UgaXQgaXNcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoyMzQ6XHRcdCAqIGRvbmUgaW4gaXB2Nl9mbG93bGFiZWxfb3B0IC0gc29jayBpcyBsb2NrZWQsIHNvIG5ldyBlbnRyeVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTIzNS1cdFx0ICogd2l0aCB0aGUgc2FtZSBsYWJlbCBjYW4gb25seSBhcHBlYXIgb24gYW5vdGhlciBzb2NrXG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTM2OT1mbF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpbjZfZmxvd2xhYmVsX3JlcSAqZnJlcSxcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNDUwLVx0XHRXUklURV9PTkNFKHNvY2tfbmV0KHNrKS1cdTAwM2VpcHY2LmZsb3dsYWJlbF9oYXNfZXhjbCwgMSk7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NDUxOlx0XHRzdGF0aWNfYnJhbmNoX2RlZmVycmVkX2luYyhcdTAwMjZpcHY2X2Zsb3dsYWJlbF9leGNsdXNpdmUpO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTQ1Mi1cdH1cbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9NTExPXN0YXRpYyBpbmxpbmUgdm9pZCBmbF9saW5rKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGlwdjZfZmxfc29ja2xpc3QgKnNmbCxcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNTIyLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjUyMzppbnQgaXB2Nl9mbG93bGFiZWxfb3B0X2dldChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpbjZfZmxvd2xhYmVsX3JlcSAqZnJlcSxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy01MjQtXHRcdFx0ICAgaW50IGZsYWdzKVxuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy01NjItXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NTYzOnN0YXRpYyBpbnQgaXB2Nl9mbG93bGFiZWxfcHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGluNl9mbG93bGFiZWxfcmVxICpmcmVxKVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTU2NC17XG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTU5Ny1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo1OTg6c3RhdGljIGludCBpcHY2X2Zsb3dsYWJlbF9yZW5ldyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpbjZfZmxvd2xhYmVsX3JlcSAqZnJlcSlcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy01OTkte1xuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy02MjgtXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NjI5OnN0YXRpYyBpbnQgaXB2Nl9mbG93bGFiZWxfZ2V0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGluNl9mbG93bGFiZWxfcmVxICpmcmVxLFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTYzMC1cdFx0c29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbilcbi0tXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNzU0LVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjc1NTppbnQgaXB2Nl9mbG93bGFiZWxfb3B0KHN0cnVjdCBzb2NrICpzaywgc29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbilcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03NTYte1xuLS1cbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03NjUtXHRjYXNlIElQVjZfRkxfQV9QVVQ6XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NzY2Olx0XHRyZXR1cm4gaXB2Nl9mbG93bGFiZWxfcHV0KHNrLCBcdTAwMjZmcmVxKTtcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03NjctXHRjYXNlIElQVjZfRkxfQV9SRU5FVzpcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo3Njg6XHRcdHJldHVybiBpcHY2X2Zsb3dsYWJlbF9yZW5ldyhzaywgXHUwMDI2ZnJlcSk7XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNzY5LVx0Y2FzZSBJUFY2X0ZMX0FfR0VUOlxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjc3MDpcdFx0cmV0dXJuIGlwdjZfZmxvd2xhYmVsX2dldChzaywgXHUwMDI2ZnJlcSwgb3B0dmFsLCBvcHRsZW4pO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTc3MS1cdGRlZmF1bHQ6XG4tLVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTkzNT12b2lkIGlwNl9mbG93bGFiZWxfY2xlYW51cCh2b2lkKVxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkzNi17XG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTM3Olx0c3RhdGljX2tleV9kZWZlcnJlZF9mbHVzaChcdTAwMjZpcHY2X2Zsb3dsYWJlbF9leGNsdXNpdmUpO1xubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkzOC1cdHRpbWVyX2RlbGV0ZShcdTAwMjZpcDZfZmxfZ2NfdGltZXIpO1xuLS1cbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYz0zNzY9aW50IGRvX2lwdjZfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4tLVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTkyNy1cdGNhc2UgSVBWNl9GTE9XTEFCRUxfTUdSOlxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjkyODpcdFx0cmV0diA9IGlwdjZfZmxvd2xhYmVsX29wdChzaywgb3B0dmFsLCBvcHRsZW4pO1xubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTkyOS1cdFx0YnJlYWs7XG4tLVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jPTEwNzg9aW50IGRvX2lwdjZfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4tLVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTEzNzEtXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmM6MTM3MjpcdFx0dmFsID0gaXB2Nl9mbG93bGFiZWxfb3B0X2dldChzaywgXHUwMDI2ZnJlcSwgZmxhZ3MpO1xubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTEzNzMtXHRcdGlmICh2YWwgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MDg3CgkJCQkJCQlvdXRwdXQ6IDE0OQoJCQkJCQkJdGhvdWdodHM6IDM4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVGhpcyBQYXRjaCBmb3IgUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7dmUgZ290IGEgcGF0Y2ggaW4gYG5ldC9pcHY2L2lwNl9mbG93bGFiZWwuY2AuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIG5ldyBmdW5jdGlvbiwgYGZsX3NvY2tfYXRfbGVhc2VfbGltaXRgLCBhbmQgdGhlbiBjYWxsaW5nIGl0IHdpdGhpbiBgaXB2Nl9mbG93bGFiZWxfZ2V0YCBkdXJpbmcgdGhlIGZsb3dsYWJlbCBsZWFzaW5nL3NoYXJpbmcgcHJvY2Vzcy4gU3BlY2lmaWNhbGx5LCB0aGlzIGNoZWNrIGlzIHB1dCBpbiBwbGFjZSB0byBlbmZvcmNlIGBGTF9NQVhfUEVSX1NPQ0tgIGZvciB1bnByaXZpbGVnZWQgc29ja2V0cy4KClRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIGFsd2F5cywgJiMzNDtJcyB0aGlzIHJlYWNoYWJsZSBjb2RlPyYjMzQ7IEFic29sdXRlbHksIGl0IGlzISBJdCYjMzk7cyBhY2Nlc3NpYmxlIHZpYSBgc2V0c29ja29wdGAgd2l0aCBgU09MX0lQVjZgLCBgSVBWNl9GTE9XTEFCRUxfTUdSYCwgYW5kIHRoZSBhY3Rpb24gYElQVjZfRkxfQV9HRVRgLiBFeGNlbGxlbnQuIFRoYXQmIzM5O3MgYSBkaXJlY3QgdXNlci1zcGFjZSBpbnRlcmZhY2UuCgpUaGlzIHBhdGNoIHRvdWNoZXMgdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjaywgc3BlY2lmaWNhbGx5IElQdjYsIGFuZCBpdCYjMzk7cyBhcmNoaXRlY3R1cmUgYWdub3N0aWMgaW4gaXRzIGFwcGxpY2F0aW9uIGFzIGl0IHVzZXMgc3RhbmRhcmQgbmV0d29yayBwcm90b2NvbHMuIFRoZSBrZXkgc3ltYm9scyB0byBmb2N1cyBvbiBhcmUgYGlwdjZfZmxvd2xhYmVsX29wdGAsIGBpcHY2X2Zsb3dsYWJlbF9nZXRgLCBhbmQsIG9mIGNvdXJzZSwgYGZsX3NvY2tfYXRfbGVhc2VfbGltaXRgLgoKRnJvbSBhIGNvbmZpZ3VyYXRpb24gcGVyc3BlY3RpdmUsIHRoaXMgcmVxdWlyZXMgYENPTkZJR19JUFY2YCwgd2hpY2ggaXMgYSBwcmV0dHkgc3RhbmRhcmQgb3B0aW9uLiBObyBzdXJwcmlzZXMgdGhlcmUuIERvdWJsZS1jaGVja2luZywgYW5kIHllcywgYElQVjZgIGlzIGEgc3RhbmRhcmQgbWVudWNvbmZpZyBpdGVtLgoKTm93LCBsZXQmIzM5O3MgYXBwbHkgdGhlIGZ1enppbmcgcnVsZXM6IEZvY3VzaW5nIG9uIG5vbi11YmlxdWl0b3VzIGtlcm5lbCBmdW5jdGlvbnM/IFRoZXNlIHRocmVlIGFyZSAqZXh0cmVtZWx5KiBzcGVjaWZpYyB0byBmbG93bGFiZWwgbWFuYWdlbWVudCwgc28gdGhleSBhcmUgYSBnb29kIGZpdC4KCkZpbmFsbHksIGRvZXMgdGhpcyBwYXRjaCBtZWV0IHRoZSBjcml0ZXJpYSBmb3IgYmVpbmcgJiMzNDtXb3J0aEZ1enppbmcmIzM0Oz8gV2VsbCwgaXQgaGl0cyBhbGwgdGhlIGNoZWNrYm94ZXM6IGl0JiMzOTtzIGluIGEgY29yZSBzdWJzeXN0ZW0gKG5ldHdvcmtpbmcsIElQdjYpLCBpdCBpbnRyb2R1Y2VzIGxvZ2ljIG1vZGlmaWNhdGlvbnMgKGJvdW5kcyBjaGVja2luZyBhbmQgcmVzb3VyY2UgbGltaXRpbmcpLCAqYW5kKiBpdCYjMzk7cyByZWFjaGFibGUgdmlhIGEgdXNlci1zcGFjZSBzeXN0ZW0gY2FsbCAoYHNldHNvY2tvcHRgKS4gVGhpcyBpcyBhIGNsZWFyIGNhc2UgZm9yIGBXb3J0aEZ1enppbmcgPSB0cnVlYC4KCkFscmlnaHQsIHRpbWUgdG8gZm9ybXVsYXRlIHRoZSByZWFzb25pbmcgYW5kIHNldCB0aGUgcmVzdWx0cyBhY2NvcmRpbmdseS4gVGhpcyBpcyBhIHNvbGlkIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDY6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcHY2X2Zsb3dsYWJlbF9vcHQmIzM0OywKICAgICYjMzQ7aXB2Nl9mbG93bGFiZWxfZ2V0JiMzNDssCiAgICAmIzM0O2ZsX3NvY2tfYXRfbGVhc2VfbGltaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHBlci1zb2NrZXQgbGltaXQgY2hlY2sgKGZsX3NvY2tfYXRfbGVhc2VfbGltaXQpIHRvIHByZXZlbnQgdW5wcml2aWxlZ2VkIHVzZXJzIGZyb20gYWNxdWlyaW5nIGV4Y2Vzc2l2ZSBmbG93bGFiZWxzIHZpYSBpcHY2X2Zsb3dsYWJlbF9nZXQoKS4gVGhpcyBtb2RpZmllcyBjb3JlIElQdjYgbmV0d29ya2luZyBsb2dpYyBkaXJlY3RseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNldHNvY2tvcHQoU09MX0lQVjYsIElQVjZfRkxPV0xBQkVMX01HUiwgLi4uKSB3aXRoIElQVjZfRkxfQV9HRVQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcHY2X2Zsb3dsYWJlbF9vcHQmIzM0OywKICAgICYjMzQ7aXB2Nl9mbG93bGFiZWxfZ2V0JiMzNDssCiAgICAmIzM0O2ZsX3NvY2tfYXRfbGVhc2VfbGltaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHBlci1zb2NrZXQgbGltaXQgY2hlY2sgKGZsX3NvY2tfYXRfbGVhc2VfbGltaXQpIHRvIHByZXZlbnQgdW5wcml2aWxlZ2VkIHVzZXJzIGZyb20gYWNxdWlyaW5nIGV4Y2Vzc2l2ZSBmbG93bGFiZWxzIHZpYSBpcHY2X2Zsb3dsYWJlbF9nZXQoKS4gVGhpcyBtb2RpZmllcyBjb3JlIElQdjYgbmV0d29ya2luZyBsb2dpYyBkaXJlY3RseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNldHNvY2tvcHQoU09MX0lQVjYsIElQVjZfRkxPV0xBQkVMX01HUiwgLi4uKSB3aXRoIElQVjZfRkxfQV9HRVQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDY6MDg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KClgIGFuZCBhZGRzIGFuIGBGTF9NQVhfUEVSX1NPQ0tgIGNhcGFjaXR5IGNoZWNrIHdoZW4gYXR0YWNoaW5nL2xlYXNpbmcgZXhpc3RpbmcgSVB2NiBmbG93IGxhYmVscyBpbiBgaXB2Nl9mbG93bGFiZWxfZ2V0KClgLiBcblxuVGhlIGNoYW5nZXMgb25seSBpbnRyb2R1Y2UgYSBjb3VudGVyLWJhc2VkIGxvb3AgaXRlcmF0aW5nIG92ZXIgYW4gZXhpc3RpbmcgUkNVLXByb3RlY3RlZCBsaXN0IGFuZCBhbiBlcnJvciBicmFuY2ggKGAtRU5PQlVGU2ApIHVuZGVyIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KClgLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBhbGxvY2F0ZWQsIHJlYWQsIG9yIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgYXJlIGFueSBidWZmZXIgbGVuZ3RocyBvciBkYXRhIHN0cnVjdHVyZXMgbW9kaWZpZWQgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBkYXRhLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkZDg4OGViYTMwOTc1MmFkODM2ZjNjNjU5MTE4NDNhYWIzMmM4NjRjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgNCAwNjowNzo0NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9mbG93bGFiZWwuYyBiL25ldC9pcHY2L2lwNl9mbG93bGFiZWwuYwppbmRleCAxYWI1YWQwZGNmMjRmLi4wMDY1ODVkYzhiNWM2IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jCkBAIC00NjEsNiAmIzQzOzQ2MSwyMSBAQCBmbF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpbjZfZmxvd2xhYmVsX3JlcSAqZnJlcSwKIAlyZXR1cm4gTlVMTDsKIH0KIAomIzQzO3N0YXRpYyBib29sIGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrKQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IGlwdjZfZmxfc29ja2xpc3QgKnNmbDsKJiM0MzsJaW50IGNvdW50ID0gMDsKJiM0MzsKJiM0MzsJcmN1X3JlYWRfbG9jaygpOwomIzQzOwlmb3JfZWFjaF9za19mbF9yY3Uoc2ssIHNmbCkgewomIzQzOwkJaWYgKCYjNDM7JiM0Mztjb3VudCAmZ3Q7PSBGTF9NQVhfUEVSX1NPQ0spCiYjNDM7CQkJYnJlYWs7CiYjNDM7CX0KJiM0MzsJcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CiYjNDM7CXJldHVybiBjb3VudCAmZ3Q7PSBGTF9NQVhfUEVSX1NPQ0s7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBtZW1fY2hlY2soc3RydWN0IHNvY2sgKnNrKQogewogCWNvbnN0IGludCB1bnByaXZfdG90YWxfbGltaXQgPSBGTF9NQVhfU0laRSAtIChGTF9NQVhfU0laRSAvIDQpOwpAQCAtNjc5LDYgJiM0Mzs2OTQsMTAgQEAgc3RhdGljIGludCBpcHY2X2Zsb3dsYWJlbF9nZXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaW42X2Zsb3dsYWJlbF9yZXEgKmZyZXEsCiAJCQllcnIgPSAtRU5PTUVNOwogCQkJaWYgKCFzZmwxKQogCQkJCWdvdG8gcmVsZWFzZTsKJiM0MzsJCQllcnIgPSAtRU5PQlVGUzsKJiM0MzsJCQlpZiAoZmxfc29ja19hdF9sZWFzZV9saW1pdChzaykgJmFtcDsmYW1wOwomIzQzOwkJCSAgICAhY2FwYWJsZShDQVBfTkVUX0FETUlOKSkKJiM0MzsJCQkJZ290byByZWxlYXNlOwogCQkJaWYgKGZsLSZndDtsaW5nZXIgJmd0OyBmbDEtJmd0O2xpbmdlcikKIAkJCQlmbDEtJmd0O2xpbmdlciA9IGZsLSZndDtsaW5nZXI7CiAJCQlpZiAoKGxvbmcpKGZsLSZndDtleHBpcmVzIC0gZmwxLSZndDtleHBpcmVzKSAmZ3Q7IDApCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNjowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzU0CgkJCQkJCQlvdXRwdXQ6IDgwCgkJCQkJCQl0aG91Z2h0czogNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIEZsb3dsYWJlbCBDb2RlKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBnZXQgYSBzb2xpZCBncmFzcCBvZiB0aGUgY29udGV4dC4gRmlyc3QsIEkgbmVlZCB0byB6ZXJvIGluIG9uIGBuZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNgLiBMZXQmIzM5O3MgdXNlIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBnZXQgdGhhdCBmaWxlIG9wZW4gYW5kIGluIGZyb250IG9mIG1lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZSwgdGhlIGN1cnJlbnQgc3RhdGUgb2YgZmxvd2xhYmVsIGltcGxlbWVudGF0aW9uLCBiZWZvcmUgSSBjYW4gcmVhbGx5IGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY2L2lwNl9mbG93bGFiZWwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDUwOlx0XHRcdFdSSVRFX09OQ0Uoc29ja19uZXQoc2spLVx1MDAzZWlwdjYuZmxvd2xhYmVsX2hhc19leGNsLCAxKTtcbiA0NTE6XHRcdFx0c3RhdGljX2JyYW5jaF9kZWZlcnJlZF9pbmMoXHUwMDI2aXB2Nl9mbG93bGFiZWxfZXhjbHVzaXZlKTtcbiA0NTI6XHRcdH1cbiA0NTM6XHRcdHJldHVybiBmbDtcbiA0NTQ6XHRcbiA0NTU6XHRkb25lOlxuIDQ1NjpcdFx0aWYgKGZsKSB7XG4gNDU3Olx0XHRcdGtmcmVlKGZsLVx1MDAzZW9wdCk7XG4gNDU4Olx0XHRcdGtmcmVlKGZsKTtcbiA0NTk6XHRcdH1cbiA0NjA6XHRcdCplcnJfcCA9IGVycjtcbiA0NjE6XHRcdHJldHVybiBOVUxMO1xuIDQ2MjpcdH1cbiA0NjM6XHRcbiA0NjQ6XHRzdGF0aWMgYm9vbCBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KGNvbnN0IHN0cnVjdCBzb2NrICpzaylcbiA0NjU6XHR7XG4gNDY2Olx0XHRjb25zdCBzdHJ1Y3QgaXB2Nl9mbF9zb2NrbGlzdCAqc2ZsO1xuIDQ2NzpcdFx0aW50IGNvdW50ID0gMDtcbiA0Njg6XHRcbiA0Njk6XHRcdHJjdV9yZWFkX2xvY2soKTtcbiA0NzA6XHRcdGZvcl9lYWNoX3NrX2ZsX3JjdShzaywgc2ZsKSB7XG4gNDcxOlx0XHRcdGlmICgmIzQzOyYjNDM7Y291bnQgXHUwMDNlPSBGTF9NQVhfUEVSX1NPQ0spXG4gNDcyOlx0XHRcdFx0YnJlYWs7XG4gNDczOlx0XHR9XG4gNDc0Olx0XHRyY3VfcmVhZF91bmxvY2soKTtcbiA0NzU6XHRcbiA0NzY6XHRcdHJldHVybiBjb3VudCBcdTAwM2U9IEZMX01BWF9QRVJfU09DSztcbiA0Nzc6XHR9XG4gNDc4Olx0XG4gNDc5Olx0c3RhdGljIGludCBtZW1fY2hlY2soc3RydWN0IHNvY2sgKnNrKVxuIDQ4MDpcdHtcbiA0ODE6XHRcdGNvbnN0IGludCB1bnByaXZfdG90YWxfbGltaXQgPSBGTF9NQVhfU0laRSAtIChGTF9NQVhfU0laRSAvIDQpO1xuIDQ4MjpcdFx0Y29uc3QgaW50IHVucHJpdl91c2VyX2xpbWl0ID0gdW5wcml2X3RvdGFsX2xpbWl0IC8gMjtcbiA0ODM6XHRcdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrKTtcbiA0ODQ6XHRcdGludCByb29tO1xuIDQ4NTpcdFx0c3RydWN0IGlwdjZfZmxfc29ja2xpc3QgKnNmbDtcbiA0ODY6XHRcdGludCBjb3VudCA9IDA7XG4gNDg3Olx0XG4gNDg4Olx0XHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmlwNl9mbF9sb2NrKTtcbiA0ODk6XHRcbiA0OTA6XHRcdHJvb20gPSBGTF9NQVhfU0laRSAtIGZsX3NpemU7XG4gNDkxOlx0XG4gNDkyOlx0XHRpZiAocm9vbSBcdTAwM2UgRkxfTUFYX1NJWkUgLSBGTF9NQVhfUEVSX1NPQ0spXG4gNDkzOlx0XHRcdHJldHVybiAwO1xuIDQ5NDpcdFxuIDQ5NTpcdFx0cmN1X3JlYWRfbG9jaygpO1xuIDQ5NjpcdFx0Zm9yX2VhY2hfc2tfZmxfcmN1KHNrLCBzZmwpXG4gNDk3Olx0XHRcdGNvdW50JiM0MzsmIzQzOztcbiA0OTg6XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIDQ5OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwNjowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY2L2lwNl9mbG93bGFiZWwuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjYwOlx0XG4gNjYxOlx0XHRpZiAoZnJlcS1cdTAwM2VmbHJfbGFiZWwpIHtcbiA2NjI6XHRcdFx0ZXJyID0gLUVFWElTVDtcbiA2NjM6XHRcdFx0cmN1X3JlYWRfbG9jaygpO1xuIDY2NDpcdFx0XHRmb3JfZWFjaF9za19mbF9yY3Uoc2ssIHNmbCkge1xuIDY2NTpcdFx0XHRcdGlmIChzZmwtXHUwMDNlZmwtXHUwMDNlbGFiZWwgPT0gZnJlcS1cdTAwM2VmbHJfbGFiZWwpIHtcbiA2NjY6XHRcdFx0XHRcdGlmIChmcmVxLVx1MDAzZWZscl9mbGFncyBcdTAwMjYgSVBWNl9GTF9GX0VYQ0wpIHtcbiA2Njc6XHRcdFx0XHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gNjY4Olx0XHRcdFx0XHRcdGdvdG8gZG9uZTtcbiA2Njk6XHRcdFx0XHRcdH1cbiA2NzA6XHRcdFx0XHRcdGZsMSA9IHNmbC1cdTAwM2VmbDtcbiA2NzE6XHRcdFx0XHRcdGlmICghYXRvbWljX2luY19ub3RfemVybyhcdTAwMjZmbDEtXHUwMDNldXNlcnMpKVxuIDY3MjpcdFx0XHRcdFx0XHRmbDEgPSBOVUxMO1xuIDY3MzpcdFx0XHRcdFx0YnJlYWs7XG4gNjc0Olx0XHRcdFx0fVxuIDY3NTpcdFx0XHR9XG4gNjc2Olx0XHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIDY3NzpcdFxuIDY3ODpcdFx0XHRpZiAoIWZsMSlcbiA2Nzk6XHRcdFx0XHRmbDEgPSBmbF9sb29rdXAobmV0LCBmcmVxLVx1MDAzZWZscl9sYWJlbCk7XG4gNjgwOlx0XHRcdGlmIChmbDEpIHtcbiA2ODE6XHRyZWNoZWNrOlxuIDY4MjpcdFx0XHRcdGVyciA9IC1FRVhJU1Q7XG4gNjgzOlx0XHRcdFx0aWYgKGZyZXEtXHUwMDNlZmxyX2ZsYWdzXHUwMDI2SVBWNl9GTF9GX0VYQ0wpXG4gNjg0Olx0XHRcdFx0XHRnb3RvIHJlbGVhc2U7XG4gNjg1Olx0XHRcdFx0ZXJyID0gLUVQRVJNO1xuIDY4NjpcdFx0XHRcdGlmIChmbDEtXHUwMDNlc2hhcmUgPT0gSVBWNl9GTF9TX0VYQ0wgfHxcbiA2ODc6XHRcdFx0XHQgICAgZmwxLVx1MDAzZXNoYXJlICE9IGZsLVx1MDAzZXNoYXJlIHx8XG4gNjg4Olx0XHRcdFx0ICAgICgoZmwxLVx1MDAzZXNoYXJlID09IElQVjZfRkxfU19QUk9DRVNTKSBcdTAwMjZcdTAwMjZcbiA2ODk6XHRcdFx0XHQgICAgIChmbDEtXHUwMDNlb3duZXIucGlkICE9IGZsLVx1MDAzZW93bmVyLnBpZCkpIHx8XG4gNjkwOlx0XHRcdFx0ICAgICgoZmwxLVx1MDAzZXNoYXJlID09IElQVjZfRkxfU19VU0VSKSBcdTAwMjZcdTAwMjZcbiA2OTE6XHRcdFx0XHQgICAgICF1aWRfZXEoZmwxLVx1MDAzZW93bmVyLnVpZCwgZmwtXHUwMDNlb3duZXIudWlkKSkpXG4gNjkyOlx0XHRcdFx0XHRnb3RvIHJlbGVhc2U7XG4gNjkzOlx0XG4gNjk0Olx0XHRcdFx0ZXJyID0gLUVOT01FTTtcbiA2OTU6XHRcdFx0XHRpZiAoIXNmbDEpXG4gNjk2Olx0XHRcdFx0XHRnb3RvIHJlbGVhc2U7XG4gNjk3Olx0XHRcdFx0ZXJyID0gLUVOT0JVRlM7XG4gNjk4Olx0XHRcdFx0aWYgKGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoc2spIFx1MDAyNlx1MDAyNlxuIDY5OTpcdFx0XHRcdCAgICAhY2FwYWJsZShDQVBfTkVUX0FETUlOKSlcbiA3MDA6XHRcdFx0XHRcdGdvdG8gcmVsZWFzZTtcbiA3MDE6XHRcdFx0XHRpZiAoZmwtXHUwMDNlbGluZ2VyIFx1MDAzZSBmbDEtXHUwMDNlbGluZ2VyKVxuIDcwMjpcdFx0XHRcdFx0ZmwxLVx1MDAzZWxpbmdlciA9IGZsLVx1MDAzZWxpbmdlcjtcbiA3MDM6XHRcdFx0XHRpZiAoKGxvbmcpKGZsLVx1MDAzZWV4cGlyZXMgLSBmbDEtXHUwMDNlZXhwaXJlcykgXHUwMDNlIDApXG4gNzA0Olx0XHRcdFx0XHRmbDEtXHUwMDNlZXhwaXJlcyA9IGZsLVx1MDAzZWV4cGlyZXM7XG4gNzA1Olx0XHRcdFx0ZmxfbGluayhzaywgc2ZsMSwgZmwxKTtcbiA3MDY6XHRcdFx0XHRmbF9mcmVlKGZsKTtcbiA3MDc6XHRcdFx0XHRyZXR1cm4gMDtcbiA3MDg6XHRcbiA3MDk6XHRyZWxlYXNlOlxuIDcxMDpcdFx0XHRcdGZsX3JlbGVhc2UoZmwxKTtcbiA3MTE6XHRcdFx0XHRnb3RvIGRvbmU7XG4gNzEyOlx0XHRcdH1cbiA3MTM6XHRcdH1cbiA3MTQ6XHRcdGVyciA9IC1FTk9FTlQ7XG4gNzE1Olx0XHRpZiAoIShmcmVxLVx1MDAzZWZscl9mbGFncyBcdTAwMjYgSVBWNl9GTF9GX0NSRUFURSkpXG4gNzE2Olx0XHRcdGdvdG8gZG9uZTtcbiA3MTc6XHRcbiA3MTg6XHRcdGVyciA9IC1FTk9NRU07XG4gNzE5Olx0XHRpZiAoIXNmbDEpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMTYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHJvbGUgb2YgdGhlIHRoaW5raW5nIHByb2Nlc3MgYXMgZGVzY3JpYmVkOgoKKipEaXZpbmcgRGVlcGVyIGludG8gRmxvdyBMYWJlbCBJbXBsZW1lbnRhdGlvbioqCgpBbHJpZ2h0LCBiZWZvcmUgSSBmaW5hbGl6ZSBteSBhc3Nlc3NtZW50IG9mIHRoaXMgZmxvdyBsYWJlbCBsb2dpYywgSSBuZWVkIGEgY2xlYXJlciBwaWN0dXJlLiBJJiMzOTttIGdvaW5nIHRvIHNoaWZ0IGZvY3VzIGFuZCB0cmFjZSB0aGUgcmVzdCBvZiB0aGUgY29kZSBleGVjdXRpb24uIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgZXhhbWluZSB0aGUgcmVtYWluaW5nIHBhcnRzIG9mIGBpcHY2X2Zsb3dsYWJlbF9nZXRgIGZ1bmN0aW9uLiBBbmQgZXF1YWxseSBpbXBvcnRhbnQsIEkgd2lsbCBiZSBkZWx2aW5nIGludG8gdGhlIGlubmVyIHdvcmtpbmdzIG9mIGBmbF9jcmVhdGVgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBwaWVjZXMgSSBuZWVkIHRvIHRydWx5IHVuZGVyc3RhbmQgaG93IGV2ZXJ5dGhpbmcgZml0cyB0b2dldGhlciBmb3IgdGhlIGZsb3cgbGFiZWwgaW1wbGVtZW50YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2MzA6XHRcdFx0c29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbilcbiA2MzE6XHR7XG4gNjMyOlx0XHRzdHJ1Y3QgaXB2Nl9mbF9zb2NrbGlzdCAqc2ZsLCAqc2ZsMSA9IE5VTEw7XG4gNjMzOlx0XHRzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmwsICpmbDEgPSBOVUxMO1xuIDYzNDpcdFx0c3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2spO1xuIDYzNTpcdFx0aW50IGVycjtcbiA2MzY6XHRcbiA2Mzc6XHRcdGlmIChmcmVxLVx1MDAzZWZscl9mbGFncyBcdTAwMjYgSVBWNl9GTF9GX1JFRkxFQ1QpIHtcbiA2Mzg6XHRcdFx0aWYgKFJFQURfT05DRShuZXQtXHUwMDNlaXB2Ni5zeXNjdGwuZmxvd2xhYmVsX2NvbnNpc3RlbmN5KSkge1xuIDYzOTpcdFx0XHRcdG5ldF9pbmZvX3JhdGVsaW1pdGVkKFwmIzM0O0NhbiBub3Qgc2V0IElQVjZfRkxfRl9SRUZMRUNUIGlmIGZsb3dsYWJlbF9jb25zaXN0ZW5jeSBzeXNjdGwgaXMgZW5hYmxlXFxuXCYjMzQ7KTtcbiA2NDA6XHRcdFx0XHRyZXR1cm4gLUVQRVJNO1xuIDY0MTpcdFx0XHR9XG4gNjQyOlx0XG4gNjQzOlx0XHRcdGlmIChzay1cdTAwM2Vza19wcm90b2NvbCAhPSBJUFBST1RPX1RDUClcbiA2NDQ6XHRcdFx0XHRyZXR1cm4gLUVOT1BST1RPT1BUO1xuIDY0NTpcdFx0XHRpbmV0Nl9zZXRfYml0KFJFUEZMT1csIHNrKTtcbiA2NDY6XHRcdFx0cmV0dXJuIDA7XG4gNjQ3Olx0XHR9XG4gNjQ4Olx0XG4gNjQ5Olx0XHRpZiAoZnJlcS1cdTAwM2VmbHJfbGFiZWwgXHUwMDI2IH5JUFY2X0ZMT1dMQUJFTF9NQVNLKVxuIDY1MDpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA2NTE6XHRcdGlmIChSRUFEX09OQ0UobmV0LVx1MDAzZWlwdjYuc3lzY3RsLmZsb3dsYWJlbF9zdGF0ZV9yYW5nZXMpIFx1MDAyNlx1MDAyNlxuIDY1MjpcdFx0ICAgIChmcmVxLVx1MDAzZWZscl9sYWJlbCBcdTAwMjYgSVBWNl9GTE9XTEFCRUxfU1RBVEVMRVNTX0ZMQUcpKVxuIDY1MzpcdFx0XHRyZXR1cm4gLUVSQU5HRTtcbiA2NTQ6XHRcbiA2NTU6XHRcdGZsID0gZmxfY3JlYXRlKG5ldCwgc2ssIGZyZXEsIG9wdHZhbCwgb3B0bGVuLCBcdTAwMjZlcnIpO1xuIDY1NjpcdFx0aWYgKCFmbClcbiA2NTc6XHRcdFx0cmV0dXJuIGVycjtcbiA2NTg6XHRcbiA2NTk6XHRcdHNmbDEgPSBrbWFsbG9jX29iaigqc2ZsMSk7XG4gNjYwOlx0XG4gNjYxOlx0XHRpZiAoZnJlcS1cdTAwM2VmbHJfbGFiZWwpIHtcbiA2NjI6XHRcdFx0ZXJyID0gLUVFWElTVDtcbiA2NjM6XHRcdFx0cmN1X3JlYWRfbG9jaygpO1xuIDY2NDpcdFx0XHRmb3JfZWFjaF9za19mbF9yY3Uoc2ssIHNmbCkge1xuIDY2NTpcdFx0XHRcdGlmIChzZmwtXHUwMDNlZmwtXHUwMDNlbGFiZWwgPT0gZnJlcS1cdTAwM2VmbHJfbGFiZWwpIHtcbiA2NjY6XHRcdFx0XHRcdGlmIChmcmVxLVx1MDAzZWZscl9mbGFncyBcdTAwMjYgSVBWNl9GTF9GX0VYQ0wpIHtcbiA2Njc6XHRcdFx0XHRcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gNjY4Olx0XHRcdFx0XHRcdGdvdG8gZG9uZTtcbiA2Njk6XHRcdFx0XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDY6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA4NgoJCQkJCQkJb3V0cHV0OiAxNjQKCQkJCQkJCXRob3VnaHRzOiA3NzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRmxvdyBMYWJlbCBMZWFzZSBMaW1pdCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGNvbmNlcm4gd2FzIGFib3V0IGEgcG90ZW50aWFsIGJ1ZyBpbiBgaXB2Nl9mbG93bGFiZWxfZ2V0KClgLiBJdCBzZWVtcyB0aGF0IHdoZW4gYSBzb2NrZXQgKnJldXNlcyogYW4gZXhpc3RpbmcgZmxvdyBsYWJlbCAoYGZsMWApLCB0aGUgY29kZSB3YXNuJiMzOTt0IGNvcnJlY3RseSBjaGVja2luZyB0aGUgcGVyLXNvY2tldCBsaW1pdCBgRkxfTUFYX1BFUl9TT0NLYC4gV2UgZG8gaGF2ZSBgbWVtX2NoZWNrKHNrKWAgaW4gYGZsX2NyZWF0ZSgpYCwgYnV0IGl0JiMzOTtzIG9ubHkgY2FsbGVkIHdoZW4gKmNyZWF0aW5nKiBhIG5ldyBmbG93IGxhYmVsLiBNeSBodW5jaCB3YXMgdGhhdCB3aGVuICpyZXVzaW5nKiBhIGxhYmVsICh2aWEgYGZyZXEtJmd0O2Zscl9sYWJlbGAgYW5kIGZpbmRpbmcgYGZsMWApLCB3ZSBzdGlsbCBjYWxsIGBmbF9jcmVhdGVgLCBidXQgcGVyaGFwcyB0aGUgYG1lbV9jaGVja2AgbG9naWMgd2FzIGJ5cGFzc2VkLCBlc3BlY2lhbGx5IGlmIGByb29tICZndDsgRkxfTUFYX1NJWkUgLSBGTF9NQVhfUEVSX1NPQ0tgIG9yIGluIHNjZW5hcmlvcyBvZiByZXBlYXRlZGx5IGxlYXNpbmcgZXhpc3RpbmcgbGFiZWxzLgoKSSBkb3ZlIGludG8gYGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoc2spYCB0byBjb25maXJtLiBJdCBpdGVyYXRlcyB0aHJvdWdoIHRoZSBzb2NrZXQmIzM5O3MgZmxvdyBsYWJlbHMgYW5kIGNvdW50cyB0aGVtLiBJZiB0aGUgY291bnQgKGBjb3VudGApIHJlYWNoZXMgb3IgZXhjZWVkcyBgRkxfTUFYX1BFUl9TT0NLYCwgYW5kIHRoZSBzb2NrZXQgZG9lc24mIzM5O3QgaGF2ZSBgQ0FQX05FVF9BRE1JTmAsIGl0IHJldHVybnMgYC1FTk9CVUZTYC4gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgbGltaXQgZW5mb3JjZW1lbnQuIFRoZSBjaGVjayBpbiBgaXB2Nl9mbG93bGFiZWxfZ2V0YCB1c2VzIHRoYXQgZnVuY3Rpb24gdG8gcHJldmVudCBleGNlZWRpbmcgdGhlIGxpbWl0LgoKTm93LCBsZXQmIzM5O3MgdGhpbmsgYWJvdXQgdGhpcyBmcm9tIGEgS01TQU4vS0FTQU4gcGVyc3BlY3RpdmUuIERvZXMgdGhpcyBwYXRjaDoKCjEuICAqKkludHJvZHVjZSBrZXJuZWwgc3RydWN0dXJlcyBleHBvc2VkIHRvIHVzZXIgc3BhY2Ugd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcz8qKiBOby4KMi4gICoqUmVseSBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBpbiBjb25kaXRpb25hbCBsb2dpYz8qKiBObywgYmVjYXVzZSBgY291bnRgIGlzIGluaXRpYWxpemVkIHRvIHplcm8sIGFuZCBgc2tgIGFuZCBgc2ZsYCBhcmUgY29ycmVjdGx5IGhhbmRsZWQuCjMuICAqKkFsbG9jYXRlIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGFyZSB1c2VkIGxhdGVyPyoqIE5vLgo0LiAgKipJbnRyb2R1Y2UgYm91bmRzIGNoZWNrIGZsYXdzIHRoYXQgY291bGQgbGVhZCB0byByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgYnl0ZXM/KiogTm8uCgpUaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MuIEl0JiMzOTtzIHNvbGVseSBhYm91dCByZXNvdXJjZSBsaW1pdGluZyBhbmQgYWNjb3VudGluZyBmb3IgZmxvd2xhYmVsIHVzYWdlIHBlciBzb2NrZXQuIEtBU0FOIGFuZCB0aGUgdXN1YWwgdGVzdGluZyBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgY29ycmVjdG5lc3MgaGVyZS4gV2UgZG9uJiMzOTt0IG5lZWQgS01TQU4gdG8gZmxhZyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBiZWNhdXNlIHRoZXJlIGlzbiYjMzk7dCBhbnkuCgpJJiMzOTttIGNvbmZpZGVudCBpbiBjYWxsaW5nIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA2OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoKWAgYW5kIGFkZHMgYW4gYEZMX01BWF9QRVJfU09DS2AgY2FwYWNpdHkgY2hlY2sgd2hlbiBhdHRhY2hpbmcvbGVhc2luZyBleGlzdGluZyBJUHY2IGZsb3cgbGFiZWxzIGluIGBpcHY2X2Zsb3dsYWJlbF9nZXQoKWAuIFxuXG5UaGUgY2hhbmdlcyBvbmx5IGludHJvZHVjZSBhIGNvdW50ZXItYmFzZWQgbG9vcCBpdGVyYXRpbmcgb3ZlciBhbiBleGlzdGluZyBSQ1UtcHJvdGVjdGVkIGxpc3QgYW5kIGFuIGVycm9yIGJyYW5jaCAoYC1FTk9CVUZTYCkgdW5kZXIgYGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoKWAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGFsbG9jYXRlZCwgcmVhZCwgb3IgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBhcmUgYW55IGJ1ZmZlciBsZW5ndGhzIG9yIGRhdGEgc3RydWN0dXJlcyBtb2RpZmllZCBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoKWAgYW5kIGFkZHMgYW4gYEZMX01BWF9QRVJfU09DS2AgY2FwYWNpdHkgY2hlY2sgd2hlbiBhdHRhY2hpbmcvbGVhc2luZyBleGlzdGluZyBJUHY2IGZsb3cgbGFiZWxzIGluIGBpcHY2X2Zsb3dsYWJlbF9nZXQoKWAuIFxuXG5UaGUgY2hhbmdlcyBvbmx5IGludHJvZHVjZSBhIGNvdW50ZXItYmFzZWQgbG9vcCBpdGVyYXRpbmcgb3ZlciBhbiBleGlzdGluZyBSQ1UtcHJvdGVjdGVkIGxpc3QgYW5kIGFuIGVycm9yIGJyYW5jaCAoYC1FTk9CVUZTYCkgdW5kZXIgYGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoKWAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGFsbG9jYXRlZCwgcmVhZCwgb3IgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBhcmUgYW55IGJ1ZmZlciBsZW5ndGhzIG9yIGRhdGEgc3RydWN0dXJlcyBtb2RpZmllZCBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDc6NDYuNzQzNjQwMTc3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk3NDEzMTI3OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwdjZfZmxvd2xhYmVsX29wdFwiLFxuICAgIFwiaXB2Nl9mbG93bGFiZWxfZ2V0XCIsXG4gICAgXCJmbF9zb2NrX2F0X2xlYXNlX2xpbWl0XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KClgIGFuZCBhZGRzIGFuIGBGTF9NQVhfUEVSX1NPQ0tgIGNhcGFjaXR5IGNoZWNrIHdoZW4gYXR0YWNoaW5nL2xlYXNpbmcgZXhpc3RpbmcgSVB2NiBmbG93IGxhYmVscyBpbiBgaXB2Nl9mbG93bGFiZWxfZ2V0KClgLiBcXG5cXG5UaGUgY2hhbmdlcyBvbmx5IGludHJvZHVjZSBhIGNvdW50ZXItYmFzZWQgbG9vcCBpdGVyYXRpbmcgb3ZlciBhbiBleGlzdGluZyBSQ1UtcHJvdGVjdGVkIGxpc3QgYW5kIGFuIGVycm9yIGJyYW5jaCAoYC1FTk9CVUZTYCkgdW5kZXIgYGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoKWAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGFsbG9jYXRlZCwgcmVhZCwgb3IgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBhcmUgYW55IGJ1ZmZlciBsZW5ndGhzIG9yIGRhdGEgc3RydWN0dXJlcyBtb2RpZmllZCBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgcGVyLXNvY2tldCBsaW1pdCBjaGVjayAoZmxfc29ja19hdF9sZWFzZV9saW1pdCkgdG8gcHJldmVudCB1bnByaXZpbGVnZWQgdXNlcnMgZnJvbSBhY3F1aXJpbmcgZXhjZXNzaXZlIGZsb3dsYWJlbHMgdmlhIGlwdjZfZmxvd2xhYmVsX2dldCgpLiBUaGlzIG1vZGlmaWVzIGNvcmUgSVB2NiBuZXR3b3JraW5nIGxvZ2ljIGRpcmVjdGx5IHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc2V0c29ja29wdChTT0xfSVBWNiwgSVBWNl9GTE9XTEFCRUxfTUdSLCAuLi4pIHdpdGggSVBWNl9GTF9BX0dFVC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDc6NDYuNzQzNjQ3MDk3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTY2MDMzNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkZDg4OGViYTMwOTc1MmFkODM2ZjNjNjU5MTE4NDNhYWIzMmM4NjRjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDQgMDY6MDc6NDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jIGIvbmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jXFxuaW5kZXggMWFiNWFkMGRjZjI0Zi4uMDA2NTg1ZGM4YjVjNiAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNcXG4rKysgYi9uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNcXG5AQCAtNDYxLDYgKzQ2MSwyMSBAQCBmbF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpbjZfZmxvd2xhYmVsX3JlcSAqZnJlcSxcXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBpcHY2X2ZsX3NvY2tsaXN0ICpzZmw7XFxuK1xcdGludCBjb3VudCA9IDA7XFxuK1xcbitcXHRyY3VfcmVhZF9sb2NrKCk7XFxuK1xcdGZvcl9lYWNoX3NrX2ZsX3JjdShzaywgc2ZsKSB7XFxuK1xcdFxcdGlmICgrK2NvdW50IFxcdTAwM2U9IEZMX01BWF9QRVJfU09DSylcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdH1cXG4rXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuK1xcbitcXHRyZXR1cm4gY291bnQgXFx1MDAzZT0gRkxfTUFYX1BFUl9TT0NLO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG1lbV9jaGVjayhzdHJ1Y3Qgc29jayAqc2spXFxuIHtcXG4gXFx0Y29uc3QgaW50IHVucHJpdl90b3RhbF9saW1pdCA9IEZMX01BWF9TSVpFIC0gKEZMX01BWF9TSVpFIC8gNCk7XFxuQEAgLTY3OSw2ICs2OTQsMTAgQEAgc3RhdGljIGludCBpcHY2X2Zsb3dsYWJlbF9nZXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaW42X2Zsb3dsYWJlbF9yZXEgKmZyZXEsXFxuIFxcdFxcdFxcdGVyciA9IC1FTk9NRU07XFxuIFxcdFxcdFxcdGlmICghc2ZsMSlcXG4gXFx0XFx0XFx0XFx0Z290byByZWxlYXNlO1xcbitcXHRcXHRcXHRlcnIgPSAtRU5PQlVGUztcXG4rXFx0XFx0XFx0aWYgKGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoc2spIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdFxcdCAgICAhY2FwYWJsZShDQVBfTkVUX0FETUlOKSlcXG4rXFx0XFx0XFx0XFx0Z290byByZWxlYXNlO1xcbiBcXHRcXHRcXHRpZiAoZmwtXFx1MDAzZWxpbmdlciBcXHUwMDNlIGZsMS1cXHUwMDNlbGluZ2VyKVxcbiBcXHRcXHRcXHRcXHRmbDEtXFx1MDAzZWxpbmdlciA9IGZsLVxcdTAwM2VsaW5nZXI7XFxuIFxcdFxcdFxcdGlmICgobG9uZykoZmwtXFx1MDAzZWV4cGlyZXMgLSBmbDEtXFx1MDAzZWV4cGlyZXMpIFxcdTAwM2UgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDc6NDcuMjAwOTEyMzI5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyMDczNDgwNjY3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXB2Nl9mbG93bGFiZWxfb3B0XCIsXG4gICAgXCJpcHY2X2Zsb3dsYWJlbF9nZXRcIixcbiAgICBcImZsX3NvY2tfYXRfbGVhc2VfbGltaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgcGVyLXNvY2tldCBsaW1pdCBjaGVjayAoZmxfc29ja19hdF9sZWFzZV9saW1pdCkgdG8gcHJldmVudCB1bnByaXZpbGVnZWQgdXNlcnMgZnJvbSBhY3F1aXJpbmcgZXhjZXNzaXZlIGZsb3dsYWJlbHMgdmlhIGlwdjZfZmxvd2xhYmVsX2dldCgpLiBUaGlzIG1vZGlmaWVzIGNvcmUgSVB2NiBuZXR3b3JraW5nIGxvZ2ljIGRpcmVjdGx5IHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc2V0c29ja29wdChTT0xfSVBWNiwgSVBWNl9GTE9XTEFCRUxfTUdSLCAuLi4pIHdpdGggSVBWNl9GTF9BX0dFVC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkZDg4OGViYTMwOTc1MmFkODM2ZjNjNjU5MTE4NDNhYWIzMmM4NjRjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAwNjowNzo0NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9mbG93bGFiZWwuYyBiL25ldC9pcHY2L2lwNl9mbG93bGFiZWwuY1xuaW5kZXggMWFiNWFkMGRjZjI0Zi4uMDA2NTg1ZGM4YjVjNiAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L2lwNl9mbG93bGFiZWwuY1xuKysrIGIvbmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jXG5AQCAtNDYxLDYgKzQ2MSwyMSBAQCBmbF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpbjZfZmxvd2xhYmVsX3JlcSAqZnJlcSxcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KGNvbnN0IHN0cnVjdCBzb2NrICpzaylcbit7XG4rXHRjb25zdCBzdHJ1Y3QgaXB2Nl9mbF9zb2NrbGlzdCAqc2ZsO1xuK1x0aW50IGNvdW50ID0gMDtcbitcbitcdHJjdV9yZWFkX2xvY2soKTtcbitcdGZvcl9lYWNoX3NrX2ZsX3JjdShzaywgc2ZsKSB7XG4rXHRcdGlmICgrK2NvdW50IFx1MDAzZT0gRkxfTUFYX1BFUl9TT0NLKVxuK1x0XHRcdGJyZWFrO1xuK1x0fVxuK1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXG4rXHRyZXR1cm4gY291bnQgXHUwMDNlPSBGTF9NQVhfUEVSX1NPQ0s7XG4rfVxuK1xuIHN0YXRpYyBpbnQgbWVtX2NoZWNrKHN0cnVjdCBzb2NrICpzaylcbiB7XG4gXHRjb25zdCBpbnQgdW5wcml2X3RvdGFsX2xpbWl0ID0gRkxfTUFYX1NJWkUgLSAoRkxfTUFYX1NJWkUgLyA0KTtcbkBAIC02NzksNiArNjk0LDEwIEBAIHN0YXRpYyBpbnQgaXB2Nl9mbG93bGFiZWxfZ2V0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGluNl9mbG93bGFiZWxfcmVxICpmcmVxLFxuIFx0XHRcdGVyciA9IC1FTk9NRU07XG4gXHRcdFx0aWYgKCFzZmwxKVxuIFx0XHRcdFx0Z290byByZWxlYXNlO1xuK1x0XHRcdGVyciA9IC1FTk9CVUZTO1xuK1x0XHRcdGlmIChmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KHNrKSBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgIWNhcGFibGUoQ0FQX05FVF9BRE1JTikpXG4rXHRcdFx0XHRnb3RvIHJlbGVhc2U7XG4gXHRcdFx0aWYgKGZsLVx1MDAzZWxpbmdlciBcdTAwM2UgZmwxLVx1MDAzZWxpbmdlcilcbiBcdFx0XHRcdGZsMS1cdTAwM2VsaW5nZXIgPSBmbC1cdTAwM2VsaW5nZXI7XG4gXHRcdFx0aWYgKChsb25nKShmbC1cdTAwM2VleHBpcmVzIC0gZmwxLVx1MDAzZWV4cGlyZXMpIFx1MDAzZSAwKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDc6NDcuMjAwOTEzNzg5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjgxMjUzNTk5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQdjYgRmxvd2xhYmVsIFBhdGNoKipcblxuT2theSwgdGltZSB0byBkaXZlIGluLiBJIG5lZWQgdG8gZ2V0IGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgdGhpcyBwYXRjaCBpcyBkb2luZy4gVGhlIGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIHBpbnBvaW50IHRoZSBleGFjdCBsb2NhdGlvbiBvZiB0aGUgY2hhbmdlcywgc28gSSdtIGZvY3VzaW5nIG9uIGBuZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNgLiBOb3csIHdpdGggdGhlIGZpbGUgaWRlbnRpZmllZCwgSSBuZWVkIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LiBMZXQncyBzZWUuLi4gSSdsbCBwdWxsIHVwIGBncmVwcGVyYCAob3IgcG9zc2libHkganVzdCBhIHF1aWNrIGByZWFkLWZpbGVgIGNvbW1hbmQsIGRlcGVuZGluZyBvbiB0aGUgc2NhbGUpIHRvIHF1aWNrbHkgZXhhbWluZSBgbmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBgS2NvbmZpZ2AgZm9yIHRoZSBjb25maWd1cmF0aW9uIGZsYWdzLCBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTQyLCJPdXRwdXRUb2tlbnMiOjgwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNjowNzo1NC4wMTM0NTM2NjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjAxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDU1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDU1OlxcdGRvbmU6XFxuIDQ1NjpcXHRcXHRpZiAoZmwpIHtcXG4gNDU3OlxcdFxcdFxcdGtmcmVlKGZsLVxcdTAwM2VvcHQpO1xcbiA0NTg6XFx0XFx0XFx0a2ZyZWUoZmwpO1xcbiA0NTk6XFx0XFx0fVxcbiA0NjA6XFx0XFx0KmVycl9wID0gZXJyO1xcbiA0NjE6XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDQ2MjpcXHR9XFxuIDQ2MzpcXHRcXG4gNDY0OlxcdHN0YXRpYyBib29sIGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrKVxcbiA0NjU6XFx0e1xcbiA0NjY6XFx0XFx0Y29uc3Qgc3RydWN0IGlwdjZfZmxfc29ja2xpc3QgKnNmbDtcXG4gNDY3OlxcdFxcdGludCBjb3VudCA9IDA7XFxuIDQ2ODpcXHRcXG4gNDY5OlxcdFxcdHJjdV9yZWFkX2xvY2soKTtcXG4gNDcwOlxcdFxcdGZvcl9lYWNoX3NrX2ZsX3JjdShzaywgc2ZsKSB7XFxuIDQ3MTpcXHRcXHRcXHRpZiAoKytjb3VudCBcXHUwMDNlPSBGTF9NQVhfUEVSX1NPQ0spXFxuIDQ3MjpcXHRcXHRcXHRcXHRicmVhaztcXG4gNDczOlxcdFxcdH1cXG4gNDc0OlxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiA0NzU6XFx0XFxuIDQ3NjpcXHRcXHRyZXR1cm4gY291bnQgXFx1MDAzZT0gRkxfTUFYX1BFUl9TT0NLO1xcbiA0Nzc6XFx0fVxcbiA0Nzg6XFx0XFxuIDQ3OTpcXHRzdGF0aWMgaW50IG1lbV9jaGVjayhzdHJ1Y3Qgc29jayAqc2spXFxuIDQ4MDpcXHR7XFxuIDQ4MTpcXHRcXHRjb25zdCBpbnQgdW5wcml2X3RvdGFsX2xpbWl0ID0gRkxfTUFYX1NJWkUgLSAoRkxfTUFYX1NJWkUgLyA0KTtcXG4gNDgyOlxcdFxcdGNvbnN0IGludCB1bnByaXZfdXNlcl9saW1pdCA9IHVucHJpdl90b3RhbF9saW1pdCAvIDI7XFxuIDQ4MzpcXHRcXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7XFxuIDQ4NDpcXHRcXHRpbnQgcm9vbTtcXG4gNDg1OlxcdFxcdHN0cnVjdCBpcHY2X2ZsX3NvY2tsaXN0ICpzZmw7XFxuIDQ4NjpcXHRcXHRpbnQgY291bnQgPSAwO1xcbiA0ODc6XFx0XFxuIDQ4ODpcXHRcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZpcDZfZmxfbG9jayk7XFxuIDQ4OTpcXHRcXG4gNDkwOlxcdFxcdHJvb20gPSBGTF9NQVhfU0laRSAtIGZsX3NpemU7XFxuIDQ5MTpcXHRcXG4gNDkyOlxcdFxcdGlmIChyb29tIFxcdTAwM2UgRkxfTUFYX1NJWkUgLSBGTF9NQVhfUEVSX1NPQ0spXFxuIDQ5MzpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNDk0OlxcdFxcbiA0OTU6XFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbiA0OTY6XFx0XFx0Zm9yX2VhY2hfc2tfZmxfcmN1KHNrLCBzZmwpXFxuIDQ5NzpcXHRcXHRcXHRjb3VudCsrO1xcbiA0OTg6XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIDQ5OTpcXHRcXG4gNTAwOlxcdFxcdGlmIChyb29tIFxcdTAwM2M9IDAgfHxcXG4gNTAxOlxcdFxcdCAgICAoKGNvdW50IFxcdTAwM2U9IEZMX01BWF9QRVJfU09DSyB8fFxcbiA1MDI6XFx0XFx0ICAgICAgKGNvdW50IFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiByb29tIFxcdTAwM2MgRkxfTUFYX1NJWkUgLyAyKSB8fFxcbiA1MDM6XFx0XFx0ICAgICAgcm9vbSBcXHUwMDNjIEZMX01BWF9TSVpFIC8gNCB8fFxcbiA1MDQ6XFx0XFx0ICAgICAgbmV0LVxcdTAwM2VpcHY2LmZsb3dsYWJlbF9jb3VudCBcXHUwMDNlPSB1bnByaXZfdXNlcl9saW1pdCkgXFx1MDAyNlxcdTAwMjZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDc6NTQuMDEzNTUxMDU3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY3MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY3MDpcXHRcXHRcXHRcXHRcXHRmbDEgPSBzZmwtXFx1MDAzZWZsO1xcbiA2NzE6XFx0XFx0XFx0XFx0XFx0aWYgKCFhdG9taWNfaW5jX25vdF96ZXJvKFxcdTAwMjZmbDEtXFx1MDAzZXVzZXJzKSlcXG4gNjcyOlxcdFxcdFxcdFxcdFxcdFxcdGZsMSA9IE5VTEw7XFxuIDY3MzpcXHRcXHRcXHRcXHRcXHRicmVhaztcXG4gNjc0OlxcdFxcdFxcdFxcdH1cXG4gNjc1OlxcdFxcdFxcdH1cXG4gNjc2OlxcdFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiA2Nzc6XFx0XFxuIDY3ODpcXHRcXHRcXHRpZiAoIWZsMSlcXG4gNjc5OlxcdFxcdFxcdFxcdGZsMSA9IGZsX2xvb2t1cChuZXQsIGZyZXEtXFx1MDAzZWZscl9sYWJlbCk7XFxuIDY4MDpcXHRcXHRcXHRpZiAoZmwxKSB7XFxuIDY4MTpcXHRyZWNoZWNrOlxcbiA2ODI6XFx0XFx0XFx0XFx0ZXJyID0gLUVFWElTVDtcXG4gNjgzOlxcdFxcdFxcdFxcdGlmIChmcmVxLVxcdTAwM2VmbHJfZmxhZ3NcXHUwMDI2SVBWNl9GTF9GX0VYQ0wpXFxuIDY4NDpcXHRcXHRcXHRcXHRcXHRnb3RvIHJlbGVhc2U7XFxuIDY4NTpcXHRcXHRcXHRcXHRlcnIgPSAtRVBFUk07XFxuIDY4NjpcXHRcXHRcXHRcXHRpZiAoZmwxLVxcdTAwM2VzaGFyZSA9PSBJUFY2X0ZMX1NfRVhDTCB8fFxcbiA2ODc6XFx0XFx0XFx0XFx0ICAgIGZsMS1cXHUwMDNlc2hhcmUgIT0gZmwtXFx1MDAzZXNoYXJlIHx8XFxuIDY4ODpcXHRcXHRcXHRcXHQgICAgKChmbDEtXFx1MDAzZXNoYXJlID09IElQVjZfRkxfU19QUk9DRVNTKSBcXHUwMDI2XFx1MDAyNlxcbiA2ODk6XFx0XFx0XFx0XFx0ICAgICAoZmwxLVxcdTAwM2Vvd25lci5waWQgIT0gZmwtXFx1MDAzZW93bmVyLnBpZCkpIHx8XFxuIDY5MDpcXHRcXHRcXHRcXHQgICAgKChmbDEtXFx1MDAzZXNoYXJlID09IElQVjZfRkxfU19VU0VSKSBcXHUwMDI2XFx1MDAyNlxcbiA2OTE6XFx0XFx0XFx0XFx0ICAgICAhdWlkX2VxKGZsMS1cXHUwMDNlb3duZXIudWlkLCBmbC1cXHUwMDNlb3duZXIudWlkKSkpXFxuIDY5MjpcXHRcXHRcXHRcXHRcXHRnb3RvIHJlbGVhc2U7XFxuIDY5MzpcXHRcXG4gNjk0OlxcdFxcdFxcdFxcdGVyciA9IC1FTk9NRU07XFxuIDY5NTpcXHRcXHRcXHRcXHRpZiAoIXNmbDEpXFxuIDY5NjpcXHRcXHRcXHRcXHRcXHRnb3RvIHJlbGVhc2U7XFxuIDY5NzpcXHRcXHRcXHRcXHRlcnIgPSAtRU5PQlVGUztcXG4gNjk4OlxcdFxcdFxcdFxcdGlmIChmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KHNrKSBcXHUwMDI2XFx1MDAyNlxcbiA2OTk6XFx0XFx0XFx0XFx0ICAgICFjYXBhYmxlKENBUF9ORVRfQURNSU4pKVxcbiA3MDA6XFx0XFx0XFx0XFx0XFx0Z290byByZWxlYXNlO1xcbiA3MDE6XFx0XFx0XFx0XFx0aWYgKGZsLVxcdTAwM2VsaW5nZXIgXFx1MDAzZSBmbDEtXFx1MDAzZWxpbmdlcilcXG4gNzAyOlxcdFxcdFxcdFxcdFxcdGZsMS1cXHUwMDNlbGluZ2VyID0gZmwtXFx1MDAzZWxpbmdlcjtcXG4gNzAzOlxcdFxcdFxcdFxcdGlmICgobG9uZykoZmwtXFx1MDAzZWV4cGlyZXMgLSBmbDEtXFx1MDAzZWV4cGlyZXMpIFxcdTAwM2UgMClcXG4gNzA0OlxcdFxcdFxcdFxcdFxcdGZsMS1cXHUwMDNlZXhwaXJlcyA9IGZsLVxcdTAwM2VleHBpcmVzO1xcbiA3MDU6XFx0XFx0XFx0XFx0ZmxfbGluayhzaywgc2ZsMSwgZmwxKTtcXG4gNzA2OlxcdFxcdFxcdFxcdGZsX2ZyZWUoZmwpO1xcbiA3MDc6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDcwODpcXHRcXG4gNzA5OlxcdHJlbGVhc2U6XFxuIDcxMDpcXHRcXHRcXHRcXHRmbF9yZWxlYXNlKGZsMSk7XFxuIDcxMTpcXHRcXHRcXHRcXHRnb3RvIGRvbmU7XFxuIDcxMjpcXHRcXHRcXHR9XFxuIDcxMzpcXHRcXHR9XFxuIDcxNDpcXHRcXHRlcnIgPSAtRU5PRU5UO1xcbiA3MTU6XFx0XFx0aWYgKCEoZnJlcS1cXHUwMDNlZmxyX2ZsYWdzIFxcdTAwMjYgSVBWNl9GTF9GX0NSRUFURSkpXFxuIDcxNjpcXHRcXHRcXHRnb3RvIGRvbmU7XFxuIDcxNzpcXHRcXG4gNzE4OlxcdFxcdGVyciA9IC1FTk9NRU07XFxuIDcxOTpcXHRcXHRpZiAoIXNmbDEpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA2OjA3OjU0LjAxMzYxMDY5N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE5NzYxMTcyMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJUHY2IEZsb3cgTGFiZWwgTWFuYWdlbWVudCBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGlwdjZfZmxvd2xhYmVsX2dldGAuIFRoaXMgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkIHNwZWNpZmljYWxseSB3aGVuIGEgdXNlcnNwYWNlIGFwcGxpY2F0aW9uIHVzZXMgYHNldHNvY2tvcHRgIHdpdGggdGhlIGBJUFY2X0ZMT1dMQUJFTF9NR1JgIG9wdGlvbiBvbiBhbiBJUHY2IHNvY2tldC4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gV2hlcmUgZXhhY3RseSBpcyBgaXA2X2Zsb3dsYWJlbC5jYCBjb21waWxlZD8gQW5kIG1vcmUgaW1wb3J0YW50bHksIHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGNvbnRyb2wgaXRzIGluY2x1c2lvbiBvciBleGNsdXNpb24gZHVyaW5nIHRoZSBrZXJuZWwgYnVpbGQ/IEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcyB0byBzZWUgd2hhdCBmZWF0dXJlcyBvciBtb2R1bGVzIHJlbHkgb24gaXQgYW5kIHVuZGVyIHdoYXQgY29uZGl0aW9ucyBpdCdzIGVuYWJsZWQuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGltcGFjdCBvbiBvdGhlciBwYXJ0cyBvZiB0aGUgbmV0d29yayBzdGFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkwNywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIiwicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDc6NTUuOTg5NzMwNTA4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0OTk1NjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwNl9mbG93bGFiZWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L01ha2VmaWxlPTg9aXB2Ni15IDo9XFx0YWZfaW5ldDYubyBhbnljYXN0Lm8gaXA2X291dHB1dC5vIGlwNl9pbnB1dC5vIGFkZHJjb25mLm8gXFxcXFxcbi0tXFxubmV0L2lwdjYvTWFrZWZpbGUtMTEtXFx0XFx0cmF3Lm8gaWNtcC5vIG1jYXN0Lm8gcmVhc3NlbWJseS5vIHRjcF9pcHY2Lm8gcGluZy5vIFxcXFxcXG5uZXQvaXB2Ni9NYWtlZmlsZToxMjpcXHRcXHRleHRoZHJzLm8gZGF0YWdyYW0ubyBpcDZfZmxvd2xhYmVsLm8gaW5ldDZfY29ubmVjdGlvbl9zb2NrLm8gXFxcXFxcbm5ldC9pcHY2L01ha2VmaWxlLTEzLVxcdFxcdHVkcF9vZmZsb2FkLm8gc2VnNi5vIGZpYjZfbm90aWZpZXIubyBycGwubyBpb2FtNi5vXFxuLS1cXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jPTk5OT1zdGF0aWMgaW50IF9faW5pdCBpbmV0Nl9pbml0KHZvaWQpXFxuLS1cXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTEwODUtXFx0XFx0Z290byBuZGlzY19sYXRlX2ZhaWw7XFxubmV0L2lwdjYvYWZfaW5ldDYuYzoxMDg2OlxcdGVyciA9IGlwNl9mbG93bGFiZWxfaW5pdCgpO1xcbm5ldC9pcHY2L2FmX2luZXQ2LmMtMTA4Ny1cXHRpZiAoZXJyKVxcbm5ldC9pcHY2L2FmX2luZXQ2LmM6MTA4ODpcXHRcXHRnb3RvIGlwNl9mbG93bGFiZWxfZmFpbDtcXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTEwODktXFx0ZXJyID0gaXB2Nl9hbnljYXN0X2luaXQoKTtcXG4tLVxcbm5ldC9pcHY2L2FmX2luZXQ2LmMtMTE4NS1pcHY2X2FueWNhc3RfZmFpbDpcXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jOjExODY6XFx0aXA2X2Zsb3dsYWJlbF9jbGVhbnVwKCk7XFxubmV0L2lwdjYvYWZfaW5ldDYuYzoxMTg3OmlwNl9mbG93bGFiZWxfZmFpbDpcXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTExODgtXFx0bmRpc2NfbGF0ZV9jbGVhbnVwKCk7XFxuLS1cXG5uZXQvaXB2Ni9kYXRhZ3JhbS5jPTcyPWludCBpcDZfZGF0YWdyYW1fZHN0X3VwZGF0ZShzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgZml4X3NrX3NhZGRyKVxcbm5ldC9pcHY2L2RhdGFncmFtLmMtNzMte1xcbm5ldC9pcHY2L2RhdGFncmFtLmM6NzQ6XFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsb3dsYWJlbCA9IE5VTEw7XFxubmV0L2lwdjYvZGF0YWdyYW0uYy03NS1cXHRzdHJ1Y3QgaW5ldF9zb2NrICppbmV0ID0gaW5ldF9zayhzayk7XFxuLS1cXG5uZXQvaXB2Ni9pY21wLmM9OTIxPXN0YXRpYyBlbnVtIHNrYl9kcm9wX3JlYXNvbiBpY21wdjZfZWNob19yZXBseShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjYvaWNtcC5jLTk2NC1cXHQgICAgRkxPV0xBQkVMX1JFRkxFQ1RfSUNNUFY2X0VDSE9fUkVQTElFUylcXG5uZXQvaXB2Ni9pY21wLmM6OTY1OlxcdFxcdGZsNi5mbG93bGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlwdjZfaGRyKHNrYikpO1xcbm5ldC9pcHY2L2ljbXAuYy05NjYtXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMi0vKlxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzozOiAqXFx0aXA2X2Zsb3dsYWJlbC5jXFx0XFx0SVB2NiBmbG93bGFiZWwgbWFuYWdlci5cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNC0gKlxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTQzPXN0YXRpYyBpbnQgZmxfc2l6ZTtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NDQ6c3RhdGljIHN0cnVjdCBpcDZfZmxvd2xhYmVsIF9fcmN1ICpmbF9odFtGTF9IQVNIX01BU0srMV07XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTQ1LVxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTU4PUVYUE9SVF9TWU1CT0woaXB2Nl9mbG93bGFiZWxfZXhjbHVzaXZlKTtcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03My1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NzQ6c3RhdGljIGlubGluZSBzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqX19mbF9sb29rdXAoc3RydWN0IG5ldCAqbmV0LCBfX2JlMzIgbGFiZWwpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTc1LXtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NzY6XFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsO1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03Ny1cXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy04NC1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6ODU6c3RhdGljIHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbF9sb29rdXAoc3RydWN0IG5ldCAqbmV0LCBfX2JlMzIgbGFiZWwpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTg2LXtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6ODc6XFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsO1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy04OC1cXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05Ni1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTc6c3RhdGljIGJvb2wgZmxfc2hhcmVkX2V4Y2x1c2l2ZShzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmwpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTk4LXtcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz0xMDQ9c3RhdGljIHZvaWQgZmxfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpoZWFkKVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0xMDUte1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoxMDY6XFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsID0gY29udGFpbmVyX29mKGhlYWQsIHN0cnVjdCBpcDZfZmxvd2xhYmVsLCByY3UpO1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0xMDctXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMTE0LVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoxMTU6c3RhdGljIHZvaWQgZmxfZnJlZShzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmwpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTExNi17XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMTI1LVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoxMjY6c3RhdGljIHZvaWQgZmxfcmVsZWFzZShzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmwpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTEyNy17XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9MTQzPXN0YXRpYyB2b2lkIGlwNl9mbF9nYyhzdHJ1Y3QgdGltZXJfbGlzdCAqdW51c2VkKVxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTE1MS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2M9IEZMX0hBU0hfTUFTSzsgaSsrKSB7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjE1MjpcXHRcXHRzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmw7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjE1MzpcXHRcXHRzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCBfX3JjdSAqKmZscDtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMTU0LVxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTE4ND1zdGF0aWMgdm9pZCBfX25ldF9leGl0IGlwNl9mbF9wdXJnZShzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMTg5LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYz0gRkxfSEFTSF9NQVNLOyBpKyspIHtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MTkwOlxcdFxcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbDtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MTkxOlxcdFxcdHN0cnVjdCBpcDZfZmxvd2xhYmVsIF9fcmN1ICoqZmxwO1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0xOTItXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMjA5LVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoyMTA6c3RhdGljIHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbF9pbnRlcm4oc3RydWN0IG5ldCAqbmV0LFxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoyMTE6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCwgX19iZTMyIGxhYmVsKVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0yMTIte1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoyMTM6XFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmxmbDtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMjE0LVxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTI1NS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MjU2OnN0cnVjdCBpcDZfZmxvd2xhYmVsICpfX2ZsNl9zb2NrX2xvb2t1cChzdHJ1Y3Qgc29jayAqc2ssIF9fYmUzMiBsYWJlbClcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMjU3LXtcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0yNjMtXFx0Zm9yX2VhY2hfc2tfZmxfcmN1KHNrLCBzZmwpIHtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MjY0OlxcdFxcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCA9IHNmbC1cXHUwMDNlZmw7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTI2NS1cXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz0zMDg9c3RydWN0IGlwdjZfdHhvcHRpb25zICpmbDZfbWVyZ2Vfb3B0aW9ucyhzdHJ1Y3QgaXB2Nl90eG9wdGlvbnMgKm9wdF9zcGFjZSxcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MzA5OlxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmwsXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTMxMC1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IGlwdjZfdHhvcHRpb25zICpmb3B0KVxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTMzNz1zdGF0aWMgdW5zaWduZWQgbG9uZyBjaGVja19saW5nZXIodW5zaWduZWQgbG9uZyB0dGwpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMzQ1LVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzozNDY6c3RhdGljIGludCBmbDZfcmVuZXcoc3RydWN0IGlwNl9mbG93bGFiZWwgKmZsLCB1bnNpZ25lZCBsb25nIGxpbmdlciwgdW5zaWduZWQgbG9uZyBleHBpcmVzKVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0zNDcte1xcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTM2Ny1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6MzY4OnN0YXRpYyBzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTM2OS1mbF9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpbjZfZmxvd2xhYmVsX3JlcSAqZnJlcSxcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0zNzEte1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzozNzI6XFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsID0gTlVMTDtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtMzczLVxcdGludCBvbGVuO1xcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTUxMT1zdGF0aWMgaW5saW5lIHZvaWQgZmxfbGluayhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpcHY2X2ZsX3NvY2tsaXN0ICpzZmwsXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjUxMjpcXHRcXHRcXHQgICBzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmwpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTUxMy17XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9NTk4PXN0YXRpYyBpbnQgaXB2Nl9mbG93bGFiZWxfcmVuZXcoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaW42X2Zsb3dsYWJlbF9yZXEgKmZyZXEpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNjE2LVxcdCAgICBuc19jYXBhYmxlKG5ldC1cXHUwMDNldXNlcl9ucywgQ0FQX05FVF9BRE1JTikpIHtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NjE3OlxcdFxcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCA9IGZsX2xvb2t1cChuZXQsIGZyZXEtXFx1MDAzZWZscl9sYWJlbCk7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTYxOC1cXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz02Mjk9c3RhdGljIGludCBpcHY2X2Zsb3dsYWJlbF9nZXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaW42X2Zsb3dsYWJlbF9yZXEgKmZyZXEsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNjMyLVxcdHN0cnVjdCBpcHY2X2ZsX3NvY2tsaXN0ICpzZmwsICpzZmwxID0gTlVMTDtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NjMzOlxcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCwgKmZsMSA9IE5VTEw7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTYzNC1cXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9Nzc4PXN0cnVjdCBpcDZmbF9pdGVyX3N0YXRlIHtcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03ODUtXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjc4NjpzdGF0aWMgc3RydWN0IGlwNl9mbG93bGFiZWwgKmlwNmZsX2dldF9maXJzdChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNzg3LXtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6Nzg4OlxcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbCA9IE5VTEw7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTc4OS1cXHRzdHJ1Y3QgaXA2ZmxfaXRlcl9zdGF0ZSAqc3RhdGUgPSBpcDZmbF9zZXFfcHJpdmF0ZShzZXEpO1xcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTgwMi1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6ODAzOnN0YXRpYyBzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqaXA2ZmxfZ2V0X25leHQoc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbClcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODA0LXtcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy04MjYtXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjgyNzpzdGF0aWMgc3RydWN0IGlwNl9mbG93bGFiZWwgKmlwNmZsX2dldF9pZHgoc3RydWN0IHNlcV9maWxlICpzZXEsIGxvZmZfdCBwb3MpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTgyOC17XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjgyOTpcXHRzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmwgPSBpcDZmbF9nZXRfZmlyc3Qoc2VxKTtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODMwLVxcdGlmIChmbClcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz04NDc9c3RhdGljIHZvaWQgKmlwNmZsX3NlcV9uZXh0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2LCBsb2ZmX3QgKnBvcylcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODQ4LXtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6ODQ5OlxcdHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbDtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODUwLVxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTg2NT1zdGF0aWMgaW50IGlwNmZsX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTg3MC1cXHR9IGVsc2Uge1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo4NzE6XFx0XFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsID0gdjtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODcyLVxcdFxcdHNlcV9wcmludGYoc2VxLFxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTg5MD1zdGF0aWMgY29uc3Qgc3RydWN0IHNlcV9vcGVyYXRpb25zIGlwNmZsX3NlcV9vcHMgPSB7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODk2LVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo4OTc6c3RhdGljIGludCBfX25ldF9pbml0IGlwNl9mbG93bGFiZWxfcHJvY19pbml0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtODk4LXtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6ODk5OlxcdGlmICghcHJvY19jcmVhdGVfbmV0KFxcXCJpcDZfZmxvd2xhYmVsXFxcIiwgMDQ0NCwgbmV0LVxcdTAwM2Vwcm9jX25ldCxcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTAwLVxcdFxcdFxcdFxcdTAwMjZpcDZmbF9zZXFfb3BzLCBzaXplb2Yoc3RydWN0IGlwNmZsX2l0ZXJfc3RhdGUpKSlcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05MDQtXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkwNTpzdGF0aWMgdm9pZCBfX25ldF9leGl0IGlwNl9mbG93bGFiZWxfcHJvY19maW5pKHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTA2LXtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTA3OlxcdHJlbW92ZV9wcm9jX2VudHJ5KFxcXCJpcDZfZmxvd2xhYmVsXFxcIiwgbmV0LVxcdTAwM2Vwcm9jX25ldCk7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkwOC19XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkwOS0jZWxzZVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo5MTA6c3RhdGljIGlubGluZSBpbnQgaXA2X2Zsb3dsYWJlbF9wcm9jX2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05MTEte1xcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkxMy19XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkxNDpzdGF0aWMgaW5saW5lIHZvaWQgaXA2X2Zsb3dsYWJlbF9wcm9jX2Zpbmkoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05MTUte1xcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkxOC1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTE5OnN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgaXA2X2Zsb3dsYWJlbF9uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkyMC17XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkyMS1cXHRpcDZfZmxfcHVyZ2UobmV0KTtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTIyOlxcdGlwNl9mbG93bGFiZWxfcHJvY19maW5pKG5ldCk7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkyMy19XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkyNC1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTI1OnN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgaXA2X2Zsb3dsYWJlbF9uZXRfb3BzID0ge1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo5MjY6XFx0LmluaXQgPSBpcDZfZmxvd2xhYmVsX3Byb2NfaW5pdCxcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTI3OlxcdC5leGl0ID0gaXA2X2Zsb3dsYWJlbF9uZXRfZXhpdCxcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTI4LX07XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkyOS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTMwOmludCBpcDZfZmxvd2xhYmVsX2luaXQodm9pZClcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtOTMxLXtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6OTMyOlxcdHJldHVybiByZWdpc3Rlcl9wZXJuZXRfc3Vic3lzKFxcdTAwMjZpcDZfZmxvd2xhYmVsX25ldF9vcHMpO1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05MzMtfVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05MzQtXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkzNTp2b2lkIGlwNl9mbG93bGFiZWxfY2xlYW51cCh2b2lkKVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05MzYte1xcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkzOC1cXHR0aW1lcl9kZWxldGUoXFx1MDAyNmlwNl9mbF9nY190aW1lcik7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkzOTpcXHR1bnJlZ2lzdGVyX3Blcm5ldF9zdWJzeXMoXFx1MDAyNmlwNl9mbG93bGFiZWxfbmV0X29wcyk7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTk0MC19XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9NjMzPXN0YXRpYyBpbnQgcHJlcGFyZV9pcDZncmVfeG1pdF9pcHY2KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtNjY3LVxcdGlmICh0LVxcdTAwM2VwYXJtcy5mbGFncyBcXHUwMDI2IElQNl9UTkxfRl9VU0VfT1JJR19GTE9XTEFCRUwpXFxubmV0L2lwdjYvaXA2X2dyZS5jOjY2ODpcXHRcXHRmbDYtXFx1MDAzZWZsb3dsYWJlbCB8PSBpcDZfZmxvd2xhYmVsKGlwdjZoKTtcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtNjY5LVxcbi0tXFxubmV0L2lwdjYvaXA2X3R1bm5lbC5jPTEyOTc9aXB4aXA2X3RubF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfdHVubmVsLmMtMTM4OC1cXHRcXHRcXHRpZiAodC1cXHUwMDNlcGFybXMuZmxhZ3MgXFx1MDAyNiBJUDZfVE5MX0ZfVVNFX09SSUdfRkxPV0xBQkVMKVxcbm5ldC9pcHY2L2lwNl90dW5uZWwuYzoxMzg5OlxcdFxcdFxcdFxcdGZsNi5mbG93bGFiZWwgfD0gaXA2X2Zsb3dsYWJlbChpcHY2aCk7XFxubmV0L2lwdjYvaXA2X3R1bm5lbC5jLTEzOTAtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvaXB2Ni9yYXcuYz03NDI9c3RhdGljIGludCByYXd2Nl9zZW5kbXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKVxcbi0tXFxubmV0L2lwdjYvcmF3LmMtNzUxLVxcdHN0cnVjdCBpcHY2X3R4b3B0aW9ucyAqb3B0ID0gTlVMTDtcXG5uZXQvaXB2Ni9yYXcuYzo3NTI6XFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsb3dsYWJlbCA9IE5VTEw7XFxubmV0L2lwdjYvcmF3LmMtNzUzLVxcdHN0cnVjdCBkc3RfZW50cnkgKmRzdCA9IE5VTEw7XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTIzNjc9c3RhdGljIHZvaWQgaXA2X211bHRpcGF0aF9sM19rZXlzKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTI0MDYtXFx0XFx0a2V5cy1cXHUwMDNlYWRkcnMudjZhZGRycy5kc3QgPSBrZXlfaXBoLVxcdTAwM2VkYWRkcjtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjI0MDc6XFx0XFx0a2V5cy1cXHUwMDNldGFncy5mbG93X2xhYmVsID0gaXA2X2Zsb3dsYWJlbChrZXlfaXBoKTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTI0MDgtXFx0XFx0a2V5cy1cXHUwMDNlYmFzaWMuaXBfcHJvdG8gPSBrZXlfaXBoLVxcdTAwM2VuZXh0aGRyO1xcbi0tXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jPTEyND1zdGF0aWMgX19iZTMyIHNlZzZfbWFrZV9mbG93bGFiZWwoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjYvc2VnNl9pcHR1bm5lbC5jLTEzNS1cXHR9IGVsc2UgaWYgKCFkb19mbG93bGFiZWwgXFx1MDAyNlxcdTAwMjYgc2tiLVxcdTAwM2Vwcm90b2NvbCA9PSBodG9ucyhFVEhfUF9JUFY2KSkge1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYzoxMzY6XFx0XFx0Zmxvd2xhYmVsID0gaXA2X2Zsb3dsYWJlbChpbm5lcl9oZHIpO1xcbm5ldC9pcHY2L3NlZzZfaXB0dW5uZWwuYy0xMzctXFx0fVxcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz0xMzM9c3RhdGljIGludCB0Y3BfdjZfY29ubmVjdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICp1YWRkcixcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTYyLVxcdFxcdGlmIChmbDYtXFx1MDAzZWZsb3dsYWJlbCBcXHUwMDI2IElQVjZfRkxPV0xBQkVMX01BU0spIHtcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjE2MzpcXHRcXHRcXHRzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmxvd2xhYmVsO1xcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTY0LVxcdFxcdFxcdGZsb3dsYWJlbCA9IGZsNl9zb2NrX2xvb2t1cChzaywgZmw2LVxcdTAwM2VmbG93bGFiZWwpO1xcbi0tXFxubmV0L2lwdjYvdGNwX2lwdjYuYz01NTA9c3RhdGljIGludCB0Y3BfdjZfc2VuZF9zeW5hY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTU3OC1cXHRcXHRpZiAoaW5ldDZfdGVzdF9iaXQoUkVQRkxPVywgc2spIFxcdTAwMjZcXHUwMDI2IGlyZXEtXFx1MDAzZXBrdG9wdHMpXFxubmV0L2lwdjYvdGNwX2lwdjYuYzo1Nzk6XFx0XFx0XFx0Zmw2LVxcdTAwM2VmbG93bGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlwdjZfaGRyKGlyZXEtXFx1MDAzZXBrdG9wdHMpKTtcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTU4MC1cXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM9MTAwNT1zdGF0aWMgdm9pZCB0Y3BfdjZfc2VuZF9yZXNldChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTExMTEtXFx0XFx0XFx0aWYgKGluZXQ2X3Rlc3RfYml0KFJFUEZMT1csIHNrKSlcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjExMTI6XFx0XFx0XFx0XFx0bGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlwdjZoKTtcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTExMTMtXFx0XFx0XFx0cHJpb3JpdHkgPSBSRUFEX09OQ0Uoc2stXFx1MDAzZXNrX3ByaW9yaXR5KTtcXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTEyMy1cXHRcXHQgICAgRkxPV0xBQkVMX1JFRkxFQ1RfVENQX1JFU0VUKVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM6MTEyNDpcXHRcXHRcXHRsYWJlbCA9IGlwNl9mbG93bGFiZWwoaXB2NmgpO1xcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTEyNS1cXHR9XFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jPTEzODI9c3RhdGljIHN0cnVjdCBzb2NrICp0Y3BfdjZfc3luX3JlY3Zfc29jayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE0NjAtXFx0aWYgKGluZXQ2X3Rlc3RfYml0KFJFUEZMT1csIHNrKSlcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjE0NjE6XFx0XFx0bmV3bnAtXFx1MDAzZWZsb3dfbGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlwdjZfaGRyKHNrYikpO1xcbm5ldC9pcHY2L3RjcF9pcHY2LmMtMTQ2Mi1cXG4tLVxcbm5ldC9pcHY2L3RjcF9pcHY2LmM9MTU2Nz1pbnQgdGNwX3Y2X2RvX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE2OTItXFx0XFx0aWYgKGluZXQ2X3Rlc3RfYml0KFJFUEZMT1csIHNrKSlcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jOjE2OTM6XFx0XFx0XFx0bnAtXFx1MDAzZWZsb3dfbGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlwdjZfaGRyKG9wdF9za2IpKTtcXG5uZXQvaXB2Ni90Y3BfaXB2Ni5jLTE2OTQtXFx0XFx0aWYgKGlwdjZfb3B0X2FjY2VwdGVkKHNrLCBvcHRfc2tiLCBcXHUwMDI2VENQX1NLQl9DQihvcHRfc2tiKS1cXHUwMDNlaGVhZGVyLmg2KSkge1xcbi0tXFxubmV0L2lwdjYvdWRwLmM9MTQ3Mj1pbnQgdWRwdjZfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbilcXG4tLVxcbm5ldC9pcHY2L3VkcC5jLTE0NzctXFx0c3RydWN0IGluNl9hZGRyICpkYWRkciwgKmZpbmFsX3AsIGZpbmFsO1xcbm5ldC9pcHY2L3VkcC5jOjE0Nzg6XFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsb3dsYWJlbCA9IE5VTEw7XFxubmV0L2lwdjYvdWRwLmMtMTQ3OS1cXHRzdHJ1Y3QgaW5ldF9zb2NrICppbmV0ID0gaW5ldF9zayhzayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA2OjA3OjU2LjAzNDczMTEwNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMzNTcwMDU0ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgdGhlIElQdjYgRmxvdyBMYWJlbCBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBpcDZfZmxvd2xhYmVsLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGVyZSBkb2VzIHRoaXMgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlP1wiIEkga25vdyB0aGF0IHRoaXMgZmlsZSBpcyBkZWZpbml0ZWx5IHRpZWQgdG8gYGlwdjYteWAsIHdoaWNoLCBpbiB0dXJuLCBpcyBjb21waWxlZCBvbmx5IHdoZW4gYENPTkZJR19JUFY2YCBpcyBzZXQuIEdpdmVuIHRoYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb25maWd1cmF0aW9uLiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGBuZXQvaXB2Ni9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIElQdjYgY29uZmlndXJhdGlvbiBvcHRpb25zIGluZmx1ZW5jZSB0aGUgaW5jbHVzaW9uIG9mIHRoaXMgc3BlY2lmaWMgZmxvdyBsYWJlbCBjb2RlLiBLbm93aW5nIHRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGFuZCBvdmVyYWxsIHJvbGUgdGhpcyBtb2R1bGUgcGxheXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzE4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDc6NTkuMzkxNzM4OTgyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDAxODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUFY2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9LY29uZmlnLTUtXFxubmV0L2lwdjYvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBWNlxcbm5ldC9pcHY2L0tjb25maWctNy1cXHRib29sIFxcXCJUaGUgSVB2NiBwcm90b2NvbFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTk9aWYgSVBWNlxcbm5ldC9pcHY2L0tjb25maWctMjAtXFxubmV0L2lwdjYvS2NvbmZpZzoyMTpjb25maWcgSVBWNl9ST1VURVJfUFJFRlxcbm5ldC9pcHY2L0tjb25maWctMjItXFx0Ym9vbCBcXFwiSVB2NjogUm91dGVyIFByZWZlcmVuY2UgKFJGQyA0MTkxKSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMC1cXG5uZXQvaXB2Ni9LY29uZmlnOjMxOmNvbmZpZyBJUFY2X1JPVVRFX0lORk9cXG5uZXQvaXB2Ni9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIklQdjY6IFJvdXRlIEluZm9ybWF0aW9uIChSRkMgNDE5MSkgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzgtXFxubmV0L2lwdjYvS2NvbmZpZzozOTpjb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxcbm5ldC9pcHY2L0tjb25maWctNDAtXFx0Ym9vbCBcXFwiSVB2NjogRW5hYmxlIFJGQyA0NDI5IE9wdGltaXN0aWMgREFEXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xMDI9Y29uZmlnIElORVQ2X0lQQ09NUFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xMTEtXFxubmV0L2lwdjYvS2NvbmZpZzoxMTI6Y29uZmlnIElQVjZfTUlQNlxcbm5ldC9pcHY2L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBNb2JpbGl0eVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTE5LVxcbm5ldC9pcHY2L0tjb25maWc6MTIwOmNvbmZpZyBJUFY2X0lMQVxcbm5ldC9pcHY2L0tjb25maWctMTIxLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJZGVudGlmaWVyIExvY2F0b3IgQWRkcmVzc2luZyAoSUxBKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTQ2PWNvbmZpZyBJTkVUNl9UVU5ORUxcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTQ5LVxcbm5ldC9pcHY2L0tjb25maWc6MTUwOmNvbmZpZyBJUFY2X1ZUSVxcbm5ldC9pcHY2L0tjb25maWctMTUxLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIChzZWN1cmUpIElQdjY6IHR1bm5lbGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTYxLVxcbm5ldC9pcHY2L0tjb25maWc6MTYyOmNvbmZpZyBJUFY2X1NJVFxcbm5ldC9pcHY2L0tjb25maWctMTYzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJUHY2LWluLUlQdjQgdHVubmVsIChTSVQgZHJpdmVyKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTc2LVxcbm5ldC9pcHY2L0tjb25maWc6MTc3OmNvbmZpZyBJUFY2X1NJVF82UkRcXG5uZXQvaXB2Ni9LY29uZmlnLTE3OC1cXHRib29sIFxcXCJJUHY2OiBJUHY2IFJhcGlkIERlcGxveW1lbnQgKDZSRClcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE5NS1cXG5uZXQvaXB2Ni9LY29uZmlnOjE5Njpjb25maWcgSVBWNl9ORElTQ19OT0RFVFlQRVxcbm5ldC9pcHY2L0tjb25maWctMTk3LVxcdGJvb2xcXG5uZXQvaXB2Ni9LY29uZmlnLTE5OC1cXG5uZXQvaXB2Ni9LY29uZmlnOjE5OTpjb25maWcgSVBWNl9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogSVAtaW4tSVB2NiB0dW5uZWwgKFJGQzI0NzMpXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMDktXFxubmV0L2lwdjYvS2NvbmZpZzoyMTA6Y29uZmlnIElQVjZfR1JFXFxubmV0L2lwdjYvS2NvbmZpZy0yMTEtXFx0dHJpc3RhdGUgXFxcIklQdjY6IEdSRSB0dW5uZWxcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIyNy1cXG5uZXQvaXB2Ni9LY29uZmlnOjIyODpjb25maWcgSVBWNl9GT1VcXG5uZXQvaXB2Ni9LY29uZmlnLTIyOS1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMzEtXFxubmV0L2lwdjYvS2NvbmZpZzoyMzI6Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjMzLVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIzNi1cXG5uZXQvaXB2Ni9LY29uZmlnOjIzNzpjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2Ni9LY29uZmlnLTIzOC1cXHRib29sIFxcXCJJUHY2OiBNdWx0aXBsZSBSb3V0aW5nIFRhYmxlc1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjQyLVxcbm5ldC9pcHY2L0tjb25maWc6MjQzOmNvbmZpZyBJUFY2X1NVQlRSRUVTXFxubmV0L2lwdjYvS2NvbmZpZy0yNDQtXFx0Ym9vbCBcXFwiSVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjU2LVxcbm5ldC9pcHY2L0tjb25maWc6MjU3OmNvbmZpZyBJUFY2X01ST1VURVxcbm5ldC9pcHY2L0tjb25maWctMjU4LVxcdGJvb2wgXFxcIklQdjY6IG11bHRpY2FzdCByb3V0aW5nXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yNjQtXFxubmV0L2lwdjYvS2NvbmZpZzoyNjU6Y29uZmlnIElQVjZfTVJPVVRFX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY2L0tjb25maWctMjY2LVxcdGJvb2wgXFxcIklQdjY6IG11bHRpY2FzdCBwb2xpY3kgcm91dGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjc4LVxcbm5ldC9pcHY2L0tjb25maWc6Mjc5OmNvbmZpZyBJUFY2X1BJTVNNX1YyXFxubmV0L2lwdjYvS2NvbmZpZy0yODAtXFx0Ym9vbCBcXFwiSVB2NjogUElNLVNNIHZlcnNpb24gMiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yODUtXFxubmV0L2lwdjYvS2NvbmZpZzoyODY6Y29uZmlnIElQVjZfU0VHNl9MV1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjg3LVxcdGJvb2wgXFxcIklQdjY6IFNlZ21lbnQgUm91dGluZyBIZWFkZXIgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yOTktXFxubmV0L2lwdjYvS2NvbmZpZzozMDA6Y29uZmlnIElQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvS2NvbmZpZy0zMDEtXFx0Ym9vbCBcXFwiSVB2NjogU2VnbWVudCBSb3V0aW5nIEhNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzExLVxcbm5ldC9pcHY2L0tjb25maWc6MzEyOmNvbmZpZyBJUFY2X1NFRzZfQlBGXFxubmV0L2lwdjYvS2NvbmZpZy0zMTMtXFx0ZGVmX2Jvb2wgeVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMTYtXFxubmV0L2lwdjYvS2NvbmZpZzozMTc6Y29uZmlnIElQVjZfUlBMX0xXVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0zMTgtXFx0Ym9vbCBcXFwiSVB2NjogUlBMIFNvdXJjZSBSb3V0aW5nIEhlYWRlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMjctXFxubmV0L2lwdjYvS2NvbmZpZzozMjg6Y29uZmlnIElQVjZfSU9BTTZfTFdUVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTMyOS1cXHRib29sIFxcXCJJUHY2OiBJT0FNIFByZS1hbGxvY2F0ZWQgVHJhY2UgaW5zZXJ0aW9uIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA2OjA3OjU5LjQzNzE1NTQzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM3OTM2NDE1NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIGNvZGUgZXhwbG9yYXRpb25zOlxuXG4qKkRpdmluZyBpbnRvIElQdjYgRmxvdyBMYWJlbCBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdXNhZ2UgcGF0dGVybnMgb2YgYSBmZXcga2V5IElQdjYgZmxvdyBsYWJlbCBmdW5jdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwncyBuZXR3b3JrIHN0YWNrLiBJJ20gZm9jdXNpbmcgb24gYGlwdjZfZmxvd2xhYmVsX2dldGAsIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0YCwgYW5kIGBpcHY2X2Zsb3dsYWJlbF9vcHRgIHNwZWNpZmljYWxseSwgYWxsIHJlc2lkaW5nIGluIGBuZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNgLiBXaGF0IEknbSBhZnRlciBpcyBhIGJldHRlciBncmFzcCBvZiAqaG93KiB0aGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCwgKndoZW4qIHRoZXkgYXJlIHVzZWQsIGFuZCBpbiB3aGF0ICpjb250ZXh0KiB3aXRoaW4gdGhlIGJyb2FkZXIgSVB2NiBwYWNrZXQgcHJvY2Vzc2luZyB3b3JrZmxvdy4gQXJlIHRoZXkgcHJpbWFyaWx5IGludm9sdmVkIGluIHNvY2tldCBjcmVhdGlvbiwgcGFja2V0IHJvdXRpbmcsIGNvbm5lY3Rpb24gc2V0dXAsIG9yIHBlcmhhcHMgZXZlbiBlcnJvciBoYW5kbGluZyByZWxhdGVkIHRvIGZsb3cgbGFiZWwgZXhoYXVzdGlvbj8gSSBleHBlY3QgSSdsbCBwcm9iYWJseSBhbHNvIGJlIGxvb2tpbmcgYXQgdGhlIGRhdGEgc3RydWN0dXJlcyB0aGV5IG9wZXJhdGUgb24gYW5kIGFueSBhc3NvY2lhdGVkIGxvY2tpbmcvc3luY2hyb25pemF0aW9uIGludm9sdmVkLiBJJ20gZXhwZWN0aW5nIHRoaXMgd2lsbCBpbnZvbHZlIHNvbWUgY29kZSBzcGVsdW5raW5nIGluIHRoaXMgZmlsZSBhbmQgcHJvYmFibHkgb3RoZXJzIGluIHRoZSBgbmV0L2lwdjZgIGRpcmVjdG9yeSB0byBwcm92aWRlIGEgbW9yZSBob2xpc3RpYyB1bmRlcnN0YW5kaW5nIG9mIHRoaXMga2V5IGFyZWEuIEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBzZWVpbmcgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoIHRoZSBmbG93IGxhYmVsIG9wdGlvbiBhbmQgYW55IGxpbWl0cyBpbXBvc2VkIG9uIGZsb3cgbGFiZWwgdXNlIG9uIGEgcGVyLXNvY2tldCBvciBzeXN0ZW0gYmFzaXMuIFRoaXMgaXMgbXkgc3RhcnRpbmcgcG9pbnQgZm9yIGEgZGVlcGVyIGRpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMDk0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDg6MDMuMjMwNzk5ODk5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTAxMDM4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcHY2X2Zsb3dsYWJlbF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz01NT1zdGF0aWMgREVGSU5FX1NQSU5MT0NLKGlwNl9za19mbF9sb2NrKTtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNTYtXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjU3OkRFRklORV9TVEFUSUNfS0VZX0RFRkVSUkVEX0ZBTFNFKGlwdjZfZmxvd2xhYmVsX2V4Y2x1c2l2ZSwgSFopO1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo1ODpFWFBPUlRfU1lNQk9MKGlwdjZfZmxvd2xhYmVsX2V4Y2x1c2l2ZSk7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTU5LVxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jPTExNT1zdGF0aWMgdm9pZCBmbF9mcmVlKHN0cnVjdCBpcDZfZmxvd2xhYmVsICpmbClcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0xMjAtXFx0aWYgKGZsX3NoYXJlZF9leGNsdXNpdmUoZmwpIHx8IGZsLVxcdTAwM2VvcHQpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjEyMTpcXHRcXHRzdGF0aWNfYnJhbmNoX3Nsb3dfZGVjX2RlZmVycmVkKFxcdTAwMjZpcHY2X2Zsb3dsYWJlbF9leGNsdXNpdmUpO1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0xMjItXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9MjEwPXN0YXRpYyBzdHJ1Y3QgaXA2X2Zsb3dsYWJlbCAqZmxfaW50ZXJuKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy0yMzMtXFx0XFx0ICogT1RPSCBubyBuZWVkIHRvIHNlYXJjaCB0aGUgYWN0aXZlIHNvY2tldCBmaXJzdCwgbGlrZSBpdCBpc1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzoyMzQ6XFx0XFx0ICogZG9uZSBpbiBpcHY2X2Zsb3dsYWJlbF9vcHQgLSBzb2NrIGlzIGxvY2tlZCwgc28gbmV3IGVudHJ5XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTIzNS1cXHRcXHQgKiB3aXRoIHRoZSBzYW1lIGxhYmVsIGNhbiBvbmx5IGFwcGVhciBvbiBhbm90aGVyIHNvY2tcXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz0zNjk9ZmxfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaW42X2Zsb3dsYWJlbF9yZXEgKmZyZXEsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNDUwLVxcdFxcdFdSSVRFX09OQ0Uoc29ja19uZXQoc2spLVxcdTAwM2VpcHY2LmZsb3dsYWJlbF9oYXNfZXhjbCwgMSk7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjQ1MTpcXHRcXHRzdGF0aWNfYnJhbmNoX2RlZmVycmVkX2luYyhcXHUwMDI2aXB2Nl9mbG93bGFiZWxfZXhjbHVzaXZlKTtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNDUyLVxcdH1cXG4tLVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYz01MTE9c3RhdGljIGlubGluZSB2b2lkIGZsX2xpbmsoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaXB2Nl9mbF9zb2NrbGlzdCAqc2ZsLFxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTUyMi1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NTIzOmludCBpcHY2X2Zsb3dsYWJlbF9vcHRfZ2V0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGluNl9mbG93bGFiZWxfcmVxICpmcmVxLFxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy01MjQtXFx0XFx0XFx0ICAgaW50IGZsYWdzKVxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTU2Mi1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NTYzOnN0YXRpYyBpbnQgaXB2Nl9mbG93bGFiZWxfcHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGluNl9mbG93bGFiZWxfcmVxICpmcmVxKVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy01NjQte1xcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTU5Ny1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NTk4OnN0YXRpYyBpbnQgaXB2Nl9mbG93bGFiZWxfcmVuZXcoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaW42X2Zsb3dsYWJlbF9yZXEgKmZyZXEpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTU5OS17XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNjI4LVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo2Mjk6c3RhdGljIGludCBpcHY2X2Zsb3dsYWJlbF9nZXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaW42X2Zsb3dsYWJlbF9yZXEgKmZyZXEsXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTYzMC1cXHRcXHRzb2NrcHRyX3Qgb3B0dmFsLCBpbnQgb3B0bGVuKVxcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTc1NC1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NzU1OmludCBpcHY2X2Zsb3dsYWJlbF9vcHQoc3RydWN0IHNvY2sgKnNrLCBzb2NrcHRyX3Qgb3B0dmFsLCBpbnQgb3B0bGVuKVxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03NTYte1xcbi0tXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTc2NS1cXHRjYXNlIElQVjZfRkxfQV9QVVQ6XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjc2NjpcXHRcXHRyZXR1cm4gaXB2Nl9mbG93bGFiZWxfcHV0KHNrLCBcXHUwMDI2ZnJlcSk7XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTc2Ny1cXHRjYXNlIElQVjZfRkxfQV9SRU5FVzpcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM6NzY4OlxcdFxcdHJldHVybiBpcHY2X2Zsb3dsYWJlbF9yZW5ldyhzaywgXFx1MDAyNmZyZXEpO1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy03NjktXFx0Y2FzZSBJUFY2X0ZMX0FfR0VUOlxcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYzo3NzA6XFx0XFx0cmV0dXJuIGlwdjZfZmxvd2xhYmVsX2dldChzaywgXFx1MDAyNmZyZXEsIG9wdHZhbCwgb3B0bGVuKTtcXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMtNzcxLVxcdGRlZmF1bHQ6XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmM9OTM1PXZvaWQgaXA2X2Zsb3dsYWJlbF9jbGVhbnVwKHZvaWQpXFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jLTkzNi17XFxubmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jOjkzNzpcXHRzdGF0aWNfa2V5X2RlZmVycmVkX2ZsdXNoKFxcdTAwMjZpcHY2X2Zsb3dsYWJlbF9leGNsdXNpdmUpO1xcbm5ldC9pcHY2L2lwNl9mbG93bGFiZWwuYy05MzgtXFx0dGltZXJfZGVsZXRlKFxcdTAwMjZpcDZfZmxfZ2NfdGltZXIpO1xcbi0tXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jPTM3Nj1pbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG4tLVxcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy05MjctXFx0Y2FzZSBJUFY2X0ZMT1dMQUJFTF9NR1I6XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjkyODpcXHRcXHRyZXR2ID0gaXB2Nl9mbG93bGFiZWxfb3B0KHNrLCBvcHR2YWwsIG9wdGxlbik7XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTkyOS1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYz0xMDc4PWludCBkb19pcHY2X2dldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbi0tXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTEzNzEtXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjEzNzI6XFx0XFx0dmFsID0gaXB2Nl9mbG93bGFiZWxfb3B0X2dldChzaywgXFx1MDAyNmZyZXEsIGZsYWdzKTtcXG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtMTM3My1cXHRcXHRpZiAodmFsIFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDg6MDMuMjc5ODE0MzI3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ1Njk0NzMyODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFRoaXMgUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFdlJ3ZlIGdvdCBhIHBhdGNoIGluIGBuZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYSBuZXcgZnVuY3Rpb24sIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0YCwgYW5kIHRoZW4gY2FsbGluZyBpdCB3aXRoaW4gYGlwdjZfZmxvd2xhYmVsX2dldGAgZHVyaW5nIHRoZSBmbG93bGFiZWwgbGVhc2luZy9zaGFyaW5nIHByb2Nlc3MuIFNwZWNpZmljYWxseSwgdGhpcyBjaGVjayBpcyBwdXQgaW4gcGxhY2UgdG8gZW5mb3JjZSBgRkxfTUFYX1BFUl9TT0NLYCBmb3IgdW5wcml2aWxlZ2VkIHNvY2tldHMuXG5cblRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIGFsd2F5cywgXCJJcyB0aGlzIHJlYWNoYWJsZSBjb2RlP1wiIEFic29sdXRlbHksIGl0IGlzISBJdCdzIGFjY2Vzc2libGUgdmlhIGBzZXRzb2Nrb3B0YCB3aXRoIGBTT0xfSVBWNmAsIGBJUFY2X0ZMT1dMQUJFTF9NR1JgLCBhbmQgdGhlIGFjdGlvbiBgSVBWNl9GTF9BX0dFVGAuIEV4Y2VsbGVudC4gVGhhdCdzIGEgZGlyZWN0IHVzZXItc3BhY2UgaW50ZXJmYWNlLlxuXG5UaGlzIHBhdGNoIHRvdWNoZXMgdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjaywgc3BlY2lmaWNhbGx5IElQdjYsIGFuZCBpdCdzIGFyY2hpdGVjdHVyZSBhZ25vc3RpYyBpbiBpdHMgYXBwbGljYXRpb24gYXMgaXQgdXNlcyBzdGFuZGFyZCBuZXR3b3JrIHByb3RvY29scy4gVGhlIGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uIGFyZSBgaXB2Nl9mbG93bGFiZWxfb3B0YCwgYGlwdjZfZmxvd2xhYmVsX2dldGAsIGFuZCwgb2YgY291cnNlLCBgZmxfc29ja19hdF9sZWFzZV9saW1pdGAuXG5cbkZyb20gYSBjb25maWd1cmF0aW9uIHBlcnNwZWN0aXZlLCB0aGlzIHJlcXVpcmVzIGBDT05GSUdfSVBWNmAsIHdoaWNoIGlzIGEgcHJldHR5IHN0YW5kYXJkIG9wdGlvbi4gTm8gc3VycHJpc2VzIHRoZXJlLiBEb3VibGUtY2hlY2tpbmcsIGFuZCB5ZXMsIGBJUFY2YCBpcyBhIHN0YW5kYXJkIG1lbnVjb25maWcgaXRlbS5cblxuTm93LCBsZXQncyBhcHBseSB0aGUgZnV6emluZyBydWxlczogRm9jdXNpbmcgb24gbm9uLXViaXF1aXRvdXMga2VybmVsIGZ1bmN0aW9ucz8gVGhlc2UgdGhyZWUgYXJlICpleHRyZW1lbHkqIHNwZWNpZmljIHRvIGZsb3dsYWJlbCBtYW5hZ2VtZW50LCBzbyB0aGV5IGFyZSBhIGdvb2QgZml0LlxuXG5GaW5hbGx5LCBkb2VzIHRoaXMgcGF0Y2ggbWVldCB0aGUgY3JpdGVyaWEgZm9yIGJlaW5nIFwiV29ydGhGdXp6aW5nXCI/IFdlbGwsIGl0IGhpdHMgYWxsIHRoZSBjaGVja2JveGVzOiBpdCdzIGluIGEgY29yZSBzdWJzeXN0ZW0gKG5ldHdvcmtpbmcsIElQdjYpLCBpdCBpbnRyb2R1Y2VzIGxvZ2ljIG1vZGlmaWNhdGlvbnMgKGJvdW5kcyBjaGVja2luZyBhbmQgcmVzb3VyY2UgbGltaXRpbmcpLCAqYW5kKiBpdCdzIHJlYWNoYWJsZSB2aWEgYSB1c2VyLXNwYWNlIHN5c3RlbSBjYWxsIChgc2V0c29ja29wdGApLiBUaGlzIGlzIGEgY2xlYXIgY2FzZSBmb3IgYFdvcnRoRnV6emluZyA9IHRydWVgLlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGZvcm11bGF0ZSB0aGUgcmVhc29uaW5nIGFuZCBzZXQgdGhlIHJlc3VsdHMgYWNjb3JkaW5nbHkuIFRoaXMgaXMgYSBzb2xpZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MDg3LCJPdXRwdXRUb2tlbnMiOjE0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNjowODowNy44NDkyODk4OTVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjQyNTE5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwdjZfZmxvd2xhYmVsX29wdFwiLFxuICAgIFwiaXB2Nl9mbG93bGFiZWxfZ2V0XCIsXG4gICAgXCJmbF9zb2NrX2F0X2xlYXNlX2xpbWl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHBlci1zb2NrZXQgbGltaXQgY2hlY2sgKGZsX3NvY2tfYXRfbGVhc2VfbGltaXQpIHRvIHByZXZlbnQgdW5wcml2aWxlZ2VkIHVzZXJzIGZyb20gYWNxdWlyaW5nIGV4Y2Vzc2l2ZSBmbG93bGFiZWxzIHZpYSBpcHY2X2Zsb3dsYWJlbF9nZXQoKS4gVGhpcyBtb2RpZmllcyBjb3JlIElQdjYgbmV0d29ya2luZyBsb2dpYyBkaXJlY3RseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNldHNvY2tvcHQoU09MX0lQVjYsIElQVjZfRkxPV0xBQkVMX01HUiwgLi4uKSB3aXRoIElQVjZfRkxfQV9HRVQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwdjZfZmxvd2xhYmVsX29wdFwiLFxuICAgIFwiaXB2Nl9mbG93bGFiZWxfZ2V0XCIsXG4gICAgXCJmbF9zb2NrX2F0X2xlYXNlX2xpbWl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHBlci1zb2NrZXQgbGltaXQgY2hlY2sgKGZsX3NvY2tfYXRfbGVhc2VfbGltaXQpIHRvIHByZXZlbnQgdW5wcml2aWxlZ2VkIHVzZXJzIGZyb20gYWNxdWlyaW5nIGV4Y2Vzc2l2ZSBmbG93bGFiZWxzIHZpYSBpcHY2X2Zsb3dsYWJlbF9nZXQoKS4gVGhpcyBtb2RpZmllcyBjb3JlIElQdjYgbmV0d29ya2luZyBsb2dpYyBkaXJlY3RseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNldHNvY2tvcHQoU09MX0lQVjYsIElQVjZfRkxPV0xBQkVMX01HUiwgLi4uKSB3aXRoIElQVjZfRkxfQV9HRVQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA2OjA4OjA3LjkzNTcyMzA5MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1NDkyMTc4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNjowODowNy45MzYyODcyNTFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxODU0ODY0ODI0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBgZmxfc29ja19hdF9sZWFzZV9saW1pdCgpYCBhbmQgYWRkcyBhbiBgRkxfTUFYX1BFUl9TT0NLYCBjYXBhY2l0eSBjaGVjayB3aGVuIGF0dGFjaGluZy9sZWFzaW5nIGV4aXN0aW5nIElQdjYgZmxvdyBsYWJlbHMgaW4gYGlwdjZfZmxvd2xhYmVsX2dldCgpYC4gXFxuXFxuVGhlIGNoYW5nZXMgb25seSBpbnRyb2R1Y2UgYSBjb3VudGVyLWJhc2VkIGxvb3AgaXRlcmF0aW5nIG92ZXIgYW4gZXhpc3RpbmcgUkNVLXByb3RlY3RlZCBsaXN0IGFuZCBhbiBlcnJvciBicmFuY2ggKGAtRU5PQlVGU2ApIHVuZGVyIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KClgLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBhbGxvY2F0ZWQsIHJlYWQsIG9yIGNvcGllZCB0byB1c2VyIHNwYWNlLCBub3IgYXJlIGFueSBidWZmZXIgbGVuZ3RocyBvciBkYXRhIHN0cnVjdHVyZXMgbW9kaWZpZWQgaW4gYSB3YXkgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBkYXRhLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGQ4ODhlYmEzMDk3NTJhZDgzNmYzYzY1OTExODQzYWFiMzJjODY0Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMDY6MDc6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmMgYi9uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNcbmluZGV4IDFhYjVhZDBkY2YyNGYuLjAwNjU4NWRjOGI1YzYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9pcDZfZmxvd2xhYmVsLmNcbisrKyBiL25ldC9pcHY2L2lwNl9mbG93bGFiZWwuY1xuQEAgLTQ2MSw2ICs0NjEsMjEgQEAgZmxfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgaW42X2Zsb3dsYWJlbF9yZXEgKmZyZXEsXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4rc3RhdGljIGJvb2wgZmxfc29ja19hdF9sZWFzZV9saW1pdChjb25zdCBzdHJ1Y3Qgc29jayAqc2spXG4re1xuK1x0Y29uc3Qgc3RydWN0IGlwdjZfZmxfc29ja2xpc3QgKnNmbDtcbitcdGludCBjb3VudCA9IDA7XG4rXG4rXHRyY3VfcmVhZF9sb2NrKCk7XG4rXHRmb3JfZWFjaF9za19mbF9yY3Uoc2ssIHNmbCkge1xuK1x0XHRpZiAoKytjb3VudCBcdTAwM2U9IEZMX01BWF9QRVJfU09DSylcbitcdFx0XHRicmVhaztcbitcdH1cbitcdHJjdV9yZWFkX3VubG9jaygpO1xuK1xuK1x0cmV0dXJuIGNvdW50IFx1MDAzZT0gRkxfTUFYX1BFUl9TT0NLO1xuK31cbitcbiBzdGF0aWMgaW50IG1lbV9jaGVjayhzdHJ1Y3Qgc29jayAqc2spXG4ge1xuIFx0Y29uc3QgaW50IHVucHJpdl90b3RhbF9saW1pdCA9IEZMX01BWF9TSVpFIC0gKEZMX01BWF9TSVpFIC8gNCk7XG5AQCAtNjc5LDYgKzY5NCwxMCBAQCBzdGF0aWMgaW50IGlwdjZfZmxvd2xhYmVsX2dldChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBpbjZfZmxvd2xhYmVsX3JlcSAqZnJlcSxcbiBcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIFx0XHRcdGlmICghc2ZsMSlcbiBcdFx0XHRcdGdvdG8gcmVsZWFzZTtcbitcdFx0XHRlcnIgPSAtRU5PQlVGUztcbitcdFx0XHRpZiAoZmxfc29ja19hdF9sZWFzZV9saW1pdChzaykgXHUwMDI2XHUwMDI2XG4rXHRcdFx0ICAgICFjYXBhYmxlKENBUF9ORVRfQURNSU4pKVxuK1x0XHRcdFx0Z290byByZWxlYXNlO1xuIFx0XHRcdGlmIChmbC1cdTAwM2VsaW5nZXIgXHUwMDNlIGZsMS1cdTAwM2VsaW5nZXIpXG4gXHRcdFx0XHRmbDEtXHUwMDNlbGluZ2VyID0gZmwtXHUwMDNlbGluZ2VyO1xuIFx0XHRcdGlmICgobG9uZykoZmwtXHUwMDNlZXhwaXJlcyAtIGZsMS1cdTAwM2VleHBpcmVzKSBcdTAwM2UgMClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA2OjA4OjA3LjkzNjI4ODU1MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDU3MDE1OTQ3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIEZsb3dsYWJlbCBDb2RlKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGdldCBhIHNvbGlkIGdyYXNwIG9mIHRoZSBjb250ZXh0LiBGaXJzdCwgSSBuZWVkIHRvIHplcm8gaW4gb24gYG5ldC9pcHY2L2lwNl9mbG93bGFiZWwuY2AuIExldCdzIHVzZSBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gZ2V0IHRoYXQgZmlsZSBvcGVuIGFuZCBpbiBmcm9udCBvZiBtZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN1cnJvdW5kaW5nIGNvZGUsIHRoZSBjdXJyZW50IHN0YXRlIG9mIGZsb3dsYWJlbCBpbXBsZW1lbnRhdGlvbiwgYmVmb3JlIEkgY2FuIHJlYWxseSBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM1NCwiT3V0cHV0VG9rZW5zIjo4MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDg6MTguNTA2NDUwNzJaIiwiU2VxIjoxNywiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU0ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ1MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ1MDpcXHRcXHRcXHRXUklURV9PTkNFKHNvY2tfbmV0KHNrKS1cXHUwMDNlaXB2Ni5mbG93bGFiZWxfaGFzX2V4Y2wsIDEpO1xcbiA0NTE6XFx0XFx0XFx0c3RhdGljX2JyYW5jaF9kZWZlcnJlZF9pbmMoXFx1MDAyNmlwdjZfZmxvd2xhYmVsX2V4Y2x1c2l2ZSk7XFxuIDQ1MjpcXHRcXHR9XFxuIDQ1MzpcXHRcXHRyZXR1cm4gZmw7XFxuIDQ1NDpcXHRcXG4gNDU1OlxcdGRvbmU6XFxuIDQ1NjpcXHRcXHRpZiAoZmwpIHtcXG4gNDU3OlxcdFxcdFxcdGtmcmVlKGZsLVxcdTAwM2VvcHQpO1xcbiA0NTg6XFx0XFx0XFx0a2ZyZWUoZmwpO1xcbiA0NTk6XFx0XFx0fVxcbiA0NjA6XFx0XFx0KmVycl9wID0gZXJyO1xcbiA0NjE6XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDQ2MjpcXHR9XFxuIDQ2MzpcXHRcXG4gNDY0OlxcdHN0YXRpYyBib29sIGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrKVxcbiA0NjU6XFx0e1xcbiA0NjY6XFx0XFx0Y29uc3Qgc3RydWN0IGlwdjZfZmxfc29ja2xpc3QgKnNmbDtcXG4gNDY3OlxcdFxcdGludCBjb3VudCA9IDA7XFxuIDQ2ODpcXHRcXG4gNDY5OlxcdFxcdHJjdV9yZWFkX2xvY2soKTtcXG4gNDcwOlxcdFxcdGZvcl9lYWNoX3NrX2ZsX3JjdShzaywgc2ZsKSB7XFxuIDQ3MTpcXHRcXHRcXHRpZiAoKytjb3VudCBcXHUwMDNlPSBGTF9NQVhfUEVSX1NPQ0spXFxuIDQ3MjpcXHRcXHRcXHRcXHRicmVhaztcXG4gNDczOlxcdFxcdH1cXG4gNDc0OlxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiA0NzU6XFx0XFxuIDQ3NjpcXHRcXHRyZXR1cm4gY291bnQgXFx1MDAzZT0gRkxfTUFYX1BFUl9TT0NLO1xcbiA0Nzc6XFx0fVxcbiA0Nzg6XFx0XFxuIDQ3OTpcXHRzdGF0aWMgaW50IG1lbV9jaGVjayhzdHJ1Y3Qgc29jayAqc2spXFxuIDQ4MDpcXHR7XFxuIDQ4MTpcXHRcXHRjb25zdCBpbnQgdW5wcml2X3RvdGFsX2xpbWl0ID0gRkxfTUFYX1NJWkUgLSAoRkxfTUFYX1NJWkUgLyA0KTtcXG4gNDgyOlxcdFxcdGNvbnN0IGludCB1bnByaXZfdXNlcl9saW1pdCA9IHVucHJpdl90b3RhbF9saW1pdCAvIDI7XFxuIDQ4MzpcXHRcXHRzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7XFxuIDQ4NDpcXHRcXHRpbnQgcm9vbTtcXG4gNDg1OlxcdFxcdHN0cnVjdCBpcHY2X2ZsX3NvY2tsaXN0ICpzZmw7XFxuIDQ4NjpcXHRcXHRpbnQgY291bnQgPSAwO1xcbiA0ODc6XFx0XFxuIDQ4ODpcXHRcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZpcDZfZmxfbG9jayk7XFxuIDQ4OTpcXHRcXG4gNDkwOlxcdFxcdHJvb20gPSBGTF9NQVhfU0laRSAtIGZsX3NpemU7XFxuIDQ5MTpcXHRcXG4gNDkyOlxcdFxcdGlmIChyb29tIFxcdTAwM2UgRkxfTUFYX1NJWkUgLSBGTF9NQVhfUEVSX1NPQ0spXFxuIDQ5MzpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNDk0OlxcdFxcbiA0OTU6XFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbiA0OTY6XFx0XFx0Zm9yX2VhY2hfc2tfZmxfcmN1KHNrLCBzZmwpXFxuIDQ5NzpcXHRcXHRcXHRjb3VudCsrO1xcbiA0OTg6XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIDQ5OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDg6MTguNTA2NTI3MjFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY2MCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY2MDpcXHRcXG4gNjYxOlxcdFxcdGlmIChmcmVxLVxcdTAwM2VmbHJfbGFiZWwpIHtcXG4gNjYyOlxcdFxcdFxcdGVyciA9IC1FRVhJU1Q7XFxuIDY2MzpcXHRcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIDY2NDpcXHRcXHRcXHRmb3JfZWFjaF9za19mbF9yY3Uoc2ssIHNmbCkge1xcbiA2NjU6XFx0XFx0XFx0XFx0aWYgKHNmbC1cXHUwMDNlZmwtXFx1MDAzZWxhYmVsID09IGZyZXEtXFx1MDAzZWZscl9sYWJlbCkge1xcbiA2NjY6XFx0XFx0XFx0XFx0XFx0aWYgKGZyZXEtXFx1MDAzZWZscl9mbGFncyBcXHUwMDI2IElQVjZfRkxfRl9FWENMKSB7XFxuIDY2NzpcXHRcXHRcXHRcXHRcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gNjY4OlxcdFxcdFxcdFxcdFxcdFxcdGdvdG8gZG9uZTtcXG4gNjY5OlxcdFxcdFxcdFxcdFxcdH1cXG4gNjcwOlxcdFxcdFxcdFxcdFxcdGZsMSA9IHNmbC1cXHUwMDNlZmw7XFxuIDY3MTpcXHRcXHRcXHRcXHRcXHRpZiAoIWF0b21pY19pbmNfbm90X3plcm8oXFx1MDAyNmZsMS1cXHUwMDNldXNlcnMpKVxcbiA2NzI6XFx0XFx0XFx0XFx0XFx0XFx0ZmwxID0gTlVMTDtcXG4gNjczOlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbiA2NzQ6XFx0XFx0XFx0XFx0fVxcbiA2NzU6XFx0XFx0XFx0fVxcbiA2NzY6XFx0XFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuIDY3NzpcXHRcXG4gNjc4OlxcdFxcdFxcdGlmICghZmwxKVxcbiA2Nzk6XFx0XFx0XFx0XFx0ZmwxID0gZmxfbG9va3VwKG5ldCwgZnJlcS1cXHUwMDNlZmxyX2xhYmVsKTtcXG4gNjgwOlxcdFxcdFxcdGlmIChmbDEpIHtcXG4gNjgxOlxcdHJlY2hlY2s6XFxuIDY4MjpcXHRcXHRcXHRcXHRlcnIgPSAtRUVYSVNUO1xcbiA2ODM6XFx0XFx0XFx0XFx0aWYgKGZyZXEtXFx1MDAzZWZscl9mbGFnc1xcdTAwMjZJUFY2X0ZMX0ZfRVhDTClcXG4gNjg0OlxcdFxcdFxcdFxcdFxcdGdvdG8gcmVsZWFzZTtcXG4gNjg1OlxcdFxcdFxcdFxcdGVyciA9IC1FUEVSTTtcXG4gNjg2OlxcdFxcdFxcdFxcdGlmIChmbDEtXFx1MDAzZXNoYXJlID09IElQVjZfRkxfU19FWENMIHx8XFxuIDY4NzpcXHRcXHRcXHRcXHQgICAgZmwxLVxcdTAwM2VzaGFyZSAhPSBmbC1cXHUwMDNlc2hhcmUgfHxcXG4gNjg4OlxcdFxcdFxcdFxcdCAgICAoKGZsMS1cXHUwMDNlc2hhcmUgPT0gSVBWNl9GTF9TX1BST0NFU1MpIFxcdTAwMjZcXHUwMDI2XFxuIDY4OTpcXHRcXHRcXHRcXHQgICAgIChmbDEtXFx1MDAzZW93bmVyLnBpZCAhPSBmbC1cXHUwMDNlb3duZXIucGlkKSkgfHxcXG4gNjkwOlxcdFxcdFxcdFxcdCAgICAoKGZsMS1cXHUwMDNlc2hhcmUgPT0gSVBWNl9GTF9TX1VTRVIpIFxcdTAwMjZcXHUwMDI2XFxuIDY5MTpcXHRcXHRcXHRcXHQgICAgICF1aWRfZXEoZmwxLVxcdTAwM2Vvd25lci51aWQsIGZsLVxcdTAwM2Vvd25lci51aWQpKSlcXG4gNjkyOlxcdFxcdFxcdFxcdFxcdGdvdG8gcmVsZWFzZTtcXG4gNjkzOlxcdFxcbiA2OTQ6XFx0XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gNjk1OlxcdFxcdFxcdFxcdGlmICghc2ZsMSlcXG4gNjk2OlxcdFxcdFxcdFxcdFxcdGdvdG8gcmVsZWFzZTtcXG4gNjk3OlxcdFxcdFxcdFxcdGVyciA9IC1FTk9CVUZTO1xcbiA2OTg6XFx0XFx0XFx0XFx0aWYgKGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoc2spIFxcdTAwMjZcXHUwMDI2XFxuIDY5OTpcXHRcXHRcXHRcXHQgICAgIWNhcGFibGUoQ0FQX05FVF9BRE1JTikpXFxuIDcwMDpcXHRcXHRcXHRcXHRcXHRnb3RvIHJlbGVhc2U7XFxuIDcwMTpcXHRcXHRcXHRcXHRpZiAoZmwtXFx1MDAzZWxpbmdlciBcXHUwMDNlIGZsMS1cXHUwMDNlbGluZ2VyKVxcbiA3MDI6XFx0XFx0XFx0XFx0XFx0ZmwxLVxcdTAwM2VsaW5nZXIgPSBmbC1cXHUwMDNlbGluZ2VyO1xcbiA3MDM6XFx0XFx0XFx0XFx0aWYgKChsb25nKShmbC1cXHUwMDNlZXhwaXJlcyAtIGZsMS1cXHUwMDNlZXhwaXJlcykgXFx1MDAzZSAwKVxcbiA3MDQ6XFx0XFx0XFx0XFx0XFx0ZmwxLVxcdTAwM2VleHBpcmVzID0gZmwtXFx1MDAzZWV4cGlyZXM7XFxuIDcwNTpcXHRcXHRcXHRcXHRmbF9saW5rKHNrLCBzZmwxLCBmbDEpO1xcbiA3MDY6XFx0XFx0XFx0XFx0ZmxfZnJlZShmbCk7XFxuIDcwNzpcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNzA4OlxcdFxcbiA3MDk6XFx0cmVsZWFzZTpcXG4gNzEwOlxcdFxcdFxcdFxcdGZsX3JlbGVhc2UoZmwxKTtcXG4gNzExOlxcdFxcdFxcdFxcdGdvdG8gZG9uZTtcXG4gNzEyOlxcdFxcdFxcdH1cXG4gNzEzOlxcdFxcdH1cXG4gNzE0OlxcdFxcdGVyciA9IC1FTk9FTlQ7XFxuIDcxNTpcXHRcXHRpZiAoIShmcmVxLVxcdTAwM2VmbHJfZmxhZ3MgXFx1MDAyNiBJUFY2X0ZMX0ZfQ1JFQVRFKSlcXG4gNzE2OlxcdFxcdFxcdGdvdG8gZG9uZTtcXG4gNzE3OlxcdFxcbiA3MTg6XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gNzE5OlxcdFxcdGlmICghc2ZsMSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDg6MTguNTA2NTgyMzFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE1Mzg0MDAwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRha2luZyB0aGUgcm9sZSBvZiB0aGUgdGhpbmtpbmcgcHJvY2VzcyBhcyBkZXNjcmliZWQ6XG5cbioqRGl2aW5nIERlZXBlciBpbnRvIEZsb3cgTGFiZWwgSW1wbGVtZW50YXRpb24qKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBmaW5hbGl6ZSBteSBhc3Nlc3NtZW50IG9mIHRoaXMgZmxvdyBsYWJlbCBsb2dpYywgSSBuZWVkIGEgY2xlYXJlciBwaWN0dXJlLiBJJ20gZ29pbmcgdG8gc2hpZnQgZm9jdXMgYW5kIHRyYWNlIHRoZSByZXN0IG9mIHRoZSBjb2RlIGV4ZWN1dGlvbi4gU3BlY2lmaWNhbGx5LCBJJ2xsIGV4YW1pbmUgdGhlIHJlbWFpbmluZyBwYXJ0cyBvZiBgaXB2Nl9mbG93bGFiZWxfZ2V0YCBmdW5jdGlvbi4gQW5kIGVxdWFsbHkgaW1wb3J0YW50LCBJIHdpbGwgYmUgZGVsdmluZyBpbnRvIHRoZSBpbm5lciB3b3JraW5ncyBvZiBgZmxfY3JlYXRlYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgcGllY2VzIEkgbmVlZCB0byB0cnVseSB1bmRlcnN0YW5kIGhvdyBldmVyeXRoaW5nIGZpdHMgdG9nZXRoZXIgZm9yIHRoZSBmbG93IGxhYmVsIGltcGxlbWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjE2LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiLCJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNjowODoyMC42NjA0MjU4MjRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjYvaXA2X2Zsb3dsYWJlbC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYzMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDYzMDpcXHRcXHRcXHRzb2NrcHRyX3Qgb3B0dmFsLCBpbnQgb3B0bGVuKVxcbiA2MzE6XFx0e1xcbiA2MzI6XFx0XFx0c3RydWN0IGlwdjZfZmxfc29ja2xpc3QgKnNmbCwgKnNmbDEgPSBOVUxMO1xcbiA2MzM6XFx0XFx0c3RydWN0IGlwNl9mbG93bGFiZWwgKmZsLCAqZmwxID0gTlVMTDtcXG4gNjM0OlxcdFxcdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrKTtcXG4gNjM1OlxcdFxcdGludCBlcnI7XFxuIDYzNjpcXHRcXG4gNjM3OlxcdFxcdGlmIChmcmVxLVxcdTAwM2VmbHJfZmxhZ3MgXFx1MDAyNiBJUFY2X0ZMX0ZfUkVGTEVDVCkge1xcbiA2Mzg6XFx0XFx0XFx0aWYgKFJFQURfT05DRShuZXQtXFx1MDAzZWlwdjYuc3lzY3RsLmZsb3dsYWJlbF9jb25zaXN0ZW5jeSkpIHtcXG4gNjM5OlxcdFxcdFxcdFxcdG5ldF9pbmZvX3JhdGVsaW1pdGVkKFxcXCJDYW4gbm90IHNldCBJUFY2X0ZMX0ZfUkVGTEVDVCBpZiBmbG93bGFiZWxfY29uc2lzdGVuY3kgc3lzY3RsIGlzIGVuYWJsZVxcXFxuXFxcIik7XFxuIDY0MDpcXHRcXHRcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbiA2NDE6XFx0XFx0XFx0fVxcbiA2NDI6XFx0XFxuIDY0MzpcXHRcXHRcXHRpZiAoc2stXFx1MDAzZXNrX3Byb3RvY29sICE9IElQUFJPVE9fVENQKVxcbiA2NDQ6XFx0XFx0XFx0XFx0cmV0dXJuIC1FTk9QUk9UT09QVDtcXG4gNjQ1OlxcdFxcdFxcdGluZXQ2X3NldF9iaXQoUkVQRkxPVywgc2spO1xcbiA2NDY6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDY0NzpcXHRcXHR9XFxuIDY0ODpcXHRcXG4gNjQ5OlxcdFxcdGlmIChmcmVxLVxcdTAwM2VmbHJfbGFiZWwgXFx1MDAyNiB+SVBWNl9GTE9XTEFCRUxfTUFTSylcXG4gNjUwOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA2NTE6XFx0XFx0aWYgKFJFQURfT05DRShuZXQtXFx1MDAzZWlwdjYuc3lzY3RsLmZsb3dsYWJlbF9zdGF0ZV9yYW5nZXMpIFxcdTAwMjZcXHUwMDI2XFxuIDY1MjpcXHRcXHQgICAgKGZyZXEtXFx1MDAzZWZscl9sYWJlbCBcXHUwMDI2IElQVjZfRkxPV0xBQkVMX1NUQVRFTEVTU19GTEFHKSlcXG4gNjUzOlxcdFxcdFxcdHJldHVybiAtRVJBTkdFO1xcbiA2NTQ6XFx0XFxuIDY1NTpcXHRcXHRmbCA9IGZsX2NyZWF0ZShuZXQsIHNrLCBmcmVxLCBvcHR2YWwsIG9wdGxlbiwgXFx1MDAyNmVycik7XFxuIDY1NjpcXHRcXHRpZiAoIWZsKVxcbiA2NTc6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gNjU4OlxcdFxcbiA2NTk6XFx0XFx0c2ZsMSA9IGttYWxsb2Nfb2JqKCpzZmwxKTtcXG4gNjYwOlxcdFxcbiA2NjE6XFx0XFx0aWYgKGZyZXEtXFx1MDAzZWZscl9sYWJlbCkge1xcbiA2NjI6XFx0XFx0XFx0ZXJyID0gLUVFWElTVDtcXG4gNjYzOlxcdFxcdFxcdHJjdV9yZWFkX2xvY2soKTtcXG4gNjY0OlxcdFxcdFxcdGZvcl9lYWNoX3NrX2ZsX3JjdShzaywgc2ZsKSB7XFxuIDY2NTpcXHRcXHRcXHRcXHRpZiAoc2ZsLVxcdTAwM2VmbC1cXHUwMDNlbGFiZWwgPT0gZnJlcS1cXHUwMDNlZmxyX2xhYmVsKSB7XFxuIDY2NjpcXHRcXHRcXHRcXHRcXHRpZiAoZnJlcS1cXHUwMDNlZmxyX2ZsYWdzIFxcdTAwMjYgSVBWNl9GTF9GX0VYQ0wpIHtcXG4gNjY3OlxcdFxcdFxcdFxcdFxcdFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiA2Njg6XFx0XFx0XFx0XFx0XFx0XFx0Z290byBkb25lO1xcbiA2Njk6XFx0XFx0XFx0XFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwNjowODoyMC42NjA1MjYyNDRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTgyNDM4MzEzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGbG93IExhYmVsIExlYXNlIExpbWl0IFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGNvbmNlcm4gd2FzIGFib3V0IGEgcG90ZW50aWFsIGJ1ZyBpbiBgaXB2Nl9mbG93bGFiZWxfZ2V0KClgLiBJdCBzZWVtcyB0aGF0IHdoZW4gYSBzb2NrZXQgKnJldXNlcyogYW4gZXhpc3RpbmcgZmxvdyBsYWJlbCAoYGZsMWApLCB0aGUgY29kZSB3YXNuJ3QgY29ycmVjdGx5IGNoZWNraW5nIHRoZSBwZXItc29ja2V0IGxpbWl0IGBGTF9NQVhfUEVSX1NPQ0tgLiBXZSBkbyBoYXZlIGBtZW1fY2hlY2soc2spYCBpbiBgZmxfY3JlYXRlKClgLCBidXQgaXQncyBvbmx5IGNhbGxlZCB3aGVuICpjcmVhdGluZyogYSBuZXcgZmxvdyBsYWJlbC4gTXkgaHVuY2ggd2FzIHRoYXQgd2hlbiAqcmV1c2luZyogYSBsYWJlbCAodmlhIGBmcmVxLVx1MDAzZWZscl9sYWJlbGAgYW5kIGZpbmRpbmcgYGZsMWApLCB3ZSBzdGlsbCBjYWxsIGBmbF9jcmVhdGVgLCBidXQgcGVyaGFwcyB0aGUgYG1lbV9jaGVja2AgbG9naWMgd2FzIGJ5cGFzc2VkLCBlc3BlY2lhbGx5IGlmIGByb29tIFx1MDAzZSBGTF9NQVhfU0laRSAtIEZMX01BWF9QRVJfU09DS2Agb3IgaW4gc2NlbmFyaW9zIG9mIHJlcGVhdGVkbHkgbGVhc2luZyBleGlzdGluZyBsYWJlbHMuXG5cbkkgZG92ZSBpbnRvIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KHNrKWAgdG8gY29uZmlybS4gSXQgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgc29ja2V0J3MgZmxvdyBsYWJlbHMgYW5kIGNvdW50cyB0aGVtLiBJZiB0aGUgY291bnQgKGBjb3VudGApIHJlYWNoZXMgb3IgZXhjZWVkcyBgRkxfTUFYX1BFUl9TT0NLYCwgYW5kIHRoZSBzb2NrZXQgZG9lc24ndCBoYXZlIGBDQVBfTkVUX0FETUlOYCwgaXQgcmV0dXJucyBgLUVOT0JVRlNgLiBUaGF0J3MgdGhlIGNvcmUgb2YgdGhlIGxpbWl0IGVuZm9yY2VtZW50LiBUaGUgY2hlY2sgaW4gYGlwdjZfZmxvd2xhYmVsX2dldGAgdXNlcyB0aGF0IGZ1bmN0aW9uIHRvIHByZXZlbnQgZXhjZWVkaW5nIHRoZSBsaW1pdC5cblxuTm93LCBsZXQncyB0aGluayBhYm91dCB0aGlzIGZyb20gYSBLTVNBTi9LQVNBTiBwZXJzcGVjdGl2ZS4gRG9lcyB0aGlzIHBhdGNoOlxuXG4xLiAgKipJbnRyb2R1Y2Uga2VybmVsIHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHM/KiogTm8uXG4yLiAgKipSZWx5IG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGluIGNvbmRpdGlvbmFsIGxvZ2ljPyoqIE5vLCBiZWNhdXNlIGBjb3VudGAgaXMgaW5pdGlhbGl6ZWQgdG8gemVybywgYW5kIGBza2AgYW5kIGBzZmxgIGFyZSBjb3JyZWN0bHkgaGFuZGxlZC5cbjMuICAqKkFsbG9jYXRlIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGFyZSB1c2VkIGxhdGVyPyoqIE5vLlxuNC4gICoqSW50cm9kdWNlIGJvdW5kcyBjaGVjayBmbGF3cyB0aGF0IGNvdWxkIGxlYWQgdG8gcmVhZGluZyB1bmluaXRpYWxpemVkIGJ5dGVzPyoqIE5vLlxuXG5UaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGlzIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcy4gSXQncyBzb2xlbHkgYWJvdXQgcmVzb3VyY2UgbGltaXRpbmcgYW5kIGFjY291bnRpbmcgZm9yIGZsb3dsYWJlbCB1c2FnZSBwZXIgc29ja2V0LiBLQVNBTiBhbmQgdGhlIHVzdWFsIHRlc3Rpbmcgc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIGNvcnJlY3RuZXNzIGhlcmUuIFdlIGRvbid0IG5lZWQgS01TQU4gdG8gZmxhZyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBiZWNhdXNlIHRoZXJlIGlzbid0IGFueS5cblxuSSdtIGNvbmZpZGVudCBpbiBjYWxsaW5nIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwODYsIk91dHB1dFRva2VucyI6MTY0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzcxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDY6MDg6MjYuNDg0OTExOTYyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KClgIGFuZCBhZGRzIGFuIGBGTF9NQVhfUEVSX1NPQ0tgIGNhcGFjaXR5IGNoZWNrIHdoZW4gYXR0YWNoaW5nL2xlYXNpbmcgZXhpc3RpbmcgSVB2NiBmbG93IGxhYmVscyBpbiBgaXB2Nl9mbG93bGFiZWxfZ2V0KClgLiBcXG5cXG5UaGUgY2hhbmdlcyBvbmx5IGludHJvZHVjZSBhIGNvdW50ZXItYmFzZWQgbG9vcCBpdGVyYXRpbmcgb3ZlciBhbiBleGlzdGluZyBSQ1UtcHJvdGVjdGVkIGxpc3QgYW5kIGFuIGVycm9yIGJyYW5jaCAoYC1FTk9CVUZTYCkgdW5kZXIgYGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoKWAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGFsbG9jYXRlZCwgcmVhZCwgb3IgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBhcmUgYW55IGJ1ZmZlciBsZW5ndGhzIG9yIGRhdGEgc3RydWN0dXJlcyBtb2RpZmllZCBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBmbF9zb2NrX2F0X2xlYXNlX2xpbWl0KClgIGFuZCBhZGRzIGFuIGBGTF9NQVhfUEVSX1NPQ0tgIGNhcGFjaXR5IGNoZWNrIHdoZW4gYXR0YWNoaW5nL2xlYXNpbmcgZXhpc3RpbmcgSVB2NiBmbG93IGxhYmVscyBpbiBgaXB2Nl9mbG93bGFiZWxfZ2V0KClgLiBcXG5cXG5UaGUgY2hhbmdlcyBvbmx5IGludHJvZHVjZSBhIGNvdW50ZXItYmFzZWQgbG9vcCBpdGVyYXRpbmcgb3ZlciBhbiBleGlzdGluZyBSQ1UtcHJvdGVjdGVkIGxpc3QgYW5kIGFuIGVycm9yIGJyYW5jaCAoYC1FTk9CVUZTYCkgdW5kZXIgYGZsX3NvY2tfYXRfbGVhc2VfbGltaXQoKWAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGFsbG9jYXRlZCwgcmVhZCwgb3IgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vciBhcmUgYW55IGJ1ZmZlciBsZW5ndGhzIG9yIGRhdGEgc3RydWN0dXJlcyBtb2RpZmllZCBpbiBhIHdheSB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIGRhdGEuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfrxtx[1] Phase: Succeeded StartedAt: 2026-09-04 06:08:51 +0000 UTC FinishedAt: 2026-09-04 06:08:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-04 06:08:51 +0000 UTC FinishedAt: 2026-09-04 06:08:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[2] Phase: Succeeded StartedAt: 2026-09-04 06:08:51 +0000 UTC FinishedAt: 2026-09-04 09:48:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-04 06:08:51 +0000 UTC FinishedAt: 2026-09-04 09:48:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-04 06:08:51 +0000 UTC FinishedAt: 2026-09-04 06:09:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-04 06:08:51 +0000 UTC FinishedAt: 2026-09-04 06:08:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfrxtx/series-workflowfrxtx-convert-artifact-3934709947/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-04 06:09:01 +0000 UTC FinishedAt: 2026-09-04 06:25:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-04 06:09:01 +0000 UTC FinishedAt: 2026-09-04 06:25:04 +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:*44515379-2dfe-4545-b612-94b1d0bce0d3,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-workflowfrxtx/series-workflowfrxtx-convert-artifact-3934709947/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": "7a0a87b6-17dd-4961-af96-bf4ea1d2e81e", "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-workflowfrxtx/series-workflowfrxtx-build-action-3126589177/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-04 06:09:01 +0000 UTC FinishedAt: 2026-09-04 06:24:54 +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:*44515379-2dfe-4545-b612-94b1d0bce0d3,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-workflowfrxtx/series-workflowfrxtx-convert-artifact-3934709947/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": "7a0a87b6-17dd-4961-af96-bf4ea1d2e81e", "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-workflowfrxtx/series-workflowfrxtx-build-action-3126589177/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-04 06:25:04 +0000 UTC FinishedAt: 2026-09-04 06:25:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-04 06:25:04 +0000 UTC FinishedAt: 2026-09-04 06:25:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-04 06:25:04 +0000 UTC FinishedAt: 2026-09-04 06:25:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-04 06:25:04 +0000 UTC FinishedAt: 2026-09-04 06:25:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfrxtx/series-workflowfrxtx-convert-artifact-2303789586/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-04 06:25:14 +0000 UTC FinishedAt: 2026-09-04 06:27:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-04 06:25:14 +0000 UTC FinishedAt: 2026-09-04 06:27:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7a0a87b6-17dd-4961-af96-bf4ea1d2e81e,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-workflowfrxtx/series-workflowfrxtx-build-action-3126589177/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-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-04 06:27:24 +0000 UTC FinishedAt: 2026-09-04 06:27:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-04 06:27:24 +0000 UTC FinishedAt: 2026-09-04 06:27:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-04 06:27:24 +0000 UTC FinishedAt: 2026-09-04 06:43:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-04 06:27:24 +0000 UTC FinishedAt: 2026-09-04 06:43:06 +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:*44515379-2dfe-4545-b612-94b1d0bce0d3,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-workflowfrxtx/series-workflowfrxtx-convert-artifact-2303789586/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": "bcf76b9c-c830-4a5c-a002-3e4fd9efcbab", "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-workflowfrxtx/series-workflowfrxtx-build-action-480872102/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-04 06:27:24 +0000 UTC FinishedAt: 2026-09-04 06:42:56 +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:*44515379-2dfe-4545-b612-94b1d0bce0d3,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-workflowfrxtx/series-workflowfrxtx-convert-artifact-2303789586/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": "bcf76b9c-c830-4a5c-a002-3e4fd9efcbab", "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-workflowfrxtx/series-workflowfrxtx-build-action-480872102/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-04 06:43:06 +0000 UTC FinishedAt: 2026-09-04 06:43:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-04 06:43:06 +0000 UTC FinishedAt: 2026-09-04 06:43:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-04 06:43:06 +0000 UTC FinishedAt: 2026-09-04 06:45:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-04 06:43:06 +0000 UTC FinishedAt: 2026-09-04 06:45:08 +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:*bcf76b9c-c830-4a5c-a002-3e4fd9efcbab,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-workflowfrxtx/series-workflowfrxtx-build-action-480872102/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-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-04 06:45:18 +0000 UTC FinishedAt: 2026-09-04 09:48:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-04 06:45:18 +0000 UTC FinishedAt: 2026-09-04 09:48:19 +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":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"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:*7a0a87b6-17dd-4961-af96-bf4ea1d2e81e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*bcf76b9c-c830-4a5c-a002-3e4fd9efcbab,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-workflowfrxtx/series-workflowfrxtx-build-action-3126589177/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-workflowfrxtx/series-workflowfrxtx-build-action-480872102/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-04 06:45:18 +0000 UTC FinishedAt: 2026-09-04 06:45:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-04 06:45:18 +0000 UTC FinishedAt: 2026-09-04 06:45:22 +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":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"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-workflowfrxtx/series-workflowfrxtx-convert-artifact-3464311655/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-04 06:45:18 +0000 UTC FinishedAt: 2026-09-04 06:45:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-04 06:45:18 +0000 UTC FinishedAt: 2026-09-04 06:45:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-04 06:45:18 +0000 UTC FinishedAt: 2026-09-04 06:45:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-04 06:45:28 +0000 UTC FinishedAt: 2026-09-04 09:48:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfrxtx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipv6_flowlabel_opt","ipv6_flowlabel_get","fl_sock_at_lease_limit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"adf50c47a47f0f0f0b79dd58ffade9919cddebea","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"3b59d353-e8c2-4ffe-ad2b-3e5cc7e348f7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-04 06:45:28 +0000 UTC FinishedAt: 2026-09-04 09:48:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7a0a87b6-17dd-4961-af96-bf4ea1d2e81e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*bcf76b9c-c830-4a5c-a002-3e4fd9efcbab,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-workflowfrxtx/series-workflowfrxtx-build-action-3126589177/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-workflowfrxtx/series-workflowfrxtx-build-action-480872102/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-workflowfrxtx/series-workflowfrxtx-convert-artifact-3464311655/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,}