Name: series-workflowf6xl9 Phase: Succeeded StartedAt: 2026-07-12 23:09:58 +0000 UTC FinishedAt: 2026-07-13 03:46:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[0] Phase: Succeeded StartedAt: 2026-07-12 23:09:58 +0000 UTC FinishedAt: 2026-07-12 23:40:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[0].run-triage Phase: Succeeded StartedAt: 2026-07-12 23:09:58 +0000 UTC FinishedAt: 2026-07-12 23:40:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2c7c88a412aa6d09cd04b414211b4ef8553b5309", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK_H323", "NF_CONNTRACK_SIP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2c7c88a412aa6d09cd04b414211b4ef8553b5309", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK_H323", "NF_CONNTRACK_SIP" ], "series_id": "4666be86-66d5-419a-8019-b7a3f9f065e1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nf_ct_expect_related_pair", "nat_rtp_rtcp", "nf_nat_sdp_media" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19IMzIzJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19TSVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyJiMzNDssCiAgICAmIzM0O25hdF9ydHBfcnRjcCYjMzQ7LAogICAgJiMzNDtuZl9uYXRfc2RwX21lZGlhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXJgIHRvIGF0b21pY2FsbHkgaW5zZXJ0IGEgcGFpciBvZiByZWxhdGVkIGNvbm50cmFjayBleHBlY3RhdGlvbnMgKGUuZy4sIFJUUCBhbmQgUlRDUCkgYW5kIHVwZGF0ZXMgdGhlIEguMzIzIGFuZCBTSVAgTkFUIGhlbHBlcnMgdG8gdXNlIHRoaXMgbmV3IEFQSS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYyB0aGF0IGhhbmRsZXMgY29tcGxleCBwcm90b2NvbHMsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBzZW5kaW5nIGNyYWZ0ZWQgSC4zMjMgb3IgU0lQIHBhY2tldHMgdGhyb3VnaCBhIE5BVCBzZXR1cC4gSXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG5ldyBhdG9taWMgaW5zZXJ0aW9uIGxvZ2ljIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucywgbWVtb3J5IGxlYWtzLCBvciByYWNlIGNvbmRpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMjM6Mzk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyOGZhNDlhMjA0OTRhZjNiZjc2YWNjZTE4NTE5YjVmODI4MDJhMGYyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTIgMjM6Mzk6MzggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaCBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmhcbmluZGV4IGMwMjQzNDVjOWJkODYyLi4yNmQ2YmFiZDkyZmNkNyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmhcbkBAIC0xNjEsNiAmIzQzOzE2MSw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3QsXG4gXHRyZXR1cm4gbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0KGV4cGVjdCwgMCwgMCwgZmxhZ3MpO1xuIH1cbiBcbiYjNDM7aW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXIoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cGVjdFtdLFxuJiM0MztcdFx0XHQgICAgICB1bnNpZ25lZCBpbnQgZmxhZyk7XG4mIzQzO1xuIHN0cnVjdCBuZl9jb25uX2hlbHA7XG4gdm9pZCBuZl9jdF9leHBlY3RhdGlvbl9nYyhzdHJ1Y3QgbmZfY29ubl9oZWxwICptYXN0ZXJfaGVscCk7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuY1xuaW5kZXggMTgzZThhM2ZmMmJhYmQuLjZiY2Q2NzM0NzY5YjU5IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jXG5AQCAtMTgyLDYgJiM0MzsxODIsNyBAQCBzdGF0aWMgaW50IG5hdF9ydHBfcnRjcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4gXHRcdFx0c3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnJ0cF9leHAsXG4gXHRcdFx0c3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnJ0Y3BfZXhwKVxuIHtcbiYjNDM7XHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqcnRwX3BhaXJbMl0gPSB7IHJ0cF9leHAsIHJ0Y3BfZXhwIH07XG4gXHRzdHJ1Y3QgbmZfY3RfaDMyM19tYXN0ZXIgKmluZm8gPSBuZmN0X2hlbHBfZGF0YShjdCk7XG4gXHRpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xuIFx0aW50IGk7XG5AQCAtMjI3LDIyICYjNDM7MjI4LDEzIEBAIHN0YXRpYyBpbnQgbmF0X3J0cF9ydGNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0aW50IHJldDtcbiBcbiBcdFx0cnRwX2V4cC1cdTAwM2V0dXBsZS5kc3QudS51ZHAucG9ydCA9IGh0b25zKG5hdGVkX3BvcnQpO1xuLVx0XHRyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZChydHBfZXhwLCAwKTtcbiYjNDM7XHRcdHJ0Y3BfZXhwLVx1MDAzZXR1cGxlLmRzdC51LnVkcC5wb3J0ID0gaHRvbnMobmF0ZWRfcG9ydCAmIzQzOyAxKTtcbiYjNDM7XHRcdHJldCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXIocnRwX3BhaXIsIDApO1xuIFx0XHRpZiAocmV0ID09IDApIHtcbi1cdFx0XHRydGNwX2V4cC1cdTAwM2V0dXBsZS5kc3QudS51ZHAucG9ydCA9XG4tXHRcdFx0ICAgIGh0b25zKG5hdGVkX3BvcnQgJiM0MzsgMSk7XG4tXHRcdFx0cmV0ID0gbmZfY3RfZXhwZWN0X3JlbGF0ZWQocnRjcF9leHAsIDApO1xuLVx0XHRcdGlmIChyZXQgPT0gMClcbi1cdFx0XHRcdGJyZWFrO1xuLVx0XHRcdGVsc2UgaWYgKHJldCA9PSAtRUJVU1kpIHtcbi1cdFx0XHRcdG5mX2N0X3VuZXhwZWN0X3JlbGF0ZWQocnRwX2V4cCk7XG4tXHRcdFx0XHRjb250aW51ZTtcbi1cdFx0XHR9IGVsc2UgaWYgKHJldCBcdTAwM2MgMCkge1xuLVx0XHRcdFx0bmZfY3RfdW5leHBlY3RfcmVsYXRlZChydHBfZXhwKTtcbi1cdFx0XHRcdG5hdGVkX3BvcnQgPSAwO1xuLVx0XHRcdFx0YnJlYWs7XG4tXHRcdFx0fVxuLVx0XHR9IGVsc2UgaWYgKHJldCAhPSAtRUJVU1kpIHtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9IGVsc2UgaWYgKHJldCA9PSAtRUJVU1kpIHtcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHR9IGVsc2UgaWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRcdG5hdGVkX3BvcnQgPSAwO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xuaW5kZXggN2FlNjhkNjA1ODZhMjMuLjRmNDZjOTJiZjhmYjI3IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jXG5AQCAtNTQ2LDYgJiM0Mzs1NDYsMzUgQEAgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LFxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQpO1xuIFxuJiM0MztpbnQgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcihzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0W10sXG4mIzQzO1x0XHRcdCAgICAgIHVuc2lnbmVkIGludCBmbGFncylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBuZl9jb25uX2hlbHAgKm1hc3Rlcl9oZWxwO1xuJiM0MztcdGludCBpLCByZXQ7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZuZl9jb25udHJhY2tfZXhwZWN0X2xvY2spO1xuJiM0MztcdG1hc3Rlcl9oZWxwID0gbmZjdF9oZWxwKGV4cGVjdFswXS1cdTAwM2VtYXN0ZXIpO1xuJiM0MztcdGlmIChtYXN0ZXJfaGVscCAhPSBuZmN0X2hlbHAoZXhwZWN0WzFdLVx1MDAzZW1hc3RlcikpIHtcbiYjNDM7XHRcdHJldCA9IC1FSU5WQUw7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIDI7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRyZXQgPSBfX25mX2N0X2V4cGVjdF9jaGVjayhleHBlY3RbaV0sIG1hc3Rlcl9oZWxwLCBmbGFncyk7XG4mIzQzO1x0XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIDI7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRuZl9jdF9leHBlY3RfaW5zZXJ0KGV4cGVjdFtpXSwgbWFzdGVyX2hlbHApO1xuJiM0MztcdFx0bmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydChJUEVYUF9ORVcsIGV4cGVjdFtpXSwgMCwgMCk7XG4mIzQzO1x0fVxuJiM0MztvdXQ6XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bmZfY29ubnRyYWNrX2V4cGVjdF9sb2NrKTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXIpO1xuJiM0MztcbiB2b2lkIG5mX2N0X2V4cGVjdF9pdGVyYXRlX2Rlc3Ryb3koYm9vbCAoKml0ZXIpKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICplLCB2b2lkICpkYXRhKSxcbiBcdFx0XHRcdCAgdm9pZCAqZGF0YSlcbiB7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY1xuaW5kZXggYWVhMDJmNmFmZjA5MmEuLjllOWZmOTg2ZWNlNWE5IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jXG5AQCAtNTkyLDYgJiM0Mzs1OTIsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG5mX25hdF9zZHBfbWVkaWEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXG4gXHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBtZWRpYWxlbixcbiBcdFx0XHRcdCAgICAgdW5pb24gbmZfaW5ldF9hZGRyICpydHBfYWRkcilcbiB7XG4mIzQzO1x0c3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnJ0cF9wYWlyWzJdID0geyBydHBfZXhwLCBydGNwX2V4cCB9O1xuIFx0ZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm87XG4gXHRzdHJ1Y3QgbmZfY29ubiAqY3QgPSBuZl9jdF9nZXQoc2tiLCBcdTAwMjZjdGluZm8pO1xuIFx0ZW51bSBpcF9jb25udHJhY2tfZGlyIGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcbkBAIC02MjIsMjQgJiM0Mzs2MjMsMTUgQEAgc3RhdGljIHVuc2lnbmVkIGludCBuZl9uYXRfc2RwX21lZGlhKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0XHRpbnQgcmV0O1xuIFxuIFx0XHRydHBfZXhwLVx1MDAzZXR1cGxlLmRzdC51LnVkcC5wb3J0ID0gaHRvbnMocG9ydCk7XG4tXHRcdHJldCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHJ0cF9leHAsXG4tXHRcdFx0XHRcdCAgIE5GX0NUX0VYUF9GX1NLSVBfTUFTVEVSKTtcbi1cdFx0aWYgKHJldCA9PSAtRUJVU1kpXG4tXHRcdFx0Y29udGludWU7XG4tXHRcdGVsc2UgaWYgKHJldCBcdTAwM2MgMCkge1xuLVx0XHRcdHBvcnQgPSAwO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHR9XG4gXHRcdHJ0Y3BfZXhwLVx1MDAzZXR1cGxlLmRzdC51LnVkcC5wb3J0ID0gaHRvbnMocG9ydCAmIzQzOyAxKTtcbi1cdFx0cmV0ID0gbmZfY3RfZXhwZWN0X3JlbGF0ZWQocnRjcF9leHAsXG4tXHRcdFx0XHRcdCAgIE5GX0NUX0VYUF9GX1NLSVBfTUFTVEVSKTtcbiYjNDM7XG4mIzQzO1x0XHRyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyKHJ0cF9wYWlyLFxuJiM0MztcdFx0XHRcdFx0XHRORl9DVF9FWFBfRl9TS0lQX01BU1RFUik7XG4gXHRcdGlmIChyZXQgPT0gMClcbiBcdFx0XHRicmVhaztcbi1cdFx0ZWxzZSBpZiAocmV0ID09IC1FQlVTWSkge1xuLVx0XHRcdG5mX2N0X3VuZXhwZWN0X3JlbGF0ZWQocnRwX2V4cCk7XG4mIzQzO1x0XHRlbHNlIGlmIChyZXQgPT0gLUVCVVNZKVxuIFx0XHRcdGNvbnRpbnVlO1xuLVx0XHR9IGVsc2UgaWYgKHJldCBcdTAwM2MgMCkge1xuLVx0XHRcdG5mX2N0X3VuZXhwZWN0X3JlbGF0ZWQocnRwX2V4cCk7XG4mIzQzO1x0XHRlbHNlIGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0XHRwb3J0ID0gMDtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjM5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19IMzIzJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19TSVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyJiMzNDssCiAgICAmIzM0O25hdF9ydHBfcnRjcCYjMzQ7LAogICAgJiMzNDtuZl9uYXRfc2RwX21lZGlhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXJgIHRvIGF0b21pY2FsbHkgaW5zZXJ0IGEgcGFpciBvZiByZWxhdGVkIGNvbm50cmFjayBleHBlY3RhdGlvbnMgKGUuZy4sIFJUUCBhbmQgUlRDUCkgYW5kIHVwZGF0ZXMgdGhlIEguMzIzIGFuZCBTSVAgTkFUIGhlbHBlcnMgdG8gdXNlIHRoaXMgbmV3IEFQSS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYyB0aGF0IGhhbmRsZXMgY29tcGxleCBwcm90b2NvbHMsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBzZW5kaW5nIGNyYWZ0ZWQgSC4zMjMgb3IgU0lQIHBhY2tldHMgdGhyb3VnaCBhIE5BVCBzZXR1cC4gSXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG5ldyBhdG9taWMgaW5zZXJ0aW9uIGxvZ2ljIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucywgbWVtb3J5IGxlYWtzLCBvciByYWNlIGNvbmRpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDI4ZmE0OWEyMDQ5NGFmM2JmNzZhY2NlMTg1MTliNWY4MjgwMmEwZjIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCAxMiAyMzozOTozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmggYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oCmluZGV4IGMwMjQzNDVjOWJkODYyLi4yNmQ2YmFiZDkyZmNkNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oCkBAIC0xNjEsNiAmIzQzOzE2MSw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3QsCiAJcmV0dXJuIG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChleHBlY3QsIDAsIDAsIGZsYWdzKTsKIH0KIAomIzQzO2ludCBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3RbXSwKJiM0MzsJCQkgICAgICB1bnNpZ25lZCBpbnQgZmxhZyk7CiYjNDM7CiBzdHJ1Y3QgbmZfY29ubl9oZWxwOwogdm9pZCBuZl9jdF9leHBlY3RhdGlvbl9nYyhzdHJ1Y3QgbmZfY29ubl9oZWxwICptYXN0ZXJfaGVscCk7CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMKaW5kZXggMTgzZThhM2ZmMmJhYmQuLjZiY2Q2NzM0NzY5YjU5IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYwpAQCAtMTgyLDYgJiM0MzsxODIsNyBAQCBzdGF0aWMgaW50IG5hdF9ydHBfcnRjcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsCiAJCQlzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqcnRwX2V4cCwKIAkJCXN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpydGNwX2V4cCkKIHsKJiM0MzsJc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnJ0cF9wYWlyWzJdID0geyBydHBfZXhwLCBydGNwX2V4cCB9OwogCXN0cnVjdCBuZl9jdF9oMzIzX21hc3RlciAqaW5mbyA9IG5mY3RfaGVscF9kYXRhKGN0KTsKIAlpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pOwogCWludCBpOwpAQCAtMjI3LDIyICYjNDM7MjI4LDEzIEBAIHN0YXRpYyBpbnQgbmF0X3J0cF9ydGNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCwKIAkJaW50IHJldDsKIAogCQlydHBfZXhwLSZndDt0dXBsZS5kc3QudS51ZHAucG9ydCA9IGh0b25zKG5hdGVkX3BvcnQpOwotCQlyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZChydHBfZXhwLCAwKTsKJiM0MzsJCXJ0Y3BfZXhwLSZndDt0dXBsZS5kc3QudS51ZHAucG9ydCA9IGh0b25zKG5hdGVkX3BvcnQgJiM0MzsgMSk7CiYjNDM7CQlyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyKHJ0cF9wYWlyLCAwKTsKIAkJaWYgKHJldCA9PSAwKSB7Ci0JCQlydGNwX2V4cC0mZ3Q7dHVwbGUuZHN0LnUudWRwLnBvcnQgPQotCQkJICAgIGh0b25zKG5hdGVkX3BvcnQgJiM0MzsgMSk7Ci0JCQlyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZChydGNwX2V4cCwgMCk7Ci0JCQlpZiAocmV0ID09IDApCi0JCQkJYnJlYWs7Ci0JCQllbHNlIGlmIChyZXQgPT0gLUVCVVNZKSB7Ci0JCQkJbmZfY3RfdW5leHBlY3RfcmVsYXRlZChydHBfZXhwKTsKLQkJCQljb250aW51ZTsKLQkJCX0gZWxzZSBpZiAocmV0ICZsdDsgMCkgewotCQkJCW5mX2N0X3VuZXhwZWN0X3JlbGF0ZWQocnRwX2V4cCk7Ci0JCQkJbmF0ZWRfcG9ydCA9IDA7Ci0JCQkJYnJlYWs7Ci0JCQl9Ci0JCX0gZWxzZSBpZiAocmV0ICE9IC1FQlVTWSkgewomIzQzOwkJCWJyZWFrOwomIzQzOwkJfSBlbHNlIGlmIChyZXQgPT0gLUVCVVNZKSB7CiYjNDM7CQkJY29udGludWU7CiYjNDM7CQl9IGVsc2UgaWYgKHJldCAmbHQ7IDApIHsKIAkJCW5hdGVkX3BvcnQgPSAwOwogCQkJYnJlYWs7CiAJCX0KZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMKaW5kZXggN2FlNjhkNjA1ODZhMjMuLjRmNDZjOTJiZjhmYjI3IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYwpAQCAtNTQ2LDYgJiM0Mzs1NDYsMzUgQEAgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LAogfQogRVhQT1JUX1NZTUJPTF9HUEwobmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0KTsKIAomIzQzO2ludCBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3RbXSwKJiM0MzsJCQkgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbmZfY29ubl9oZWxwICptYXN0ZXJfaGVscDsKJiM0MzsJaW50IGksIHJldDsKJiM0MzsKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7bmZfY29ubnRyYWNrX2V4cGVjdF9sb2NrKTsKJiM0MzsJbWFzdGVyX2hlbHAgPSBuZmN0X2hlbHAoZXhwZWN0WzBdLSZndDttYXN0ZXIpOwomIzQzOwlpZiAobWFzdGVyX2hlbHAgIT0gbmZjdF9oZWxwKGV4cGVjdFsxXS0mZ3Q7bWFzdGVyKSkgewomIzQzOwkJcmV0ID0gLUVJTlZBTDsKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwl9CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyAyOyBpJiM0MzsmIzQzOykgewomIzQzOwkJcmV0ID0gX19uZl9jdF9leHBlY3RfY2hlY2soZXhwZWN0W2ldLCBtYXN0ZXJfaGVscCwgZmxhZ3MpOwomIzQzOwkJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IDI7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQluZl9jdF9leHBlY3RfaW5zZXJ0KGV4cGVjdFtpXSwgbWFzdGVyX2hlbHApOwomIzQzOwkJbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydChJUEVYUF9ORVcsIGV4cGVjdFtpXSwgMCwgMCk7CiYjNDM7CX0KJiM0MztvdXQ6CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7bmZfY29ubnRyYWNrX2V4cGVjdF9sb2NrKTsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwobmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcik7CiYjNDM7CiB2b2lkIG5mX2N0X2V4cGVjdF9pdGVyYXRlX2Rlc3Ryb3koYm9vbCAoKml0ZXIpKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICplLCB2b2lkICpkYXRhKSwKIAkJCQkgIHZvaWQgKmRhdGEpCiB7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jCmluZGV4IGFlYTAyZjZhZmYwOTJhLi45ZTlmZjk4NmVjZTVhOSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmMKQEAgLTU5Miw2ICYjNDM7NTkyLDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBuZl9uYXRfc2RwX21lZGlhKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLAogCQkJCSAgICAgdW5zaWduZWQgaW50IG1lZGlhbGVuLAogCQkJCSAgICAgdW5pb24gbmZfaW5ldF9hZGRyICpydHBfYWRkcikKIHsKJiM0MzsJc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnJ0cF9wYWlyWzJdID0geyBydHBfZXhwLCBydGNwX2V4cCB9OwogCWVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvOwogCXN0cnVjdCBuZl9jb25uICpjdCA9IG5mX2N0X2dldChza2IsICZhbXA7Y3RpbmZvKTsKIAllbnVtIGlwX2Nvbm50cmFja19kaXIgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pOwpAQCAtNjIyLDI0ICYjNDM7NjIzLDE1IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X3NkcF9tZWRpYShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZiwKIAkJaW50IHJldDsKIAogCQlydHBfZXhwLSZndDt0dXBsZS5kc3QudS51ZHAucG9ydCA9IGh0b25zKHBvcnQpOwotCQlyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZChydHBfZXhwLAotCQkJCQkgICBORl9DVF9FWFBfRl9TS0lQX01BU1RFUik7Ci0JCWlmIChyZXQgPT0gLUVCVVNZKQotCQkJY29udGludWU7Ci0JCWVsc2UgaWYgKHJldCAmbHQ7IDApIHsKLQkJCXBvcnQgPSAwOwotCQkJYnJlYWs7Ci0JCX0KIAkJcnRjcF9leHAtJmd0O3R1cGxlLmRzdC51LnVkcC5wb3J0ID0gaHRvbnMocG9ydCAmIzQzOyAxKTsKLQkJcmV0ID0gbmZfY3RfZXhwZWN0X3JlbGF0ZWQocnRjcF9leHAsCi0JCQkJCSAgIE5GX0NUX0VYUF9GX1NLSVBfTUFTVEVSKTsKJiM0MzsKJiM0MzsJCXJldCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXIocnRwX3BhaXIsCiYjNDM7CQkJCQkJTkZfQ1RfRVhQX0ZfU0tJUF9NQVNURVIpOwogCQlpZiAocmV0ID09IDApCiAJCQlicmVhazsKLQkJZWxzZSBpZiAocmV0ID09IC1FQlVTWSkgewotCQkJbmZfY3RfdW5leHBlY3RfcmVsYXRlZChydHBfZXhwKTsKJiM0MzsJCWVsc2UgaWYgKHJldCA9PSAtRUJVU1kpCiAJCQljb250aW51ZTsKLQkJfSBlbHNlIGlmIChyZXQgJmx0OyAwKSB7Ci0JCQluZl9jdF91bmV4cGVjdF9yZWxhdGVkKHJ0cF9leHApOwomIzQzOwkJZWxzZSBpZiAocmV0ICZsdDsgMCkgewogCQkJcG9ydCA9IDA7CiAJCQlicmVhazsKIAkJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjgyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29ubnRyYWNrIEV4cGVjdGF0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIHdlJiMzOTtyZSBpbnRyb2R1Y2luZyBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcmAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jYC4gVGhlIGNvcmUgb2YgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgdG8gdGhlIG5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIGV4cGVjdGF0aW9uIGxvZ2ljLCB0YXJnZXRpbmcgSC4zMjMgYW5kIFNJUCBOQVQgaGVscGVycy4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhIGdvb2QgaWRlYSDigJMgd2UmIzM5O3JlIGNvbWJpbmluZyB0d28gZXhwZWN0YXRpb25zLCBSVFAgYW5kIFJUQ1AsIGludG8gYSBzaW5nbGUgYXRvbWljIG9wZXJhdGlvbi4gVGhpcyBzaG91bGQgYmUgYSBzaWduaWZpY2FudCBpbXByb3ZlbWVudCwgcHJldmVudGluZyB0aG9zZSBuYXN0eSByYWNlIGNvbmRpdGlvbnMgYW5kIHBhcnRpYWwgZXhwZWN0YXRpb24gaW5zZXJ0aW9ucyB0aGF0IGNhbiBjcm9wIHVwIHdpdGggdGhlc2Uga2luZHMgb2YgY29ubmVjdGlvbnMuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVhY2hhYmlsaXR5IGFuZCBhbnkgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMuIFNvLCB0aGlzIG5ldyBmdW5jdGlvbiwgYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXJgLCBpcyB1c2VkIGJ5IGBuYXRfcnRwX3J0Y3BgIGluIGBuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuY2AgYW5kIGBuZl9uYXRfc2RwX21lZGlhYCBpbiBgbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmNgLiBNYWtlcyBzZW5zZSwgdGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIGRlYWxpbmcgd2l0aCB0aG9zZSBOQVQgaGVscGVycy4KCk5vdywgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucy4gTGV0JiMzOTtzIHNlZS4uLiBgbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNgIGlzIGNvbnRyb2xsZWQgYnkgYENPTkZJR19ORl9OQVRfSDMyM2AgYW5kIGBuZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY2AgdXNlcyBgQ09ORklHX05GX05BVF9TSVBgLiBMb29rcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBidXQgSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRoaXMgaW4gdGhlIE1ha2VmaWxlcyB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIEdvdHRhIGJlIHRob3JvdWdoLiBUaGlzIGxvb2tzIGxpa2UgYSBzb2xpZCBjaGFuZ2UsIGFuZCBJJiMzOTtsbCBtYWtlIHN1cmUgaXQmIzM5O3MgZnVsbHkgdmFsaWRhdGVkIGJlZm9yZSByZWNvbW1lbmRpbmcgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMjM6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfbmF0X2gzMjMubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTM9b2JqLSQoQ09ORklHX05GX1JFSkVDVF9JUFY0KSAmIzQzOz0gbmZfcmVqZWN0X2lwdjQub1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZS0xNS0jIE5BVCBoZWxwZXJzIChuZl9jb25udHJhY2spXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX05GX05BVF9IMzIzKSAmIzQzOz0gbmZfbmF0X2gzMjMub1xubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTE3LW9iai0kKENPTkZJR19ORl9OQVRfUFBUUCkgJiM0Mzs9IG5mX25hdF9wcHRwLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTM4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgSSYjMzk7bSByZWFkeSB0byBkaXZlIGludG8gdGhpcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoaXMgdGV4dCBpcyBhYm91dCBhbmQgSSYjMzk7bGwgc3VtbWFyaXplIGl0IGFzIGlmIHRoZXNlIHdlcmUgbXkgb3duIGludGVybmFsIHRob3VnaHQgcHJvY2Vzc2VzLCBjb25zaWRlcmluZyBteSBleHBlcnRpc2UgaW4gdGhpcyBmaWVsZC4KCioqKgoKKipBbmFseXppbmcgU0lQIGFuZCBJdHMgSW1wbGljYXRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdoZW4gSSBzZWUgJiMzNDtTSVAsJiMzNDsgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBTZXNzaW9uIEluaXRpYXRpb24gUHJvdG9jb2wsIG9mIGNvdXJzZS4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIOKAkyB0aGUgZnVuZGFtZW50YWwgcm9sZSBpdCBwbGF5cyBpbiBlc3RhYmxpc2hpbmcsIG1vZGlmeWluZywgYW5kIHRlcm1pbmF0aW5nIG11bHRpbWVkaWEgc2Vzc2lvbnMuIEkmIzM5O20gY29uc2lkZXJpbmcgdGhlIGludHJpY2FjaWVzIG9mIGl0cyBtZXNzYWdlIHN0cnVjdHVyZSwgdGhlIFJGQ3MsIHRoZSB2YXJpb3VzIGV4dGVuc2lvbnMuLi4gdGhlIHdvcmtzLiBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgaG93IGl0JiMzOTtzIHVzZWQgaW4gVm9JUCwgdmlkZW8gY29uZmVyZW5jaW5nLCBpbnN0YW50IG1lc3NhZ2luZywgYW5kIGFsbCBvZiB0aGVzZSByZWFsLXRpbWUgY29tbXVuaWNhdGlvbiBzeXN0ZW1zLiBJJiMzOTttIHJ1bm5pbmcgdGhyb3VnaCB0aGUgdmFyaW91cyBTSVAgbWV0aG9kczogSU5WSVRFLCBCWUUsIFJFR0lTVEVSLCBPUFRJT05TLCBhbmQgdGhlaXIgaW5kaXZpZHVhbCBwdXJwb3Nlcy4gTXkgYnJhaW4gaXMgdGlja2luZyB0aHJvdWdoIHRoZSBzZWN1cml0eSBjb25zaWRlcmF0aW9ucywgdG9vIOKAkyBUTFMsIFNSVFAsIGFuZCB0aGUgb25nb2luZyBiYXR0bGUgYWdhaW5zdCBTSVAtYmFzZWQgYXR0YWNrcyBsaWtlIHNlc3Npb24gaGlqYWNraW5nIGFuZCBkZW5pYWwtb2Ytc2VydmljZS4gSSYjMzk7bSBwcm9iYWJseSBjb25zaWRlcmluZyBob3cgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgcHJvdG9jb2xzLCBsaWtlIFJUUCBhbmQgU0RQLCBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIElQLWJhc2VkIGNvbW11bmljYXRpb24uIEkmIzM5O20gYWxyZWFkeSBmb3JtdWxhdGluZyBxdWVzdGlvbnMgaW4gbXkgbWluZCwgc3VjaCBhcyAmIzM0O0hvdyBlZmZpY2llbnRseSBpcyB0aGlzIFNJUCBpbXBsZW1lbnRhdGlvbiBoYW5kbGluZyBOQVQgdHJhdmVyc2FsPyYjMzQ7LCAmIzM0O1doYXQgYXJlIHRoZSBsYXRlc3QgU0lQIHNlY3VyaXR5IGJlc3QgcHJhY3RpY2VzPyYjMzQ7LCBhbmQgJiMzNDtIb3cgd2VsbCBkb2VzIHRoaXMgaW1wbGVtZW50YXRpb24gc2NhbGUgdW5kZXIgaGlnaCBsb2FkPyYjMzQ7LiBJdCYjMzk7cyBhbGwgYWJvdXQgbG9va2luZyBhdCB0aGUgYmlnIHBpY3R1cmUgYW5kIHRoaW5raW5nIG9mIHRoZSBmaW5lciBkZXRhaWxzIGF0IHRoZSBzYW1lIHRpbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMjM6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfbmF0X3NpcC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTc0PW9iai0kKENPTkZJR19ORl9OQVRfSVJDKSAmIzQzOz0gbmZfbmF0X2lyYy5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjc1Om9iai0kKENPTkZJR19ORl9OQVRfU0lQKSAmIzQzOz0gbmZfbmF0X3NpcC5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTc2LW9iai0kKENPTkZJR19ORl9OQVRfVEZUUCkgJiM0Mzs9IG5mX25hdF90ZnRwLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTkyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBOQVQgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIE5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiBjb25maWd1cmF0aW9uczogYE5GX05BVF9IMzIzYCBhbmQgYE5GX05BVF9TSVBgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW1wb3J0YW50IHN5bWJvbHMgdGllZCB0byB0aGVtLiBCYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nLCBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcmAsIGBuYXRfcnRwX3J0Y3BgLCBhbmQgYG5mX25hdF9zZHBfbWVkaWFgIGFyZSB0aGUga2V5IGZvY3VzIHBvaW50cy4gTGV0JiMzOTtzIHNlZS4uLiBJIHJlbWVtYmVyIGBuYXRfcnRwX3J0Y3BgIGlzIGxpa2VseSBhIHN0YXRpYyBmdW5jdGlvbiwgYW5kIG5vdyBJJiMzOTttIGNvbmZpcm1pbmcgdGhhdCBpdCYjMzk7cyBpbmRlZWQgc3RhdGljIHdpdGhpbiBgbmZfbmF0X2gzMjMuY2AuIEFuZCBqdXN0IGFzIGV4cGVjdGVkLCBgbmZfbmF0X3NkcF9tZWRpYWAgaXMgYWxzbyBzdGF0aWMsIHJlc2lkaW5nIHdpdGhpbiBgbmZfbmF0X3NpcC5jYC4gIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyYCwgb24gdGhlIG90aGVyIGhhbmQsIGlzIGV4cG9ydGVkLCB3aGljaCBzaW1wbGlmaWVzIGl0cyB1c2FnZS4KCk5vdywgSSBzaG91bGQgaW52ZXN0aWdhdGUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciB1bmRlcmx5aW5nIGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9ucyBuZWNlc3NhcnkgZm9yIHRoZXNlIE5BVCBtb2R1bGVzIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gUmlnaHQsIHNvIGBORl9OQVRfSDMyM2AgcmVxdWlyZXMgYE5GX0NPTk5UUkFDS19IMzIzYCBhbmQsIG9mIGNvdXJzZSwgdGhlIGZ1bmRhbWVudGFsIGBORl9OQVRgIGNvbmZpZ3VyYXRpb24uIFNpbWlsYXJseSwgYE5GX05BVF9TSVBgIHJlbGllcyBvbiBgTkZfQ09OTlRSQUNLX1NJUGAgaW4gYWRkaXRpb24gdG8gdGhlIGJhc2UgYE5GX05BVGAgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBnb29kIHRvIGtub3cuCgpBbHJpZ2h0LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhvc2UgS2NvbmZpZyBkZXBlbmRlbmNpZXMgYXJlIHNldHVwIHJpZ2h0IGZvciBib3RoIGBORl9OQVRfSDMyM2AgYW5kIGBORl9OQVRfU0lQYC4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMjM6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX05BVF9IMzIzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9MTE4PWNvbmZpZyBORl9OQVRfUFBUUFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEyMi1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjEyMzpjb25maWcgTkZfTkFUX0gzMjNcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEyNC1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMjM6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY5NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIExvY2F0aW9uIENoZWNrKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMuLi4gSSB3YXMganVzdCBtdWxsaW5nIG92ZXIgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgSC4zMjMgTkFUIGluIHRoZSBMaW51eCBrZXJuZWwgYW5kIHN1ZGRlbmx5IGEgdGhvdWdodCBoaXQgbWUuIFdoZXJlIGV4YWN0bHkgaXMgdGhlIGNvbmZpZ3VyYXRpb24gc3dpdGNoIGZvciBgTkZfTkFUX0gzMjNgIGRlZmluZWQ/IExldCBtZSB0aGluay4uLiBJdCYjMzk7cyBnb3QgdG8gYmUgaW4gdGhlIG5ldGZpbHRlciBwYXJ0Li4uICpBaGEhKiBUaGF0JiMzOTtzIHJpZ2h0LCBpdCYjMzk7cyBhY3R1YWxseSByZXNpZGluZyBpbiBgbmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgZnVuZGFtZW50YWwgbmV0ZmlsdGVyIHJ1bGVzIGFyZSBzZXQgdXAuIEdvb2QsIGF0IGxlYXN0IHRoYXQgY2xhcmlmaWVzIGl0cyBsb2NhdGlvbiB3aXRoaW4gdGhlIHNvdXJjZSB0cmVlLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwIHdoZW4gd29ya2luZyB3aXRoIGtlcm5lbCBtb2R1bGVzOyBJIG5lZWQgdG8ga25vdyB3aGVyZSBJIGNhbiBhY3R1YWxseSBzZXQgdGhlIGNvbmZpZyBhbmQgaG93IGl0JiMzOTtzIGRlZmluZWQuIE5vdyB0aGF0IEkga25vdyB0aGlzLCBJIGNhbiBjb250aW51ZSBteSBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfTkFUX1NJUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDI2PWNvbmZpZyBORl9OQVRfSVJDXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MzE6Y29uZmlnIE5GX05BVF9TSVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzItXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDI1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCBzdW1tYXJpemluZyB0aGUgcHJvbXB0IGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIEtjb25maWcgRGVwZW5kZW5jaWVzIGZvciBOQVQgTW9kdWxlcyoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGVzZSBOQVQgbW9kdWxlcywgYE5GX05BVF9IMzIzYCBhbmQgYE5GX05BVF9TSVBgLCBhcmUgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIHB1bGwgdXAgdGhlaXIgS2NvbmZpZyBmaWxlcyBkaXJlY3RseS4gSSB3YW50IHRvIHNlZSB3aGF0IHRyaWdnZXJzIHRoZWlyIGluY2x1c2lvbi4gQXJlIHRoZXkgc2VsZWN0ZWQgYnkgc29tZSBwYXJlbnQgbW9kdWxlLCBpbXBseWluZyBhIGhpZ2hlci1sZXZlbCBwcm90b2NvbCBkZXBlbmRlbmN5PyBPciwgYXJlIHRoZXkgY29uZmlndXJlZCBpbmRlcGVuZGVudGx5LCB3aXRoIHRoZWlyIG93biBzcGVjaWZpYyBkZXBlbmRlbmNpZXM/IFRoZSBrZXkgaXMgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jeSB0cmVlLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyB0byB1bmRlcnN0YW5kIHdoeSBhbmQgd2hlcmUgdGhlc2Ugd2VyZSBpbnRyb2R1Y2VkLiBJdCBpcyBpbXBvcnRhbnQgdG8ga25vdyBpZiB0aGVyZSYjMzk7cyBhbnkgb3RoZXIgbW9kdWxlcyB0aGF0IHdvdWxkIGJlIHJlbGF0ZWQuIEkmIzM5O20gbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgdGhlIG92ZXJhbGwgbmV0d29yayBzdGFjayBjb25maWd1cmF0aW9uLCB3aGF0IG90aGVyIGZlYXR1cmVzIG1pZ2h0IGF1dG9tYXRpY2FsbHkgZW5hYmxlIG9yIGRpc2FibGUgdGhlbSwgYW5kIHVsdGltYXRlbHksIGhvdyB0aGV5IGFyZSBtYW5hZ2VkIGF0IGJ1aWxkIHRpbWUuIFRoaXMgd2lsbCBnaXZlIG1lIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGVpciBwbGFjZSBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05GX05BVF9IMzIzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9MTE4PWNvbmZpZyBORl9OQVRfUFBUUFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEyMi1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjEyMzpjb25maWcgTkZfTkFUX0gzMjNcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEyNC1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MjEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLgoKKipBbmFseXppbmcgdGhlIE5BVCBDb25maWd1cmF0aW9uKioKCkhtbSwgc28gYE5GX05BVF9IMzIzYCBpcyBhY3R1YWxseSBqdXN0IGRlZmluZWQgYXMgYHRyaXN0YXRlYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQuIEl0JiMzOTtzIG5vdCBhIGRpcmVjdCwgaGFyZC1jb2RlZCBvcHRpb24uIE5vdywgdGhlIGtleSBxdWVzdGlvbiBpcywgd2hhdCYjMzk7cyBjb250cm9sbGluZyBpdHMgc2VsZWN0aW9uPyBJcyBpdCBiZWluZyBpbmRpcmVjdGx5IGVuYWJsZWQgdGhyb3VnaCB0aGUgYE5GX0NPTk5UUkFDS19IMzIzYCBvcHRpb24/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBhbmQgS2NvbmZpZyBzZXR1cCB0byBjb25maXJtIGlmIHRoYXQmIzM5O3MgdGhlIGRyaXZlci4gU2VlbXMgdGhhdCBJJiMzOTt2ZSBzZWVuIHRoaXMgZGVwZW5kZW5jeSBiZWZvcmUsIGl0JiMzOTtzIHByZXR0eSBjb21tb24gZm9yIHJlbGF0ZWQgTkFUIGFuZCBjb25uZWN0aW9uIHRyYWNraW5nIG1vZHVsZXMgdG8gYmUgaW50ZXJ3b3ZlbiBsaWtlIHRoaXMuIEl0JiMzOTtzIGxpa2VseSB0aGF0IGl0IGdldHMgcHVsbGVkIGluIGFzIHBhcnQgb2YgdGhlIGxhcmdlciBILjMyMyBjb25uZWN0aW9uIHRyYWNraW5nIGZyYW1ld29yay4gTGV0IG1lIGRlbHZlIGRlZXBlciwgdGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZfTkFUX0gzMjMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Njg1CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6CgoqKkludmVzdGlnYXRpbmcgdGhlIEgzMjMgTkFUIE1vZHVsZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgTkZfTkFUX0gzMjNgIG1vZHVsZSBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGJ1aWxkIHN5c3RlbS4gVGhpcyB1c3VhbGx5IGludm9sdmVzIGRpZ2dpbmcgYXJvdW5kIGluIHRoZSBgS2NvbmZpZ2AgZmlsZXMg4oCTIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGRlcGVuZGVuY3kgYW5kIGJ1aWxkLXRpbWUgb3B0aW9ucyBhcmUgZGVmaW5lZC4gU28sIG15IGluc3RpbmN0IGlzIHRvIHVzZSBgZ3JlcGAuIExldCYjMzk7cyB1c2UgYGdyZXBgIHRvIHNlYXJjaCBhY3Jvc3MgYWxsIHRoZSBLY29uZmlnIGZpbGVzIGZvciB0aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gc3ltYm9sLCBgTkZfTkFUX0gzMjNgLiBUaGlzIHNob3VsZCBxdWlja2x5IHBvaW50IG1lIHRvIHRoZSByZWxldmFudCBzZWN0aW9ucyB3aGVyZSBpdCYjMzk7cyBkZWZpbmVkIGFuZCBob3BlZnVsbHkgZ2l2ZSBtZSBzb21lIGNvbnRleHQgYWJvdXQgaXRzIGRlcGVuZGVuY2llcyBhbmQgdXNhZ2UuIFRoYXQgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBmZWF0dXJlIGlzIGNvbnRyb2xsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05GX05BVF9IMzIzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTExOD1jb25maWcgTkZfTkFUX1BQVFBcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjM6Y29uZmlnIE5GX05BVF9IMzIzXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjQtXHR0cmlzdGF0ZVxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZT0xMz1vYmotJChDT05GSUdfTkZfUkVKRUNUX0lQVjQpICYjNDM7PSBuZl9yZWplY3RfaXB2NC5vXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTE1LSMgTkFUIGhlbHBlcnMgKG5mX2Nvbm50cmFjaylcbm5ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfTkZfTkFUX0gzMjMpICYjNDM7PSBuZl9uYXRfaDMyMy5vXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTctb2JqLSQoQ09ORklHX05GX05BVF9QUFRQKSAmIzQzOz0gbmZfbmF0X3BwdHAub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTM4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBILjMyMyBOQVQgQ29uZmlndXJhdGlvbioqCgpIbW0sIHNvbWV0aGluZyBmZWVscyBvZmYuLi4gSSYjMzk7bSB0cmFjaW5nIGJhY2sgdGhyb3VnaCB0aGUgbmV0d29yayBhZGRyZXNzIHRyYW5zbGF0aW9uIChOQVQpIGNvbmZpZ3VyYXRpb24sIGFuZCBzdWRkZW5seSBJIHJlYWxpemUgSSBjYW4mIzM5O3QgcXVpdGUgcGlucG9pbnQgd2hlcmUgYE5GX05BVF9IMzIzYCBpcyBhY3R1YWxseSBnZXR0aW5nIGVuYWJsZWQuIFRoYXQmIzM5O3Mgc3RyYW5nZS4gSSB3YXMgY2VydGFpbiBpdCB3YXMgYSBkZXBlbmRlbmN5LgoKT2theSwgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgZG91YmxlLWNoZWNrLiBUaGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgSC4zMjMgY29ubmVjdGlvbiB0cmFja2luZyBtb2R1bGUuIExldCYjMzk7cyB2ZXJpZnkgaG93IGBORl9DT05OVFJBQ0tfSDMyM2AgaXMgY29uZmlndXJlZC4gVGhhdCBtb2R1bGUgKnNob3VsZCogYmUgdGhlIGtleS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMjM6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZfQ09OTlRSQUNLX0gzMjMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnPTgxPUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZzo4MjpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnLTgzLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cbi0tXG5hcmNoL202OGsvY29uZmlncy9hcG9sbG9fZGVmY29uZmlnPTc3PUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWc6Nzg6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWctNzktQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZz04ND1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWc6ODU6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZy04Ni1DT05GSUdfTkZfQ09OTlRSQUNLX0lSQz1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnPTc0PUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZzo3NTpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnLTc2LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cbi0tXG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWc9NzY9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnOjc3OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWctNzgtQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWc9NzU9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZzo3NjpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZy03Ny1DT05GSUdfTkZfQ09OTlRSQUNLX0lSQz1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnPTk1PUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZzo5NjpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnLTk3LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cbi0tXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTQ3X2RlZmNvbmZpZz03Mz1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTQ3X2RlZmNvbmZpZzo3NDpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWctNzUtQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnPTc0PUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnOjc1OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTZ4X2RlZmNvbmZpZy03Ni1DT05GSUdfTkZfQ09OTlRSQUNLX0lSQz1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZz03NT1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnOjc2OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnLTc3LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cbi0tXG5hcmNoL202OGsvY29uZmlncy9zdW4zX2RlZmNvbmZpZz03MD1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXG5hcmNoL202OGsvY29uZmlncy9zdW4zX2RlZmNvbmZpZzo3MTpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWctNzItQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZz03MT1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXG5hcmNoL202OGsvY29uZmlncy9zdW4zeF9kZWZjb25maWc6NzI6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZy03My1DT05GSUdfTkZfQ09OTlRSQUNLX0lSQz1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc9NTc9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc6NTg6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnLTU5LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWc9NjA9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnOjYxOkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWctNjItQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc9NjQ9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZzo2NTpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZy02Ni1DT05GSUdfTkZfQ09OTlRSQUNLX0lSQz1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnPTYzPUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZzo2NDpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnLTY1LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9ybTIwMF9kZWZjb25maWc9NDc9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnOjQ4OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXG5hcmNoL21pcHMvY29uZmlncy9ybTIwMF9kZWZjb25maWctNDktQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2xpbmtzdGF0aW9uX2RlZmNvbmZpZz0zMD1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9saW5rc3RhdGlvbl9kZWZjb25maWc6MzE6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2xpbmtzdGF0aW9uX2RlZmNvbmZpZy0zMi1DT05GSUdfTkZfQ09OTlRSQUNLX0lSQz1tXG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXZtZTUxMDBfZGVmY29uZmlnPTM4PUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL212bWU1MTAwX2RlZmNvbmZpZzozOTpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXZtZTUxMDBfZGVmY29uZmlnLTQwLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnPTEyNj1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjEyNzpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZy0xMjgtQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0xODk9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjE5MDpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTE5MS1DT05GSUdfTkZfQ09OTlRSQUNLX0lSQz1tXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTE4MD1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6MTgxOkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMTgyLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cbi0tXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyMy5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzLmg6MjojaWZuZGVmIF9ORl9DT05OVFJBQ0tfSDMyM19IXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyMy5oOjM6I2RlZmluZSBfTkZfQ09OTlRSQUNLX0gzMjNfSFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjMuaC00LVxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX3R5cGVzLmgtNi1cbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX3R5cGVzLmg6NzojaWZuZGVmIF9ORl9DT05OVFJBQ0tfSDMyM19UWVBFU19IXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM190eXBlcy5oOjg6I2RlZmluZSBfTkZfQ09OTlRSQUNLX0gzMjNfVFlQRVNfSFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfdHlwZXMuaC05LVxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX3R5cGVzLmg9ODg5PXR5cGVkZWYgc3RydWN0IFJhc01lc3NhZ2Uge1x0LyogQ0hPSUNFICovXG4tLVxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfdHlwZXMuaC05MzctXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM190eXBlcy5oOjkzODojZW5kaWYgLyogX05GX0NPTk5UUkFDS19IMzIzX1RZUEVTX0ggKi9cbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz0xMjM9Y29uZmlnIE5GX05BVF9IMzIzXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMTI1LVx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjEyNjpcdGRlZmF1bHQgTkZfQ09OTlRSQUNLX0gzMjNcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEyNy1cbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9MjI3PWNvbmZpZyBORl9DT05OVFJBQ0tfRlRQXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIzOC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMzk6Y29uZmlnIE5GX0NPTk5UUkFDS19IMzIzXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjQwLVx0dHJpc3RhdGUgXCYjMzQ7SC4zMjMgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9NDU9b2JqLSQoQ09ORklHX05GX0NPTk5UUkFDS19GVFApICYjNDM7PSBuZl9jb25udHJhY2tfZnRwLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6NDY6b2JqLSQoQ09ORklHX05GX0NPTk5UUkFDS19IMzIzKSAmIzQzOz0gbmZfY29ubnRyYWNrX2gzMjMub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS00Ny1vYmotJChDT05GSUdfTkZfQ09OTlRSQUNLX0lSQykgJiM0Mzs9IG5mX2Nvbm50cmFja19pcmMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDA3OAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiAoTkFUKSBhbmQgU2Vzc2lvbiBJbml0aWF0aW9uIFByb3RvY29sIChTSVApIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgTkFUIGhhbmRsZXMgdGhlc2Ugc3BlY2lmaWMgcHJvdG9jb2xzLiBJdCBsb29rcyBsaWtlIHRoZSBgTkZfTkFUX0gzMjNgIG1vZHVsZSBuYXR1cmFsbHkgZGVmYXVsdHMgdG8gdGhlIGBORl9DT05OVFJBQ0tfSDMyM2AgbW9kdWxlIGZvciBjb25uZWN0aW9uIHRyYWNraW5nLiBUaGUgc2FtZSBwYXR0ZXJuIGlzIHByZXNlbnQgd2l0aCBgTkZfTkFUX1NJUGAgYW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBgTkZfQ09OTlRSQUNLX1NJUGAuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhhdCB0byBnZXQgcHJvcGVyIE5BVCBmdW5jdGlvbmFsaXR5IGZvciBILjMyMyBhbmQgU0lQIHRyYWZmaWMsIHdlIGRlZmluaXRlbHkgd2FudCB0byBlbmFibGUgYm90aCBgTkZfTkFUX0gzMjNgIGFuZCBgTkZfTkFUX1NJUGAuIEJlZm9yZSBJIGRvIHRoYXQsIHRob3VnaCwgSSYjMzk7bSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucyBmb3IgYE5GX05BVF9TSVBgIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHBvdGVudGlhbCBnb3RjaGFzIG9yIGRlcGVuZGVuY2llcyBJJiMzOTttIG92ZXJsb29raW5nLiBHb3R0YSBjb3ZlciBhbGwgbXkgYmFzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05GX05BVF9TSVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTQyNj1jb25maWcgTkZfTkFUX0lSQ1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDMxOmNvbmZpZyBORl9OQVRfU0lQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMyLVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMjM6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0NjIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBDaGVjayoqCgpPa2F5LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIHdvcmtpbmcgd2l0aCB0aGUgbW9zdCB1cC10by1kYXRlIGFuZCByZWxldmFudCBpbmZvcm1hdGlvbi4gTXkgaW5zdGluY3QgaXMgdGVsbGluZyBtZSB0byBnbyBiYWNrIHRvIHRoZSBzb3VyY2UsIGFuZCB0aGUgZmlyc3QgcGxhY2UgSSB0aGluayBvZiB0byBjb25maXJtIGEga2V5IGNvbmZpZ3VyYXRpb24gc2V0dGluZyBpcyB0aGUgYEtjb25maWdgIGZpbGVzLiBTcGVjaWZpY2FsbHksIHNpbmNlIHdlIGFyZSBkaXNjdXNzaW5nIGBORl9OQVRfU0lQYCwgSSBzaG91bGQgZXhhbWluZSB0aGUgbGluZXMgYXJvdW5kIHRoYXQgZW50cnkgd2l0aGluIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgLiBUaGlzIHdpbGwgc29saWRpZnkgbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBvcHRpb24gaXMgZGVmaW5lZCwgYW55IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLCBhbmQgd2hhdCBvdGhlciByZWxhdGVkIGZlYXR1cmVzIG1pZ2h0IGFsc28gYmUgY29uZmlndXJlZC4gVGhpcyBpcyBhIGZ1bmRhbWVudGFsIHN0ZXAgdG8gYXZvaWQgbWFraW5nIGFueSBpbmNvcnJlY3QgYXNzdW1wdGlvbnMgYW5kIGVuc3VyZSBJIGhhdmUgdGhlIHByb3BlciBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDI1Olx0XG4gNDI2Olx0Y29uZmlnIE5GX05BVF9JUkNcbiA0Mjc6XHRcdHRyaXN0YXRlXG4gNDI4Olx0XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgTkZfTkFUXG4gNDI5Olx0XHRkZWZhdWx0IE5GX05BVCBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLX0lSQ1xuIDQzMDpcdFxuIDQzMTpcdGNvbmZpZyBORl9OQVRfU0lQXG4gNDMyOlx0XHR0cmlzdGF0ZVxuIDQzMzpcdFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX05BVFxuIDQzNDpcdFx0ZGVmYXVsdCBORl9OQVQgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDS19TSVBcbiA0MzU6XHRcbiA0MzY6XHRjb25maWcgTkZfTkFUX1RGVFBcbiA0Mzc6XHRcdHRyaXN0YXRlXG4gNDM4Olx0XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgTkZfTkFUXG4gNDM5Olx0XHRkZWZhdWx0IE5GX05BVCBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLX1RGVFBcbiA0NDA6XHRcbiA0NDE6XHRjb25maWcgTkZfTkFUX1JFRElSRUNUXG4gNDQyOlx0XHRib29sXG4gNDQzOlx0XG4gNDQ0Olx0Y29uZmlnIE5GX05BVF9NQVNRVUVSQURFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTQ1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyBmb3IgTkFUIE1vZHVsZXMqKgoKQWxyaWdodCwgc28gdGhlIGBORl9OQVRfU0lQYCBtb2R1bGUgY29udmVuaWVudGx5IGJ1bmRsZXMgYE5GX05BVGAgYW5kIGBORl9DT05OVFJBQ0tfU0lQYC4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4gSXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBkaXJlY3QgYXBwcm9hY2ggaXMgdG8gc3BlY2lmeSBib3RoIGBORl9OQVRfSDMyM2AgYW5kIGBORl9OQVRfU0lQYCB3aXRoaW4gdGhlIGNvbmZpZ3VyYXRpb24uIE5vdywgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoZSBgTkZfTkFUX0gzMjNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBMZXQmIzM5O3Mgc2VlLCB0aGF0IHNob3VsZCBiZSBkZWZpbmVkIGluIGBuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ2AsIHNvIEkgbmVlZCB0byBjaGVjayB0aGF0IGZpbGUgZm9yIGRlcGVuZGVuY2llcyBhbmQgZW5zdXJlIHRoZXJlIGFyZSBubyB1bmZvcmVzZWVuIGNvbmZsaWN0cyBvciBpbnRlcmFjdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDExNTpcdFxuIDExNjpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAxMTc6XHRcbiAxMTg6XHRjb25maWcgTkZfTkFUX1BQVFBcbiAxMTk6XHRcdHRyaXN0YXRlXG4gMTIwOlx0XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS1xuIDEyMTpcdFx0ZGVmYXVsdCBORl9DT05OVFJBQ0tfUFBUUFxuIDEyMjpcdFxuIDEyMzpcdGNvbmZpZyBORl9OQVRfSDMyM1xuIDEyNDpcdFx0dHJpc3RhdGVcbiAxMjU6XHRcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXG4gMTI2Olx0XHRkZWZhdWx0IE5GX0NPTk5UUkFDS19IMzIzXG4gMTI3Olx0XG4gMTI4Olx0ZW5kaWYgIyBORl9OQVRcbiAxMjk6XHRcbiAxMzA6XHRjb25maWcgSVBfTkZfSVBUQUJMRVNcbiAxMzE6XHRcdHRyaXN0YXRlIFwmIzM0O0lQIHRhYmxlcyBzdXBwb3J0IChyZXF1aXJlZCBmb3IgZmlsdGVyaW5nL21hc3EvTkFUKVwmIzM0O1xuIDEzMjpcdFx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXG4gMTMzOlx0XHRzZWxlY3QgTkVURklMVEVSX1hUQUJMRVNcbiAxMzQ6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMjM6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0NzUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE5ldGZpbHRlciBOQVQgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIE5ldGZpbHRlciBOQVQgY29uZmlndXJhdGlvbnMsIGBORl9OQVRfSDMyM2AgYW5kIGBORl9OQVRfU0lQYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHNpbXBseSBlbmFibGUgdGhlbSBkaXJlY3RseSwgYnV0IHdhaXQsIHRoZXkgZGVwZW5kIG9uIGBORl9DT05OVFJBQ0tfSDMyM2AgYW5kIGBORl9DT05OVFJBQ0tfU0lQYC4gSG1tLCB0aGF0IG1lYW5zIGlmIEkganVzdCBzcGVjaWZ5IGBORl9OQVRfSDMyM2AgYW5kIGBORl9OQVRfU0lQYCwgd2lsbCB0aGUgZGVwZW5kZW5jaWVzIGJlIHJlc29sdmVkPyBCZWNhdXNlIHRoZXNlIGFyZSBgdHJpc3RhdGVgIGNvbmZpZ3Mgd2l0aG91dCBhIHByb21wdCwgSSBjYW4mIzM5O3QgZW5hYmxlIHRoZW0gZGlyZWN0bHkgdGhyb3VnaCBgbWVudWNvbmZpZ2AgbXlzZWxmLiBUaGV5JiMzOTtyZSBzZWxlY3RlZCBvciBkZWZhdWx0ZWQsIHdoaWNoIGNvbXBsaWNhdGVzIHRoaW5ncy4KCkxldCBtZSB0aGlua+KApiBgTkZfTkFUX0gzMjNgIGhhcyBgZGVmYXVsdCBORl9DT05OVFJBQ0tfSDMyM2AuIEFoYSEgU28sIGlmIEkgZW5hYmxlIGBORl9DT05OVFJBQ0tfSDMyM2AsIHRoZW4gYE5GX05BVF9IMzIzYCAqd2lsbCogYmUgZW5hYmxlZCwgYXNzdW1pbmcgYE5GX05BVGAgaXMgZW5hYmxlZCwgd2hpY2ggaXMgZ2VuZXJhbGx5IHRoZSBjYXNlLiBJdCYjMzk7cyB0aGUgc2FtZSBmb3IgYE5GX05BVF9TSVBgIHdoaWNoIGhhcyBgZGVmYXVsdCBORl9OQVQgJmFtcDsmYW1wOyBORl9DT05OVFJBQ0tfU0lQYC4gU28gdGhleSBib3RoIGRlcGVuZCBvbiB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBjb25maWdzLgoKVGhlcmVmb3JlLCBpdCBzZWVtcyB0aGUgbW9yZSBwcmFjdGljYWwgYXBwcm9hY2ggaXMgdG8gZm9jdXMgb24gZW5hYmxpbmcgYE5GX0NPTk5UUkFDS19IMzIzYCBhbmQgYE5GX0NPTk5UUkFDS19TSVBgLiBUaGlzIHNlZW1zIGxvZ2ljYWwgYmVjYXVzZSAqdGhlc2UqIGhhdmUgcHJvbXB0cyBhbmQgY2FuIGJlIHVzZXItc2VsZWN0ZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gbWVudXMuIFRoZXkgcHJvdmlkZSBhIG1vcmUgZGlyZWN0IGNvbnRyb2wgcG9pbnQuCgpOb3csIEkgc2hvdWxkIGNvbmZpcm0gdGhpcyBieSBjaGVja2luZyBgTkZfQ09OTlRSQUNLX0gzMjNgIGFuZCBgTkZfQ09OTlRSQUNLX1NJUGAgaW4gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjM1Olx0XHQgIFRoaXMgaXMgRlRQIHN1cHBvcnQgb24gTGF5ZXIgMyBpbmRlcGVuZGVudCBjb25uZWN0aW9uIHRyYWNraW5nLlxuIDIzNjpcdFxuIDIzNzpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAyMzg6XHRcbiAyMzk6XHRjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcbiAyNDA6XHRcdHRyaXN0YXRlIFwmIzM0O0guMzIzIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbiAyNDE6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXG4gMjQyOlx0XHRoZWxwXG4gMjQzOlx0XHQgIEguMzIzIGlzIGEgVm9JUCBzaWduYWxsaW5nIHByb3RvY29sIGZyb20gSVRVLVQuIEFzIG9uZSBvZiB0aGUgbW9zdFxuIDI0NDpcdFx0ICBpbXBvcnRhbnQgVm9JUCBwcm90b2NvbHMsIGl0IGlzIHdpZGVseSB1c2VkIGJ5IHZvaWNlIGhhcmR3YXJlIGFuZFxuIDI0NTpcdFx0ICBzb2Z0d2FyZSBpbmNsdWRpbmcgdm9pY2UgZ2F0ZXdheXMsIElQIHBob25lcywgTmV0bWVldGluZywgT3BlblBob25lLFxuIDI0NjpcdFx0ICBHbm9tZW1lZXRpbmcsIGV0Yy5cbiAyNDc6XHRcbiAyNDg6XHRcdCAgV2l0aCB0aGlzIG1vZHVsZSB5b3UgY2FuIHN1cHBvcnQgSC4zMjMgb24gYSBjb25uZWN0aW9uIHRyYWNraW5nL05BVFxuIDI0OTpcdFx0ICBmaXJld2FsbC5cbiAyNTA6XHRcbiAyNTE6XHRcdCAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgUkFTLCBGYXN0IFN0YXJ0LCBILjI0NSBUdW5uZWxsaW5nLCBDYWxsXG4gMjUyOlx0XHQgIEZvcndhcmRpbmcsIFJUUC9SVENQIGFuZCBULjEyMCBiYXNlZCBhdWRpbywgdmlkZW8sIGZheCwgY2hhdCxcbiAyNTM6XHRcdCAgd2hpdGVib2FyZCwgZmlsZSB0cmFuc2ZlciwgZXRjLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlXG4gMjU0Olx0XHQgIHZpc2l0IGh0dHA6Ly9uYXRoMzIzLnNvdXJjZWZvcmdlLm5ldC8uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNTI5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyBpZiBJLCBhbiBleHBlcnQsIGFtIHByb2Nlc3NpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBgTkZfQ09OTlRSQUNLX1NJUGAgLSBEaXZpbmcgaW50byB0aGUgRGV0YWlscyoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgYE5GX0NPTk5UUkFDS19TSVBgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIG9mIGNvdXJzZSwgdGhlIGltcGxpY2F0aW9ucyBmb3Igc3RhdGVmdWwgZmlyZXdhbGxpbmcgYW5kIGludHJ1c2lvbiBkZXRlY3Rpb24uIGBTSVBgIOKAkyBTZXNzaW9uIEluaXRpYXRpb24gUHJvdG9jb2wg4oCTIHRoYXQgYXV0b21hdGljYWxseSBicmluZ3MgbWUgdG8gdGhlIGNoYWxsZW5nZXMgb2YgZGVhbGluZyB3aXRoIGR5bmFtaWMgcG9ydHMsIGVtYmVkZGVkIGFkZHJlc3NlcyB3aXRoaW4gdGhlIHBheWxvYWQsIGFuZCB0aGUgZ2VuZXJhbGx5IGNvbXBsZXggbmF0dXJlIG9mIFZvSVAgdHJhZmZpYy4gSSBpbW1lZGlhdGVseSBjb25zaWRlciB0aGUgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgd2Ugb2Z0ZW4gc2VlIGluIGhhbmRsaW5nIFNJUCBjb25uZWN0aW9uIHRyYWNraW5nOyBob3cgZmluZWx5IHR1bmVkIGRvZXMgdGhlIG1vZHVsZSBuZWVkIHRvIGJlIHRvIGF2b2lkIGJlY29taW5nIGEgY2hva2UgcG9pbnQsIGVzcGVjaWFsbHkgdW5kZXIgaGVhdnkgbG9hZD8KCk15IG1pbmQgcmFjZXMgdG8gcG90ZW50aWFsIGlzc3VlczogIEhvdyBlZmZlY3RpdmVseSBkb2VzIGl0IGhhbmRsZSBOQVQgdHJhdmVyc2FsPyBXaGF0IGFib3V0IGRpZmZlcmVudCBTSVAgc2lnbmFsaW5nIG1ldGhvZHMgKFVEUCwgVENQLCBUTFMsIGFuZCBldmVuIFNDVFApIGFuZCB0aGUgbnVhbmNlcyBvZiBlYWNoPyBXZSBuZWVkIHRvIGVuc3VyZSBjb21wbGV0ZSBwcm90b2NvbCBjb21wbGlhbmNlIGFuZCBzZWN1cml0eSBhZ2FpbnN0IHRoaW5ncyBsaWtlIFNJUCBmbG9vZGluZyBhdHRhY2tzLCByZWdpc3RyYXRpb24gaGlqYWNrcywgb3IgbWFsZm9ybWVkIFNJUCBwYWNrZXRzIGRlc2lnbmVkIHRvIGV4cGxvaXQgdnVsbmVyYWJpbGl0aWVzIGluIHRoZSB0cmFja2luZyBjb2RlLiBJIGhhdmUgdG8gdGhpbmsgYWJvdXQgaG93IHRoaXMgbW9kdWxlIGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIHRoZSBuZXRmaWx0ZXIgZnJhbWV3b3JrLCBzcGVjaWZpY2FsbHkgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBjb25uZWN0aW9uIHRyYWNraW5nIGhlbHBlcnMuCgpIb3cgcm9idXN0IGlzIHRoZSBTSVAgcGFyc2VyPyBEb2VzIGl0IGhhbmRsZSBib3RoIFJGQyAzMjYxIGFuZCBhbnkgcmVsZXZhbnQgZXh0ZW5zaW9ucyBjbGVhbmx5PyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIGRpZmZlcmVudCBTSVAgaW1wbGVtZW50YXRpb25zIG91dCB0aGVyZSBpbiB0aGUgd2lsZD8gSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCBjb21tb24gU0lQIGRlcGxveW1lbnQgc2NlbmFyaW9zLCBsb29raW5nIGZvciBwb3RlbnRpYWwgZWRnZSBjYXNlcyBvciBwcm9ibGVtYXRpYyBjb25maWd1cmF0aW9ucyB0aGF0IGBORl9DT05OVFJBQ0tfU0lQYCBuZWVkcyB0byBncmFjZWZ1bGx5IGhhbmRsZS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZnVsbCBzdXBwb3J0IGZvciBhbGwgU0lQIG1ldGhvZHMgKElOVklURSwgQllFLCBSRUdJU1RFUiwgZXRjLiksIG9yIGlzIHRoZXJlIGEgc3BlY2lmaWMgc3Vic2V0IGRlZW1lZCBtb3JlIGNyaXRpY2FsPyBGaW5hbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgd2UgY2FuIHRyb3VibGVzaG9vdCBhbmQgZGVidWcgdGhpcyBtb2R1bGUgZWZmZWN0aXZlbHksIHNob3VsZCBwcm9ibGVtcyBhcmlzZS4gSXMgdGhlcmUgYWRlcXVhdGUgbG9nZ2luZyBhbmQgbW9uaXRvcmluZyBhdmFpbGFibGUsIGFuZCBob3cgYXJlIHdlIGdvaW5nIHRvIGludGVyYWN0IHdpdGggaXQ/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9DT05OVFJBQ0tfU0lQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zMzA9Y29uZmlnIE5GX0NPTk5UUkFDS19TQU5FXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0Mi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNDM6Y29uZmlnIE5GX0NPTk5UUkFDS19TSVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNDQtXHR0cmlzdGF0ZSBcJiMzNDtTSVAgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzA1MwoJCQkJCQkJb3V0cHV0OiAyMDQKCQkJCQkJCXRob3VnaHRzOiA5MDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgTmV0ZmlsdGVyJiMzOTtzIEguMzIzIGFuZCBTSVAgTkFUIEhlbHBlcnMqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCBgTkZfQ09OTlRSQUNLX0gzMjNgIGFuZCBgTkZfQ09OTlRSQUNLX1NJUGAgYXJlIHRoZSBjcnVjaWFsIGNvbmZpZ3Mgd2UgbmVlZCB0byBlbmFibGUgZm9yIHRoaXMgZnV6emluZyBjYW1wYWlnbi4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBvdXIgZm9jdXMgaXMgYWNjdXJhdGUuCgpJJiMzOTt2ZSBpZGVudGlmaWVkIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyYCBhcyB0aGUgbmV3IGZ1bmN0aW9uIGNlbnRyYWwgdG8gdGhpcy4gQWxzbywgdGhlIHBhdGNoIG1vZGlmaWVzIGBuYXRfcnRwX3J0Y3BgIGluIGBuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuY2AgYW5kIGBuZl9uYXRfc2RwX21lZGlhYCBpbiBgbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmNgLiBUaGUgZ29vZCBuZXdzIGlzLCBhbGwgdGhlc2UgZnVuY3Rpb25zIHNob3VsZCBiZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIHNwZWNpZmljYWxseSB0aHJvdWdoIEguMzIzIGFuZCBTSVAgcGFja2V0cyB0cmF2ZXJzaW5nIGEgbmV0ZmlsdGVyIE5BVCBzZXR1cC4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGNvcmUgbmV0ZmlsdGVyIGxvZ2ljLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIHRoZSBlZmZvcnQgdG8gZnV6eiBpdC4gV2UgbmVlZCB0byBiZSBzdXJlIHRoZSBuZXcgYXRvbWljIGluc2VydGlvbiBvZiB0aGUgcmVsYXRlZCBjb25udHJhY2sgZXhwZWN0YXRpb25zIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IGJ1Z3MuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBmdW5jdGlvbiBuYW1lczogYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXJgLCBgbmF0X3J0cF9ydGNwYCwgYW5kIGBuZl9uYXRfc2RwX21lZGlhYC4KCkEgcXVpY2sgY2hlY2sgY29uZmlybXMgYG5hdF9ydHBfcnRjcGAgYW5kIGBuZl9uYXRfc2RwX21lZGlhYCBhcmUgaW5kZWVkIHN0YXRpYywgYnV0IHN5emthbGxlciBjYW4gaGFuZGxlIGZ1enppbmcgc3RhdGljIGZ1bmN0aW9ucyBpZiB0aGUgZGVidWcgaW5mbyBpcyBwcmVzZW50LCB3aGljaCBpdCBzaG91bGQgYmUuCgpMZXQmIzM5O3MgZG8gYSBmaW5hbCByZXZpZXcgb2YgdGhlIGZ1bmN0aW9ucyBpbnZvbHZlZDoKKiAgIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyYCBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNgCiogICBgbmF0X3J0cF9ydGNwYCBpbiBgbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNgCiogICBgbmZfbmF0X3NkcF9tZWRpYWAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jYAoKSSYjMzk7dmUgcmUtdmVyaWZpZWQgdGhlIHBhdGNoIGl0c2VsZiwgY29uZmlybWluZyB0aGUgYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXJgIGZ1bmN0aW9uLgoKTm93LCBvbiB0aGUgY29uZmlnIHNpZGU6IE9yaWdpbmFsbHksIEkgdGhvdWdodCBgTkZfTkFUYCB3b3VsZCBiZSByZWxldmFudCwgYnV0IGxvb2tpbmcgY2xvc2VyLCBJIHRoaW5rIHdlIHNob3VsZCBqdXN0IHJlbHkgb24gZW5hYmxpbmcgYE5GX0NPTk5UUkFDS19IMzIzYCBhbmQgYE5GX0NPTk5UUkFDS19TSVBgLiBUaGUgY29kZSBjaGFuZ2VzIGFyZSBpbiB0aGUgSC4zMjMgYW5kIFNJUCBOQVQgaGVscGVycyB3aGljaCBhcmUgY29tcGlsZWQgdW5kZXIgdGhlIHNwZWNpZmljIGNvbmZpZ3MgYE5GX05BVF9IMzIzYCBhbmQgYE5GX05BVF9TSVBgLiBCZWNhdXNlIHRoZXNlIGNvbmZpZ3MgZG9uJiMzOTt0IGhhdmUgcHJvbXB0cywgdGhleSBhcmUgZW5hYmxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gYE5GX0NPTk5UUkFDS19IMzIzYCBhbmQgYE5GX0NPTk5UUkFDS19TSVBgIGFyZSBlbmFibGVkIChhc3N1bWluZyBgTkZfTkFUYCBpcyBlbmFibGVkKS4gU28sIHN0aWNraW5nIHdpdGggYE5GX0NPTk5UUkFDS19IMzIzYCBhbmQgYE5GX0NPTk5UUkFDS19TSVBgIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AgbWFrZXMgdGhlIG1vc3Qgc2Vuc2UuCgpTbyB0aGUgcmVhc29uaW5nIGhvbGRzOiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcmAsIHVwZGF0aW5nIEguMzIzIGFuZCBTSVAgTkFUIGhlbHBlcnMuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBjb3JlIG5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljIHRoYXQmIzM5O3MgcmVhY2hhYmxlIHRocm91Z2ggY3JhZnRlZCBILjMyMyBvciBTSVAgcGFja2V0cyByb3V0ZWQgdGhyb3VnaCBhIE5BVCBzZXR1cC4gV2UgbmVlZCB0byBmdXp6IHRoaXMgdG8gY2hlY2sgdGhlIG5ldyBhdG9taWMgaW5zZXJ0aW9uIGZvciByZWdyZXNzaW9ucywgbWVtb3J5IGxlYWtzLCBhbmQgYW55IHJhY2UgY29uZGl0aW9ucy4KCk15IGtleSBmb2N1cyBzeW1ib2xzIHdpbGwgYmU6IGBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyYCwgYG5hdF9ydHBfcnRjcGAsIGFuZCBgbmZfbmF0X3NkcF9tZWRpYWAuIEkmIzM5O20gY29uZmlkZW50IHRoaXMgaXMgYSBzb3VuZCBwbGFuLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0gzMjMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1NJUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXImIzM0OywKICAgICYjMzQ7bmF0X3J0cF9ydGNwJiMzNDssCiAgICAmIzM0O25mX25hdF9zZHBfbWVkaWEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcmAgdG8gYXRvbWljYWxseSBpbnNlcnQgYSBwYWlyIG9mIHJlbGF0ZWQgY29ubnRyYWNrIGV4cGVjdGF0aW9ucyAoZS5nLiwgUlRQIGFuZCBSVENQKSBhbmQgdXBkYXRlcyB0aGUgSC4zMjMgYW5kIFNJUCBOQVQgaGVscGVycyB0byB1c2UgdGhpcyBuZXcgQVBJLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIG5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljIHRoYXQgaGFuZGxlcyBjb21wbGV4IHByb3RvY29scywgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IHNlbmRpbmcgY3JhZnRlZCBILjMyMyBvciBTSVAgcGFja2V0cyB0aHJvdWdoIGEgTkFUIHNldHVwLiBJdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IGF0b21pYyBpbnNlcnRpb24gbG9naWMgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLCBtZW1vcnkgbGVha3MsIG9yIHJhY2UgY29uZGl0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0gzMjMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1NJUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXImIzM0OywKICAgICYjMzQ7bmF0X3J0cF9ydGNwJiMzNDssCiAgICAmIzM0O25mX25hdF9zZHBfbWVkaWEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcmAgdG8gYXRvbWljYWxseSBpbnNlcnQgYSBwYWlyIG9mIHJlbGF0ZWQgY29ubnRyYWNrIGV4cGVjdGF0aW9ucyAoZS5nLiwgUlRQIGFuZCBSVENQKSBhbmQgdXBkYXRlcyB0aGUgSC4zMjMgYW5kIFNJUCBOQVQgaGVscGVycyB0byB1c2UgdGhpcyBuZXcgQVBJLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIG5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljIHRoYXQgaGFuZGxlcyBjb21wbGV4IHByb3RvY29scywgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IHNlbmRpbmcgY3JhZnRlZCBILjMyMyBvciBTSVAgcGFja2V0cyB0aHJvdWdoIGEgTkFUIHNldHVwLiBJdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IGF0b21pYyBpbnNlcnRpb24gbG9naWMgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLCBtZW1vcnkgbGVha3MsIG9yIHJhY2UgY29uZGl0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjM5OjM5Ljg3MzEyMjIxN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1MTg1NzQ1NjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS19IMzIzXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfU0lQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpclwiLFxuICAgIFwibmF0X3J0cF9ydGNwXCIsXG4gICAgXCJuZl9uYXRfc2RwX21lZGlhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcmAgdG8gYXRvbWljYWxseSBpbnNlcnQgYSBwYWlyIG9mIHJlbGF0ZWQgY29ubnRyYWNrIGV4cGVjdGF0aW9ucyAoZS5nLiwgUlRQIGFuZCBSVENQKSBhbmQgdXBkYXRlcyB0aGUgSC4zMjMgYW5kIFNJUCBOQVQgaGVscGVycyB0byB1c2UgdGhpcyBuZXcgQVBJLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIG5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljIHRoYXQgaGFuZGxlcyBjb21wbGV4IHByb3RvY29scywgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IHNlbmRpbmcgY3JhZnRlZCBILjMyMyBvciBTSVAgcGFja2V0cyB0aHJvdWdoIGEgTkFUIHNldHVwLiBJdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IGF0b21pYyBpbnNlcnRpb24gbG9naWMgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMsIG1lbW9yeSBsZWFrcywgb3IgcmFjZSBjb25kaXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMzozOTozOS44NzMxMjc1NTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMDc5MDEyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI4ZmE0OWEyMDQ5NGFmM2JmNzZhY2NlMTg1MTliNWY4MjgwMmEwZjJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMTIgMjM6Mzk6MzggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaCBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmhcXG5pbmRleCBjMDI0MzQ1YzliZDg2Mi4uMjZkNmJhYmQ5MmZjZDcgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaFxcbisrKyBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmhcXG5AQCAtMTYxLDYgKzE2MSw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3QsXFxuIFxcdHJldHVybiBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoZXhwZWN0LCAwLCAwLCBmbGFncyk7XFxuIH1cXG4gXFxuK2ludCBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3RbXSxcXG4rXFx0XFx0XFx0ICAgICAgdW5zaWduZWQgaW50IGZsYWcpO1xcbitcXG4gc3RydWN0IG5mX2Nvbm5faGVscDtcXG4gdm9pZCBuZl9jdF9leHBlY3RhdGlvbl9nYyhzdHJ1Y3QgbmZfY29ubl9oZWxwICptYXN0ZXJfaGVscCk7XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYyBiL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jXFxuaW5kZXggMTgzZThhM2ZmMmJhYmQuLjZiY2Q2NzM0NzY5YjU5IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jXFxuKysrIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNcXG5AQCAtMTgyLDYgKzE4Miw3IEBAIHN0YXRpYyBpbnQgbmF0X3J0cF9ydGNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4gXFx0XFx0XFx0c3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnJ0cF9leHAsXFxuIFxcdFxcdFxcdHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpydGNwX2V4cClcXG4ge1xcbitcXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqcnRwX3BhaXJbMl0gPSB7IHJ0cF9leHAsIHJ0Y3BfZXhwIH07XFxuIFxcdHN0cnVjdCBuZl9jdF9oMzIzX21hc3RlciAqaW5mbyA9IG5mY3RfaGVscF9kYXRhKGN0KTtcXG4gXFx0aW50IGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcXG4gXFx0aW50IGk7XFxuQEAgLTIyNywyMiArMjI4LDEzIEBAIHN0YXRpYyBpbnQgbmF0X3J0cF9ydGNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4gXFx0XFx0aW50IHJldDtcXG4gXFxuIFxcdFxcdHJ0cF9leHAtXFx1MDAzZXR1cGxlLmRzdC51LnVkcC5wb3J0ID0gaHRvbnMobmF0ZWRfcG9ydCk7XFxuLVxcdFxcdHJldCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHJ0cF9leHAsIDApO1xcbitcXHRcXHRydGNwX2V4cC1cXHUwMDNldHVwbGUuZHN0LnUudWRwLnBvcnQgPSBodG9ucyhuYXRlZF9wb3J0ICsgMSk7XFxuK1xcdFxcdHJldCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXIocnRwX3BhaXIsIDApO1xcbiBcXHRcXHRpZiAocmV0ID09IDApIHtcXG4tXFx0XFx0XFx0cnRjcF9leHAtXFx1MDAzZXR1cGxlLmRzdC51LnVkcC5wb3J0ID1cXG4tXFx0XFx0XFx0ICAgIGh0b25zKG5hdGVkX3BvcnQgKyAxKTtcXG4tXFx0XFx0XFx0cmV0ID0gbmZfY3RfZXhwZWN0X3JlbGF0ZWQocnRjcF9leHAsIDApO1xcbi1cXHRcXHRcXHRpZiAocmV0ID09IDApXFxuLVxcdFxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRcXHRlbHNlIGlmIChyZXQgPT0gLUVCVVNZKSB7XFxuLVxcdFxcdFxcdFxcdG5mX2N0X3VuZXhwZWN0X3JlbGF0ZWQocnRwX2V4cCk7XFxuLVxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHRcXHR9IGVsc2UgaWYgKHJldCBcXHUwMDNjIDApIHtcXG4tXFx0XFx0XFx0XFx0bmZfY3RfdW5leHBlY3RfcmVsYXRlZChydHBfZXhwKTtcXG4tXFx0XFx0XFx0XFx0bmF0ZWRfcG9ydCA9IDA7XFxuLVxcdFxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRcXHR9XFxuLVxcdFxcdH0gZWxzZSBpZiAocmV0ICE9IC1FQlVTWSkge1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fSBlbHNlIGlmIChyZXQgPT0gLUVCVVNZKSB7XFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHR9IGVsc2UgaWYgKHJldCBcXHUwMDNjIDApIHtcXG4gXFx0XFx0XFx0bmF0ZWRfcG9ydCA9IDA7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNcXG5pbmRleCA3YWU2OGQ2MDU4NmEyMy4uNGY0NmM5MmJmOGZiMjcgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xcbkBAIC01NDYsNiArNTQ2LDM1IEBAIGludCBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cGVjdCxcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQpO1xcbiBcXG4raW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXIoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cGVjdFtdLFxcbitcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpXFxuK3tcXG4rXFx0c3RydWN0IG5mX2Nvbm5faGVscCAqbWFzdGVyX2hlbHA7XFxuK1xcdGludCBpLCByZXQ7XFxuK1xcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNm5mX2Nvbm50cmFja19leHBlY3RfbG9jayk7XFxuK1xcdG1hc3Rlcl9oZWxwID0gbmZjdF9oZWxwKGV4cGVjdFswXS1cXHUwMDNlbWFzdGVyKTtcXG4rXFx0aWYgKG1hc3Rlcl9oZWxwICE9IG5mY3RfaGVscChleHBlY3RbMV0tXFx1MDAzZW1hc3RlcikpIHtcXG4rXFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAyOyBpKyspIHtcXG4rXFx0XFx0cmV0ID0gX19uZl9jdF9leHBlY3RfY2hlY2soZXhwZWN0W2ldLCBtYXN0ZXJfaGVscCwgZmxhZ3MpO1xcbitcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAyOyBpKyspIHtcXG4rXFx0XFx0bmZfY3RfZXhwZWN0X2luc2VydChleHBlY3RbaV0sIG1hc3Rlcl9oZWxwKTtcXG4rXFx0XFx0bmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydChJUEVYUF9ORVcsIGV4cGVjdFtpXSwgMCwgMCk7XFxuK1xcdH1cXG4rb3V0OlxcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bmZfY29ubnRyYWNrX2V4cGVjdF9sb2NrKTtcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTChuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyKTtcXG4rXFxuIHZvaWQgbmZfY3RfZXhwZWN0X2l0ZXJhdGVfZGVzdHJveShib29sICgqaXRlcikoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmUsIHZvaWQgKmRhdGEpLFxcbiBcXHRcXHRcXHRcXHQgIHZvaWQgKmRhdGEpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY1xcbmluZGV4IGFlYTAyZjZhZmYwOTJhLi45ZTlmZjk4NmVjZTVhOSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jXFxuQEAgLTU5Miw2ICs1OTIsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG5mX25hdF9zZHBfbWVkaWEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXFxuIFxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IG1lZGlhbGVuLFxcbiBcXHRcXHRcXHRcXHQgICAgIHVuaW9uIG5mX2luZXRfYWRkciAqcnRwX2FkZHIpXFxuIHtcXG4rXFx0c3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnJ0cF9wYWlyWzJdID0geyBydHBfZXhwLCBydGNwX2V4cCB9O1xcbiBcXHRlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbztcXG4gXFx0c3RydWN0IG5mX2Nvbm4gKmN0ID0gbmZfY3RfZ2V0KHNrYiwgXFx1MDAyNmN0aW5mbyk7XFxuIFxcdGVudW0gaXBfY29ubnRyYWNrX2RpciBkaXIgPSBDVElORk8yRElSKGN0aW5mbyk7XFxuQEAgLTYyMiwyNCArNjIzLDE1IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X3NkcF9tZWRpYShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4gXFx0XFx0aW50IHJldDtcXG4gXFxuIFxcdFxcdHJ0cF9leHAtXFx1MDAzZXR1cGxlLmRzdC51LnVkcC5wb3J0ID0gaHRvbnMocG9ydCk7XFxuLVxcdFxcdHJldCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHJ0cF9leHAsXFxuLVxcdFxcdFxcdFxcdFxcdCAgIE5GX0NUX0VYUF9GX1NLSVBfTUFTVEVSKTtcXG4tXFx0XFx0aWYgKHJldCA9PSAtRUJVU1kpXFxuLVxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHRlbHNlIGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLVxcdFxcdFxcdHBvcnQgPSAwO1xcbi1cXHRcXHRcXHRicmVhaztcXG4tXFx0XFx0fVxcbiBcXHRcXHRydGNwX2V4cC1cXHUwMDNldHVwbGUuZHN0LnUudWRwLnBvcnQgPSBodG9ucyhwb3J0ICsgMSk7XFxuLVxcdFxcdHJldCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHJ0Y3BfZXhwLFxcbi1cXHRcXHRcXHRcXHRcXHQgICBORl9DVF9FWFBfRl9TS0lQX01BU1RFUik7XFxuK1xcbitcXHRcXHRyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyKHJ0cF9wYWlyLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRORl9DVF9FWFBfRl9TS0lQX01BU1RFUik7XFxuIFxcdFxcdGlmIChyZXQgPT0gMClcXG4gXFx0XFx0XFx0YnJlYWs7XFxuLVxcdFxcdGVsc2UgaWYgKHJldCA9PSAtRUJVU1kpIHtcXG4tXFx0XFx0XFx0bmZfY3RfdW5leHBlY3RfcmVsYXRlZChydHBfZXhwKTtcXG4rXFx0XFx0ZWxzZSBpZiAocmV0ID09IC1FQlVTWSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuLVxcdFxcdH0gZWxzZSBpZiAocmV0IFxcdTAwM2MgMCkge1xcbi1cXHRcXHRcXHRuZl9jdF91bmV4cGVjdF9yZWxhdGVkKHJ0cF9leHApO1xcbitcXHRcXHRlbHNlIGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdFxcdHBvcnQgPSAwO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMzozOTo0MC4zODQ2NzczNjZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0Njc0MTcyNzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS19IMzIzXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfU0lQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpclwiLFxuICAgIFwibmF0X3J0cF9ydGNwXCIsXG4gICAgXCJuZl9uYXRfc2RwX21lZGlhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcmAgdG8gYXRvbWljYWxseSBpbnNlcnQgYSBwYWlyIG9mIHJlbGF0ZWQgY29ubnRyYWNrIGV4cGVjdGF0aW9ucyAoZS5nLiwgUlRQIGFuZCBSVENQKSBhbmQgdXBkYXRlcyB0aGUgSC4zMjMgYW5kIFNJUCBOQVQgaGVscGVycyB0byB1c2UgdGhpcyBuZXcgQVBJLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIG5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljIHRoYXQgaGFuZGxlcyBjb21wbGV4IHByb3RvY29scywgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IHNlbmRpbmcgY3JhZnRlZCBILjMyMyBvciBTSVAgcGFja2V0cyB0aHJvdWdoIGEgTkFUIHNldHVwLiBJdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IGF0b21pYyBpbnNlcnRpb24gbG9naWMgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMsIG1lbW9yeSBsZWFrcywgb3IgcmFjZSBjb25kaXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI4ZmE0OWEyMDQ5NGFmM2JmNzZhY2NlMTg1MTliNWY4MjgwMmEwZjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxMiAyMzozOTozOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmggYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oXG5pbmRleCBjMDI0MzQ1YzliZDg2Mi4uMjZkNmJhYmQ5MmZjZDcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oXG4rKysgYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oXG5AQCAtMTYxLDYgKzE2MSw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3QsXG4gXHRyZXR1cm4gbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0KGV4cGVjdCwgMCwgMCwgZmxhZ3MpO1xuIH1cbiBcbitpbnQgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcihzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0W10sXG4rXHRcdFx0ICAgICAgdW5zaWduZWQgaW50IGZsYWcpO1xuK1xuIHN0cnVjdCBuZl9jb25uX2hlbHA7XG4gdm9pZCBuZl9jdF9leHBlY3RhdGlvbl9nYyhzdHJ1Y3QgbmZfY29ubl9oZWxwICptYXN0ZXJfaGVscCk7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuY1xuaW5kZXggMTgzZThhM2ZmMmJhYmQuLjZiY2Q2NzM0NzY5YjU5IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNcbisrKyBiL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jXG5AQCAtMTgyLDYgKzE4Miw3IEBAIHN0YXRpYyBpbnQgbmF0X3J0cF9ydGNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0XHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqcnRwX2V4cCxcbiBcdFx0XHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqcnRjcF9leHApXG4ge1xuK1x0c3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnJ0cF9wYWlyWzJdID0geyBydHBfZXhwLCBydGNwX2V4cCB9O1xuIFx0c3RydWN0IG5mX2N0X2gzMjNfbWFzdGVyICppbmZvID0gbmZjdF9oZWxwX2RhdGEoY3QpO1xuIFx0aW50IGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcbiBcdGludCBpO1xuQEAgLTIyNywyMiArMjI4LDEzIEBAIHN0YXRpYyBpbnQgbmF0X3J0cF9ydGNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0aW50IHJldDtcbiBcbiBcdFx0cnRwX2V4cC1cdTAwM2V0dXBsZS5kc3QudS51ZHAucG9ydCA9IGh0b25zKG5hdGVkX3BvcnQpO1xuLVx0XHRyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZChydHBfZXhwLCAwKTtcbitcdFx0cnRjcF9leHAtXHUwMDNldHVwbGUuZHN0LnUudWRwLnBvcnQgPSBodG9ucyhuYXRlZF9wb3J0ICsgMSk7XG4rXHRcdHJldCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXIocnRwX3BhaXIsIDApO1xuIFx0XHRpZiAocmV0ID09IDApIHtcbi1cdFx0XHRydGNwX2V4cC1cdTAwM2V0dXBsZS5kc3QudS51ZHAucG9ydCA9XG4tXHRcdFx0ICAgIGh0b25zKG5hdGVkX3BvcnQgKyAxKTtcbi1cdFx0XHRyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZChydGNwX2V4cCwgMCk7XG4tXHRcdFx0aWYgKHJldCA9PSAwKVxuLVx0XHRcdFx0YnJlYWs7XG4tXHRcdFx0ZWxzZSBpZiAocmV0ID09IC1FQlVTWSkge1xuLVx0XHRcdFx0bmZfY3RfdW5leHBlY3RfcmVsYXRlZChydHBfZXhwKTtcbi1cdFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRcdH0gZWxzZSBpZiAocmV0IFx1MDAzYyAwKSB7XG4tXHRcdFx0XHRuZl9jdF91bmV4cGVjdF9yZWxhdGVkKHJ0cF9leHApO1xuLVx0XHRcdFx0bmF0ZWRfcG9ydCA9IDA7XG4tXHRcdFx0XHRicmVhaztcbi1cdFx0XHR9XG4tXHRcdH0gZWxzZSBpZiAocmV0ICE9IC1FQlVTWSkge1xuK1x0XHRcdGJyZWFrO1xuK1x0XHR9IGVsc2UgaWYgKHJldCA9PSAtRUJVU1kpIHtcbitcdFx0XHRjb250aW51ZTtcbitcdFx0fSBlbHNlIGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0XHRuYXRlZF9wb3J0ID0gMDtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNcbmluZGV4IDdhZTY4ZDYwNTg2YTIzLi40ZjQ2YzkyYmY4ZmIyNyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xuQEAgLTU0Niw2ICs1NDYsMzUgQEAgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LFxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQpO1xuIFxuK2ludCBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3RbXSxcbitcdFx0XHQgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpXG4re1xuK1x0c3RydWN0IG5mX2Nvbm5faGVscCAqbWFzdGVyX2hlbHA7XG4rXHRpbnQgaSwgcmV0O1xuK1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNm5mX2Nvbm50cmFja19leHBlY3RfbG9jayk7XG4rXHRtYXN0ZXJfaGVscCA9IG5mY3RfaGVscChleHBlY3RbMF0tXHUwMDNlbWFzdGVyKTtcbitcdGlmIChtYXN0ZXJfaGVscCAhPSBuZmN0X2hlbHAoZXhwZWN0WzFdLVx1MDAzZW1hc3RlcikpIHtcbitcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0Z290byBvdXQ7XG4rXHR9XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyAyOyBpKyspIHtcbitcdFx0cmV0ID0gX19uZl9jdF9leHBlY3RfY2hlY2soZXhwZWN0W2ldLCBtYXN0ZXJfaGVscCwgZmxhZ3MpO1xuK1x0XHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRcdGdvdG8gb3V0O1xuK1x0fVxuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgMjsgaSsrKSB7XG4rXHRcdG5mX2N0X2V4cGVjdF9pbnNlcnQoZXhwZWN0W2ldLCBtYXN0ZXJfaGVscCk7XG4rXHRcdG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnQoSVBFWFBfTkVXLCBleHBlY3RbaV0sIDAsIDApO1xuK1x0fVxuK291dDpcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm5mX2Nvbm50cmFja19leHBlY3RfbG9jayk7XG4rXHRyZXR1cm4gcmV0O1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyKTtcbitcbiB2b2lkIG5mX2N0X2V4cGVjdF9pdGVyYXRlX2Rlc3Ryb3koYm9vbCAoKml0ZXIpKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICplLCB2b2lkICpkYXRhKSxcbiBcdFx0XHRcdCAgdm9pZCAqZGF0YSlcbiB7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY1xuaW5kZXggYWVhMDJmNmFmZjA5MmEuLjllOWZmOTg2ZWNlNWE5IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jXG5AQCAtNTkyLDYgKzU5Miw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X3NkcF9tZWRpYShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbiBcdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IG1lZGlhbGVuLFxuIFx0XHRcdFx0ICAgICB1bmlvbiBuZl9pbmV0X2FkZHIgKnJ0cF9hZGRyKVxuIHtcbitcdHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpydHBfcGFpclsyXSA9IHsgcnRwX2V4cCwgcnRjcF9leHAgfTtcbiBcdGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvO1xuIFx0c3RydWN0IG5mX2Nvbm4gKmN0ID0gbmZfY3RfZ2V0KHNrYiwgXHUwMDI2Y3RpbmZvKTtcbiBcdGVudW0gaXBfY29ubnRyYWNrX2RpciBkaXIgPSBDVElORk8yRElSKGN0aW5mbyk7XG5AQCAtNjIyLDI0ICs2MjMsMTUgQEAgc3RhdGljIHVuc2lnbmVkIGludCBuZl9uYXRfc2RwX21lZGlhKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0XHRpbnQgcmV0O1xuIFxuIFx0XHRydHBfZXhwLVx1MDAzZXR1cGxlLmRzdC51LnVkcC5wb3J0ID0gaHRvbnMocG9ydCk7XG4tXHRcdHJldCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHJ0cF9leHAsXG4tXHRcdFx0XHRcdCAgIE5GX0NUX0VYUF9GX1NLSVBfTUFTVEVSKTtcbi1cdFx0aWYgKHJldCA9PSAtRUJVU1kpXG4tXHRcdFx0Y29udGludWU7XG4tXHRcdGVsc2UgaWYgKHJldCBcdTAwM2MgMCkge1xuLVx0XHRcdHBvcnQgPSAwO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHR9XG4gXHRcdHJ0Y3BfZXhwLVx1MDAzZXR1cGxlLmRzdC51LnVkcC5wb3J0ID0gaHRvbnMocG9ydCArIDEpO1xuLVx0XHRyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZChydGNwX2V4cCxcbi1cdFx0XHRcdFx0ICAgTkZfQ1RfRVhQX0ZfU0tJUF9NQVNURVIpO1xuK1xuK1x0XHRyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyKHJ0cF9wYWlyLFxuK1x0XHRcdFx0XHRcdE5GX0NUX0VYUF9GX1NLSVBfTUFTVEVSKTtcbiBcdFx0aWYgKHJldCA9PSAwKVxuIFx0XHRcdGJyZWFrO1xuLVx0XHRlbHNlIGlmIChyZXQgPT0gLUVCVVNZKSB7XG4tXHRcdFx0bmZfY3RfdW5leHBlY3RfcmVsYXRlZChydHBfZXhwKTtcbitcdFx0ZWxzZSBpZiAocmV0ID09IC1FQlVTWSlcbiBcdFx0XHRjb250aW51ZTtcbi1cdFx0fSBlbHNlIGlmIChyZXQgXHUwMDNjIDApIHtcbi1cdFx0XHRuZl9jdF91bmV4cGVjdF9yZWxhdGVkKHJ0cF9leHApO1xuK1x0XHRlbHNlIGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0XHRwb3J0ID0gMDtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjM6Mzk6NDAuMzg0Njc4OTI2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYxNzI3MzAyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbm50cmFjayBFeHBlY3RhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2Ugd2UncmUgaW50cm9kdWNpbmcgYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXJgIGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY2AuIFRoZSBjb3JlIG9mIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IHRvIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBleHBlY3RhdGlvbiBsb2dpYywgdGFyZ2V0aW5nIEguMzIzIGFuZCBTSVAgTkFUIGhlbHBlcnMuIEl0IGxvb2tzIGxpa2UgaXQncyBhIGdvb2QgaWRlYSDigJMgd2UncmUgY29tYmluaW5nIHR3byBleHBlY3RhdGlvbnMsIFJUUCBhbmQgUlRDUCwgaW50byBhIHNpbmdsZSBhdG9taWMgb3BlcmF0aW9uLiBUaGlzIHNob3VsZCBiZSBhIHNpZ25pZmljYW50IGltcHJvdmVtZW50LCBwcmV2ZW50aW5nIHRob3NlIG5hc3R5IHJhY2UgY29uZGl0aW9ucyBhbmQgcGFydGlhbCBleHBlY3RhdGlvbiBpbnNlcnRpb25zIHRoYXQgY2FuIGNyb3AgdXAgd2l0aCB0aGVzZSBraW5kcyBvZiBjb25uZWN0aW9ucy5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlYWNoYWJpbGl0eSBhbmQgYW55IHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLiBTbywgdGhpcyBuZXcgZnVuY3Rpb24sIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyYCwgaXMgdXNlZCBieSBgbmF0X3J0cF9ydGNwYCBpbiBgbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNgIGFuZCBgbmZfbmF0X3NkcF9tZWRpYWAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jYC4gTWFrZXMgc2Vuc2UsIHRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIHJlc3BvbnNpYmxlIGZvciBkZWFsaW5nIHdpdGggdGhvc2UgTkFUIGhlbHBlcnMuXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucy4gTGV0J3Mgc2VlLi4uIGBuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuY2AgaXMgY29udHJvbGxlZCBieSBgQ09ORklHX05GX05BVF9IMzIzYCBhbmQgYG5ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jYCB1c2VzIGBDT05GSUdfTkZfTkFUX1NJUGAuIExvb2tzIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIGJ1dCBJJ2xsIGRvdWJsZS1jaGVjayB0aGlzIGluIHRoZSBNYWtlZmlsZXMgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBHb3R0YSBiZSB0aG9yb3VnaC4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgY2hhbmdlLCBhbmQgSSdsbCBtYWtlIHN1cmUgaXQncyBmdWxseSB2YWxpZGF0ZWQgYmVmb3JlIHJlY29tbWVuZGluZyBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY4MiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjM5OjQ2LjAwMTk1NTkyOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI1OTY5NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfbmF0X2gzMjMub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19ORl9SRUpFQ1RfSVBWNCkgKz0gbmZfcmVqZWN0X2lwdjQub1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTE1LSMgTkFUIGhlbHBlcnMgKG5mX2Nvbm50cmFjaylcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX05GX05BVF9IMzIzKSArPSBuZl9uYXRfaDMyMy5vXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTE3LW9iai0kKENPTkZJR19ORl9OQVRfUFBUUCkgKz0gbmZfbmF0X3BwdHAub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMzozOTo0Ni4xMTQ1NjExNzNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTk4OTM5MzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBJJ20gcmVhZHkgdG8gZGl2ZSBpbnRvIHRoaXMuIExldCdzIHNlZSB3aGF0IHRoaXMgdGV4dCBpcyBhYm91dCBhbmQgSSdsbCBzdW1tYXJpemUgaXQgYXMgaWYgdGhlc2Ugd2VyZSBteSBvd24gaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzZXMsIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZSBpbiB0aGlzIGZpZWxkLlxuXG4qKipcblxuKipBbmFseXppbmcgU0lQIGFuZCBJdHMgSW1wbGljYXRpb25zKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXaGVuIEkgc2VlIFwiU0lQLFwiIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gU2Vzc2lvbiBJbml0aWF0aW9uIFByb3RvY29sLCBvZiBjb3Vyc2UuIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIOKAkyB0aGUgZnVuZGFtZW50YWwgcm9sZSBpdCBwbGF5cyBpbiBlc3RhYmxpc2hpbmcsIG1vZGlmeWluZywgYW5kIHRlcm1pbmF0aW5nIG11bHRpbWVkaWEgc2Vzc2lvbnMuIEknbSBjb25zaWRlcmluZyB0aGUgaW50cmljYWNpZXMgb2YgaXRzIG1lc3NhZ2Ugc3RydWN0dXJlLCB0aGUgUkZDcywgdGhlIHZhcmlvdXMgZXh0ZW5zaW9ucy4uLiB0aGUgd29ya3MuIEkgbmVlZCB0byB0aGluayBhYm91dCBob3cgaXQncyB1c2VkIGluIFZvSVAsIHZpZGVvIGNvbmZlcmVuY2luZywgaW5zdGFudCBtZXNzYWdpbmcsIGFuZCBhbGwgb2YgdGhlc2UgcmVhbC10aW1lIGNvbW11bmljYXRpb24gc3lzdGVtcy4gSSdtIHJ1bm5pbmcgdGhyb3VnaCB0aGUgdmFyaW91cyBTSVAgbWV0aG9kczogSU5WSVRFLCBCWUUsIFJFR0lTVEVSLCBPUFRJT05TLCBhbmQgdGhlaXIgaW5kaXZpZHVhbCBwdXJwb3Nlcy4gTXkgYnJhaW4gaXMgdGlja2luZyB0aHJvdWdoIHRoZSBzZWN1cml0eSBjb25zaWRlcmF0aW9ucywgdG9vIOKAkyBUTFMsIFNSVFAsIGFuZCB0aGUgb25nb2luZyBiYXR0bGUgYWdhaW5zdCBTSVAtYmFzZWQgYXR0YWNrcyBsaWtlIHNlc3Npb24gaGlqYWNraW5nIGFuZCBkZW5pYWwtb2Ytc2VydmljZS4gSSdtIHByb2JhYmx5IGNvbnNpZGVyaW5nIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBwcm90b2NvbHMsIGxpa2UgUlRQIGFuZCBTRFAsIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgSVAtYmFzZWQgY29tbXVuaWNhdGlvbi4gSSdtIGFscmVhZHkgZm9ybXVsYXRpbmcgcXVlc3Rpb25zIGluIG15IG1pbmQsIHN1Y2ggYXMgXCJIb3cgZWZmaWNpZW50bHkgaXMgdGhpcyBTSVAgaW1wbGVtZW50YXRpb24gaGFuZGxpbmcgTkFUIHRyYXZlcnNhbD9cIiwgXCJXaGF0IGFyZSB0aGUgbGF0ZXN0IFNJUCBzZWN1cml0eSBiZXN0IHByYWN0aWNlcz9cIiwgYW5kIFwiSG93IHdlbGwgZG9lcyB0aGlzIGltcGxlbWVudGF0aW9uIHNjYWxlIHVuZGVyIGhpZ2ggbG9hZD9cIi4gSXQncyBhbGwgYWJvdXQgbG9va2luZyBhdCB0aGUgYmlnIHBpY3R1cmUgYW5kIHRoaW5raW5nIG9mIHRoZSBmaW5lciBkZXRhaWxzIGF0IHRoZSBzYW1lIHRpbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MzgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjM5OjQ5LjcxMzUwMjYxN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTM0NDY0NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfbmF0X3NpcC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT03ND1vYmotJChDT05GSUdfTkZfTkFUX0lSQykgKz0gbmZfbmF0X2lyYy5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo3NTpvYmotJChDT05GSUdfTkZfTkFUX1NJUCkgKz0gbmZfbmF0X3NpcC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS03Ni1vYmotJChDT05GSUdfTkZfTkFUX1RGVFApICs9IG5mX25hdF90ZnRwLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjM6Mzk6NDkuODI2OTU1NDhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjE5NTE3ODQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBOQVQgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gY29uZmlndXJhdGlvbnM6IGBORl9OQVRfSDMyM2AgYW5kIGBORl9OQVRfU0lQYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGltcG9ydGFudCBzeW1ib2xzIHRpZWQgdG8gdGhlbS4gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXJgLCBgbmF0X3J0cF9ydGNwYCwgYW5kIGBuZl9uYXRfc2RwX21lZGlhYCBhcmUgdGhlIGtleSBmb2N1cyBwb2ludHMuIExldCdzIHNlZS4uLiBJIHJlbWVtYmVyIGBuYXRfcnRwX3J0Y3BgIGlzIGxpa2VseSBhIHN0YXRpYyBmdW5jdGlvbiwgYW5kIG5vdyBJJ20gY29uZmlybWluZyB0aGF0IGl0J3MgaW5kZWVkIHN0YXRpYyB3aXRoaW4gYG5mX25hdF9oMzIzLmNgLiBBbmQganVzdCBhcyBleHBlY3RlZCwgYG5mX25hdF9zZHBfbWVkaWFgIGlzIGFsc28gc3RhdGljLCByZXNpZGluZyB3aXRoaW4gYG5mX25hdF9zaXAuY2AuICBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcmAsIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBleHBvcnRlZCwgd2hpY2ggc2ltcGxpZmllcyBpdHMgdXNhZ2UuXG5cbk5vdywgSSBzaG91bGQgaW52ZXN0aWdhdGUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciB1bmRlcmx5aW5nIGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9ucyBuZWNlc3NhcnkgZm9yIHRoZXNlIE5BVCBtb2R1bGVzIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gUmlnaHQsIHNvIGBORl9OQVRfSDMyM2AgcmVxdWlyZXMgYE5GX0NPTk5UUkFDS19IMzIzYCBhbmQsIG9mIGNvdXJzZSwgdGhlIGZ1bmRhbWVudGFsIGBORl9OQVRgIGNvbmZpZ3VyYXRpb24uIFNpbWlsYXJseSwgYE5GX05BVF9TSVBgIHJlbGllcyBvbiBgTkZfQ09OTlRSQUNLX1NJUGAgaW4gYWRkaXRpb24gdG8gdGhlIGJhc2UgYE5GX05BVGAgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBnb29kIHRvIGtub3cuXG5cbkFscmlnaHQsIGxldCdzIGp1c3QgbWFrZSBzdXJlIHRob3NlIEtjb25maWcgZGVwZW5kZW5jaWVzIGFyZSBzZXR1cCByaWdodCBmb3IgYm90aCBgTkZfTkFUX0gzMjNgIGFuZCBgTkZfTkFUX1NJUGAuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTkyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjM5OjU0LjQ0NjQ3NTgxNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjY1MTMzODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX05BVF9IMzIzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTExOD1jb25maWcgTkZfTkFUX1BQVFBcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEyMi1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjM6Y29uZmlnIE5GX05BVF9IMzIzXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMTI0LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjM5OjU0LjU3Mjk5NDgxNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NjMzNzU0MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipLY29uZmlnIExvY2F0aW9uIENoZWNrKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzLi4uIEkgd2FzIGp1c3QgbXVsbGluZyBvdmVyIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEguMzIzIE5BVCBpbiB0aGUgTGludXgga2VybmVsIGFuZCBzdWRkZW5seSBhIHRob3VnaHQgaGl0IG1lLiBXaGVyZSBleGFjdGx5IGlzIHRoZSBjb25maWd1cmF0aW9uIHN3aXRjaCBmb3IgYE5GX05BVF9IMzIzYCBkZWZpbmVkPyBMZXQgbWUgdGhpbmsuLi4gSXQncyBnb3QgdG8gYmUgaW4gdGhlIG5ldGZpbHRlciBwYXJ0Li4uICpBaGEhKiBUaGF0J3MgcmlnaHQsIGl0J3MgYWN0dWFsbHkgcmVzaWRpbmcgaW4gYG5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgZnVuZGFtZW50YWwgbmV0ZmlsdGVyIHJ1bGVzIGFyZSBzZXQgdXAuIEdvb2QsIGF0IGxlYXN0IHRoYXQgY2xhcmlmaWVzIGl0cyBsb2NhdGlvbiB3aXRoaW4gdGhlIHNvdXJjZSB0cmVlLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwIHdoZW4gd29ya2luZyB3aXRoIGtlcm5lbCBtb2R1bGVzOyBJIG5lZWQgdG8ga25vdyB3aGVyZSBJIGNhbiBhY3R1YWxseSBzZXQgdGhlIGNvbmZpZyBhbmQgaG93IGl0J3MgZGVmaW5lZC4gTm93IHRoYXQgSSBrbm93IHRoaXMsIEkgY2FuIGNvbnRpbnVlIG15IGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2OTQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMzozOTo1Ny40MzYzNzMwMTVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0MDQ5MjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9OQVRfU0lQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDI2PWNvbmZpZyBORl9OQVRfSVJDXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MzE6Y29uZmlnIE5GX05BVF9TSVBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMyLVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjM5OjU3LjUxMDQyOTY4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjA5MzAzNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCBzdW1tYXJpemluZyB0aGUgcHJvbXB0IGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyBLY29uZmlnIERlcGVuZGVuY2llcyBmb3IgTkFUIE1vZHVsZXMqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGVzZSBOQVQgbW9kdWxlcywgYE5GX05BVF9IMzIzYCBhbmQgYE5GX05BVF9TSVBgLCBhcmUgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJJ20gZ29pbmcgdG8gcHVsbCB1cCB0aGVpciBLY29uZmlnIGZpbGVzIGRpcmVjdGx5LiBJIHdhbnQgdG8gc2VlIHdoYXQgdHJpZ2dlcnMgdGhlaXIgaW5jbHVzaW9uLiBBcmUgdGhleSBzZWxlY3RlZCBieSBzb21lIHBhcmVudCBtb2R1bGUsIGltcGx5aW5nIGEgaGlnaGVyLWxldmVsIHByb3RvY29sIGRlcGVuZGVuY3k/IE9yLCBhcmUgdGhleSBjb25maWd1cmVkIGluZGVwZW5kZW50bHksIHdpdGggdGhlaXIgb3duIHNwZWNpZmljIGRlcGVuZGVuY2llcz8gVGhlIGtleSBpcyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmN5IHRyZWUuIEkgbmVlZCB0byB0cmFjZSB0aGlzIHRvIHVuZGVyc3RhbmQgd2h5IGFuZCB3aGVyZSB0aGVzZSB3ZXJlIGludHJvZHVjZWQuIEl0IGlzIGltcG9ydGFudCB0byBrbm93IGlmIHRoZXJlJ3MgYW55IG90aGVyIG1vZHVsZXMgdGhhdCB3b3VsZCBiZSByZWxhdGVkLiBJJ20gbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgdGhlIG92ZXJhbGwgbmV0d29yayBzdGFjayBjb25maWd1cmF0aW9uLCB3aGF0IG90aGVyIGZlYXR1cmVzIG1pZ2h0IGF1dG9tYXRpY2FsbHkgZW5hYmxlIG9yIGRpc2FibGUgdGhlbSwgYW5kIHVsdGltYXRlbHksIGhvdyB0aGV5IGFyZSBtYW5hZ2VkIGF0IGJ1aWxkIHRpbWUuIFRoaXMgd2lsbCBnaXZlIG1lIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGVpciBwbGFjZSBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwMjUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMzo0MDowMC44NzEzNjE3OTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTUwOTI2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORl9OQVRfSDMyM1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz0xMTg9Y29uZmlnIE5GX05BVF9QUFRQXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBORl9OQVRfSDMyM1xcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEyNC1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMzo0MDowMC45NzI4NzYxMDNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzOTczODk4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqQW5hbHl6aW5nIHRoZSBOQVQgQ29uZmlndXJhdGlvbioqXG5cbkhtbSwgc28gYE5GX05BVF9IMzIzYCBpcyBhY3R1YWxseSBqdXN0IGRlZmluZWQgYXMgYHRyaXN0YXRlYC4gVGhhdCdzIGludGVyZXN0aW5nLCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC4gSXQncyBub3QgYSBkaXJlY3QsIGhhcmQtY29kZWQgb3B0aW9uLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMsIHdoYXQncyBjb250cm9sbGluZyBpdHMgc2VsZWN0aW9uPyBJcyBpdCBiZWluZyBpbmRpcmVjdGx5IGVuYWJsZWQgdGhyb3VnaCB0aGUgYE5GX0NPTk5UUkFDS19IMzIzYCBvcHRpb24/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBhbmQgS2NvbmZpZyBzZXR1cCB0byBjb25maXJtIGlmIHRoYXQncyB0aGUgZHJpdmVyLiBTZWVtcyB0aGF0IEkndmUgc2VlbiB0aGlzIGRlcGVuZGVuY3kgYmVmb3JlLCBpdCdzIHByZXR0eSBjb21tb24gZm9yIHJlbGF0ZWQgTkFUIGFuZCBjb25uZWN0aW9uIHRyYWNraW5nIG1vZHVsZXMgdG8gYmUgaW50ZXJ3b3ZlbiBsaWtlIHRoaXMuIEl0J3MgbGlrZWx5IHRoYXQgaXQgZ2V0cyBwdWxsZWQgaW4gYXMgcGFydCBvZiB0aGUgbGFyZ2VyIEguMzIzIGNvbm5lY3Rpb24gdHJhY2tpbmcgZnJhbWV3b3JrLiBMZXQgbWUgZGVsdmUgZGVlcGVyLCB0aGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQyMSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjQwOjA0LjExMjYxNzMyNFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgzNTAwODYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5GX05BVF9IMzIzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjM6NDA6MDQuMTkwOTc2OTRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg5MDk2NjA1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEgzMjMgTkFUIE1vZHVsZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGBORl9OQVRfSDMyM2AgbW9kdWxlIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBrZXJuZWwncyBidWlsZCBzeXN0ZW0uIFRoaXMgdXN1YWxseSBpbnZvbHZlcyBkaWdnaW5nIGFyb3VuZCBpbiB0aGUgYEtjb25maWdgIGZpbGVzIOKAkyB0aGF0J3Mgd2hlcmUgdGhlIGRlcGVuZGVuY3kgYW5kIGJ1aWxkLXRpbWUgb3B0aW9ucyBhcmUgZGVmaW5lZC4gU28sIG15IGluc3RpbmN0IGlzIHRvIHVzZSBgZ3JlcGAuIExldCdzIHVzZSBgZ3JlcGAgdG8gc2VhcmNoIGFjcm9zcyBhbGwgdGhlIEtjb25maWcgZmlsZXMgZm9yIHRoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBzeW1ib2wsIGBORl9OQVRfSDMyM2AuIFRoaXMgc2hvdWxkIHF1aWNrbHkgcG9pbnQgbWUgdG8gdGhlIHJlbGV2YW50IHNlY3Rpb25zIHdoZXJlIGl0J3MgZGVmaW5lZCBhbmQgaG9wZWZ1bGx5IGdpdmUgbWUgc29tZSBjb250ZXh0IGFib3V0IGl0cyBkZXBlbmRlbmNpZXMgYW5kIHVzYWdlLiBUaGF0IHNob3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZmVhdHVyZSBpcyBjb250cm9sbGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Njg1LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjM6NDA6MDcuMDgxOTQ0NzA2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzc2MDA4MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5GX05BVF9IMzIzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz0xMTg9Y29uZmlnIE5GX05BVF9QUFRQXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBORl9OQVRfSDMyM1xcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEyNC1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19ORl9SRUpFQ1RfSVBWNCkgKz0gbmZfcmVqZWN0X2lwdjQub1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTE1LSMgTkFUIGhlbHBlcnMgKG5mX2Nvbm50cmFjaylcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX05GX05BVF9IMzIzKSArPSBuZl9uYXRfaDMyMy5vXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTE3LW9iai0kKENPTkZJR19ORl9OQVRfUFBUUCkgKz0gbmZfbmF0X3BwdHAub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMzo0MDowOS40NTc5NTczNTRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc3NDIxMTQ0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBILjMyMyBOQVQgQ29uZmlndXJhdGlvbioqXG5cbkhtbSwgc29tZXRoaW5nIGZlZWxzIG9mZi4uLiBJJ20gdHJhY2luZyBiYWNrIHRocm91Z2ggdGhlIG5ldHdvcmsgYWRkcmVzcyB0cmFuc2xhdGlvbiAoTkFUKSBjb25maWd1cmF0aW9uLCBhbmQgc3VkZGVubHkgSSByZWFsaXplIEkgY2FuJ3QgcXVpdGUgcGlucG9pbnQgd2hlcmUgYE5GX05BVF9IMzIzYCBpcyBhY3R1YWxseSBnZXR0aW5nIGVuYWJsZWQuIFRoYXQncyBzdHJhbmdlLiBJIHdhcyBjZXJ0YWluIGl0IHdhcyBhIGRlcGVuZGVuY3kuXG5cbk9rYXksIGxldCdzIHN0ZXAgYmFjayBhbmQgZG91YmxlLWNoZWNrLiBUaGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgSC4zMjMgY29ubmVjdGlvbiB0cmFja2luZyBtb2R1bGUuIExldCdzIHZlcmlmeSBob3cgYE5GX0NPTk5UUkFDS19IMzIzYCBpcyBjb25maWd1cmVkLiBUaGF0IG1vZHVsZSAqc2hvdWxkKiBiZSB0aGUga2V5LiBMZXQncyBzZWUgd2hhdCB0aGF0IHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxMzgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMzo0MDoxMi4yMzIxNzA4MDhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzk4NzgwNTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkZfQ09OTlRSQUNLX0gzMjNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZz04MT1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnOjgyOkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnLTgzLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWc9Nzc9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxcbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWc6Nzg6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cXG5hcmNoL202OGsvY29uZmlncy9hcG9sbG9fZGVmY29uZmlnLTc5LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZz04ND1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYXRhcmlfZGVmY29uZmlnOjg1OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYXRhcmlfZGVmY29uZmlnLTg2LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZz03ND1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnOjc1OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnLTc2LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2hwMzAwX2RlZmNvbmZpZz03Nj1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnOjc3OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnLTc4LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWc9NzU9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxcbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWc6NzY6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cXG5hcmNoL202OGsvY29uZmlncy9tYWNfZGVmY29uZmlnLTc3LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZz05NT1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnOjk2OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnLTk3LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnPTczPUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTQ3X2RlZmNvbmZpZzo3NDpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnLTc1LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnPTc0PUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTZ4X2RlZmNvbmZpZzo3NTpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnLTc2LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL3E0MF9kZWZjb25maWc9NzU9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxcbmFyY2gvbTY4ay9jb25maWdzL3E0MF9kZWZjb25maWc6NzY6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cXG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnLTc3LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnPTcwPUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cXG5hcmNoL202OGsvY29uZmlncy9zdW4zX2RlZmNvbmZpZzo3MTpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnLTcyLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZz03MT1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnOjcyOkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnLTczLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTU3PUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZzo1ODpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnLTU5LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZz02MD1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnOjYxOkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnLTYyLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc9NjQ9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc6NjU6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnLTY2LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz02Mz1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnOjY0OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnLTY1LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZz00Nz1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnOjQ4OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnLTQ5LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2xpbmtzdGF0aW9uX2RlZmNvbmZpZz0zMD1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbGlua3N0YXRpb25fZGVmY29uZmlnOjMxOkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbGlua3N0YXRpb25fZGVmY29uZmlnLTMyLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL212bWU1MTAwX2RlZmNvbmZpZz0zOD1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXZtZTUxMDBfZGVmY29uZmlnOjM5OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXZtZTUxMDBfZGVmY29uZmlnLTQwLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9MTI2PUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjEyNzpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWctMTI4LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0xODk9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxOTA6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTkxLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xODA9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxODE6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMTgyLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzLmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzLmg6MjojaWZuZGVmIF9ORl9DT05OVFJBQ0tfSDMyM19IXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjMuaDozOiNkZWZpbmUgX05GX0NPTk5UUkFDS19IMzIzX0hcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyMy5oLTQtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM190eXBlcy5oLTYtXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfdHlwZXMuaDo3OiNpZm5kZWYgX05GX0NPTk5UUkFDS19IMzIzX1RZUEVTX0hcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM190eXBlcy5oOjg6I2RlZmluZSBfTkZfQ09OTlRSQUNLX0gzMjNfVFlQRVNfSFxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX3R5cGVzLmgtOS1cXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX3R5cGVzLmg9ODg5PXR5cGVkZWYgc3RydWN0IFJhc01lc3NhZ2Uge1xcdC8qIENIT0lDRSAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfdHlwZXMuaC05MzctXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfdHlwZXMuaDo5Mzg6I2VuZGlmIC8qIF9ORl9DT05OVFJBQ0tfSDMyM19UWVBFU19IICovXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz0xMjM9Y29uZmlnIE5GX05BVF9IMzIzXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjUtXFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjY6XFx0ZGVmYXVsdCBORl9DT05OVFJBQ0tfSDMyM1xcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEyNy1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yMjc9Y29uZmlnIE5GX0NPTk5UUkFDS19GVFBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMzgtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjIzOTpjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjQwLVxcdHRyaXN0YXRlIFxcXCJILjMyMyBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZT00NT1vYmotJChDT05GSUdfTkZfQ09OTlRSQUNLX0ZUUCkgKz0gbmZfY29ubnRyYWNrX2Z0cC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo0NjpvYmotJChDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjMpICs9IG5mX2Nvbm50cmFja19oMzIzLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTQ3LW9iai0kKENPTkZJR19ORl9DT05OVFJBQ0tfSVJDKSArPSBuZl9jb25udHJhY2tfaXJjLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjM6NDA6MTQuNDcyMDU2MDI0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzMxODgxODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmV0d29yayBBZGRyZXNzIFRyYW5zbGF0aW9uIChOQVQpIGFuZCBTZXNzaW9uIEluaXRpYXRpb24gUHJvdG9jb2wgKFNJUCkgQ29uc2lkZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgTkFUIGhhbmRsZXMgdGhlc2Ugc3BlY2lmaWMgcHJvdG9jb2xzLiBJdCBsb29rcyBsaWtlIHRoZSBgTkZfTkFUX0gzMjNgIG1vZHVsZSBuYXR1cmFsbHkgZGVmYXVsdHMgdG8gdGhlIGBORl9DT05OVFJBQ0tfSDMyM2AgbW9kdWxlIGZvciBjb25uZWN0aW9uIHRyYWNraW5nLiBUaGUgc2FtZSBwYXR0ZXJuIGlzIHByZXNlbnQgd2l0aCBgTkZfTkFUX1NJUGAgYW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBgTkZfQ09OTlRSQUNLX1NJUGAuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhhdCB0byBnZXQgcHJvcGVyIE5BVCBmdW5jdGlvbmFsaXR5IGZvciBILjMyMyBhbmQgU0lQIHRyYWZmaWMsIHdlIGRlZmluaXRlbHkgd2FudCB0byBlbmFibGUgYm90aCBgTkZfTkFUX0gzMjNgIGFuZCBgTkZfTkFUX1NJUGAuIEJlZm9yZSBJIGRvIHRoYXQsIHRob3VnaCwgSSdtIGdvaW5nIHRvIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBvcHRpb25zIGZvciBgTkZfTkFUX1NJUGAgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgdGhlcmUgYXJlbid0IGFueSBwb3RlbnRpYWwgZ290Y2hhcyBvciBkZXBlbmRlbmNpZXMgSSdtIG92ZXJsb29raW5nLiBHb3R0YSBjb3ZlciBhbGwgbXkgYmFzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDc4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjM6NDA6MTcuNzQ1MjQ3MDI4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTExMjc3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORl9OQVRfU0lQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDI2PWNvbmZpZyBORl9OQVRfSVJDXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MzE6Y29uZmlnIE5GX05BVF9TSVBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMyLVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjQwOjE3Ljg0MDM2NTQ2MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzYzMzcwNDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBDaGVjayoqXG5cbk9rYXksIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSB3b3JraW5nIHdpdGggdGhlIG1vc3QgdXAtdG8tZGF0ZSBhbmQgcmVsZXZhbnQgaW5mb3JtYXRpb24uIE15IGluc3RpbmN0IGlzIHRlbGxpbmcgbWUgdG8gZ28gYmFjayB0byB0aGUgc291cmNlLCBhbmQgdGhlIGZpcnN0IHBsYWNlIEkgdGhpbmsgb2YgdG8gY29uZmlybSBhIGtleSBjb25maWd1cmF0aW9uIHNldHRpbmcgaXMgdGhlIGBLY29uZmlnYCBmaWxlcy4gU3BlY2lmaWNhbGx5LCBzaW5jZSB3ZSBhcmUgZGlzY3Vzc2luZyBgTkZfTkFUX1NJUGAsIEkgc2hvdWxkIGV4YW1pbmUgdGhlIGxpbmVzIGFyb3VuZCB0aGF0IGVudHJ5IHdpdGhpbiBgbmV0L25ldGZpbHRlci9LY29uZmlnYC4gVGhpcyB3aWxsIHNvbGlkaWZ5IG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgb3B0aW9uIGlzIGRlZmluZWQsIGFueSBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZSwgYW5kIHdoYXQgb3RoZXIgcmVsYXRlZCBmZWF0dXJlcyBtaWdodCBhbHNvIGJlIGNvbmZpZ3VyZWQuIFRoaXMgaXMgYSBmdW5kYW1lbnRhbCBzdGVwIHRvIGF2b2lkIG1ha2luZyBhbnkgaW5jb3JyZWN0IGFzc3VtcHRpb25zIGFuZCBlbnN1cmUgSSBoYXZlIHRoZSBwcm9wZXIgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0NjIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMzo0MDoyMC42MDM3Mzk2ODdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MjUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MjU6XFx0XFxuIDQyNjpcXHRjb25maWcgTkZfTkFUX0lSQ1xcbiA0Mjc6XFx0XFx0dHJpc3RhdGVcXG4gNDI4OlxcdFxcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLIFxcdTAwMjZcXHUwMDI2IE5GX05BVFxcbiA0Mjk6XFx0XFx0ZGVmYXVsdCBORl9OQVQgXFx1MDAyNlxcdTAwMjYgTkZfQ09OTlRSQUNLX0lSQ1xcbiA0MzA6XFx0XFxuIDQzMTpcXHRjb25maWcgTkZfTkFUX1NJUFxcbiA0MzI6XFx0XFx0dHJpc3RhdGVcXG4gNDMzOlxcdFxcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLIFxcdTAwMjZcXHUwMDI2IE5GX05BVFxcbiA0MzQ6XFx0XFx0ZGVmYXVsdCBORl9OQVQgXFx1MDAyNlxcdTAwMjYgTkZfQ09OTlRSQUNLX1NJUFxcbiA0MzU6XFx0XFxuIDQzNjpcXHRjb25maWcgTkZfTkFUX1RGVFBcXG4gNDM3OlxcdFxcdHRyaXN0YXRlXFxuIDQzODpcXHRcXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9OQVRcXG4gNDM5OlxcdFxcdGRlZmF1bHQgTkZfTkFUIFxcdTAwMjZcXHUwMDI2IE5GX0NPTk5UUkFDS19URlRQXFxuIDQ0MDpcXHRcXG4gNDQxOlxcdGNvbmZpZyBORl9OQVRfUkVESVJFQ1RcXG4gNDQyOlxcdFxcdGJvb2xcXG4gNDQzOlxcdFxcbiA0NDQ6XFx0Y29uZmlnIE5GX05BVF9NQVNRVUVSQURFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjQwOjIwLjYwMzkxMjI2N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDcyMDM1NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMgZm9yIE5BVCBNb2R1bGVzKipcblxuQWxyaWdodCwgc28gdGhlIGBORl9OQVRfU0lQYCBtb2R1bGUgY29udmVuaWVudGx5IGJ1bmRsZXMgYE5GX05BVGAgYW5kIGBORl9DT05OVFJBQ0tfU0lQYC4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4gSXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBkaXJlY3QgYXBwcm9hY2ggaXMgdG8gc3BlY2lmeSBib3RoIGBORl9OQVRfSDMyM2AgYW5kIGBORl9OQVRfU0lQYCB3aXRoaW4gdGhlIGNvbmZpZ3VyYXRpb24uIE5vdywgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoZSBgTkZfTkFUX0gzMjNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBMZXQncyBzZWUsIHRoYXQgc2hvdWxkIGJlIGRlZmluZWQgaW4gYG5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnYCwgc28gSSBuZWVkIHRvIGNoZWNrIHRoYXQgZmlsZSBmb3IgZGVwZW5kZW5jaWVzIGFuZCBlbnN1cmUgdGhlcmUgYXJlIG5vIHVuZm9yZXNlZW4gY29uZmxpY3RzIG9yIGludGVyYWN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA5NDUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjQwOjIzLjY3NTk0OTkwM1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTYwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMTU6XFx0XFxuIDExNjpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxcbiAxMTc6XFx0XFxuIDExODpcXHRjb25maWcgTkZfTkFUX1BQVFBcXG4gMTE5OlxcdFxcdHRyaXN0YXRlXFxuIDEyMDpcXHRcXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS1xcbiAxMjE6XFx0XFx0ZGVmYXVsdCBORl9DT05OVFJBQ0tfUFBUUFxcbiAxMjI6XFx0XFxuIDEyMzpcXHRjb25maWcgTkZfTkFUX0gzMjNcXG4gMTI0OlxcdFxcdHRyaXN0YXRlXFxuIDEyNTpcXHRcXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS1xcbiAxMjY6XFx0XFx0ZGVmYXVsdCBORl9DT05OVFJBQ0tfSDMyM1xcbiAxMjc6XFx0XFxuIDEyODpcXHRlbmRpZiAjIE5GX05BVFxcbiAxMjk6XFx0XFxuIDEzMDpcXHRjb25maWcgSVBfTkZfSVBUQUJMRVNcXG4gMTMxOlxcdFxcdHRyaXN0YXRlIFxcXCJJUCB0YWJsZXMgc3VwcG9ydCAocmVxdWlyZWQgZm9yIGZpbHRlcmluZy9tYXNxL05BVClcXFwiXFxuIDEzMjpcXHRcXHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cXG4gMTMzOlxcdFxcdHNlbGVjdCBORVRGSUxURVJfWFRBQkxFU1xcbiAxMzQ6XFx0XFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMzo0MDoyMy42NzYwMTY3NzJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA4MDIwMDQ4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTmV0ZmlsdGVyIE5BVCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIE5ldGZpbHRlciBOQVQgY29uZmlndXJhdGlvbnMsIGBORl9OQVRfSDMyM2AgYW5kIGBORl9OQVRfU0lQYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHNpbXBseSBlbmFibGUgdGhlbSBkaXJlY3RseSwgYnV0IHdhaXQsIHRoZXkgZGVwZW5kIG9uIGBORl9DT05OVFJBQ0tfSDMyM2AgYW5kIGBORl9DT05OVFJBQ0tfU0lQYC4gSG1tLCB0aGF0IG1lYW5zIGlmIEkganVzdCBzcGVjaWZ5IGBORl9OQVRfSDMyM2AgYW5kIGBORl9OQVRfU0lQYCwgd2lsbCB0aGUgZGVwZW5kZW5jaWVzIGJlIHJlc29sdmVkPyBCZWNhdXNlIHRoZXNlIGFyZSBgdHJpc3RhdGVgIGNvbmZpZ3Mgd2l0aG91dCBhIHByb21wdCwgSSBjYW4ndCBlbmFibGUgdGhlbSBkaXJlY3RseSB0aHJvdWdoIGBtZW51Y29uZmlnYCBteXNlbGYuIFRoZXkncmUgc2VsZWN0ZWQgb3IgZGVmYXVsdGVkLCB3aGljaCBjb21wbGljYXRlcyB0aGluZ3MuXG5cbkxldCBtZSB0aGlua+KApiBgTkZfTkFUX0gzMjNgIGhhcyBgZGVmYXVsdCBORl9DT05OVFJBQ0tfSDMyM2AuIEFoYSEgU28sIGlmIEkgZW5hYmxlIGBORl9DT05OVFJBQ0tfSDMyM2AsIHRoZW4gYE5GX05BVF9IMzIzYCAqd2lsbCogYmUgZW5hYmxlZCwgYXNzdW1pbmcgYE5GX05BVGAgaXMgZW5hYmxlZCwgd2hpY2ggaXMgZ2VuZXJhbGx5IHRoZSBjYXNlLiBJdCdzIHRoZSBzYW1lIGZvciBgTkZfTkFUX1NJUGAgd2hpY2ggaGFzIGBkZWZhdWx0IE5GX05BVCBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLX1NJUGAuIFNvIHRoZXkgYm90aCBkZXBlbmQgb24gdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgY29uZmlncy5cblxuVGhlcmVmb3JlLCBpdCBzZWVtcyB0aGUgbW9yZSBwcmFjdGljYWwgYXBwcm9hY2ggaXMgdG8gZm9jdXMgb24gZW5hYmxpbmcgYE5GX0NPTk5UUkFDS19IMzIzYCBhbmQgYE5GX0NPTk5UUkFDS19TSVBgLiBUaGlzIHNlZW1zIGxvZ2ljYWwgYmVjYXVzZSAqdGhlc2UqIGhhdmUgcHJvbXB0cyBhbmQgY2FuIGJlIHVzZXItc2VsZWN0ZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gbWVudXMuIFRoZXkgcHJvdmlkZSBhIG1vcmUgZGlyZWN0IGNvbnRyb2wgcG9pbnQuXG5cbk5vdywgSSBzaG91bGQgY29uZmlybSB0aGlzIGJ5IGNoZWNraW5nIGBORl9DT05OVFJBQ0tfSDMyM2AgYW5kIGBORl9DT05OVFJBQ0tfU0lQYCBpbiBgbmV0L25ldGZpbHRlci9LY29uZmlnYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDc1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjM6NDA6MjguNzU2MjIwMjY4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjM1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjM1OlxcdFxcdCAgVGhpcyBpcyBGVFAgc3VwcG9ydCBvbiBMYXllciAzIGluZGVwZW5kZW50IGNvbm5lY3Rpb24gdHJhY2tpbmcuXFxuIDIzNjpcXHRcXG4gMjM3OlxcdFxcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXFxuIDIzODpcXHRcXG4gMjM5OlxcdGNvbmZpZyBORl9DT05OVFJBQ0tfSDMyM1xcbiAyNDA6XFx0XFx0dHJpc3RhdGUgXFxcIkguMzIzIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuIDI0MTpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbiAyNDI6XFx0XFx0aGVscFxcbiAyNDM6XFx0XFx0ICBILjMyMyBpcyBhIFZvSVAgc2lnbmFsbGluZyBwcm90b2NvbCBmcm9tIElUVS1ULiBBcyBvbmUgb2YgdGhlIG1vc3RcXG4gMjQ0OlxcdFxcdCAgaW1wb3J0YW50IFZvSVAgcHJvdG9jb2xzLCBpdCBpcyB3aWRlbHkgdXNlZCBieSB2b2ljZSBoYXJkd2FyZSBhbmRcXG4gMjQ1OlxcdFxcdCAgc29mdHdhcmUgaW5jbHVkaW5nIHZvaWNlIGdhdGV3YXlzLCBJUCBwaG9uZXMsIE5ldG1lZXRpbmcsIE9wZW5QaG9uZSxcXG4gMjQ2OlxcdFxcdCAgR25vbWVtZWV0aW5nLCBldGMuXFxuIDI0NzpcXHRcXG4gMjQ4OlxcdFxcdCAgV2l0aCB0aGlzIG1vZHVsZSB5b3UgY2FuIHN1cHBvcnQgSC4zMjMgb24gYSBjb25uZWN0aW9uIHRyYWNraW5nL05BVFxcbiAyNDk6XFx0XFx0ICBmaXJld2FsbC5cXG4gMjUwOlxcdFxcbiAyNTE6XFx0XFx0ICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBSQVMsIEZhc3QgU3RhcnQsIEguMjQ1IFR1bm5lbGxpbmcsIENhbGxcXG4gMjUyOlxcdFxcdCAgRm9yd2FyZGluZywgUlRQL1JUQ1AgYW5kIFQuMTIwIGJhc2VkIGF1ZGlvLCB2aWRlbywgZmF4LCBjaGF0LFxcbiAyNTM6XFx0XFx0ICB3aGl0ZWJvYXJkLCBmaWxlIHRyYW5zZmVyLCBldGMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2VcXG4gMjU0OlxcdFxcdCAgdmlzaXQgaHR0cDovL25hdGgzMjMuc291cmNlZm9yZ2UubmV0Ly5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjM6NDA6MjguNzU2MzMyODc4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODYzNjcxOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyBpZiBJLCBhbiBleHBlcnQsIGFtIHByb2Nlc3NpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIGBORl9DT05OVFJBQ0tfU0lQYCAtIERpdmluZyBpbnRvIHRoZSBEZXRhaWxzKipcblxuUmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYE5GX0NPTk5UUkFDS19TSVBgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIG9mIGNvdXJzZSwgdGhlIGltcGxpY2F0aW9ucyBmb3Igc3RhdGVmdWwgZmlyZXdhbGxpbmcgYW5kIGludHJ1c2lvbiBkZXRlY3Rpb24uIGBTSVBgIOKAkyBTZXNzaW9uIEluaXRpYXRpb24gUHJvdG9jb2wg4oCTIHRoYXQgYXV0b21hdGljYWxseSBicmluZ3MgbWUgdG8gdGhlIGNoYWxsZW5nZXMgb2YgZGVhbGluZyB3aXRoIGR5bmFtaWMgcG9ydHMsIGVtYmVkZGVkIGFkZHJlc3NlcyB3aXRoaW4gdGhlIHBheWxvYWQsIGFuZCB0aGUgZ2VuZXJhbGx5IGNvbXBsZXggbmF0dXJlIG9mIFZvSVAgdHJhZmZpYy4gSSBpbW1lZGlhdGVseSBjb25zaWRlciB0aGUgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgd2Ugb2Z0ZW4gc2VlIGluIGhhbmRsaW5nIFNJUCBjb25uZWN0aW9uIHRyYWNraW5nOyBob3cgZmluZWx5IHR1bmVkIGRvZXMgdGhlIG1vZHVsZSBuZWVkIHRvIGJlIHRvIGF2b2lkIGJlY29taW5nIGEgY2hva2UgcG9pbnQsIGVzcGVjaWFsbHkgdW5kZXIgaGVhdnkgbG9hZD9cblxuTXkgbWluZCByYWNlcyB0byBwb3RlbnRpYWwgaXNzdWVzOiAgSG93IGVmZmVjdGl2ZWx5IGRvZXMgaXQgaGFuZGxlIE5BVCB0cmF2ZXJzYWw/IFdoYXQgYWJvdXQgZGlmZmVyZW50IFNJUCBzaWduYWxpbmcgbWV0aG9kcyAoVURQLCBUQ1AsIFRMUywgYW5kIGV2ZW4gU0NUUCkgYW5kIHRoZSBudWFuY2VzIG9mIGVhY2g/IFdlIG5lZWQgdG8gZW5zdXJlIGNvbXBsZXRlIHByb3RvY29sIGNvbXBsaWFuY2UgYW5kIHNlY3VyaXR5IGFnYWluc3QgdGhpbmdzIGxpa2UgU0lQIGZsb29kaW5nIGF0dGFja3MsIHJlZ2lzdHJhdGlvbiBoaWphY2tzLCBvciBtYWxmb3JtZWQgU0lQIHBhY2tldHMgZGVzaWduZWQgdG8gZXhwbG9pdCB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlIHRyYWNraW5nIGNvZGUuIEkgaGF2ZSB0byB0aGluayBhYm91dCBob3cgdGhpcyBtb2R1bGUgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgdGhlIG5ldGZpbHRlciBmcmFtZXdvcmssIHNwZWNpZmljYWxseSBpbiBjb25qdW5jdGlvbiB3aXRoIG90aGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgaGVscGVycy5cblxuSG93IHJvYnVzdCBpcyB0aGUgU0lQIHBhcnNlcj8gRG9lcyBpdCBoYW5kbGUgYm90aCBSRkMgMzI2MSBhbmQgYW55IHJlbGV2YW50IGV4dGVuc2lvbnMgY2xlYW5seT8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiBkaWZmZXJlbnQgU0lQIGltcGxlbWVudGF0aW9ucyBvdXQgdGhlcmUgaW4gdGhlIHdpbGQ/IEknbSBhbHJlYWR5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCBjb21tb24gU0lQIGRlcGxveW1lbnQgc2NlbmFyaW9zLCBsb29raW5nIGZvciBwb3RlbnRpYWwgZWRnZSBjYXNlcyBvciBwcm9ibGVtYXRpYyBjb25maWd1cmF0aW9ucyB0aGF0IGBORl9DT05OVFJBQ0tfU0lQYCBuZWVkcyB0byBncmFjZWZ1bGx5IGhhbmRsZS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZnVsbCBzdXBwb3J0IGZvciBhbGwgU0lQIG1ldGhvZHMgKElOVklURSwgQllFLCBSRUdJU1RFUiwgZXRjLiksIG9yIGlzIHRoZXJlIGEgc3BlY2lmaWMgc3Vic2V0IGRlZW1lZCBtb3JlIGNyaXRpY2FsPyBGaW5hbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgd2UgY2FuIHRyb3VibGVzaG9vdCBhbmQgZGVidWcgdGhpcyBtb2R1bGUgZWZmZWN0aXZlbHksIHNob3VsZCBwcm9ibGVtcyBhcmlzZS4gSXMgdGhlcmUgYWRlcXVhdGUgbG9nZ2luZyBhbmQgbW9uaXRvcmluZyBhdmFpbGFibGUsIGFuZCBob3cgYXJlIHdlIGdvaW5nIHRvIGludGVyYWN0IHdpdGggaXQ/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNTI5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjQwOjMzLjA0MjcwMjU4MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5NDQyMTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9DT05OVFJBQ0tfU0lQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9MzMwPWNvbmZpZyBORl9DT05OVFJBQ0tfU0FORVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0Mi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzQzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0lQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0NC1cXHR0cmlzdGF0ZSBcXFwiU0lQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjQwOjMzLjE1MjE1MDc5NVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTc0MzIzNzYzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFN0cmF0ZWd5IGZvciBOZXRmaWx0ZXIncyBILjMyMyBhbmQgU0lQIE5BVCBIZWxwZXJzKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IGBORl9DT05OVFJBQ0tfSDMyM2AgYW5kIGBORl9DT05OVFJBQ0tfU0lQYCBhcmUgdGhlIGNydWNpYWwgY29uZmlncyB3ZSBuZWVkIHRvIGVuYWJsZSBmb3IgdGhpcyBmdXp6aW5nIGNhbXBhaWduLiBMZXQncyBtYWtlIHN1cmUgb3VyIGZvY3VzIGlzIGFjY3VyYXRlLlxuXG5JJ3ZlIGlkZW50aWZpZWQgYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXJgIGFzIHRoZSBuZXcgZnVuY3Rpb24gY2VudHJhbCB0byB0aGlzLiBBbHNvLCB0aGUgcGF0Y2ggbW9kaWZpZXMgYG5hdF9ydHBfcnRjcGAgaW4gYG5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jYCBhbmQgYG5mX25hdF9zZHBfbWVkaWFgIGluIGBuZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY2AuIFRoZSBnb29kIG5ld3MgaXMsIGFsbCB0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSwgc3BlY2lmaWNhbGx5IHRocm91Z2ggSC4zMjMgYW5kIFNJUCBwYWNrZXRzIHRyYXZlcnNpbmcgYSBuZXRmaWx0ZXIgTkFUIHNldHVwLiBHaXZlbiB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gY29yZSBuZXRmaWx0ZXIgbG9naWMsIGl0J3MgZGVmaW5pdGVseSB3b3J0aCB0aGUgZWZmb3J0IHRvIGZ1enogaXQuIFdlIG5lZWQgdG8gYmUgc3VyZSB0aGUgbmV3IGF0b21pYyBpbnNlcnRpb24gb2YgdGhlIHJlbGF0ZWQgY29ubnRyYWNrIGV4cGVjdGF0aW9ucyBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGJ1Z3MuXG5cbkxldCdzIGRvdWJsZS1jaGVjayB0aGUgZnVuY3Rpb24gbmFtZXM6IGBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyYCwgYG5hdF9ydHBfcnRjcGAsIGFuZCBgbmZfbmF0X3NkcF9tZWRpYWAuXG5cbkEgcXVpY2sgY2hlY2sgY29uZmlybXMgYG5hdF9ydHBfcnRjcGAgYW5kIGBuZl9uYXRfc2RwX21lZGlhYCBhcmUgaW5kZWVkIHN0YXRpYywgYnV0IHN5emthbGxlciBjYW4gaGFuZGxlIGZ1enppbmcgc3RhdGljIGZ1bmN0aW9ucyBpZiB0aGUgZGVidWcgaW5mbyBpcyBwcmVzZW50LCB3aGljaCBpdCBzaG91bGQgYmUuXG5cbkxldCdzIGRvIGEgZmluYWwgcmV2aWV3IG9mIHRoZSBmdW5jdGlvbnMgaW52b2x2ZWQ6XG4qICAgYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXJgIGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY2BcbiogICBgbmF0X3J0cF9ydGNwYCBpbiBgbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNgXG4qICAgYG5mX25hdF9zZHBfbWVkaWFgIGluIGBuZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY2BcblxuSSd2ZSByZS12ZXJpZmllZCB0aGUgcGF0Y2ggaXRzZWxmLCBjb25maXJtaW5nIHRoZSBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcmAgZnVuY3Rpb24uXG5cbk5vdywgb24gdGhlIGNvbmZpZyBzaWRlOiBPcmlnaW5hbGx5LCBJIHRob3VnaHQgYE5GX05BVGAgd291bGQgYmUgcmVsZXZhbnQsIGJ1dCBsb29raW5nIGNsb3NlciwgSSB0aGluayB3ZSBzaG91bGQganVzdCByZWx5IG9uIGVuYWJsaW5nIGBORl9DT05OVFJBQ0tfSDMyM2AgYW5kIGBORl9DT05OVFJBQ0tfU0lQYC4gVGhlIGNvZGUgY2hhbmdlcyBhcmUgaW4gdGhlIEguMzIzIGFuZCBTSVAgTkFUIGhlbHBlcnMgd2hpY2ggYXJlIGNvbXBpbGVkIHVuZGVyIHRoZSBzcGVjaWZpYyBjb25maWdzIGBORl9OQVRfSDMyM2AgYW5kIGBORl9OQVRfU0lQYC4gQmVjYXVzZSB0aGVzZSBjb25maWdzIGRvbid0IGhhdmUgcHJvbXB0cywgdGhleSBhcmUgZW5hYmxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gYE5GX0NPTk5UUkFDS19IMzIzYCBhbmQgYE5GX0NPTk5UUkFDS19TSVBgIGFyZSBlbmFibGVkIChhc3N1bWluZyBgTkZfTkFUYCBpcyBlbmFibGVkKS4gU28sIHN0aWNraW5nIHdpdGggYE5GX0NPTk5UUkFDS19IMzIzYCBhbmQgYE5GX0NPTk5UUkFDS19TSVBgIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AgbWFrZXMgdGhlIG1vc3Qgc2Vuc2UuXG5cblNvIHRoZSByZWFzb25pbmcgaG9sZHM6IFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyYCwgdXBkYXRpbmcgSC4zMjMgYW5kIFNJUCBOQVQgaGVscGVycy4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgY29yZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYyB0aGF0J3MgcmVhY2hhYmxlIHRocm91Z2ggY3JhZnRlZCBILjMyMyBvciBTSVAgcGFja2V0cyByb3V0ZWQgdGhyb3VnaCBhIE5BVCBzZXR1cC4gV2UgbmVlZCB0byBmdXp6IHRoaXMgdG8gY2hlY2sgdGhlIG5ldyBhdG9taWMgaW5zZXJ0aW9uIGZvciByZWdyZXNzaW9ucywgbWVtb3J5IGxlYWtzLCBhbmQgYW55IHJhY2UgY29uZGl0aW9ucy5cblxuTXkga2V5IGZvY3VzIHN5bWJvbHMgd2lsbCBiZTogYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXJgLCBgbmF0X3J0cF9ydGNwYCwgYW5kIGBuZl9uYXRfc2RwX21lZGlhYC4gSSdtIGNvbmZpZGVudCB0aGlzIGlzIGEgc291bmQgcGxhbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMwNTMsIk91dHB1dFRva2VucyI6MjA0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjQwOjQ0Ljg5NTM5MDk3MVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzQ0OTU4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLX0gzMjNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19TSVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyXCIsXG4gICAgXCJuYXRfcnRwX3J0Y3BcIixcbiAgICBcIm5mX25hdF9zZHBfbWVkaWFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyYCB0byBhdG9taWNhbGx5IGluc2VydCBhIHBhaXIgb2YgcmVsYXRlZCBjb25udHJhY2sgZXhwZWN0YXRpb25zIChlLmcuLCBSVFAgYW5kIFJUQ1ApIGFuZCB1cGRhdGVzIHRoZSBILjMyMyBhbmQgU0lQIE5BVCBoZWxwZXJzIHRvIHVzZSB0aGlzIG5ldyBBUEkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgbG9naWMgdGhhdCBoYW5kbGVzIGNvbXBsZXggcHJvdG9jb2xzLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgc2VuZGluZyBjcmFmdGVkIEguMzIzIG9yIFNJUCBwYWNrZXRzIHRocm91Z2ggYSBOQVQgc2V0dXAuIEl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgYXRvbWljIGluc2VydGlvbiBsb2dpYyBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucywgbWVtb3J5IGxlYWtzLCBvciByYWNlIGNvbmRpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLX0gzMjNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19TSVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyXCIsXG4gICAgXCJuYXRfcnRwX3J0Y3BcIixcbiAgICBcIm5mX25hdF9zZHBfbWVkaWFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyYCB0byBhdG9taWNhbGx5IGluc2VydCBhIHBhaXIgb2YgcmVsYXRlZCBjb25udHJhY2sgZXhwZWN0YXRpb25zIChlLmcuLCBSVFAgYW5kIFJUQ1ApIGFuZCB1cGRhdGVzIHRoZSBILjMyMyBhbmQgU0lQIE5BVCBoZWxwZXJzIHRvIHVzZSB0aGlzIG5ldyBBUEkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgbG9naWMgdGhhdCBoYW5kbGVzIGNvbXBsZXggcHJvdG9jb2xzLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgc2VuZGluZyBjcmFmdGVkIEguMzIzIG9yIFNJUCBwYWNrZXRzIHRocm91Z2ggYSBOQVQgc2V0dXAuIEl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgYXRvbWljIGluc2VydGlvbiBsb2dpYyBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucywgbWVtb3J5IGxlYWtzLCBvciByYWNlIGNvbmRpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowf6xl9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-12 23:09:58 +0000 UTC FinishedAt: 2026-07-12 23:40:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2c7c88a412aa6d09cd04b414211b4ef8553b5309", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK_H323", "NF_CONNTRACK_SIP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "2c7c88a412aa6d09cd04b414211b4ef8553b5309", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK_H323", "NF_CONNTRACK_SIP" ], "series_id": "4666be86-66d5-419a-8019-b7a3f9f065e1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nf_ct_expect_related_pair", "nat_rtp_rtcp", "nf_nat_sdp_media" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19IMzIzJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19TSVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyJiMzNDssCiAgICAmIzM0O25hdF9ydHBfcnRjcCYjMzQ7LAogICAgJiMzNDtuZl9uYXRfc2RwX21lZGlhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXJgIHRvIGF0b21pY2FsbHkgaW5zZXJ0IGEgcGFpciBvZiByZWxhdGVkIGNvbm50cmFjayBleHBlY3RhdGlvbnMgKGUuZy4sIFJUUCBhbmQgUlRDUCkgYW5kIHVwZGF0ZXMgdGhlIEguMzIzIGFuZCBTSVAgTkFUIGhlbHBlcnMgdG8gdXNlIHRoaXMgbmV3IEFQSS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYyB0aGF0IGhhbmRsZXMgY29tcGxleCBwcm90b2NvbHMsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBzZW5kaW5nIGNyYWZ0ZWQgSC4zMjMgb3IgU0lQIHBhY2tldHMgdGhyb3VnaCBhIE5BVCBzZXR1cC4gSXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG5ldyBhdG9taWMgaW5zZXJ0aW9uIGxvZ2ljIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucywgbWVtb3J5IGxlYWtzLCBvciByYWNlIGNvbmRpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMjM6Mzk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyOGZhNDlhMjA0OTRhZjNiZjc2YWNjZTE4NTE5YjVmODI4MDJhMGYyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTIgMjM6Mzk6MzggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaCBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmhcbmluZGV4IGMwMjQzNDVjOWJkODYyLi4yNmQ2YmFiZDkyZmNkNyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmhcbkBAIC0xNjEsNiAmIzQzOzE2MSw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3QsXG4gXHRyZXR1cm4gbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0KGV4cGVjdCwgMCwgMCwgZmxhZ3MpO1xuIH1cbiBcbiYjNDM7aW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXIoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cGVjdFtdLFxuJiM0MztcdFx0XHQgICAgICB1bnNpZ25lZCBpbnQgZmxhZyk7XG4mIzQzO1xuIHN0cnVjdCBuZl9jb25uX2hlbHA7XG4gdm9pZCBuZl9jdF9leHBlY3RhdGlvbl9nYyhzdHJ1Y3QgbmZfY29ubl9oZWxwICptYXN0ZXJfaGVscCk7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuY1xuaW5kZXggMTgzZThhM2ZmMmJhYmQuLjZiY2Q2NzM0NzY5YjU5IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jXG5AQCAtMTgyLDYgJiM0MzsxODIsNyBAQCBzdGF0aWMgaW50IG5hdF9ydHBfcnRjcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG4gXHRcdFx0c3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnJ0cF9leHAsXG4gXHRcdFx0c3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnJ0Y3BfZXhwKVxuIHtcbiYjNDM7XHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqcnRwX3BhaXJbMl0gPSB7IHJ0cF9leHAsIHJ0Y3BfZXhwIH07XG4gXHRzdHJ1Y3QgbmZfY3RfaDMyM19tYXN0ZXIgKmluZm8gPSBuZmN0X2hlbHBfZGF0YShjdCk7XG4gXHRpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xuIFx0aW50IGk7XG5AQCAtMjI3LDIyICYjNDM7MjI4LDEzIEBAIHN0YXRpYyBpbnQgbmF0X3J0cF9ydGNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0aW50IHJldDtcbiBcbiBcdFx0cnRwX2V4cC1cdTAwM2V0dXBsZS5kc3QudS51ZHAucG9ydCA9IGh0b25zKG5hdGVkX3BvcnQpO1xuLVx0XHRyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZChydHBfZXhwLCAwKTtcbiYjNDM7XHRcdHJ0Y3BfZXhwLVx1MDAzZXR1cGxlLmRzdC51LnVkcC5wb3J0ID0gaHRvbnMobmF0ZWRfcG9ydCAmIzQzOyAxKTtcbiYjNDM7XHRcdHJldCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXIocnRwX3BhaXIsIDApO1xuIFx0XHRpZiAocmV0ID09IDApIHtcbi1cdFx0XHRydGNwX2V4cC1cdTAwM2V0dXBsZS5kc3QudS51ZHAucG9ydCA9XG4tXHRcdFx0ICAgIGh0b25zKG5hdGVkX3BvcnQgJiM0MzsgMSk7XG4tXHRcdFx0cmV0ID0gbmZfY3RfZXhwZWN0X3JlbGF0ZWQocnRjcF9leHAsIDApO1xuLVx0XHRcdGlmIChyZXQgPT0gMClcbi1cdFx0XHRcdGJyZWFrO1xuLVx0XHRcdGVsc2UgaWYgKHJldCA9PSAtRUJVU1kpIHtcbi1cdFx0XHRcdG5mX2N0X3VuZXhwZWN0X3JlbGF0ZWQocnRwX2V4cCk7XG4tXHRcdFx0XHRjb250aW51ZTtcbi1cdFx0XHR9IGVsc2UgaWYgKHJldCBcdTAwM2MgMCkge1xuLVx0XHRcdFx0bmZfY3RfdW5leHBlY3RfcmVsYXRlZChydHBfZXhwKTtcbi1cdFx0XHRcdG5hdGVkX3BvcnQgPSAwO1xuLVx0XHRcdFx0YnJlYWs7XG4tXHRcdFx0fVxuLVx0XHR9IGVsc2UgaWYgKHJldCAhPSAtRUJVU1kpIHtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9IGVsc2UgaWYgKHJldCA9PSAtRUJVU1kpIHtcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHR9IGVsc2UgaWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRcdG5hdGVkX3BvcnQgPSAwO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xuaW5kZXggN2FlNjhkNjA1ODZhMjMuLjRmNDZjOTJiZjhmYjI3IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jXG5AQCAtNTQ2LDYgJiM0Mzs1NDYsMzUgQEAgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LFxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQpO1xuIFxuJiM0MztpbnQgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcihzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0W10sXG4mIzQzO1x0XHRcdCAgICAgIHVuc2lnbmVkIGludCBmbGFncylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBuZl9jb25uX2hlbHAgKm1hc3Rlcl9oZWxwO1xuJiM0MztcdGludCBpLCByZXQ7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZuZl9jb25udHJhY2tfZXhwZWN0X2xvY2spO1xuJiM0MztcdG1hc3Rlcl9oZWxwID0gbmZjdF9oZWxwKGV4cGVjdFswXS1cdTAwM2VtYXN0ZXIpO1xuJiM0MztcdGlmIChtYXN0ZXJfaGVscCAhPSBuZmN0X2hlbHAoZXhwZWN0WzFdLVx1MDAzZW1hc3RlcikpIHtcbiYjNDM7XHRcdHJldCA9IC1FSU5WQUw7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIDI7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRyZXQgPSBfX25mX2N0X2V4cGVjdF9jaGVjayhleHBlY3RbaV0sIG1hc3Rlcl9oZWxwLCBmbGFncyk7XG4mIzQzO1x0XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIDI7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRuZl9jdF9leHBlY3RfaW5zZXJ0KGV4cGVjdFtpXSwgbWFzdGVyX2hlbHApO1xuJiM0MztcdFx0bmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydChJUEVYUF9ORVcsIGV4cGVjdFtpXSwgMCwgMCk7XG4mIzQzO1x0fVxuJiM0MztvdXQ6XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bmZfY29ubnRyYWNrX2V4cGVjdF9sb2NrKTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXIpO1xuJiM0MztcbiB2b2lkIG5mX2N0X2V4cGVjdF9pdGVyYXRlX2Rlc3Ryb3koYm9vbCAoKml0ZXIpKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICplLCB2b2lkICpkYXRhKSxcbiBcdFx0XHRcdCAgdm9pZCAqZGF0YSlcbiB7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY1xuaW5kZXggYWVhMDJmNmFmZjA5MmEuLjllOWZmOTg2ZWNlNWE5IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jXG5AQCAtNTkyLDYgJiM0Mzs1OTIsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG5mX25hdF9zZHBfbWVkaWEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXG4gXHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBtZWRpYWxlbixcbiBcdFx0XHRcdCAgICAgdW5pb24gbmZfaW5ldF9hZGRyICpydHBfYWRkcilcbiB7XG4mIzQzO1x0c3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnJ0cF9wYWlyWzJdID0geyBydHBfZXhwLCBydGNwX2V4cCB9O1xuIFx0ZW51bSBpcF9jb25udHJhY2tfaW5mbyBjdGluZm87XG4gXHRzdHJ1Y3QgbmZfY29ubiAqY3QgPSBuZl9jdF9nZXQoc2tiLCBcdTAwMjZjdGluZm8pO1xuIFx0ZW51bSBpcF9jb25udHJhY2tfZGlyIGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcbkBAIC02MjIsMjQgJiM0Mzs2MjMsMTUgQEAgc3RhdGljIHVuc2lnbmVkIGludCBuZl9uYXRfc2RwX21lZGlhKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0XHRpbnQgcmV0O1xuIFxuIFx0XHRydHBfZXhwLVx1MDAzZXR1cGxlLmRzdC51LnVkcC5wb3J0ID0gaHRvbnMocG9ydCk7XG4tXHRcdHJldCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHJ0cF9leHAsXG4tXHRcdFx0XHRcdCAgIE5GX0NUX0VYUF9GX1NLSVBfTUFTVEVSKTtcbi1cdFx0aWYgKHJldCA9PSAtRUJVU1kpXG4tXHRcdFx0Y29udGludWU7XG4tXHRcdGVsc2UgaWYgKHJldCBcdTAwM2MgMCkge1xuLVx0XHRcdHBvcnQgPSAwO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHR9XG4gXHRcdHJ0Y3BfZXhwLVx1MDAzZXR1cGxlLmRzdC51LnVkcC5wb3J0ID0gaHRvbnMocG9ydCAmIzQzOyAxKTtcbi1cdFx0cmV0ID0gbmZfY3RfZXhwZWN0X3JlbGF0ZWQocnRjcF9leHAsXG4tXHRcdFx0XHRcdCAgIE5GX0NUX0VYUF9GX1NLSVBfTUFTVEVSKTtcbiYjNDM7XG4mIzQzO1x0XHRyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyKHJ0cF9wYWlyLFxuJiM0MztcdFx0XHRcdFx0XHRORl9DVF9FWFBfRl9TS0lQX01BU1RFUik7XG4gXHRcdGlmIChyZXQgPT0gMClcbiBcdFx0XHRicmVhaztcbi1cdFx0ZWxzZSBpZiAocmV0ID09IC1FQlVTWSkge1xuLVx0XHRcdG5mX2N0X3VuZXhwZWN0X3JlbGF0ZWQocnRwX2V4cCk7XG4mIzQzO1x0XHRlbHNlIGlmIChyZXQgPT0gLUVCVVNZKVxuIFx0XHRcdGNvbnRpbnVlO1xuLVx0XHR9IGVsc2UgaWYgKHJldCBcdTAwM2MgMCkge1xuLVx0XHRcdG5mX2N0X3VuZXhwZWN0X3JlbGF0ZWQocnRwX2V4cCk7XG4mIzQzO1x0XHRlbHNlIGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0XHRwb3J0ID0gMDtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjM5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDS19IMzIzJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19TSVAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyJiMzNDssCiAgICAmIzM0O25hdF9ydHBfcnRjcCYjMzQ7LAogICAgJiMzNDtuZl9uYXRfc2RwX21lZGlhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXJgIHRvIGF0b21pY2FsbHkgaW5zZXJ0IGEgcGFpciBvZiByZWxhdGVkIGNvbm50cmFjayBleHBlY3RhdGlvbnMgKGUuZy4sIFJUUCBhbmQgUlRDUCkgYW5kIHVwZGF0ZXMgdGhlIEguMzIzIGFuZCBTSVAgTkFUIGhlbHBlcnMgdG8gdXNlIHRoaXMgbmV3IEFQSS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYyB0aGF0IGhhbmRsZXMgY29tcGxleCBwcm90b2NvbHMsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBzZW5kaW5nIGNyYWZ0ZWQgSC4zMjMgb3IgU0lQIHBhY2tldHMgdGhyb3VnaCBhIE5BVCBzZXR1cC4gSXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG5ldyBhdG9taWMgaW5zZXJ0aW9uIGxvZ2ljIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucywgbWVtb3J5IGxlYWtzLCBvciByYWNlIGNvbmRpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDI4ZmE0OWEyMDQ5NGFmM2JmNzZhY2NlMTg1MTliNWY4MjgwMmEwZjIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCAxMiAyMzozOTozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmggYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oCmluZGV4IGMwMjQzNDVjOWJkODYyLi4yNmQ2YmFiZDkyZmNkNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oCkBAIC0xNjEsNiAmIzQzOzE2MSw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3QsCiAJcmV0dXJuIG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChleHBlY3QsIDAsIDAsIGZsYWdzKTsKIH0KIAomIzQzO2ludCBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3RbXSwKJiM0MzsJCQkgICAgICB1bnNpZ25lZCBpbnQgZmxhZyk7CiYjNDM7CiBzdHJ1Y3QgbmZfY29ubl9oZWxwOwogdm9pZCBuZl9jdF9leHBlY3RhdGlvbl9nYyhzdHJ1Y3QgbmZfY29ubl9oZWxwICptYXN0ZXJfaGVscCk7CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMKaW5kZXggMTgzZThhM2ZmMmJhYmQuLjZiY2Q2NzM0NzY5YjU5IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYwpAQCAtMTgyLDYgJiM0MzsxODIsNyBAQCBzdGF0aWMgaW50IG5hdF9ydHBfcnRjcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmZfY29ubiAqY3QsCiAJCQlzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqcnRwX2V4cCwKIAkJCXN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpydGNwX2V4cCkKIHsKJiM0MzsJc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnJ0cF9wYWlyWzJdID0geyBydHBfZXhwLCBydGNwX2V4cCB9OwogCXN0cnVjdCBuZl9jdF9oMzIzX21hc3RlciAqaW5mbyA9IG5mY3RfaGVscF9kYXRhKGN0KTsKIAlpbnQgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pOwogCWludCBpOwpAQCAtMjI3LDIyICYjNDM7MjI4LDEzIEBAIHN0YXRpYyBpbnQgbmF0X3J0cF9ydGNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCwKIAkJaW50IHJldDsKIAogCQlydHBfZXhwLSZndDt0dXBsZS5kc3QudS51ZHAucG9ydCA9IGh0b25zKG5hdGVkX3BvcnQpOwotCQlyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZChydHBfZXhwLCAwKTsKJiM0MzsJCXJ0Y3BfZXhwLSZndDt0dXBsZS5kc3QudS51ZHAucG9ydCA9IGh0b25zKG5hdGVkX3BvcnQgJiM0MzsgMSk7CiYjNDM7CQlyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyKHJ0cF9wYWlyLCAwKTsKIAkJaWYgKHJldCA9PSAwKSB7Ci0JCQlydGNwX2V4cC0mZ3Q7dHVwbGUuZHN0LnUudWRwLnBvcnQgPQotCQkJICAgIGh0b25zKG5hdGVkX3BvcnQgJiM0MzsgMSk7Ci0JCQlyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZChydGNwX2V4cCwgMCk7Ci0JCQlpZiAocmV0ID09IDApCi0JCQkJYnJlYWs7Ci0JCQllbHNlIGlmIChyZXQgPT0gLUVCVVNZKSB7Ci0JCQkJbmZfY3RfdW5leHBlY3RfcmVsYXRlZChydHBfZXhwKTsKLQkJCQljb250aW51ZTsKLQkJCX0gZWxzZSBpZiAocmV0ICZsdDsgMCkgewotCQkJCW5mX2N0X3VuZXhwZWN0X3JlbGF0ZWQocnRwX2V4cCk7Ci0JCQkJbmF0ZWRfcG9ydCA9IDA7Ci0JCQkJYnJlYWs7Ci0JCQl9Ci0JCX0gZWxzZSBpZiAocmV0ICE9IC1FQlVTWSkgewomIzQzOwkJCWJyZWFrOwomIzQzOwkJfSBlbHNlIGlmIChyZXQgPT0gLUVCVVNZKSB7CiYjNDM7CQkJY29udGludWU7CiYjNDM7CQl9IGVsc2UgaWYgKHJldCAmbHQ7IDApIHsKIAkJCW5hdGVkX3BvcnQgPSAwOwogCQkJYnJlYWs7CiAJCX0KZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmMKaW5kZXggN2FlNjhkNjA1ODZhMjMuLjRmNDZjOTJiZjhmYjI3IDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuYwpAQCAtNTQ2LDYgJiM0Mzs1NDYsMzUgQEAgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LAogfQogRVhQT1JUX1NZTUJPTF9HUEwobmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0KTsKIAomIzQzO2ludCBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3RbXSwKJiM0MzsJCQkgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbmZfY29ubl9oZWxwICptYXN0ZXJfaGVscDsKJiM0MzsJaW50IGksIHJldDsKJiM0MzsKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7bmZfY29ubnRyYWNrX2V4cGVjdF9sb2NrKTsKJiM0MzsJbWFzdGVyX2hlbHAgPSBuZmN0X2hlbHAoZXhwZWN0WzBdLSZndDttYXN0ZXIpOwomIzQzOwlpZiAobWFzdGVyX2hlbHAgIT0gbmZjdF9oZWxwKGV4cGVjdFsxXS0mZ3Q7bWFzdGVyKSkgewomIzQzOwkJcmV0ID0gLUVJTlZBTDsKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwl9CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyAyOyBpJiM0MzsmIzQzOykgewomIzQzOwkJcmV0ID0gX19uZl9jdF9leHBlY3RfY2hlY2soZXhwZWN0W2ldLCBtYXN0ZXJfaGVscCwgZmxhZ3MpOwomIzQzOwkJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IDI7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQluZl9jdF9leHBlY3RfaW5zZXJ0KGV4cGVjdFtpXSwgbWFzdGVyX2hlbHApOwomIzQzOwkJbmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydChJUEVYUF9ORVcsIGV4cGVjdFtpXSwgMCwgMCk7CiYjNDM7CX0KJiM0MztvdXQ6CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7bmZfY29ubnRyYWNrX2V4cGVjdF9sb2NrKTsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwobmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcik7CiYjNDM7CiB2b2lkIG5mX2N0X2V4cGVjdF9pdGVyYXRlX2Rlc3Ryb3koYm9vbCAoKml0ZXIpKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICplLCB2b2lkICpkYXRhKSwKIAkJCQkgIHZvaWQgKmRhdGEpCiB7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jCmluZGV4IGFlYTAyZjZhZmYwOTJhLi45ZTlmZjk4NmVjZTVhOSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmMKQEAgLTU5Miw2ICYjNDM7NTkyLDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBuZl9uYXRfc2RwX21lZGlhKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLAogCQkJCSAgICAgdW5zaWduZWQgaW50IG1lZGlhbGVuLAogCQkJCSAgICAgdW5pb24gbmZfaW5ldF9hZGRyICpydHBfYWRkcikKIHsKJiM0MzsJc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnJ0cF9wYWlyWzJdID0geyBydHBfZXhwLCBydGNwX2V4cCB9OwogCWVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvOwogCXN0cnVjdCBuZl9jb25uICpjdCA9IG5mX2N0X2dldChza2IsICZhbXA7Y3RpbmZvKTsKIAllbnVtIGlwX2Nvbm50cmFja19kaXIgZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pOwpAQCAtNjIyLDI0ICYjNDM7NjIzLDE1IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X3NkcF9tZWRpYShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZiwKIAkJaW50IHJldDsKIAogCQlydHBfZXhwLSZndDt0dXBsZS5kc3QudS51ZHAucG9ydCA9IGh0b25zKHBvcnQpOwotCQlyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZChydHBfZXhwLAotCQkJCQkgICBORl9DVF9FWFBfRl9TS0lQX01BU1RFUik7Ci0JCWlmIChyZXQgPT0gLUVCVVNZKQotCQkJY29udGludWU7Ci0JCWVsc2UgaWYgKHJldCAmbHQ7IDApIHsKLQkJCXBvcnQgPSAwOwotCQkJYnJlYWs7Ci0JCX0KIAkJcnRjcF9leHAtJmd0O3R1cGxlLmRzdC51LnVkcC5wb3J0ID0gaHRvbnMocG9ydCAmIzQzOyAxKTsKLQkJcmV0ID0gbmZfY3RfZXhwZWN0X3JlbGF0ZWQocnRjcF9leHAsCi0JCQkJCSAgIE5GX0NUX0VYUF9GX1NLSVBfTUFTVEVSKTsKJiM0MzsKJiM0MzsJCXJldCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXIocnRwX3BhaXIsCiYjNDM7CQkJCQkJTkZfQ1RfRVhQX0ZfU0tJUF9NQVNURVIpOwogCQlpZiAocmV0ID09IDApCiAJCQlicmVhazsKLQkJZWxzZSBpZiAocmV0ID09IC1FQlVTWSkgewotCQkJbmZfY3RfdW5leHBlY3RfcmVsYXRlZChydHBfZXhwKTsKJiM0MzsJCWVsc2UgaWYgKHJldCA9PSAtRUJVU1kpCiAJCQljb250aW51ZTsKLQkJfSBlbHNlIGlmIChyZXQgJmx0OyAwKSB7Ci0JCQluZl9jdF91bmV4cGVjdF9yZWxhdGVkKHJ0cF9leHApOwomIzQzOwkJZWxzZSBpZiAocmV0ICZsdDsgMCkgewogCQkJcG9ydCA9IDA7CiAJCQlicmVhazsKIAkJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjgyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29ubnRyYWNrIEV4cGVjdGF0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCBzZWVtcyBsaWtlIHdlJiMzOTtyZSBpbnRyb2R1Y2luZyBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcmAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jYC4gVGhlIGNvcmUgb2YgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgdG8gdGhlIG5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIGV4cGVjdGF0aW9uIGxvZ2ljLCB0YXJnZXRpbmcgSC4zMjMgYW5kIFNJUCBOQVQgaGVscGVycy4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBhIGdvb2QgaWRlYSDigJMgd2UmIzM5O3JlIGNvbWJpbmluZyB0d28gZXhwZWN0YXRpb25zLCBSVFAgYW5kIFJUQ1AsIGludG8gYSBzaW5nbGUgYXRvbWljIG9wZXJhdGlvbi4gVGhpcyBzaG91bGQgYmUgYSBzaWduaWZpY2FudCBpbXByb3ZlbWVudCwgcHJldmVudGluZyB0aG9zZSBuYXN0eSByYWNlIGNvbmRpdGlvbnMgYW5kIHBhcnRpYWwgZXhwZWN0YXRpb24gaW5zZXJ0aW9ucyB0aGF0IGNhbiBjcm9wIHVwIHdpdGggdGhlc2Uga2luZHMgb2YgY29ubmVjdGlvbnMuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVhY2hhYmlsaXR5IGFuZCBhbnkgcmVxdWlyZWQgY29uZmlndXJhdGlvbnMuIFNvLCB0aGlzIG5ldyBmdW5jdGlvbiwgYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXJgLCBpcyB1c2VkIGJ5IGBuYXRfcnRwX3J0Y3BgIGluIGBuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuY2AgYW5kIGBuZl9uYXRfc2RwX21lZGlhYCBpbiBgbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmNgLiBNYWtlcyBzZW5zZSwgdGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIGRlYWxpbmcgd2l0aCB0aG9zZSBOQVQgaGVscGVycy4KCk5vdywgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucy4gTGV0JiMzOTtzIHNlZS4uLiBgbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNgIGlzIGNvbnRyb2xsZWQgYnkgYENPTkZJR19ORl9OQVRfSDMyM2AgYW5kIGBuZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY2AgdXNlcyBgQ09ORklHX05GX05BVF9TSVBgLiBMb29rcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBidXQgSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRoaXMgaW4gdGhlIE1ha2VmaWxlcyB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIEdvdHRhIGJlIHRob3JvdWdoLiBUaGlzIGxvb2tzIGxpa2UgYSBzb2xpZCBjaGFuZ2UsIGFuZCBJJiMzOTtsbCBtYWtlIHN1cmUgaXQmIzM5O3MgZnVsbHkgdmFsaWRhdGVkIGJlZm9yZSByZWNvbW1lbmRpbmcgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMjM6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfbmF0X2gzMjMubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTM9b2JqLSQoQ09ORklHX05GX1JFSkVDVF9JUFY0KSAmIzQzOz0gbmZfcmVqZWN0X2lwdjQub1xuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZS0xNS0jIE5BVCBoZWxwZXJzIChuZl9jb25udHJhY2spXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX05GX05BVF9IMzIzKSAmIzQzOz0gbmZfbmF0X2gzMjMub1xubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTE3LW9iai0kKENPTkZJR19ORl9OQVRfUFBUUCkgJiM0Mzs9IG5mX25hdF9wcHRwLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTM4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgSSYjMzk7bSByZWFkeSB0byBkaXZlIGludG8gdGhpcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoaXMgdGV4dCBpcyBhYm91dCBhbmQgSSYjMzk7bGwgc3VtbWFyaXplIGl0IGFzIGlmIHRoZXNlIHdlcmUgbXkgb3duIGludGVybmFsIHRob3VnaHQgcHJvY2Vzc2VzLCBjb25zaWRlcmluZyBteSBleHBlcnRpc2UgaW4gdGhpcyBmaWVsZC4KCioqKgoKKipBbmFseXppbmcgU0lQIGFuZCBJdHMgSW1wbGljYXRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdoZW4gSSBzZWUgJiMzNDtTSVAsJiMzNDsgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBTZXNzaW9uIEluaXRpYXRpb24gUHJvdG9jb2wsIG9mIGNvdXJzZS4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIOKAkyB0aGUgZnVuZGFtZW50YWwgcm9sZSBpdCBwbGF5cyBpbiBlc3RhYmxpc2hpbmcsIG1vZGlmeWluZywgYW5kIHRlcm1pbmF0aW5nIG11bHRpbWVkaWEgc2Vzc2lvbnMuIEkmIzM5O20gY29uc2lkZXJpbmcgdGhlIGludHJpY2FjaWVzIG9mIGl0cyBtZXNzYWdlIHN0cnVjdHVyZSwgdGhlIFJGQ3MsIHRoZSB2YXJpb3VzIGV4dGVuc2lvbnMuLi4gdGhlIHdvcmtzLiBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgaG93IGl0JiMzOTtzIHVzZWQgaW4gVm9JUCwgdmlkZW8gY29uZmVyZW5jaW5nLCBpbnN0YW50IG1lc3NhZ2luZywgYW5kIGFsbCBvZiB0aGVzZSByZWFsLXRpbWUgY29tbXVuaWNhdGlvbiBzeXN0ZW1zLiBJJiMzOTttIHJ1bm5pbmcgdGhyb3VnaCB0aGUgdmFyaW91cyBTSVAgbWV0aG9kczogSU5WSVRFLCBCWUUsIFJFR0lTVEVSLCBPUFRJT05TLCBhbmQgdGhlaXIgaW5kaXZpZHVhbCBwdXJwb3Nlcy4gTXkgYnJhaW4gaXMgdGlja2luZyB0aHJvdWdoIHRoZSBzZWN1cml0eSBjb25zaWRlcmF0aW9ucywgdG9vIOKAkyBUTFMsIFNSVFAsIGFuZCB0aGUgb25nb2luZyBiYXR0bGUgYWdhaW5zdCBTSVAtYmFzZWQgYXR0YWNrcyBsaWtlIHNlc3Npb24gaGlqYWNraW5nIGFuZCBkZW5pYWwtb2Ytc2VydmljZS4gSSYjMzk7bSBwcm9iYWJseSBjb25zaWRlcmluZyBob3cgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgcHJvdG9jb2xzLCBsaWtlIFJUUCBhbmQgU0RQLCBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIElQLWJhc2VkIGNvbW11bmljYXRpb24uIEkmIzM5O20gYWxyZWFkeSBmb3JtdWxhdGluZyBxdWVzdGlvbnMgaW4gbXkgbWluZCwgc3VjaCBhcyAmIzM0O0hvdyBlZmZpY2llbnRseSBpcyB0aGlzIFNJUCBpbXBsZW1lbnRhdGlvbiBoYW5kbGluZyBOQVQgdHJhdmVyc2FsPyYjMzQ7LCAmIzM0O1doYXQgYXJlIHRoZSBsYXRlc3QgU0lQIHNlY3VyaXR5IGJlc3QgcHJhY3RpY2VzPyYjMzQ7LCBhbmQgJiMzNDtIb3cgd2VsbCBkb2VzIHRoaXMgaW1wbGVtZW50YXRpb24gc2NhbGUgdW5kZXIgaGlnaCBsb2FkPyYjMzQ7LiBJdCYjMzk7cyBhbGwgYWJvdXQgbG9va2luZyBhdCB0aGUgYmlnIHBpY3R1cmUgYW5kIHRoaW5raW5nIG9mIHRoZSBmaW5lciBkZXRhaWxzIGF0IHRoZSBzYW1lIHRpbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMjM6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfbmF0X3NpcC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTc0PW9iai0kKENPTkZJR19ORl9OQVRfSVJDKSAmIzQzOz0gbmZfbmF0X2lyYy5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjc1Om9iai0kKENPTkZJR19ORl9OQVRfU0lQKSAmIzQzOz0gbmZfbmF0X3NpcC5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTc2LW9iai0kKENPTkZJR19ORl9OQVRfVEZUUCkgJiM0Mzs9IG5mX25hdF90ZnRwLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTkyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBOQVQgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIE5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiBjb25maWd1cmF0aW9uczogYE5GX05BVF9IMzIzYCBhbmQgYE5GX05BVF9TSVBgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW1wb3J0YW50IHN5bWJvbHMgdGllZCB0byB0aGVtLiBCYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nLCBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcmAsIGBuYXRfcnRwX3J0Y3BgLCBhbmQgYG5mX25hdF9zZHBfbWVkaWFgIGFyZSB0aGUga2V5IGZvY3VzIHBvaW50cy4gTGV0JiMzOTtzIHNlZS4uLiBJIHJlbWVtYmVyIGBuYXRfcnRwX3J0Y3BgIGlzIGxpa2VseSBhIHN0YXRpYyBmdW5jdGlvbiwgYW5kIG5vdyBJJiMzOTttIGNvbmZpcm1pbmcgdGhhdCBpdCYjMzk7cyBpbmRlZWQgc3RhdGljIHdpdGhpbiBgbmZfbmF0X2gzMjMuY2AuIEFuZCBqdXN0IGFzIGV4cGVjdGVkLCBgbmZfbmF0X3NkcF9tZWRpYWAgaXMgYWxzbyBzdGF0aWMsIHJlc2lkaW5nIHdpdGhpbiBgbmZfbmF0X3NpcC5jYC4gIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyYCwgb24gdGhlIG90aGVyIGhhbmQsIGlzIGV4cG9ydGVkLCB3aGljaCBzaW1wbGlmaWVzIGl0cyB1c2FnZS4KCk5vdywgSSBzaG91bGQgaW52ZXN0aWdhdGUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciB1bmRlcmx5aW5nIGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9ucyBuZWNlc3NhcnkgZm9yIHRoZXNlIE5BVCBtb2R1bGVzIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gUmlnaHQsIHNvIGBORl9OQVRfSDMyM2AgcmVxdWlyZXMgYE5GX0NPTk5UUkFDS19IMzIzYCBhbmQsIG9mIGNvdXJzZSwgdGhlIGZ1bmRhbWVudGFsIGBORl9OQVRgIGNvbmZpZ3VyYXRpb24uIFNpbWlsYXJseSwgYE5GX05BVF9TSVBgIHJlbGllcyBvbiBgTkZfQ09OTlRSQUNLX1NJUGAgaW4gYWRkaXRpb24gdG8gdGhlIGJhc2UgYE5GX05BVGAgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBnb29kIHRvIGtub3cuCgpBbHJpZ2h0LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhvc2UgS2NvbmZpZyBkZXBlbmRlbmNpZXMgYXJlIHNldHVwIHJpZ2h0IGZvciBib3RoIGBORl9OQVRfSDMyM2AgYW5kIGBORl9OQVRfU0lQYC4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMjM6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX05BVF9IMzIzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9MTE4PWNvbmZpZyBORl9OQVRfUFBUUFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEyMi1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjEyMzpjb25maWcgTkZfTkFUX0gzMjNcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEyNC1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMjM6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTY5NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIExvY2F0aW9uIENoZWNrKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMuLi4gSSB3YXMganVzdCBtdWxsaW5nIG92ZXIgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgSC4zMjMgTkFUIGluIHRoZSBMaW51eCBrZXJuZWwgYW5kIHN1ZGRlbmx5IGEgdGhvdWdodCBoaXQgbWUuIFdoZXJlIGV4YWN0bHkgaXMgdGhlIGNvbmZpZ3VyYXRpb24gc3dpdGNoIGZvciBgTkZfTkFUX0gzMjNgIGRlZmluZWQ/IExldCBtZSB0aGluay4uLiBJdCYjMzk7cyBnb3QgdG8gYmUgaW4gdGhlIG5ldGZpbHRlciBwYXJ0Li4uICpBaGEhKiBUaGF0JiMzOTtzIHJpZ2h0LCBpdCYjMzk7cyBhY3R1YWxseSByZXNpZGluZyBpbiBgbmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgZnVuZGFtZW50YWwgbmV0ZmlsdGVyIHJ1bGVzIGFyZSBzZXQgdXAuIEdvb2QsIGF0IGxlYXN0IHRoYXQgY2xhcmlmaWVzIGl0cyBsb2NhdGlvbiB3aXRoaW4gdGhlIHNvdXJjZSB0cmVlLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwIHdoZW4gd29ya2luZyB3aXRoIGtlcm5lbCBtb2R1bGVzOyBJIG5lZWQgdG8ga25vdyB3aGVyZSBJIGNhbiBhY3R1YWxseSBzZXQgdGhlIGNvbmZpZyBhbmQgaG93IGl0JiMzOTtzIGRlZmluZWQuIE5vdyB0aGF0IEkga25vdyB0aGlzLCBJIGNhbiBjb250aW51ZSBteSBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfTkFUX1NJUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDI2PWNvbmZpZyBORl9OQVRfSVJDXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTQzMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MzE6Y29uZmlnIE5GX05BVF9TSVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzItXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDI1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCBzdW1tYXJpemluZyB0aGUgcHJvbXB0IGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIEtjb25maWcgRGVwZW5kZW5jaWVzIGZvciBOQVQgTW9kdWxlcyoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGVzZSBOQVQgbW9kdWxlcywgYE5GX05BVF9IMzIzYCBhbmQgYE5GX05BVF9TSVBgLCBhcmUgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIHB1bGwgdXAgdGhlaXIgS2NvbmZpZyBmaWxlcyBkaXJlY3RseS4gSSB3YW50IHRvIHNlZSB3aGF0IHRyaWdnZXJzIHRoZWlyIGluY2x1c2lvbi4gQXJlIHRoZXkgc2VsZWN0ZWQgYnkgc29tZSBwYXJlbnQgbW9kdWxlLCBpbXBseWluZyBhIGhpZ2hlci1sZXZlbCBwcm90b2NvbCBkZXBlbmRlbmN5PyBPciwgYXJlIHRoZXkgY29uZmlndXJlZCBpbmRlcGVuZGVudGx5LCB3aXRoIHRoZWlyIG93biBzcGVjaWZpYyBkZXBlbmRlbmNpZXM/IFRoZSBrZXkgaXMgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jeSB0cmVlLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyB0byB1bmRlcnN0YW5kIHdoeSBhbmQgd2hlcmUgdGhlc2Ugd2VyZSBpbnRyb2R1Y2VkLiBJdCBpcyBpbXBvcnRhbnQgdG8ga25vdyBpZiB0aGVyZSYjMzk7cyBhbnkgb3RoZXIgbW9kdWxlcyB0aGF0IHdvdWxkIGJlIHJlbGF0ZWQuIEkmIzM5O20gbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgdGhlIG92ZXJhbGwgbmV0d29yayBzdGFjayBjb25maWd1cmF0aW9uLCB3aGF0IG90aGVyIGZlYXR1cmVzIG1pZ2h0IGF1dG9tYXRpY2FsbHkgZW5hYmxlIG9yIGRpc2FibGUgdGhlbSwgYW5kIHVsdGltYXRlbHksIGhvdyB0aGV5IGFyZSBtYW5hZ2VkIGF0IGJ1aWxkIHRpbWUuIFRoaXMgd2lsbCBnaXZlIG1lIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGVpciBwbGFjZSBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05GX05BVF9IMzIzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc9MTE4PWNvbmZpZyBORl9OQVRfUFBUUFxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEyMi1cbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjEyMzpjb25maWcgTkZfTkFUX0gzMjNcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEyNC1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MjEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLgoKKipBbmFseXppbmcgdGhlIE5BVCBDb25maWd1cmF0aW9uKioKCkhtbSwgc28gYE5GX05BVF9IMzIzYCBpcyBhY3R1YWxseSBqdXN0IGRlZmluZWQgYXMgYHRyaXN0YXRlYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQuIEl0JiMzOTtzIG5vdCBhIGRpcmVjdCwgaGFyZC1jb2RlZCBvcHRpb24uIE5vdywgdGhlIGtleSBxdWVzdGlvbiBpcywgd2hhdCYjMzk7cyBjb250cm9sbGluZyBpdHMgc2VsZWN0aW9uPyBJcyBpdCBiZWluZyBpbmRpcmVjdGx5IGVuYWJsZWQgdGhyb3VnaCB0aGUgYE5GX0NPTk5UUkFDS19IMzIzYCBvcHRpb24/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBhbmQgS2NvbmZpZyBzZXR1cCB0byBjb25maXJtIGlmIHRoYXQmIzM5O3MgdGhlIGRyaXZlci4gU2VlbXMgdGhhdCBJJiMzOTt2ZSBzZWVuIHRoaXMgZGVwZW5kZW5jeSBiZWZvcmUsIGl0JiMzOTtzIHByZXR0eSBjb21tb24gZm9yIHJlbGF0ZWQgTkFUIGFuZCBjb25uZWN0aW9uIHRyYWNraW5nIG1vZHVsZXMgdG8gYmUgaW50ZXJ3b3ZlbiBsaWtlIHRoaXMuIEl0JiMzOTtzIGxpa2VseSB0aGF0IGl0IGdldHMgcHVsbGVkIGluIGFzIHBhcnQgb2YgdGhlIGxhcmdlciBILjMyMyBjb25uZWN0aW9uIHRyYWNraW5nIGZyYW1ld29yay4gTGV0IG1lIGRlbHZlIGRlZXBlciwgdGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZfTkFUX0gzMjMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Njg1CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6CgoqKkludmVzdGlnYXRpbmcgdGhlIEgzMjMgTkFUIE1vZHVsZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgTkZfTkFUX0gzMjNgIG1vZHVsZSBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGJ1aWxkIHN5c3RlbS4gVGhpcyB1c3VhbGx5IGludm9sdmVzIGRpZ2dpbmcgYXJvdW5kIGluIHRoZSBgS2NvbmZpZ2AgZmlsZXMg4oCTIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIGRlcGVuZGVuY3kgYW5kIGJ1aWxkLXRpbWUgb3B0aW9ucyBhcmUgZGVmaW5lZC4gU28sIG15IGluc3RpbmN0IGlzIHRvIHVzZSBgZ3JlcGAuIExldCYjMzk7cyB1c2UgYGdyZXBgIHRvIHNlYXJjaCBhY3Jvc3MgYWxsIHRoZSBLY29uZmlnIGZpbGVzIGZvciB0aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gc3ltYm9sLCBgTkZfTkFUX0gzMjNgLiBUaGlzIHNob3VsZCBxdWlja2x5IHBvaW50IG1lIHRvIHRoZSByZWxldmFudCBzZWN0aW9ucyB3aGVyZSBpdCYjMzk7cyBkZWZpbmVkIGFuZCBob3BlZnVsbHkgZ2l2ZSBtZSBzb21lIGNvbnRleHQgYWJvdXQgaXRzIGRlcGVuZGVuY2llcyBhbmQgdXNhZ2UuIFRoYXQgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBmZWF0dXJlIGlzIGNvbnRyb2xsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05GX05BVF9IMzIzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTExOD1jb25maWcgTkZfTkFUX1BQVFBcbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjM6Y29uZmlnIE5GX05BVF9IMzIzXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjQtXHR0cmlzdGF0ZVxuLS1cbm5ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZT0xMz1vYmotJChDT05GSUdfTkZfUkVKRUNUX0lQVjQpICYjNDM7PSBuZl9yZWplY3RfaXB2NC5vXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTE1LSMgTkFUIGhlbHBlcnMgKG5mX2Nvbm50cmFjaylcbm5ldC9pcHY0L25ldGZpbHRlci9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfTkZfTkFUX0gzMjMpICYjNDM7PSBuZl9uYXRfaDMyMy5vXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTctb2JqLSQoQ09ORklHX05GX05BVF9QUFRQKSAmIzQzOz0gbmZfbmF0X3BwdHAub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTM4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBILjMyMyBOQVQgQ29uZmlndXJhdGlvbioqCgpIbW0sIHNvbWV0aGluZyBmZWVscyBvZmYuLi4gSSYjMzk7bSB0cmFjaW5nIGJhY2sgdGhyb3VnaCB0aGUgbmV0d29yayBhZGRyZXNzIHRyYW5zbGF0aW9uIChOQVQpIGNvbmZpZ3VyYXRpb24sIGFuZCBzdWRkZW5seSBJIHJlYWxpemUgSSBjYW4mIzM5O3QgcXVpdGUgcGlucG9pbnQgd2hlcmUgYE5GX05BVF9IMzIzYCBpcyBhY3R1YWxseSBnZXR0aW5nIGVuYWJsZWQuIFRoYXQmIzM5O3Mgc3RyYW5nZS4gSSB3YXMgY2VydGFpbiBpdCB3YXMgYSBkZXBlbmRlbmN5LgoKT2theSwgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgZG91YmxlLWNoZWNrLiBUaGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgSC4zMjMgY29ubmVjdGlvbiB0cmFja2luZyBtb2R1bGUuIExldCYjMzk7cyB2ZXJpZnkgaG93IGBORl9DT05OVFJBQ0tfSDMyM2AgaXMgY29uZmlndXJlZC4gVGhhdCBtb2R1bGUgKnNob3VsZCogYmUgdGhlIGtleS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoYXQgcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMjM6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkZfQ09OTlRSQUNLX0gzMjMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnPTgxPUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZzo4MjpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnLTgzLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cbi0tXG5hcmNoL202OGsvY29uZmlncy9hcG9sbG9fZGVmY29uZmlnPTc3PUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWc6Nzg6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWctNzktQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZz04ND1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWc6ODU6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZy04Ni1DT05GSUdfTkZfQ09OTlRSQUNLX0lSQz1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnPTc0PUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZzo3NTpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnLTc2LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cbi0tXG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWc9NzY9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnOjc3OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWctNzgtQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWc9NzU9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZzo3NjpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZy03Ny1DT05GSUdfTkZfQ09OTlRSQUNLX0lSQz1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnPTk1PUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZzo5NjpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnLTk3LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cbi0tXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTQ3X2RlZmNvbmZpZz03Mz1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTQ3X2RlZmNvbmZpZzo3NDpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWctNzUtQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnPTc0PUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnOjc1OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTZ4X2RlZmNvbmZpZy03Ni1DT05GSUdfTkZfQ09OTlRSQUNLX0lSQz1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZz03NT1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnOjc2OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnLTc3LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cbi0tXG5hcmNoL202OGsvY29uZmlncy9zdW4zX2RlZmNvbmZpZz03MD1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXG5hcmNoL202OGsvY29uZmlncy9zdW4zX2RlZmNvbmZpZzo3MTpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWctNzItQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZz03MT1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXG5hcmNoL202OGsvY29uZmlncy9zdW4zeF9kZWZjb25maWc6NzI6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZy03My1DT05GSUdfTkZfQ09OTlRSQUNLX0lSQz1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc9NTc9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc6NTg6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnLTU5LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWc9NjA9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnOjYxOkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWctNjItQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc9NjQ9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZzo2NTpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZy02Ni1DT05GSUdfTkZfQ09OTlRSQUNLX0lSQz1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnPTYzPUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZzo2NDpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnLTY1LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9ybTIwMF9kZWZjb25maWc9NDc9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnOjQ4OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXG5hcmNoL21pcHMvY29uZmlncy9ybTIwMF9kZWZjb25maWctNDktQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2xpbmtzdGF0aW9uX2RlZmNvbmZpZz0zMD1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9saW5rc3RhdGlvbl9kZWZjb25maWc6MzE6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2xpbmtzdGF0aW9uX2RlZmNvbmZpZy0zMi1DT05GSUdfTkZfQ09OTlRSQUNLX0lSQz1tXG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXZtZTUxMDBfZGVmY29uZmlnPTM4PUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL212bWU1MTAwX2RlZmNvbmZpZzozOTpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXZtZTUxMDBfZGVmY29uZmlnLTQwLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnPTEyNj1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjEyNzpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZy0xMjgtQ09ORklHX05GX0NPTk5UUkFDS19JUkM9bVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0xODk9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjE5MDpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTE5MS1DT05GSUdfTkZfQ09OTlRSQUNLX0lSQz1tXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTE4MD1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6MTgxOkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMTgyLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cbi0tXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyMy5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzLmg6MjojaWZuZGVmIF9ORl9DT05OVFJBQ0tfSDMyM19IXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyMy5oOjM6I2RlZmluZSBfTkZfQ09OTlRSQUNLX0gzMjNfSFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjMuaC00LVxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX3R5cGVzLmgtNi1cbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX3R5cGVzLmg6NzojaWZuZGVmIF9ORl9DT05OVFJBQ0tfSDMyM19UWVBFU19IXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM190eXBlcy5oOjg6I2RlZmluZSBfTkZfQ09OTlRSQUNLX0gzMjNfVFlQRVNfSFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfdHlwZXMuaC05LVxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX3R5cGVzLmg9ODg5PXR5cGVkZWYgc3RydWN0IFJhc01lc3NhZ2Uge1x0LyogQ0hPSUNFICovXG4tLVxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfdHlwZXMuaC05MzctXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM190eXBlcy5oOjkzODojZW5kaWYgLyogX05GX0NPTk5UUkFDS19IMzIzX1RZUEVTX0ggKi9cbi0tXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz0xMjM9Y29uZmlnIE5GX05BVF9IMzIzXG4tLVxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMTI1LVx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnOjEyNjpcdGRlZmF1bHQgTkZfQ09OTlRSQUNLX0gzMjNcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEyNy1cbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9MjI3PWNvbmZpZyBORl9DT05OVFJBQ0tfRlRQXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIzOC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMzk6Y29uZmlnIE5GX0NPTk5UUkFDS19IMzIzXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjQwLVx0dHJpc3RhdGUgXCYjMzQ7SC4zMjMgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9NDU9b2JqLSQoQ09ORklHX05GX0NPTk5UUkFDS19GVFApICYjNDM7PSBuZl9jb25udHJhY2tfZnRwLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6NDY6b2JqLSQoQ09ORklHX05GX0NPTk5UUkFDS19IMzIzKSAmIzQzOz0gbmZfY29ubnRyYWNrX2gzMjMub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS00Ny1vYmotJChDT05GSUdfTkZfQ09OTlRSQUNLX0lSQykgJiM0Mzs9IG5mX2Nvbm50cmFja19pcmMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDA3OAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5ldHdvcmsgQWRkcmVzcyBUcmFuc2xhdGlvbiAoTkFUKSBhbmQgU2Vzc2lvbiBJbml0aWF0aW9uIFByb3RvY29sIChTSVApIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgTkFUIGhhbmRsZXMgdGhlc2Ugc3BlY2lmaWMgcHJvdG9jb2xzLiBJdCBsb29rcyBsaWtlIHRoZSBgTkZfTkFUX0gzMjNgIG1vZHVsZSBuYXR1cmFsbHkgZGVmYXVsdHMgdG8gdGhlIGBORl9DT05OVFJBQ0tfSDMyM2AgbW9kdWxlIGZvciBjb25uZWN0aW9uIHRyYWNraW5nLiBUaGUgc2FtZSBwYXR0ZXJuIGlzIHByZXNlbnQgd2l0aCBgTkZfTkFUX1NJUGAgYW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBgTkZfQ09OTlRSQUNLX1NJUGAuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhhdCB0byBnZXQgcHJvcGVyIE5BVCBmdW5jdGlvbmFsaXR5IGZvciBILjMyMyBhbmQgU0lQIHRyYWZmaWMsIHdlIGRlZmluaXRlbHkgd2FudCB0byBlbmFibGUgYm90aCBgTkZfTkFUX0gzMjNgIGFuZCBgTkZfTkFUX1NJUGAuIEJlZm9yZSBJIGRvIHRoYXQsIHRob3VnaCwgSSYjMzk7bSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgb3B0aW9ucyBmb3IgYE5GX05BVF9TSVBgIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHBvdGVudGlhbCBnb3RjaGFzIG9yIGRlcGVuZGVuY2llcyBJJiMzOTttIG92ZXJsb29raW5nLiBHb3R0YSBjb3ZlciBhbGwgbXkgYmFzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05GX05BVF9TSVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTQyNj1jb25maWcgTkZfTkFUX0lSQ1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDMxOmNvbmZpZyBORl9OQVRfU0lQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMyLVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMjM6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0NjIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBDaGVjayoqCgpPa2F5LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIHdvcmtpbmcgd2l0aCB0aGUgbW9zdCB1cC10by1kYXRlIGFuZCByZWxldmFudCBpbmZvcm1hdGlvbi4gTXkgaW5zdGluY3QgaXMgdGVsbGluZyBtZSB0byBnbyBiYWNrIHRvIHRoZSBzb3VyY2UsIGFuZCB0aGUgZmlyc3QgcGxhY2UgSSB0aGluayBvZiB0byBjb25maXJtIGEga2V5IGNvbmZpZ3VyYXRpb24gc2V0dGluZyBpcyB0aGUgYEtjb25maWdgIGZpbGVzLiBTcGVjaWZpY2FsbHksIHNpbmNlIHdlIGFyZSBkaXNjdXNzaW5nIGBORl9OQVRfU0lQYCwgSSBzaG91bGQgZXhhbWluZSB0aGUgbGluZXMgYXJvdW5kIHRoYXQgZW50cnkgd2l0aGluIGBuZXQvbmV0ZmlsdGVyL0tjb25maWdgLiBUaGlzIHdpbGwgc29saWRpZnkgbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBvcHRpb24gaXMgZGVmaW5lZCwgYW55IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLCBhbmQgd2hhdCBvdGhlciByZWxhdGVkIGZlYXR1cmVzIG1pZ2h0IGFsc28gYmUgY29uZmlndXJlZC4gVGhpcyBpcyBhIGZ1bmRhbWVudGFsIHN0ZXAgdG8gYXZvaWQgbWFraW5nIGFueSBpbmNvcnJlY3QgYXNzdW1wdGlvbnMgYW5kIGVuc3VyZSBJIGhhdmUgdGhlIHByb3BlciBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDI1Olx0XG4gNDI2Olx0Y29uZmlnIE5GX05BVF9JUkNcbiA0Mjc6XHRcdHRyaXN0YXRlXG4gNDI4Olx0XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgTkZfTkFUXG4gNDI5Olx0XHRkZWZhdWx0IE5GX05BVCBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLX0lSQ1xuIDQzMDpcdFxuIDQzMTpcdGNvbmZpZyBORl9OQVRfU0lQXG4gNDMyOlx0XHR0cmlzdGF0ZVxuIDQzMzpcdFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX05BVFxuIDQzNDpcdFx0ZGVmYXVsdCBORl9OQVQgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDS19TSVBcbiA0MzU6XHRcbiA0MzY6XHRjb25maWcgTkZfTkFUX1RGVFBcbiA0Mzc6XHRcdHRyaXN0YXRlXG4gNDM4Olx0XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgTkZfTkFUXG4gNDM5Olx0XHRkZWZhdWx0IE5GX05BVCBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLX1RGVFBcbiA0NDA6XHRcbiA0NDE6XHRjb25maWcgTkZfTkFUX1JFRElSRUNUXG4gNDQyOlx0XHRib29sXG4gNDQzOlx0XG4gNDQ0Olx0Y29uZmlnIE5GX05BVF9NQVNRVUVSQURFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTQ1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyBmb3IgTkFUIE1vZHVsZXMqKgoKQWxyaWdodCwgc28gdGhlIGBORl9OQVRfU0lQYCBtb2R1bGUgY29udmVuaWVudGx5IGJ1bmRsZXMgYE5GX05BVGAgYW5kIGBORl9DT05OVFJBQ0tfU0lQYC4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4gSXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBkaXJlY3QgYXBwcm9hY2ggaXMgdG8gc3BlY2lmeSBib3RoIGBORl9OQVRfSDMyM2AgYW5kIGBORl9OQVRfU0lQYCB3aXRoaW4gdGhlIGNvbmZpZ3VyYXRpb24uIE5vdywgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoZSBgTkZfTkFUX0gzMjNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBMZXQmIzM5O3Mgc2VlLCB0aGF0IHNob3VsZCBiZSBkZWZpbmVkIGluIGBuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ2AsIHNvIEkgbmVlZCB0byBjaGVjayB0aGF0IGZpbGUgZm9yIGRlcGVuZGVuY2llcyBhbmQgZW5zdXJlIHRoZXJlIGFyZSBubyB1bmZvcmVzZWVuIGNvbmZsaWN0cyBvciBpbnRlcmFjdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDExNTpcdFxuIDExNjpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAxMTc6XHRcbiAxMTg6XHRjb25maWcgTkZfTkFUX1BQVFBcbiAxMTk6XHRcdHRyaXN0YXRlXG4gMTIwOlx0XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS1xuIDEyMTpcdFx0ZGVmYXVsdCBORl9DT05OVFJBQ0tfUFBUUFxuIDEyMjpcdFxuIDEyMzpcdGNvbmZpZyBORl9OQVRfSDMyM1xuIDEyNDpcdFx0dHJpc3RhdGVcbiAxMjU6XHRcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXG4gMTI2Olx0XHRkZWZhdWx0IE5GX0NPTk5UUkFDS19IMzIzXG4gMTI3Olx0XG4gMTI4Olx0ZW5kaWYgIyBORl9OQVRcbiAxMjk6XHRcbiAxMzA6XHRjb25maWcgSVBfTkZfSVBUQUJMRVNcbiAxMzE6XHRcdHRyaXN0YXRlIFwmIzM0O0lQIHRhYmxlcyBzdXBwb3J0IChyZXF1aXJlZCBmb3IgZmlsdGVyaW5nL21hc3EvTkFUKVwmIzM0O1xuIDEzMjpcdFx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXG4gMTMzOlx0XHRzZWxlY3QgTkVURklMVEVSX1hUQUJMRVNcbiAxMzQ6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMjM6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0NzUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE5ldGZpbHRlciBOQVQgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIE5ldGZpbHRlciBOQVQgY29uZmlndXJhdGlvbnMsIGBORl9OQVRfSDMyM2AgYW5kIGBORl9OQVRfU0lQYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHNpbXBseSBlbmFibGUgdGhlbSBkaXJlY3RseSwgYnV0IHdhaXQsIHRoZXkgZGVwZW5kIG9uIGBORl9DT05OVFJBQ0tfSDMyM2AgYW5kIGBORl9DT05OVFJBQ0tfU0lQYC4gSG1tLCB0aGF0IG1lYW5zIGlmIEkganVzdCBzcGVjaWZ5IGBORl9OQVRfSDMyM2AgYW5kIGBORl9OQVRfU0lQYCwgd2lsbCB0aGUgZGVwZW5kZW5jaWVzIGJlIHJlc29sdmVkPyBCZWNhdXNlIHRoZXNlIGFyZSBgdHJpc3RhdGVgIGNvbmZpZ3Mgd2l0aG91dCBhIHByb21wdCwgSSBjYW4mIzM5O3QgZW5hYmxlIHRoZW0gZGlyZWN0bHkgdGhyb3VnaCBgbWVudWNvbmZpZ2AgbXlzZWxmLiBUaGV5JiMzOTtyZSBzZWxlY3RlZCBvciBkZWZhdWx0ZWQsIHdoaWNoIGNvbXBsaWNhdGVzIHRoaW5ncy4KCkxldCBtZSB0aGlua+KApiBgTkZfTkFUX0gzMjNgIGhhcyBgZGVmYXVsdCBORl9DT05OVFJBQ0tfSDMyM2AuIEFoYSEgU28sIGlmIEkgZW5hYmxlIGBORl9DT05OVFJBQ0tfSDMyM2AsIHRoZW4gYE5GX05BVF9IMzIzYCAqd2lsbCogYmUgZW5hYmxlZCwgYXNzdW1pbmcgYE5GX05BVGAgaXMgZW5hYmxlZCwgd2hpY2ggaXMgZ2VuZXJhbGx5IHRoZSBjYXNlLiBJdCYjMzk7cyB0aGUgc2FtZSBmb3IgYE5GX05BVF9TSVBgIHdoaWNoIGhhcyBgZGVmYXVsdCBORl9OQVQgJmFtcDsmYW1wOyBORl9DT05OVFJBQ0tfU0lQYC4gU28gdGhleSBib3RoIGRlcGVuZCBvbiB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBjb25maWdzLgoKVGhlcmVmb3JlLCBpdCBzZWVtcyB0aGUgbW9yZSBwcmFjdGljYWwgYXBwcm9hY2ggaXMgdG8gZm9jdXMgb24gZW5hYmxpbmcgYE5GX0NPTk5UUkFDS19IMzIzYCBhbmQgYE5GX0NPTk5UUkFDS19TSVBgLiBUaGlzIHNlZW1zIGxvZ2ljYWwgYmVjYXVzZSAqdGhlc2UqIGhhdmUgcHJvbXB0cyBhbmQgY2FuIGJlIHVzZXItc2VsZWN0ZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gbWVudXMuIFRoZXkgcHJvdmlkZSBhIG1vcmUgZGlyZWN0IGNvbnRyb2wgcG9pbnQuCgpOb3csIEkgc2hvdWxkIGNvbmZpcm0gdGhpcyBieSBjaGVja2luZyBgTkZfQ09OTlRSQUNLX0gzMjNgIGFuZCBgTkZfQ09OTlRSQUNLX1NJUGAgaW4gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIzNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjM1Olx0XHQgIFRoaXMgaXMgRlRQIHN1cHBvcnQgb24gTGF5ZXIgMyBpbmRlcGVuZGVudCBjb25uZWN0aW9uIHRyYWNraW5nLlxuIDIzNjpcdFxuIDIzNzpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAyMzg6XHRcbiAyMzk6XHRjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcbiAyNDA6XHRcdHRyaXN0YXRlIFwmIzM0O0guMzIzIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbiAyNDE6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXG4gMjQyOlx0XHRoZWxwXG4gMjQzOlx0XHQgIEguMzIzIGlzIGEgVm9JUCBzaWduYWxsaW5nIHByb3RvY29sIGZyb20gSVRVLVQuIEFzIG9uZSBvZiB0aGUgbW9zdFxuIDI0NDpcdFx0ICBpbXBvcnRhbnQgVm9JUCBwcm90b2NvbHMsIGl0IGlzIHdpZGVseSB1c2VkIGJ5IHZvaWNlIGhhcmR3YXJlIGFuZFxuIDI0NTpcdFx0ICBzb2Z0d2FyZSBpbmNsdWRpbmcgdm9pY2UgZ2F0ZXdheXMsIElQIHBob25lcywgTmV0bWVldGluZywgT3BlblBob25lLFxuIDI0NjpcdFx0ICBHbm9tZW1lZXRpbmcsIGV0Yy5cbiAyNDc6XHRcbiAyNDg6XHRcdCAgV2l0aCB0aGlzIG1vZHVsZSB5b3UgY2FuIHN1cHBvcnQgSC4zMjMgb24gYSBjb25uZWN0aW9uIHRyYWNraW5nL05BVFxuIDI0OTpcdFx0ICBmaXJld2FsbC5cbiAyNTA6XHRcbiAyNTE6XHRcdCAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgUkFTLCBGYXN0IFN0YXJ0LCBILjI0NSBUdW5uZWxsaW5nLCBDYWxsXG4gMjUyOlx0XHQgIEZvcndhcmRpbmcsIFJUUC9SVENQIGFuZCBULjEyMCBiYXNlZCBhdWRpbywgdmlkZW8sIGZheCwgY2hhdCxcbiAyNTM6XHRcdCAgd2hpdGVib2FyZCwgZmlsZSB0cmFuc2ZlciwgZXRjLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlXG4gMjU0Olx0XHQgIHZpc2l0IGh0dHA6Ly9uYXRoMzIzLnNvdXJjZWZvcmdlLm5ldC8uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNTI5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyBpZiBJLCBhbiBleHBlcnQsIGFtIHByb2Nlc3NpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBgTkZfQ09OTlRSQUNLX1NJUGAgLSBEaXZpbmcgaW50byB0aGUgRGV0YWlscyoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgYE5GX0NPTk5UUkFDS19TSVBgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIG9mIGNvdXJzZSwgdGhlIGltcGxpY2F0aW9ucyBmb3Igc3RhdGVmdWwgZmlyZXdhbGxpbmcgYW5kIGludHJ1c2lvbiBkZXRlY3Rpb24uIGBTSVBgIOKAkyBTZXNzaW9uIEluaXRpYXRpb24gUHJvdG9jb2wg4oCTIHRoYXQgYXV0b21hdGljYWxseSBicmluZ3MgbWUgdG8gdGhlIGNoYWxsZW5nZXMgb2YgZGVhbGluZyB3aXRoIGR5bmFtaWMgcG9ydHMsIGVtYmVkZGVkIGFkZHJlc3NlcyB3aXRoaW4gdGhlIHBheWxvYWQsIGFuZCB0aGUgZ2VuZXJhbGx5IGNvbXBsZXggbmF0dXJlIG9mIFZvSVAgdHJhZmZpYy4gSSBpbW1lZGlhdGVseSBjb25zaWRlciB0aGUgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgd2Ugb2Z0ZW4gc2VlIGluIGhhbmRsaW5nIFNJUCBjb25uZWN0aW9uIHRyYWNraW5nOyBob3cgZmluZWx5IHR1bmVkIGRvZXMgdGhlIG1vZHVsZSBuZWVkIHRvIGJlIHRvIGF2b2lkIGJlY29taW5nIGEgY2hva2UgcG9pbnQsIGVzcGVjaWFsbHkgdW5kZXIgaGVhdnkgbG9hZD8KCk15IG1pbmQgcmFjZXMgdG8gcG90ZW50aWFsIGlzc3VlczogIEhvdyBlZmZlY3RpdmVseSBkb2VzIGl0IGhhbmRsZSBOQVQgdHJhdmVyc2FsPyBXaGF0IGFib3V0IGRpZmZlcmVudCBTSVAgc2lnbmFsaW5nIG1ldGhvZHMgKFVEUCwgVENQLCBUTFMsIGFuZCBldmVuIFNDVFApIGFuZCB0aGUgbnVhbmNlcyBvZiBlYWNoPyBXZSBuZWVkIHRvIGVuc3VyZSBjb21wbGV0ZSBwcm90b2NvbCBjb21wbGlhbmNlIGFuZCBzZWN1cml0eSBhZ2FpbnN0IHRoaW5ncyBsaWtlIFNJUCBmbG9vZGluZyBhdHRhY2tzLCByZWdpc3RyYXRpb24gaGlqYWNrcywgb3IgbWFsZm9ybWVkIFNJUCBwYWNrZXRzIGRlc2lnbmVkIHRvIGV4cGxvaXQgdnVsbmVyYWJpbGl0aWVzIGluIHRoZSB0cmFja2luZyBjb2RlLiBJIGhhdmUgdG8gdGhpbmsgYWJvdXQgaG93IHRoaXMgbW9kdWxlIGZpdHMgaW50byB0aGUgYnJvYWRlciBwaWN0dXJlIG9mIHRoZSBuZXRmaWx0ZXIgZnJhbWV3b3JrLCBzcGVjaWZpY2FsbHkgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBjb25uZWN0aW9uIHRyYWNraW5nIGhlbHBlcnMuCgpIb3cgcm9idXN0IGlzIHRoZSBTSVAgcGFyc2VyPyBEb2VzIGl0IGhhbmRsZSBib3RoIFJGQyAzMjYxIGFuZCBhbnkgcmVsZXZhbnQgZXh0ZW5zaW9ucyBjbGVhbmx5PyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIGRpZmZlcmVudCBTSVAgaW1wbGVtZW50YXRpb25zIG91dCB0aGVyZSBpbiB0aGUgd2lsZD8gSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCBjb21tb24gU0lQIGRlcGxveW1lbnQgc2NlbmFyaW9zLCBsb29raW5nIGZvciBwb3RlbnRpYWwgZWRnZSBjYXNlcyBvciBwcm9ibGVtYXRpYyBjb25maWd1cmF0aW9ucyB0aGF0IGBORl9DT05OVFJBQ0tfU0lQYCBuZWVkcyB0byBncmFjZWZ1bGx5IGhhbmRsZS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZnVsbCBzdXBwb3J0IGZvciBhbGwgU0lQIG1ldGhvZHMgKElOVklURSwgQllFLCBSRUdJU1RFUiwgZXRjLiksIG9yIGlzIHRoZXJlIGEgc3BlY2lmaWMgc3Vic2V0IGRlZW1lZCBtb3JlIGNyaXRpY2FsPyBGaW5hbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgd2UgY2FuIHRyb3VibGVzaG9vdCBhbmQgZGVidWcgdGhpcyBtb2R1bGUgZWZmZWN0aXZlbHksIHNob3VsZCBwcm9ibGVtcyBhcmlzZS4gSXMgdGhlcmUgYWRlcXVhdGUgbG9nZ2luZyBhbmQgbW9uaXRvcmluZyBhdmFpbGFibGUsIGFuZCBob3cgYXJlIHdlIGdvaW5nIHRvIGludGVyYWN0IHdpdGggaXQ/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIzOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9DT05OVFJBQ0tfU0lQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zMzA9Y29uZmlnIE5GX0NPTk5UUkFDS19TQU5FXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0Mi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNDM6Y29uZmlnIE5GX0NPTk5UUkFDS19TSVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNDQtXHR0cmlzdGF0ZSBcJiMzNDtTSVAgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzA1MwoJCQkJCQkJb3V0cHV0OiAyMDQKCQkJCQkJCXRob3VnaHRzOiA5MDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgTmV0ZmlsdGVyJiMzOTtzIEguMzIzIGFuZCBTSVAgTkFUIEhlbHBlcnMqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhhdCBgTkZfQ09OTlRSQUNLX0gzMjNgIGFuZCBgTkZfQ09OTlRSQUNLX1NJUGAgYXJlIHRoZSBjcnVjaWFsIGNvbmZpZ3Mgd2UgbmVlZCB0byBlbmFibGUgZm9yIHRoaXMgZnV6emluZyBjYW1wYWlnbi4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBvdXIgZm9jdXMgaXMgYWNjdXJhdGUuCgpJJiMzOTt2ZSBpZGVudGlmaWVkIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyYCBhcyB0aGUgbmV3IGZ1bmN0aW9uIGNlbnRyYWwgdG8gdGhpcy4gQWxzbywgdGhlIHBhdGNoIG1vZGlmaWVzIGBuYXRfcnRwX3J0Y3BgIGluIGBuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuY2AgYW5kIGBuZl9uYXRfc2RwX21lZGlhYCBpbiBgbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmNgLiBUaGUgZ29vZCBuZXdzIGlzLCBhbGwgdGhlc2UgZnVuY3Rpb25zIHNob3VsZCBiZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIHNwZWNpZmljYWxseSB0aHJvdWdoIEguMzIzIGFuZCBTSVAgcGFja2V0cyB0cmF2ZXJzaW5nIGEgbmV0ZmlsdGVyIE5BVCBzZXR1cC4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGNvcmUgbmV0ZmlsdGVyIGxvZ2ljLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIHRoZSBlZmZvcnQgdG8gZnV6eiBpdC4gV2UgbmVlZCB0byBiZSBzdXJlIHRoZSBuZXcgYXRvbWljIGluc2VydGlvbiBvZiB0aGUgcmVsYXRlZCBjb25udHJhY2sgZXhwZWN0YXRpb25zIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IGJ1Z3MuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIHRoZSBmdW5jdGlvbiBuYW1lczogYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXJgLCBgbmF0X3J0cF9ydGNwYCwgYW5kIGBuZl9uYXRfc2RwX21lZGlhYC4KCkEgcXVpY2sgY2hlY2sgY29uZmlybXMgYG5hdF9ydHBfcnRjcGAgYW5kIGBuZl9uYXRfc2RwX21lZGlhYCBhcmUgaW5kZWVkIHN0YXRpYywgYnV0IHN5emthbGxlciBjYW4gaGFuZGxlIGZ1enppbmcgc3RhdGljIGZ1bmN0aW9ucyBpZiB0aGUgZGVidWcgaW5mbyBpcyBwcmVzZW50LCB3aGljaCBpdCBzaG91bGQgYmUuCgpMZXQmIzM5O3MgZG8gYSBmaW5hbCByZXZpZXcgb2YgdGhlIGZ1bmN0aW9ucyBpbnZvbHZlZDoKKiAgIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyYCBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNgCiogICBgbmF0X3J0cF9ydGNwYCBpbiBgbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNgCiogICBgbmZfbmF0X3NkcF9tZWRpYWAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jYAoKSSYjMzk7dmUgcmUtdmVyaWZpZWQgdGhlIHBhdGNoIGl0c2VsZiwgY29uZmlybWluZyB0aGUgYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXJgIGZ1bmN0aW9uLgoKTm93LCBvbiB0aGUgY29uZmlnIHNpZGU6IE9yaWdpbmFsbHksIEkgdGhvdWdodCBgTkZfTkFUYCB3b3VsZCBiZSByZWxldmFudCwgYnV0IGxvb2tpbmcgY2xvc2VyLCBJIHRoaW5rIHdlIHNob3VsZCBqdXN0IHJlbHkgb24gZW5hYmxpbmcgYE5GX0NPTk5UUkFDS19IMzIzYCBhbmQgYE5GX0NPTk5UUkFDS19TSVBgLiBUaGUgY29kZSBjaGFuZ2VzIGFyZSBpbiB0aGUgSC4zMjMgYW5kIFNJUCBOQVQgaGVscGVycyB3aGljaCBhcmUgY29tcGlsZWQgdW5kZXIgdGhlIHNwZWNpZmljIGNvbmZpZ3MgYE5GX05BVF9IMzIzYCBhbmQgYE5GX05BVF9TSVBgLiBCZWNhdXNlIHRoZXNlIGNvbmZpZ3MgZG9uJiMzOTt0IGhhdmUgcHJvbXB0cywgdGhleSBhcmUgZW5hYmxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gYE5GX0NPTk5UUkFDS19IMzIzYCBhbmQgYE5GX0NPTk5UUkFDS19TSVBgIGFyZSBlbmFibGVkIChhc3N1bWluZyBgTkZfTkFUYCBpcyBlbmFibGVkKS4gU28sIHN0aWNraW5nIHdpdGggYE5GX0NPTk5UUkFDS19IMzIzYCBhbmQgYE5GX0NPTk5UUkFDS19TSVBgIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AgbWFrZXMgdGhlIG1vc3Qgc2Vuc2UuCgpTbyB0aGUgcmVhc29uaW5nIGhvbGRzOiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcmAsIHVwZGF0aW5nIEguMzIzIGFuZCBTSVAgTkFUIGhlbHBlcnMuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBjb3JlIG5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljIHRoYXQmIzM5O3MgcmVhY2hhYmxlIHRocm91Z2ggY3JhZnRlZCBILjMyMyBvciBTSVAgcGFja2V0cyByb3V0ZWQgdGhyb3VnaCBhIE5BVCBzZXR1cC4gV2UgbmVlZCB0byBmdXp6IHRoaXMgdG8gY2hlY2sgdGhlIG5ldyBhdG9taWMgaW5zZXJ0aW9uIGZvciByZWdyZXNzaW9ucywgbWVtb3J5IGxlYWtzLCBhbmQgYW55IHJhY2UgY29uZGl0aW9ucy4KCk15IGtleSBmb2N1cyBzeW1ib2xzIHdpbGwgYmU6IGBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyYCwgYG5hdF9ydHBfcnRjcGAsIGFuZCBgbmZfbmF0X3NkcF9tZWRpYWAuIEkmIzM5O20gY29uZmlkZW50IHRoaXMgaXMgYSBzb3VuZCBwbGFuLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0gzMjMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1NJUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXImIzM0OywKICAgICYjMzQ7bmF0X3J0cF9ydGNwJiMzNDssCiAgICAmIzM0O25mX25hdF9zZHBfbWVkaWEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcmAgdG8gYXRvbWljYWxseSBpbnNlcnQgYSBwYWlyIG9mIHJlbGF0ZWQgY29ubnRyYWNrIGV4cGVjdGF0aW9ucyAoZS5nLiwgUlRQIGFuZCBSVENQKSBhbmQgdXBkYXRlcyB0aGUgSC4zMjMgYW5kIFNJUCBOQVQgaGVscGVycyB0byB1c2UgdGhpcyBuZXcgQVBJLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIG5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljIHRoYXQgaGFuZGxlcyBjb21wbGV4IHByb3RvY29scywgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IHNlbmRpbmcgY3JhZnRlZCBILjMyMyBvciBTSVAgcGFja2V0cyB0aHJvdWdoIGEgTkFUIHNldHVwLiBJdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IGF0b21pYyBpbnNlcnRpb24gbG9naWMgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLCBtZW1vcnkgbGVha3MsIG9yIHJhY2UgY29uZGl0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfQ09OTlRSQUNLX0gzMjMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1NJUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXImIzM0OywKICAgICYjMzQ7bmF0X3J0cF9ydGNwJiMzNDssCiAgICAmIzM0O25mX25hdF9zZHBfbWVkaWEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcmAgdG8gYXRvbWljYWxseSBpbnNlcnQgYSBwYWlyIG9mIHJlbGF0ZWQgY29ubnRyYWNrIGV4cGVjdGF0aW9ucyAoZS5nLiwgUlRQIGFuZCBSVENQKSBhbmQgdXBkYXRlcyB0aGUgSC4zMjMgYW5kIFNJUCBOQVQgaGVscGVycyB0byB1c2UgdGhpcyBuZXcgQVBJLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIG5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljIHRoYXQgaGFuZGxlcyBjb21wbGV4IHByb3RvY29scywgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IHNlbmRpbmcgY3JhZnRlZCBILjMyMyBvciBTSVAgcGFja2V0cyB0aHJvdWdoIGEgTkFUIHNldHVwLiBJdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IGF0b21pYyBpbnNlcnRpb24gbG9naWMgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLCBtZW1vcnkgbGVha3MsIG9yIHJhY2UgY29uZGl0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjM5OjM5Ljg3MzEyMjIxN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1MTg1NzQ1NjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS19IMzIzXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfU0lQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpclwiLFxuICAgIFwibmF0X3J0cF9ydGNwXCIsXG4gICAgXCJuZl9uYXRfc2RwX21lZGlhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcmAgdG8gYXRvbWljYWxseSBpbnNlcnQgYSBwYWlyIG9mIHJlbGF0ZWQgY29ubnRyYWNrIGV4cGVjdGF0aW9ucyAoZS5nLiwgUlRQIGFuZCBSVENQKSBhbmQgdXBkYXRlcyB0aGUgSC4zMjMgYW5kIFNJUCBOQVQgaGVscGVycyB0byB1c2UgdGhpcyBuZXcgQVBJLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIG5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljIHRoYXQgaGFuZGxlcyBjb21wbGV4IHByb3RvY29scywgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IHNlbmRpbmcgY3JhZnRlZCBILjMyMyBvciBTSVAgcGFja2V0cyB0aHJvdWdoIGEgTkFUIHNldHVwLiBJdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IGF0b21pYyBpbnNlcnRpb24gbG9naWMgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMsIG1lbW9yeSBsZWFrcywgb3IgcmFjZSBjb25kaXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMzozOTozOS44NzMxMjc1NTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxMDc5MDEyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI4ZmE0OWEyMDQ5NGFmM2JmNzZhY2NlMTg1MTliNWY4MjgwMmEwZjJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMTIgMjM6Mzk6MzggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaCBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmhcXG5pbmRleCBjMDI0MzQ1YzliZDg2Mi4uMjZkNmJhYmQ5MmZjZDcgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuaFxcbisrKyBiL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmhcXG5AQCAtMTYxLDYgKzE2MSw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3QsXFxuIFxcdHJldHVybiBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoZXhwZWN0LCAwLCAwLCBmbGFncyk7XFxuIH1cXG4gXFxuK2ludCBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3RbXSxcXG4rXFx0XFx0XFx0ICAgICAgdW5zaWduZWQgaW50IGZsYWcpO1xcbitcXG4gc3RydWN0IG5mX2Nvbm5faGVscDtcXG4gdm9pZCBuZl9jdF9leHBlY3RhdGlvbl9nYyhzdHJ1Y3QgbmZfY29ubl9oZWxwICptYXN0ZXJfaGVscCk7XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuYyBiL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jXFxuaW5kZXggMTgzZThhM2ZmMmJhYmQuLjZiY2Q2NzM0NzY5YjU5IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jXFxuKysrIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNcXG5AQCAtMTgyLDYgKzE4Miw3IEBAIHN0YXRpYyBpbnQgbmF0X3J0cF9ydGNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4gXFx0XFx0XFx0c3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnJ0cF9leHAsXFxuIFxcdFxcdFxcdHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpydGNwX2V4cClcXG4ge1xcbitcXHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqcnRwX3BhaXJbMl0gPSB7IHJ0cF9leHAsIHJ0Y3BfZXhwIH07XFxuIFxcdHN0cnVjdCBuZl9jdF9oMzIzX21hc3RlciAqaW5mbyA9IG5mY3RfaGVscF9kYXRhKGN0KTtcXG4gXFx0aW50IGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcXG4gXFx0aW50IGk7XFxuQEAgLTIyNywyMiArMjI4LDEzIEBAIHN0YXRpYyBpbnQgbmF0X3J0cF9ydGNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcXG4gXFx0XFx0aW50IHJldDtcXG4gXFxuIFxcdFxcdHJ0cF9leHAtXFx1MDAzZXR1cGxlLmRzdC51LnVkcC5wb3J0ID0gaHRvbnMobmF0ZWRfcG9ydCk7XFxuLVxcdFxcdHJldCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHJ0cF9leHAsIDApO1xcbitcXHRcXHRydGNwX2V4cC1cXHUwMDNldHVwbGUuZHN0LnUudWRwLnBvcnQgPSBodG9ucyhuYXRlZF9wb3J0ICsgMSk7XFxuK1xcdFxcdHJldCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXIocnRwX3BhaXIsIDApO1xcbiBcXHRcXHRpZiAocmV0ID09IDApIHtcXG4tXFx0XFx0XFx0cnRjcF9leHAtXFx1MDAzZXR1cGxlLmRzdC51LnVkcC5wb3J0ID1cXG4tXFx0XFx0XFx0ICAgIGh0b25zKG5hdGVkX3BvcnQgKyAxKTtcXG4tXFx0XFx0XFx0cmV0ID0gbmZfY3RfZXhwZWN0X3JlbGF0ZWQocnRjcF9leHAsIDApO1xcbi1cXHRcXHRcXHRpZiAocmV0ID09IDApXFxuLVxcdFxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRcXHRlbHNlIGlmIChyZXQgPT0gLUVCVVNZKSB7XFxuLVxcdFxcdFxcdFxcdG5mX2N0X3VuZXhwZWN0X3JlbGF0ZWQocnRwX2V4cCk7XFxuLVxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHRcXHR9IGVsc2UgaWYgKHJldCBcXHUwMDNjIDApIHtcXG4tXFx0XFx0XFx0XFx0bmZfY3RfdW5leHBlY3RfcmVsYXRlZChydHBfZXhwKTtcXG4tXFx0XFx0XFx0XFx0bmF0ZWRfcG9ydCA9IDA7XFxuLVxcdFxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRcXHR9XFxuLVxcdFxcdH0gZWxzZSBpZiAocmV0ICE9IC1FQlVTWSkge1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fSBlbHNlIGlmIChyZXQgPT0gLUVCVVNZKSB7XFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHR9IGVsc2UgaWYgKHJldCBcXHUwMDNjIDApIHtcXG4gXFx0XFx0XFx0bmF0ZWRfcG9ydCA9IDA7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHR9XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNcXG5pbmRleCA3YWU2OGQ2MDU4NmEyMy4uNGY0NmM5MmJmOGZiMjcgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xcbkBAIC01NDYsNiArNTQ2LDM1IEBAIGludCBuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cGVjdCxcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTChuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQpO1xcbiBcXG4raW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXIoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmV4cGVjdFtdLFxcbitcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpXFxuK3tcXG4rXFx0c3RydWN0IG5mX2Nvbm5faGVscCAqbWFzdGVyX2hlbHA7XFxuK1xcdGludCBpLCByZXQ7XFxuK1xcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNm5mX2Nvbm50cmFja19leHBlY3RfbG9jayk7XFxuK1xcdG1hc3Rlcl9oZWxwID0gbmZjdF9oZWxwKGV4cGVjdFswXS1cXHUwMDNlbWFzdGVyKTtcXG4rXFx0aWYgKG1hc3Rlcl9oZWxwICE9IG5mY3RfaGVscChleHBlY3RbMV0tXFx1MDAzZW1hc3RlcikpIHtcXG4rXFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAyOyBpKyspIHtcXG4rXFx0XFx0cmV0ID0gX19uZl9jdF9leHBlY3RfY2hlY2soZXhwZWN0W2ldLCBtYXN0ZXJfaGVscCwgZmxhZ3MpO1xcbitcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdH1cXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAyOyBpKyspIHtcXG4rXFx0XFx0bmZfY3RfZXhwZWN0X2luc2VydChleHBlY3RbaV0sIG1hc3Rlcl9oZWxwKTtcXG4rXFx0XFx0bmZfY3RfZXhwZWN0X2V2ZW50X3JlcG9ydChJUEVYUF9ORVcsIGV4cGVjdFtpXSwgMCwgMCk7XFxuK1xcdH1cXG4rb3V0OlxcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2bmZfY29ubnRyYWNrX2V4cGVjdF9sb2NrKTtcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTChuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyKTtcXG4rXFxuIHZvaWQgbmZfY3RfZXhwZWN0X2l0ZXJhdGVfZGVzdHJveShib29sICgqaXRlcikoc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKmUsIHZvaWQgKmRhdGEpLFxcbiBcXHRcXHRcXHRcXHQgIHZvaWQgKmRhdGEpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY1xcbmluZGV4IGFlYTAyZjZhZmYwOTJhLi45ZTlmZjk4NmVjZTVhOSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jXFxuQEAgLTU5Miw2ICs1OTIsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG5mX25hdF9zZHBfbWVkaWEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsXFxuIFxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IG1lZGlhbGVuLFxcbiBcXHRcXHRcXHRcXHQgICAgIHVuaW9uIG5mX2luZXRfYWRkciAqcnRwX2FkZHIpXFxuIHtcXG4rXFx0c3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnJ0cF9wYWlyWzJdID0geyBydHBfZXhwLCBydGNwX2V4cCB9O1xcbiBcXHRlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbztcXG4gXFx0c3RydWN0IG5mX2Nvbm4gKmN0ID0gbmZfY3RfZ2V0KHNrYiwgXFx1MDAyNmN0aW5mbyk7XFxuIFxcdGVudW0gaXBfY29ubnRyYWNrX2RpciBkaXIgPSBDVElORk8yRElSKGN0aW5mbyk7XFxuQEAgLTYyMiwyNCArNjIzLDE1IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X3NkcF9tZWRpYShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4gXFx0XFx0aW50IHJldDtcXG4gXFxuIFxcdFxcdHJ0cF9leHAtXFx1MDAzZXR1cGxlLmRzdC51LnVkcC5wb3J0ID0gaHRvbnMocG9ydCk7XFxuLVxcdFxcdHJldCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHJ0cF9leHAsXFxuLVxcdFxcdFxcdFxcdFxcdCAgIE5GX0NUX0VYUF9GX1NLSVBfTUFTVEVSKTtcXG4tXFx0XFx0aWYgKHJldCA9PSAtRUJVU1kpXFxuLVxcdFxcdFxcdGNvbnRpbnVlO1xcbi1cXHRcXHRlbHNlIGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLVxcdFxcdFxcdHBvcnQgPSAwO1xcbi1cXHRcXHRcXHRicmVhaztcXG4tXFx0XFx0fVxcbiBcXHRcXHRydGNwX2V4cC1cXHUwMDNldHVwbGUuZHN0LnUudWRwLnBvcnQgPSBodG9ucyhwb3J0ICsgMSk7XFxuLVxcdFxcdHJldCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHJ0Y3BfZXhwLFxcbi1cXHRcXHRcXHRcXHRcXHQgICBORl9DVF9FWFBfRl9TS0lQX01BU1RFUik7XFxuK1xcbitcXHRcXHRyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyKHJ0cF9wYWlyLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRORl9DVF9FWFBfRl9TS0lQX01BU1RFUik7XFxuIFxcdFxcdGlmIChyZXQgPT0gMClcXG4gXFx0XFx0XFx0YnJlYWs7XFxuLVxcdFxcdGVsc2UgaWYgKHJldCA9PSAtRUJVU1kpIHtcXG4tXFx0XFx0XFx0bmZfY3RfdW5leHBlY3RfcmVsYXRlZChydHBfZXhwKTtcXG4rXFx0XFx0ZWxzZSBpZiAocmV0ID09IC1FQlVTWSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuLVxcdFxcdH0gZWxzZSBpZiAocmV0IFxcdTAwM2MgMCkge1xcbi1cXHRcXHRcXHRuZl9jdF91bmV4cGVjdF9yZWxhdGVkKHJ0cF9leHApO1xcbitcXHRcXHRlbHNlIGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdFxcdHBvcnQgPSAwO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMzozOTo0MC4zODQ2NzczNjZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0Njc0MTcyNzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0NPTk5UUkFDS19IMzIzXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfU0lQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpclwiLFxuICAgIFwibmF0X3J0cF9ydGNwXCIsXG4gICAgXCJuZl9uYXRfc2RwX21lZGlhXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcmAgdG8gYXRvbWljYWxseSBpbnNlcnQgYSBwYWlyIG9mIHJlbGF0ZWQgY29ubnRyYWNrIGV4cGVjdGF0aW9ucyAoZS5nLiwgUlRQIGFuZCBSVENQKSBhbmQgdXBkYXRlcyB0aGUgSC4zMjMgYW5kIFNJUCBOQVQgaGVscGVycyB0byB1c2UgdGhpcyBuZXcgQVBJLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIG5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljIHRoYXQgaGFuZGxlcyBjb21wbGV4IHByb3RvY29scywgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IHNlbmRpbmcgY3JhZnRlZCBILjMyMyBvciBTSVAgcGFja2V0cyB0aHJvdWdoIGEgTkFUIHNldHVwLiBJdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IGF0b21pYyBpbnNlcnRpb24gbG9naWMgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMsIG1lbW9yeSBsZWFrcywgb3IgcmFjZSBjb25kaXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI4ZmE0OWEyMDQ5NGFmM2JmNzZhY2NlMTg1MTliNWY4MjgwMmEwZjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxMiAyMzozOTozOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmggYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oXG5pbmRleCBjMDI0MzQ1YzliZDg2Mi4uMjZkNmJhYmQ5MmZjZDcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oXG4rKysgYi9pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5oXG5AQCAtMTYxLDYgKzE2MSw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3QsXG4gXHRyZXR1cm4gbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcmVwb3J0KGV4cGVjdCwgMCwgMCwgZmxhZ3MpO1xuIH1cbiBcbitpbnQgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcihzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0W10sXG4rXHRcdFx0ICAgICAgdW5zaWduZWQgaW50IGZsYWcpO1xuK1xuIHN0cnVjdCBuZl9jb25uX2hlbHA7XG4gdm9pZCBuZl9jdF9leHBlY3RhdGlvbl9nYyhzdHJ1Y3QgbmZfY29ubl9oZWxwICptYXN0ZXJfaGVscCk7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmMgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuY1xuaW5kZXggMTgzZThhM2ZmMmJhYmQuLjZiY2Q2NzM0NzY5YjU5IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNcbisrKyBiL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jXG5AQCAtMTgyLDYgKzE4Miw3IEBAIHN0YXRpYyBpbnQgbmF0X3J0cF9ydGNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0XHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqcnRwX2V4cCxcbiBcdFx0XHRzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqcnRjcF9leHApXG4ge1xuK1x0c3RydWN0IG5mX2Nvbm50cmFja19leHBlY3QgKnJ0cF9wYWlyWzJdID0geyBydHBfZXhwLCBydGNwX2V4cCB9O1xuIFx0c3RydWN0IG5mX2N0X2gzMjNfbWFzdGVyICppbmZvID0gbmZjdF9oZWxwX2RhdGEoY3QpO1xuIFx0aW50IGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcbiBcdGludCBpO1xuQEAgLTIyNywyMiArMjI4LDEzIEBAIHN0YXRpYyBpbnQgbmF0X3J0cF9ydGNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0aW50IHJldDtcbiBcbiBcdFx0cnRwX2V4cC1cdTAwM2V0dXBsZS5kc3QudS51ZHAucG9ydCA9IGh0b25zKG5hdGVkX3BvcnQpO1xuLVx0XHRyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZChydHBfZXhwLCAwKTtcbitcdFx0cnRjcF9leHAtXHUwMDNldHVwbGUuZHN0LnUudWRwLnBvcnQgPSBodG9ucyhuYXRlZF9wb3J0ICsgMSk7XG4rXHRcdHJldCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXIocnRwX3BhaXIsIDApO1xuIFx0XHRpZiAocmV0ID09IDApIHtcbi1cdFx0XHRydGNwX2V4cC1cdTAwM2V0dXBsZS5kc3QudS51ZHAucG9ydCA9XG4tXHRcdFx0ICAgIGh0b25zKG5hdGVkX3BvcnQgKyAxKTtcbi1cdFx0XHRyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZChydGNwX2V4cCwgMCk7XG4tXHRcdFx0aWYgKHJldCA9PSAwKVxuLVx0XHRcdFx0YnJlYWs7XG4tXHRcdFx0ZWxzZSBpZiAocmV0ID09IC1FQlVTWSkge1xuLVx0XHRcdFx0bmZfY3RfdW5leHBlY3RfcmVsYXRlZChydHBfZXhwKTtcbi1cdFx0XHRcdGNvbnRpbnVlO1xuLVx0XHRcdH0gZWxzZSBpZiAocmV0IFx1MDAzYyAwKSB7XG4tXHRcdFx0XHRuZl9jdF91bmV4cGVjdF9yZWxhdGVkKHJ0cF9leHApO1xuLVx0XHRcdFx0bmF0ZWRfcG9ydCA9IDA7XG4tXHRcdFx0XHRicmVhaztcbi1cdFx0XHR9XG4tXHRcdH0gZWxzZSBpZiAocmV0ICE9IC1FQlVTWSkge1xuK1x0XHRcdGJyZWFrO1xuK1x0XHR9IGVsc2UgaWYgKHJldCA9PSAtRUJVU1kpIHtcbitcdFx0XHRjb250aW51ZTtcbitcdFx0fSBlbHNlIGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0XHRuYXRlZF9wb3J0ID0gMDtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfZXhwZWN0LmNcbmluZGV4IDdhZTY4ZDYwNTg2YTIzLi40ZjQ2YzkyYmY4ZmIyNyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2V4cGVjdC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY1xuQEAgLTU0Niw2ICs1NDYsMzUgQEAgaW50IG5mX2N0X2V4cGVjdF9yZWxhdGVkX3JlcG9ydChzdHJ1Y3QgbmZfY29ubnRyYWNrX2V4cGVjdCAqZXhwZWN0LFxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChuZl9jdF9leHBlY3RfcmVsYXRlZF9yZXBvcnQpO1xuIFxuK2ludCBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpleHBlY3RbXSxcbitcdFx0XHQgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpXG4re1xuK1x0c3RydWN0IG5mX2Nvbm5faGVscCAqbWFzdGVyX2hlbHA7XG4rXHRpbnQgaSwgcmV0O1xuK1xuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNm5mX2Nvbm50cmFja19leHBlY3RfbG9jayk7XG4rXHRtYXN0ZXJfaGVscCA9IG5mY3RfaGVscChleHBlY3RbMF0tXHUwMDNlbWFzdGVyKTtcbitcdGlmIChtYXN0ZXJfaGVscCAhPSBuZmN0X2hlbHAoZXhwZWN0WzFdLVx1MDAzZW1hc3RlcikpIHtcbitcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0Z290byBvdXQ7XG4rXHR9XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyAyOyBpKyspIHtcbitcdFx0cmV0ID0gX19uZl9jdF9leHBlY3RfY2hlY2soZXhwZWN0W2ldLCBtYXN0ZXJfaGVscCwgZmxhZ3MpO1xuK1x0XHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRcdGdvdG8gb3V0O1xuK1x0fVxuK1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgMjsgaSsrKSB7XG4rXHRcdG5mX2N0X2V4cGVjdF9pbnNlcnQoZXhwZWN0W2ldLCBtYXN0ZXJfaGVscCk7XG4rXHRcdG5mX2N0X2V4cGVjdF9ldmVudF9yZXBvcnQoSVBFWFBfTkVXLCBleHBlY3RbaV0sIDAsIDApO1xuK1x0fVxuK291dDpcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNm5mX2Nvbm50cmFja19leHBlY3RfbG9jayk7XG4rXHRyZXR1cm4gcmV0O1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyKTtcbitcbiB2b2lkIG5mX2N0X2V4cGVjdF9pdGVyYXRlX2Rlc3Ryb3koYm9vbCAoKml0ZXIpKHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICplLCB2b2lkICpkYXRhKSxcbiBcdFx0XHRcdCAgdm9pZCAqZGF0YSlcbiB7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY1xuaW5kZXggYWVhMDJmNmFmZjA5MmEuLjllOWZmOTg2ZWNlNWE5IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jXG5AQCAtNTkyLDYgKzU5Miw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X3NkcF9tZWRpYShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbiBcdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IG1lZGlhbGVuLFxuIFx0XHRcdFx0ICAgICB1bmlvbiBuZl9pbmV0X2FkZHIgKnJ0cF9hZGRyKVxuIHtcbitcdHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0ICpydHBfcGFpclsyXSA9IHsgcnRwX2V4cCwgcnRjcF9leHAgfTtcbiBcdGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvO1xuIFx0c3RydWN0IG5mX2Nvbm4gKmN0ID0gbmZfY3RfZ2V0KHNrYiwgXHUwMDI2Y3RpbmZvKTtcbiBcdGVudW0gaXBfY29ubnRyYWNrX2RpciBkaXIgPSBDVElORk8yRElSKGN0aW5mbyk7XG5AQCAtNjIyLDI0ICs2MjMsMTUgQEAgc3RhdGljIHVuc2lnbmVkIGludCBuZl9uYXRfc2RwX21lZGlhKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBwcm90b2ZmLFxuIFx0XHRpbnQgcmV0O1xuIFxuIFx0XHRydHBfZXhwLVx1MDAzZXR1cGxlLmRzdC51LnVkcC5wb3J0ID0gaHRvbnMocG9ydCk7XG4tXHRcdHJldCA9IG5mX2N0X2V4cGVjdF9yZWxhdGVkKHJ0cF9leHAsXG4tXHRcdFx0XHRcdCAgIE5GX0NUX0VYUF9GX1NLSVBfTUFTVEVSKTtcbi1cdFx0aWYgKHJldCA9PSAtRUJVU1kpXG4tXHRcdFx0Y29udGludWU7XG4tXHRcdGVsc2UgaWYgKHJldCBcdTAwM2MgMCkge1xuLVx0XHRcdHBvcnQgPSAwO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHR9XG4gXHRcdHJ0Y3BfZXhwLVx1MDAzZXR1cGxlLmRzdC51LnVkcC5wb3J0ID0gaHRvbnMocG9ydCArIDEpO1xuLVx0XHRyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZChydGNwX2V4cCxcbi1cdFx0XHRcdFx0ICAgTkZfQ1RfRVhQX0ZfU0tJUF9NQVNURVIpO1xuK1xuK1x0XHRyZXQgPSBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyKHJ0cF9wYWlyLFxuK1x0XHRcdFx0XHRcdE5GX0NUX0VYUF9GX1NLSVBfTUFTVEVSKTtcbiBcdFx0aWYgKHJldCA9PSAwKVxuIFx0XHRcdGJyZWFrO1xuLVx0XHRlbHNlIGlmIChyZXQgPT0gLUVCVVNZKSB7XG4tXHRcdFx0bmZfY3RfdW5leHBlY3RfcmVsYXRlZChydHBfZXhwKTtcbitcdFx0ZWxzZSBpZiAocmV0ID09IC1FQlVTWSlcbiBcdFx0XHRjb250aW51ZTtcbi1cdFx0fSBlbHNlIGlmIChyZXQgXHUwMDNjIDApIHtcbi1cdFx0XHRuZl9jdF91bmV4cGVjdF9yZWxhdGVkKHJ0cF9leHApO1xuK1x0XHRlbHNlIGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0XHRwb3J0ID0gMDtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjM6Mzk6NDAuMzg0Njc4OTI2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYxNzI3MzAyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvbm50cmFjayBFeHBlY3RhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2Ugd2UncmUgaW50cm9kdWNpbmcgYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXJgIGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY2AuIFRoZSBjb3JlIG9mIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IHRvIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBleHBlY3RhdGlvbiBsb2dpYywgdGFyZ2V0aW5nIEguMzIzIGFuZCBTSVAgTkFUIGhlbHBlcnMuIEl0IGxvb2tzIGxpa2UgaXQncyBhIGdvb2QgaWRlYSDigJMgd2UncmUgY29tYmluaW5nIHR3byBleHBlY3RhdGlvbnMsIFJUUCBhbmQgUlRDUCwgaW50byBhIHNpbmdsZSBhdG9taWMgb3BlcmF0aW9uLiBUaGlzIHNob3VsZCBiZSBhIHNpZ25pZmljYW50IGltcHJvdmVtZW50LCBwcmV2ZW50aW5nIHRob3NlIG5hc3R5IHJhY2UgY29uZGl0aW9ucyBhbmQgcGFydGlhbCBleHBlY3RhdGlvbiBpbnNlcnRpb25zIHRoYXQgY2FuIGNyb3AgdXAgd2l0aCB0aGVzZSBraW5kcyBvZiBjb25uZWN0aW9ucy5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlYWNoYWJpbGl0eSBhbmQgYW55IHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLiBTbywgdGhpcyBuZXcgZnVuY3Rpb24sIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyYCwgaXMgdXNlZCBieSBgbmF0X3J0cF9ydGNwYCBpbiBgbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNgIGFuZCBgbmZfbmF0X3NkcF9tZWRpYWAgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jYC4gTWFrZXMgc2Vuc2UsIHRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIHJlc3BvbnNpYmxlIGZvciBkZWFsaW5nIHdpdGggdGhvc2UgTkFUIGhlbHBlcnMuXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucy4gTGV0J3Mgc2VlLi4uIGBuZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2gzMjMuY2AgaXMgY29udHJvbGxlZCBieSBgQ09ORklHX05GX05BVF9IMzIzYCBhbmQgYG5ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jYCB1c2VzIGBDT05GSUdfTkZfTkFUX1NJUGAuIExvb2tzIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIGJ1dCBJJ2xsIGRvdWJsZS1jaGVjayB0aGlzIGluIHRoZSBNYWtlZmlsZXMgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBHb3R0YSBiZSB0aG9yb3VnaC4gVGhpcyBsb29rcyBsaWtlIGEgc29saWQgY2hhbmdlLCBhbmQgSSdsbCBtYWtlIHN1cmUgaXQncyBmdWxseSB2YWxpZGF0ZWQgYmVmb3JlIHJlY29tbWVuZGluZyBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY4MiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjM5OjQ2LjAwMTk1NTkyOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI1OTY5NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfbmF0X2gzMjMub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19ORl9SRUpFQ1RfSVBWNCkgKz0gbmZfcmVqZWN0X2lwdjQub1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTE1LSMgTkFUIGhlbHBlcnMgKG5mX2Nvbm50cmFjaylcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX05GX05BVF9IMzIzKSArPSBuZl9uYXRfaDMyMy5vXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTE3LW9iai0kKENPTkZJR19ORl9OQVRfUFBUUCkgKz0gbmZfbmF0X3BwdHAub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMzozOTo0Ni4xMTQ1NjExNzNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTk4OTM5MzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBJJ20gcmVhZHkgdG8gZGl2ZSBpbnRvIHRoaXMuIExldCdzIHNlZSB3aGF0IHRoaXMgdGV4dCBpcyBhYm91dCBhbmQgSSdsbCBzdW1tYXJpemUgaXQgYXMgaWYgdGhlc2Ugd2VyZSBteSBvd24gaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzZXMsIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZSBpbiB0aGlzIGZpZWxkLlxuXG4qKipcblxuKipBbmFseXppbmcgU0lQIGFuZCBJdHMgSW1wbGljYXRpb25zKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXaGVuIEkgc2VlIFwiU0lQLFwiIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gU2Vzc2lvbiBJbml0aWF0aW9uIFByb3RvY29sLCBvZiBjb3Vyc2UuIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIOKAkyB0aGUgZnVuZGFtZW50YWwgcm9sZSBpdCBwbGF5cyBpbiBlc3RhYmxpc2hpbmcsIG1vZGlmeWluZywgYW5kIHRlcm1pbmF0aW5nIG11bHRpbWVkaWEgc2Vzc2lvbnMuIEknbSBjb25zaWRlcmluZyB0aGUgaW50cmljYWNpZXMgb2YgaXRzIG1lc3NhZ2Ugc3RydWN0dXJlLCB0aGUgUkZDcywgdGhlIHZhcmlvdXMgZXh0ZW5zaW9ucy4uLiB0aGUgd29ya3MuIEkgbmVlZCB0byB0aGluayBhYm91dCBob3cgaXQncyB1c2VkIGluIFZvSVAsIHZpZGVvIGNvbmZlcmVuY2luZywgaW5zdGFudCBtZXNzYWdpbmcsIGFuZCBhbGwgb2YgdGhlc2UgcmVhbC10aW1lIGNvbW11bmljYXRpb24gc3lzdGVtcy4gSSdtIHJ1bm5pbmcgdGhyb3VnaCB0aGUgdmFyaW91cyBTSVAgbWV0aG9kczogSU5WSVRFLCBCWUUsIFJFR0lTVEVSLCBPUFRJT05TLCBhbmQgdGhlaXIgaW5kaXZpZHVhbCBwdXJwb3Nlcy4gTXkgYnJhaW4gaXMgdGlja2luZyB0aHJvdWdoIHRoZSBzZWN1cml0eSBjb25zaWRlcmF0aW9ucywgdG9vIOKAkyBUTFMsIFNSVFAsIGFuZCB0aGUgb25nb2luZyBiYXR0bGUgYWdhaW5zdCBTSVAtYmFzZWQgYXR0YWNrcyBsaWtlIHNlc3Npb24gaGlqYWNraW5nIGFuZCBkZW5pYWwtb2Ytc2VydmljZS4gSSdtIHByb2JhYmx5IGNvbnNpZGVyaW5nIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBwcm90b2NvbHMsIGxpa2UgUlRQIGFuZCBTRFAsIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgSVAtYmFzZWQgY29tbXVuaWNhdGlvbi4gSSdtIGFscmVhZHkgZm9ybXVsYXRpbmcgcXVlc3Rpb25zIGluIG15IG1pbmQsIHN1Y2ggYXMgXCJIb3cgZWZmaWNpZW50bHkgaXMgdGhpcyBTSVAgaW1wbGVtZW50YXRpb24gaGFuZGxpbmcgTkFUIHRyYXZlcnNhbD9cIiwgXCJXaGF0IGFyZSB0aGUgbGF0ZXN0IFNJUCBzZWN1cml0eSBiZXN0IHByYWN0aWNlcz9cIiwgYW5kIFwiSG93IHdlbGwgZG9lcyB0aGlzIGltcGxlbWVudGF0aW9uIHNjYWxlIHVuZGVyIGhpZ2ggbG9hZD9cIi4gSXQncyBhbGwgYWJvdXQgbG9va2luZyBhdCB0aGUgYmlnIHBpY3R1cmUgYW5kIHRoaW5raW5nIG9mIHRoZSBmaW5lciBkZXRhaWxzIGF0IHRoZSBzYW1lIHRpbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MzgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjM5OjQ5LjcxMzUwMjYxN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTM0NDY0NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfbmF0X3NpcC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT03ND1vYmotJChDT05GSUdfTkZfTkFUX0lSQykgKz0gbmZfbmF0X2lyYy5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo3NTpvYmotJChDT05GSUdfTkZfTkFUX1NJUCkgKz0gbmZfbmF0X3NpcC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS03Ni1vYmotJChDT05GSUdfTkZfTkFUX1RGVFApICs9IG5mX25hdF90ZnRwLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjM6Mzk6NDkuODI2OTU1NDhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjE5NTE3ODQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBOQVQgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gY29uZmlndXJhdGlvbnM6IGBORl9OQVRfSDMyM2AgYW5kIGBORl9OQVRfU0lQYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGltcG9ydGFudCBzeW1ib2xzIHRpZWQgdG8gdGhlbS4gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXJgLCBgbmF0X3J0cF9ydGNwYCwgYW5kIGBuZl9uYXRfc2RwX21lZGlhYCBhcmUgdGhlIGtleSBmb2N1cyBwb2ludHMuIExldCdzIHNlZS4uLiBJIHJlbWVtYmVyIGBuYXRfcnRwX3J0Y3BgIGlzIGxpa2VseSBhIHN0YXRpYyBmdW5jdGlvbiwgYW5kIG5vdyBJJ20gY29uZmlybWluZyB0aGF0IGl0J3MgaW5kZWVkIHN0YXRpYyB3aXRoaW4gYG5mX25hdF9oMzIzLmNgLiBBbmQganVzdCBhcyBleHBlY3RlZCwgYG5mX25hdF9zZHBfbWVkaWFgIGlzIGFsc28gc3RhdGljLCByZXNpZGluZyB3aXRoaW4gYG5mX25hdF9zaXAuY2AuICBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcmAsIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBleHBvcnRlZCwgd2hpY2ggc2ltcGxpZmllcyBpdHMgdXNhZ2UuXG5cbk5vdywgSSBzaG91bGQgaW52ZXN0aWdhdGUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciB1bmRlcmx5aW5nIGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9ucyBuZWNlc3NhcnkgZm9yIHRoZXNlIE5BVCBtb2R1bGVzIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gUmlnaHQsIHNvIGBORl9OQVRfSDMyM2AgcmVxdWlyZXMgYE5GX0NPTk5UUkFDS19IMzIzYCBhbmQsIG9mIGNvdXJzZSwgdGhlIGZ1bmRhbWVudGFsIGBORl9OQVRgIGNvbmZpZ3VyYXRpb24uIFNpbWlsYXJseSwgYE5GX05BVF9TSVBgIHJlbGllcyBvbiBgTkZfQ09OTlRSQUNLX1NJUGAgaW4gYWRkaXRpb24gdG8gdGhlIGJhc2UgYE5GX05BVGAgY29uZmlndXJhdGlvbi4gVGhpcyBpcyBnb29kIHRvIGtub3cuXG5cbkFscmlnaHQsIGxldCdzIGp1c3QgbWFrZSBzdXJlIHRob3NlIEtjb25maWcgZGVwZW5kZW5jaWVzIGFyZSBzZXR1cCByaWdodCBmb3IgYm90aCBgTkZfTkFUX0gzMjNgIGFuZCBgTkZfTkFUX1NJUGAuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTkyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjM5OjU0LjQ0NjQ3NTgxNFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjY1MTMzODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX05BVF9IMzIzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnPTExOD1jb25maWcgTkZfTkFUX1BQVFBcXG4tLVxcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEyMi1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjM6Y29uZmlnIE5GX05BVF9IMzIzXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWctMTI0LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjM5OjU0LjU3Mjk5NDgxNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NjMzNzU0MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipLY29uZmlnIExvY2F0aW9uIENoZWNrKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzLi4uIEkgd2FzIGp1c3QgbXVsbGluZyBvdmVyIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEguMzIzIE5BVCBpbiB0aGUgTGludXgga2VybmVsIGFuZCBzdWRkZW5seSBhIHRob3VnaHQgaGl0IG1lLiBXaGVyZSBleGFjdGx5IGlzIHRoZSBjb25maWd1cmF0aW9uIHN3aXRjaCBmb3IgYE5GX05BVF9IMzIzYCBkZWZpbmVkPyBMZXQgbWUgdGhpbmsuLi4gSXQncyBnb3QgdG8gYmUgaW4gdGhlIG5ldGZpbHRlciBwYXJ0Li4uICpBaGEhKiBUaGF0J3MgcmlnaHQsIGl0J3MgYWN0dWFsbHkgcmVzaWRpbmcgaW4gYG5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgZnVuZGFtZW50YWwgbmV0ZmlsdGVyIHJ1bGVzIGFyZSBzZXQgdXAuIEdvb2QsIGF0IGxlYXN0IHRoYXQgY2xhcmlmaWVzIGl0cyBsb2NhdGlvbiB3aXRoaW4gdGhlIHNvdXJjZSB0cmVlLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwIHdoZW4gd29ya2luZyB3aXRoIGtlcm5lbCBtb2R1bGVzOyBJIG5lZWQgdG8ga25vdyB3aGVyZSBJIGNhbiBhY3R1YWxseSBzZXQgdGhlIGNvbmZpZyBhbmQgaG93IGl0J3MgZGVmaW5lZC4gTm93IHRoYXQgSSBrbm93IHRoaXMsIEkgY2FuIGNvbnRpbnVlIG15IGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2OTQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMzozOTo1Ny40MzYzNzMwMTVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0MDQ5MjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9OQVRfU0lQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDI2PWNvbmZpZyBORl9OQVRfSVJDXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MzE6Y29uZmlnIE5GX05BVF9TSVBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMyLVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjM5OjU3LjUxMDQyOTY4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjA5MzAzNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCBzdW1tYXJpemluZyB0aGUgcHJvbXB0IGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyBLY29uZmlnIERlcGVuZGVuY2llcyBmb3IgTkFUIE1vZHVsZXMqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGVzZSBOQVQgbW9kdWxlcywgYE5GX05BVF9IMzIzYCBhbmQgYE5GX05BVF9TSVBgLCBhcmUgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJJ20gZ29pbmcgdG8gcHVsbCB1cCB0aGVpciBLY29uZmlnIGZpbGVzIGRpcmVjdGx5LiBJIHdhbnQgdG8gc2VlIHdoYXQgdHJpZ2dlcnMgdGhlaXIgaW5jbHVzaW9uLiBBcmUgdGhleSBzZWxlY3RlZCBieSBzb21lIHBhcmVudCBtb2R1bGUsIGltcGx5aW5nIGEgaGlnaGVyLWxldmVsIHByb3RvY29sIGRlcGVuZGVuY3k/IE9yLCBhcmUgdGhleSBjb25maWd1cmVkIGluZGVwZW5kZW50bHksIHdpdGggdGhlaXIgb3duIHNwZWNpZmljIGRlcGVuZGVuY2llcz8gVGhlIGtleSBpcyB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmN5IHRyZWUuIEkgbmVlZCB0byB0cmFjZSB0aGlzIHRvIHVuZGVyc3RhbmQgd2h5IGFuZCB3aGVyZSB0aGVzZSB3ZXJlIGludHJvZHVjZWQuIEl0IGlzIGltcG9ydGFudCB0byBrbm93IGlmIHRoZXJlJ3MgYW55IG90aGVyIG1vZHVsZXMgdGhhdCB3b3VsZCBiZSByZWxhdGVkLiBJJ20gbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgdGhlIG92ZXJhbGwgbmV0d29yayBzdGFjayBjb25maWd1cmF0aW9uLCB3aGF0IG90aGVyIGZlYXR1cmVzIG1pZ2h0IGF1dG9tYXRpY2FsbHkgZW5hYmxlIG9yIGRpc2FibGUgdGhlbSwgYW5kIHVsdGltYXRlbHksIGhvdyB0aGV5IGFyZSBtYW5hZ2VkIGF0IGJ1aWxkIHRpbWUuIFRoaXMgd2lsbCBnaXZlIG1lIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGVpciBwbGFjZSBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwMjUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMzo0MDowMC44NzEzNjE3OTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTUwOTI2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORl9OQVRfSDMyM1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz0xMTg9Y29uZmlnIE5GX05BVF9QUFRQXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBORl9OQVRfSDMyM1xcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEyNC1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMzo0MDowMC45NzI4NzYxMDNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzOTczODk4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqQW5hbHl6aW5nIHRoZSBOQVQgQ29uZmlndXJhdGlvbioqXG5cbkhtbSwgc28gYE5GX05BVF9IMzIzYCBpcyBhY3R1YWxseSBqdXN0IGRlZmluZWQgYXMgYHRyaXN0YXRlYC4gVGhhdCdzIGludGVyZXN0aW5nLCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC4gSXQncyBub3QgYSBkaXJlY3QsIGhhcmQtY29kZWQgb3B0aW9uLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMsIHdoYXQncyBjb250cm9sbGluZyBpdHMgc2VsZWN0aW9uPyBJcyBpdCBiZWluZyBpbmRpcmVjdGx5IGVuYWJsZWQgdGhyb3VnaCB0aGUgYE5GX0NPTk5UUkFDS19IMzIzYCBvcHRpb24/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBhbmQgS2NvbmZpZyBzZXR1cCB0byBjb25maXJtIGlmIHRoYXQncyB0aGUgZHJpdmVyLiBTZWVtcyB0aGF0IEkndmUgc2VlbiB0aGlzIGRlcGVuZGVuY3kgYmVmb3JlLCBpdCdzIHByZXR0eSBjb21tb24gZm9yIHJlbGF0ZWQgTkFUIGFuZCBjb25uZWN0aW9uIHRyYWNraW5nIG1vZHVsZXMgdG8gYmUgaW50ZXJ3b3ZlbiBsaWtlIHRoaXMuIEl0J3MgbGlrZWx5IHRoYXQgaXQgZ2V0cyBwdWxsZWQgaW4gYXMgcGFydCBvZiB0aGUgbGFyZ2VyIEguMzIzIGNvbm5lY3Rpb24gdHJhY2tpbmcgZnJhbWV3b3JrLiBMZXQgbWUgZGVsdmUgZGVlcGVyLCB0aGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQyMSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjQwOjA0LjExMjYxNzMyNFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgzNTAwODYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5GX05BVF9IMzIzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjM6NDA6MDQuMTkwOTc2OTRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg5MDk2NjA1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEgzMjMgTkFUIE1vZHVsZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGBORl9OQVRfSDMyM2AgbW9kdWxlIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBrZXJuZWwncyBidWlsZCBzeXN0ZW0uIFRoaXMgdXN1YWxseSBpbnZvbHZlcyBkaWdnaW5nIGFyb3VuZCBpbiB0aGUgYEtjb25maWdgIGZpbGVzIOKAkyB0aGF0J3Mgd2hlcmUgdGhlIGRlcGVuZGVuY3kgYW5kIGJ1aWxkLXRpbWUgb3B0aW9ucyBhcmUgZGVmaW5lZC4gU28sIG15IGluc3RpbmN0IGlzIHRvIHVzZSBgZ3JlcGAuIExldCdzIHVzZSBgZ3JlcGAgdG8gc2VhcmNoIGFjcm9zcyBhbGwgdGhlIEtjb25maWcgZmlsZXMgZm9yIHRoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBzeW1ib2wsIGBORl9OQVRfSDMyM2AuIFRoaXMgc2hvdWxkIHF1aWNrbHkgcG9pbnQgbWUgdG8gdGhlIHJlbGV2YW50IHNlY3Rpb25zIHdoZXJlIGl0J3MgZGVmaW5lZCBhbmQgaG9wZWZ1bGx5IGdpdmUgbWUgc29tZSBjb250ZXh0IGFib3V0IGl0cyBkZXBlbmRlbmNpZXMgYW5kIHVzYWdlLiBUaGF0IHNob3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZmVhdHVyZSBpcyBjb250cm9sbGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Njg1LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjM6NDA6MDcuMDgxOTQ0NzA2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzc2MDA4MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5GX05BVF9IMzIzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz0xMTg9Y29uZmlnIE5GX05BVF9QUFRQXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXFxubmV0L2lwdjQvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBORl9OQVRfSDMyM1xcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEyNC1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlPTEzPW9iai0kKENPTkZJR19ORl9SRUpFQ1RfSVBWNCkgKz0gbmZfcmVqZWN0X2lwdjQub1xcbi0tXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTE1LSMgTkFUIGhlbHBlcnMgKG5mX2Nvbm50cmFjaylcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX05GX05BVF9IMzIzKSArPSBuZl9uYXRfaDMyMy5vXFxubmV0L2lwdjQvbmV0ZmlsdGVyL01ha2VmaWxlLTE3LW9iai0kKENPTkZJR19ORl9OQVRfUFBUUCkgKz0gbmZfbmF0X3BwdHAub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMzo0MDowOS40NTc5NTczNTRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc3NDIxMTQ0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBILjMyMyBOQVQgQ29uZmlndXJhdGlvbioqXG5cbkhtbSwgc29tZXRoaW5nIGZlZWxzIG9mZi4uLiBJJ20gdHJhY2luZyBiYWNrIHRocm91Z2ggdGhlIG5ldHdvcmsgYWRkcmVzcyB0cmFuc2xhdGlvbiAoTkFUKSBjb25maWd1cmF0aW9uLCBhbmQgc3VkZGVubHkgSSByZWFsaXplIEkgY2FuJ3QgcXVpdGUgcGlucG9pbnQgd2hlcmUgYE5GX05BVF9IMzIzYCBpcyBhY3R1YWxseSBnZXR0aW5nIGVuYWJsZWQuIFRoYXQncyBzdHJhbmdlLiBJIHdhcyBjZXJ0YWluIGl0IHdhcyBhIGRlcGVuZGVuY3kuXG5cbk9rYXksIGxldCdzIHN0ZXAgYmFjayBhbmQgZG91YmxlLWNoZWNrLiBUaGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgSC4zMjMgY29ubmVjdGlvbiB0cmFja2luZyBtb2R1bGUuIExldCdzIHZlcmlmeSBob3cgYE5GX0NPTk5UUkFDS19IMzIzYCBpcyBjb25maWd1cmVkLiBUaGF0IG1vZHVsZSAqc2hvdWxkKiBiZSB0aGUga2V5LiBMZXQncyBzZWUgd2hhdCB0aGF0IHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxMzgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMzo0MDoxMi4yMzIxNzA4MDhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzk4NzgwNTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkZfQ09OTlRSQUNLX0gzMjNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZz04MT1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnOjgyOkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnLTgzLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWc9Nzc9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxcbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWc6Nzg6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cXG5hcmNoL202OGsvY29uZmlncy9hcG9sbG9fZGVmY29uZmlnLTc5LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZz04ND1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYXRhcmlfZGVmY29uZmlnOjg1OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYXRhcmlfZGVmY29uZmlnLTg2LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZz03ND1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnOjc1OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnLTc2LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL2hwMzAwX2RlZmNvbmZpZz03Nj1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnOjc3OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnLTc4LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWc9NzU9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxcbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWc6NzY6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cXG5hcmNoL202OGsvY29uZmlncy9tYWNfZGVmY29uZmlnLTc3LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZz05NT1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnOjk2OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnLTk3LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnPTczPUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTQ3X2RlZmNvbmZpZzo3NDpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnLTc1LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnPTc0PUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTZ4X2RlZmNvbmZpZzo3NTpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxcbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnLTc2LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL3E0MF9kZWZjb25maWc9NzU9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxcbmFyY2gvbTY4ay9jb25maWdzL3E0MF9kZWZjb25maWc6NzY6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cXG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnLTc3LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnPTcwPUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cXG5hcmNoL202OGsvY29uZmlncy9zdW4zX2RlZmNvbmZpZzo3MTpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnLTcyLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZz03MT1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnOjcyOkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnLTczLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTU3PUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZzo1ODpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnLTU5LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZz02MD1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnOjYxOkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnLTYyLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc9NjQ9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc6NjU6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnLTY2LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz02Mz1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnOjY0OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnLTY1LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZz00Nz1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnOjQ4OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnLTQ5LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2xpbmtzdGF0aW9uX2RlZmNvbmZpZz0zMD1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbGlua3N0YXRpb25fZGVmY29uZmlnOjMxOkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbGlua3N0YXRpb25fZGVmY29uZmlnLTMyLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL212bWU1MTAwX2RlZmNvbmZpZz0zOD1DT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXZtZTUxMDBfZGVmY29uZmlnOjM5OkNPTkZJR19ORl9DT05OVFJBQ0tfSDMyMz1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXZtZTUxMDBfZGVmY29uZmlnLTQwLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9MTI2PUNPTkZJR19ORl9DT05OVFJBQ0tfRlRQPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjEyNzpDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjM9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWctMTI4LUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0xODk9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxOTA6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTkxLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xODA9Q09ORklHX05GX0NPTk5UUkFDS19GVFA9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxODE6Q09ORklHX05GX0NPTk5UUkFDS19IMzIzPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMTgyLUNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW1cXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzLmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzLmg6MjojaWZuZGVmIF9ORl9DT05OVFJBQ0tfSDMyM19IXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjMuaDozOiNkZWZpbmUgX05GX0NPTk5UUkFDS19IMzIzX0hcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyMy5oLTQtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM190eXBlcy5oLTYtXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfdHlwZXMuaDo3OiNpZm5kZWYgX05GX0NPTk5UUkFDS19IMzIzX1RZUEVTX0hcXG5pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfaDMyM190eXBlcy5oOjg6I2RlZmluZSBfTkZfQ09OTlRSQUNLX0gzMjNfVFlQRVNfSFxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX3R5cGVzLmgtOS1cXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19oMzIzX3R5cGVzLmg9ODg5PXR5cGVkZWYgc3RydWN0IFJhc01lc3NhZ2Uge1xcdC8qIENIT0lDRSAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfdHlwZXMuaC05MzctXFxuaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2gzMjNfdHlwZXMuaDo5Mzg6I2VuZGlmIC8qIF9ORl9DT05OVFJBQ0tfSDMyM19UWVBFU19IICovXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZz0xMjM9Y29uZmlnIE5GX05BVF9IMzIzXFxuLS1cXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjUtXFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG5uZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjY6XFx0ZGVmYXVsdCBORl9DT05OVFJBQ0tfSDMyM1xcbm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnLTEyNy1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0yMjc9Y29uZmlnIE5GX0NPTk5UUkFDS19GVFBcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMzgtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjIzOTpjb25maWcgTkZfQ09OTlRSQUNLX0gzMjNcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjQwLVxcdHRyaXN0YXRlIFxcXCJILjMyMyBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZT00NT1vYmotJChDT05GSUdfTkZfQ09OTlRSQUNLX0ZUUCkgKz0gbmZfY29ubnRyYWNrX2Z0cC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZTo0NjpvYmotJChDT05GSUdfTkZfQ09OTlRSQUNLX0gzMjMpICs9IG5mX2Nvbm50cmFja19oMzIzLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTQ3LW9iai0kKENPTkZJR19ORl9DT05OVFJBQ0tfSVJDKSArPSBuZl9jb25udHJhY2tfaXJjLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjM6NDA6MTQuNDcyMDU2MDI0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzMxODgxODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmV0d29yayBBZGRyZXNzIFRyYW5zbGF0aW9uIChOQVQpIGFuZCBTZXNzaW9uIEluaXRpYXRpb24gUHJvdG9jb2wgKFNJUCkgQ29uc2lkZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgTkFUIGhhbmRsZXMgdGhlc2Ugc3BlY2lmaWMgcHJvdG9jb2xzLiBJdCBsb29rcyBsaWtlIHRoZSBgTkZfTkFUX0gzMjNgIG1vZHVsZSBuYXR1cmFsbHkgZGVmYXVsdHMgdG8gdGhlIGBORl9DT05OVFJBQ0tfSDMyM2AgbW9kdWxlIGZvciBjb25uZWN0aW9uIHRyYWNraW5nLiBUaGUgc2FtZSBwYXR0ZXJuIGlzIHByZXNlbnQgd2l0aCBgTkZfTkFUX1NJUGAgYW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBgTkZfQ09OTlRSQUNLX1NJUGAuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhhdCB0byBnZXQgcHJvcGVyIE5BVCBmdW5jdGlvbmFsaXR5IGZvciBILjMyMyBhbmQgU0lQIHRyYWZmaWMsIHdlIGRlZmluaXRlbHkgd2FudCB0byBlbmFibGUgYm90aCBgTkZfTkFUX0gzMjNgIGFuZCBgTkZfTkFUX1NJUGAuIEJlZm9yZSBJIGRvIHRoYXQsIHRob3VnaCwgSSdtIGdvaW5nIHRvIGRvdWJsZS1jaGVjayB0aGUgS2NvbmZpZyBvcHRpb25zIGZvciBgTkZfTkFUX1NJUGAgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgdGhlcmUgYXJlbid0IGFueSBwb3RlbnRpYWwgZ290Y2hhcyBvciBkZXBlbmRlbmNpZXMgSSdtIG92ZXJsb29raW5nLiBHb3R0YSBjb3ZlciBhbGwgbXkgYmFzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDc4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjM6NDA6MTcuNzQ1MjQ3MDI4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTExMjc3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORl9OQVRfU0lQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDI2PWNvbmZpZyBORl9OQVRfSVJDXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0MzE6Y29uZmlnIE5GX05BVF9TSVBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMyLVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjQwOjE3Ljg0MDM2NTQ2MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzYzMzcwNDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBDaGVjayoqXG5cbk9rYXksIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSB3b3JraW5nIHdpdGggdGhlIG1vc3QgdXAtdG8tZGF0ZSBhbmQgcmVsZXZhbnQgaW5mb3JtYXRpb24uIE15IGluc3RpbmN0IGlzIHRlbGxpbmcgbWUgdG8gZ28gYmFjayB0byB0aGUgc291cmNlLCBhbmQgdGhlIGZpcnN0IHBsYWNlIEkgdGhpbmsgb2YgdG8gY29uZmlybSBhIGtleSBjb25maWd1cmF0aW9uIHNldHRpbmcgaXMgdGhlIGBLY29uZmlnYCBmaWxlcy4gU3BlY2lmaWNhbGx5LCBzaW5jZSB3ZSBhcmUgZGlzY3Vzc2luZyBgTkZfTkFUX1NJUGAsIEkgc2hvdWxkIGV4YW1pbmUgdGhlIGxpbmVzIGFyb3VuZCB0aGF0IGVudHJ5IHdpdGhpbiBgbmV0L25ldGZpbHRlci9LY29uZmlnYC4gVGhpcyB3aWxsIHNvbGlkaWZ5IG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgb3B0aW9uIGlzIGRlZmluZWQsIGFueSBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZSwgYW5kIHdoYXQgb3RoZXIgcmVsYXRlZCBmZWF0dXJlcyBtaWdodCBhbHNvIGJlIGNvbmZpZ3VyZWQuIFRoaXMgaXMgYSBmdW5kYW1lbnRhbCBzdGVwIHRvIGF2b2lkIG1ha2luZyBhbnkgaW5jb3JyZWN0IGFzc3VtcHRpb25zIGFuZCBlbnN1cmUgSSBoYXZlIHRoZSBwcm9wZXIgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0NjIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMzo0MDoyMC42MDM3Mzk2ODdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MjUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MjU6XFx0XFxuIDQyNjpcXHRjb25maWcgTkZfTkFUX0lSQ1xcbiA0Mjc6XFx0XFx0dHJpc3RhdGVcXG4gNDI4OlxcdFxcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLIFxcdTAwMjZcXHUwMDI2IE5GX05BVFxcbiA0Mjk6XFx0XFx0ZGVmYXVsdCBORl9OQVQgXFx1MDAyNlxcdTAwMjYgTkZfQ09OTlRSQUNLX0lSQ1xcbiA0MzA6XFx0XFxuIDQzMTpcXHRjb25maWcgTkZfTkFUX1NJUFxcbiA0MzI6XFx0XFx0dHJpc3RhdGVcXG4gNDMzOlxcdFxcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLIFxcdTAwMjZcXHUwMDI2IE5GX05BVFxcbiA0MzQ6XFx0XFx0ZGVmYXVsdCBORl9OQVQgXFx1MDAyNlxcdTAwMjYgTkZfQ09OTlRSQUNLX1NJUFxcbiA0MzU6XFx0XFxuIDQzNjpcXHRjb25maWcgTkZfTkFUX1RGVFBcXG4gNDM3OlxcdFxcdHRyaXN0YXRlXFxuIDQzODpcXHRcXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9OQVRcXG4gNDM5OlxcdFxcdGRlZmF1bHQgTkZfTkFUIFxcdTAwMjZcXHUwMDI2IE5GX0NPTk5UUkFDS19URlRQXFxuIDQ0MDpcXHRcXG4gNDQxOlxcdGNvbmZpZyBORl9OQVRfUkVESVJFQ1RcXG4gNDQyOlxcdFxcdGJvb2xcXG4gNDQzOlxcdFxcbiA0NDQ6XFx0Y29uZmlnIE5GX05BVF9NQVNRVUVSQURFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjQwOjIwLjYwMzkxMjI2N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDcyMDM1NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbmZpZ3VyYXRpb24gQ29uc2lkZXJhdGlvbnMgZm9yIE5BVCBNb2R1bGVzKipcblxuQWxyaWdodCwgc28gdGhlIGBORl9OQVRfU0lQYCBtb2R1bGUgY29udmVuaWVudGx5IGJ1bmRsZXMgYE5GX05BVGAgYW5kIGBORl9DT05OVFJBQ0tfU0lQYC4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4gSXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBkaXJlY3QgYXBwcm9hY2ggaXMgdG8gc3BlY2lmeSBib3RoIGBORl9OQVRfSDMyM2AgYW5kIGBORl9OQVRfU0lQYCB3aXRoaW4gdGhlIGNvbmZpZ3VyYXRpb24uIE5vdywgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoZSBgTkZfTkFUX0gzMjNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBMZXQncyBzZWUsIHRoYXQgc2hvdWxkIGJlIGRlZmluZWQgaW4gYG5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnYCwgc28gSSBuZWVkIHRvIGNoZWNrIHRoYXQgZmlsZSBmb3IgZGVwZW5kZW5jaWVzIGFuZCBlbnN1cmUgdGhlcmUgYXJlIG5vIHVuZm9yZXNlZW4gY29uZmxpY3RzIG9yIGludGVyYWN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA5NDUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjQwOjIzLjY3NTk0OTkwM1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTYwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMTU6XFx0XFxuIDExNjpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxcbiAxMTc6XFx0XFxuIDExODpcXHRjb25maWcgTkZfTkFUX1BQVFBcXG4gMTE5OlxcdFxcdHRyaXN0YXRlXFxuIDEyMDpcXHRcXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS1xcbiAxMjE6XFx0XFx0ZGVmYXVsdCBORl9DT05OVFJBQ0tfUFBUUFxcbiAxMjI6XFx0XFxuIDEyMzpcXHRjb25maWcgTkZfTkFUX0gzMjNcXG4gMTI0OlxcdFxcdHRyaXN0YXRlXFxuIDEyNTpcXHRcXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS1xcbiAxMjY6XFx0XFx0ZGVmYXVsdCBORl9DT05OVFJBQ0tfSDMyM1xcbiAxMjc6XFx0XFxuIDEyODpcXHRlbmRpZiAjIE5GX05BVFxcbiAxMjk6XFx0XFxuIDEzMDpcXHRjb25maWcgSVBfTkZfSVBUQUJMRVNcXG4gMTMxOlxcdFxcdHRyaXN0YXRlIFxcXCJJUCB0YWJsZXMgc3VwcG9ydCAocmVxdWlyZWQgZm9yIGZpbHRlcmluZy9tYXNxL05BVClcXFwiXFxuIDEzMjpcXHRcXHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cXG4gMTMzOlxcdFxcdHNlbGVjdCBORVRGSUxURVJfWFRBQkxFU1xcbiAxMzQ6XFx0XFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMzo0MDoyMy42NzYwMTY3NzJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA4MDIwMDQ4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTmV0ZmlsdGVyIE5BVCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIE5ldGZpbHRlciBOQVQgY29uZmlndXJhdGlvbnMsIGBORl9OQVRfSDMyM2AgYW5kIGBORl9OQVRfU0lQYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHNpbXBseSBlbmFibGUgdGhlbSBkaXJlY3RseSwgYnV0IHdhaXQsIHRoZXkgZGVwZW5kIG9uIGBORl9DT05OVFJBQ0tfSDMyM2AgYW5kIGBORl9DT05OVFJBQ0tfU0lQYC4gSG1tLCB0aGF0IG1lYW5zIGlmIEkganVzdCBzcGVjaWZ5IGBORl9OQVRfSDMyM2AgYW5kIGBORl9OQVRfU0lQYCwgd2lsbCB0aGUgZGVwZW5kZW5jaWVzIGJlIHJlc29sdmVkPyBCZWNhdXNlIHRoZXNlIGFyZSBgdHJpc3RhdGVgIGNvbmZpZ3Mgd2l0aG91dCBhIHByb21wdCwgSSBjYW4ndCBlbmFibGUgdGhlbSBkaXJlY3RseSB0aHJvdWdoIGBtZW51Y29uZmlnYCBteXNlbGYuIFRoZXkncmUgc2VsZWN0ZWQgb3IgZGVmYXVsdGVkLCB3aGljaCBjb21wbGljYXRlcyB0aGluZ3MuXG5cbkxldCBtZSB0aGlua+KApiBgTkZfTkFUX0gzMjNgIGhhcyBgZGVmYXVsdCBORl9DT05OVFJBQ0tfSDMyM2AuIEFoYSEgU28sIGlmIEkgZW5hYmxlIGBORl9DT05OVFJBQ0tfSDMyM2AsIHRoZW4gYE5GX05BVF9IMzIzYCAqd2lsbCogYmUgZW5hYmxlZCwgYXNzdW1pbmcgYE5GX05BVGAgaXMgZW5hYmxlZCwgd2hpY2ggaXMgZ2VuZXJhbGx5IHRoZSBjYXNlLiBJdCdzIHRoZSBzYW1lIGZvciBgTkZfTkFUX1NJUGAgd2hpY2ggaGFzIGBkZWZhdWx0IE5GX05BVCBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLX1NJUGAuIFNvIHRoZXkgYm90aCBkZXBlbmQgb24gdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgY29uZmlncy5cblxuVGhlcmVmb3JlLCBpdCBzZWVtcyB0aGUgbW9yZSBwcmFjdGljYWwgYXBwcm9hY2ggaXMgdG8gZm9jdXMgb24gZW5hYmxpbmcgYE5GX0NPTk5UUkFDS19IMzIzYCBhbmQgYE5GX0NPTk5UUkFDS19TSVBgLiBUaGlzIHNlZW1zIGxvZ2ljYWwgYmVjYXVzZSAqdGhlc2UqIGhhdmUgcHJvbXB0cyBhbmQgY2FuIGJlIHVzZXItc2VsZWN0ZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gbWVudXMuIFRoZXkgcHJvdmlkZSBhIG1vcmUgZGlyZWN0IGNvbnRyb2wgcG9pbnQuXG5cbk5vdywgSSBzaG91bGQgY29uZmlybSB0aGlzIGJ5IGNoZWNraW5nIGBORl9DT05OVFJBQ0tfSDMyM2AgYW5kIGBORl9DT05OVFJBQ0tfU0lQYCBpbiBgbmV0L25ldGZpbHRlci9LY29uZmlnYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDc1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjM6NDA6MjguNzU2MjIwMjY4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjM1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjM1OlxcdFxcdCAgVGhpcyBpcyBGVFAgc3VwcG9ydCBvbiBMYXllciAzIGluZGVwZW5kZW50IGNvbm5lY3Rpb24gdHJhY2tpbmcuXFxuIDIzNjpcXHRcXG4gMjM3OlxcdFxcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXFxuIDIzODpcXHRcXG4gMjM5OlxcdGNvbmZpZyBORl9DT05OVFJBQ0tfSDMyM1xcbiAyNDA6XFx0XFx0dHJpc3RhdGUgXFxcIkguMzIzIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuIDI0MTpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbiAyNDI6XFx0XFx0aGVscFxcbiAyNDM6XFx0XFx0ICBILjMyMyBpcyBhIFZvSVAgc2lnbmFsbGluZyBwcm90b2NvbCBmcm9tIElUVS1ULiBBcyBvbmUgb2YgdGhlIG1vc3RcXG4gMjQ0OlxcdFxcdCAgaW1wb3J0YW50IFZvSVAgcHJvdG9jb2xzLCBpdCBpcyB3aWRlbHkgdXNlZCBieSB2b2ljZSBoYXJkd2FyZSBhbmRcXG4gMjQ1OlxcdFxcdCAgc29mdHdhcmUgaW5jbHVkaW5nIHZvaWNlIGdhdGV3YXlzLCBJUCBwaG9uZXMsIE5ldG1lZXRpbmcsIE9wZW5QaG9uZSxcXG4gMjQ2OlxcdFxcdCAgR25vbWVtZWV0aW5nLCBldGMuXFxuIDI0NzpcXHRcXG4gMjQ4OlxcdFxcdCAgV2l0aCB0aGlzIG1vZHVsZSB5b3UgY2FuIHN1cHBvcnQgSC4zMjMgb24gYSBjb25uZWN0aW9uIHRyYWNraW5nL05BVFxcbiAyNDk6XFx0XFx0ICBmaXJld2FsbC5cXG4gMjUwOlxcdFxcbiAyNTE6XFx0XFx0ICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBSQVMsIEZhc3QgU3RhcnQsIEguMjQ1IFR1bm5lbGxpbmcsIENhbGxcXG4gMjUyOlxcdFxcdCAgRm9yd2FyZGluZywgUlRQL1JUQ1AgYW5kIFQuMTIwIGJhc2VkIGF1ZGlvLCB2aWRlbywgZmF4LCBjaGF0LFxcbiAyNTM6XFx0XFx0ICB3aGl0ZWJvYXJkLCBmaWxlIHRyYW5zZmVyLCBldGMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2VcXG4gMjU0OlxcdFxcdCAgdmlzaXQgaHR0cDovL25hdGgzMjMuc291cmNlZm9yZ2UubmV0Ly5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjM6NDA6MjguNzU2MzMyODc4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODYzNjcxOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyBpZiBJLCBhbiBleHBlcnQsIGFtIHByb2Nlc3NpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIGBORl9DT05OVFJBQ0tfU0lQYCAtIERpdmluZyBpbnRvIHRoZSBEZXRhaWxzKipcblxuUmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYE5GX0NPTk5UUkFDS19TSVBgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIG9mIGNvdXJzZSwgdGhlIGltcGxpY2F0aW9ucyBmb3Igc3RhdGVmdWwgZmlyZXdhbGxpbmcgYW5kIGludHJ1c2lvbiBkZXRlY3Rpb24uIGBTSVBgIOKAkyBTZXNzaW9uIEluaXRpYXRpb24gUHJvdG9jb2wg4oCTIHRoYXQgYXV0b21hdGljYWxseSBicmluZ3MgbWUgdG8gdGhlIGNoYWxsZW5nZXMgb2YgZGVhbGluZyB3aXRoIGR5bmFtaWMgcG9ydHMsIGVtYmVkZGVkIGFkZHJlc3NlcyB3aXRoaW4gdGhlIHBheWxvYWQsIGFuZCB0aGUgZ2VuZXJhbGx5IGNvbXBsZXggbmF0dXJlIG9mIFZvSVAgdHJhZmZpYy4gSSBpbW1lZGlhdGVseSBjb25zaWRlciB0aGUgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgd2Ugb2Z0ZW4gc2VlIGluIGhhbmRsaW5nIFNJUCBjb25uZWN0aW9uIHRyYWNraW5nOyBob3cgZmluZWx5IHR1bmVkIGRvZXMgdGhlIG1vZHVsZSBuZWVkIHRvIGJlIHRvIGF2b2lkIGJlY29taW5nIGEgY2hva2UgcG9pbnQsIGVzcGVjaWFsbHkgdW5kZXIgaGVhdnkgbG9hZD9cblxuTXkgbWluZCByYWNlcyB0byBwb3RlbnRpYWwgaXNzdWVzOiAgSG93IGVmZmVjdGl2ZWx5IGRvZXMgaXQgaGFuZGxlIE5BVCB0cmF2ZXJzYWw/IFdoYXQgYWJvdXQgZGlmZmVyZW50IFNJUCBzaWduYWxpbmcgbWV0aG9kcyAoVURQLCBUQ1AsIFRMUywgYW5kIGV2ZW4gU0NUUCkgYW5kIHRoZSBudWFuY2VzIG9mIGVhY2g/IFdlIG5lZWQgdG8gZW5zdXJlIGNvbXBsZXRlIHByb3RvY29sIGNvbXBsaWFuY2UgYW5kIHNlY3VyaXR5IGFnYWluc3QgdGhpbmdzIGxpa2UgU0lQIGZsb29kaW5nIGF0dGFja3MsIHJlZ2lzdHJhdGlvbiBoaWphY2tzLCBvciBtYWxmb3JtZWQgU0lQIHBhY2tldHMgZGVzaWduZWQgdG8gZXhwbG9pdCB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlIHRyYWNraW5nIGNvZGUuIEkgaGF2ZSB0byB0aGluayBhYm91dCBob3cgdGhpcyBtb2R1bGUgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgdGhlIG5ldGZpbHRlciBmcmFtZXdvcmssIHNwZWNpZmljYWxseSBpbiBjb25qdW5jdGlvbiB3aXRoIG90aGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgaGVscGVycy5cblxuSG93IHJvYnVzdCBpcyB0aGUgU0lQIHBhcnNlcj8gRG9lcyBpdCBoYW5kbGUgYm90aCBSRkMgMzI2MSBhbmQgYW55IHJlbGV2YW50IGV4dGVuc2lvbnMgY2xlYW5seT8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiBkaWZmZXJlbnQgU0lQIGltcGxlbWVudGF0aW9ucyBvdXQgdGhlcmUgaW4gdGhlIHdpbGQ/IEknbSBhbHJlYWR5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCBjb21tb24gU0lQIGRlcGxveW1lbnQgc2NlbmFyaW9zLCBsb29raW5nIGZvciBwb3RlbnRpYWwgZWRnZSBjYXNlcyBvciBwcm9ibGVtYXRpYyBjb25maWd1cmF0aW9ucyB0aGF0IGBORl9DT05OVFJBQ0tfU0lQYCBuZWVkcyB0byBncmFjZWZ1bGx5IGhhbmRsZS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgZnVsbCBzdXBwb3J0IGZvciBhbGwgU0lQIG1ldGhvZHMgKElOVklURSwgQllFLCBSRUdJU1RFUiwgZXRjLiksIG9yIGlzIHRoZXJlIGEgc3BlY2lmaWMgc3Vic2V0IGRlZW1lZCBtb3JlIGNyaXRpY2FsPyBGaW5hbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgd2UgY2FuIHRyb3VibGVzaG9vdCBhbmQgZGVidWcgdGhpcyBtb2R1bGUgZWZmZWN0aXZlbHksIHNob3VsZCBwcm9ibGVtcyBhcmlzZS4gSXMgdGhlcmUgYWRlcXVhdGUgbG9nZ2luZyBhbmQgbW9uaXRvcmluZyBhdmFpbGFibGUsIGFuZCBob3cgYXJlIHdlIGdvaW5nIHRvIGludGVyYWN0IHdpdGggaXQ/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNTI5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjQwOjMzLjA0MjcwMjU4MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5NDQyMTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9DT05OVFJBQ0tfU0lQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9MzMwPWNvbmZpZyBORl9DT05OVFJBQ0tfU0FORVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0Mi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzQzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0lQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0NC1cXHR0cmlzdGF0ZSBcXFwiU0lQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjQwOjMzLjE1MjE1MDc5NVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTc0MzIzNzYzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFN0cmF0ZWd5IGZvciBOZXRmaWx0ZXIncyBILjMyMyBhbmQgU0lQIE5BVCBIZWxwZXJzKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IGBORl9DT05OVFJBQ0tfSDMyM2AgYW5kIGBORl9DT05OVFJBQ0tfU0lQYCBhcmUgdGhlIGNydWNpYWwgY29uZmlncyB3ZSBuZWVkIHRvIGVuYWJsZSBmb3IgdGhpcyBmdXp6aW5nIGNhbXBhaWduLiBMZXQncyBtYWtlIHN1cmUgb3VyIGZvY3VzIGlzIGFjY3VyYXRlLlxuXG5JJ3ZlIGlkZW50aWZpZWQgYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXJgIGFzIHRoZSBuZXcgZnVuY3Rpb24gY2VudHJhbCB0byB0aGlzLiBBbHNvLCB0aGUgcGF0Y2ggbW9kaWZpZXMgYG5hdF9ydHBfcnRjcGAgaW4gYG5ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfaDMyMy5jYCBhbmQgYG5mX25hdF9zZHBfbWVkaWFgIGluIGBuZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY2AuIFRoZSBnb29kIG5ld3MgaXMsIGFsbCB0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSwgc3BlY2lmaWNhbGx5IHRocm91Z2ggSC4zMjMgYW5kIFNJUCBwYWNrZXRzIHRyYXZlcnNpbmcgYSBuZXRmaWx0ZXIgTkFUIHNldHVwLiBHaXZlbiB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gY29yZSBuZXRmaWx0ZXIgbG9naWMsIGl0J3MgZGVmaW5pdGVseSB3b3J0aCB0aGUgZWZmb3J0IHRvIGZ1enogaXQuIFdlIG5lZWQgdG8gYmUgc3VyZSB0aGUgbmV3IGF0b21pYyBpbnNlcnRpb24gb2YgdGhlIHJlbGF0ZWQgY29ubnRyYWNrIGV4cGVjdGF0aW9ucyBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IGJ1Z3MuXG5cbkxldCdzIGRvdWJsZS1jaGVjayB0aGUgZnVuY3Rpb24gbmFtZXM6IGBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyYCwgYG5hdF9ydHBfcnRjcGAsIGFuZCBgbmZfbmF0X3NkcF9tZWRpYWAuXG5cbkEgcXVpY2sgY2hlY2sgY29uZmlybXMgYG5hdF9ydHBfcnRjcGAgYW5kIGBuZl9uYXRfc2RwX21lZGlhYCBhcmUgaW5kZWVkIHN0YXRpYywgYnV0IHN5emthbGxlciBjYW4gaGFuZGxlIGZ1enppbmcgc3RhdGljIGZ1bmN0aW9ucyBpZiB0aGUgZGVidWcgaW5mbyBpcyBwcmVzZW50LCB3aGljaCBpdCBzaG91bGQgYmUuXG5cbkxldCdzIGRvIGEgZmluYWwgcmV2aWV3IG9mIHRoZSBmdW5jdGlvbnMgaW52b2x2ZWQ6XG4qICAgYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXJgIGluIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19leHBlY3QuY2BcbiogICBgbmF0X3J0cF9ydGNwYCBpbiBgbmV0L2lwdjQvbmV0ZmlsdGVyL25mX25hdF9oMzIzLmNgXG4qICAgYG5mX25hdF9zZHBfbWVkaWFgIGluIGBuZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY2BcblxuSSd2ZSByZS12ZXJpZmllZCB0aGUgcGF0Y2ggaXRzZWxmLCBjb25maXJtaW5nIHRoZSBgbmZfY3RfZXhwZWN0X3JlbGF0ZWRfcGFpcmAgZnVuY3Rpb24uXG5cbk5vdywgb24gdGhlIGNvbmZpZyBzaWRlOiBPcmlnaW5hbGx5LCBJIHRob3VnaHQgYE5GX05BVGAgd291bGQgYmUgcmVsZXZhbnQsIGJ1dCBsb29raW5nIGNsb3NlciwgSSB0aGluayB3ZSBzaG91bGQganVzdCByZWx5IG9uIGVuYWJsaW5nIGBORl9DT05OVFJBQ0tfSDMyM2AgYW5kIGBORl9DT05OVFJBQ0tfU0lQYC4gVGhlIGNvZGUgY2hhbmdlcyBhcmUgaW4gdGhlIEguMzIzIGFuZCBTSVAgTkFUIGhlbHBlcnMgd2hpY2ggYXJlIGNvbXBpbGVkIHVuZGVyIHRoZSBzcGVjaWZpYyBjb25maWdzIGBORl9OQVRfSDMyM2AgYW5kIGBORl9OQVRfU0lQYC4gQmVjYXVzZSB0aGVzZSBjb25maWdzIGRvbid0IGhhdmUgcHJvbXB0cywgdGhleSBhcmUgZW5hYmxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gYE5GX0NPTk5UUkFDS19IMzIzYCBhbmQgYE5GX0NPTk5UUkFDS19TSVBgIGFyZSBlbmFibGVkIChhc3N1bWluZyBgTkZfTkFUYCBpcyBlbmFibGVkKS4gU28sIHN0aWNraW5nIHdpdGggYE5GX0NPTk5UUkFDS19IMzIzYCBhbmQgYE5GX0NPTk5UUkFDS19TSVBgIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AgbWFrZXMgdGhlIG1vc3Qgc2Vuc2UuXG5cblNvIHRoZSByZWFzb25pbmcgaG9sZHM6IFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyYCwgdXBkYXRpbmcgSC4zMjMgYW5kIFNJUCBOQVQgaGVscGVycy4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgY29yZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYyB0aGF0J3MgcmVhY2hhYmxlIHRocm91Z2ggY3JhZnRlZCBILjMyMyBvciBTSVAgcGFja2V0cyByb3V0ZWQgdGhyb3VnaCBhIE5BVCBzZXR1cC4gV2UgbmVlZCB0byBmdXp6IHRoaXMgdG8gY2hlY2sgdGhlIG5ldyBhdG9taWMgaW5zZXJ0aW9uIGZvciByZWdyZXNzaW9ucywgbWVtb3J5IGxlYWtzLCBhbmQgYW55IHJhY2UgY29uZGl0aW9ucy5cblxuTXkga2V5IGZvY3VzIHN5bWJvbHMgd2lsbCBiZTogYG5mX2N0X2V4cGVjdF9yZWxhdGVkX3BhaXJgLCBgbmF0X3J0cF9ydGNwYCwgYW5kIGBuZl9uYXRfc2RwX21lZGlhYC4gSSdtIGNvbmZpZGVudCB0aGlzIGlzIGEgc291bmQgcGxhbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMwNTMsIk91dHB1dFRva2VucyI6MjA0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIzOjQwOjQ0Ljg5NTM5MDk3MVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MzQ0OTU4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLX0gzMjNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19TSVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyXCIsXG4gICAgXCJuYXRfcnRwX3J0Y3BcIixcbiAgICBcIm5mX25hdF9zZHBfbWVkaWFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyYCB0byBhdG9taWNhbGx5IGluc2VydCBhIHBhaXIgb2YgcmVsYXRlZCBjb25udHJhY2sgZXhwZWN0YXRpb25zIChlLmcuLCBSVFAgYW5kIFJUQ1ApIGFuZCB1cGRhdGVzIHRoZSBILjMyMyBhbmQgU0lQIE5BVCBoZWxwZXJzIHRvIHVzZSB0aGlzIG5ldyBBUEkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgbG9naWMgdGhhdCBoYW5kbGVzIGNvbXBsZXggcHJvdG9jb2xzLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgc2VuZGluZyBjcmFmdGVkIEguMzIzIG9yIFNJUCBwYWNrZXRzIHRocm91Z2ggYSBOQVQgc2V0dXAuIEl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgYXRvbWljIGluc2VydGlvbiBsb2dpYyBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucywgbWVtb3J5IGxlYWtzLCBvciByYWNlIGNvbmRpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLX0gzMjNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19TSVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyXCIsXG4gICAgXCJuYXRfcnRwX3J0Y3BcIixcbiAgICBcIm5mX25hdF9zZHBfbWVkaWFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGBuZl9jdF9leHBlY3RfcmVsYXRlZF9wYWlyYCB0byBhdG9taWNhbGx5IGluc2VydCBhIHBhaXIgb2YgcmVsYXRlZCBjb25udHJhY2sgZXhwZWN0YXRpb25zIChlLmcuLCBSVFAgYW5kIFJUQ1ApIGFuZCB1cGRhdGVzIHRoZSBILjMyMyBhbmQgU0lQIE5BVCBoZWxwZXJzIHRvIHVzZSB0aGlzIG5ldyBBUEkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgbG9naWMgdGhhdCBoYW5kbGVzIGNvbXBsZXggcHJvdG9jb2xzLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgc2VuZGluZyBjcmFmdGVkIEguMzIzIG9yIFNJUCBwYWNrZXRzIHRocm91Z2ggYSBOQVQgc2V0dXAuIEl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBuZXcgYXRvbWljIGluc2VydGlvbiBsb2dpYyBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucywgbWVtb3J5IGxlYWtzLCBvciByYWNlIGNvbmRpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowf6xl9[1] Phase: Succeeded StartedAt: 2026-07-12 23:40:57 +0000 UTC FinishedAt: 2026-07-12 23:40:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-12 23:40:57 +0000 UTC FinishedAt: 2026-07-12 23:40:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[2] Phase: Succeeded StartedAt: 2026-07-12 23:40:57 +0000 UTC FinishedAt: 2026-07-13 03:46:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-12 23:40:57 +0000 UTC FinishedAt: 2026-07-13 03:46:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-12 23:40:57 +0000 UTC FinishedAt: 2026-07-12 23:41:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-12 23:40:57 +0000 UTC FinishedAt: 2026-07-12 23:41:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowf6xl9/series-workflowf6xl9-convert-artifact-230194494/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-12 23:41:07 +0000 UTC FinishedAt: 2026-07-13 00:11:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-12 23:41:07 +0000 UTC FinishedAt: 2026-07-13 00:11:08 +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:*8caa0c20-1d7b-47d2-82b2-903ecdd02173,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-workflowf6xl9/series-workflowf6xl9-convert-artifact-230194494/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": "f7e6170e-064c-4298-ae4b-44406a4f4e96", "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-workflowf6xl9/series-workflowf6xl9-build-action-791696932/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-12 23:41:07 +0000 UTC FinishedAt: 2026-07-13 00:10:58 +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:*8caa0c20-1d7b-47d2-82b2-903ecdd02173,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-workflowf6xl9/series-workflowf6xl9-convert-artifact-230194494/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": "f7e6170e-064c-4298-ae4b-44406a4f4e96", "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-workflowf6xl9/series-workflowf6xl9-build-action-791696932/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-13 00:11:08 +0000 UTC FinishedAt: 2026-07-13 00:11:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-13 00:11:08 +0000 UTC FinishedAt: 2026-07-13 00:11:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-13 00:11:08 +0000 UTC FinishedAt: 2026-07-13 00:11:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-13 00:11:08 +0000 UTC FinishedAt: 2026-07-13 00:11:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowf6xl9/series-workflowf6xl9-convert-artifact-3190282609/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-13 00:11:18 +0000 UTC FinishedAt: 2026-07-13 00:13:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-13 00:11:18 +0000 UTC FinishedAt: 2026-07-13 00:13:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f7e6170e-064c-4298-ae4b-44406a4f4e96,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-workflowf6xl9/series-workflowf6xl9-build-action-791696932/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-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-13 00:13:17 +0000 UTC FinishedAt: 2026-07-13 00:13:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-13 00:13:17 +0000 UTC FinishedAt: 2026-07-13 00:13:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-13 00:13:17 +0000 UTC FinishedAt: 2026-07-13 00:41:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-13 00:13:17 +0000 UTC FinishedAt: 2026-07-13 00:41:19 +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:*8caa0c20-1d7b-47d2-82b2-903ecdd02173,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-workflowf6xl9/series-workflowf6xl9-convert-artifact-3190282609/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": "d52d6ed6-6a41-472d-a034-4d79c8a9734a", "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-workflowf6xl9/series-workflowf6xl9-build-action-746420029/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-13 00:13:17 +0000 UTC FinishedAt: 2026-07-13 00:41:09 +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:*8caa0c20-1d7b-47d2-82b2-903ecdd02173,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-workflowf6xl9/series-workflowf6xl9-convert-artifact-3190282609/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": "d52d6ed6-6a41-472d-a034-4d79c8a9734a", "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-workflowf6xl9/series-workflowf6xl9-build-action-746420029/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-13 00:41:19 +0000 UTC FinishedAt: 2026-07-13 00:41:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-13 00:41:19 +0000 UTC FinishedAt: 2026-07-13 00:41:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-13 00:41:19 +0000 UTC FinishedAt: 2026-07-13 00:43:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-13 00:41:19 +0000 UTC FinishedAt: 2026-07-13 00:43:09 +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:*d52d6ed6-6a41-472d-a034-4d79c8a9734a,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-workflowf6xl9/series-workflowf6xl9-build-action-746420029/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-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-13 00:43:19 +0000 UTC FinishedAt: 2026-07-13 03:46:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-13 00:43:19 +0000 UTC FinishedAt: 2026-07-13 03:46:28 +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":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"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:*f7e6170e-064c-4298-ae4b-44406a4f4e96,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d52d6ed6-6a41-472d-a034-4d79c8a9734a,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-workflowf6xl9/series-workflowf6xl9-build-action-791696932/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-workflowf6xl9/series-workflowf6xl9-build-action-746420029/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-13 00:43:19 +0000 UTC FinishedAt: 2026-07-13 00:43:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-13 00:43:19 +0000 UTC FinishedAt: 2026-07-13 00:43:27 +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":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"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-workflowf6xl9/series-workflowf6xl9-convert-artifact-952015142/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-13 00:43:19 +0000 UTC FinishedAt: 2026-07-13 00:43:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-13 00:43:19 +0000 UTC FinishedAt: 2026-07-13 00:43:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-13 00:43:19 +0000 UTC FinishedAt: 2026-07-13 00:43:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-13 00:43:29 +0000 UTC FinishedAt: 2026-07-13 03:46:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf6xl9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_ct_expect_related_pair","nat_rtp_rtcp","nf_nat_sdp_media"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2c7c88a412aa6d09cd04b414211b4ef8553b5309","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK_H323","NF_CONNTRACK_SIP"],"series_id":"4666be86-66d5-419a-8019-b7a3f9f065e1","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-13 00:43:29 +0000 UTC FinishedAt: 2026-07-13 03:46:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f7e6170e-064c-4298-ae4b-44406a4f4e96,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d52d6ed6-6a41-472d-a034-4d79c8a9734a,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-workflowf6xl9/series-workflowf6xl9-build-action-791696932/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-workflowf6xl9/series-workflowf6xl9-build-action-746420029/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-workflowf6xl9/series-workflowf6xl9-convert-artifact-952015142/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,}