Name: series-workflowt69zq Phase: Succeeded StartedAt: 2026-06-22 07:28:58 +0000 UTC FinishedAt: 2026-06-22 09:12:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[0] Phase: Succeeded StartedAt: 2026-06-22 07:28:58 +0000 UTC FinishedAt: 2026-06-22 07:39:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[0].run-triage Phase: Succeeded StartedAt: 2026-06-22 07:28:58 +0000 UTC FinishedAt: 2026-06-22 07:39:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "ef057cbf825e03b63f6edf5980f96abf3c53089d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "ef057cbf825e03b63f6edf5980f96abf3c53089d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "emit_atomic_rmw" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA2LzIyIDA3OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbWl0X2F0b21pY19ybXcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgY29tcGlsZXIgdG8gdXNlIG5ldyBhdG9taWMgaW5zdHJ1Y3Rpb25zIChlLmcuLCBhbWFkZGRiYiwgYW1zd2FwZGJiKSBmb3IgQlBGIGF0b21pYyBvcGVyYXRpb25zIGFuZCBlbmFibGVzIGJwZl9qaXRfc3VwcG9ydHNfcHRyX3hjaGcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBCUEYgSklUIGxvZ2ljIG9uIExvb25nQXJjaCwgd2hpY2ggY2FuIGJlIGZ1enplZCBieSBsb2FkaW5nIGFuZCBleGVjdXRpbmcgQlBGIHByb2dyYW1zIHdpdGggYXRvbWljIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6Mzk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxZDVhZDY3N2MyMGU3ODkzZTJhMTJmZmZkMjc0OWVjNGUwNzYxMTRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjIgMDc6Mzg6NTkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXG5pbmRleCA3NmI3MjM1OTAwMjNkNy4uYmRiYzE3ZDA3MTEwNWUgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxuQEAgLTE5OSw2ICYjNDM7MTk5LDEwIEBAIGVudW0gcmVnM19vcCB7XG4gXHRhbXN3YXBoX29wXHQ9IDB4NzBiOSxcbiBcdGFtYWRkYl9vcFx0PSAweDcwYmEsXG4gXHRhbWFkZGhfb3BcdD0gMHg3MGJiLFxuJiM0MztcdGFtc3dhcGRiYl9vcFx0PSAweDcwYmMsXG4mIzQzO1x0YW1zd2FwZGJoX29wXHQ9IDB4NzBiZCxcbiYjNDM7XHRhbWFkZGRiYl9vcFx0PSAweDcwYmUsXG4mIzQzO1x0YW1hZGRkYmhfb3BcdD0gMHg3MGJmLFxuIFx0YW1zd2Fwd19vcFx0PSAweDcwYzAsXG4gXHRhbXN3YXBkX29wXHQ9IDB4NzBjMSxcbiBcdGFtYWRkd19vcFx0PSAweDcwYzIsXG5AQCAtNzgzLDYgJiM0Mzs3ODcsMjAgQEAgREVGX0VNSVRfUkVHM19GT1JNQVQoYW1zd2FwYiwgYW1zd2FwYl9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBoLCBhbXN3YXBoX29wKVxuIERFRl9FTUlUX1JFRzNfRk9STUFUKGFtc3dhcHcsIGFtc3dhcHdfb3ApXG4gREVGX0VNSVRfUkVHM19GT1JNQVQoYW1zd2FwZCwgYW1zd2FwZF9vcClcbiYjNDM7REVGX0VNSVRfUkVHM19GT1JNQVQoYW1zd2FwZGJiLCBhbXN3YXBkYmJfb3ApXG4mIzQzO0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtc3dhcGRiaCwgYW1zd2FwZGJoX29wKVxuJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbWFkZGRiYiwgYW1hZGRkYmJfb3ApXG4mIzQzO0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtYWRkZGJoLCBhbWFkZGRiaF9vcClcbiYjNDM7REVGX0VNSVRfUkVHM19GT1JNQVQoYW1hZGRkYncsIGFtYWRkZGJ3X29wKVxuJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbWFkZGRiZCwgYW1hZGRkYmRfb3ApXG4mIzQzO0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtYW5kZGJ3LCBhbWFuZGRid19vcClcbiYjNDM7REVGX0VNSVRfUkVHM19GT1JNQVQoYW1hbmRkYmQsIGFtYW5kZGJkX29wKVxuJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbW9yZGJ3LCBhbW9yZGJ3X29wKVxuJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbW9yZGJkLCBhbW9yZGJkX29wKVxuJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbXhvcmRidywgYW14b3JkYndfb3ApXG4mIzQzO0RFRl9FTUlUX1JFRzNfRk9STUFUKGFteG9yZGJkLCBhbXhvcmRiZF9vcClcbiYjNDM7REVGX0VNSVRfUkVHM19GT1JNQVQoYW1zd2FwZGJ3LCBhbXN3YXBkYndfb3ApXG4mIzQzO0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtc3dhcGRiZCwgYW1zd2FwZGJkX29wKVxuIFxuICNkZWZpbmUgREVGX0VNSVRfUkVHM1NBMl9GT1JNQVQoTkFNRSwgT1ApXHRcdFx0XHRcXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0XyMjTkFNRSh1bmlvbiBsb29uZ2FyY2hfaW5zdHJ1Y3Rpb24gKmluc24sXHRcXFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXG5pbmRleCAyNDkxM2RjN2Y0ZTgzNS4uZmZmZjUyMWIzYzgwODggMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXG5AQCAtNyw2ICYjNDM7Nyw5IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbWVtb3J5LmhcdTAwM2VcbiAjaW5jbHVkZSBcJiMzNDticGZfaml0LmhcJiMzNDtcbiBcbiYjNDM7LyogZGJhciBoaW50IGZvciBsbC9zYyBjb21wbGV0aW9uIG9yZGVyaW5nLCBzZWUgX19XRUFLX0xMU0NfTUIgKi9cbiYjNDM7I2RlZmluZSBEQkFSX0xMU0NfTUJcdDB4NzAwXG4mIzQzO1xuICNkZWZpbmUgTE9PTkdBUkNIX01BWF9SRUdfQVJHUyA4XG4gXG4gI2RlZmluZSBMT09OR0FSQ0hfTE9OR19KVU1QX05JTlNOUyA1XG5AQCAtNDE4LDcgJiM0Mzs0MjEsNyBAQCBzdGF0aWMgaW50IGVtaXRfYXRvbWljX3Jtdyhjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgpXG4gXHRcdFx0XHRwcl9lcnJfb25jZShcJiMzNDticGYtaml0OiBhbWFkZC5iIGluc3RydWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDspO1xuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0fVxuLVx0XHRcdGVtaXRfaW5zbihjdHgsIGFtYWRkYiwgc3JjLCB0MSwgdDMpO1xuJiM0MztcdFx0XHRlbWl0X2luc24oY3R4LCBhbWFkZGRiYiwgc3JjLCB0MSwgdDMpO1xuIFx0XHRcdGVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgQlBGX0g6XG5AQCAtNDI2LDM5ICYjNDM7NDI5LDM5IEBAIHN0YXRpYyBpbnQgZW1pdF9hdG9taWNfcm13KGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eClcbiBcdFx0XHRcdHByX2Vycl9vbmNlKFwmIzM0O2JwZi1qaXQ6IGFtYWRkLmggaW5zdHJ1Y3Rpb24gaXMgbm90IHN1cHBvcnRlZFxcblwmIzM0Oyk7XG4gXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHR9XG4tXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1hZGRoLCBzcmMsIHQxLCB0Myk7XG4mIzQzO1x0XHRcdGVtaXRfaW5zbihjdHgsIGFtYWRkZGJoLCBzcmMsIHQxLCB0Myk7XG4gXHRcdFx0ZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBCUEZfVzpcbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbWFkZHcsIHNyYywgdDEsIHQzKTtcbiYjNDM7XHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1hZGRkYncsIHNyYywgdDEsIHQzKTtcbiBcdFx0XHRlbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIEJQRl9EVzpcbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbWFkZGQsIHNyYywgdDEsIHQzKTtcbiYjNDM7XHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1hZGRkYmQsIHNyYywgdDEsIHQzKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFx0XHRicmVhaztcbiBcdGNhc2UgQlBGX0FORCB8IEJQRl9GRVRDSDpcbiBcdFx0aWYgKGlzZHcpIHtcbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbWFuZGQsIHNyYywgdDEsIHQzKTtcbiYjNDM7XHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1hbmRkYmQsIHNyYywgdDEsIHQzKTtcbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbWFuZHcsIHNyYywgdDEsIHQzKTtcbiYjNDM7XHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1hbmRkYncsIHNyYywgdDEsIHQzKTtcbiBcdFx0XHRlbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpO1xuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfT1IgfCBCUEZfRkVUQ0g6XG4gXHRcdGlmIChpc2R3KSB7XG4tXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1vcmQsIHNyYywgdDEsIHQzKTtcbiYjNDM7XHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1vcmRiZCwgc3JjLCB0MSwgdDMpO1xuIFx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXRfaW5zbihjdHgsIGFtb3J3LCBzcmMsIHQxLCB0Myk7XG4mIzQzO1x0XHRcdGVtaXRfaW5zbihjdHgsIGFtb3JkYncsIHNyYywgdDEsIHQzKTtcbiBcdFx0XHRlbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpO1xuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfWE9SIHwgQlBGX0ZFVENIOlxuIFx0XHRpZiAoaXNkdykge1xuLVx0XHRcdGVtaXRfaW5zbihjdHgsIGFteG9yZCwgc3JjLCB0MSwgdDMpO1xuJiM0MztcdFx0XHRlbWl0X2luc24oY3R4LCBhbXhvcmRiZCwgc3JjLCB0MSwgdDMpO1xuIFx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXRfaW5zbihjdHgsIGFteG9ydywgc3JjLCB0MSwgdDMpO1xuJiM0MztcdFx0XHRlbWl0X2luc24oY3R4LCBhbXhvcmRidywgc3JjLCB0MSwgdDMpO1xuIFx0XHRcdGVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7XG4gXHRcdH1cbiBcdFx0YnJlYWs7XG5AQCAtNDcwLDcgJiM0Mzs0NzMsNyBAQCBzdGF0aWMgaW50IGVtaXRfYXRvbWljX3Jtdyhjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgpXG4gXHRcdFx0XHRwcl9lcnJfb25jZShcJiMzNDticGYtaml0OiBhbXN3YXAuYiBpbnN0cnVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7KTtcbiBcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdH1cbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbXN3YXBiLCBzcmMsIHQxLCB0Myk7XG4mIzQzO1x0XHRcdGVtaXRfaW5zbihjdHgsIGFtc3dhcGRiYiwgc3JjLCB0MSwgdDMpO1xuIFx0XHRcdGVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgQlBGX0g6XG5AQCAtNDc4LDE1ICYjNDM7NDgxLDE1IEBAIHN0YXRpYyBpbnQgZW1pdF9hdG9taWNfcm13KGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eClcbiBcdFx0XHRcdHByX2Vycl9vbmNlKFwmIzM0O2JwZi1qaXQ6IGFtc3dhcC5oIGluc3RydWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDspO1xuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0fVxuLVx0XHRcdGVtaXRfaW5zbihjdHgsIGFtc3dhcGgsIHNyYywgdDEsIHQzKTtcbiYjNDM7XHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1zd2FwZGJoLCBzcmMsIHQxLCB0Myk7XG4gXHRcdFx0ZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBCUEZfVzpcbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbXN3YXB3LCBzcmMsIHQxLCB0Myk7XG4mIzQzO1x0XHRcdGVtaXRfaW5zbihjdHgsIGFtc3dhcGRidywgc3JjLCB0MSwgdDMpO1xuIFx0XHRcdGVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgQlBGX0RXOlxuLVx0XHRcdGVtaXRfaW5zbihjdHgsIGFtc3dhcGQsIHNyYywgdDEsIHQzKTtcbiYjNDM7XHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1zd2FwZGJkLCBzcmMsIHQxLCB0Myk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcdFx0YnJlYWs7XG5AQCAtNTA5LDYgJiM0Mzs1MTIsNyBAQCBzdGF0aWMgaW50IGVtaXRfYXRvbWljX3Jtdyhjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgpXG4gXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYmVxLCB0MywgTE9PTkdBUkNIX0dQUl9aRVJPLCAtNik7XG4gXHRcdFx0ZW1pdF96ZXh0XzMyKGN0eCwgcjAsIHRydWUpO1xuIFx0XHR9XG4mIzQzO1x0XHRlbWl0X2luc24oY3R4LCBkYmFyLCBEQkFSX0xMU0NfTUIpO1xuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdHByX2Vycl9vbmNlKFwmIzM0O2JwZi1qaXQ6IGludmFsaWQgYXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlIG9wY29kZSAlMDJ4XFxuXCYjMzQ7LCBpbW0pO1xuQEAgLTIzNjIsNiAmIzQzOzIzNjYsMTEgQEAgYm9vbCBicGZfaml0X3N1cHBvcnRzX2ZzZXNzaW9uKHZvaWQpXG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG4mIzQzO2Jvb2wgYnBmX2ppdF9zdXBwb3J0c19wdHJfeGNoZyh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHRydWU7XG4mIzQzO31cbiYjNDM7XG4gLyogSW5kaWNhdGUgdGhlIEpJVCBiYWNrZW5kIHN1cHBvcnRzIG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHMuICovXG4gYm9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpXG4ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZVxuaW5kZXggNmVmNjg3MmFkYmMzZTEuLmVhNGMyMmUyMGYzYzgwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbkBAIC04NjYsNiAmIzQzOzg2Niw3IEBAICQoT1VUUFVUKS9iZW5jaF9odGFiX21lbS5vOiAkKE9VVFBVVCkvaHRhYl9tZW1fYmVuY2guc2tlbC5oXG4gJChPVVRQVVQpL2JlbmNoX2JwZl9jcnlwdG8ubzogJChPVVRQVVQpL2NyeXB0b19iZW5jaC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfc29ja21hcC5vOiAkKE9VVFBVVCkvYmVuY2hfc29ja21hcF9wcm9nLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubzogJChPVVRQVVQpL2xwbV90cmllX2JlbmNoLnNrZWwuaCAkKE9VVFBVVCkvbHBtX3RyaWVfbWFwLnNrZWwuaFxuJiM0MzskKE9VVFBVVCkvYmVuY2hfa3B0cl94Y2hnLm86ICQoT1VUUFVUKS9rcHRyX3hjaGdfYmVuY2guc2tlbC5oXG4gJChPVVRQVVQpL2JlbmNoLm86IGJlbmNoLmggdGVzdGluZ19oZWxwZXJzLmggJChCUEZPQkopXG4gJChPVVRQVVQpL2JlbmNoOiBMRExJQlMgJiM0Mzs9IC1sbVxuICQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXFxcbkBAIC04ODgsNiAmIzQzOzg4OSw3IEBAICQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXFxcbiBcdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfY3J5cHRvLm8gXFxcbiBcdFx0ICQoT1VUUFVUKS9iZW5jaF9zb2NrbWFwLm8gXFxcbiBcdFx0ICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubyBcXFxuJiM0MztcdFx0ICQoT1VUUFVUKS9iZW5jaF9rcHRyX3hjaGcubyBcXFxuIFx0XHQgJChPVVRQVVQpL3VzZHRfMS5vIFxcXG4gXHRcdCAkKE9VVFBVVCkvdXNkdF8yLm8gXFxcbiBcdFx0ICNcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaC5jXG5pbmRleCAwMjliM2UyMWY0Mzg0Ni4uMmI2ZGQ4YWVjMjgyZjIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNoLmNcbkBAIC01NzUsNiAmIzQzOzU3NSw3IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfaW5zZXJ0O1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfdXBkYXRlO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfZGVsZXRlO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfZnJlZTtcbiYjNDM7ZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9rcHRyX3hjaGc7XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBiZW5jaCAqYmVuY2hzW10gPSB7XG4gXHRcdTAwMjZiZW5jaF9jb3VudF9nbG9iYWwsXG5AQCAtNjUzLDYgJiM0Mzs2NTQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJlbmNoICpiZW5jaHNbXSA9IHtcbiBcdFx1MDAyNmJlbmNoX2xwbV90cmllX3VwZGF0ZSxcbiBcdFx1MDAyNmJlbmNoX2xwbV90cmllX2RlbGV0ZSxcbiBcdFx1MDAyNmJlbmNoX2xwbV90cmllX2ZyZWUsXG4mIzQzO1x0XHUwMDI2YmVuY2hfa3B0cl94Y2hnLFxuIH07XG4gXG4gc3RhdGljIHZvaWQgZmluZF9iZW5jaG1hcmsodm9pZClcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2twdHJfeGNoZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9rcHRyX3hjaGcuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iOGEwZDM0NmZkYTY4OFxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9rcHRyX3hjaGcuY1xuQEAgLTAsMCAmIzQzOzEsOTYgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7LyogQ29weXJpZ2h0IChDKSAyMDI2LiBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWQgKi9cbiYjNDM7I2luY2x1ZGUgXHUwMDNjYXJncC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFwmIzM0O2JlbmNoLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7a3B0cl94Y2hnX2JlbmNoLnNrZWwuaFwmIzM0O1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBjdHgge1xuJiM0MztcdHN0cnVjdCBrcHRyX3hjaGdfYmVuY2ggKnNrZWw7XG4mIzQzO30gY3R4O1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCB7XG4mIzQzO1x0X191MzIgbnJfbG9vcHM7XG4mIzQzO30gYXJncyA9IHtcbiYjNDM7XHQubnJfbG9vcHMgPSAyNTYsXG4mIzQzO307XG4mIzQzO1xuJiM0MztlbnVtIHtcbiYjNDM7XHRBUkdfTlJfTE9PUFMgPSA3MDAwLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiBvcHRzW10gPSB7XG4mIzQzO1x0eyBcJiMzNDtucl9sb29wc1wmIzM0OywgQVJHX05SX0xPT1BTLCBcJiMzNDtucl9sb29wc1wmIzM0OywgMCxcbiYjNDM7XHQgIFwmIzM0O1NldCBudW1iZXIgb2YgYnBmX2twdHJfeGNoZygpIGNhbGxzIHBlciB0cmlnZ2VyXCYjMzQ7fSxcbiYjNDM7XHR7fSxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBlcnJvcl90IHBhcnNlX2FyZyhpbnQga2V5LCBjaGFyICphcmcsIHN0cnVjdCBhcmdwX3N0YXRlICpzdGF0ZSlcbiYjNDM7e1xuJiM0MztcdHN3aXRjaCAoa2V5KSB7XG4mIzQzO1x0Y2FzZSBBUkdfTlJfTE9PUFM6XG4mIzQzO1x0XHRhcmdzLm5yX2xvb3BzID0gc3RydG9sKGFyZywgTlVMTCwgMTApO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybiBBUkdQX0VSUl9VTktOT1dOO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncCBiZW5jaF9rcHRyX3hjaGdfYXJncCA9IHtcbiYjNDM7XHQub3B0aW9ucyA9IG9wdHMsXG4mIzQzO1x0LnBhcnNlciA9IHBhcnNlX2FyZyxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHZhbGlkYXRlKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRpZiAoZW52LmNvbnN1bWVyX2NudCAhPSAwKSB7XG4mIzQzO1x0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7YmVuY2htYXJrIGRvZXNuJiMzOTt0IHN1cHBvcnQgY29uc3VtZXIhXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGV4aXQoMSk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCAqcHJvZHVjZXIodm9pZCAqaW5wdXQpXG4mIzQzO3tcbiYjNDM7XHR3aGlsZSAodHJ1ZSlcbiYjNDM7XHRcdHN5c2NhbGwoX19OUl9nZXRwZ2lkKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIE5VTEw7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIG1lYXN1cmUoc3RydWN0IGJlbmNoX3JlcyAqcmVzKVxuJiM0Mzt7XG4mIzQzO1x0cmVzLVx1MDAzZWhpdHMgPSBhdG9taWNfc3dhcChcdTAwMjZjdHguc2tlbC1cdTAwM2Vic3MtXHUwMDNlaGl0cywgMCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHNldHVwKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG4mIzQzO1xuJiM0MztcdHNldHVwX2xpYmJwZigpO1xuJiM0MztcbiYjNDM7XHRjdHguc2tlbCA9IGtwdHJfeGNoZ19iZW5jaF9fb3Blbl9hbmRfbG9hZCgpO1xuJiM0MztcdGlmICghY3R4LnNrZWwpIHtcbiYjNDM7XHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtmYWlsZWQgdG8gb3BlbiBza2VsZXRvblxcblwmIzM0Oyk7XG4mIzQzO1x0XHRleGl0KDEpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0Y3R4LnNrZWwtXHUwMDNlZGF0YS1cdTAwM2Vucl9sb29wcyA9IGFyZ3MubnJfbG9vcHM7XG4mIzQzO1xuJiM0MztcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKGN0eC5za2VsLVx1MDAzZXByb2dzLmJlbmNobWFyayk7XG4mIzQzO1x0aWYgKCFsaW5rKSB7XG4mIzQzO1x0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7ZmFpbGVkIHRvIGF0dGFjaCBwcm9ncmFtIVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRleGl0KDEpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7Y29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2twdHJfeGNoZyA9IHtcbiYjNDM7XHQubmFtZSA9IFwmIzM0O2twdHIteGNoZ1wmIzM0OyxcbiYjNDM7XHQuYXJncCA9IFx1MDAyNmJlbmNoX2twdHJfeGNoZ19hcmdwLFxuJiM0MztcdC52YWxpZGF0ZSA9IHZhbGlkYXRlLFxuJiM0MztcdC5zZXR1cCA9IHNldHVwLFxuJiM0MztcdC5wcm9kdWNlcl90aHJlYWQgPSBwcm9kdWNlcixcbiYjNDM7XHQubWVhc3VyZSA9IG1lYXN1cmUsXG4mIzQzO1x0LnJlcG9ydF9wcm9ncmVzcyA9IG9wc19yZXBvcnRfcHJvZ3Jlc3MsXG4mIzQzO1x0LnJlcG9ydF9maW5hbCA9IG9wc19yZXBvcnRfZmluYWwsXG4mIzQzO307XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3B0cl94Y2hnX2lubGluZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3B0cl94Y2hnX2lubGluZS5jXG5pbmRleCA3ZGVmMTU4ZGE5ZWI3MS4uOGY3YjU4NzI3NDE2YzggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHRyX3hjaGdfaW5saW5lLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twdHJfeGNoZ19pbmxpbmUuY1xuQEAgLTE0LDcgJiM0MzsxNCw4IEBAIHZvaWQgdGVzdF9rcHRyX3hjaGdfaW5saW5lKHZvaWQpXG4gXHRpbnQgZXJyO1xuIFxuICNpZiAhKGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgXFxcbi0gICAgICAoZGVmaW5lZChfX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSlcbiYjNDM7ICAgICAgKGRlZmluZWQoX19yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkgfHwgXFxcbiYjNDM7ICAgICAgKGRlZmluZWQoX19sb29uZ2FyY2hfXykgXHUwMDI2XHUwMDI2IF9fbG9vbmdhcmNoX2dybGVuID09IDY0KSlcbiBcdHRlc3RfX3NraXAoKTtcbiBcdHJldHVybjtcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva3B0cl94Y2hnX2JlbmNoLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva3B0cl94Y2hnX2JlbmNoLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMzYzODgzMDczZTJjMGVcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rcHRyX3hjaGdfYmVuY2guY1xuQEAgLTAsMCAmIzQzOzEsNDkgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7LyogQ29weXJpZ2h0IChDKSAyMDI2LiBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWQgKi9cbiYjNDM7I2luY2x1ZGUgXCYjMzQ7dm1saW51eC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcJiMzNDticGZfZXhwZXJpbWVudGFsLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7YnBmX21pc2MuaFwmIzM0O1xuJiM0MztcbiYjNDM7Y2hhciBfbGljZW5zZVtdIFNFQyhcJiMzNDtsaWNlbnNlXCYjMzQ7KSA9IFwmIzM0O0dQTFwmIzM0OztcbiYjNDM7XG4mIzQzOyNkZWZpbmUgTUFYX1hDSEdfTE9PUFMgNDA5NlxuJiM0MztcbiYjNDM7c3RydWN0IGJpbl9kYXRhIHtcbiYjNDM7XHRjaGFyIGJsb2JbMzJdO1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7I2RlZmluZSBwcml2YXRlKG5hbWUpIFNFQyhcJiMzNDsuYnNzLlwmIzM0OyAjbmFtZSkgX19oaWRkZW4gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpXG4mIzQzO1xuJiM0Mztwcml2YXRlKGtwdHIpIHN0cnVjdCBiaW5fZGF0YSBfX2twdHIgKnB0cjtcbiYjNDM7dTMyIG5yX2xvb3BzID0gMjU2O1xuJiM0Mztsb25nIGhpdHM7XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7ZmVudHJ5L1wmIzM0OyBTWVNfUFJFRklYIFwmIzM0O3N5c19nZXRwZ2lkXCYjMzQ7KVxuJiM0MztpbnQgYmVuY2htYXJrKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBiaW5fZGF0YSAqb2xkO1xuJiM0MztcdHUzMiBpO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhfWENIR19MT09QUzsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGlmIChpIFx1MDAzZT0gbnJfbG9vcHMpXG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRcdG9sZCA9IGJwZl9rcHRyX3hjaGcoXHUwMDI2cHRyLCBOVUxMKTtcbiYjNDM7XHRcdGlmIChvbGQpXG4mIzQzO1x0XHRcdGJwZl9vYmpfZHJvcChvbGQpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0X19zeW5jX2FkZF9hbmRfZmV0Y2goXHUwMDI2aGl0cywgaSk7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIEJURiBGVU5DIHJlY29yZHMgYXJlIG5vdCBnZW5lcmF0ZWQgZm9yIGtmdW5jcyByZWZlcmVuY2VkIG9ubHkgdGhyb3VnaFxuJiM0MzsgKiBvcHRpbWl6ZWQgcGF0aHMuIEtlZXAgYnBmX29ial9kcm9wKCkgdmlzaWJsZSB0byBsaWJicGYmIzM5O3Mga2Z1bmMgbGlua2VyLlxuJiM0MzsgKi9cbiYjNDM7dm9pZCBfX2J0Zl9yb290KHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRicGZfb2JqX2Ryb3AoTlVMTCk7XG4mIzQzO31cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzozOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1pdF9hdG9taWNfcm13JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyIHRvIHVzZSBuZXcgYXRvbWljIGluc3RydWN0aW9ucyAoZS5nLiwgYW1hZGRkYmIsIGFtc3dhcGRiYikgZm9yIEJQRiBhdG9taWMgb3BlcmF0aW9ucyBhbmQgZW5hYmxlcyBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBvbiBMb29uZ0FyY2gsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgbG9hZGluZyBhbmQgZXhlY3V0aW5nIEJQRiBwcm9ncmFtcyB3aXRoIGF0b21pYyBvcGVyYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxZDVhZDY3N2MyMGU3ODkzZTJhMTJmZmZkMjc0OWVjNGUwNzYxMTRkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdW4gMjIgMDc6Mzg6NTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmgKaW5kZXggNzZiNzIzNTkwMDIzZDcuLmJkYmMxN2QwNzExMDVlIDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oCkBAIC0xOTksNiAmIzQzOzE5OSwxMCBAQCBlbnVtIHJlZzNfb3AgewogCWFtc3dhcGhfb3AJPSAweDcwYjksCiAJYW1hZGRiX29wCT0gMHg3MGJhLAogCWFtYWRkaF9vcAk9IDB4NzBiYiwKJiM0MzsJYW1zd2FwZGJiX29wCT0gMHg3MGJjLAomIzQzOwlhbXN3YXBkYmhfb3AJPSAweDcwYmQsCiYjNDM7CWFtYWRkZGJiX29wCT0gMHg3MGJlLAomIzQzOwlhbWFkZGRiaF9vcAk9IDB4NzBiZiwKIAlhbXN3YXB3X29wCT0gMHg3MGMwLAogCWFtc3dhcGRfb3AJPSAweDcwYzEsCiAJYW1hZGR3X29wCT0gMHg3MGMyLApAQCAtNzgzLDYgJiM0Mzs3ODcsMjAgQEAgREVGX0VNSVRfUkVHM19GT1JNQVQoYW1zd2FwYiwgYW1zd2FwYl9vcCkKIERFRl9FTUlUX1JFRzNfRk9STUFUKGFtc3dhcGgsIGFtc3dhcGhfb3ApCiBERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXB3LCBhbXN3YXB3X29wKQogREVGX0VNSVRfUkVHM19GT1JNQVQoYW1zd2FwZCwgYW1zd2FwZF9vcCkKJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBkYmIsIGFtc3dhcGRiYl9vcCkKJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBkYmgsIGFtc3dhcGRiaF9vcCkKJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbWFkZGRiYiwgYW1hZGRkYmJfb3ApCiYjNDM7REVGX0VNSVRfUkVHM19GT1JNQVQoYW1hZGRkYmgsIGFtYWRkZGJoX29wKQomIzQzO0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtYWRkZGJ3LCBhbWFkZGRid19vcCkKJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbWFkZGRiZCwgYW1hZGRkYmRfb3ApCiYjNDM7REVGX0VNSVRfUkVHM19GT1JNQVQoYW1hbmRkYncsIGFtYW5kZGJ3X29wKQomIzQzO0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtYW5kZGJkLCBhbWFuZGRiZF9vcCkKJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbW9yZGJ3LCBhbW9yZGJ3X29wKQomIzQzO0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtb3JkYmQsIGFtb3JkYmRfb3ApCiYjNDM7REVGX0VNSVRfUkVHM19GT1JNQVQoYW14b3JkYncsIGFteG9yZGJ3X29wKQomIzQzO0RFRl9FTUlUX1JFRzNfRk9STUFUKGFteG9yZGJkLCBhbXhvcmRiZF9vcCkKJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBkYncsIGFtc3dhcGRid19vcCkKJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBkYmQsIGFtc3dhcGRiZF9vcCkKIAogI2RlZmluZSBERUZfRU1JVF9SRUczU0EyX0ZPUk1BVChOQU1FLCBPUCkJCQkJXAogc3RhdGljIGlubGluZSB2b2lkIGVtaXRfIyNOQU1FKHVuaW9uIGxvb25nYXJjaF9pbnN0cnVjdGlvbiAqaW5zbiwJXApkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMKaW5kZXggMjQ5MTNkYzdmNGU4MzUuLmZmZmY1MjFiM2M4MDg4IDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMKQEAgLTcsNiAmIzQzOzcsOSBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L21lbW9yeS5oJmd0OwogI2luY2x1ZGUgJiMzNDticGZfaml0LmgmIzM0OwogCiYjNDM7LyogZGJhciBoaW50IGZvciBsbC9zYyBjb21wbGV0aW9uIG9yZGVyaW5nLCBzZWUgX19XRUFLX0xMU0NfTUIgKi8KJiM0MzsjZGVmaW5lIERCQVJfTExTQ19NQgkweDcwMAomIzQzOwogI2RlZmluZSBMT09OR0FSQ0hfTUFYX1JFR19BUkdTIDgKIAogI2RlZmluZSBMT09OR0FSQ0hfTE9OR19KVU1QX05JTlNOUyA1CkBAIC00MTgsNyAmIzQzOzQyMSw3IEBAIHN0YXRpYyBpbnQgZW1pdF9hdG9taWNfcm13KGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eCkKIAkJCQlwcl9lcnJfb25jZSgmIzM0O2JwZi1qaXQ6IGFtYWRkLmIgaW5zdHJ1Y3Rpb24gaXMgbm90IHN1cHBvcnRlZFxuJiMzNDspOwogCQkJCXJldHVybiAtRUlOVkFMOwogCQkJfQotCQkJZW1pdF9pbnNuKGN0eCwgYW1hZGRiLCBzcmMsIHQxLCB0Myk7CiYjNDM7CQkJZW1pdF9pbnNuKGN0eCwgYW1hZGRkYmIsIHNyYywgdDEsIHQzKTsKIAkJCWVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7CiAJCQlicmVhazsKIAkJY2FzZSBCUEZfSDoKQEAgLTQyNiwzOSAmIzQzOzQyOSwzOSBAQCBzdGF0aWMgaW50IGVtaXRfYXRvbWljX3Jtdyhjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgpCiAJCQkJcHJfZXJyX29uY2UoJiMzNDticGYtaml0OiBhbWFkZC5oIGluc3RydWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWRcbiYjMzQ7KTsKIAkJCQlyZXR1cm4gLUVJTlZBTDsKIAkJCX0KLQkJCWVtaXRfaW5zbihjdHgsIGFtYWRkaCwgc3JjLCB0MSwgdDMpOwomIzQzOwkJCWVtaXRfaW5zbihjdHgsIGFtYWRkZGJoLCBzcmMsIHQxLCB0Myk7CiAJCQllbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpOwogCQkJYnJlYWs7CiAJCWNhc2UgQlBGX1c6Ci0JCQllbWl0X2luc24oY3R4LCBhbWFkZHcsIHNyYywgdDEsIHQzKTsKJiM0MzsJCQllbWl0X2luc24oY3R4LCBhbWFkZGRidywgc3JjLCB0MSwgdDMpOwogCQkJZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTsKIAkJCWJyZWFrOwogCQljYXNlIEJQRl9EVzoKLQkJCWVtaXRfaW5zbihjdHgsIGFtYWRkZCwgc3JjLCB0MSwgdDMpOwomIzQzOwkJCWVtaXRfaW5zbihjdHgsIGFtYWRkZGJkLCBzcmMsIHQxLCB0Myk7CiAJCQlicmVhazsKIAkJfQogCQlicmVhazsKIAljYXNlIEJQRl9BTkQgfCBCUEZfRkVUQ0g6CiAJCWlmIChpc2R3KSB7Ci0JCQllbWl0X2luc24oY3R4LCBhbWFuZGQsIHNyYywgdDEsIHQzKTsKJiM0MzsJCQllbWl0X2luc24oY3R4LCBhbWFuZGRiZCwgc3JjLCB0MSwgdDMpOwogCQl9IGVsc2UgewotCQkJZW1pdF9pbnNuKGN0eCwgYW1hbmR3LCBzcmMsIHQxLCB0Myk7CiYjNDM7CQkJZW1pdF9pbnNuKGN0eCwgYW1hbmRkYncsIHNyYywgdDEsIHQzKTsKIAkJCWVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBCUEZfT1IgfCBCUEZfRkVUQ0g6CiAJCWlmIChpc2R3KSB7Ci0JCQllbWl0X2luc24oY3R4LCBhbW9yZCwgc3JjLCB0MSwgdDMpOwomIzQzOwkJCWVtaXRfaW5zbihjdHgsIGFtb3JkYmQsIHNyYywgdDEsIHQzKTsKIAkJfSBlbHNlIHsKLQkJCWVtaXRfaW5zbihjdHgsIGFtb3J3LCBzcmMsIHQxLCB0Myk7CiYjNDM7CQkJZW1pdF9pbnNuKGN0eCwgYW1vcmRidywgc3JjLCB0MSwgdDMpOwogCQkJZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTsKIAkJfQogCQlicmVhazsKIAljYXNlIEJQRl9YT1IgfCBCUEZfRkVUQ0g6CiAJCWlmIChpc2R3KSB7Ci0JCQllbWl0X2luc24oY3R4LCBhbXhvcmQsIHNyYywgdDEsIHQzKTsKJiM0MzsJCQllbWl0X2luc24oY3R4LCBhbXhvcmRiZCwgc3JjLCB0MSwgdDMpOwogCQl9IGVsc2UgewotCQkJZW1pdF9pbnNuKGN0eCwgYW14b3J3LCBzcmMsIHQxLCB0Myk7CiYjNDM7CQkJZW1pdF9pbnNuKGN0eCwgYW14b3JkYncsIHNyYywgdDEsIHQzKTsKIAkJCWVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7CiAJCX0KIAkJYnJlYWs7CkBAIC00NzAsNyAmIzQzOzQ3Myw3IEBAIHN0YXRpYyBpbnQgZW1pdF9hdG9taWNfcm13KGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eCkKIAkJCQlwcl9lcnJfb25jZSgmIzM0O2JwZi1qaXQ6IGFtc3dhcC5iIGluc3RydWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWRcbiYjMzQ7KTsKIAkJCQlyZXR1cm4gLUVJTlZBTDsKIAkJCX0KLQkJCWVtaXRfaW5zbihjdHgsIGFtc3dhcGIsIHNyYywgdDEsIHQzKTsKJiM0MzsJCQllbWl0X2luc24oY3R4LCBhbXN3YXBkYmIsIHNyYywgdDEsIHQzKTsKIAkJCWVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7CiAJCQlicmVhazsKIAkJY2FzZSBCUEZfSDoKQEAgLTQ3OCwxNSAmIzQzOzQ4MSwxNSBAQCBzdGF0aWMgaW50IGVtaXRfYXRvbWljX3Jtdyhjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgpCiAJCQkJcHJfZXJyX29uY2UoJiMzNDticGYtaml0OiBhbXN3YXAuaCBpbnN0cnVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkXG4mIzM0Oyk7CiAJCQkJcmV0dXJuIC1FSU5WQUw7CiAJCQl9Ci0JCQllbWl0X2luc24oY3R4LCBhbXN3YXBoLCBzcmMsIHQxLCB0Myk7CiYjNDM7CQkJZW1pdF9pbnNuKGN0eCwgYW1zd2FwZGJoLCBzcmMsIHQxLCB0Myk7CiAJCQllbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpOwogCQkJYnJlYWs7CiAJCWNhc2UgQlBGX1c6Ci0JCQllbWl0X2luc24oY3R4LCBhbXN3YXB3LCBzcmMsIHQxLCB0Myk7CiYjNDM7CQkJZW1pdF9pbnNuKGN0eCwgYW1zd2FwZGJ3LCBzcmMsIHQxLCB0Myk7CiAJCQllbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpOwogCQkJYnJlYWs7CiAJCWNhc2UgQlBGX0RXOgotCQkJZW1pdF9pbnNuKGN0eCwgYW1zd2FwZCwgc3JjLCB0MSwgdDMpOwomIzQzOwkJCWVtaXRfaW5zbihjdHgsIGFtc3dhcGRiZCwgc3JjLCB0MSwgdDMpOwogCQkJYnJlYWs7CiAJCX0KIAkJYnJlYWs7CkBAIC01MDksNiAmIzQzOzUxMiw3IEBAIHN0YXRpYyBpbnQgZW1pdF9hdG9taWNfcm13KGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eCkKIAkJCWVtaXRfaW5zbihjdHgsIGJlcSwgdDMsIExPT05HQVJDSF9HUFJfWkVSTywgLTYpOwogCQkJZW1pdF96ZXh0XzMyKGN0eCwgcjAsIHRydWUpOwogCQl9CiYjNDM7CQllbWl0X2luc24oY3R4LCBkYmFyLCBEQkFSX0xMU0NfTUIpOwogCQlicmVhazsKIAlkZWZhdWx0OgogCQlwcl9lcnJfb25jZSgmIzM0O2JwZi1qaXQ6IGludmFsaWQgYXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlIG9wY29kZSAlMDJ4XG4mIzM0OywgaW1tKTsKQEAgLTIzNjIsNiAmIzQzOzIzNjYsMTEgQEAgYm9vbCBicGZfaml0X3N1cHBvcnRzX2ZzZXNzaW9uKHZvaWQpCiAJcmV0dXJuIHRydWU7CiB9CiAKJiM0Mztib29sIGJwZl9qaXRfc3VwcG9ydHNfcHRyX3hjaGcodm9pZCkKJiM0Mzt7CiYjNDM7CXJldHVybiB0cnVlOwomIzQzO30KJiM0MzsKIC8qIEluZGljYXRlIHRoZSBKSVQgYmFja2VuZCBzdXBwb3J0cyBtaXhpbmcgYnBmMmJwZiBhbmQgdGFpbGNhbGxzLiAqLwogYm9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpCiB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUKaW5kZXggNmVmNjg3MmFkYmMzZTEuLmVhNGMyMmUyMGYzYzgwIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlCkBAIC04NjYsNiAmIzQzOzg2Niw3IEBAICQoT1VUUFVUKS9iZW5jaF9odGFiX21lbS5vOiAkKE9VVFBVVCkvaHRhYl9tZW1fYmVuY2guc2tlbC5oCiAkKE9VVFBVVCkvYmVuY2hfYnBmX2NyeXB0by5vOiAkKE9VVFBVVCkvY3J5cHRvX2JlbmNoLnNrZWwuaAogJChPVVRQVVQpL2JlbmNoX3NvY2ttYXAubzogJChPVVRQVVQpL2JlbmNoX3NvY2ttYXBfcHJvZy5za2VsLmgKICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubzogJChPVVRQVVQpL2xwbV90cmllX2JlbmNoLnNrZWwuaCAkKE9VVFBVVCkvbHBtX3RyaWVfbWFwLnNrZWwuaAomIzQzOyQoT1VUUFVUKS9iZW5jaF9rcHRyX3hjaGcubzogJChPVVRQVVQpL2twdHJfeGNoZ19iZW5jaC5za2VsLmgKICQoT1VUUFVUKS9iZW5jaC5vOiBiZW5jaC5oIHRlc3RpbmdfaGVscGVycy5oICQoQlBGT0JKKQogJChPVVRQVVQpL2JlbmNoOiBMRExJQlMgJiM0Mzs9IC1sbQogJChPVVRQVVQpL2JlbmNoOiAkKE9VVFBVVCkvYmVuY2gubyBcCkBAIC04ODgsNiAmIzQzOzg4OSw3IEBAICQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXAogCQkgJChPVVRQVVQpL2JlbmNoX2JwZl9jcnlwdG8ubyBcCiAJCSAkKE9VVFBVVCkvYmVuY2hfc29ja21hcC5vIFwKIAkJICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubyBcCiYjNDM7CQkgJChPVVRQVVQpL2JlbmNoX2twdHJfeGNoZy5vIFwKIAkJICQoT1VUUFVUKS91c2R0XzEubyBcCiAJCSAkKE9VVFBVVCkvdXNkdF8yLm8gXAogCQkgIwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNoLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guYwppbmRleCAwMjliM2UyMWY0Mzg0Ni4uMmI2ZGQ4YWVjMjgyZjIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaC5jCkBAIC01NzUsNiAmIzQzOzU3NSw3IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfaW5zZXJ0OwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9scG1fdHJpZV91cGRhdGU7CiBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2xwbV90cmllX2RlbGV0ZTsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfZnJlZTsKJiM0MztleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2twdHJfeGNoZzsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBiZW5jaCAqYmVuY2hzW10gPSB7CiAJJmFtcDtiZW5jaF9jb3VudF9nbG9iYWwsCkBAIC02NTMsNiAmIzQzOzY1NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYmVuY2ggKmJlbmNoc1tdID0gewogCSZhbXA7YmVuY2hfbHBtX3RyaWVfdXBkYXRlLAogCSZhbXA7YmVuY2hfbHBtX3RyaWVfZGVsZXRlLAogCSZhbXA7YmVuY2hfbHBtX3RyaWVfZnJlZSwKJiM0MzsJJmFtcDtiZW5jaF9rcHRyX3hjaGcsCiB9OwogCiBzdGF0aWMgdm9pZCBmaW5kX2JlbmNobWFyayh2b2lkKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9rcHRyX3hjaGcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfa3B0cl94Y2hnLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmI4YTBkMzQ2ZmRhNjg4Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9rcHRyX3hjaGcuYwpAQCAtMCwwICYjNDM7MSw5NiBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7LyogQ29weXJpZ2h0IChDKSAyMDI2LiBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWQgKi8KJiM0MzsjaW5jbHVkZSAmbHQ7YXJncC5oJmd0OwomIzQzOyNpbmNsdWRlICYjMzQ7YmVuY2guaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtrcHRyX3hjaGdfYmVuY2guc2tlbC5oJiMzNDsKJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IGN0eCB7CiYjNDM7CXN0cnVjdCBrcHRyX3hjaGdfYmVuY2ggKnNrZWw7CiYjNDM7fSBjdHg7CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCB7CiYjNDM7CV9fdTMyIG5yX2xvb3BzOwomIzQzO30gYXJncyA9IHsKJiM0MzsJLm5yX2xvb3BzID0gMjU2LAomIzQzO307CiYjNDM7CiYjNDM7ZW51bSB7CiYjNDM7CUFSR19OUl9MT09QUyA9IDcwMDAsCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdHNbXSA9IHsKJiM0MzsJeyAmIzM0O25yX2xvb3BzJiMzNDssIEFSR19OUl9MT09QUywgJiMzNDtucl9sb29wcyYjMzQ7LCAwLAomIzQzOwkgICYjMzQ7U2V0IG51bWJlciBvZiBicGZfa3B0cl94Y2hnKCkgY2FsbHMgcGVyIHRyaWdnZXImIzM0O30sCiYjNDM7CXt9LAomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIGVycm9yX3QgcGFyc2VfYXJnKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKQomIzQzO3sKJiM0MzsJc3dpdGNoIChrZXkpIHsKJiM0MzsJY2FzZSBBUkdfTlJfTE9PUFM6CiYjNDM7CQlhcmdzLm5yX2xvb3BzID0gc3RydG9sKGFyZywgTlVMTCwgMTApOwomIzQzOwkJYnJlYWs7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlyZXR1cm4gQVJHUF9FUlJfVU5LTk9XTjsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwIGJlbmNoX2twdHJfeGNoZ19hcmdwID0gewomIzQzOwkub3B0aW9ucyA9IG9wdHMsCiYjNDM7CS5wYXJzZXIgPSBwYXJzZV9hcmcsCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB2YWxpZGF0ZSh2b2lkKQomIzQzO3sKJiM0MzsJaWYgKGVudi5jb25zdW1lcl9jbnQgIT0gMCkgewomIzQzOwkJZnByaW50ZihzdGRlcnIsICYjMzQ7YmVuY2htYXJrIGRvZXNuJiMzOTt0IHN1cHBvcnQgY29uc3VtZXIhXG4mIzM0Oyk7CiYjNDM7CQlleGl0KDEpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkICpwcm9kdWNlcih2b2lkICppbnB1dCkKJiM0Mzt7CiYjNDM7CXdoaWxlICh0cnVlKQomIzQzOwkJc3lzY2FsbChfX05SX2dldHBnaWQpOwomIzQzOwomIzQzOwlyZXR1cm4gTlVMTDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgbWVhc3VyZShzdHJ1Y3QgYmVuY2hfcmVzICpyZXMpCiYjNDM7ewomIzQzOwlyZXMtJmd0O2hpdHMgPSBhdG9taWNfc3dhcCgmYW1wO2N0eC5za2VsLSZndDtic3MtJmd0O2hpdHMsIDApOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBzZXR1cCh2b2lkKQomIzQzO3sKJiM0MzsJc3RydWN0IGJwZl9saW5rICpsaW5rOwomIzQzOwomIzQzOwlzZXR1cF9saWJicGYoKTsKJiM0MzsKJiM0MzsJY3R4LnNrZWwgPSBrcHRyX3hjaGdfYmVuY2hfX29wZW5fYW5kX2xvYWQoKTsKJiM0MzsJaWYgKCFjdHguc2tlbCkgewomIzQzOwkJZnByaW50ZihzdGRlcnIsICYjMzQ7ZmFpbGVkIHRvIG9wZW4gc2tlbGV0b25cbiYjMzQ7KTsKJiM0MzsJCWV4aXQoMSk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJY3R4LnNrZWwtJmd0O2RhdGEtJmd0O25yX2xvb3BzID0gYXJncy5ucl9sb29wczsKJiM0MzsKJiM0MzsJbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2goY3R4LnNrZWwtJmd0O3Byb2dzLmJlbmNobWFyayk7CiYjNDM7CWlmICghbGluaykgewomIzQzOwkJZnByaW50ZihzdGRlcnIsICYjMzQ7ZmFpbGVkIHRvIGF0dGFjaCBwcm9ncmFtIVxuJiMzNDspOwomIzQzOwkJZXhpdCgxKTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0Mztjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfa3B0cl94Y2hnID0gewomIzQzOwkubmFtZSA9ICYjMzQ7a3B0ci14Y2hnJiMzNDssCiYjNDM7CS5hcmdwID0gJmFtcDtiZW5jaF9rcHRyX3hjaGdfYXJncCwKJiM0MzsJLnZhbGlkYXRlID0gdmFsaWRhdGUsCiYjNDM7CS5zZXR1cCA9IHNldHVwLAomIzQzOwkucHJvZHVjZXJfdGhyZWFkID0gcHJvZHVjZXIsCiYjNDM7CS5tZWFzdXJlID0gbWVhc3VyZSwKJiM0MzsJLnJlcG9ydF9wcm9ncmVzcyA9IG9wc19yZXBvcnRfcHJvZ3Jlc3MsCiYjNDM7CS5yZXBvcnRfZmluYWwgPSBvcHNfcmVwb3J0X2ZpbmFsLAomIzQzO307CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHRyX3hjaGdfaW5saW5lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHRyX3hjaGdfaW5saW5lLmMKaW5kZXggN2RlZjE1OGRhOWViNzEuLjhmN2I1ODcyNzQxNmM4IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHRyX3hjaGdfaW5saW5lLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3B0cl94Y2hnX2lubGluZS5jCkBAIC0xNCw3ICYjNDM7MTQsOCBAQCB2b2lkIHRlc3Rfa3B0cl94Y2hnX2lubGluZSh2b2lkKQogCWludCBlcnI7CiAKICNpZiAhKGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgXAotICAgICAgKGRlZmluZWQoX19yaXNjdikgJmFtcDsmYW1wOyBfX3Jpc2N2X3hsZW4gPT0gNjQpKQomIzQzOyAgICAgIChkZWZpbmVkKF9fcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSB8fCBcCiYjNDM7ICAgICAgKGRlZmluZWQoX19sb29uZ2FyY2hfXykgJmFtcDsmYW1wOyBfX2xvb25nYXJjaF9ncmxlbiA9PSA2NCkpCiAJdGVzdF9fc2tpcCgpOwogCXJldHVybjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2twdHJfeGNoZ19iZW5jaC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2twdHJfeGNoZ19iZW5jaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi4zNjM4ODMwNzNlMmMwZQotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rcHRyX3hjaGdfYmVuY2guYwpAQCAtMCwwICYjNDM7MSw0OSBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7LyogQ29weXJpZ2h0IChDKSAyMDI2LiBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWQgKi8KJiM0MzsjaW5jbHVkZSAmIzM0O3ZtbGludXguaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwomIzQzOwomIzQzOyNpbmNsdWRlICYjMzQ7YnBmX2V4cGVyaW1lbnRhbC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O2JwZl9taXNjLmgmIzM0OwomIzQzOwomIzQzO2NoYXIgX2xpY2Vuc2VbXSBTRUMoJiMzNDtsaWNlbnNlJiMzNDspID0gJiMzNDtHUEwmIzM0OzsKJiM0MzsKJiM0MzsjZGVmaW5lIE1BWF9YQ0hHX0xPT1BTIDQwOTYKJiM0MzsKJiM0MztzdHJ1Y3QgYmluX2RhdGEgewomIzQzOwljaGFyIGJsb2JbMzJdOwomIzQzO307CiYjNDM7CiYjNDM7I2RlZmluZSBwcml2YXRlKG5hbWUpIFNFQygmIzM0Oy5ic3MuJiMzNDsgI25hbWUpIF9faGlkZGVuIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKQomIzQzOwomIzQzO3ByaXZhdGUoa3B0cikgc3RydWN0IGJpbl9kYXRhIF9fa3B0ciAqcHRyOwomIzQzO3UzMiBucl9sb29wcyA9IDI1NjsKJiM0Mztsb25nIGhpdHM7CiYjNDM7CiYjNDM7U0VDKCYjMzQ7ZmVudHJ5LyYjMzQ7IFNZU19QUkVGSVggJiMzNDtzeXNfZ2V0cGdpZCYjMzQ7KQomIzQzO2ludCBiZW5jaG1hcmsodm9pZCAqY3R4KQomIzQzO3sKJiM0MzsJc3RydWN0IGJpbl9kYXRhICpvbGQ7CiYjNDM7CXUzMiBpOwomIzQzOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgTUFYX1hDSEdfTE9PUFM7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlpZiAoaSAmZ3Q7PSBucl9sb29wcykKJiM0MzsJCQlicmVhazsKJiM0MzsKJiM0MzsJCW9sZCA9IGJwZl9rcHRyX3hjaGcoJmFtcDtwdHIsIE5VTEwpOwomIzQzOwkJaWYgKG9sZCkKJiM0MzsJCQlicGZfb2JqX2Ryb3Aob2xkKTsKJiM0MzsJfQomIzQzOwomIzQzOwlfX3N5bmNfYWRkX2FuZF9mZXRjaCgmYW1wO2hpdHMsIGkpOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBCVEYgRlVOQyByZWNvcmRzIGFyZSBub3QgZ2VuZXJhdGVkIGZvciBrZnVuY3MgcmVmZXJlbmNlZCBvbmx5IHRocm91Z2gKJiM0MzsgKiBvcHRpbWl6ZWQgcGF0aHMuIEtlZXAgYnBmX29ial9kcm9wKCkgdmlzaWJsZSB0byBsaWJicGYmIzM5O3Mga2Z1bmMgbGlua2VyLgomIzQzOyAqLwomIzQzO3ZvaWQgX19idGZfcm9vdCh2b2lkKQomIzQzO3sKJiM0MzsJYnBmX29ial9kcm9wKE5VTEwpOwomIzQzO30KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc3MgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDUxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBMb29uZ0FyY2ggQlBGIEpJVDogQSBGZWFzaWJpbGl0eSBBc3Nlc3NtZW50KioKCk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCBzZXJpZXMgaGVyZSwgYW5kIGl0JiMzOTtzIHRvdWNoaW5nIGBhcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhgLCBgYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY2AsIGFuZCBzb21lIEJQRiBzZWxmdGVzdHMuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgYWRkaW5nIG5ldyBMb29uZ0FyY2ggaW5zdHJ1Y3Rpb25zIGZvciBhdG9taWMgb3BlcmF0aW9ucyDigJMgYGFtc3dhcGRiYl9vcGAsIGBhbWFkZGRiYl9vcGAsIGFuZCBzbyBvbiDigJMgYW5kIHRoZW4gKnVzaW5nKiB0aG9zZSBpbnN0cnVjdGlvbnMgd2l0aGluIHRoZSBCUEYgSklUIGNvbXBpbGVyIHNwZWNpZmljYWxseSBmb3IgdGhlIExvb25nQXJjaCBhcmNoaXRlY3R1cmUuIFRoaXMgYWxzbyBpbnZvbHZlcyBlbmFibGluZyBgYnBmX2ppdF9zdXBwb3J0c19wdHJfeGNoZ2AgZm9yIExvb25nQXJjaC4gVGhlIHdob2xlIHRoaW5nIGlzIGNsZWFybHkgTG9vbmdBcmNoLXNwZWNpZmljLCBzbyB0aGF0JiMzOTtzIHRoZSBzY29wZS4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogSXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBBbmQgdGhlIGFuc3dlciBpcyBsaWtlbHkgeWVzLiBUaGlzIGlzIG1vZGlmeWluZyB0aGUgQlBGIEpJVCBjb21waWxlciwgd2hpY2ggbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0JiMzOTtzIHJlYWNoYWJsZSBpZiB3ZSYjMzk7cmUgcnVubmluZyBvbiBMb29uZ0FyY2guCgpCdXQgdGhlbiBJIHN0YXJ0IHRvIHRoaW5rIGFib3V0IHRoZSBwcmFjdGljYWxpdGllcy4gRG9lcyBzeXprYWxsZXIgZXZlbiAqc3VwcG9ydCogTG9vbmdBcmNoIGluIGl0cyBzdGFuZGFyZCBzZXR1cCwgbGlrZSBHQ0UvUUVNVT8gSSBrbm93IGl0IGhhbmRsZXMgcmlzY3Y2NCwgYXJtNjQsIGFtZDY0LCAzODYsIGFuZCBBUk0uIFdhaXQsIGRvZXMgc3l6a2FsbGVyIGhhbmRsZSBsb29uZ2FyY2g2ND8gVGltZSB0byBjaGVjay4gVGhpcyBnZXRzIHRyaWNreSBiZWNhdXNlIHRoZSBwYXRjaCBkZXNjcmlwdGlvbiBtZW50aW9ucywgJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuLi4mIzM0OyB3aGljaCB0aHJvd3MgYSB3cmVuY2ggaW4gdGhlIHdvcmtzLgoKSG93ZXZlciwgZG9lc24mIzM5O3QgUUVNVSBhY3R1YWxseSBzdXBwb3J0IExvb25nQXJjaD8gWWVzLCBRRU1VIGRvZXMgc3VwcG9ydCBsb29uZ2FyY2g2NC4gT2theSwgc28gdGhhdCYjMzk7cyBnb29kLgoKU28sICpjYW4qIHdlIGZ1enogdGhpcyBMb29uZ0FyY2ggQlBGIEpJVD8gTGV0JiMzOTtzIHRha2UgYSBzdGVwIGJhY2suIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBjb2RlIGJlaW5nIG1vZGlmaWVkLiBObywgaXQmIzM5O3MgYWxsIHR1Y2tlZCBhd2F5IG5lYXRseSB3aXRoaW4gYGFyY2gvbG9vbmdhcmNoL2AgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYC4gT2theSwgc28gd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgcnVubmluZyB0aGlzIGZ1enppbmcgY2FtcGFpZ24gb24gTG9vbmdBcmNoLiBUaGUgcHJvYmxlbSBoZXJlIGlzIHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgbG9vbmdhcmNoNjQgaW5zdGFuY2UgaW4gaXRzIHN0YW5kYXJkIHN5emJvdCBzZXR1cCwgYnV0IGl0IG1heSBiZSBzdXBwb3J0ZWQuCgpPa2F5LCBiYWNrIHRvIHRoZSAmIzM0O2ltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzJiMzNDsgbGluZS4gUUVNVSBkb2VzIHN1cHBvcnQgbG9vbmdhcmNoNjQuIExldCYjMzk7cyBsb29rIGNsb3NlbHkgYXQgYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgLiBUaGUgYGVtaXRfYXRvbWljX3Jtd2AgZnVuY3Rpb24gaXMgdGhlIGFyZWEgb2YgaW50ZXJlc3QgaGVyZS4gVGltZSB0byBzZWFyY2ggZm9yIGBlbWl0X2F0b21pY19ybXdgIGluIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlbWl0X2F0b21pY19ybXcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MzUwPXN0YXRpYyB2b2lkIGVtaXRfc3RvcmVfc3RhY2tfaW1tNjQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IHJlZywgaW50IHN0YWNrX29mZiwgdTY0IGltbTY0KVxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMzU1LVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzozNTY6c3RhdGljIGludCBlbWl0X2F0b21pY19ybXcoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0zNTcte1xuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9NzA0PXN0YXRpYyBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgZXh0cmFfcGFzcylcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE0MjYtXHRcdGlmICghYnBmX2F0b21pY19pc19sb2FkX3N0b3JlKGluc24pKVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoxNDI3Olx0XHRcdHJldCA9IGVtaXRfYXRvbWljX3JtdyhpbnNuLCBjdHgpO1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0xNDI4LVx0XHRlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODIyNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBDb21waWxlcioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBjaGFuZ2VzIHRvIGBlbWl0X2F0b21pY19ybXdgIHdpdGhpbiBgYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY2AuIFJpZ2h0LCB0aGlzIGlzIHRoZSBCUEYgSklUIGNvbXBpbGVyIHNwZWNpZmljYWxseSBmb3IgdGhlIExvb25nQXJjaCBhcmNoaXRlY3R1cmUuIFRoZSBxdWVzdGlvbiBpczogc2hvdWxkIHdlIHByaW9yaXRpemUgdGhpcyBmb3IgZnV6emluZz8gQWJzb2x1dGVseS4gVGhlIEJQRiBKSVQgY29tcGlsZXIgaXMgYSBrbm93biB3ZWFrIHBvaW50IGFuZCBwcmltZSB0YXJnZXQgZm9yIHRoaXMga2luZCBvZiB0ZXN0aW5nLgoKTm93LCB3aGF0IGFib3V0IHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgd2UgbmVlZCB0byBjb25zaWRlcj8gSSBrbm93IHdlJiMzOTtyZSBsb29raW5nIGZvciBhbnl0aGluZyBzcGVjaWZpYyB0byB0aGUgKm1vZGlmaWVkKiBjb2RlLiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSBub3QgdG8gbGlzdCBnZW5lcmljIGNvbmZpZ3MgYXMgd2UgY2FuIGFzc3VtZSB0aGV5IGFyZSBhbHJlYWR5IGVuYWJsZWQuIGBDT05GSUdfQlBGX0pJVGAgYW5kIGBDT05GSUdfTE9PTkdBUkNIYC4gYENPTkZJR19CUEZfSklUYCBpcyBsaWtlbHkgYWxyZWFkeSBlbmFibGVkIGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBCUEYgSklUIGZpbGUsIGJ1dCBsZXQmIzM5O3MgbGlzdCBpdCBhbnl3YXkuIFRvIGJlIHNhZmUsIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB3aGF0IGVuYWJsZXMgYGJwZl9qaXQuY2AgLSBJIHNob3VsZCBjaGVjayBgYXJjaC9sb29uZ2FyY2gvS2NvbmZpZ2Agb3IgYGFyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZWAgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9qaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlLTYtI1xuYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzQ1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmU6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqCgpSaWdodCwgc28gSSYjMzk7bSBzZWVpbmcgdGhpcyBkZXBlbmRlbmN5IG9uIGBDT05GSUdfQlBGX0pJVGAuIFRoYXQmIzM5O3MgYSBnaXZlbiwgSSB1bmRlcnN0YW5kIHRoZSBuZWVkIGZvciB0aGUgSnVzdC1Jbi1UaW1lIGNvbXBpbGVyIGluIHRoaXMgY29udGV4dC4gQnV0IG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgdG8gYmUgdGhvcm91Z2guCgpBcmUgdGhlcmUgYW55ICpvdGhlciogY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgY291bGQgcG90ZW50aWFsbHkgaW5mbHVlbmNlIHRoaXM/IEFueXRoaW5nIHJlbGF0ZWQgdG8gdGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlLCBvcHRpbWl6YXRpb25zLCBzcGVjaWZpYyBoYXJkd2FyZSBzdXBwb3J0Li4uIEkgbmVlZCB0byBjb25zaWRlciBhbGwgdGhlIGFuZ2xlcy4gTXkgaW5zdGluY3RzIGFyZSB0ZWxsaW5nIG1lIHRvIGRpZyBkZWVwZXIuCgpTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYW55dGhpbmcgcmVsYXRlZCB0byBhdG9taWMgb3BlcmF0aW9ucywgb3IgbWF5YmUgZXZlbiByZWxhdGVkIHRvIG1lbW9yeSBhY2Nlc3MuIElmIHRoaXMgaXMgcGVyZm9ybWFuY2UtY3JpdGljYWwsIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGljaCBvcHRpb25zIGFyZSBnb2luZyB0byBhZmZlY3QgdGhlIHNwZWVkIG9mIHRoYXQuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgcG90ZW50aWFsbHkgaGlkZGVuIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoZSAqZnVsbCogY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTAzMgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIENvbmZpZ3VyYXRpb24gZm9yIEJQRiBKSVQgQ29tcGlsYXRpb24qKgoKQWxyaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBCUEYgSklUIGNvbXBpbGF0aW9uIHNpdHVhdGlvbiwgYW5kIEkmIzM5O20gbm90IHNlZWluZyBhbnkgc3BlY2lmaWMsIG9idmlvdXMgY29uZmlndXJhdGlvbiBvcHRpb25zIGRlZmluZWQgd2l0aGluIGBicGZfaml0LmNgLiBUaGF0JiMzOTtzIGEgbGl0dGxlIHVudXN1YWwsIGJ1dCBub3QgbmVjZXNzYXJpbHkgYSBzaG93c3RvcHBlci4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIGJyb2FkZW4gdGhlIHNjb3BlIGFuZCBzZWUgaWYgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbmNsdWRlIGZpbGVzIG1pZ2h0IGhvbGQgdGhlIGtleS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGNoZWNrIGBhcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhgLiBNYXliZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvciBpbnN0cnVjdGlvbiBkZWZpbml0aW9ucyBhcmUgaGFuZGxlZCB0aGVyZSwgZ2l2ZW4gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBMb29uZ0FyY2guIFRoYXQmIzM5O3MgYSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHRoZSBsb3ctbGV2ZWwgZGV0YWlscyB0aGF0IHdvdWxkIGluZmx1ZW5jZSB0aGUgSklUIGNvbXBpbGVyJiMzOTtzIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaD00NDg9c3RhdGljIGlubGluZSBib29sIGlzX3JhX3NhdmVfaW5zKHVuaW9uIGxvb25nYXJjaF9pbnN0cnVjdGlvbiAqaXApXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmgtNDQ5LXtcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaDo0NTA6XHRjb25zdCB1MzIgb3Bjb2RlID0gSVNfRU5BQkxFRChDT05GSUdfMzJCSVQpID8gc3R3X29wIDogc3RkX29wO1xuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oLTQ1MS1cbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0Lmg9NDU5PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19zdGFja19hbGxvY19pbnModW5pb24gbG9vbmdhcmNoX2luc3RydWN0aW9uICppcClcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaC00NjAte1xuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oOjQ2MTpcdGNvbnN0IHUzMiBvcGNvZGUgPSBJU19FTkFCTEVEKENPTkZJR18zMkJJVCkgPyBhZGRpd19vcCA6IGFkZGlkX29wO1xuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oLTQ2Mi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTUzNAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIEpJVCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gemVyb2luZyBpbiBvbiB0aGlzIGBDT05GSUdfQlBGX0pJVGAgY29uZmlndXJhdGlvbiBvcHRpb24g4oCTIHRoYXQmIzM5O3MgdGhlIGNvcmUuIE15IHJlYWwgZm9jdXMsIHRob3VnaCwgYXJlIHRoZXNlIGNydWNpYWwgc3ltYm9sczogYGVtaXRfYXRvbWljX3Jtd2AgYW5kIGBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnYC4gQWgsIGhhbmcgb24sIGBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnYCBpcyBiYXNpY2FsbHkganVzdCBhIGJvb2xlYW4gY2hlY2ssIGEgc2ltcGxlIHRydWUvZmFsc2UgcmV0dXJuLiBTbywgaXQgbG9va3MgbGlrZSBgZW1pdF9hdG9taWNfcm13YCBpcyB0aGUgcmVhbCBoZWF2eSBsaWZ0ZXIgaGVyZSwgdGhlIG9uZSB3aGVyZSB0aGUgY29kZSBtb2RpZmljYXRpb25zIGFyZSBoYXBwZW5pbmcuIEkgbmVlZCB0byBiZSBzdXJlIHRob3VnaCwgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgdGhhdCBhcmUgYXNzb2NpYXRlZCBoZXJlPyBJIG5lZWQgdG8gY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9qaXRfc3VwcG9ydHNfcHRyX3hjaGcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MjM2ND1ib29sIGJwZl9qaXRfc3VwcG9ydHNfZnNlc3Npb24odm9pZClcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIzNjgtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIzNjk6Ym9vbCBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnKHZvaWQpXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIzNzAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTYwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYGVtaXRfYXRvbWljX3Jtd2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFllcywgaXQgaXMuIEdpdmVuIHRoYXQgaXQmIzM5O3Mgc3RhdGljIGFuZCBpdHMgcmVzcG9uc2liaWxpdHkgcmVsYXRlcyBzcGVjaWZpY2FsbHkgdG8gYXRvbWljIGluc3RydWN0aW9ucywgaXQgc2VlbXMgbGlrZSB0aGUgaWRlYWwgZm9jdXMgZm9yIG15IGludmVzdGlnYXRpb24uIENvbnNpZGVyaW5nIGBidWlsZF9pbnNuYCBjYWxscyBpdCwgdGhlIGNhbGwgcGF0aCBpdHNlbGYgbWlnaHQgYmUgcGVyZm9ybWFuY2UtY3JpdGljYWwgZHVyaW5nIEpJVCBjb21waWxhdGlvbi4gSG93ZXZlciwgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2l0aCBgZW1pdF9hdG9taWNfcm13YCwgd2hpY2ggZGVhbHMgZGlyZWN0bHkgd2l0aCB0aGUgYXRvbWljIGluc3RydWN0aW9uIGdlbmVyYXRpb24uCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5zdHJ1Y3Rpb25zIGdlbmVyYXRlZCBmb3IgYXRvbWljIG9wZXJhdGlvbnMgaW4gdGhlIExvb25nQXJjaCBCUEYgSklULCBzcGVjaWZpY2FsbHkgcmVwbGFjaW5nIGluc3RydWN0aW9ucyBsaWtlIGBhbWFkZGJgIHdpdGggc29tZXRoaW5nIGxpa2UgYGFtYWRkZGJiYCwgd2hpY2ggaGludHMgYXQgbGFyZ2VyIGRhdGEgc2l6ZXMgb3IgcGVyaGFwcyBpbnN0cnVjdGlvbiBmb3JtYXQgY2hhbmdlcy4gVGhlIHByb21wdCYjMzk7cyByZXF1aXJlbWVudCBhYm91dCAmIzM0O2ltcG9zc2libGUtdG8tcmVhY2gmIzM0OyBjb2RlIGlzIGltcG9ydGFudC4gQ2FuIHdlIGV2ZW4gcmVhY2ggdGhlIExvb25nQXJjaCBCUEYgSklUIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVU/IFllcywgd2UgY2FuLiBRRU1VIHN1cHBvcnRzIExvb25nQXJjaCwgYW5kIHdlIGNhbiBkZWZpbml0ZWx5IHJ1biBhIExvb25nQXJjaCBrZXJuZWwgd2l0aGluIGl0LCB0aHVzIG1ha2luZyB0aGlzIGNvZGUgcGF0aCByZWFjaGFibGUuCgpUaGUga2V5IGNvbmZpZ3VyYXRpb24gdG8gbm90ZSBoZXJlIGlzIGBCUEZfSklUYC4gTm93LCBsb29raW5nIGF0IHRoZSBzeW1ib2xzLCB0aGUgcHJpbWFyeSBmb2N1cyBpcyBkZWZpbml0ZWx5IG9uIGBlbWl0X2F0b21pY19ybXdgLiBUaGlzIHBhdGNoIGVuYWJsZXMgYGJwZl9qaXRfc3VwcG9ydHNfcHRyX3hjaGdgIGFzIHdlbGwsIHNvIHRoZXJlIG11c3QgYmUgYWRkaXRpb25hbCBjaGFuZ2VzIHJlbGF0ZWQgdG8gcG9pbnRlciBleGNoYW5nZS4KClRoZSBmdW5kYW1lbnRhbCByZWFzb25pbmcgaXMgdGhhdCB0aGlzIHBhdGNoIGFsdGVycyB0aGUgaW5zdHJ1Y3Rpb24gZW1pc3Npb24gZm9yIEJQRiBhdG9taWMgb3BlcmF0aW9ucyBvbiBMb29uZ0FyY2guIFRoaXMgaXMgYSBjcml0aWNhbCBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIEJQRiBKSVQsIGFuZCBpdCYjMzk7cyBzb21ldGhpbmcgdGhhdCBjYW4gYmUgdGVzdGVkIGJ5IGV4ZWN1dGluZyBCUEYgcHJvZ3JhbXMgdGhhdCBpbmNsdWRlIGF0b21pYyBvcGVyYXRpb25zLiBNeSBtYWluIGZvY3VzIHJlbWFpbnMgb24gYGVtaXRfYXRvbWljX3Jtd2AgYW5kIGBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnYC4KCk5vdywgbG9va2luZyBkZWVwZXIsIHRoZSBjaGFuZ2VzIGFyZSBjZW50ZXJlZCBhcm91bmQgYGVtaXRfYXRvbWljX3Jtd2AgaW4gYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgIGFuZCBpbmxpbmUgZnVuY3Rpb25zLCBzdWNoIGFzIHRob3NlIGdlbmVyYXRlZCBieSBgREVGX0VNSVRfUkVHM19GT1JNQVRgIChsaWtlIGBlbWl0X2Ftc3dhcGRiYmApLCBkZWZpbmVkIGluIGBhcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhgLiBUaGVyZSBpcyBhIHRlc3QgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIHRoYXQgYmVuY2htYXJrcyBga3B0cl94Y2hnYCwgd2hpY2ggaXMgdXNlZnVsIGZvciB2YWxpZGF0aW9uLCBidXQgYGVtaXRfYXRvbWljX3Jtd2AgcmVtYWlucyB0aGUgY29yZSBhcmVhIG9mIGNvbmNlcm4uIE5vLCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBzdWJzdGFudGlhbCBmdW5jdGlvbnMgbW9kaWZpZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VtaXRfYXRvbWljX3JtdyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0zNTA9c3RhdGljIHZvaWQgZW1pdF9zdG9yZV9zdGFja19pbW02NChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgcmVnLCBpbnQgc3RhY2tfb2ZmLCB1NjQgaW1tNjQpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0zNTUtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjM1NjpzdGF0aWMgaW50IGVtaXRfYXRvbWljX3Jtdyhjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgpXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTM1Ny17XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz03MDQ9c3RhdGljIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eCwgYm9vbCBleHRyYV9wYXNzKVxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMTQyNi1cdFx0aWYgKCFicGZfYXRvbWljX2lzX2xvYWRfc3RvcmUoaW5zbikpXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjE0Mjc6XHRcdFx0cmV0ID0gZW1pdF9hdG9taWNfcm13KGluc24sIGN0eCk7XG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE0MjgtXHRcdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzODQKCQkJCQkJCW91dHB1dDogMTMzCgkJCQkJCQl0aG91Z2h0czogMjkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBCUEYgSklUIExvb25nQXJjaCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSB6ZXJvZWQgaW4gb24gdGhlIGBicGZfaml0LmNgIGZpbGUuIEl0IGxvb2tzIGxpa2UgdGhlIG1haW4gZnVuY3Rpb24gaW1wYWN0ZWQgaXMgYGVtaXRfYXRvbWljX3Jtd2AsIHdoaWNoIGFsaWducyB3aXRoIHRoZSBpbnRlbnRpb24gb2YgdGhlIGNoYW5nZXMg4oCTIGZvY3VzaW5nIG9uIGF0b21pYyBvcGVyYXRpb25zLiBUaGUgYGJwZl9qaXRfc3VwcG9ydHNfcHRyX3hjaGdgIGFkZGl0aW9uIGlzIGFsc28gbm90ZXdvcnRoeSwgZGlyZWN0bHkgc3VwcG9ydGluZyB0aGUgbmV3IGF0b21pYyBpbnN0cnVjdGlvbiBpbXBsZW1lbnRhdGlvbnMuCgpOb3csIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJIHNlZSB0aGUgcmVxdWlyZW1lbnQgZm9yIGBCUEZfU1lTQ0FMTGAgZm9yIEJQRiBpbiBnZW5lcmFsLCBidXQgdGhhdCYjMzk7cyBhIGJhc2VsaW5lLiBUaGUgYEJQRl9KSVRgIGNvbmZpZyBzZWVtcyBjcml0aWNhbCBzaW5jZSB0aGlzIHBhdGNoIGlzIGRpcmVjdGx5IG1vZGlmeWluZyB0aGUgSklUIGNvbXBpbGVyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IGxpc3QgYW55dGhpbmcgdGhhdCYjMzk7cyB0b28gZ2VuZXJpYywgYW5kIGBCUEZfSklUYCBjZXJ0YWlubHkgaXNuJiMzOTt0LiBJJiMzOTtsbCBzdGljayB3aXRoIGBCUEZfSklUYCBmb3Igbm93LgoKQ29uc2lkZXJpbmcgdGhhdCB0aGUgY2hhbmdlcyBhcmUgc3BlY2lmaWMgdG8gTG9vbmdBcmNoLCBJIGNvdWxkIGNvbnNpZGVyIGlmIEkgbmVlZCB0byBpbmNsdWRlIGBMT09OR0FSQ0hgLiBIb3dldmVyLCB0aGUgcHJvbXB0IGRpcmVjdHMgbWUgdG8gbGlzdCBvbmx5IHdoYXQgaXMgbmVlZGVkLCBhbmQgYEJQRl9KSVRgIGlzIHNwZWNpZmljIGVub3VnaCwgc28gSSB3b24mIzM5O3QuCgpOb3csIGxldCBtZSBhcnRpY3VsYXRlIHRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgYW5hbHlzaXMuIFRoZSBwYXRjaCYjMzk7cyBjb3JlIGZ1bmN0aW9uIGlzIHRvIHVwZGF0ZSB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgY29tcGlsZXIgdG8gbGV2ZXJhZ2UgbmV3IGF0b21pYyBpbnN0cnVjdGlvbnMgbGlrZSBgYW1hZGRkYmJgIGFuZCBgYW1zd2FwZGJiYCB0byBvcHRpbWl6ZSBCUEYgYXRvbWljIG9wZXJhdGlvbnMsIGFuZCBpdCBhbHNvIGVuYWJsZXMgYGJwZl9qaXRfc3VwcG9ydHNfcHRyX3hjaGdgLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgZW5oYW5jZW1lbnQgdG8gdGhlIEJQRiBKSVQgbG9naWMuIFRoaXMgbWVhbnMgdGhpcyBjYW4gYmUgZnV6emVkIHRocm91Z2ggQlBGIHByb2dyYW1zIHRoYXQgdXNlIGF0b21pYyBvcGVyYXRpb25zLgoKTXkgZm9jdXMgc3ltYm9scyBhcmUgYGVtaXRfYXRvbWljX3Jtd2AuCgpBbmQgbXkgc2VsZWN0ZWQgY29uZmlnIGlzIGBCUEZfSklUYC4KCkkmIzM5O20gcmVhZHkgdG8gcHJvY2VlZCB3aXRoIHNldHRpbmcgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1pdF9hdG9taWNfcm13JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyIHRvIHVzZSBuZXcgYXRvbWljIGluc3RydWN0aW9ucyAoZS5nLiwgYW1hZGRkYmIsIGFtc3dhcGRiYikgZm9yIEJQRiBhdG9taWMgb3BlcmF0aW9ucyBhbmQgZW5hYmxlcyBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBvbiBMb29uZ0FyY2gsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgbG9hZGluZyBhbmQgZXhlY3V0aW5nIEJQRiBwcm9ncmFtcyB3aXRoIGF0b21pYyBvcGVyYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1pdF9hdG9taWNfcm13JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyIHRvIHVzZSBuZXcgYXRvbWljIGluc3RydWN0aW9ucyAoZS5nLiwgYW1hZGRkYmIsIGFtc3dhcGRiYikgZm9yIEJQRiBhdG9taWMgb3BlcmF0aW9ucyBhbmQgZW5hYmxlcyBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBvbiBMb29uZ0FyY2gsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgbG9hZGluZyBhbmQgZXhlY3V0aW5nIEJQRiBwcm9ncmFtcyB3aXRoIGF0b21pYyBvcGVyYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDc6Mzk6MDAuMzYyMDM2MTE4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE2ODA5OTk0MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVtaXRfYXRvbWljX3Jtd1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyIHRvIHVzZSBuZXcgYXRvbWljIGluc3RydWN0aW9ucyAoZS5nLiwgYW1hZGRkYmIsIGFtc3dhcGRiYikgZm9yIEJQRiBhdG9taWMgb3BlcmF0aW9ucyBhbmQgZW5hYmxlcyBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBvbiBMb29uZ0FyY2gsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgbG9hZGluZyBhbmQgZXhlY3V0aW5nIEJQRiBwcm9ncmFtcyB3aXRoIGF0b21pYyBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzozOTowMC4zNjIwNDI2MjlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTMzODUwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDFkNWFkNjc3YzIwZTc4OTNlMmExMmZmZmQyNzQ5ZWM0ZTA3NjExNGRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdW4gMjIgMDc6Mzg6NTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXFxuaW5kZXggNzZiNzIzNTkwMDIzZDcuLmJkYmMxN2QwNzExMDVlIDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxcbkBAIC0xOTksNiArMTk5LDEwIEBAIGVudW0gcmVnM19vcCB7XFxuIFxcdGFtc3dhcGhfb3BcXHQ9IDB4NzBiOSxcXG4gXFx0YW1hZGRiX29wXFx0PSAweDcwYmEsXFxuIFxcdGFtYWRkaF9vcFxcdD0gMHg3MGJiLFxcbitcXHRhbXN3YXBkYmJfb3BcXHQ9IDB4NzBiYyxcXG4rXFx0YW1zd2FwZGJoX29wXFx0PSAweDcwYmQsXFxuK1xcdGFtYWRkZGJiX29wXFx0PSAweDcwYmUsXFxuK1xcdGFtYWRkZGJoX29wXFx0PSAweDcwYmYsXFxuIFxcdGFtc3dhcHdfb3BcXHQ9IDB4NzBjMCxcXG4gXFx0YW1zd2FwZF9vcFxcdD0gMHg3MGMxLFxcbiBcXHRhbWFkZHdfb3BcXHQ9IDB4NzBjMixcXG5AQCAtNzgzLDYgKzc4NywyMCBAQCBERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBiLCBhbXN3YXBiX29wKVxcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBoLCBhbXN3YXBoX29wKVxcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXB3LCBhbXN3YXB3X29wKVxcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBkLCBhbXN3YXBkX29wKVxcbitERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBkYmIsIGFtc3dhcGRiYl9vcClcXG4rREVGX0VNSVRfUkVHM19GT1JNQVQoYW1zd2FwZGJoLCBhbXN3YXBkYmhfb3ApXFxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtYWRkZGJiLCBhbWFkZGRiYl9vcClcXG4rREVGX0VNSVRfUkVHM19GT1JNQVQoYW1hZGRkYmgsIGFtYWRkZGJoX29wKVxcbitERUZfRU1JVF9SRUczX0ZPUk1BVChhbWFkZGRidywgYW1hZGRkYndfb3ApXFxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtYWRkZGJkLCBhbWFkZGRiZF9vcClcXG4rREVGX0VNSVRfUkVHM19GT1JNQVQoYW1hbmRkYncsIGFtYW5kZGJ3X29wKVxcbitERUZfRU1JVF9SRUczX0ZPUk1BVChhbWFuZGRiZCwgYW1hbmRkYmRfb3ApXFxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtb3JkYncsIGFtb3JkYndfb3ApXFxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtb3JkYmQsIGFtb3JkYmRfb3ApXFxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFteG9yZGJ3LCBhbXhvcmRid19vcClcXG4rREVGX0VNSVRfUkVHM19GT1JNQVQoYW14b3JkYmQsIGFteG9yZGJkX29wKVxcbitERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBkYncsIGFtc3dhcGRid19vcClcXG4rREVGX0VNSVRfUkVHM19GT1JNQVQoYW1zd2FwZGJkLCBhbXN3YXBkYmRfb3ApXFxuIFxcbiAjZGVmaW5lIERFRl9FTUlUX1JFRzNTQTJfRk9STUFUKE5BTUUsIE9QKVxcdFxcdFxcdFxcdFxcXFxcXG4gc3RhdGljIGlubGluZSB2b2lkIGVtaXRfIyNOQU1FKHVuaW9uIGxvb25nYXJjaF9pbnN0cnVjdGlvbiAqaW5zbixcXHRcXFxcXFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXFxuaW5kZXggMjQ5MTNkYzdmNGU4MzUuLmZmZmY1MjFiM2M4MDg4IDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXFxuQEAgLTcsNiArNyw5IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tZW1vcnkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFxcImJwZl9qaXQuaFxcXCJcXG4gXFxuKy8qIGRiYXIgaGludCBmb3IgbGwvc2MgY29tcGxldGlvbiBvcmRlcmluZywgc2VlIF9fV0VBS19MTFNDX01CICovXFxuKyNkZWZpbmUgREJBUl9MTFNDX01CXFx0MHg3MDBcXG4rXFxuICNkZWZpbmUgTE9PTkdBUkNIX01BWF9SRUdfQVJHUyA4XFxuIFxcbiAjZGVmaW5lIExPT05HQVJDSF9MT05HX0pVTVBfTklOU05TIDVcXG5AQCAtNDE4LDcgKzQyMSw3IEBAIHN0YXRpYyBpbnQgZW1pdF9hdG9taWNfcm13KGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eClcXG4gXFx0XFx0XFx0XFx0cHJfZXJyX29uY2UoXFxcImJwZi1qaXQ6IGFtYWRkLmIgaW5zdHJ1Y3Rpb24gaXMgbm90IHN1cHBvcnRlZFxcXFxuXFxcIik7XFxuIFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRcXHRcXHR9XFxuLVxcdFxcdFxcdGVtaXRfaW5zbihjdHgsIGFtYWRkYiwgc3JjLCB0MSwgdDMpO1xcbitcXHRcXHRcXHRlbWl0X2luc24oY3R4LCBhbWFkZGRiYiwgc3JjLCB0MSwgdDMpO1xcbiBcXHRcXHRcXHRlbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSBCUEZfSDpcXG5AQCAtNDI2LDM5ICs0MjksMzkgQEAgc3RhdGljIGludCBlbWl0X2F0b21pY19ybXcoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxcbiBcXHRcXHRcXHRcXHRwcl9lcnJfb25jZShcXFwiYnBmLWppdDogYW1hZGQuaCBpbnN0cnVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkXFxcXG5cXFwiKTtcXG4gXFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdFxcdFxcdH1cXG4tXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW1hZGRoLCBzcmMsIHQxLCB0Myk7XFxuK1xcdFxcdFxcdGVtaXRfaW5zbihjdHgsIGFtYWRkZGJoLCBzcmMsIHQxLCB0Myk7XFxuIFxcdFxcdFxcdGVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIEJQRl9XOlxcbi1cXHRcXHRcXHRlbWl0X2luc24oY3R4LCBhbWFkZHcsIHNyYywgdDEsIHQzKTtcXG4rXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW1hZGRkYncsIHNyYywgdDEsIHQzKTtcXG4gXFx0XFx0XFx0ZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgQlBGX0RXOlxcbi1cXHRcXHRcXHRlbWl0X2luc24oY3R4LCBhbWFkZGQsIHNyYywgdDEsIHQzKTtcXG4rXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW1hZGRkYmQsIHNyYywgdDEsIHQzKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdH1cXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQlBGX0FORCB8IEJQRl9GRVRDSDpcXG4gXFx0XFx0aWYgKGlzZHcpIHtcXG4tXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW1hbmRkLCBzcmMsIHQxLCB0Myk7XFxuK1xcdFxcdFxcdGVtaXRfaW5zbihjdHgsIGFtYW5kZGJkLCBzcmMsIHQxLCB0Myk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdGVtaXRfaW5zbihjdHgsIGFtYW5kdywgc3JjLCB0MSwgdDMpO1xcbitcXHRcXHRcXHRlbWl0X2luc24oY3R4LCBhbWFuZGRidywgc3JjLCB0MSwgdDMpO1xcbiBcXHRcXHRcXHRlbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpO1xcbiBcXHRcXHR9XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJQRl9PUiB8IEJQRl9GRVRDSDpcXG4gXFx0XFx0aWYgKGlzZHcpIHtcXG4tXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW1vcmQsIHNyYywgdDEsIHQzKTtcXG4rXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW1vcmRiZCwgc3JjLCB0MSwgdDMpO1xcbiBcXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRlbWl0X2luc24oY3R4LCBhbW9ydywgc3JjLCB0MSwgdDMpO1xcbitcXHRcXHRcXHRlbWl0X2luc24oY3R4LCBhbW9yZGJ3LCBzcmMsIHQxLCB0Myk7XFxuIFxcdFxcdFxcdGVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7XFxuIFxcdFxcdH1cXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQlBGX1hPUiB8IEJQRl9GRVRDSDpcXG4gXFx0XFx0aWYgKGlzZHcpIHtcXG4tXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW14b3JkLCBzcmMsIHQxLCB0Myk7XFxuK1xcdFxcdFxcdGVtaXRfaW5zbihjdHgsIGFteG9yZGJkLCBzcmMsIHQxLCB0Myk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdGVtaXRfaW5zbihjdHgsIGFteG9ydywgc3JjLCB0MSwgdDMpO1xcbitcXHRcXHRcXHRlbWl0X2luc24oY3R4LCBhbXhvcmRidywgc3JjLCB0MSwgdDMpO1xcbiBcXHRcXHRcXHRlbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpO1xcbiBcXHRcXHR9XFxuIFxcdFxcdGJyZWFrO1xcbkBAIC00NzAsNyArNDczLDcgQEAgc3RhdGljIGludCBlbWl0X2F0b21pY19ybXcoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxcbiBcXHRcXHRcXHRcXHRwcl9lcnJfb25jZShcXFwiYnBmLWppdDogYW1zd2FwLmIgaW5zdHJ1Y3Rpb24gaXMgbm90IHN1cHBvcnRlZFxcXFxuXFxcIik7XFxuIFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRcXHRcXHR9XFxuLVxcdFxcdFxcdGVtaXRfaW5zbihjdHgsIGFtc3dhcGIsIHNyYywgdDEsIHQzKTtcXG4rXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW1zd2FwZGJiLCBzcmMsIHQxLCB0Myk7XFxuIFxcdFxcdFxcdGVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIEJQRl9IOlxcbkBAIC00NzgsMTUgKzQ4MSwxNSBAQCBzdGF0aWMgaW50IGVtaXRfYXRvbWljX3Jtdyhjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgpXFxuIFxcdFxcdFxcdFxcdHByX2Vycl9vbmNlKFxcXCJicGYtaml0OiBhbXN3YXAuaCBpbnN0cnVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkXFxcXG5cXFwiKTtcXG4gXFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdFxcdFxcdH1cXG4tXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW1zd2FwaCwgc3JjLCB0MSwgdDMpO1xcbitcXHRcXHRcXHRlbWl0X2luc24oY3R4LCBhbXN3YXBkYmgsIHNyYywgdDEsIHQzKTtcXG4gXFx0XFx0XFx0ZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgQlBGX1c6XFxuLVxcdFxcdFxcdGVtaXRfaW5zbihjdHgsIGFtc3dhcHcsIHNyYywgdDEsIHQzKTtcXG4rXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW1zd2FwZGJ3LCBzcmMsIHQxLCB0Myk7XFxuIFxcdFxcdFxcdGVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIEJQRl9EVzpcXG4tXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW1zd2FwZCwgc3JjLCB0MSwgdDMpO1xcbitcXHRcXHRcXHRlbWl0X2luc24oY3R4LCBhbXN3YXBkYmQsIHNyYywgdDEsIHQzKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdH1cXG4gXFx0XFx0YnJlYWs7XFxuQEAgLTUwOSw2ICs1MTIsNyBAQCBzdGF0aWMgaW50IGVtaXRfYXRvbWljX3Jtdyhjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgpXFxuIFxcdFxcdFxcdGVtaXRfaW5zbihjdHgsIGJlcSwgdDMsIExPT05HQVJDSF9HUFJfWkVSTywgLTYpO1xcbiBcXHRcXHRcXHRlbWl0X3pleHRfMzIoY3R4LCByMCwgdHJ1ZSk7XFxuIFxcdFxcdH1cXG4rXFx0XFx0ZW1pdF9pbnNuKGN0eCwgZGJhciwgREJBUl9MTFNDX01CKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdHByX2Vycl9vbmNlKFxcXCJicGYtaml0OiBpbnZhbGlkIGF0b21pYyByZWFkLW1vZGlmeS13cml0ZSBvcGNvZGUgJTAyeFxcXFxuXFxcIiwgaW1tKTtcXG5AQCAtMjM2Miw2ICsyMzY2LDExIEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c19mc2Vzc2lvbih2b2lkKVxcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbiBcXG4rYm9vbCBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnKHZvaWQpXFxuK3tcXG4rXFx0cmV0dXJuIHRydWU7XFxuK31cXG4rXFxuIC8qIEluZGljYXRlIHRoZSBKSVQgYmFja2VuZCBzdXBwb3J0cyBtaXhpbmcgYnBmMmJwZiBhbmQgdGFpbGNhbGxzLiAqL1xcbiBib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZClcXG4ge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcXG5pbmRleCA2ZWY2ODcyYWRiYzNlMS4uZWE0YzIyZTIwZjNjODAgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXFxuQEAgLTg2Niw2ICs4NjYsNyBAQCAkKE9VVFBVVCkvYmVuY2hfaHRhYl9tZW0ubzogJChPVVRQVVQpL2h0YWJfbWVtX2JlbmNoLnNrZWwuaFxcbiAkKE9VVFBVVCkvYmVuY2hfYnBmX2NyeXB0by5vOiAkKE9VVFBVVCkvY3J5cHRvX2JlbmNoLnNrZWwuaFxcbiAkKE9VVFBVVCkvYmVuY2hfc29ja21hcC5vOiAkKE9VVFBVVCkvYmVuY2hfc29ja21hcF9wcm9nLnNrZWwuaFxcbiAkKE9VVFBVVCkvYmVuY2hfbHBtX3RyaWVfbWFwLm86ICQoT1VUUFVUKS9scG1fdHJpZV9iZW5jaC5za2VsLmggJChPVVRQVVQpL2xwbV90cmllX21hcC5za2VsLmhcXG4rJChPVVRQVVQpL2JlbmNoX2twdHJfeGNoZy5vOiAkKE9VVFBVVCkva3B0cl94Y2hnX2JlbmNoLnNrZWwuaFxcbiAkKE9VVFBVVCkvYmVuY2gubzogYmVuY2guaCB0ZXN0aW5nX2hlbHBlcnMuaCAkKEJQRk9CSilcXG4gJChPVVRQVVQpL2JlbmNoOiBMRExJQlMgKz0gLWxtXFxuICQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXFxcXFxcbkBAIC04ODgsNiArODg5LDcgQEAgJChPVVRQVVQpL2JlbmNoOiAkKE9VVFBVVCkvYmVuY2gubyBcXFxcXFxuIFxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2NyeXB0by5vIFxcXFxcXG4gXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9zb2NrbWFwLm8gXFxcXFxcbiBcXHRcXHQgJChPVVRQVVQpL2JlbmNoX2xwbV90cmllX21hcC5vIFxcXFxcXG4rXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9rcHRyX3hjaGcubyBcXFxcXFxuIFxcdFxcdCAkKE9VVFBVVCkvdXNkdF8xLm8gXFxcXFxcbiBcXHRcXHQgJChPVVRQVVQpL3VzZHRfMi5vIFxcXFxcXG4gXFx0XFx0ICNcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNoLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guY1xcbmluZGV4IDAyOWIzZTIxZjQzODQ2Li4yYjZkZDhhZWMyODJmMiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaC5jXFxuQEAgLTU3NSw2ICs1NzUsNyBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2xwbV90cmllX2luc2VydDtcXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9scG1fdHJpZV91cGRhdGU7XFxuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfZGVsZXRlO1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2xwbV90cmllX2ZyZWU7XFxuK2V4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfa3B0cl94Y2hnO1xcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBiZW5jaCAqYmVuY2hzW10gPSB7XFxuIFxcdFxcdTAwMjZiZW5jaF9jb3VudF9nbG9iYWwsXFxuQEAgLTY1Myw2ICs2NTQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJlbmNoICpiZW5jaHNbXSA9IHtcXG4gXFx0XFx1MDAyNmJlbmNoX2xwbV90cmllX3VwZGF0ZSxcXG4gXFx0XFx1MDAyNmJlbmNoX2xwbV90cmllX2RlbGV0ZSxcXG4gXFx0XFx1MDAyNmJlbmNoX2xwbV90cmllX2ZyZWUsXFxuK1xcdFxcdTAwMjZiZW5jaF9rcHRyX3hjaGcsXFxuIH07XFxuIFxcbiBzdGF0aWMgdm9pZCBmaW5kX2JlbmNobWFyayh2b2lkKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2twdHJfeGNoZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9rcHRyX3hjaGcuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmI4YTBkMzQ2ZmRhNjg4XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfa3B0cl94Y2hnLmNcXG5AQCAtMCwwICsxLDk2IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKy8qIENvcHlyaWdodCAoQykgMjAyNi4gTG9vbmdzb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiBMaW1pdGVkICovXFxuKyNpbmNsdWRlIFxcdTAwM2NhcmdwLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcXCJiZW5jaC5oXFxcIlxcbisjaW5jbHVkZSBcXFwia3B0cl94Y2hnX2JlbmNoLnNrZWwuaFxcXCJcXG4rXFxuK3N0YXRpYyBzdHJ1Y3QgY3R4IHtcXG4rXFx0c3RydWN0IGtwdHJfeGNoZ19iZW5jaCAqc2tlbDtcXG4rfSBjdHg7XFxuK1xcbitzdGF0aWMgc3RydWN0IHtcXG4rXFx0X191MzIgbnJfbG9vcHM7XFxuK30gYXJncyA9IHtcXG4rXFx0Lm5yX2xvb3BzID0gMjU2LFxcbit9O1xcbitcXG4rZW51bSB7XFxuK1xcdEFSR19OUl9MT09QUyA9IDcwMDAsXFxuK307XFxuK1xcbitzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdHNbXSA9IHtcXG4rXFx0eyBcXFwibnJfbG9vcHNcXFwiLCBBUkdfTlJfTE9PUFMsIFxcXCJucl9sb29wc1xcXCIsIDAsXFxuK1xcdCAgXFxcIlNldCBudW1iZXIgb2YgYnBmX2twdHJfeGNoZygpIGNhbGxzIHBlciB0cmlnZ2VyXFxcIn0sXFxuK1xcdHt9LFxcbit9O1xcbitcXG4rc3RhdGljIGVycm9yX3QgcGFyc2VfYXJnKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKVxcbit7XFxuK1xcdHN3aXRjaCAoa2V5KSB7XFxuK1xcdGNhc2UgQVJHX05SX0xPT1BTOlxcbitcXHRcXHRhcmdzLm5yX2xvb3BzID0gc3RydG9sKGFyZywgTlVMTCwgMTApO1xcbitcXHRcXHRicmVhaztcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIEFSR1BfRVJSX1VOS05PV047XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3AgYmVuY2hfa3B0cl94Y2hnX2FyZ3AgPSB7XFxuK1xcdC5vcHRpb25zID0gb3B0cyxcXG4rXFx0LnBhcnNlciA9IHBhcnNlX2FyZyxcXG4rfTtcXG4rXFxuK3N0YXRpYyB2b2lkIHZhbGlkYXRlKHZvaWQpXFxuK3tcXG4rXFx0aWYgKGVudi5jb25zdW1lcl9jbnQgIT0gMCkge1xcbitcXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcImJlbmNobWFyayBkb2Vzbid0IHN1cHBvcnQgY29uc3VtZXIhXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZXhpdCgxKTtcXG4rXFx0fVxcbit9XFxuK1xcbitzdGF0aWMgdm9pZCAqcHJvZHVjZXIodm9pZCAqaW5wdXQpXFxuK3tcXG4rXFx0d2hpbGUgKHRydWUpXFxuK1xcdFxcdHN5c2NhbGwoX19OUl9nZXRwZ2lkKTtcXG4rXFxuK1xcdHJldHVybiBOVUxMO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBtZWFzdXJlKHN0cnVjdCBiZW5jaF9yZXMgKnJlcylcXG4re1xcbitcXHRyZXMtXFx1MDAzZWhpdHMgPSBhdG9taWNfc3dhcChcXHUwMDI2Y3R4LnNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlaGl0cywgMCk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHNldHVwKHZvaWQpXFxuK3tcXG4rXFx0c3RydWN0IGJwZl9saW5rICpsaW5rO1xcbitcXG4rXFx0c2V0dXBfbGliYnBmKCk7XFxuK1xcbitcXHRjdHguc2tlbCA9IGtwdHJfeGNoZ19iZW5jaF9fb3Blbl9hbmRfbG9hZCgpO1xcbitcXHRpZiAoIWN0eC5za2VsKSB7XFxuK1xcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiZmFpbGVkIHRvIG9wZW4gc2tlbGV0b25cXFxcblxcXCIpO1xcbitcXHRcXHRleGl0KDEpO1xcbitcXHR9XFxuK1xcbitcXHRjdHguc2tlbC1cXHUwMDNlZGF0YS1cXHUwMDNlbnJfbG9vcHMgPSBhcmdzLm5yX2xvb3BzO1xcbitcXG4rXFx0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2goY3R4LnNrZWwtXFx1MDAzZXByb2dzLmJlbmNobWFyayk7XFxuK1xcdGlmICghbGluaykge1xcbitcXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcImZhaWxlZCB0byBhdHRhY2ggcHJvZ3JhbSFcXFxcblxcXCIpO1xcbitcXHRcXHRleGl0KDEpO1xcbitcXHR9XFxuK31cXG4rXFxuK2NvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9rcHRyX3hjaGcgPSB7XFxuK1xcdC5uYW1lID0gXFxcImtwdHIteGNoZ1xcXCIsXFxuK1xcdC5hcmdwID0gXFx1MDAyNmJlbmNoX2twdHJfeGNoZ19hcmdwLFxcbitcXHQudmFsaWRhdGUgPSB2YWxpZGF0ZSxcXG4rXFx0LnNldHVwID0gc2V0dXAsXFxuK1xcdC5wcm9kdWNlcl90aHJlYWQgPSBwcm9kdWNlcixcXG4rXFx0Lm1lYXN1cmUgPSBtZWFzdXJlLFxcbitcXHQucmVwb3J0X3Byb2dyZXNzID0gb3BzX3JlcG9ydF9wcm9ncmVzcyxcXG4rXFx0LnJlcG9ydF9maW5hbCA9IG9wc19yZXBvcnRfZmluYWwsXFxuK307XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twdHJfeGNoZ19pbmxpbmUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twdHJfeGNoZ19pbmxpbmUuY1xcbmluZGV4IDdkZWYxNThkYTllYjcxLi44ZjdiNTg3Mjc0MTZjOCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHRyX3hjaGdfaW5saW5lLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHRyX3hjaGdfaW5saW5lLmNcXG5AQCAtMTQsNyArMTQsOCBAQCB2b2lkIHRlc3Rfa3B0cl94Y2hnX2lubGluZSh2b2lkKVxcbiBcXHRpbnQgZXJyO1xcbiBcXG4gI2lmICEoZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBcXFxcXFxuLSAgICAgIChkZWZpbmVkKF9fcmlzY3YpIFxcdTAwMjZcXHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpXFxuKyAgICAgIChkZWZpbmVkKF9fcmlzY3YpIFxcdTAwMjZcXHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkgfHwgXFxcXFxcbisgICAgICAoZGVmaW5lZChfX2xvb25nYXJjaF9fKSBcXHUwMDI2XFx1MDAyNiBfX2xvb25nYXJjaF9ncmxlbiA9PSA2NCkpXFxuIFxcdHRlc3RfX3NraXAoKTtcXG4gXFx0cmV0dXJuO1xcbiAjZW5kaWZcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2twdHJfeGNoZ19iZW5jaC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2twdHJfeGNoZ19iZW5jaC5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMzYzODgzMDczZTJjMGVcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2twdHJfeGNoZ19iZW5jaC5jXFxuQEAgLTAsMCArMSw0OSBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisvKiBDb3B5cmlnaHQgKEMpIDIwMjYuIExvb25nc29uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24gTGltaXRlZCAqL1xcbisjaW5jbHVkZSBcXFwidm1saW51eC5oXFxcIlxcbisjaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcXHUwMDNlXFxuK1xcbisjaW5jbHVkZSBcXFwiYnBmX2V4cGVyaW1lbnRhbC5oXFxcIlxcbisjaW5jbHVkZSBcXFwiYnBmX21pc2MuaFxcXCJcXG4rXFxuK2NoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcbitcXG4rI2RlZmluZSBNQVhfWENIR19MT09QUyA0MDk2XFxuK1xcbitzdHJ1Y3QgYmluX2RhdGEge1xcbitcXHRjaGFyIGJsb2JbMzJdO1xcbit9O1xcbitcXG4rI2RlZmluZSBwcml2YXRlKG5hbWUpIFNFQyhcXFwiLmJzcy5cXFwiICNuYW1lKSBfX2hpZGRlbiBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSlcXG4rXFxuK3ByaXZhdGUoa3B0cikgc3RydWN0IGJpbl9kYXRhIF9fa3B0ciAqcHRyO1xcbit1MzIgbnJfbG9vcHMgPSAyNTY7XFxuK2xvbmcgaGl0cztcXG4rXFxuK1NFQyhcXFwiZmVudHJ5L1xcXCIgU1lTX1BSRUZJWCBcXFwic3lzX2dldHBnaWRcXFwiKVxcbitpbnQgYmVuY2htYXJrKHZvaWQgKmN0eClcXG4re1xcbitcXHRzdHJ1Y3QgYmluX2RhdGEgKm9sZDtcXG4rXFx0dTMyIGk7XFxuK1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUFYX1hDSEdfTE9PUFM7IGkrKykge1xcbitcXHRcXHRpZiAoaSBcXHUwMDNlPSBucl9sb29wcylcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcbitcXHRcXHRvbGQgPSBicGZfa3B0cl94Y2hnKFxcdTAwMjZwdHIsIE5VTEwpO1xcbitcXHRcXHRpZiAob2xkKVxcbitcXHRcXHRcXHRicGZfb2JqX2Ryb3Aob2xkKTtcXG4rXFx0fVxcbitcXG4rXFx0X19zeW5jX2FkZF9hbmRfZmV0Y2goXFx1MDAyNmhpdHMsIGkpO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rLypcXG4rICogQlRGIEZVTkMgcmVjb3JkcyBhcmUgbm90IGdlbmVyYXRlZCBmb3Iga2Z1bmNzIHJlZmVyZW5jZWQgb25seSB0aHJvdWdoXFxuKyAqIG9wdGltaXplZCBwYXRocy4gS2VlcCBicGZfb2JqX2Ryb3AoKSB2aXNpYmxlIHRvIGxpYmJwZidzIGtmdW5jIGxpbmtlci5cXG4rICovXFxuK3ZvaWQgX19idGZfcm9vdCh2b2lkKVxcbit7XFxuK1xcdGJwZl9vYmpfZHJvcChOVUxMKTtcXG4rfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzozOTowMC44NTQxMjkzNjhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTg4ODk3NjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlbWl0X2F0b21pY19ybXdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlciB0byB1c2UgbmV3IGF0b21pYyBpbnN0cnVjdGlvbnMgKGUuZy4sIGFtYWRkZGJiLCBhbXN3YXBkYmIpIGZvciBCUEYgYXRvbWljIG9wZXJhdGlvbnMgYW5kIGVuYWJsZXMgYnBmX2ppdF9zdXBwb3J0c19wdHJfeGNoZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIEJQRiBKSVQgbG9naWMgb24gTG9vbmdBcmNoLCB3aGljaCBjYW4gYmUgZnV6emVkIGJ5IGxvYWRpbmcgYW5kIGV4ZWN1dGluZyBCUEYgcHJvZ3JhbXMgd2l0aCBhdG9taWMgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxZDVhZDY3N2MyMGU3ODkzZTJhMTJmZmZkMjc0OWVjNGUwNzYxMTRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjIgMDc6Mzg6NTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcbmluZGV4IDc2YjcyMzU5MDAyM2Q3Li5iZGJjMTdkMDcxMTA1ZSAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXG5AQCAtMTk5LDYgKzE5OSwxMCBAQCBlbnVtIHJlZzNfb3Age1xuIFx0YW1zd2FwaF9vcFx0PSAweDcwYjksXG4gXHRhbWFkZGJfb3BcdD0gMHg3MGJhLFxuIFx0YW1hZGRoX29wXHQ9IDB4NzBiYixcbitcdGFtc3dhcGRiYl9vcFx0PSAweDcwYmMsXG4rXHRhbXN3YXBkYmhfb3BcdD0gMHg3MGJkLFxuK1x0YW1hZGRkYmJfb3BcdD0gMHg3MGJlLFxuK1x0YW1hZGRkYmhfb3BcdD0gMHg3MGJmLFxuIFx0YW1zd2Fwd19vcFx0PSAweDcwYzAsXG4gXHRhbXN3YXBkX29wXHQ9IDB4NzBjMSxcbiBcdGFtYWRkd19vcFx0PSAweDcwYzIsXG5AQCAtNzgzLDYgKzc4NywyMCBAQCBERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBiLCBhbXN3YXBiX29wKVxuIERFRl9FTUlUX1JFRzNfRk9STUFUKGFtc3dhcGgsIGFtc3dhcGhfb3ApXG4gREVGX0VNSVRfUkVHM19GT1JNQVQoYW1zd2FwdywgYW1zd2Fwd19vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBkLCBhbXN3YXBkX29wKVxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtc3dhcGRiYiwgYW1zd2FwZGJiX29wKVxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtc3dhcGRiaCwgYW1zd2FwZGJoX29wKVxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtYWRkZGJiLCBhbWFkZGRiYl9vcClcbitERUZfRU1JVF9SRUczX0ZPUk1BVChhbWFkZGRiaCwgYW1hZGRkYmhfb3ApXG4rREVGX0VNSVRfUkVHM19GT1JNQVQoYW1hZGRkYncsIGFtYWRkZGJ3X29wKVxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtYWRkZGJkLCBhbWFkZGRiZF9vcClcbitERUZfRU1JVF9SRUczX0ZPUk1BVChhbWFuZGRidywgYW1hbmRkYndfb3ApXG4rREVGX0VNSVRfUkVHM19GT1JNQVQoYW1hbmRkYmQsIGFtYW5kZGJkX29wKVxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtb3JkYncsIGFtb3JkYndfb3ApXG4rREVGX0VNSVRfUkVHM19GT1JNQVQoYW1vcmRiZCwgYW1vcmRiZF9vcClcbitERUZfRU1JVF9SRUczX0ZPUk1BVChhbXhvcmRidywgYW14b3JkYndfb3ApXG4rREVGX0VNSVRfUkVHM19GT1JNQVQoYW14b3JkYmQsIGFteG9yZGJkX29wKVxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtc3dhcGRidywgYW1zd2FwZGJ3X29wKVxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtc3dhcGRiZCwgYW1zd2FwZGJkX29wKVxuIFxuICNkZWZpbmUgREVGX0VNSVRfUkVHM1NBMl9GT1JNQVQoTkFNRSwgT1ApXHRcdFx0XHRcXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0XyMjTkFNRSh1bmlvbiBsb29uZ2FyY2hfaW5zdHJ1Y3Rpb24gKmluc24sXHRcXFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXG5pbmRleCAyNDkxM2RjN2Y0ZTgzNS4uZmZmZjUyMWIzYzgwODggMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXG4rKysgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXG5AQCAtNyw2ICs3LDkgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZW1vcnkuaFx1MDAzZVxuICNpbmNsdWRlIFwiYnBmX2ppdC5oXCJcbiBcbisvKiBkYmFyIGhpbnQgZm9yIGxsL3NjIGNvbXBsZXRpb24gb3JkZXJpbmcsIHNlZSBfX1dFQUtfTExTQ19NQiAqL1xuKyNkZWZpbmUgREJBUl9MTFNDX01CXHQweDcwMFxuK1xuICNkZWZpbmUgTE9PTkdBUkNIX01BWF9SRUdfQVJHUyA4XG4gXG4gI2RlZmluZSBMT09OR0FSQ0hfTE9OR19KVU1QX05JTlNOUyA1XG5AQCAtNDE4LDcgKzQyMSw3IEBAIHN0YXRpYyBpbnQgZW1pdF9hdG9taWNfcm13KGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eClcbiBcdFx0XHRcdHByX2Vycl9vbmNlKFwiYnBmLWppdDogYW1hZGQuYiBpbnN0cnVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkXFxuXCIpO1xuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0fVxuLVx0XHRcdGVtaXRfaW5zbihjdHgsIGFtYWRkYiwgc3JjLCB0MSwgdDMpO1xuK1x0XHRcdGVtaXRfaW5zbihjdHgsIGFtYWRkZGJiLCBzcmMsIHQxLCB0Myk7XG4gXHRcdFx0ZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBCUEZfSDpcbkBAIC00MjYsMzkgKzQyOSwzOSBAQCBzdGF0aWMgaW50IGVtaXRfYXRvbWljX3Jtdyhjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgpXG4gXHRcdFx0XHRwcl9lcnJfb25jZShcImJwZi1qaXQ6IGFtYWRkLmggaW5zdHJ1Y3Rpb24gaXMgbm90IHN1cHBvcnRlZFxcblwiKTtcbiBcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdH1cbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbWFkZGgsIHNyYywgdDEsIHQzKTtcbitcdFx0XHRlbWl0X2luc24oY3R4LCBhbWFkZGRiaCwgc3JjLCB0MSwgdDMpO1xuIFx0XHRcdGVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgQlBGX1c6XG4tXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1hZGR3LCBzcmMsIHQxLCB0Myk7XG4rXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1hZGRkYncsIHNyYywgdDEsIHQzKTtcbiBcdFx0XHRlbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIEJQRl9EVzpcbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbWFkZGQsIHNyYywgdDEsIHQzKTtcbitcdFx0XHRlbWl0X2luc24oY3R4LCBhbWFkZGRiZCwgc3JjLCB0MSwgdDMpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfQU5EIHwgQlBGX0ZFVENIOlxuIFx0XHRpZiAoaXNkdykge1xuLVx0XHRcdGVtaXRfaW5zbihjdHgsIGFtYW5kZCwgc3JjLCB0MSwgdDMpO1xuK1x0XHRcdGVtaXRfaW5zbihjdHgsIGFtYW5kZGJkLCBzcmMsIHQxLCB0Myk7XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1hbmR3LCBzcmMsIHQxLCB0Myk7XG4rXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1hbmRkYncsIHNyYywgdDEsIHQzKTtcbiBcdFx0XHRlbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpO1xuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfT1IgfCBCUEZfRkVUQ0g6XG4gXHRcdGlmIChpc2R3KSB7XG4tXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1vcmQsIHNyYywgdDEsIHQzKTtcbitcdFx0XHRlbWl0X2luc24oY3R4LCBhbW9yZGJkLCBzcmMsIHQxLCB0Myk7XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1vcncsIHNyYywgdDEsIHQzKTtcbitcdFx0XHRlbWl0X2luc24oY3R4LCBhbW9yZGJ3LCBzcmMsIHQxLCB0Myk7XG4gXHRcdFx0ZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTtcbiBcdFx0fVxuIFx0XHRicmVhaztcbiBcdGNhc2UgQlBGX1hPUiB8IEJQRl9GRVRDSDpcbiBcdFx0aWYgKGlzZHcpIHtcbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbXhvcmQsIHNyYywgdDEsIHQzKTtcbitcdFx0XHRlbWl0X2luc24oY3R4LCBhbXhvcmRiZCwgc3JjLCB0MSwgdDMpO1xuIFx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXRfaW5zbihjdHgsIGFteG9ydywgc3JjLCB0MSwgdDMpO1xuK1x0XHRcdGVtaXRfaW5zbihjdHgsIGFteG9yZGJ3LCBzcmMsIHQxLCB0Myk7XG4gXHRcdFx0ZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTtcbiBcdFx0fVxuIFx0XHRicmVhaztcbkBAIC00NzAsNyArNDczLDcgQEAgc3RhdGljIGludCBlbWl0X2F0b21pY19ybXcoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxuIFx0XHRcdFx0cHJfZXJyX29uY2UoXCJicGYtaml0OiBhbXN3YXAuYiBpbnN0cnVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkXFxuXCIpO1xuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0fVxuLVx0XHRcdGVtaXRfaW5zbihjdHgsIGFtc3dhcGIsIHNyYywgdDEsIHQzKTtcbitcdFx0XHRlbWl0X2luc24oY3R4LCBhbXN3YXBkYmIsIHNyYywgdDEsIHQzKTtcbiBcdFx0XHRlbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIEJQRl9IOlxuQEAgLTQ3OCwxNSArNDgxLDE1IEBAIHN0YXRpYyBpbnQgZW1pdF9hdG9taWNfcm13KGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eClcbiBcdFx0XHRcdHByX2Vycl9vbmNlKFwiYnBmLWppdDogYW1zd2FwLmggaW5zdHJ1Y3Rpb24gaXMgbm90IHN1cHBvcnRlZFxcblwiKTtcbiBcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdH1cbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbXN3YXBoLCBzcmMsIHQxLCB0Myk7XG4rXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1zd2FwZGJoLCBzcmMsIHQxLCB0Myk7XG4gXHRcdFx0ZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBCUEZfVzpcbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbXN3YXB3LCBzcmMsIHQxLCB0Myk7XG4rXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1zd2FwZGJ3LCBzcmMsIHQxLCB0Myk7XG4gXHRcdFx0ZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBCUEZfRFc6XG4tXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1zd2FwZCwgc3JjLCB0MSwgdDMpO1xuK1x0XHRcdGVtaXRfaW5zbihjdHgsIGFtc3dhcGRiZCwgc3JjLCB0MSwgdDMpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4gXHRcdGJyZWFrO1xuQEAgLTUwOSw2ICs1MTIsNyBAQCBzdGF0aWMgaW50IGVtaXRfYXRvbWljX3Jtdyhjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgpXG4gXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYmVxLCB0MywgTE9PTkdBUkNIX0dQUl9aRVJPLCAtNik7XG4gXHRcdFx0ZW1pdF96ZXh0XzMyKGN0eCwgcjAsIHRydWUpO1xuIFx0XHR9XG4rXHRcdGVtaXRfaW5zbihjdHgsIGRiYXIsIERCQVJfTExTQ19NQik7XG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiBcdFx0cHJfZXJyX29uY2UoXCJicGYtaml0OiBpbnZhbGlkIGF0b21pYyByZWFkLW1vZGlmeS13cml0ZSBvcGNvZGUgJTAyeFxcblwiLCBpbW0pO1xuQEAgLTIzNjIsNiArMjM2NiwxMSBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfZnNlc3Npb24odm9pZClcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbitib29sIGJwZl9qaXRfc3VwcG9ydHNfcHRyX3hjaGcodm9pZClcbit7XG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4rXG4gLyogSW5kaWNhdGUgdGhlIEpJVCBiYWNrZW5kIHN1cHBvcnRzIG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHMuICovXG4gYm9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpXG4ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZVxuaW5kZXggNmVmNjg3MmFkYmMzZTEuLmVhNGMyMmUyMGYzYzgwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbkBAIC04NjYsNiArODY2LDcgQEAgJChPVVRQVVQpL2JlbmNoX2h0YWJfbWVtLm86ICQoT1VUUFVUKS9odGFiX21lbV9iZW5jaC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfYnBmX2NyeXB0by5vOiAkKE9VVFBVVCkvY3J5cHRvX2JlbmNoLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF9zb2NrbWFwLm86ICQoT1VUUFVUKS9iZW5jaF9zb2NrbWFwX3Byb2cuc2tlbC5oXG4gJChPVVRQVVQpL2JlbmNoX2xwbV90cmllX21hcC5vOiAkKE9VVFBVVCkvbHBtX3RyaWVfYmVuY2guc2tlbC5oICQoT1VUUFVUKS9scG1fdHJpZV9tYXAuc2tlbC5oXG4rJChPVVRQVVQpL2JlbmNoX2twdHJfeGNoZy5vOiAkKE9VVFBVVCkva3B0cl94Y2hnX2JlbmNoLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaC5vOiBiZW5jaC5oIHRlc3RpbmdfaGVscGVycy5oICQoQlBGT0JKKVxuICQoT1VUUFVUKS9iZW5jaDogTERMSUJTICs9IC1sbVxuICQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXFxcbkBAIC04ODgsNiArODg5LDcgQEAgJChPVVRQVVQpL2JlbmNoOiAkKE9VVFBVVCkvYmVuY2gubyBcXFxuIFx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9jcnlwdG8ubyBcXFxuIFx0XHQgJChPVVRQVVQpL2JlbmNoX3NvY2ttYXAubyBcXFxuIFx0XHQgJChPVVRQVVQpL2JlbmNoX2xwbV90cmllX21hcC5vIFxcXG4rXHRcdCAkKE9VVFBVVCkvYmVuY2hfa3B0cl94Y2hnLm8gXFxcbiBcdFx0ICQoT1VUUFVUKS91c2R0XzEubyBcXFxuIFx0XHQgJChPVVRQVVQpL3VzZHRfMi5vIFxcXG4gXHRcdCAjXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNoLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guY1xuaW5kZXggMDI5YjNlMjFmNDM4NDYuLjJiNmRkOGFlYzI4MmYyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNoLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaC5jXG5AQCAtNTc1LDYgKzU3NSw3IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfaW5zZXJ0O1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfdXBkYXRlO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfZGVsZXRlO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfZnJlZTtcbitleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2twdHJfeGNoZztcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGJlbmNoICpiZW5jaHNbXSA9IHtcbiBcdFx1MDAyNmJlbmNoX2NvdW50X2dsb2JhbCxcbkBAIC02NTMsNiArNjU0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBiZW5jaCAqYmVuY2hzW10gPSB7XG4gXHRcdTAwMjZiZW5jaF9scG1fdHJpZV91cGRhdGUsXG4gXHRcdTAwMjZiZW5jaF9scG1fdHJpZV9kZWxldGUsXG4gXHRcdTAwMjZiZW5jaF9scG1fdHJpZV9mcmVlLFxuK1x0XHUwMDI2YmVuY2hfa3B0cl94Y2hnLFxuIH07XG4gXG4gc3RhdGljIHZvaWQgZmluZF9iZW5jaG1hcmsodm9pZClcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2twdHJfeGNoZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9rcHRyX3hjaGcuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iOGEwZDM0NmZkYTY4OFxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9rcHRyX3hjaGcuY1xuQEAgLTAsMCArMSw5NiBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rLyogQ29weXJpZ2h0IChDKSAyMDI2LiBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWQgKi9cbisjaW5jbHVkZSBcdTAwM2NhcmdwLmhcdTAwM2VcbisjaW5jbHVkZSBcImJlbmNoLmhcIlxuKyNpbmNsdWRlIFwia3B0cl94Y2hnX2JlbmNoLnNrZWwuaFwiXG4rXG4rc3RhdGljIHN0cnVjdCBjdHgge1xuK1x0c3RydWN0IGtwdHJfeGNoZ19iZW5jaCAqc2tlbDtcbit9IGN0eDtcbitcbitzdGF0aWMgc3RydWN0IHtcbitcdF9fdTMyIG5yX2xvb3BzO1xuK30gYXJncyA9IHtcbitcdC5ucl9sb29wcyA9IDI1Nixcbit9O1xuK1xuK2VudW0ge1xuK1x0QVJHX05SX0xPT1BTID0gNzAwMCxcbit9O1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncF9vcHRpb24gb3B0c1tdID0ge1xuK1x0eyBcIm5yX2xvb3BzXCIsIEFSR19OUl9MT09QUywgXCJucl9sb29wc1wiLCAwLFxuK1x0ICBcIlNldCBudW1iZXIgb2YgYnBmX2twdHJfeGNoZygpIGNhbGxzIHBlciB0cmlnZ2VyXCJ9LFxuK1x0e30sXG4rfTtcbitcbitzdGF0aWMgZXJyb3JfdCBwYXJzZV9hcmcoaW50IGtleSwgY2hhciAqYXJnLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqc3RhdGUpXG4re1xuK1x0c3dpdGNoIChrZXkpIHtcbitcdGNhc2UgQVJHX05SX0xPT1BTOlxuK1x0XHRhcmdzLm5yX2xvb3BzID0gc3RydG9sKGFyZywgTlVMTCwgMTApO1xuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybiBBUkdQX0VSUl9VTktOT1dOO1xuK1x0fVxuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncCBiZW5jaF9rcHRyX3hjaGdfYXJncCA9IHtcbitcdC5vcHRpb25zID0gb3B0cyxcbitcdC5wYXJzZXIgPSBwYXJzZV9hcmcsXG4rfTtcbitcbitzdGF0aWMgdm9pZCB2YWxpZGF0ZSh2b2lkKVxuK3tcbitcdGlmIChlbnYuY29uc3VtZXJfY250ICE9IDApIHtcbitcdFx0ZnByaW50ZihzdGRlcnIsIFwiYmVuY2htYXJrIGRvZXNuJ3Qgc3VwcG9ydCBjb25zdW1lciFcXG5cIik7XG4rXHRcdGV4aXQoMSk7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyB2b2lkICpwcm9kdWNlcih2b2lkICppbnB1dClcbit7XG4rXHR3aGlsZSAodHJ1ZSlcbitcdFx0c3lzY2FsbChfX05SX2dldHBnaWQpO1xuK1xuK1x0cmV0dXJuIE5VTEw7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIG1lYXN1cmUoc3RydWN0IGJlbmNoX3JlcyAqcmVzKVxuK3tcbitcdHJlcy1cdTAwM2VoaXRzID0gYXRvbWljX3N3YXAoXHUwMDI2Y3R4LnNrZWwtXHUwMDNlYnNzLVx1MDAzZWhpdHMsIDApO1xuK31cbitcbitzdGF0aWMgdm9pZCBzZXR1cCh2b2lkKVxuK3tcbitcdHN0cnVjdCBicGZfbGluayAqbGluaztcbitcbitcdHNldHVwX2xpYmJwZigpO1xuK1xuK1x0Y3R4LnNrZWwgPSBrcHRyX3hjaGdfYmVuY2hfX29wZW5fYW5kX2xvYWQoKTtcbitcdGlmICghY3R4LnNrZWwpIHtcbitcdFx0ZnByaW50ZihzdGRlcnIsIFwiZmFpbGVkIHRvIG9wZW4gc2tlbGV0b25cXG5cIik7XG4rXHRcdGV4aXQoMSk7XG4rXHR9XG4rXG4rXHRjdHguc2tlbC1cdTAwM2VkYXRhLVx1MDAzZW5yX2xvb3BzID0gYXJncy5ucl9sb29wcztcbitcbitcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKGN0eC5za2VsLVx1MDAzZXByb2dzLmJlbmNobWFyayk7XG4rXHRpZiAoIWxpbmspIHtcbitcdFx0ZnByaW50ZihzdGRlcnIsIFwiZmFpbGVkIHRvIGF0dGFjaCBwcm9ncmFtIVxcblwiKTtcbitcdFx0ZXhpdCgxKTtcbitcdH1cbit9XG4rXG4rY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2twdHJfeGNoZyA9IHtcbitcdC5uYW1lID0gXCJrcHRyLXhjaGdcIixcbitcdC5hcmdwID0gXHUwMDI2YmVuY2hfa3B0cl94Y2hnX2FyZ3AsXG4rXHQudmFsaWRhdGUgPSB2YWxpZGF0ZSxcbitcdC5zZXR1cCA9IHNldHVwLFxuK1x0LnByb2R1Y2VyX3RocmVhZCA9IHByb2R1Y2VyLFxuK1x0Lm1lYXN1cmUgPSBtZWFzdXJlLFxuK1x0LnJlcG9ydF9wcm9ncmVzcyA9IG9wc19yZXBvcnRfcHJvZ3Jlc3MsXG4rXHQucmVwb3J0X2ZpbmFsID0gb3BzX3JlcG9ydF9maW5hbCxcbit9O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twdHJfeGNoZ19pbmxpbmUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twdHJfeGNoZ19pbmxpbmUuY1xuaW5kZXggN2RlZjE1OGRhOWViNzEuLjhmN2I1ODcyNzQxNmM4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3B0cl94Y2hnX2lubGluZS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHRyX3hjaGdfaW5saW5lLmNcbkBAIC0xNCw3ICsxNCw4IEBAIHZvaWQgdGVzdF9rcHRyX3hjaGdfaW5saW5lKHZvaWQpXG4gXHRpbnQgZXJyO1xuIFxuICNpZiAhKGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgXFxcbi0gICAgICAoZGVmaW5lZChfX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSlcbisgICAgICAoZGVmaW5lZChfX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSB8fCBcXFxuKyAgICAgIChkZWZpbmVkKF9fbG9vbmdhcmNoX18pIFx1MDAyNlx1MDAyNiBfX2xvb25nYXJjaF9ncmxlbiA9PSA2NCkpXG4gXHR0ZXN0X19za2lwKCk7XG4gXHRyZXR1cm47XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2twdHJfeGNoZ19iZW5jaC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2twdHJfeGNoZ19iZW5jaC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjM2Mzg4MzA3M2UyYzBlXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva3B0cl94Y2hnX2JlbmNoLmNcbkBAIC0wLDAgKzEsNDkgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKy8qIENvcHlyaWdodCAoQykgMjAyNi4gTG9vbmdzb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiBMaW1pdGVkICovXG4rI2luY2x1ZGUgXCJ2bWxpbnV4LmhcIlxuKyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4rXG4rI2luY2x1ZGUgXCJicGZfZXhwZXJpbWVudGFsLmhcIlxuKyNpbmNsdWRlIFwiYnBmX21pc2MuaFwiXG4rXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuK1xuKyNkZWZpbmUgTUFYX1hDSEdfTE9PUFMgNDA5NlxuK1xuK3N0cnVjdCBiaW5fZGF0YSB7XG4rXHRjaGFyIGJsb2JbMzJdO1xuK307XG4rXG4rI2RlZmluZSBwcml2YXRlKG5hbWUpIFNFQyhcIi5ic3MuXCIgI25hbWUpIF9faGlkZGVuIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKVxuK1xuK3ByaXZhdGUoa3B0cikgc3RydWN0IGJpbl9kYXRhIF9fa3B0ciAqcHRyO1xuK3UzMiBucl9sb29wcyA9IDI1Njtcbitsb25nIGhpdHM7XG4rXG4rU0VDKFwiZmVudHJ5L1wiIFNZU19QUkVGSVggXCJzeXNfZ2V0cGdpZFwiKVxuK2ludCBiZW5jaG1hcmsodm9pZCAqY3R4KVxuK3tcbitcdHN0cnVjdCBiaW5fZGF0YSAqb2xkO1xuK1x0dTMyIGk7XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhfWENIR19MT09QUzsgaSsrKSB7XG4rXHRcdGlmIChpIFx1MDAzZT0gbnJfbG9vcHMpXG4rXHRcdFx0YnJlYWs7XG4rXG4rXHRcdG9sZCA9IGJwZl9rcHRyX3hjaGcoXHUwMDI2cHRyLCBOVUxMKTtcbitcdFx0aWYgKG9sZClcbitcdFx0XHRicGZfb2JqX2Ryb3Aob2xkKTtcbitcdH1cbitcbitcdF9fc3luY19hZGRfYW5kX2ZldGNoKFx1MDAyNmhpdHMsIGkpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuKy8qXG4rICogQlRGIEZVTkMgcmVjb3JkcyBhcmUgbm90IGdlbmVyYXRlZCBmb3Iga2Z1bmNzIHJlZmVyZW5jZWQgb25seSB0aHJvdWdoXG4rICogb3B0aW1pemVkIHBhdGhzLiBLZWVwIGJwZl9vYmpfZHJvcCgpIHZpc2libGUgdG8gbGliYnBmJ3Mga2Z1bmMgbGlua2VyLlxuKyAqL1xuK3ZvaWQgX19idGZfcm9vdCh2b2lkKVxuK3tcbitcdGJwZl9vYmpfZHJvcChOVUxMKTtcbit9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzozOTowMC44NTQxMzA3OThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MzE4NTA1MjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIExvb25nQXJjaCBCUEYgSklUOiBBIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyB3ZSBoYXZlIGEgcGF0Y2ggc2VyaWVzIGhlcmUsIGFuZCBpdCdzIHRvdWNoaW5nIGBhcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhgLCBgYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY2AsIGFuZCBzb21lIEJQRiBzZWxmdGVzdHMuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgYWRkaW5nIG5ldyBMb29uZ0FyY2ggaW5zdHJ1Y3Rpb25zIGZvciBhdG9taWMgb3BlcmF0aW9ucyDigJMgYGFtc3dhcGRiYl9vcGAsIGBhbWFkZGRiYl9vcGAsIGFuZCBzbyBvbiDigJMgYW5kIHRoZW4gKnVzaW5nKiB0aG9zZSBpbnN0cnVjdGlvbnMgd2l0aGluIHRoZSBCUEYgSklUIGNvbXBpbGVyIHNwZWNpZmljYWxseSBmb3IgdGhlIExvb25nQXJjaCBhcmNoaXRlY3R1cmUuIFRoaXMgYWxzbyBpbnZvbHZlcyBlbmFibGluZyBgYnBmX2ppdF9zdXBwb3J0c19wdHJfeGNoZ2AgZm9yIExvb25nQXJjaC4gVGhlIHdob2xlIHRoaW5nIGlzIGNsZWFybHkgTG9vbmdBcmNoLXNwZWNpZmljLCBzbyB0aGF0J3MgdGhlIHNjb3BlLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IElzIHRoaXMgd29ydGggZnV6emluZz8gQW5kIHRoZSBhbnN3ZXIgaXMgbGlrZWx5IHllcy4gVGhpcyBpcyBtb2RpZnlpbmcgdGhlIEJQRiBKSVQgY29tcGlsZXIsIHdoaWNoIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0J3MgcmVhY2hhYmxlIGlmIHdlJ3JlIHJ1bm5pbmcgb24gTG9vbmdBcmNoLlxuXG5CdXQgdGhlbiBJIHN0YXJ0IHRvIHRoaW5rIGFib3V0IHRoZSBwcmFjdGljYWxpdGllcy4gRG9lcyBzeXprYWxsZXIgZXZlbiAqc3VwcG9ydCogTG9vbmdBcmNoIGluIGl0cyBzdGFuZGFyZCBzZXR1cCwgbGlrZSBHQ0UvUUVNVT8gSSBrbm93IGl0IGhhbmRsZXMgcmlzY3Y2NCwgYXJtNjQsIGFtZDY0LCAzODYsIGFuZCBBUk0uIFdhaXQsIGRvZXMgc3l6a2FsbGVyIGhhbmRsZSBsb29uZ2FyY2g2ND8gVGltZSB0byBjaGVjay4gVGhpcyBnZXRzIHRyaWNreSBiZWNhdXNlIHRoZSBwYXRjaCBkZXNjcmlwdGlvbiBtZW50aW9ucywgXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuLi5cIiB3aGljaCB0aHJvd3MgYSB3cmVuY2ggaW4gdGhlIHdvcmtzLlxuXG5Ib3dldmVyLCBkb2Vzbid0IFFFTVUgYWN0dWFsbHkgc3VwcG9ydCBMb29uZ0FyY2g/IFllcywgUUVNVSBkb2VzIHN1cHBvcnQgbG9vbmdhcmNoNjQuIE9rYXksIHNvIHRoYXQncyBnb29kLlxuXG5TbywgKmNhbiogd2UgZnV6eiB0aGlzIExvb25nQXJjaCBCUEYgSklUPyBMZXQncyB0YWtlIGEgc3RlcCBiYWNrLiBJIG5lZWQgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBjb2RlIGJlaW5nIG1vZGlmaWVkLiBObywgaXQncyBhbGwgdHVja2VkIGF3YXkgbmVhdGx5IHdpdGhpbiBgYXJjaC9sb29uZ2FyY2gvYCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBPa2F5LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IHJ1bm5pbmcgdGhpcyBmdXp6aW5nIGNhbXBhaWduIG9uIExvb25nQXJjaC4gVGhlIHByb2JsZW0gaGVyZSBpcyBzeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgbG9vbmdhcmNoNjQgaW5zdGFuY2UgaW4gaXRzIHN0YW5kYXJkIHN5emJvdCBzZXR1cCwgYnV0IGl0IG1heSBiZSBzdXBwb3J0ZWQuXG5cbk9rYXksIGJhY2sgdG8gdGhlIFwiaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHNcIiBsaW5lLiBRRU1VIGRvZXMgc3VwcG9ydCBsb29uZ2FyY2g2NC4gTGV0J3MgbG9vayBjbG9zZWx5IGF0IGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYC4gVGhlIGBlbWl0X2F0b21pY19ybXdgIGZ1bmN0aW9uIGlzIHRoZSBhcmVhIG9mIGludGVyZXN0IGhlcmUuIFRpbWUgdG8gc2VhcmNoIGZvciBgZW1pdF9hdG9taWNfcm13YCBpbiBgYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NzIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzozOToxMC4xNzI2Mzc3NDRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA0MTI5NTExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVtaXRfYXRvbWljX3Jtd1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MzUwPXN0YXRpYyB2b2lkIGVtaXRfc3RvcmVfc3RhY2tfaW1tNjQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IHJlZywgaW50IHN0YWNrX29mZiwgdTY0IGltbTY0KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0zNTUtXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzozNTY6c3RhdGljIGludCBlbWl0X2F0b21pY19ybXcoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMzU3LXtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9NzA0PXN0YXRpYyBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgZXh0cmFfcGFzcylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMTQyNi1cXHRcXHRpZiAoIWJwZl9hdG9taWNfaXNfbG9hZF9zdG9yZShpbnNuKSlcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjE0Mjc6XFx0XFx0XFx0cmV0ID0gZW1pdF9hdG9taWNfcm13KGluc24sIGN0eCk7XFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0xNDI4LVxcdFxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDc6Mzk6MTAuNTc2NzcyNjQ2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY1MTQzODMxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBDb21waWxlcioqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgY2hhbmdlcyB0byBgZW1pdF9hdG9taWNfcm13YCB3aXRoaW4gYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgLiBSaWdodCwgdGhpcyBpcyB0aGUgQlBGIEpJVCBjb21waWxlciBzcGVjaWZpY2FsbHkgZm9yIHRoZSBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlLiBUaGUgcXVlc3Rpb24gaXM6IHNob3VsZCB3ZSBwcmlvcml0aXplIHRoaXMgZm9yIGZ1enppbmc/IEFic29sdXRlbHkuIFRoZSBCUEYgSklUIGNvbXBpbGVyIGlzIGEga25vd24gd2VhayBwb2ludCBhbmQgcHJpbWUgdGFyZ2V0IGZvciB0aGlzIGtpbmQgb2YgdGVzdGluZy5cblxuTm93LCB3aGF0IGFib3V0IHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgd2UgbmVlZCB0byBjb25zaWRlcj8gSSBrbm93IHdlJ3JlIGxvb2tpbmcgZm9yIGFueXRoaW5nIHNwZWNpZmljIHRvIHRoZSAqbW9kaWZpZWQqIGNvZGUuIFRoZSBpbnN0cnVjdGlvbnMgc2F5IG5vdCB0byBsaXN0IGdlbmVyaWMgY29uZmlncyBhcyB3ZSBjYW4gYXNzdW1lIHRoZXkgYXJlIGFscmVhZHkgZW5hYmxlZC4gYENPTkZJR19CUEZfSklUYCBhbmQgYENPTkZJR19MT09OR0FSQ0hgLiBgQ09ORklHX0JQRl9KSVRgIGlzIGxpa2VseSBhbHJlYWR5IGVuYWJsZWQgaWYgd2UncmUgZGVhbGluZyB3aXRoIGEgQlBGIEpJVCBmaWxlLCBidXQgbGV0J3MgbGlzdCBpdCBhbnl3YXkuIFRvIGJlIHNhZmUsIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB3aGF0IGVuYWJsZXMgYGJwZl9qaXQuY2AgLSBJIHNob3VsZCBjaGVjayBgYXJjaC9sb29uZ2FyY2gvS2NvbmZpZ2Agb3IgYGFyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZWAgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjI3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA3OjM5OjE1LjIyODIxMjY1NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzE5Mjc0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGUtNi0jXFxuYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzozOToxNS4yODE0MTAxNzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzEyODQyMjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmU6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuUmlnaHQsIHNvIEknbSBzZWVpbmcgdGhpcyBkZXBlbmRlbmN5IG9uIGBDT05GSUdfQlBGX0pJVGAuIFRoYXQncyBhIGdpdmVuLCBJIHVuZGVyc3RhbmQgdGhlIG5lZWQgZm9yIHRoZSBKdXN0LUluLVRpbWUgY29tcGlsZXIgaW4gdGhpcyBjb250ZXh0LiBCdXQgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC5cblxuQXJlIHRoZXJlIGFueSAqb3RoZXIqIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGluZmx1ZW5jZSB0aGlzPyBBbnl0aGluZyByZWxhdGVkIHRvIHRoZSB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZSwgb3B0aW1pemF0aW9ucywgc3BlY2lmaWMgaGFyZHdhcmUgc3VwcG9ydC4uLiBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBhbmdsZXMuIE15IGluc3RpbmN0cyBhcmUgdGVsbGluZyBtZSB0byBkaWcgZGVlcGVyLlxuXG5TcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCBhbnl0aGluZyByZWxhdGVkIHRvIGF0b21pYyBvcGVyYXRpb25zLCBvciBtYXliZSBldmVuIHJlbGF0ZWQgdG8gbWVtb3J5IGFjY2Vzcy4gSWYgdGhpcyBpcyBwZXJmb3JtYW5jZS1jcml0aWNhbCwgSSdsbCBuZWVkIHRvIGtub3cgd2hpY2ggb3B0aW9ucyBhcmUgZ29pbmcgdG8gYWZmZWN0IHRoZSBzcGVlZCBvZiB0aGF0LiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgcG90ZW50aWFsbHkgaGlkZGVuIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoZSAqZnVsbCogY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3NDUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzozOToxOC41OTQyNTQzNzFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgyNzQxNTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDc6Mzk6MTguNjUyNTM2MDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzQxNDE0ODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBDb25maWd1cmF0aW9uIGZvciBCUEYgSklUIENvbXBpbGF0aW9uKipcblxuQWxyaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIEJQRiBKSVQgY29tcGlsYXRpb24gc2l0dWF0aW9uLCBhbmQgSSdtIG5vdCBzZWVpbmcgYW55IHNwZWNpZmljLCBvYnZpb3VzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBkZWZpbmVkIHdpdGhpbiBgYnBmX2ppdC5jYC4gVGhhdCdzIGEgbGl0dGxlIHVudXN1YWwsIGJ1dCBub3QgbmVjZXNzYXJpbHkgYSBzaG93c3RvcHBlci4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIGJyb2FkZW4gdGhlIHNjb3BlIGFuZCBzZWUgaWYgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbmNsdWRlIGZpbGVzIG1pZ2h0IGhvbGQgdGhlIGtleS4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gY2hlY2sgYGFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaGAuIE1heWJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9yIGluc3RydWN0aW9uIGRlZmluaXRpb25zIGFyZSBoYW5kbGVkIHRoZXJlLCBnaXZlbiB3ZSdyZSBkZWFsaW5nIHdpdGggTG9vbmdBcmNoLiBUaGF0J3MgYSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHRoZSBsb3ctbGV2ZWwgZGV0YWlscyB0aGF0IHdvdWxkIGluZmx1ZW5jZSB0aGUgSklUIGNvbXBpbGVyJ3MgYmVoYXZpb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwMzIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzozOToyMS45OTM5NTI4NjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNzQ1ODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaD00NDg9c3RhdGljIGlubGluZSBib29sIGlzX3JhX3NhdmVfaW5zKHVuaW9uIGxvb25nYXJjaF9pbnN0cnVjdGlvbiAqaXApXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oLTQ0OS17XFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oOjQ1MDpcXHRjb25zdCB1MzIgb3Bjb2RlID0gSVNfRU5BQkxFRChDT05GSUdfMzJCSVQpID8gc3R3X29wIDogc3RkX29wO1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaC00NTEtXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0Lmg9NDU5PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19zdGFja19hbGxvY19pbnModW5pb24gbG9vbmdhcmNoX2luc3RydWN0aW9uICppcClcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmgtNDYwLXtcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0Lmg6NDYxOlxcdGNvbnN0IHUzMiBvcGNvZGUgPSBJU19FTkFCTEVEKENPTkZJR18zMkJJVCkgPyBhZGRpd19vcCA6IGFkZGlkX29wO1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaC00NjItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA3OjM5OjIyLjA0NDcwNzM4NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDAyNTQ5OTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIEpJVCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIHplcm9pbmcgaW4gb24gdGhpcyBgQ09ORklHX0JQRl9KSVRgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIOKAkyB0aGF0J3MgdGhlIGNvcmUuIE15IHJlYWwgZm9jdXMsIHRob3VnaCwgYXJlIHRoZXNlIGNydWNpYWwgc3ltYm9sczogYGVtaXRfYXRvbWljX3Jtd2AgYW5kIGBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnYC4gQWgsIGhhbmcgb24sIGBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnYCBpcyBiYXNpY2FsbHkganVzdCBhIGJvb2xlYW4gY2hlY2ssIGEgc2ltcGxlIHRydWUvZmFsc2UgcmV0dXJuLiBTbywgaXQgbG9va3MgbGlrZSBgZW1pdF9hdG9taWNfcm13YCBpcyB0aGUgcmVhbCBoZWF2eSBsaWZ0ZXIgaGVyZSwgdGhlIG9uZSB3aGVyZSB0aGUgY29kZSBtb2RpZmljYXRpb25zIGFyZSBoYXBwZW5pbmcuIEkgbmVlZCB0byBiZSBzdXJlIHRob3VnaCwgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgdGhhdCBhcmUgYXNzb2NpYXRlZCBoZXJlPyBJIG5lZWQgdG8gY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1MzQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzozOToyNi4wNDcyNTk3NDlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NjY5ODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9qaXRfc3VwcG9ydHNfcHRyX3hjaGdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTIzNjQ9Ym9vbCBicGZfaml0X3N1cHBvcnRzX2ZzZXNzaW9uKHZvaWQpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIzNjgtXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyMzY5OmJvb2wgYnBmX2ppdF9zdXBwb3J0c19wdHJfeGNoZyh2b2lkKVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjM3MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA3OjM5OjI2LjEwMjkzNDc2OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MjAwNDIyNTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBlbWl0X2F0b21pY19ybXdgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBZZXMsIGl0IGlzLiBHaXZlbiB0aGF0IGl0J3Mgc3RhdGljIGFuZCBpdHMgcmVzcG9uc2liaWxpdHkgcmVsYXRlcyBzcGVjaWZpY2FsbHkgdG8gYXRvbWljIGluc3RydWN0aW9ucywgaXQgc2VlbXMgbGlrZSB0aGUgaWRlYWwgZm9jdXMgZm9yIG15IGludmVzdGlnYXRpb24uIENvbnNpZGVyaW5nIGBidWlsZF9pbnNuYCBjYWxscyBpdCwgdGhlIGNhbGwgcGF0aCBpdHNlbGYgbWlnaHQgYmUgcGVyZm9ybWFuY2UtY3JpdGljYWwgZHVyaW5nIEpJVCBjb21waWxhdGlvbi4gSG93ZXZlciwgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2l0aCBgZW1pdF9hdG9taWNfcm13YCwgd2hpY2ggZGVhbHMgZGlyZWN0bHkgd2l0aCB0aGUgYXRvbWljIGluc3RydWN0aW9uIGdlbmVyYXRpb24uXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbnN0cnVjdGlvbnMgZ2VuZXJhdGVkIGZvciBhdG9taWMgb3BlcmF0aW9ucyBpbiB0aGUgTG9vbmdBcmNoIEJQRiBKSVQsIHNwZWNpZmljYWxseSByZXBsYWNpbmcgaW5zdHJ1Y3Rpb25zIGxpa2UgYGFtYWRkYmAgd2l0aCBzb21ldGhpbmcgbGlrZSBgYW1hZGRkYmJgLCB3aGljaCBoaW50cyBhdCBsYXJnZXIgZGF0YSBzaXplcyBvciBwZXJoYXBzIGluc3RydWN0aW9uIGZvcm1hdCBjaGFuZ2VzLiBUaGUgcHJvbXB0J3MgcmVxdWlyZW1lbnQgYWJvdXQgXCJpbXBvc3NpYmxlLXRvLXJlYWNoXCIgY29kZSBpcyBpbXBvcnRhbnQuIENhbiB3ZSBldmVuIHJlYWNoIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VPyBZZXMsIHdlIGNhbi4gUUVNVSBzdXBwb3J0cyBMb29uZ0FyY2gsIGFuZCB3ZSBjYW4gZGVmaW5pdGVseSBydW4gYSBMb29uZ0FyY2gga2VybmVsIHdpdGhpbiBpdCwgdGh1cyBtYWtpbmcgdGhpcyBjb2RlIHBhdGggcmVhY2hhYmxlLlxuXG5UaGUga2V5IGNvbmZpZ3VyYXRpb24gdG8gbm90ZSBoZXJlIGlzIGBCUEZfSklUYC4gTm93LCBsb29raW5nIGF0IHRoZSBzeW1ib2xzLCB0aGUgcHJpbWFyeSBmb2N1cyBpcyBkZWZpbml0ZWx5IG9uIGBlbWl0X2F0b21pY19ybXdgLiBUaGlzIHBhdGNoIGVuYWJsZXMgYGJwZl9qaXRfc3VwcG9ydHNfcHRyX3hjaGdgIGFzIHdlbGwsIHNvIHRoZXJlIG11c3QgYmUgYWRkaXRpb25hbCBjaGFuZ2VzIHJlbGF0ZWQgdG8gcG9pbnRlciBleGNoYW5nZS5cblxuVGhlIGZ1bmRhbWVudGFsIHJlYXNvbmluZyBpcyB0aGF0IHRoaXMgcGF0Y2ggYWx0ZXJzIHRoZSBpbnN0cnVjdGlvbiBlbWlzc2lvbiBmb3IgQlBGIGF0b21pYyBvcGVyYXRpb25zIG9uIExvb25nQXJjaC4gVGhpcyBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgQlBGIEpJVCwgYW5kIGl0J3Mgc29tZXRoaW5nIHRoYXQgY2FuIGJlIHRlc3RlZCBieSBleGVjdXRpbmcgQlBGIHByb2dyYW1zIHRoYXQgaW5jbHVkZSBhdG9taWMgb3BlcmF0aW9ucy4gTXkgbWFpbiBmb2N1cyByZW1haW5zIG9uIGBlbWl0X2F0b21pY19ybXdgIGFuZCBgYnBmX2ppdF9zdXBwb3J0c19wdHJfeGNoZ2AuXG5cbk5vdywgbG9va2luZyBkZWVwZXIsIHRoZSBjaGFuZ2VzIGFyZSBjZW50ZXJlZCBhcm91bmQgYGVtaXRfYXRvbWljX3Jtd2AgaW4gYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgIGFuZCBpbmxpbmUgZnVuY3Rpb25zLCBzdWNoIGFzIHRob3NlIGdlbmVyYXRlZCBieSBgREVGX0VNSVRfUkVHM19GT1JNQVRgIChsaWtlIGBlbWl0X2Ftc3dhcGRiYmApLCBkZWZpbmVkIGluIGBhcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhgLiBUaGVyZSBpcyBhIHRlc3QgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIHRoYXQgYmVuY2htYXJrcyBga3B0cl94Y2hnYCwgd2hpY2ggaXMgdXNlZnVsIGZvciB2YWxpZGF0aW9uLCBidXQgYGVtaXRfYXRvbWljX3Jtd2AgcmVtYWlucyB0aGUgY29yZSBhcmVhIG9mIGNvbmNlcm4uIE5vLCB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIHN1YnN0YW50aWFsIGZ1bmN0aW9ucyBtb2RpZmllZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk2MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzozOTozNS4zMDMzNjA4MzhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NTU4OTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVtaXRfYXRvbWljX3Jtd1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MzUwPXN0YXRpYyB2b2lkIGVtaXRfc3RvcmVfc3RhY2tfaW1tNjQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IHJlZywgaW50IHN0YWNrX29mZiwgdTY0IGltbTY0KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0zNTUtXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzozNTY6c3RhdGljIGludCBlbWl0X2F0b21pY19ybXcoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMzU3LXtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9NzA0PXN0YXRpYyBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgZXh0cmFfcGFzcylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMTQyNi1cXHRcXHRpZiAoIWJwZl9hdG9taWNfaXNfbG9hZF9zdG9yZShpbnNuKSlcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjE0Mjc6XFx0XFx0XFx0cmV0ID0gZW1pdF9hdG9taWNfcm13KGluc24sIGN0eCk7XFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0xNDI4LVxcdFxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDc6Mzk6MzUuMzU3OTI1NDE3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MDQxNTA1NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEJQRiBKSVQgTG9vbmdBcmNoIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSB6ZXJvZWQgaW4gb24gdGhlIGBicGZfaml0LmNgIGZpbGUuIEl0IGxvb2tzIGxpa2UgdGhlIG1haW4gZnVuY3Rpb24gaW1wYWN0ZWQgaXMgYGVtaXRfYXRvbWljX3Jtd2AsIHdoaWNoIGFsaWducyB3aXRoIHRoZSBpbnRlbnRpb24gb2YgdGhlIGNoYW5nZXMg4oCTIGZvY3VzaW5nIG9uIGF0b21pYyBvcGVyYXRpb25zLiBUaGUgYGJwZl9qaXRfc3VwcG9ydHNfcHRyX3hjaGdgIGFkZGl0aW9uIGlzIGFsc28gbm90ZXdvcnRoeSwgZGlyZWN0bHkgc3VwcG9ydGluZyB0aGUgbmV3IGF0b21pYyBpbnN0cnVjdGlvbiBpbXBsZW1lbnRhdGlvbnMuXG5cbk5vdywgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkgc2VlIHRoZSByZXF1aXJlbWVudCBmb3IgYEJQRl9TWVNDQUxMYCBmb3IgQlBGIGluIGdlbmVyYWwsIGJ1dCB0aGF0J3MgYSBiYXNlbGluZS4gVGhlIGBCUEZfSklUYCBjb25maWcgc2VlbXMgY3JpdGljYWwgc2luY2UgdGhpcyBwYXRjaCBpcyBkaXJlY3RseSBtb2RpZnlpbmcgdGhlIEpJVCBjb21waWxlci4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbid0IGxpc3QgYW55dGhpbmcgdGhhdCdzIHRvbyBnZW5lcmljLCBhbmQgYEJQRl9KSVRgIGNlcnRhaW5seSBpc24ndC4gSSdsbCBzdGljayB3aXRoIGBCUEZfSklUYCBmb3Igbm93LlxuXG5Db25zaWRlcmluZyB0aGF0IHRoZSBjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byBMb29uZ0FyY2gsIEkgY291bGQgY29uc2lkZXIgaWYgSSBuZWVkIHRvIGluY2x1ZGUgYExPT05HQVJDSGAuIEhvd2V2ZXIsIHRoZSBwcm9tcHQgZGlyZWN0cyBtZSB0byBsaXN0IG9ubHkgd2hhdCBpcyBuZWVkZWQsIGFuZCBgQlBGX0pJVGAgaXMgc3BlY2lmaWMgZW5vdWdoLCBzbyBJIHdvbid0LlxuXG5Ob3csIGxldCBtZSBhcnRpY3VsYXRlIHRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgYW5hbHlzaXMuIFRoZSBwYXRjaCdzIGNvcmUgZnVuY3Rpb24gaXMgdG8gdXBkYXRlIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlciB0byBsZXZlcmFnZSBuZXcgYXRvbWljIGluc3RydWN0aW9ucyBsaWtlIGBhbWFkZGRiYmAgYW5kIGBhbXN3YXBkYmJgIHRvIG9wdGltaXplIEJQRiBhdG9taWMgb3BlcmF0aW9ucywgYW5kIGl0IGFsc28gZW5hYmxlcyBgYnBmX2ppdF9zdXBwb3J0c19wdHJfeGNoZ2AuIEl0J3MgYSBmdW5jdGlvbmFsIGVuaGFuY2VtZW50IHRvIHRoZSBCUEYgSklUIGxvZ2ljLiBUaGlzIG1lYW5zIHRoaXMgY2FuIGJlIGZ1enplZCB0aHJvdWdoIEJQRiBwcm9ncmFtcyB0aGF0IHVzZSBhdG9taWMgb3BlcmF0aW9ucy5cblxuTXkgZm9jdXMgc3ltYm9scyBhcmUgYGVtaXRfYXRvbWljX3Jtd2AuXG5cbkFuZCBteSBzZWxlY3RlZCBjb25maWcgaXMgYEJQRl9KSVRgLlxuXG5JJ20gcmVhZHkgdG8gcHJvY2VlZCB3aXRoIHNldHRpbmcgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzg0LCJPdXRwdXRUb2tlbnMiOjEzMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzozOTo0MS45NjIwNzg5NzNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDk0NDExOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVtaXRfYXRvbWljX3Jtd1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyIHRvIHVzZSBuZXcgYXRvbWljIGluc3RydWN0aW9ucyAoZS5nLiwgYW1hZGRkYmIsIGFtc3dhcGRiYikgZm9yIEJQRiBhdG9taWMgb3BlcmF0aW9ucyBhbmQgZW5hYmxlcyBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBvbiBMb29uZ0FyY2gsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgbG9hZGluZyBhbmQgZXhlY3V0aW5nIEJQRiBwcm9ncmFtcyB3aXRoIGF0b21pYyBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlbWl0X2F0b21pY19ybXdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlciB0byB1c2UgbmV3IGF0b21pYyBpbnN0cnVjdGlvbnMgKGUuZy4sIGFtYWRkZGJiLCBhbXN3YXBkYmIpIGZvciBCUEYgYXRvbWljIG9wZXJhdGlvbnMgYW5kIGVuYWJsZXMgYnBmX2ppdF9zdXBwb3J0c19wdHJfeGNoZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIEJQRiBKSVQgbG9naWMgb24gTG9vbmdBcmNoLCB3aGljaCBjYW4gYmUgZnV6emVkIGJ5IGxvYWRpbmcgYW5kIGV4ZWN1dGluZyBCUEYgcHJvZ3JhbXMgd2l0aCBhdG9taWMgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt69zq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-22 07:28:58 +0000 UTC FinishedAt: 2026-06-22 07:39:42 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "ef057cbf825e03b63f6edf5980f96abf3c53089d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "ef057cbf825e03b63f6edf5980f96abf3c53089d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT" ], "series_id": "78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "emit_atomic_rmw" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA2LzIyIDA3OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtlbWl0X2F0b21pY19ybXcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgY29tcGlsZXIgdG8gdXNlIG5ldyBhdG9taWMgaW5zdHJ1Y3Rpb25zIChlLmcuLCBhbWFkZGRiYiwgYW1zd2FwZGJiKSBmb3IgQlBGIGF0b21pYyBvcGVyYXRpb25zIGFuZCBlbmFibGVzIGJwZl9qaXRfc3VwcG9ydHNfcHRyX3hjaGcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBCUEYgSklUIGxvZ2ljIG9uIExvb25nQXJjaCwgd2hpY2ggY2FuIGJlIGZ1enplZCBieSBsb2FkaW5nIGFuZCBleGVjdXRpbmcgQlBGIHByb2dyYW1zIHdpdGggYXRvbWljIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6Mzk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxZDVhZDY3N2MyMGU3ODkzZTJhMTJmZmZkMjc0OWVjNGUwNzYxMTRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjIgMDc6Mzg6NTkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXG5pbmRleCA3NmI3MjM1OTAwMjNkNy4uYmRiYzE3ZDA3MTEwNWUgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxuQEAgLTE5OSw2ICYjNDM7MTk5LDEwIEBAIGVudW0gcmVnM19vcCB7XG4gXHRhbXN3YXBoX29wXHQ9IDB4NzBiOSxcbiBcdGFtYWRkYl9vcFx0PSAweDcwYmEsXG4gXHRhbWFkZGhfb3BcdD0gMHg3MGJiLFxuJiM0MztcdGFtc3dhcGRiYl9vcFx0PSAweDcwYmMsXG4mIzQzO1x0YW1zd2FwZGJoX29wXHQ9IDB4NzBiZCxcbiYjNDM7XHRhbWFkZGRiYl9vcFx0PSAweDcwYmUsXG4mIzQzO1x0YW1hZGRkYmhfb3BcdD0gMHg3MGJmLFxuIFx0YW1zd2Fwd19vcFx0PSAweDcwYzAsXG4gXHRhbXN3YXBkX29wXHQ9IDB4NzBjMSxcbiBcdGFtYWRkd19vcFx0PSAweDcwYzIsXG5AQCAtNzgzLDYgJiM0Mzs3ODcsMjAgQEAgREVGX0VNSVRfUkVHM19GT1JNQVQoYW1zd2FwYiwgYW1zd2FwYl9vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBoLCBhbXN3YXBoX29wKVxuIERFRl9FTUlUX1JFRzNfRk9STUFUKGFtc3dhcHcsIGFtc3dhcHdfb3ApXG4gREVGX0VNSVRfUkVHM19GT1JNQVQoYW1zd2FwZCwgYW1zd2FwZF9vcClcbiYjNDM7REVGX0VNSVRfUkVHM19GT1JNQVQoYW1zd2FwZGJiLCBhbXN3YXBkYmJfb3ApXG4mIzQzO0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtc3dhcGRiaCwgYW1zd2FwZGJoX29wKVxuJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbWFkZGRiYiwgYW1hZGRkYmJfb3ApXG4mIzQzO0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtYWRkZGJoLCBhbWFkZGRiaF9vcClcbiYjNDM7REVGX0VNSVRfUkVHM19GT1JNQVQoYW1hZGRkYncsIGFtYWRkZGJ3X29wKVxuJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbWFkZGRiZCwgYW1hZGRkYmRfb3ApXG4mIzQzO0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtYW5kZGJ3LCBhbWFuZGRid19vcClcbiYjNDM7REVGX0VNSVRfUkVHM19GT1JNQVQoYW1hbmRkYmQsIGFtYW5kZGJkX29wKVxuJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbW9yZGJ3LCBhbW9yZGJ3X29wKVxuJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbW9yZGJkLCBhbW9yZGJkX29wKVxuJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbXhvcmRidywgYW14b3JkYndfb3ApXG4mIzQzO0RFRl9FTUlUX1JFRzNfRk9STUFUKGFteG9yZGJkLCBhbXhvcmRiZF9vcClcbiYjNDM7REVGX0VNSVRfUkVHM19GT1JNQVQoYW1zd2FwZGJ3LCBhbXN3YXBkYndfb3ApXG4mIzQzO0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtc3dhcGRiZCwgYW1zd2FwZGJkX29wKVxuIFxuICNkZWZpbmUgREVGX0VNSVRfUkVHM1NBMl9GT1JNQVQoTkFNRSwgT1ApXHRcdFx0XHRcXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0XyMjTkFNRSh1bmlvbiBsb29uZ2FyY2hfaW5zdHJ1Y3Rpb24gKmluc24sXHRcXFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXG5pbmRleCAyNDkxM2RjN2Y0ZTgzNS4uZmZmZjUyMWIzYzgwODggMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXG5AQCAtNyw2ICYjNDM7Nyw5IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbWVtb3J5LmhcdTAwM2VcbiAjaW5jbHVkZSBcJiMzNDticGZfaml0LmhcJiMzNDtcbiBcbiYjNDM7LyogZGJhciBoaW50IGZvciBsbC9zYyBjb21wbGV0aW9uIG9yZGVyaW5nLCBzZWUgX19XRUFLX0xMU0NfTUIgKi9cbiYjNDM7I2RlZmluZSBEQkFSX0xMU0NfTUJcdDB4NzAwXG4mIzQzO1xuICNkZWZpbmUgTE9PTkdBUkNIX01BWF9SRUdfQVJHUyA4XG4gXG4gI2RlZmluZSBMT09OR0FSQ0hfTE9OR19KVU1QX05JTlNOUyA1XG5AQCAtNDE4LDcgJiM0Mzs0MjEsNyBAQCBzdGF0aWMgaW50IGVtaXRfYXRvbWljX3Jtdyhjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgpXG4gXHRcdFx0XHRwcl9lcnJfb25jZShcJiMzNDticGYtaml0OiBhbWFkZC5iIGluc3RydWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDspO1xuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0fVxuLVx0XHRcdGVtaXRfaW5zbihjdHgsIGFtYWRkYiwgc3JjLCB0MSwgdDMpO1xuJiM0MztcdFx0XHRlbWl0X2luc24oY3R4LCBhbWFkZGRiYiwgc3JjLCB0MSwgdDMpO1xuIFx0XHRcdGVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgQlBGX0g6XG5AQCAtNDI2LDM5ICYjNDM7NDI5LDM5IEBAIHN0YXRpYyBpbnQgZW1pdF9hdG9taWNfcm13KGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eClcbiBcdFx0XHRcdHByX2Vycl9vbmNlKFwmIzM0O2JwZi1qaXQ6IGFtYWRkLmggaW5zdHJ1Y3Rpb24gaXMgbm90IHN1cHBvcnRlZFxcblwmIzM0Oyk7XG4gXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdFx0XHR9XG4tXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1hZGRoLCBzcmMsIHQxLCB0Myk7XG4mIzQzO1x0XHRcdGVtaXRfaW5zbihjdHgsIGFtYWRkZGJoLCBzcmMsIHQxLCB0Myk7XG4gXHRcdFx0ZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBCUEZfVzpcbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbWFkZHcsIHNyYywgdDEsIHQzKTtcbiYjNDM7XHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1hZGRkYncsIHNyYywgdDEsIHQzKTtcbiBcdFx0XHRlbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIEJQRl9EVzpcbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbWFkZGQsIHNyYywgdDEsIHQzKTtcbiYjNDM7XHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1hZGRkYmQsIHNyYywgdDEsIHQzKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuIFx0XHRicmVhaztcbiBcdGNhc2UgQlBGX0FORCB8IEJQRl9GRVRDSDpcbiBcdFx0aWYgKGlzZHcpIHtcbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbWFuZGQsIHNyYywgdDEsIHQzKTtcbiYjNDM7XHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1hbmRkYmQsIHNyYywgdDEsIHQzKTtcbiBcdFx0fSBlbHNlIHtcbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbWFuZHcsIHNyYywgdDEsIHQzKTtcbiYjNDM7XHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1hbmRkYncsIHNyYywgdDEsIHQzKTtcbiBcdFx0XHRlbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpO1xuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfT1IgfCBCUEZfRkVUQ0g6XG4gXHRcdGlmIChpc2R3KSB7XG4tXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1vcmQsIHNyYywgdDEsIHQzKTtcbiYjNDM7XHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1vcmRiZCwgc3JjLCB0MSwgdDMpO1xuIFx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXRfaW5zbihjdHgsIGFtb3J3LCBzcmMsIHQxLCB0Myk7XG4mIzQzO1x0XHRcdGVtaXRfaW5zbihjdHgsIGFtb3JkYncsIHNyYywgdDEsIHQzKTtcbiBcdFx0XHRlbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpO1xuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfWE9SIHwgQlBGX0ZFVENIOlxuIFx0XHRpZiAoaXNkdykge1xuLVx0XHRcdGVtaXRfaW5zbihjdHgsIGFteG9yZCwgc3JjLCB0MSwgdDMpO1xuJiM0MztcdFx0XHRlbWl0X2luc24oY3R4LCBhbXhvcmRiZCwgc3JjLCB0MSwgdDMpO1xuIFx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXRfaW5zbihjdHgsIGFteG9ydywgc3JjLCB0MSwgdDMpO1xuJiM0MztcdFx0XHRlbWl0X2luc24oY3R4LCBhbXhvcmRidywgc3JjLCB0MSwgdDMpO1xuIFx0XHRcdGVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7XG4gXHRcdH1cbiBcdFx0YnJlYWs7XG5AQCAtNDcwLDcgJiM0Mzs0NzMsNyBAQCBzdGF0aWMgaW50IGVtaXRfYXRvbWljX3Jtdyhjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgpXG4gXHRcdFx0XHRwcl9lcnJfb25jZShcJiMzNDticGYtaml0OiBhbXN3YXAuYiBpbnN0cnVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkXFxuXCYjMzQ7KTtcbiBcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdH1cbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbXN3YXBiLCBzcmMsIHQxLCB0Myk7XG4mIzQzO1x0XHRcdGVtaXRfaW5zbihjdHgsIGFtc3dhcGRiYiwgc3JjLCB0MSwgdDMpO1xuIFx0XHRcdGVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgQlBGX0g6XG5AQCAtNDc4LDE1ICYjNDM7NDgxLDE1IEBAIHN0YXRpYyBpbnQgZW1pdF9hdG9taWNfcm13KGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eClcbiBcdFx0XHRcdHByX2Vycl9vbmNlKFwmIzM0O2JwZi1qaXQ6IGFtc3dhcC5oIGluc3RydWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWRcXG5cJiMzNDspO1xuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0fVxuLVx0XHRcdGVtaXRfaW5zbihjdHgsIGFtc3dhcGgsIHNyYywgdDEsIHQzKTtcbiYjNDM7XHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1zd2FwZGJoLCBzcmMsIHQxLCB0Myk7XG4gXHRcdFx0ZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBCUEZfVzpcbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbXN3YXB3LCBzcmMsIHQxLCB0Myk7XG4mIzQzO1x0XHRcdGVtaXRfaW5zbihjdHgsIGFtc3dhcGRidywgc3JjLCB0MSwgdDMpO1xuIFx0XHRcdGVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgQlBGX0RXOlxuLVx0XHRcdGVtaXRfaW5zbihjdHgsIGFtc3dhcGQsIHNyYywgdDEsIHQzKTtcbiYjNDM7XHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1zd2FwZGJkLCBzcmMsIHQxLCB0Myk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiBcdFx0YnJlYWs7XG5AQCAtNTA5LDYgJiM0Mzs1MTIsNyBAQCBzdGF0aWMgaW50IGVtaXRfYXRvbWljX3Jtdyhjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgpXG4gXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYmVxLCB0MywgTE9PTkdBUkNIX0dQUl9aRVJPLCAtNik7XG4gXHRcdFx0ZW1pdF96ZXh0XzMyKGN0eCwgcjAsIHRydWUpO1xuIFx0XHR9XG4mIzQzO1x0XHRlbWl0X2luc24oY3R4LCBkYmFyLCBEQkFSX0xMU0NfTUIpO1xuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdHByX2Vycl9vbmNlKFwmIzM0O2JwZi1qaXQ6IGludmFsaWQgYXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlIG9wY29kZSAlMDJ4XFxuXCYjMzQ7LCBpbW0pO1xuQEAgLTIzNjIsNiAmIzQzOzIzNjYsMTEgQEAgYm9vbCBicGZfaml0X3N1cHBvcnRzX2ZzZXNzaW9uKHZvaWQpXG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG4mIzQzO2Jvb2wgYnBmX2ppdF9zdXBwb3J0c19wdHJfeGNoZyh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHRydWU7XG4mIzQzO31cbiYjNDM7XG4gLyogSW5kaWNhdGUgdGhlIEpJVCBiYWNrZW5kIHN1cHBvcnRzIG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHMuICovXG4gYm9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpXG4ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZVxuaW5kZXggNmVmNjg3MmFkYmMzZTEuLmVhNGMyMmUyMGYzYzgwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbkBAIC04NjYsNiAmIzQzOzg2Niw3IEBAICQoT1VUUFVUKS9iZW5jaF9odGFiX21lbS5vOiAkKE9VVFBVVCkvaHRhYl9tZW1fYmVuY2guc2tlbC5oXG4gJChPVVRQVVQpL2JlbmNoX2JwZl9jcnlwdG8ubzogJChPVVRQVVQpL2NyeXB0b19iZW5jaC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfc29ja21hcC5vOiAkKE9VVFBVVCkvYmVuY2hfc29ja21hcF9wcm9nLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubzogJChPVVRQVVQpL2xwbV90cmllX2JlbmNoLnNrZWwuaCAkKE9VVFBVVCkvbHBtX3RyaWVfbWFwLnNrZWwuaFxuJiM0MzskKE9VVFBVVCkvYmVuY2hfa3B0cl94Y2hnLm86ICQoT1VUUFVUKS9rcHRyX3hjaGdfYmVuY2guc2tlbC5oXG4gJChPVVRQVVQpL2JlbmNoLm86IGJlbmNoLmggdGVzdGluZ19oZWxwZXJzLmggJChCUEZPQkopXG4gJChPVVRQVVQpL2JlbmNoOiBMRExJQlMgJiM0Mzs9IC1sbVxuICQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXFxcbkBAIC04ODgsNiAmIzQzOzg4OSw3IEBAICQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXFxcbiBcdFx0ICQoT1VUUFVUKS9iZW5jaF9icGZfY3J5cHRvLm8gXFxcbiBcdFx0ICQoT1VUUFVUKS9iZW5jaF9zb2NrbWFwLm8gXFxcbiBcdFx0ICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubyBcXFxuJiM0MztcdFx0ICQoT1VUUFVUKS9iZW5jaF9rcHRyX3hjaGcubyBcXFxuIFx0XHQgJChPVVRQVVQpL3VzZHRfMS5vIFxcXG4gXHRcdCAkKE9VVFBVVCkvdXNkdF8yLm8gXFxcbiBcdFx0ICNcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaC5jXG5pbmRleCAwMjliM2UyMWY0Mzg0Ni4uMmI2ZGQ4YWVjMjgyZjIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNoLmNcbkBAIC01NzUsNiAmIzQzOzU3NSw3IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfaW5zZXJ0O1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfdXBkYXRlO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfZGVsZXRlO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfZnJlZTtcbiYjNDM7ZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9rcHRyX3hjaGc7XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBiZW5jaCAqYmVuY2hzW10gPSB7XG4gXHRcdTAwMjZiZW5jaF9jb3VudF9nbG9iYWwsXG5AQCAtNjUzLDYgJiM0Mzs2NTQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJlbmNoICpiZW5jaHNbXSA9IHtcbiBcdFx1MDAyNmJlbmNoX2xwbV90cmllX3VwZGF0ZSxcbiBcdFx1MDAyNmJlbmNoX2xwbV90cmllX2RlbGV0ZSxcbiBcdFx1MDAyNmJlbmNoX2xwbV90cmllX2ZyZWUsXG4mIzQzO1x0XHUwMDI2YmVuY2hfa3B0cl94Y2hnLFxuIH07XG4gXG4gc3RhdGljIHZvaWQgZmluZF9iZW5jaG1hcmsodm9pZClcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2twdHJfeGNoZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9rcHRyX3hjaGcuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iOGEwZDM0NmZkYTY4OFxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9rcHRyX3hjaGcuY1xuQEAgLTAsMCAmIzQzOzEsOTYgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7LyogQ29weXJpZ2h0IChDKSAyMDI2LiBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWQgKi9cbiYjNDM7I2luY2x1ZGUgXHUwMDNjYXJncC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFwmIzM0O2JlbmNoLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7a3B0cl94Y2hnX2JlbmNoLnNrZWwuaFwmIzM0O1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBjdHgge1xuJiM0MztcdHN0cnVjdCBrcHRyX3hjaGdfYmVuY2ggKnNrZWw7XG4mIzQzO30gY3R4O1xuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCB7XG4mIzQzO1x0X191MzIgbnJfbG9vcHM7XG4mIzQzO30gYXJncyA9IHtcbiYjNDM7XHQubnJfbG9vcHMgPSAyNTYsXG4mIzQzO307XG4mIzQzO1xuJiM0MztlbnVtIHtcbiYjNDM7XHRBUkdfTlJfTE9PUFMgPSA3MDAwLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiBvcHRzW10gPSB7XG4mIzQzO1x0eyBcJiMzNDtucl9sb29wc1wmIzM0OywgQVJHX05SX0xPT1BTLCBcJiMzNDtucl9sb29wc1wmIzM0OywgMCxcbiYjNDM7XHQgIFwmIzM0O1NldCBudW1iZXIgb2YgYnBmX2twdHJfeGNoZygpIGNhbGxzIHBlciB0cmlnZ2VyXCYjMzQ7fSxcbiYjNDM7XHR7fSxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBlcnJvcl90IHBhcnNlX2FyZyhpbnQga2V5LCBjaGFyICphcmcsIHN0cnVjdCBhcmdwX3N0YXRlICpzdGF0ZSlcbiYjNDM7e1xuJiM0MztcdHN3aXRjaCAoa2V5KSB7XG4mIzQzO1x0Y2FzZSBBUkdfTlJfTE9PUFM6XG4mIzQzO1x0XHRhcmdzLm5yX2xvb3BzID0gc3RydG9sKGFyZywgTlVMTCwgMTApO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybiBBUkdQX0VSUl9VTktOT1dOO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncCBiZW5jaF9rcHRyX3hjaGdfYXJncCA9IHtcbiYjNDM7XHQub3B0aW9ucyA9IG9wdHMsXG4mIzQzO1x0LnBhcnNlciA9IHBhcnNlX2FyZyxcbiYjNDM7fTtcbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHZhbGlkYXRlKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRpZiAoZW52LmNvbnN1bWVyX2NudCAhPSAwKSB7XG4mIzQzO1x0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7YmVuY2htYXJrIGRvZXNuJiMzOTt0IHN1cHBvcnQgY29uc3VtZXIhXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGV4aXQoMSk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCAqcHJvZHVjZXIodm9pZCAqaW5wdXQpXG4mIzQzO3tcbiYjNDM7XHR3aGlsZSAodHJ1ZSlcbiYjNDM7XHRcdHN5c2NhbGwoX19OUl9nZXRwZ2lkKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIE5VTEw7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIG1lYXN1cmUoc3RydWN0IGJlbmNoX3JlcyAqcmVzKVxuJiM0Mzt7XG4mIzQzO1x0cmVzLVx1MDAzZWhpdHMgPSBhdG9taWNfc3dhcChcdTAwMjZjdHguc2tlbC1cdTAwM2Vic3MtXHUwMDNlaGl0cywgMCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHNldHVwKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYnBmX2xpbmsgKmxpbms7XG4mIzQzO1xuJiM0MztcdHNldHVwX2xpYmJwZigpO1xuJiM0MztcbiYjNDM7XHRjdHguc2tlbCA9IGtwdHJfeGNoZ19iZW5jaF9fb3Blbl9hbmRfbG9hZCgpO1xuJiM0MztcdGlmICghY3R4LnNrZWwpIHtcbiYjNDM7XHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtmYWlsZWQgdG8gb3BlbiBza2VsZXRvblxcblwmIzM0Oyk7XG4mIzQzO1x0XHRleGl0KDEpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0Y3R4LnNrZWwtXHUwMDNlZGF0YS1cdTAwM2Vucl9sb29wcyA9IGFyZ3MubnJfbG9vcHM7XG4mIzQzO1xuJiM0MztcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKGN0eC5za2VsLVx1MDAzZXByb2dzLmJlbmNobWFyayk7XG4mIzQzO1x0aWYgKCFsaW5rKSB7XG4mIzQzO1x0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7ZmFpbGVkIHRvIGF0dGFjaCBwcm9ncmFtIVxcblwmIzM0Oyk7XG4mIzQzO1x0XHRleGl0KDEpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7Y29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2twdHJfeGNoZyA9IHtcbiYjNDM7XHQubmFtZSA9IFwmIzM0O2twdHIteGNoZ1wmIzM0OyxcbiYjNDM7XHQuYXJncCA9IFx1MDAyNmJlbmNoX2twdHJfeGNoZ19hcmdwLFxuJiM0MztcdC52YWxpZGF0ZSA9IHZhbGlkYXRlLFxuJiM0MztcdC5zZXR1cCA9IHNldHVwLFxuJiM0MztcdC5wcm9kdWNlcl90aHJlYWQgPSBwcm9kdWNlcixcbiYjNDM7XHQubWVhc3VyZSA9IG1lYXN1cmUsXG4mIzQzO1x0LnJlcG9ydF9wcm9ncmVzcyA9IG9wc19yZXBvcnRfcHJvZ3Jlc3MsXG4mIzQzO1x0LnJlcG9ydF9maW5hbCA9IG9wc19yZXBvcnRfZmluYWwsXG4mIzQzO307XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3B0cl94Y2hnX2lubGluZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3B0cl94Y2hnX2lubGluZS5jXG5pbmRleCA3ZGVmMTU4ZGE5ZWI3MS4uOGY3YjU4NzI3NDE2YzggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHRyX3hjaGdfaW5saW5lLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twdHJfeGNoZ19pbmxpbmUuY1xuQEAgLTE0LDcgJiM0MzsxNCw4IEBAIHZvaWQgdGVzdF9rcHRyX3hjaGdfaW5saW5lKHZvaWQpXG4gXHRpbnQgZXJyO1xuIFxuICNpZiAhKGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgXFxcbi0gICAgICAoZGVmaW5lZChfX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSlcbiYjNDM7ICAgICAgKGRlZmluZWQoX19yaXNjdikgXHUwMDI2XHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkgfHwgXFxcbiYjNDM7ICAgICAgKGRlZmluZWQoX19sb29uZ2FyY2hfXykgXHUwMDI2XHUwMDI2IF9fbG9vbmdhcmNoX2dybGVuID09IDY0KSlcbiBcdHRlc3RfX3NraXAoKTtcbiBcdHJldHVybjtcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva3B0cl94Y2hnX2JlbmNoLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva3B0cl94Y2hnX2JlbmNoLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMzYzODgzMDczZTJjMGVcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rcHRyX3hjaGdfYmVuY2guY1xuQEAgLTAsMCAmIzQzOzEsNDkgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7LyogQ29weXJpZ2h0IChDKSAyMDI2LiBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWQgKi9cbiYjNDM7I2luY2x1ZGUgXCYjMzQ7dm1saW51eC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcJiMzNDticGZfZXhwZXJpbWVudGFsLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7YnBmX21pc2MuaFwmIzM0O1xuJiM0MztcbiYjNDM7Y2hhciBfbGljZW5zZVtdIFNFQyhcJiMzNDtsaWNlbnNlXCYjMzQ7KSA9IFwmIzM0O0dQTFwmIzM0OztcbiYjNDM7XG4mIzQzOyNkZWZpbmUgTUFYX1hDSEdfTE9PUFMgNDA5NlxuJiM0MztcbiYjNDM7c3RydWN0IGJpbl9kYXRhIHtcbiYjNDM7XHRjaGFyIGJsb2JbMzJdO1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7I2RlZmluZSBwcml2YXRlKG5hbWUpIFNFQyhcJiMzNDsuYnNzLlwmIzM0OyAjbmFtZSkgX19oaWRkZW4gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpXG4mIzQzO1xuJiM0Mztwcml2YXRlKGtwdHIpIHN0cnVjdCBiaW5fZGF0YSBfX2twdHIgKnB0cjtcbiYjNDM7dTMyIG5yX2xvb3BzID0gMjU2O1xuJiM0Mztsb25nIGhpdHM7XG4mIzQzO1xuJiM0MztTRUMoXCYjMzQ7ZmVudHJ5L1wmIzM0OyBTWVNfUFJFRklYIFwmIzM0O3N5c19nZXRwZ2lkXCYjMzQ7KVxuJiM0MztpbnQgYmVuY2htYXJrKHZvaWQgKmN0eClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBiaW5fZGF0YSAqb2xkO1xuJiM0MztcdHUzMiBpO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhfWENIR19MT09QUzsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGlmIChpIFx1MDAzZT0gbnJfbG9vcHMpXG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcbiYjNDM7XHRcdG9sZCA9IGJwZl9rcHRyX3hjaGcoXHUwMDI2cHRyLCBOVUxMKTtcbiYjNDM7XHRcdGlmIChvbGQpXG4mIzQzO1x0XHRcdGJwZl9vYmpfZHJvcChvbGQpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0X19zeW5jX2FkZF9hbmRfZmV0Y2goXHUwMDI2aGl0cywgaSk7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIEJURiBGVU5DIHJlY29yZHMgYXJlIG5vdCBnZW5lcmF0ZWQgZm9yIGtmdW5jcyByZWZlcmVuY2VkIG9ubHkgdGhyb3VnaFxuJiM0MzsgKiBvcHRpbWl6ZWQgcGF0aHMuIEtlZXAgYnBmX29ial9kcm9wKCkgdmlzaWJsZSB0byBsaWJicGYmIzM5O3Mga2Z1bmMgbGlua2VyLlxuJiM0MzsgKi9cbiYjNDM7dm9pZCBfX2J0Zl9yb290KHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRicGZfb2JqX2Ryb3AoTlVMTCk7XG4mIzQzO31cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzozOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1pdF9hdG9taWNfcm13JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyIHRvIHVzZSBuZXcgYXRvbWljIGluc3RydWN0aW9ucyAoZS5nLiwgYW1hZGRkYmIsIGFtc3dhcGRiYikgZm9yIEJQRiBhdG9taWMgb3BlcmF0aW9ucyBhbmQgZW5hYmxlcyBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBvbiBMb29uZ0FyY2gsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgbG9hZGluZyBhbmQgZXhlY3V0aW5nIEJQRiBwcm9ncmFtcyB3aXRoIGF0b21pYyBvcGVyYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxZDVhZDY3N2MyMGU3ODkzZTJhMTJmZmZkMjc0OWVjNGUwNzYxMTRkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdW4gMjIgMDc6Mzg6NTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmgKaW5kZXggNzZiNzIzNTkwMDIzZDcuLmJkYmMxN2QwNzExMDVlIDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oCkBAIC0xOTksNiAmIzQzOzE5OSwxMCBAQCBlbnVtIHJlZzNfb3AgewogCWFtc3dhcGhfb3AJPSAweDcwYjksCiAJYW1hZGRiX29wCT0gMHg3MGJhLAogCWFtYWRkaF9vcAk9IDB4NzBiYiwKJiM0MzsJYW1zd2FwZGJiX29wCT0gMHg3MGJjLAomIzQzOwlhbXN3YXBkYmhfb3AJPSAweDcwYmQsCiYjNDM7CWFtYWRkZGJiX29wCT0gMHg3MGJlLAomIzQzOwlhbWFkZGRiaF9vcAk9IDB4NzBiZiwKIAlhbXN3YXB3X29wCT0gMHg3MGMwLAogCWFtc3dhcGRfb3AJPSAweDcwYzEsCiAJYW1hZGR3X29wCT0gMHg3MGMyLApAQCAtNzgzLDYgJiM0Mzs3ODcsMjAgQEAgREVGX0VNSVRfUkVHM19GT1JNQVQoYW1zd2FwYiwgYW1zd2FwYl9vcCkKIERFRl9FTUlUX1JFRzNfRk9STUFUKGFtc3dhcGgsIGFtc3dhcGhfb3ApCiBERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXB3LCBhbXN3YXB3X29wKQogREVGX0VNSVRfUkVHM19GT1JNQVQoYW1zd2FwZCwgYW1zd2FwZF9vcCkKJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBkYmIsIGFtc3dhcGRiYl9vcCkKJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBkYmgsIGFtc3dhcGRiaF9vcCkKJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbWFkZGRiYiwgYW1hZGRkYmJfb3ApCiYjNDM7REVGX0VNSVRfUkVHM19GT1JNQVQoYW1hZGRkYmgsIGFtYWRkZGJoX29wKQomIzQzO0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtYWRkZGJ3LCBhbWFkZGRid19vcCkKJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbWFkZGRiZCwgYW1hZGRkYmRfb3ApCiYjNDM7REVGX0VNSVRfUkVHM19GT1JNQVQoYW1hbmRkYncsIGFtYW5kZGJ3X29wKQomIzQzO0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtYW5kZGJkLCBhbWFuZGRiZF9vcCkKJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbW9yZGJ3LCBhbW9yZGJ3X29wKQomIzQzO0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtb3JkYmQsIGFtb3JkYmRfb3ApCiYjNDM7REVGX0VNSVRfUkVHM19GT1JNQVQoYW14b3JkYncsIGFteG9yZGJ3X29wKQomIzQzO0RFRl9FTUlUX1JFRzNfRk9STUFUKGFteG9yZGJkLCBhbXhvcmRiZF9vcCkKJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBkYncsIGFtc3dhcGRid19vcCkKJiM0MztERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBkYmQsIGFtc3dhcGRiZF9vcCkKIAogI2RlZmluZSBERUZfRU1JVF9SRUczU0EyX0ZPUk1BVChOQU1FLCBPUCkJCQkJXAogc3RhdGljIGlubGluZSB2b2lkIGVtaXRfIyNOQU1FKHVuaW9uIGxvb25nYXJjaF9pbnN0cnVjdGlvbiAqaW5zbiwJXApkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMKaW5kZXggMjQ5MTNkYzdmNGU4MzUuLmZmZmY1MjFiM2M4MDg4IDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMKQEAgLTcsNiAmIzQzOzcsOSBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L21lbW9yeS5oJmd0OwogI2luY2x1ZGUgJiMzNDticGZfaml0LmgmIzM0OwogCiYjNDM7LyogZGJhciBoaW50IGZvciBsbC9zYyBjb21wbGV0aW9uIG9yZGVyaW5nLCBzZWUgX19XRUFLX0xMU0NfTUIgKi8KJiM0MzsjZGVmaW5lIERCQVJfTExTQ19NQgkweDcwMAomIzQzOwogI2RlZmluZSBMT09OR0FSQ0hfTUFYX1JFR19BUkdTIDgKIAogI2RlZmluZSBMT09OR0FSQ0hfTE9OR19KVU1QX05JTlNOUyA1CkBAIC00MTgsNyAmIzQzOzQyMSw3IEBAIHN0YXRpYyBpbnQgZW1pdF9hdG9taWNfcm13KGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eCkKIAkJCQlwcl9lcnJfb25jZSgmIzM0O2JwZi1qaXQ6IGFtYWRkLmIgaW5zdHJ1Y3Rpb24gaXMgbm90IHN1cHBvcnRlZFxuJiMzNDspOwogCQkJCXJldHVybiAtRUlOVkFMOwogCQkJfQotCQkJZW1pdF9pbnNuKGN0eCwgYW1hZGRiLCBzcmMsIHQxLCB0Myk7CiYjNDM7CQkJZW1pdF9pbnNuKGN0eCwgYW1hZGRkYmIsIHNyYywgdDEsIHQzKTsKIAkJCWVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7CiAJCQlicmVhazsKIAkJY2FzZSBCUEZfSDoKQEAgLTQyNiwzOSAmIzQzOzQyOSwzOSBAQCBzdGF0aWMgaW50IGVtaXRfYXRvbWljX3Jtdyhjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgpCiAJCQkJcHJfZXJyX29uY2UoJiMzNDticGYtaml0OiBhbWFkZC5oIGluc3RydWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWRcbiYjMzQ7KTsKIAkJCQlyZXR1cm4gLUVJTlZBTDsKIAkJCX0KLQkJCWVtaXRfaW5zbihjdHgsIGFtYWRkaCwgc3JjLCB0MSwgdDMpOwomIzQzOwkJCWVtaXRfaW5zbihjdHgsIGFtYWRkZGJoLCBzcmMsIHQxLCB0Myk7CiAJCQllbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpOwogCQkJYnJlYWs7CiAJCWNhc2UgQlBGX1c6Ci0JCQllbWl0X2luc24oY3R4LCBhbWFkZHcsIHNyYywgdDEsIHQzKTsKJiM0MzsJCQllbWl0X2luc24oY3R4LCBhbWFkZGRidywgc3JjLCB0MSwgdDMpOwogCQkJZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTsKIAkJCWJyZWFrOwogCQljYXNlIEJQRl9EVzoKLQkJCWVtaXRfaW5zbihjdHgsIGFtYWRkZCwgc3JjLCB0MSwgdDMpOwomIzQzOwkJCWVtaXRfaW5zbihjdHgsIGFtYWRkZGJkLCBzcmMsIHQxLCB0Myk7CiAJCQlicmVhazsKIAkJfQogCQlicmVhazsKIAljYXNlIEJQRl9BTkQgfCBCUEZfRkVUQ0g6CiAJCWlmIChpc2R3KSB7Ci0JCQllbWl0X2luc24oY3R4LCBhbWFuZGQsIHNyYywgdDEsIHQzKTsKJiM0MzsJCQllbWl0X2luc24oY3R4LCBhbWFuZGRiZCwgc3JjLCB0MSwgdDMpOwogCQl9IGVsc2UgewotCQkJZW1pdF9pbnNuKGN0eCwgYW1hbmR3LCBzcmMsIHQxLCB0Myk7CiYjNDM7CQkJZW1pdF9pbnNuKGN0eCwgYW1hbmRkYncsIHNyYywgdDEsIHQzKTsKIAkJCWVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBCUEZfT1IgfCBCUEZfRkVUQ0g6CiAJCWlmIChpc2R3KSB7Ci0JCQllbWl0X2luc24oY3R4LCBhbW9yZCwgc3JjLCB0MSwgdDMpOwomIzQzOwkJCWVtaXRfaW5zbihjdHgsIGFtb3JkYmQsIHNyYywgdDEsIHQzKTsKIAkJfSBlbHNlIHsKLQkJCWVtaXRfaW5zbihjdHgsIGFtb3J3LCBzcmMsIHQxLCB0Myk7CiYjNDM7CQkJZW1pdF9pbnNuKGN0eCwgYW1vcmRidywgc3JjLCB0MSwgdDMpOwogCQkJZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTsKIAkJfQogCQlicmVhazsKIAljYXNlIEJQRl9YT1IgfCBCUEZfRkVUQ0g6CiAJCWlmIChpc2R3KSB7Ci0JCQllbWl0X2luc24oY3R4LCBhbXhvcmQsIHNyYywgdDEsIHQzKTsKJiM0MzsJCQllbWl0X2luc24oY3R4LCBhbXhvcmRiZCwgc3JjLCB0MSwgdDMpOwogCQl9IGVsc2UgewotCQkJZW1pdF9pbnNuKGN0eCwgYW14b3J3LCBzcmMsIHQxLCB0Myk7CiYjNDM7CQkJZW1pdF9pbnNuKGN0eCwgYW14b3JkYncsIHNyYywgdDEsIHQzKTsKIAkJCWVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7CiAJCX0KIAkJYnJlYWs7CkBAIC00NzAsNyAmIzQzOzQ3Myw3IEBAIHN0YXRpYyBpbnQgZW1pdF9hdG9taWNfcm13KGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eCkKIAkJCQlwcl9lcnJfb25jZSgmIzM0O2JwZi1qaXQ6IGFtc3dhcC5iIGluc3RydWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWRcbiYjMzQ7KTsKIAkJCQlyZXR1cm4gLUVJTlZBTDsKIAkJCX0KLQkJCWVtaXRfaW5zbihjdHgsIGFtc3dhcGIsIHNyYywgdDEsIHQzKTsKJiM0MzsJCQllbWl0X2luc24oY3R4LCBhbXN3YXBkYmIsIHNyYywgdDEsIHQzKTsKIAkJCWVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7CiAJCQlicmVhazsKIAkJY2FzZSBCUEZfSDoKQEAgLTQ3OCwxNSAmIzQzOzQ4MSwxNSBAQCBzdGF0aWMgaW50IGVtaXRfYXRvbWljX3Jtdyhjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgpCiAJCQkJcHJfZXJyX29uY2UoJiMzNDticGYtaml0OiBhbXN3YXAuaCBpbnN0cnVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkXG4mIzM0Oyk7CiAJCQkJcmV0dXJuIC1FSU5WQUw7CiAJCQl9Ci0JCQllbWl0X2luc24oY3R4LCBhbXN3YXBoLCBzcmMsIHQxLCB0Myk7CiYjNDM7CQkJZW1pdF9pbnNuKGN0eCwgYW1zd2FwZGJoLCBzcmMsIHQxLCB0Myk7CiAJCQllbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpOwogCQkJYnJlYWs7CiAJCWNhc2UgQlBGX1c6Ci0JCQllbWl0X2luc24oY3R4LCBhbXN3YXB3LCBzcmMsIHQxLCB0Myk7CiYjNDM7CQkJZW1pdF9pbnNuKGN0eCwgYW1zd2FwZGJ3LCBzcmMsIHQxLCB0Myk7CiAJCQllbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpOwogCQkJYnJlYWs7CiAJCWNhc2UgQlBGX0RXOgotCQkJZW1pdF9pbnNuKGN0eCwgYW1zd2FwZCwgc3JjLCB0MSwgdDMpOwomIzQzOwkJCWVtaXRfaW5zbihjdHgsIGFtc3dhcGRiZCwgc3JjLCB0MSwgdDMpOwogCQkJYnJlYWs7CiAJCX0KIAkJYnJlYWs7CkBAIC01MDksNiAmIzQzOzUxMiw3IEBAIHN0YXRpYyBpbnQgZW1pdF9hdG9taWNfcm13KGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eCkKIAkJCWVtaXRfaW5zbihjdHgsIGJlcSwgdDMsIExPT05HQVJDSF9HUFJfWkVSTywgLTYpOwogCQkJZW1pdF96ZXh0XzMyKGN0eCwgcjAsIHRydWUpOwogCQl9CiYjNDM7CQllbWl0X2luc24oY3R4LCBkYmFyLCBEQkFSX0xMU0NfTUIpOwogCQlicmVhazsKIAlkZWZhdWx0OgogCQlwcl9lcnJfb25jZSgmIzM0O2JwZi1qaXQ6IGludmFsaWQgYXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlIG9wY29kZSAlMDJ4XG4mIzM0OywgaW1tKTsKQEAgLTIzNjIsNiAmIzQzOzIzNjYsMTEgQEAgYm9vbCBicGZfaml0X3N1cHBvcnRzX2ZzZXNzaW9uKHZvaWQpCiAJcmV0dXJuIHRydWU7CiB9CiAKJiM0Mztib29sIGJwZl9qaXRfc3VwcG9ydHNfcHRyX3hjaGcodm9pZCkKJiM0Mzt7CiYjNDM7CXJldHVybiB0cnVlOwomIzQzO30KJiM0MzsKIC8qIEluZGljYXRlIHRoZSBKSVQgYmFja2VuZCBzdXBwb3J0cyBtaXhpbmcgYnBmMmJwZiBhbmQgdGFpbGNhbGxzLiAqLwogYm9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpCiB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUKaW5kZXggNmVmNjg3MmFkYmMzZTEuLmVhNGMyMmUyMGYzYzgwIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlCkBAIC04NjYsNiAmIzQzOzg2Niw3IEBAICQoT1VUUFVUKS9iZW5jaF9odGFiX21lbS5vOiAkKE9VVFBVVCkvaHRhYl9tZW1fYmVuY2guc2tlbC5oCiAkKE9VVFBVVCkvYmVuY2hfYnBmX2NyeXB0by5vOiAkKE9VVFBVVCkvY3J5cHRvX2JlbmNoLnNrZWwuaAogJChPVVRQVVQpL2JlbmNoX3NvY2ttYXAubzogJChPVVRQVVQpL2JlbmNoX3NvY2ttYXBfcHJvZy5za2VsLmgKICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubzogJChPVVRQVVQpL2xwbV90cmllX2JlbmNoLnNrZWwuaCAkKE9VVFBVVCkvbHBtX3RyaWVfbWFwLnNrZWwuaAomIzQzOyQoT1VUUFVUKS9iZW5jaF9rcHRyX3hjaGcubzogJChPVVRQVVQpL2twdHJfeGNoZ19iZW5jaC5za2VsLmgKICQoT1VUUFVUKS9iZW5jaC5vOiBiZW5jaC5oIHRlc3RpbmdfaGVscGVycy5oICQoQlBGT0JKKQogJChPVVRQVVQpL2JlbmNoOiBMRExJQlMgJiM0Mzs9IC1sbQogJChPVVRQVVQpL2JlbmNoOiAkKE9VVFBVVCkvYmVuY2gubyBcCkBAIC04ODgsNiAmIzQzOzg4OSw3IEBAICQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXAogCQkgJChPVVRQVVQpL2JlbmNoX2JwZl9jcnlwdG8ubyBcCiAJCSAkKE9VVFBVVCkvYmVuY2hfc29ja21hcC5vIFwKIAkJICQoT1VUUFVUKS9iZW5jaF9scG1fdHJpZV9tYXAubyBcCiYjNDM7CQkgJChPVVRQVVQpL2JlbmNoX2twdHJfeGNoZy5vIFwKIAkJICQoT1VUUFVUKS91c2R0XzEubyBcCiAJCSAkKE9VVFBVVCkvdXNkdF8yLm8gXAogCQkgIwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNoLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guYwppbmRleCAwMjliM2UyMWY0Mzg0Ni4uMmI2ZGQ4YWVjMjgyZjIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaC5jCkBAIC01NzUsNiAmIzQzOzU3NSw3IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfaW5zZXJ0OwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9scG1fdHJpZV91cGRhdGU7CiBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2xwbV90cmllX2RlbGV0ZTsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfZnJlZTsKJiM0MztleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2twdHJfeGNoZzsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBiZW5jaCAqYmVuY2hzW10gPSB7CiAJJmFtcDtiZW5jaF9jb3VudF9nbG9iYWwsCkBAIC02NTMsNiAmIzQzOzY1NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYmVuY2ggKmJlbmNoc1tdID0gewogCSZhbXA7YmVuY2hfbHBtX3RyaWVfdXBkYXRlLAogCSZhbXA7YmVuY2hfbHBtX3RyaWVfZGVsZXRlLAogCSZhbXA7YmVuY2hfbHBtX3RyaWVfZnJlZSwKJiM0MzsJJmFtcDtiZW5jaF9rcHRyX3hjaGcsCiB9OwogCiBzdGF0aWMgdm9pZCBmaW5kX2JlbmNobWFyayh2b2lkKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9rcHRyX3hjaGcuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfa3B0cl94Y2hnLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmI4YTBkMzQ2ZmRhNjg4Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9rcHRyX3hjaGcuYwpAQCAtMCwwICYjNDM7MSw5NiBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7LyogQ29weXJpZ2h0IChDKSAyMDI2LiBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWQgKi8KJiM0MzsjaW5jbHVkZSAmbHQ7YXJncC5oJmd0OwomIzQzOyNpbmNsdWRlICYjMzQ7YmVuY2guaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtrcHRyX3hjaGdfYmVuY2guc2tlbC5oJiMzNDsKJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IGN0eCB7CiYjNDM7CXN0cnVjdCBrcHRyX3hjaGdfYmVuY2ggKnNrZWw7CiYjNDM7fSBjdHg7CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCB7CiYjNDM7CV9fdTMyIG5yX2xvb3BzOwomIzQzO30gYXJncyA9IHsKJiM0MzsJLm5yX2xvb3BzID0gMjU2LAomIzQzO307CiYjNDM7CiYjNDM7ZW51bSB7CiYjNDM7CUFSR19OUl9MT09QUyA9IDcwMDAsCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdHNbXSA9IHsKJiM0MzsJeyAmIzM0O25yX2xvb3BzJiMzNDssIEFSR19OUl9MT09QUywgJiMzNDtucl9sb29wcyYjMzQ7LCAwLAomIzQzOwkgICYjMzQ7U2V0IG51bWJlciBvZiBicGZfa3B0cl94Y2hnKCkgY2FsbHMgcGVyIHRyaWdnZXImIzM0O30sCiYjNDM7CXt9LAomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIGVycm9yX3QgcGFyc2VfYXJnKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKQomIzQzO3sKJiM0MzsJc3dpdGNoIChrZXkpIHsKJiM0MzsJY2FzZSBBUkdfTlJfTE9PUFM6CiYjNDM7CQlhcmdzLm5yX2xvb3BzID0gc3RydG9sKGFyZywgTlVMTCwgMTApOwomIzQzOwkJYnJlYWs7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlyZXR1cm4gQVJHUF9FUlJfVU5LTk9XTjsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwIGJlbmNoX2twdHJfeGNoZ19hcmdwID0gewomIzQzOwkub3B0aW9ucyA9IG9wdHMsCiYjNDM7CS5wYXJzZXIgPSBwYXJzZV9hcmcsCiYjNDM7fTsKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB2YWxpZGF0ZSh2b2lkKQomIzQzO3sKJiM0MzsJaWYgKGVudi5jb25zdW1lcl9jbnQgIT0gMCkgewomIzQzOwkJZnByaW50ZihzdGRlcnIsICYjMzQ7YmVuY2htYXJrIGRvZXNuJiMzOTt0IHN1cHBvcnQgY29uc3VtZXIhXG4mIzM0Oyk7CiYjNDM7CQlleGl0KDEpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkICpwcm9kdWNlcih2b2lkICppbnB1dCkKJiM0Mzt7CiYjNDM7CXdoaWxlICh0cnVlKQomIzQzOwkJc3lzY2FsbChfX05SX2dldHBnaWQpOwomIzQzOwomIzQzOwlyZXR1cm4gTlVMTDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgbWVhc3VyZShzdHJ1Y3QgYmVuY2hfcmVzICpyZXMpCiYjNDM7ewomIzQzOwlyZXMtJmd0O2hpdHMgPSBhdG9taWNfc3dhcCgmYW1wO2N0eC5za2VsLSZndDtic3MtJmd0O2hpdHMsIDApOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBzZXR1cCh2b2lkKQomIzQzO3sKJiM0MzsJc3RydWN0IGJwZl9saW5rICpsaW5rOwomIzQzOwomIzQzOwlzZXR1cF9saWJicGYoKTsKJiM0MzsKJiM0MzsJY3R4LnNrZWwgPSBrcHRyX3hjaGdfYmVuY2hfX29wZW5fYW5kX2xvYWQoKTsKJiM0MzsJaWYgKCFjdHguc2tlbCkgewomIzQzOwkJZnByaW50ZihzdGRlcnIsICYjMzQ7ZmFpbGVkIHRvIG9wZW4gc2tlbGV0b25cbiYjMzQ7KTsKJiM0MzsJCWV4aXQoMSk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJY3R4LnNrZWwtJmd0O2RhdGEtJmd0O25yX2xvb3BzID0gYXJncy5ucl9sb29wczsKJiM0MzsKJiM0MzsJbGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2goY3R4LnNrZWwtJmd0O3Byb2dzLmJlbmNobWFyayk7CiYjNDM7CWlmICghbGluaykgewomIzQzOwkJZnByaW50ZihzdGRlcnIsICYjMzQ7ZmFpbGVkIHRvIGF0dGFjaCBwcm9ncmFtIVxuJiMzNDspOwomIzQzOwkJZXhpdCgxKTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0Mztjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfa3B0cl94Y2hnID0gewomIzQzOwkubmFtZSA9ICYjMzQ7a3B0ci14Y2hnJiMzNDssCiYjNDM7CS5hcmdwID0gJmFtcDtiZW5jaF9rcHRyX3hjaGdfYXJncCwKJiM0MzsJLnZhbGlkYXRlID0gdmFsaWRhdGUsCiYjNDM7CS5zZXR1cCA9IHNldHVwLAomIzQzOwkucHJvZHVjZXJfdGhyZWFkID0gcHJvZHVjZXIsCiYjNDM7CS5tZWFzdXJlID0gbWVhc3VyZSwKJiM0MzsJLnJlcG9ydF9wcm9ncmVzcyA9IG9wc19yZXBvcnRfcHJvZ3Jlc3MsCiYjNDM7CS5yZXBvcnRfZmluYWwgPSBvcHNfcmVwb3J0X2ZpbmFsLAomIzQzO307CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHRyX3hjaGdfaW5saW5lLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHRyX3hjaGdfaW5saW5lLmMKaW5kZXggN2RlZjE1OGRhOWViNzEuLjhmN2I1ODcyNzQxNmM4IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHRyX3hjaGdfaW5saW5lLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3B0cl94Y2hnX2lubGluZS5jCkBAIC0xNCw3ICYjNDM7MTQsOCBAQCB2b2lkIHRlc3Rfa3B0cl94Y2hnX2lubGluZSh2b2lkKQogCWludCBlcnI7CiAKICNpZiAhKGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgXAotICAgICAgKGRlZmluZWQoX19yaXNjdikgJmFtcDsmYW1wOyBfX3Jpc2N2X3hsZW4gPT0gNjQpKQomIzQzOyAgICAgIChkZWZpbmVkKF9fcmlzY3YpICZhbXA7JmFtcDsgX19yaXNjdl94bGVuID09IDY0KSB8fCBcCiYjNDM7ICAgICAgKGRlZmluZWQoX19sb29uZ2FyY2hfXykgJmFtcDsmYW1wOyBfX2xvb25nYXJjaF9ncmxlbiA9PSA2NCkpCiAJdGVzdF9fc2tpcCgpOwogCXJldHVybjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2twdHJfeGNoZ19iZW5jaC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2twdHJfeGNoZ19iZW5jaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi4zNjM4ODMwNzNlMmMwZQotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9rcHRyX3hjaGdfYmVuY2guYwpAQCAtMCwwICYjNDM7MSw0OSBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7LyogQ29weXJpZ2h0IChDKSAyMDI2LiBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWQgKi8KJiM0MzsjaW5jbHVkZSAmIzM0O3ZtbGludXguaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJmx0O2JwZi9icGZfaGVscGVycy5oJmd0OwomIzQzOwomIzQzOyNpbmNsdWRlICYjMzQ7YnBmX2V4cGVyaW1lbnRhbC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O2JwZl9taXNjLmgmIzM0OwomIzQzOwomIzQzO2NoYXIgX2xpY2Vuc2VbXSBTRUMoJiMzNDtsaWNlbnNlJiMzNDspID0gJiMzNDtHUEwmIzM0OzsKJiM0MzsKJiM0MzsjZGVmaW5lIE1BWF9YQ0hHX0xPT1BTIDQwOTYKJiM0MzsKJiM0MztzdHJ1Y3QgYmluX2RhdGEgewomIzQzOwljaGFyIGJsb2JbMzJdOwomIzQzO307CiYjNDM7CiYjNDM7I2RlZmluZSBwcml2YXRlKG5hbWUpIFNFQygmIzM0Oy5ic3MuJiMzNDsgI25hbWUpIF9faGlkZGVuIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKQomIzQzOwomIzQzO3ByaXZhdGUoa3B0cikgc3RydWN0IGJpbl9kYXRhIF9fa3B0ciAqcHRyOwomIzQzO3UzMiBucl9sb29wcyA9IDI1NjsKJiM0Mztsb25nIGhpdHM7CiYjNDM7CiYjNDM7U0VDKCYjMzQ7ZmVudHJ5LyYjMzQ7IFNZU19QUkVGSVggJiMzNDtzeXNfZ2V0cGdpZCYjMzQ7KQomIzQzO2ludCBiZW5jaG1hcmsodm9pZCAqY3R4KQomIzQzO3sKJiM0MzsJc3RydWN0IGJpbl9kYXRhICpvbGQ7CiYjNDM7CXUzMiBpOwomIzQzOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgTUFYX1hDSEdfTE9PUFM7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlpZiAoaSAmZ3Q7PSBucl9sb29wcykKJiM0MzsJCQlicmVhazsKJiM0MzsKJiM0MzsJCW9sZCA9IGJwZl9rcHRyX3hjaGcoJmFtcDtwdHIsIE5VTEwpOwomIzQzOwkJaWYgKG9sZCkKJiM0MzsJCQlicGZfb2JqX2Ryb3Aob2xkKTsKJiM0MzsJfQomIzQzOwomIzQzOwlfX3N5bmNfYWRkX2FuZF9mZXRjaCgmYW1wO2hpdHMsIGkpOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBCVEYgRlVOQyByZWNvcmRzIGFyZSBub3QgZ2VuZXJhdGVkIGZvciBrZnVuY3MgcmVmZXJlbmNlZCBvbmx5IHRocm91Z2gKJiM0MzsgKiBvcHRpbWl6ZWQgcGF0aHMuIEtlZXAgYnBmX29ial9kcm9wKCkgdmlzaWJsZSB0byBsaWJicGYmIzM5O3Mga2Z1bmMgbGlua2VyLgomIzQzOyAqLwomIzQzO3ZvaWQgX19idGZfcm9vdCh2b2lkKQomIzQzO3sKJiM0MzsJYnBmX29ial9kcm9wKE5VTEwpOwomIzQzO30KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc3MgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDUxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBMb29uZ0FyY2ggQlBGIEpJVDogQSBGZWFzaWJpbGl0eSBBc3Nlc3NtZW50KioKCk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCBzZXJpZXMgaGVyZSwgYW5kIGl0JiMzOTtzIHRvdWNoaW5nIGBhcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhgLCBgYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY2AsIGFuZCBzb21lIEJQRiBzZWxmdGVzdHMuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgYWRkaW5nIG5ldyBMb29uZ0FyY2ggaW5zdHJ1Y3Rpb25zIGZvciBhdG9taWMgb3BlcmF0aW9ucyDigJMgYGFtc3dhcGRiYl9vcGAsIGBhbWFkZGRiYl9vcGAsIGFuZCBzbyBvbiDigJMgYW5kIHRoZW4gKnVzaW5nKiB0aG9zZSBpbnN0cnVjdGlvbnMgd2l0aGluIHRoZSBCUEYgSklUIGNvbXBpbGVyIHNwZWNpZmljYWxseSBmb3IgdGhlIExvb25nQXJjaCBhcmNoaXRlY3R1cmUuIFRoaXMgYWxzbyBpbnZvbHZlcyBlbmFibGluZyBgYnBmX2ppdF9zdXBwb3J0c19wdHJfeGNoZ2AgZm9yIExvb25nQXJjaC4gVGhlIHdob2xlIHRoaW5nIGlzIGNsZWFybHkgTG9vbmdBcmNoLXNwZWNpZmljLCBzbyB0aGF0JiMzOTtzIHRoZSBzY29wZS4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpczogSXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBBbmQgdGhlIGFuc3dlciBpcyBsaWtlbHkgeWVzLiBUaGlzIGlzIG1vZGlmeWluZyB0aGUgQlBGIEpJVCBjb21waWxlciwgd2hpY2ggbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0JiMzOTtzIHJlYWNoYWJsZSBpZiB3ZSYjMzk7cmUgcnVubmluZyBvbiBMb29uZ0FyY2guCgpCdXQgdGhlbiBJIHN0YXJ0IHRvIHRoaW5rIGFib3V0IHRoZSBwcmFjdGljYWxpdGllcy4gRG9lcyBzeXprYWxsZXIgZXZlbiAqc3VwcG9ydCogTG9vbmdBcmNoIGluIGl0cyBzdGFuZGFyZCBzZXR1cCwgbGlrZSBHQ0UvUUVNVT8gSSBrbm93IGl0IGhhbmRsZXMgcmlzY3Y2NCwgYXJtNjQsIGFtZDY0LCAzODYsIGFuZCBBUk0uIFdhaXQsIGRvZXMgc3l6a2FsbGVyIGhhbmRsZSBsb29uZ2FyY2g2ND8gVGltZSB0byBjaGVjay4gVGhpcyBnZXRzIHRyaWNreSBiZWNhdXNlIHRoZSBwYXRjaCBkZXNjcmlwdGlvbiBtZW50aW9ucywgJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuLi4mIzM0OyB3aGljaCB0aHJvd3MgYSB3cmVuY2ggaW4gdGhlIHdvcmtzLgoKSG93ZXZlciwgZG9lc24mIzM5O3QgUUVNVSBhY3R1YWxseSBzdXBwb3J0IExvb25nQXJjaD8gWWVzLCBRRU1VIGRvZXMgc3VwcG9ydCBsb29uZ2FyY2g2NC4gT2theSwgc28gdGhhdCYjMzk7cyBnb29kLgoKU28sICpjYW4qIHdlIGZ1enogdGhpcyBMb29uZ0FyY2ggQlBGIEpJVD8gTGV0JiMzOTtzIHRha2UgYSBzdGVwIGJhY2suIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBjb2RlIGJlaW5nIG1vZGlmaWVkLiBObywgaXQmIzM5O3MgYWxsIHR1Y2tlZCBhd2F5IG5lYXRseSB3aXRoaW4gYGFyY2gvbG9vbmdhcmNoL2AgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYC4gT2theSwgc28gd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgcnVubmluZyB0aGlzIGZ1enppbmcgY2FtcGFpZ24gb24gTG9vbmdBcmNoLiBUaGUgcHJvYmxlbSBoZXJlIGlzIHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgbG9vbmdhcmNoNjQgaW5zdGFuY2UgaW4gaXRzIHN0YW5kYXJkIHN5emJvdCBzZXR1cCwgYnV0IGl0IG1heSBiZSBzdXBwb3J0ZWQuCgpPa2F5LCBiYWNrIHRvIHRoZSAmIzM0O2ltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzJiMzNDsgbGluZS4gUUVNVSBkb2VzIHN1cHBvcnQgbG9vbmdhcmNoNjQuIExldCYjMzk7cyBsb29rIGNsb3NlbHkgYXQgYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgLiBUaGUgYGVtaXRfYXRvbWljX3Jtd2AgZnVuY3Rpb24gaXMgdGhlIGFyZWEgb2YgaW50ZXJlc3QgaGVyZS4gVGltZSB0byBzZWFyY2ggZm9yIGBlbWl0X2F0b21pY19ybXdgIGluIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlbWl0X2F0b21pY19ybXcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MzUwPXN0YXRpYyB2b2lkIGVtaXRfc3RvcmVfc3RhY2tfaW1tNjQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IHJlZywgaW50IHN0YWNrX29mZiwgdTY0IGltbTY0KVxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMzU1LVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzozNTY6c3RhdGljIGludCBlbWl0X2F0b21pY19ybXcoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0zNTcte1xuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9NzA0PXN0YXRpYyBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgZXh0cmFfcGFzcylcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE0MjYtXHRcdGlmICghYnBmX2F0b21pY19pc19sb2FkX3N0b3JlKGluc24pKVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoxNDI3Olx0XHRcdHJldCA9IGVtaXRfYXRvbWljX3JtdyhpbnNuLCBjdHgpO1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0xNDI4LVx0XHRlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODIyNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBDb21waWxlcioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBjaGFuZ2VzIHRvIGBlbWl0X2F0b21pY19ybXdgIHdpdGhpbiBgYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY2AuIFJpZ2h0LCB0aGlzIGlzIHRoZSBCUEYgSklUIGNvbXBpbGVyIHNwZWNpZmljYWxseSBmb3IgdGhlIExvb25nQXJjaCBhcmNoaXRlY3R1cmUuIFRoZSBxdWVzdGlvbiBpczogc2hvdWxkIHdlIHByaW9yaXRpemUgdGhpcyBmb3IgZnV6emluZz8gQWJzb2x1dGVseS4gVGhlIEJQRiBKSVQgY29tcGlsZXIgaXMgYSBrbm93biB3ZWFrIHBvaW50IGFuZCBwcmltZSB0YXJnZXQgZm9yIHRoaXMga2luZCBvZiB0ZXN0aW5nLgoKTm93LCB3aGF0IGFib3V0IHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgd2UgbmVlZCB0byBjb25zaWRlcj8gSSBrbm93IHdlJiMzOTtyZSBsb29raW5nIGZvciBhbnl0aGluZyBzcGVjaWZpYyB0byB0aGUgKm1vZGlmaWVkKiBjb2RlLiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSBub3QgdG8gbGlzdCBnZW5lcmljIGNvbmZpZ3MgYXMgd2UgY2FuIGFzc3VtZSB0aGV5IGFyZSBhbHJlYWR5IGVuYWJsZWQuIGBDT05GSUdfQlBGX0pJVGAgYW5kIGBDT05GSUdfTE9PTkdBUkNIYC4gYENPTkZJR19CUEZfSklUYCBpcyBsaWtlbHkgYWxyZWFkeSBlbmFibGVkIGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBCUEYgSklUIGZpbGUsIGJ1dCBsZXQmIzM5O3MgbGlzdCBpdCBhbnl3YXkuIFRvIGJlIHNhZmUsIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB3aGF0IGVuYWJsZXMgYGJwZl9qaXQuY2AgLSBJIHNob3VsZCBjaGVjayBgYXJjaC9sb29uZ2FyY2gvS2NvbmZpZ2Agb3IgYGFyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZWAgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9qaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlLTYtI1xuYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzQ1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmU6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqCgpSaWdodCwgc28gSSYjMzk7bSBzZWVpbmcgdGhpcyBkZXBlbmRlbmN5IG9uIGBDT05GSUdfQlBGX0pJVGAuIFRoYXQmIzM5O3MgYSBnaXZlbiwgSSB1bmRlcnN0YW5kIHRoZSBuZWVkIGZvciB0aGUgSnVzdC1Jbi1UaW1lIGNvbXBpbGVyIGluIHRoaXMgY29udGV4dC4gQnV0IG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBJIG5lZWQgdG8gYmUgdGhvcm91Z2guCgpBcmUgdGhlcmUgYW55ICpvdGhlciogY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgY291bGQgcG90ZW50aWFsbHkgaW5mbHVlbmNlIHRoaXM/IEFueXRoaW5nIHJlbGF0ZWQgdG8gdGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlLCBvcHRpbWl6YXRpb25zLCBzcGVjaWZpYyBoYXJkd2FyZSBzdXBwb3J0Li4uIEkgbmVlZCB0byBjb25zaWRlciBhbGwgdGhlIGFuZ2xlcy4gTXkgaW5zdGluY3RzIGFyZSB0ZWxsaW5nIG1lIHRvIGRpZyBkZWVwZXIuCgpTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYW55dGhpbmcgcmVsYXRlZCB0byBhdG9taWMgb3BlcmF0aW9ucywgb3IgbWF5YmUgZXZlbiByZWxhdGVkIHRvIG1lbW9yeSBhY2Nlc3MuIElmIHRoaXMgaXMgcGVyZm9ybWFuY2UtY3JpdGljYWwsIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGljaCBvcHRpb25zIGFyZSBnb2luZyB0byBhZmZlY3QgdGhlIHNwZWVkIG9mIHRoYXQuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgcG90ZW50aWFsbHkgaGlkZGVuIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoZSAqZnVsbCogY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTAzMgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIENvbmZpZ3VyYXRpb24gZm9yIEJQRiBKSVQgQ29tcGlsYXRpb24qKgoKQWxyaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBCUEYgSklUIGNvbXBpbGF0aW9uIHNpdHVhdGlvbiwgYW5kIEkmIzM5O20gbm90IHNlZWluZyBhbnkgc3BlY2lmaWMsIG9idmlvdXMgY29uZmlndXJhdGlvbiBvcHRpb25zIGRlZmluZWQgd2l0aGluIGBicGZfaml0LmNgLiBUaGF0JiMzOTtzIGEgbGl0dGxlIHVudXN1YWwsIGJ1dCBub3QgbmVjZXNzYXJpbHkgYSBzaG93c3RvcHBlci4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIGJyb2FkZW4gdGhlIHNjb3BlIGFuZCBzZWUgaWYgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbmNsdWRlIGZpbGVzIG1pZ2h0IGhvbGQgdGhlIGtleS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGNoZWNrIGBhcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhgLiBNYXliZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvciBpbnN0cnVjdGlvbiBkZWZpbml0aW9ucyBhcmUgaGFuZGxlZCB0aGVyZSwgZ2l2ZW4gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBMb29uZ0FyY2guIFRoYXQmIzM5O3MgYSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHRoZSBsb3ctbGV2ZWwgZGV0YWlscyB0aGF0IHdvdWxkIGluZmx1ZW5jZSB0aGUgSklUIGNvbXBpbGVyJiMzOTtzIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaD00NDg9c3RhdGljIGlubGluZSBib29sIGlzX3JhX3NhdmVfaW5zKHVuaW9uIGxvb25nYXJjaF9pbnN0cnVjdGlvbiAqaXApXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmgtNDQ5LXtcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaDo0NTA6XHRjb25zdCB1MzIgb3Bjb2RlID0gSVNfRU5BQkxFRChDT05GSUdfMzJCSVQpID8gc3R3X29wIDogc3RkX29wO1xuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oLTQ1MS1cbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0Lmg9NDU5PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19zdGFja19hbGxvY19pbnModW5pb24gbG9vbmdhcmNoX2luc3RydWN0aW9uICppcClcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaC00NjAte1xuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oOjQ2MTpcdGNvbnN0IHUzMiBvcGNvZGUgPSBJU19FTkFCTEVEKENPTkZJR18zMkJJVCkgPyBhZGRpd19vcCA6IGFkZGlkX29wO1xuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oLTQ2Mi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTUzNAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIEpJVCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gemVyb2luZyBpbiBvbiB0aGlzIGBDT05GSUdfQlBGX0pJVGAgY29uZmlndXJhdGlvbiBvcHRpb24g4oCTIHRoYXQmIzM5O3MgdGhlIGNvcmUuIE15IHJlYWwgZm9jdXMsIHRob3VnaCwgYXJlIHRoZXNlIGNydWNpYWwgc3ltYm9sczogYGVtaXRfYXRvbWljX3Jtd2AgYW5kIGBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnYC4gQWgsIGhhbmcgb24sIGBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnYCBpcyBiYXNpY2FsbHkganVzdCBhIGJvb2xlYW4gY2hlY2ssIGEgc2ltcGxlIHRydWUvZmFsc2UgcmV0dXJuLiBTbywgaXQgbG9va3MgbGlrZSBgZW1pdF9hdG9taWNfcm13YCBpcyB0aGUgcmVhbCBoZWF2eSBsaWZ0ZXIgaGVyZSwgdGhlIG9uZSB3aGVyZSB0aGUgY29kZSBtb2RpZmljYXRpb25zIGFyZSBoYXBwZW5pbmcuIEkgbmVlZCB0byBiZSBzdXJlIHRob3VnaCwgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgdGhhdCBhcmUgYXNzb2NpYXRlZCBoZXJlPyBJIG5lZWQgdG8gY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9qaXRfc3VwcG9ydHNfcHRyX3hjaGcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MjM2ND1ib29sIGJwZl9qaXRfc3VwcG9ydHNfZnNlc3Npb24odm9pZClcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIzNjgtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIzNjk6Ym9vbCBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnKHZvaWQpXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIzNzAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNzozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTYwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYGVtaXRfYXRvbWljX3Jtd2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFllcywgaXQgaXMuIEdpdmVuIHRoYXQgaXQmIzM5O3Mgc3RhdGljIGFuZCBpdHMgcmVzcG9uc2liaWxpdHkgcmVsYXRlcyBzcGVjaWZpY2FsbHkgdG8gYXRvbWljIGluc3RydWN0aW9ucywgaXQgc2VlbXMgbGlrZSB0aGUgaWRlYWwgZm9jdXMgZm9yIG15IGludmVzdGlnYXRpb24uIENvbnNpZGVyaW5nIGBidWlsZF9pbnNuYCBjYWxscyBpdCwgdGhlIGNhbGwgcGF0aCBpdHNlbGYgbWlnaHQgYmUgcGVyZm9ybWFuY2UtY3JpdGljYWwgZHVyaW5nIEpJVCBjb21waWxhdGlvbi4gSG93ZXZlciwgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2l0aCBgZW1pdF9hdG9taWNfcm13YCwgd2hpY2ggZGVhbHMgZGlyZWN0bHkgd2l0aCB0aGUgYXRvbWljIGluc3RydWN0aW9uIGdlbmVyYXRpb24uCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5zdHJ1Y3Rpb25zIGdlbmVyYXRlZCBmb3IgYXRvbWljIG9wZXJhdGlvbnMgaW4gdGhlIExvb25nQXJjaCBCUEYgSklULCBzcGVjaWZpY2FsbHkgcmVwbGFjaW5nIGluc3RydWN0aW9ucyBsaWtlIGBhbWFkZGJgIHdpdGggc29tZXRoaW5nIGxpa2UgYGFtYWRkZGJiYCwgd2hpY2ggaGludHMgYXQgbGFyZ2VyIGRhdGEgc2l6ZXMgb3IgcGVyaGFwcyBpbnN0cnVjdGlvbiBmb3JtYXQgY2hhbmdlcy4gVGhlIHByb21wdCYjMzk7cyByZXF1aXJlbWVudCBhYm91dCAmIzM0O2ltcG9zc2libGUtdG8tcmVhY2gmIzM0OyBjb2RlIGlzIGltcG9ydGFudC4gQ2FuIHdlIGV2ZW4gcmVhY2ggdGhlIExvb25nQXJjaCBCUEYgSklUIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVU/IFllcywgd2UgY2FuLiBRRU1VIHN1cHBvcnRzIExvb25nQXJjaCwgYW5kIHdlIGNhbiBkZWZpbml0ZWx5IHJ1biBhIExvb25nQXJjaCBrZXJuZWwgd2l0aGluIGl0LCB0aHVzIG1ha2luZyB0aGlzIGNvZGUgcGF0aCByZWFjaGFibGUuCgpUaGUga2V5IGNvbmZpZ3VyYXRpb24gdG8gbm90ZSBoZXJlIGlzIGBCUEZfSklUYC4gTm93LCBsb29raW5nIGF0IHRoZSBzeW1ib2xzLCB0aGUgcHJpbWFyeSBmb2N1cyBpcyBkZWZpbml0ZWx5IG9uIGBlbWl0X2F0b21pY19ybXdgLiBUaGlzIHBhdGNoIGVuYWJsZXMgYGJwZl9qaXRfc3VwcG9ydHNfcHRyX3hjaGdgIGFzIHdlbGwsIHNvIHRoZXJlIG11c3QgYmUgYWRkaXRpb25hbCBjaGFuZ2VzIHJlbGF0ZWQgdG8gcG9pbnRlciBleGNoYW5nZS4KClRoZSBmdW5kYW1lbnRhbCByZWFzb25pbmcgaXMgdGhhdCB0aGlzIHBhdGNoIGFsdGVycyB0aGUgaW5zdHJ1Y3Rpb24gZW1pc3Npb24gZm9yIEJQRiBhdG9taWMgb3BlcmF0aW9ucyBvbiBMb29uZ0FyY2guIFRoaXMgaXMgYSBjcml0aWNhbCBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIEJQRiBKSVQsIGFuZCBpdCYjMzk7cyBzb21ldGhpbmcgdGhhdCBjYW4gYmUgdGVzdGVkIGJ5IGV4ZWN1dGluZyBCUEYgcHJvZ3JhbXMgdGhhdCBpbmNsdWRlIGF0b21pYyBvcGVyYXRpb25zLiBNeSBtYWluIGZvY3VzIHJlbWFpbnMgb24gYGVtaXRfYXRvbWljX3Jtd2AgYW5kIGBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnYC4KCk5vdywgbG9va2luZyBkZWVwZXIsIHRoZSBjaGFuZ2VzIGFyZSBjZW50ZXJlZCBhcm91bmQgYGVtaXRfYXRvbWljX3Jtd2AgaW4gYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgIGFuZCBpbmxpbmUgZnVuY3Rpb25zLCBzdWNoIGFzIHRob3NlIGdlbmVyYXRlZCBieSBgREVGX0VNSVRfUkVHM19GT1JNQVRgIChsaWtlIGBlbWl0X2Ftc3dhcGRiYmApLCBkZWZpbmVkIGluIGBhcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhgLiBUaGVyZSBpcyBhIHRlc3QgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIHRoYXQgYmVuY2htYXJrcyBga3B0cl94Y2hnYCwgd2hpY2ggaXMgdXNlZnVsIGZvciB2YWxpZGF0aW9uLCBidXQgYGVtaXRfYXRvbWljX3Jtd2AgcmVtYWlucyB0aGUgY29yZSBhcmVhIG9mIGNvbmNlcm4uIE5vLCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBzdWJzdGFudGlhbCBmdW5jdGlvbnMgbW9kaWZpZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VtaXRfYXRvbWljX3JtdyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0zNTA9c3RhdGljIHZvaWQgZW1pdF9zdG9yZV9zdGFja19pbW02NChzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBpbnQgcmVnLCBpbnQgc3RhY2tfb2ZmLCB1NjQgaW1tNjQpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0zNTUtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjM1NjpzdGF0aWMgaW50IGVtaXRfYXRvbWljX3Jtdyhjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgpXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTM1Ny17XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz03MDQ9c3RhdGljIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eCwgYm9vbCBleHRyYV9wYXNzKVxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMTQyNi1cdFx0aWYgKCFicGZfYXRvbWljX2lzX2xvYWRfc3RvcmUoaW5zbikpXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjE0Mjc6XHRcdFx0cmV0ID0gZW1pdF9hdG9taWNfcm13KGluc24sIGN0eCk7XG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTE0MjgtXHRcdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzODQKCQkJCQkJCW91dHB1dDogMTMzCgkJCQkJCQl0aG91Z2h0czogMjkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBCUEYgSklUIExvb25nQXJjaCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSB6ZXJvZWQgaW4gb24gdGhlIGBicGZfaml0LmNgIGZpbGUuIEl0IGxvb2tzIGxpa2UgdGhlIG1haW4gZnVuY3Rpb24gaW1wYWN0ZWQgaXMgYGVtaXRfYXRvbWljX3Jtd2AsIHdoaWNoIGFsaWducyB3aXRoIHRoZSBpbnRlbnRpb24gb2YgdGhlIGNoYW5nZXMg4oCTIGZvY3VzaW5nIG9uIGF0b21pYyBvcGVyYXRpb25zLiBUaGUgYGJwZl9qaXRfc3VwcG9ydHNfcHRyX3hjaGdgIGFkZGl0aW9uIGlzIGFsc28gbm90ZXdvcnRoeSwgZGlyZWN0bHkgc3VwcG9ydGluZyB0aGUgbmV3IGF0b21pYyBpbnN0cnVjdGlvbiBpbXBsZW1lbnRhdGlvbnMuCgpOb3csIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJIHNlZSB0aGUgcmVxdWlyZW1lbnQgZm9yIGBCUEZfU1lTQ0FMTGAgZm9yIEJQRiBpbiBnZW5lcmFsLCBidXQgdGhhdCYjMzk7cyBhIGJhc2VsaW5lLiBUaGUgYEJQRl9KSVRgIGNvbmZpZyBzZWVtcyBjcml0aWNhbCBzaW5jZSB0aGlzIHBhdGNoIGlzIGRpcmVjdGx5IG1vZGlmeWluZyB0aGUgSklUIGNvbXBpbGVyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IGxpc3QgYW55dGhpbmcgdGhhdCYjMzk7cyB0b28gZ2VuZXJpYywgYW5kIGBCUEZfSklUYCBjZXJ0YWlubHkgaXNuJiMzOTt0LiBJJiMzOTtsbCBzdGljayB3aXRoIGBCUEZfSklUYCBmb3Igbm93LgoKQ29uc2lkZXJpbmcgdGhhdCB0aGUgY2hhbmdlcyBhcmUgc3BlY2lmaWMgdG8gTG9vbmdBcmNoLCBJIGNvdWxkIGNvbnNpZGVyIGlmIEkgbmVlZCB0byBpbmNsdWRlIGBMT09OR0FSQ0hgLiBIb3dldmVyLCB0aGUgcHJvbXB0IGRpcmVjdHMgbWUgdG8gbGlzdCBvbmx5IHdoYXQgaXMgbmVlZGVkLCBhbmQgYEJQRl9KSVRgIGlzIHNwZWNpZmljIGVub3VnaCwgc28gSSB3b24mIzM5O3QuCgpOb3csIGxldCBtZSBhcnRpY3VsYXRlIHRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgYW5hbHlzaXMuIFRoZSBwYXRjaCYjMzk7cyBjb3JlIGZ1bmN0aW9uIGlzIHRvIHVwZGF0ZSB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgY29tcGlsZXIgdG8gbGV2ZXJhZ2UgbmV3IGF0b21pYyBpbnN0cnVjdGlvbnMgbGlrZSBgYW1hZGRkYmJgIGFuZCBgYW1zd2FwZGJiYCB0byBvcHRpbWl6ZSBCUEYgYXRvbWljIG9wZXJhdGlvbnMsIGFuZCBpdCBhbHNvIGVuYWJsZXMgYGJwZl9qaXRfc3VwcG9ydHNfcHRyX3hjaGdgLiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgZW5oYW5jZW1lbnQgdG8gdGhlIEJQRiBKSVQgbG9naWMuIFRoaXMgbWVhbnMgdGhpcyBjYW4gYmUgZnV6emVkIHRocm91Z2ggQlBGIHByb2dyYW1zIHRoYXQgdXNlIGF0b21pYyBvcGVyYXRpb25zLgoKTXkgZm9jdXMgc3ltYm9scyBhcmUgYGVtaXRfYXRvbWljX3Jtd2AuCgpBbmQgbXkgc2VsZWN0ZWQgY29uZmlnIGlzIGBCUEZfSklUYC4KCkkmIzM5O20gcmVhZHkgdG8gcHJvY2VlZCB3aXRoIHNldHRpbmcgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1pdF9hdG9taWNfcm13JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyIHRvIHVzZSBuZXcgYXRvbWljIGluc3RydWN0aW9ucyAoZS5nLiwgYW1hZGRkYmIsIGFtc3dhcGRiYikgZm9yIEJQRiBhdG9taWMgb3BlcmF0aW9ucyBhbmQgZW5hYmxlcyBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBvbiBMb29uZ0FyY2gsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgbG9hZGluZyBhbmQgZXhlY3V0aW5nIEJQRiBwcm9ncmFtcyB3aXRoIGF0b21pYyBvcGVyYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZW1pdF9hdG9taWNfcm13JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyIHRvIHVzZSBuZXcgYXRvbWljIGluc3RydWN0aW9ucyAoZS5nLiwgYW1hZGRkYmIsIGFtc3dhcGRiYikgZm9yIEJQRiBhdG9taWMgb3BlcmF0aW9ucyBhbmQgZW5hYmxlcyBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBvbiBMb29uZ0FyY2gsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgbG9hZGluZyBhbmQgZXhlY3V0aW5nIEJQRiBwcm9ncmFtcyB3aXRoIGF0b21pYyBvcGVyYXRpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDc6Mzk6MDAuMzYyMDM2MTE4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE2ODA5OTk0MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVtaXRfYXRvbWljX3Jtd1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyIHRvIHVzZSBuZXcgYXRvbWljIGluc3RydWN0aW9ucyAoZS5nLiwgYW1hZGRkYmIsIGFtc3dhcGRiYikgZm9yIEJQRiBhdG9taWMgb3BlcmF0aW9ucyBhbmQgZW5hYmxlcyBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBvbiBMb29uZ0FyY2gsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgbG9hZGluZyBhbmQgZXhlY3V0aW5nIEJQRiBwcm9ncmFtcyB3aXRoIGF0b21pYyBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzozOTowMC4zNjIwNDI2MjlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTMzODUwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDFkNWFkNjc3YzIwZTc4OTNlMmExMmZmZmQyNzQ5ZWM0ZTA3NjExNGRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdW4gMjIgMDc6Mzg6NTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXFxuaW5kZXggNzZiNzIzNTkwMDIzZDcuLmJkYmMxN2QwNzExMDVlIDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxcbkBAIC0xOTksNiArMTk5LDEwIEBAIGVudW0gcmVnM19vcCB7XFxuIFxcdGFtc3dhcGhfb3BcXHQ9IDB4NzBiOSxcXG4gXFx0YW1hZGRiX29wXFx0PSAweDcwYmEsXFxuIFxcdGFtYWRkaF9vcFxcdD0gMHg3MGJiLFxcbitcXHRhbXN3YXBkYmJfb3BcXHQ9IDB4NzBiYyxcXG4rXFx0YW1zd2FwZGJoX29wXFx0PSAweDcwYmQsXFxuK1xcdGFtYWRkZGJiX29wXFx0PSAweDcwYmUsXFxuK1xcdGFtYWRkZGJoX29wXFx0PSAweDcwYmYsXFxuIFxcdGFtc3dhcHdfb3BcXHQ9IDB4NzBjMCxcXG4gXFx0YW1zd2FwZF9vcFxcdD0gMHg3MGMxLFxcbiBcXHRhbWFkZHdfb3BcXHQ9IDB4NzBjMixcXG5AQCAtNzgzLDYgKzc4NywyMCBAQCBERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBiLCBhbXN3YXBiX29wKVxcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBoLCBhbXN3YXBoX29wKVxcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXB3LCBhbXN3YXB3X29wKVxcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBkLCBhbXN3YXBkX29wKVxcbitERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBkYmIsIGFtc3dhcGRiYl9vcClcXG4rREVGX0VNSVRfUkVHM19GT1JNQVQoYW1zd2FwZGJoLCBhbXN3YXBkYmhfb3ApXFxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtYWRkZGJiLCBhbWFkZGRiYl9vcClcXG4rREVGX0VNSVRfUkVHM19GT1JNQVQoYW1hZGRkYmgsIGFtYWRkZGJoX29wKVxcbitERUZfRU1JVF9SRUczX0ZPUk1BVChhbWFkZGRidywgYW1hZGRkYndfb3ApXFxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtYWRkZGJkLCBhbWFkZGRiZF9vcClcXG4rREVGX0VNSVRfUkVHM19GT1JNQVQoYW1hbmRkYncsIGFtYW5kZGJ3X29wKVxcbitERUZfRU1JVF9SRUczX0ZPUk1BVChhbWFuZGRiZCwgYW1hbmRkYmRfb3ApXFxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtb3JkYncsIGFtb3JkYndfb3ApXFxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtb3JkYmQsIGFtb3JkYmRfb3ApXFxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFteG9yZGJ3LCBhbXhvcmRid19vcClcXG4rREVGX0VNSVRfUkVHM19GT1JNQVQoYW14b3JkYmQsIGFteG9yZGJkX29wKVxcbitERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBkYncsIGFtc3dhcGRid19vcClcXG4rREVGX0VNSVRfUkVHM19GT1JNQVQoYW1zd2FwZGJkLCBhbXN3YXBkYmRfb3ApXFxuIFxcbiAjZGVmaW5lIERFRl9FTUlUX1JFRzNTQTJfRk9STUFUKE5BTUUsIE9QKVxcdFxcdFxcdFxcdFxcXFxcXG4gc3RhdGljIGlubGluZSB2b2lkIGVtaXRfIyNOQU1FKHVuaW9uIGxvb25nYXJjaF9pbnN0cnVjdGlvbiAqaW5zbixcXHRcXFxcXFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXFxuaW5kZXggMjQ5MTNkYzdmNGU4MzUuLmZmZmY1MjFiM2M4MDg4IDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXFxuQEAgLTcsNiArNyw5IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tZW1vcnkuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFxcImJwZl9qaXQuaFxcXCJcXG4gXFxuKy8qIGRiYXIgaGludCBmb3IgbGwvc2MgY29tcGxldGlvbiBvcmRlcmluZywgc2VlIF9fV0VBS19MTFNDX01CICovXFxuKyNkZWZpbmUgREJBUl9MTFNDX01CXFx0MHg3MDBcXG4rXFxuICNkZWZpbmUgTE9PTkdBUkNIX01BWF9SRUdfQVJHUyA4XFxuIFxcbiAjZGVmaW5lIExPT05HQVJDSF9MT05HX0pVTVBfTklOU05TIDVcXG5AQCAtNDE4LDcgKzQyMSw3IEBAIHN0YXRpYyBpbnQgZW1pdF9hdG9taWNfcm13KGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eClcXG4gXFx0XFx0XFx0XFx0cHJfZXJyX29uY2UoXFxcImJwZi1qaXQ6IGFtYWRkLmIgaW5zdHJ1Y3Rpb24gaXMgbm90IHN1cHBvcnRlZFxcXFxuXFxcIik7XFxuIFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRcXHRcXHR9XFxuLVxcdFxcdFxcdGVtaXRfaW5zbihjdHgsIGFtYWRkYiwgc3JjLCB0MSwgdDMpO1xcbitcXHRcXHRcXHRlbWl0X2luc24oY3R4LCBhbWFkZGRiYiwgc3JjLCB0MSwgdDMpO1xcbiBcXHRcXHRcXHRlbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0Y2FzZSBCUEZfSDpcXG5AQCAtNDI2LDM5ICs0MjksMzkgQEAgc3RhdGljIGludCBlbWl0X2F0b21pY19ybXcoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxcbiBcXHRcXHRcXHRcXHRwcl9lcnJfb25jZShcXFwiYnBmLWppdDogYW1hZGQuaCBpbnN0cnVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkXFxcXG5cXFwiKTtcXG4gXFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdFxcdFxcdH1cXG4tXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW1hZGRoLCBzcmMsIHQxLCB0Myk7XFxuK1xcdFxcdFxcdGVtaXRfaW5zbihjdHgsIGFtYWRkZGJoLCBzcmMsIHQxLCB0Myk7XFxuIFxcdFxcdFxcdGVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIEJQRl9XOlxcbi1cXHRcXHRcXHRlbWl0X2luc24oY3R4LCBhbWFkZHcsIHNyYywgdDEsIHQzKTtcXG4rXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW1hZGRkYncsIHNyYywgdDEsIHQzKTtcXG4gXFx0XFx0XFx0ZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgQlBGX0RXOlxcbi1cXHRcXHRcXHRlbWl0X2luc24oY3R4LCBhbWFkZGQsIHNyYywgdDEsIHQzKTtcXG4rXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW1hZGRkYmQsIHNyYywgdDEsIHQzKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdH1cXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQlBGX0FORCB8IEJQRl9GRVRDSDpcXG4gXFx0XFx0aWYgKGlzZHcpIHtcXG4tXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW1hbmRkLCBzcmMsIHQxLCB0Myk7XFxuK1xcdFxcdFxcdGVtaXRfaW5zbihjdHgsIGFtYW5kZGJkLCBzcmMsIHQxLCB0Myk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdGVtaXRfaW5zbihjdHgsIGFtYW5kdywgc3JjLCB0MSwgdDMpO1xcbitcXHRcXHRcXHRlbWl0X2luc24oY3R4LCBhbWFuZGRidywgc3JjLCB0MSwgdDMpO1xcbiBcXHRcXHRcXHRlbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpO1xcbiBcXHRcXHR9XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIEJQRl9PUiB8IEJQRl9GRVRDSDpcXG4gXFx0XFx0aWYgKGlzZHcpIHtcXG4tXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW1vcmQsIHNyYywgdDEsIHQzKTtcXG4rXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW1vcmRiZCwgc3JjLCB0MSwgdDMpO1xcbiBcXHRcXHR9IGVsc2Uge1xcbi1cXHRcXHRcXHRlbWl0X2luc24oY3R4LCBhbW9ydywgc3JjLCB0MSwgdDMpO1xcbitcXHRcXHRcXHRlbWl0X2luc24oY3R4LCBhbW9yZGJ3LCBzcmMsIHQxLCB0Myk7XFxuIFxcdFxcdFxcdGVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7XFxuIFxcdFxcdH1cXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgQlBGX1hPUiB8IEJQRl9GRVRDSDpcXG4gXFx0XFx0aWYgKGlzZHcpIHtcXG4tXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW14b3JkLCBzcmMsIHQxLCB0Myk7XFxuK1xcdFxcdFxcdGVtaXRfaW5zbihjdHgsIGFteG9yZGJkLCBzcmMsIHQxLCB0Myk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuLVxcdFxcdFxcdGVtaXRfaW5zbihjdHgsIGFteG9ydywgc3JjLCB0MSwgdDMpO1xcbitcXHRcXHRcXHRlbWl0X2luc24oY3R4LCBhbXhvcmRidywgc3JjLCB0MSwgdDMpO1xcbiBcXHRcXHRcXHRlbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpO1xcbiBcXHRcXHR9XFxuIFxcdFxcdGJyZWFrO1xcbkBAIC00NzAsNyArNDczLDcgQEAgc3RhdGljIGludCBlbWl0X2F0b21pY19ybXcoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxcbiBcXHRcXHRcXHRcXHRwcl9lcnJfb25jZShcXFwiYnBmLWppdDogYW1zd2FwLmIgaW5zdHJ1Y3Rpb24gaXMgbm90IHN1cHBvcnRlZFxcXFxuXFxcIik7XFxuIFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHRcXHRcXHR9XFxuLVxcdFxcdFxcdGVtaXRfaW5zbihjdHgsIGFtc3dhcGIsIHNyYywgdDEsIHQzKTtcXG4rXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW1zd2FwZGJiLCBzcmMsIHQxLCB0Myk7XFxuIFxcdFxcdFxcdGVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIEJQRl9IOlxcbkBAIC00NzgsMTUgKzQ4MSwxNSBAQCBzdGF0aWMgaW50IGVtaXRfYXRvbWljX3Jtdyhjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgpXFxuIFxcdFxcdFxcdFxcdHByX2Vycl9vbmNlKFxcXCJicGYtaml0OiBhbXN3YXAuaCBpbnN0cnVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkXFxcXG5cXFwiKTtcXG4gXFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdFxcdFxcdH1cXG4tXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW1zd2FwaCwgc3JjLCB0MSwgdDMpO1xcbitcXHRcXHRcXHRlbWl0X2luc24oY3R4LCBhbXN3YXBkYmgsIHNyYywgdDEsIHQzKTtcXG4gXFx0XFx0XFx0ZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgQlBGX1c6XFxuLVxcdFxcdFxcdGVtaXRfaW5zbihjdHgsIGFtc3dhcHcsIHNyYywgdDEsIHQzKTtcXG4rXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW1zd2FwZGJ3LCBzcmMsIHQxLCB0Myk7XFxuIFxcdFxcdFxcdGVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7XFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIEJQRl9EVzpcXG4tXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYW1zd2FwZCwgc3JjLCB0MSwgdDMpO1xcbitcXHRcXHRcXHRlbWl0X2luc24oY3R4LCBhbXN3YXBkYmQsIHNyYywgdDEsIHQzKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdH1cXG4gXFx0XFx0YnJlYWs7XFxuQEAgLTUwOSw2ICs1MTIsNyBAQCBzdGF0aWMgaW50IGVtaXRfYXRvbWljX3Jtdyhjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgpXFxuIFxcdFxcdFxcdGVtaXRfaW5zbihjdHgsIGJlcSwgdDMsIExPT05HQVJDSF9HUFJfWkVSTywgLTYpO1xcbiBcXHRcXHRcXHRlbWl0X3pleHRfMzIoY3R4LCByMCwgdHJ1ZSk7XFxuIFxcdFxcdH1cXG4rXFx0XFx0ZW1pdF9pbnNuKGN0eCwgZGJhciwgREJBUl9MTFNDX01CKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGRlZmF1bHQ6XFxuIFxcdFxcdHByX2Vycl9vbmNlKFxcXCJicGYtaml0OiBpbnZhbGlkIGF0b21pYyByZWFkLW1vZGlmeS13cml0ZSBvcGNvZGUgJTAyeFxcXFxuXFxcIiwgaW1tKTtcXG5AQCAtMjM2Miw2ICsyMzY2LDExIEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c19mc2Vzc2lvbih2b2lkKVxcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbiBcXG4rYm9vbCBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnKHZvaWQpXFxuK3tcXG4rXFx0cmV0dXJuIHRydWU7XFxuK31cXG4rXFxuIC8qIEluZGljYXRlIHRoZSBKSVQgYmFja2VuZCBzdXBwb3J0cyBtaXhpbmcgYnBmMmJwZiBhbmQgdGFpbGNhbGxzLiAqL1xcbiBib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZClcXG4ge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcXG5pbmRleCA2ZWY2ODcyYWRiYzNlMS4uZWE0YzIyZTIwZjNjODAgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXFxuQEAgLTg2Niw2ICs4NjYsNyBAQCAkKE9VVFBVVCkvYmVuY2hfaHRhYl9tZW0ubzogJChPVVRQVVQpL2h0YWJfbWVtX2JlbmNoLnNrZWwuaFxcbiAkKE9VVFBVVCkvYmVuY2hfYnBmX2NyeXB0by5vOiAkKE9VVFBVVCkvY3J5cHRvX2JlbmNoLnNrZWwuaFxcbiAkKE9VVFBVVCkvYmVuY2hfc29ja21hcC5vOiAkKE9VVFBVVCkvYmVuY2hfc29ja21hcF9wcm9nLnNrZWwuaFxcbiAkKE9VVFBVVCkvYmVuY2hfbHBtX3RyaWVfbWFwLm86ICQoT1VUUFVUKS9scG1fdHJpZV9iZW5jaC5za2VsLmggJChPVVRQVVQpL2xwbV90cmllX21hcC5za2VsLmhcXG4rJChPVVRQVVQpL2JlbmNoX2twdHJfeGNoZy5vOiAkKE9VVFBVVCkva3B0cl94Y2hnX2JlbmNoLnNrZWwuaFxcbiAkKE9VVFBVVCkvYmVuY2gubzogYmVuY2guaCB0ZXN0aW5nX2hlbHBlcnMuaCAkKEJQRk9CSilcXG4gJChPVVRQVVQpL2JlbmNoOiBMRExJQlMgKz0gLWxtXFxuICQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXFxcXFxcbkBAIC04ODgsNiArODg5LDcgQEAgJChPVVRQVVQpL2JlbmNoOiAkKE9VVFBVVCkvYmVuY2gubyBcXFxcXFxuIFxcdFxcdCAkKE9VVFBVVCkvYmVuY2hfYnBmX2NyeXB0by5vIFxcXFxcXG4gXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9zb2NrbWFwLm8gXFxcXFxcbiBcXHRcXHQgJChPVVRQVVQpL2JlbmNoX2xwbV90cmllX21hcC5vIFxcXFxcXG4rXFx0XFx0ICQoT1VUUFVUKS9iZW5jaF9rcHRyX3hjaGcubyBcXFxcXFxuIFxcdFxcdCAkKE9VVFBVVCkvdXNkdF8xLm8gXFxcXFxcbiBcXHRcXHQgJChPVVRQVVQpL3VzZHRfMi5vIFxcXFxcXG4gXFx0XFx0ICNcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNoLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guY1xcbmluZGV4IDAyOWIzZTIxZjQzODQ2Li4yYjZkZDhhZWMyODJmMiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaC5jXFxuQEAgLTU3NSw2ICs1NzUsNyBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2xwbV90cmllX2luc2VydDtcXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9scG1fdHJpZV91cGRhdGU7XFxuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfZGVsZXRlO1xcbiBleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2xwbV90cmllX2ZyZWU7XFxuK2V4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfa3B0cl94Y2hnO1xcbiBcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBiZW5jaCAqYmVuY2hzW10gPSB7XFxuIFxcdFxcdTAwMjZiZW5jaF9jb3VudF9nbG9iYWwsXFxuQEAgLTY1Myw2ICs2NTQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJlbmNoICpiZW5jaHNbXSA9IHtcXG4gXFx0XFx1MDAyNmJlbmNoX2xwbV90cmllX3VwZGF0ZSxcXG4gXFx0XFx1MDAyNmJlbmNoX2xwbV90cmllX2RlbGV0ZSxcXG4gXFx0XFx1MDAyNmJlbmNoX2xwbV90cmllX2ZyZWUsXFxuK1xcdFxcdTAwMjZiZW5jaF9rcHRyX3hjaGcsXFxuIH07XFxuIFxcbiBzdGF0aWMgdm9pZCBmaW5kX2JlbmNobWFyayh2b2lkKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2twdHJfeGNoZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9rcHRyX3hjaGcuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmI4YTBkMzQ2ZmRhNjg4XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaHMvYmVuY2hfa3B0cl94Y2hnLmNcXG5AQCAtMCwwICsxLDk2IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKy8qIENvcHlyaWdodCAoQykgMjAyNi4gTG9vbmdzb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiBMaW1pdGVkICovXFxuKyNpbmNsdWRlIFxcdTAwM2NhcmdwLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcXCJiZW5jaC5oXFxcIlxcbisjaW5jbHVkZSBcXFwia3B0cl94Y2hnX2JlbmNoLnNrZWwuaFxcXCJcXG4rXFxuK3N0YXRpYyBzdHJ1Y3QgY3R4IHtcXG4rXFx0c3RydWN0IGtwdHJfeGNoZ19iZW5jaCAqc2tlbDtcXG4rfSBjdHg7XFxuK1xcbitzdGF0aWMgc3RydWN0IHtcXG4rXFx0X191MzIgbnJfbG9vcHM7XFxuK30gYXJncyA9IHtcXG4rXFx0Lm5yX2xvb3BzID0gMjU2LFxcbit9O1xcbitcXG4rZW51bSB7XFxuK1xcdEFSR19OUl9MT09QUyA9IDcwMDAsXFxuK307XFxuK1xcbitzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdHNbXSA9IHtcXG4rXFx0eyBcXFwibnJfbG9vcHNcXFwiLCBBUkdfTlJfTE9PUFMsIFxcXCJucl9sb29wc1xcXCIsIDAsXFxuK1xcdCAgXFxcIlNldCBudW1iZXIgb2YgYnBmX2twdHJfeGNoZygpIGNhbGxzIHBlciB0cmlnZ2VyXFxcIn0sXFxuK1xcdHt9LFxcbit9O1xcbitcXG4rc3RhdGljIGVycm9yX3QgcGFyc2VfYXJnKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKVxcbit7XFxuK1xcdHN3aXRjaCAoa2V5KSB7XFxuK1xcdGNhc2UgQVJHX05SX0xPT1BTOlxcbitcXHRcXHRhcmdzLm5yX2xvb3BzID0gc3RydG9sKGFyZywgTlVMTCwgMTApO1xcbitcXHRcXHRicmVhaztcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIEFSR1BfRVJSX1VOS05PV047XFxuK1xcdH1cXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3AgYmVuY2hfa3B0cl94Y2hnX2FyZ3AgPSB7XFxuK1xcdC5vcHRpb25zID0gb3B0cyxcXG4rXFx0LnBhcnNlciA9IHBhcnNlX2FyZyxcXG4rfTtcXG4rXFxuK3N0YXRpYyB2b2lkIHZhbGlkYXRlKHZvaWQpXFxuK3tcXG4rXFx0aWYgKGVudi5jb25zdW1lcl9jbnQgIT0gMCkge1xcbitcXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcImJlbmNobWFyayBkb2Vzbid0IHN1cHBvcnQgY29uc3VtZXIhXFxcXG5cXFwiKTtcXG4rXFx0XFx0ZXhpdCgxKTtcXG4rXFx0fVxcbit9XFxuK1xcbitzdGF0aWMgdm9pZCAqcHJvZHVjZXIodm9pZCAqaW5wdXQpXFxuK3tcXG4rXFx0d2hpbGUgKHRydWUpXFxuK1xcdFxcdHN5c2NhbGwoX19OUl9nZXRwZ2lkKTtcXG4rXFxuK1xcdHJldHVybiBOVUxMO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBtZWFzdXJlKHN0cnVjdCBiZW5jaF9yZXMgKnJlcylcXG4re1xcbitcXHRyZXMtXFx1MDAzZWhpdHMgPSBhdG9taWNfc3dhcChcXHUwMDI2Y3R4LnNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlaGl0cywgMCk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIHNldHVwKHZvaWQpXFxuK3tcXG4rXFx0c3RydWN0IGJwZl9saW5rICpsaW5rO1xcbitcXG4rXFx0c2V0dXBfbGliYnBmKCk7XFxuK1xcbitcXHRjdHguc2tlbCA9IGtwdHJfeGNoZ19iZW5jaF9fb3Blbl9hbmRfbG9hZCgpO1xcbitcXHRpZiAoIWN0eC5za2VsKSB7XFxuK1xcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiZmFpbGVkIHRvIG9wZW4gc2tlbGV0b25cXFxcblxcXCIpO1xcbitcXHRcXHRleGl0KDEpO1xcbitcXHR9XFxuK1xcbitcXHRjdHguc2tlbC1cXHUwMDNlZGF0YS1cXHUwMDNlbnJfbG9vcHMgPSBhcmdzLm5yX2xvb3BzO1xcbitcXG4rXFx0bGluayA9IGJwZl9wcm9ncmFtX19hdHRhY2goY3R4LnNrZWwtXFx1MDAzZXByb2dzLmJlbmNobWFyayk7XFxuK1xcdGlmICghbGluaykge1xcbitcXHRcXHRmcHJpbnRmKHN0ZGVyciwgXFxcImZhaWxlZCB0byBhdHRhY2ggcHJvZ3JhbSFcXFxcblxcXCIpO1xcbitcXHRcXHRleGl0KDEpO1xcbitcXHR9XFxuK31cXG4rXFxuK2NvbnN0IHN0cnVjdCBiZW5jaCBiZW5jaF9rcHRyX3hjaGcgPSB7XFxuK1xcdC5uYW1lID0gXFxcImtwdHIteGNoZ1xcXCIsXFxuK1xcdC5hcmdwID0gXFx1MDAyNmJlbmNoX2twdHJfeGNoZ19hcmdwLFxcbitcXHQudmFsaWRhdGUgPSB2YWxpZGF0ZSxcXG4rXFx0LnNldHVwID0gc2V0dXAsXFxuK1xcdC5wcm9kdWNlcl90aHJlYWQgPSBwcm9kdWNlcixcXG4rXFx0Lm1lYXN1cmUgPSBtZWFzdXJlLFxcbitcXHQucmVwb3J0X3Byb2dyZXNzID0gb3BzX3JlcG9ydF9wcm9ncmVzcyxcXG4rXFx0LnJlcG9ydF9maW5hbCA9IG9wc19yZXBvcnRfZmluYWwsXFxuK307XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twdHJfeGNoZ19pbmxpbmUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twdHJfeGNoZ19pbmxpbmUuY1xcbmluZGV4IDdkZWYxNThkYTllYjcxLi44ZjdiNTg3Mjc0MTZjOCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHRyX3hjaGdfaW5saW5lLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHRyX3hjaGdfaW5saW5lLmNcXG5AQCAtMTQsNyArMTQsOCBAQCB2b2lkIHRlc3Rfa3B0cl94Y2hnX2lubGluZSh2b2lkKVxcbiBcXHRpbnQgZXJyO1xcbiBcXG4gI2lmICEoZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBcXFxcXFxuLSAgICAgIChkZWZpbmVkKF9fcmlzY3YpIFxcdTAwMjZcXHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkpXFxuKyAgICAgIChkZWZpbmVkKF9fcmlzY3YpIFxcdTAwMjZcXHUwMDI2IF9fcmlzY3ZfeGxlbiA9PSA2NCkgfHwgXFxcXFxcbisgICAgICAoZGVmaW5lZChfX2xvb25nYXJjaF9fKSBcXHUwMDI2XFx1MDAyNiBfX2xvb25nYXJjaF9ncmxlbiA9PSA2NCkpXFxuIFxcdHRlc3RfX3NraXAoKTtcXG4gXFx0cmV0dXJuO1xcbiAjZW5kaWZcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2twdHJfeGNoZ19iZW5jaC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2twdHJfeGNoZ19iZW5jaC5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMzYzODgzMDczZTJjMGVcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2twdHJfeGNoZ19iZW5jaC5jXFxuQEAgLTAsMCArMSw0OSBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisvKiBDb3B5cmlnaHQgKEMpIDIwMjYuIExvb25nc29uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24gTGltaXRlZCAqL1xcbisjaW5jbHVkZSBcXFwidm1saW51eC5oXFxcIlxcbisjaW5jbHVkZSBcXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcXHUwMDNlXFxuK1xcbisjaW5jbHVkZSBcXFwiYnBmX2V4cGVyaW1lbnRhbC5oXFxcIlxcbisjaW5jbHVkZSBcXFwiYnBmX21pc2MuaFxcXCJcXG4rXFxuK2NoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcbitcXG4rI2RlZmluZSBNQVhfWENIR19MT09QUyA0MDk2XFxuK1xcbitzdHJ1Y3QgYmluX2RhdGEge1xcbitcXHRjaGFyIGJsb2JbMzJdO1xcbit9O1xcbitcXG4rI2RlZmluZSBwcml2YXRlKG5hbWUpIFNFQyhcXFwiLmJzcy5cXFwiICNuYW1lKSBfX2hpZGRlbiBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSlcXG4rXFxuK3ByaXZhdGUoa3B0cikgc3RydWN0IGJpbl9kYXRhIF9fa3B0ciAqcHRyO1xcbit1MzIgbnJfbG9vcHMgPSAyNTY7XFxuK2xvbmcgaGl0cztcXG4rXFxuK1NFQyhcXFwiZmVudHJ5L1xcXCIgU1lTX1BSRUZJWCBcXFwic3lzX2dldHBnaWRcXFwiKVxcbitpbnQgYmVuY2htYXJrKHZvaWQgKmN0eClcXG4re1xcbitcXHRzdHJ1Y3QgYmluX2RhdGEgKm9sZDtcXG4rXFx0dTMyIGk7XFxuK1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUFYX1hDSEdfTE9PUFM7IGkrKykge1xcbitcXHRcXHRpZiAoaSBcXHUwMDNlPSBucl9sb29wcylcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcbitcXHRcXHRvbGQgPSBicGZfa3B0cl94Y2hnKFxcdTAwMjZwdHIsIE5VTEwpO1xcbitcXHRcXHRpZiAob2xkKVxcbitcXHRcXHRcXHRicGZfb2JqX2Ryb3Aob2xkKTtcXG4rXFx0fVxcbitcXG4rXFx0X19zeW5jX2FkZF9hbmRfZmV0Y2goXFx1MDAyNmhpdHMsIGkpO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4rLypcXG4rICogQlRGIEZVTkMgcmVjb3JkcyBhcmUgbm90IGdlbmVyYXRlZCBmb3Iga2Z1bmNzIHJlZmVyZW5jZWQgb25seSB0aHJvdWdoXFxuKyAqIG9wdGltaXplZCBwYXRocy4gS2VlcCBicGZfb2JqX2Ryb3AoKSB2aXNpYmxlIHRvIGxpYmJwZidzIGtmdW5jIGxpbmtlci5cXG4rICovXFxuK3ZvaWQgX19idGZfcm9vdCh2b2lkKVxcbit7XFxuK1xcdGJwZl9vYmpfZHJvcChOVUxMKTtcXG4rfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzozOTowMC44NTQxMjkzNjhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTg4ODk3NjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlbWl0X2F0b21pY19ybXdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlciB0byB1c2UgbmV3IGF0b21pYyBpbnN0cnVjdGlvbnMgKGUuZy4sIGFtYWRkZGJiLCBhbXN3YXBkYmIpIGZvciBCUEYgYXRvbWljIG9wZXJhdGlvbnMgYW5kIGVuYWJsZXMgYnBmX2ppdF9zdXBwb3J0c19wdHJfeGNoZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIEJQRiBKSVQgbG9naWMgb24gTG9vbmdBcmNoLCB3aGljaCBjYW4gYmUgZnV6emVkIGJ5IGxvYWRpbmcgYW5kIGV4ZWN1dGluZyBCUEYgcHJvZ3JhbXMgd2l0aCBhdG9taWMgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxZDVhZDY3N2MyMGU3ODkzZTJhMTJmZmZkMjc0OWVjNGUwNzYxMTRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjIgMDc6Mzg6NTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcbmluZGV4IDc2YjcyMzU5MDAyM2Q3Li5iZGJjMTdkMDcxMTA1ZSAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxuKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXG5AQCAtMTk5LDYgKzE5OSwxMCBAQCBlbnVtIHJlZzNfb3Age1xuIFx0YW1zd2FwaF9vcFx0PSAweDcwYjksXG4gXHRhbWFkZGJfb3BcdD0gMHg3MGJhLFxuIFx0YW1hZGRoX29wXHQ9IDB4NzBiYixcbitcdGFtc3dhcGRiYl9vcFx0PSAweDcwYmMsXG4rXHRhbXN3YXBkYmhfb3BcdD0gMHg3MGJkLFxuK1x0YW1hZGRkYmJfb3BcdD0gMHg3MGJlLFxuK1x0YW1hZGRkYmhfb3BcdD0gMHg3MGJmLFxuIFx0YW1zd2Fwd19vcFx0PSAweDcwYzAsXG4gXHRhbXN3YXBkX29wXHQ9IDB4NzBjMSxcbiBcdGFtYWRkd19vcFx0PSAweDcwYzIsXG5AQCAtNzgzLDYgKzc4NywyMCBAQCBERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBiLCBhbXN3YXBiX29wKVxuIERFRl9FTUlUX1JFRzNfRk9STUFUKGFtc3dhcGgsIGFtc3dhcGhfb3ApXG4gREVGX0VNSVRfUkVHM19GT1JNQVQoYW1zd2FwdywgYW1zd2Fwd19vcClcbiBERUZfRU1JVF9SRUczX0ZPUk1BVChhbXN3YXBkLCBhbXN3YXBkX29wKVxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtc3dhcGRiYiwgYW1zd2FwZGJiX29wKVxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtc3dhcGRiaCwgYW1zd2FwZGJoX29wKVxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtYWRkZGJiLCBhbWFkZGRiYl9vcClcbitERUZfRU1JVF9SRUczX0ZPUk1BVChhbWFkZGRiaCwgYW1hZGRkYmhfb3ApXG4rREVGX0VNSVRfUkVHM19GT1JNQVQoYW1hZGRkYncsIGFtYWRkZGJ3X29wKVxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtYWRkZGJkLCBhbWFkZGRiZF9vcClcbitERUZfRU1JVF9SRUczX0ZPUk1BVChhbWFuZGRidywgYW1hbmRkYndfb3ApXG4rREVGX0VNSVRfUkVHM19GT1JNQVQoYW1hbmRkYmQsIGFtYW5kZGJkX29wKVxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtb3JkYncsIGFtb3JkYndfb3ApXG4rREVGX0VNSVRfUkVHM19GT1JNQVQoYW1vcmRiZCwgYW1vcmRiZF9vcClcbitERUZfRU1JVF9SRUczX0ZPUk1BVChhbXhvcmRidywgYW14b3JkYndfb3ApXG4rREVGX0VNSVRfUkVHM19GT1JNQVQoYW14b3JkYmQsIGFteG9yZGJkX29wKVxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtc3dhcGRidywgYW1zd2FwZGJ3X29wKVxuK0RFRl9FTUlUX1JFRzNfRk9STUFUKGFtc3dhcGRiZCwgYW1zd2FwZGJkX29wKVxuIFxuICNkZWZpbmUgREVGX0VNSVRfUkVHM1NBMl9GT1JNQVQoTkFNRSwgT1ApXHRcdFx0XHRcXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0XyMjTkFNRSh1bmlvbiBsb29uZ2FyY2hfaW5zdHJ1Y3Rpb24gKmluc24sXHRcXFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXG5pbmRleCAyNDkxM2RjN2Y0ZTgzNS4uZmZmZjUyMWIzYzgwODggMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXG4rKysgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXG5AQCAtNyw2ICs3LDkgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZW1vcnkuaFx1MDAzZVxuICNpbmNsdWRlIFwiYnBmX2ppdC5oXCJcbiBcbisvKiBkYmFyIGhpbnQgZm9yIGxsL3NjIGNvbXBsZXRpb24gb3JkZXJpbmcsIHNlZSBfX1dFQUtfTExTQ19NQiAqL1xuKyNkZWZpbmUgREJBUl9MTFNDX01CXHQweDcwMFxuK1xuICNkZWZpbmUgTE9PTkdBUkNIX01BWF9SRUdfQVJHUyA4XG4gXG4gI2RlZmluZSBMT09OR0FSQ0hfTE9OR19KVU1QX05JTlNOUyA1XG5AQCAtNDE4LDcgKzQyMSw3IEBAIHN0YXRpYyBpbnQgZW1pdF9hdG9taWNfcm13KGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eClcbiBcdFx0XHRcdHByX2Vycl9vbmNlKFwiYnBmLWppdDogYW1hZGQuYiBpbnN0cnVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkXFxuXCIpO1xuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0fVxuLVx0XHRcdGVtaXRfaW5zbihjdHgsIGFtYWRkYiwgc3JjLCB0MSwgdDMpO1xuK1x0XHRcdGVtaXRfaW5zbihjdHgsIGFtYWRkZGJiLCBzcmMsIHQxLCB0Myk7XG4gXHRcdFx0ZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBCUEZfSDpcbkBAIC00MjYsMzkgKzQyOSwzOSBAQCBzdGF0aWMgaW50IGVtaXRfYXRvbWljX3Jtdyhjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgpXG4gXHRcdFx0XHRwcl9lcnJfb25jZShcImJwZi1qaXQ6IGFtYWRkLmggaW5zdHJ1Y3Rpb24gaXMgbm90IHN1cHBvcnRlZFxcblwiKTtcbiBcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdH1cbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbWFkZGgsIHNyYywgdDEsIHQzKTtcbitcdFx0XHRlbWl0X2luc24oY3R4LCBhbWFkZGRiaCwgc3JjLCB0MSwgdDMpO1xuIFx0XHRcdGVtaXRfemV4dF8zMihjdHgsIHNyYywgdHJ1ZSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdGNhc2UgQlBGX1c6XG4tXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1hZGR3LCBzcmMsIHQxLCB0Myk7XG4rXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1hZGRkYncsIHNyYywgdDEsIHQzKTtcbiBcdFx0XHRlbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIEJQRl9EVzpcbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbWFkZGQsIHNyYywgdDEsIHQzKTtcbitcdFx0XHRlbWl0X2luc24oY3R4LCBhbWFkZGRiZCwgc3JjLCB0MSwgdDMpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfQU5EIHwgQlBGX0ZFVENIOlxuIFx0XHRpZiAoaXNkdykge1xuLVx0XHRcdGVtaXRfaW5zbihjdHgsIGFtYW5kZCwgc3JjLCB0MSwgdDMpO1xuK1x0XHRcdGVtaXRfaW5zbihjdHgsIGFtYW5kZGJkLCBzcmMsIHQxLCB0Myk7XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1hbmR3LCBzcmMsIHQxLCB0Myk7XG4rXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1hbmRkYncsIHNyYywgdDEsIHQzKTtcbiBcdFx0XHRlbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpO1xuIFx0XHR9XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBCUEZfT1IgfCBCUEZfRkVUQ0g6XG4gXHRcdGlmIChpc2R3KSB7XG4tXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1vcmQsIHNyYywgdDEsIHQzKTtcbitcdFx0XHRlbWl0X2luc24oY3R4LCBhbW9yZGJkLCBzcmMsIHQxLCB0Myk7XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1vcncsIHNyYywgdDEsIHQzKTtcbitcdFx0XHRlbWl0X2luc24oY3R4LCBhbW9yZGJ3LCBzcmMsIHQxLCB0Myk7XG4gXHRcdFx0ZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTtcbiBcdFx0fVxuIFx0XHRicmVhaztcbiBcdGNhc2UgQlBGX1hPUiB8IEJQRl9GRVRDSDpcbiBcdFx0aWYgKGlzZHcpIHtcbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbXhvcmQsIHNyYywgdDEsIHQzKTtcbitcdFx0XHRlbWl0X2luc24oY3R4LCBhbXhvcmRiZCwgc3JjLCB0MSwgdDMpO1xuIFx0XHR9IGVsc2Uge1xuLVx0XHRcdGVtaXRfaW5zbihjdHgsIGFteG9ydywgc3JjLCB0MSwgdDMpO1xuK1x0XHRcdGVtaXRfaW5zbihjdHgsIGFteG9yZGJ3LCBzcmMsIHQxLCB0Myk7XG4gXHRcdFx0ZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTtcbiBcdFx0fVxuIFx0XHRicmVhaztcbkBAIC00NzAsNyArNDczLDcgQEAgc3RhdGljIGludCBlbWl0X2F0b21pY19ybXcoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxuIFx0XHRcdFx0cHJfZXJyX29uY2UoXCJicGYtaml0OiBhbXN3YXAuYiBpbnN0cnVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkXFxuXCIpO1xuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHRcdFx0fVxuLVx0XHRcdGVtaXRfaW5zbihjdHgsIGFtc3dhcGIsIHNyYywgdDEsIHQzKTtcbitcdFx0XHRlbWl0X2luc24oY3R4LCBhbXN3YXBkYmIsIHNyYywgdDEsIHQzKTtcbiBcdFx0XHRlbWl0X3pleHRfMzIoY3R4LCBzcmMsIHRydWUpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIEJQRl9IOlxuQEAgLTQ3OCwxNSArNDgxLDE1IEBAIHN0YXRpYyBpbnQgZW1pdF9hdG9taWNfcm13KGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eClcbiBcdFx0XHRcdHByX2Vycl9vbmNlKFwiYnBmLWppdDogYW1zd2FwLmggaW5zdHJ1Y3Rpb24gaXMgbm90IHN1cHBvcnRlZFxcblwiKTtcbiBcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0XHRcdH1cbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbXN3YXBoLCBzcmMsIHQxLCB0Myk7XG4rXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1zd2FwZGJoLCBzcmMsIHQxLCB0Myk7XG4gXHRcdFx0ZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBCUEZfVzpcbi1cdFx0XHRlbWl0X2luc24oY3R4LCBhbXN3YXB3LCBzcmMsIHQxLCB0Myk7XG4rXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1zd2FwZGJ3LCBzcmMsIHQxLCB0Myk7XG4gXHRcdFx0ZW1pdF96ZXh0XzMyKGN0eCwgc3JjLCB0cnVlKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBCUEZfRFc6XG4tXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYW1zd2FwZCwgc3JjLCB0MSwgdDMpO1xuK1x0XHRcdGVtaXRfaW5zbihjdHgsIGFtc3dhcGRiZCwgc3JjLCB0MSwgdDMpO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4gXHRcdGJyZWFrO1xuQEAgLTUwOSw2ICs1MTIsNyBAQCBzdGF0aWMgaW50IGVtaXRfYXRvbWljX3Jtdyhjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgpXG4gXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYmVxLCB0MywgTE9PTkdBUkNIX0dQUl9aRVJPLCAtNik7XG4gXHRcdFx0ZW1pdF96ZXh0XzMyKGN0eCwgcjAsIHRydWUpO1xuIFx0XHR9XG4rXHRcdGVtaXRfaW5zbihjdHgsIGRiYXIsIERCQVJfTExTQ19NQik7XG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiBcdFx0cHJfZXJyX29uY2UoXCJicGYtaml0OiBpbnZhbGlkIGF0b21pYyByZWFkLW1vZGlmeS13cml0ZSBvcGNvZGUgJTAyeFxcblwiLCBpbW0pO1xuQEAgLTIzNjIsNiArMjM2NiwxMSBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfZnNlc3Npb24odm9pZClcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbitib29sIGJwZl9qaXRfc3VwcG9ydHNfcHRyX3hjaGcodm9pZClcbit7XG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4rXG4gLyogSW5kaWNhdGUgdGhlIEpJVCBiYWNrZW5kIHN1cHBvcnRzIG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHMuICovXG4gYm9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpXG4ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9NYWtlZmlsZVxuaW5kZXggNmVmNjg3MmFkYmMzZTEuLmVhNGMyMmUyMGYzYzgwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGVcbkBAIC04NjYsNiArODY2LDcgQEAgJChPVVRQVVQpL2JlbmNoX2h0YWJfbWVtLm86ICQoT1VUUFVUKS9odGFiX21lbV9iZW5jaC5za2VsLmhcbiAkKE9VVFBVVCkvYmVuY2hfYnBmX2NyeXB0by5vOiAkKE9VVFBVVCkvY3J5cHRvX2JlbmNoLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaF9zb2NrbWFwLm86ICQoT1VUUFVUKS9iZW5jaF9zb2NrbWFwX3Byb2cuc2tlbC5oXG4gJChPVVRQVVQpL2JlbmNoX2xwbV90cmllX21hcC5vOiAkKE9VVFBVVCkvbHBtX3RyaWVfYmVuY2guc2tlbC5oICQoT1VUUFVUKS9scG1fdHJpZV9tYXAuc2tlbC5oXG4rJChPVVRQVVQpL2JlbmNoX2twdHJfeGNoZy5vOiAkKE9VVFBVVCkva3B0cl94Y2hnX2JlbmNoLnNrZWwuaFxuICQoT1VUUFVUKS9iZW5jaC5vOiBiZW5jaC5oIHRlc3RpbmdfaGVscGVycy5oICQoQlBGT0JKKVxuICQoT1VUUFVUKS9iZW5jaDogTERMSUJTICs9IC1sbVxuICQoT1VUUFVUKS9iZW5jaDogJChPVVRQVVQpL2JlbmNoLm8gXFxcbkBAIC04ODgsNiArODg5LDcgQEAgJChPVVRQVVQpL2JlbmNoOiAkKE9VVFBVVCkvYmVuY2gubyBcXFxuIFx0XHQgJChPVVRQVVQpL2JlbmNoX2JwZl9jcnlwdG8ubyBcXFxuIFx0XHQgJChPVVRQVVQpL2JlbmNoX3NvY2ttYXAubyBcXFxuIFx0XHQgJChPVVRQVVQpL2JlbmNoX2xwbV90cmllX21hcC5vIFxcXG4rXHRcdCAkKE9VVFBVVCkvYmVuY2hfa3B0cl94Y2hnLm8gXFxcbiBcdFx0ICQoT1VUUFVUKS91c2R0XzEubyBcXFxuIFx0XHQgJChPVVRQVVQpL3VzZHRfMi5vIFxcXG4gXHRcdCAjXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNoLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2guY1xuaW5kZXggMDI5YjNlMjFmNDM4NDYuLjJiNmRkOGFlYzI4MmYyIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNoLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9iZW5jaC5jXG5AQCAtNTc1LDYgKzU3NSw3IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfaW5zZXJ0O1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfdXBkYXRlO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfZGVsZXRlO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmVuY2ggYmVuY2hfbHBtX3RyaWVfZnJlZTtcbitleHRlcm4gY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2twdHJfeGNoZztcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGJlbmNoICpiZW5jaHNbXSA9IHtcbiBcdFx1MDAyNmJlbmNoX2NvdW50X2dsb2JhbCxcbkBAIC02NTMsNiArNjU0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBiZW5jaCAqYmVuY2hzW10gPSB7XG4gXHRcdTAwMjZiZW5jaF9scG1fdHJpZV91cGRhdGUsXG4gXHRcdTAwMjZiZW5jaF9scG1fdHJpZV9kZWxldGUsXG4gXHRcdTAwMjZiZW5jaF9scG1fdHJpZV9mcmVlLFxuK1x0XHUwMDI2YmVuY2hfa3B0cl94Y2hnLFxuIH07XG4gXG4gc3RhdGljIHZvaWQgZmluZF9iZW5jaG1hcmsodm9pZClcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYmVuY2hzL2JlbmNoX2twdHJfeGNoZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9rcHRyX3hjaGcuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iOGEwZDM0NmZkYTY4OFxuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2JlbmNocy9iZW5jaF9rcHRyX3hjaGcuY1xuQEAgLTAsMCArMSw5NiBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rLyogQ29weXJpZ2h0IChDKSAyMDI2LiBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWQgKi9cbisjaW5jbHVkZSBcdTAwM2NhcmdwLmhcdTAwM2VcbisjaW5jbHVkZSBcImJlbmNoLmhcIlxuKyNpbmNsdWRlIFwia3B0cl94Y2hnX2JlbmNoLnNrZWwuaFwiXG4rXG4rc3RhdGljIHN0cnVjdCBjdHgge1xuK1x0c3RydWN0IGtwdHJfeGNoZ19iZW5jaCAqc2tlbDtcbit9IGN0eDtcbitcbitzdGF0aWMgc3RydWN0IHtcbitcdF9fdTMyIG5yX2xvb3BzO1xuK30gYXJncyA9IHtcbitcdC5ucl9sb29wcyA9IDI1Nixcbit9O1xuK1xuK2VudW0ge1xuK1x0QVJHX05SX0xPT1BTID0gNzAwMCxcbit9O1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncF9vcHRpb24gb3B0c1tdID0ge1xuK1x0eyBcIm5yX2xvb3BzXCIsIEFSR19OUl9MT09QUywgXCJucl9sb29wc1wiLCAwLFxuK1x0ICBcIlNldCBudW1iZXIgb2YgYnBmX2twdHJfeGNoZygpIGNhbGxzIHBlciB0cmlnZ2VyXCJ9LFxuK1x0e30sXG4rfTtcbitcbitzdGF0aWMgZXJyb3JfdCBwYXJzZV9hcmcoaW50IGtleSwgY2hhciAqYXJnLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqc3RhdGUpXG4re1xuK1x0c3dpdGNoIChrZXkpIHtcbitcdGNhc2UgQVJHX05SX0xPT1BTOlxuK1x0XHRhcmdzLm5yX2xvb3BzID0gc3RydG9sKGFyZywgTlVMTCwgMTApO1xuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybiBBUkdQX0VSUl9VTktOT1dOO1xuK1x0fVxuK1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncCBiZW5jaF9rcHRyX3hjaGdfYXJncCA9IHtcbitcdC5vcHRpb25zID0gb3B0cyxcbitcdC5wYXJzZXIgPSBwYXJzZV9hcmcsXG4rfTtcbitcbitzdGF0aWMgdm9pZCB2YWxpZGF0ZSh2b2lkKVxuK3tcbitcdGlmIChlbnYuY29uc3VtZXJfY250ICE9IDApIHtcbitcdFx0ZnByaW50ZihzdGRlcnIsIFwiYmVuY2htYXJrIGRvZXNuJ3Qgc3VwcG9ydCBjb25zdW1lciFcXG5cIik7XG4rXHRcdGV4aXQoMSk7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyB2b2lkICpwcm9kdWNlcih2b2lkICppbnB1dClcbit7XG4rXHR3aGlsZSAodHJ1ZSlcbitcdFx0c3lzY2FsbChfX05SX2dldHBnaWQpO1xuK1xuK1x0cmV0dXJuIE5VTEw7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIG1lYXN1cmUoc3RydWN0IGJlbmNoX3JlcyAqcmVzKVxuK3tcbitcdHJlcy1cdTAwM2VoaXRzID0gYXRvbWljX3N3YXAoXHUwMDI2Y3R4LnNrZWwtXHUwMDNlYnNzLVx1MDAzZWhpdHMsIDApO1xuK31cbitcbitzdGF0aWMgdm9pZCBzZXR1cCh2b2lkKVxuK3tcbitcdHN0cnVjdCBicGZfbGluayAqbGluaztcbitcbitcdHNldHVwX2xpYmJwZigpO1xuK1xuK1x0Y3R4LnNrZWwgPSBrcHRyX3hjaGdfYmVuY2hfX29wZW5fYW5kX2xvYWQoKTtcbitcdGlmICghY3R4LnNrZWwpIHtcbitcdFx0ZnByaW50ZihzdGRlcnIsIFwiZmFpbGVkIHRvIG9wZW4gc2tlbGV0b25cXG5cIik7XG4rXHRcdGV4aXQoMSk7XG4rXHR9XG4rXG4rXHRjdHguc2tlbC1cdTAwM2VkYXRhLVx1MDAzZW5yX2xvb3BzID0gYXJncy5ucl9sb29wcztcbitcbitcdGxpbmsgPSBicGZfcHJvZ3JhbV9fYXR0YWNoKGN0eC5za2VsLVx1MDAzZXByb2dzLmJlbmNobWFyayk7XG4rXHRpZiAoIWxpbmspIHtcbitcdFx0ZnByaW50ZihzdGRlcnIsIFwiZmFpbGVkIHRvIGF0dGFjaCBwcm9ncmFtIVxcblwiKTtcbitcdFx0ZXhpdCgxKTtcbitcdH1cbit9XG4rXG4rY29uc3Qgc3RydWN0IGJlbmNoIGJlbmNoX2twdHJfeGNoZyA9IHtcbitcdC5uYW1lID0gXCJrcHRyLXhjaGdcIixcbitcdC5hcmdwID0gXHUwMDI2YmVuY2hfa3B0cl94Y2hnX2FyZ3AsXG4rXHQudmFsaWRhdGUgPSB2YWxpZGF0ZSxcbitcdC5zZXR1cCA9IHNldHVwLFxuK1x0LnByb2R1Y2VyX3RocmVhZCA9IHByb2R1Y2VyLFxuK1x0Lm1lYXN1cmUgPSBtZWFzdXJlLFxuK1x0LnJlcG9ydF9wcm9ncmVzcyA9IG9wc19yZXBvcnRfcHJvZ3Jlc3MsXG4rXHQucmVwb3J0X2ZpbmFsID0gb3BzX3JlcG9ydF9maW5hbCxcbit9O1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twdHJfeGNoZ19pbmxpbmUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2twdHJfeGNoZ19pbmxpbmUuY1xuaW5kZXggN2RlZjE1OGRhOWViNzEuLjhmN2I1ODcyNzQxNmM4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMva3B0cl94Y2hnX2lubGluZS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9rcHRyX3hjaGdfaW5saW5lLmNcbkBAIC0xNCw3ICsxNCw4IEBAIHZvaWQgdGVzdF9rcHRyX3hjaGdfaW5saW5lKHZvaWQpXG4gXHRpbnQgZXJyO1xuIFxuICNpZiAhKGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgXFxcbi0gICAgICAoZGVmaW5lZChfX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSlcbisgICAgICAoZGVmaW5lZChfX3Jpc2N2KSBcdTAwMjZcdTAwMjYgX19yaXNjdl94bGVuID09IDY0KSB8fCBcXFxuKyAgICAgIChkZWZpbmVkKF9fbG9vbmdhcmNoX18pIFx1MDAyNlx1MDAyNiBfX2xvb25nYXJjaF9ncmxlbiA9PSA2NCkpXG4gXHR0ZXN0X19za2lwKCk7XG4gXHRyZXR1cm47XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2twdHJfeGNoZ19iZW5jaC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2twdHJfeGNoZ19iZW5jaC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjM2Mzg4MzA3M2UyYzBlXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mva3B0cl94Y2hnX2JlbmNoLmNcbkBAIC0wLDAgKzEsNDkgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKy8qIENvcHlyaWdodCAoQykgMjAyNi4gTG9vbmdzb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiBMaW1pdGVkICovXG4rI2luY2x1ZGUgXCJ2bWxpbnV4LmhcIlxuKyNpbmNsdWRlIFx1MDAzY2JwZi9icGZfaGVscGVycy5oXHUwMDNlXG4rXG4rI2luY2x1ZGUgXCJicGZfZXhwZXJpbWVudGFsLmhcIlxuKyNpbmNsdWRlIFwiYnBmX21pc2MuaFwiXG4rXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuK1xuKyNkZWZpbmUgTUFYX1hDSEdfTE9PUFMgNDA5NlxuK1xuK3N0cnVjdCBiaW5fZGF0YSB7XG4rXHRjaGFyIGJsb2JbMzJdO1xuK307XG4rXG4rI2RlZmluZSBwcml2YXRlKG5hbWUpIFNFQyhcIi5ic3MuXCIgI25hbWUpIF9faGlkZGVuIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKVxuK1xuK3ByaXZhdGUoa3B0cikgc3RydWN0IGJpbl9kYXRhIF9fa3B0ciAqcHRyO1xuK3UzMiBucl9sb29wcyA9IDI1Njtcbitsb25nIGhpdHM7XG4rXG4rU0VDKFwiZmVudHJ5L1wiIFNZU19QUkVGSVggXCJzeXNfZ2V0cGdpZFwiKVxuK2ludCBiZW5jaG1hcmsodm9pZCAqY3R4KVxuK3tcbitcdHN0cnVjdCBiaW5fZGF0YSAqb2xkO1xuK1x0dTMyIGk7XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhfWENIR19MT09QUzsgaSsrKSB7XG4rXHRcdGlmIChpIFx1MDAzZT0gbnJfbG9vcHMpXG4rXHRcdFx0YnJlYWs7XG4rXG4rXHRcdG9sZCA9IGJwZl9rcHRyX3hjaGcoXHUwMDI2cHRyLCBOVUxMKTtcbitcdFx0aWYgKG9sZClcbitcdFx0XHRicGZfb2JqX2Ryb3Aob2xkKTtcbitcdH1cbitcbitcdF9fc3luY19hZGRfYW5kX2ZldGNoKFx1MDAyNmhpdHMsIGkpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuKy8qXG4rICogQlRGIEZVTkMgcmVjb3JkcyBhcmUgbm90IGdlbmVyYXRlZCBmb3Iga2Z1bmNzIHJlZmVyZW5jZWQgb25seSB0aHJvdWdoXG4rICogb3B0aW1pemVkIHBhdGhzLiBLZWVwIGJwZl9vYmpfZHJvcCgpIHZpc2libGUgdG8gbGliYnBmJ3Mga2Z1bmMgbGlua2VyLlxuKyAqL1xuK3ZvaWQgX19idGZfcm9vdCh2b2lkKVxuK3tcbitcdGJwZl9vYmpfZHJvcChOVUxMKTtcbit9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzozOTowMC44NTQxMzA3OThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MzE4NTA1MjM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIExvb25nQXJjaCBCUEYgSklUOiBBIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyB3ZSBoYXZlIGEgcGF0Y2ggc2VyaWVzIGhlcmUsIGFuZCBpdCdzIHRvdWNoaW5nIGBhcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhgLCBgYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY2AsIGFuZCBzb21lIEJQRiBzZWxmdGVzdHMuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgYWRkaW5nIG5ldyBMb29uZ0FyY2ggaW5zdHJ1Y3Rpb25zIGZvciBhdG9taWMgb3BlcmF0aW9ucyDigJMgYGFtc3dhcGRiYl9vcGAsIGBhbWFkZGRiYl9vcGAsIGFuZCBzbyBvbiDigJMgYW5kIHRoZW4gKnVzaW5nKiB0aG9zZSBpbnN0cnVjdGlvbnMgd2l0aGluIHRoZSBCUEYgSklUIGNvbXBpbGVyIHNwZWNpZmljYWxseSBmb3IgdGhlIExvb25nQXJjaCBhcmNoaXRlY3R1cmUuIFRoaXMgYWxzbyBpbnZvbHZlcyBlbmFibGluZyBgYnBmX2ppdF9zdXBwb3J0c19wdHJfeGNoZ2AgZm9yIExvb25nQXJjaC4gVGhlIHdob2xlIHRoaW5nIGlzIGNsZWFybHkgTG9vbmdBcmNoLXNwZWNpZmljLCBzbyB0aGF0J3MgdGhlIHNjb3BlLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IElzIHRoaXMgd29ydGggZnV6emluZz8gQW5kIHRoZSBhbnN3ZXIgaXMgbGlrZWx5IHllcy4gVGhpcyBpcyBtb2RpZnlpbmcgdGhlIEJQRiBKSVQgY29tcGlsZXIsIHdoaWNoIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0J3MgcmVhY2hhYmxlIGlmIHdlJ3JlIHJ1bm5pbmcgb24gTG9vbmdBcmNoLlxuXG5CdXQgdGhlbiBJIHN0YXJ0IHRvIHRoaW5rIGFib3V0IHRoZSBwcmFjdGljYWxpdGllcy4gRG9lcyBzeXprYWxsZXIgZXZlbiAqc3VwcG9ydCogTG9vbmdBcmNoIGluIGl0cyBzdGFuZGFyZCBzZXR1cCwgbGlrZSBHQ0UvUUVNVT8gSSBrbm93IGl0IGhhbmRsZXMgcmlzY3Y2NCwgYXJtNjQsIGFtZDY0LCAzODYsIGFuZCBBUk0uIFdhaXQsIGRvZXMgc3l6a2FsbGVyIGhhbmRsZSBsb29uZ2FyY2g2ND8gVGltZSB0byBjaGVjay4gVGhpcyBnZXRzIHRyaWNreSBiZWNhdXNlIHRoZSBwYXRjaCBkZXNjcmlwdGlvbiBtZW50aW9ucywgXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuLi5cIiB3aGljaCB0aHJvd3MgYSB3cmVuY2ggaW4gdGhlIHdvcmtzLlxuXG5Ib3dldmVyLCBkb2Vzbid0IFFFTVUgYWN0dWFsbHkgc3VwcG9ydCBMb29uZ0FyY2g/IFllcywgUUVNVSBkb2VzIHN1cHBvcnQgbG9vbmdhcmNoNjQuIE9rYXksIHNvIHRoYXQncyBnb29kLlxuXG5TbywgKmNhbiogd2UgZnV6eiB0aGlzIExvb25nQXJjaCBCUEYgSklUPyBMZXQncyB0YWtlIGEgc3RlcCBiYWNrLiBJIG5lZWQgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBjb2RlIGJlaW5nIG1vZGlmaWVkLiBObywgaXQncyBhbGwgdHVja2VkIGF3YXkgbmVhdGx5IHdpdGhpbiBgYXJjaC9sb29uZ2FyY2gvYCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gLiBPa2F5LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IHJ1bm5pbmcgdGhpcyBmdXp6aW5nIGNhbXBhaWduIG9uIExvb25nQXJjaC4gVGhlIHByb2JsZW0gaGVyZSBpcyBzeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgbG9vbmdhcmNoNjQgaW5zdGFuY2UgaW4gaXRzIHN0YW5kYXJkIHN5emJvdCBzZXR1cCwgYnV0IGl0IG1heSBiZSBzdXBwb3J0ZWQuXG5cbk9rYXksIGJhY2sgdG8gdGhlIFwiaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHNcIiBsaW5lLiBRRU1VIGRvZXMgc3VwcG9ydCBsb29uZ2FyY2g2NC4gTGV0J3MgbG9vayBjbG9zZWx5IGF0IGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYC4gVGhlIGBlbWl0X2F0b21pY19ybXdgIGZ1bmN0aW9uIGlzIHRoZSBhcmVhIG9mIGludGVyZXN0IGhlcmUuIFRpbWUgdG8gc2VhcmNoIGZvciBgZW1pdF9hdG9taWNfcm13YCBpbiBgYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NzIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzozOToxMC4xNzI2Mzc3NDRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA0MTI5NTExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVtaXRfYXRvbWljX3Jtd1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MzUwPXN0YXRpYyB2b2lkIGVtaXRfc3RvcmVfc3RhY2tfaW1tNjQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IHJlZywgaW50IHN0YWNrX29mZiwgdTY0IGltbTY0KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0zNTUtXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzozNTY6c3RhdGljIGludCBlbWl0X2F0b21pY19ybXcoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMzU3LXtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9NzA0PXN0YXRpYyBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgZXh0cmFfcGFzcylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMTQyNi1cXHRcXHRpZiAoIWJwZl9hdG9taWNfaXNfbG9hZF9zdG9yZShpbnNuKSlcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjE0Mjc6XFx0XFx0XFx0cmV0ID0gZW1pdF9hdG9taWNfcm13KGluc24sIGN0eCk7XFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0xNDI4LVxcdFxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDc6Mzk6MTAuNTc2NzcyNjQ2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY1MTQzODMxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBDb21waWxlcioqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgY2hhbmdlcyB0byBgZW1pdF9hdG9taWNfcm13YCB3aXRoaW4gYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgLiBSaWdodCwgdGhpcyBpcyB0aGUgQlBGIEpJVCBjb21waWxlciBzcGVjaWZpY2FsbHkgZm9yIHRoZSBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlLiBUaGUgcXVlc3Rpb24gaXM6IHNob3VsZCB3ZSBwcmlvcml0aXplIHRoaXMgZm9yIGZ1enppbmc/IEFic29sdXRlbHkuIFRoZSBCUEYgSklUIGNvbXBpbGVyIGlzIGEga25vd24gd2VhayBwb2ludCBhbmQgcHJpbWUgdGFyZ2V0IGZvciB0aGlzIGtpbmQgb2YgdGVzdGluZy5cblxuTm93LCB3aGF0IGFib3V0IHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgd2UgbmVlZCB0byBjb25zaWRlcj8gSSBrbm93IHdlJ3JlIGxvb2tpbmcgZm9yIGFueXRoaW5nIHNwZWNpZmljIHRvIHRoZSAqbW9kaWZpZWQqIGNvZGUuIFRoZSBpbnN0cnVjdGlvbnMgc2F5IG5vdCB0byBsaXN0IGdlbmVyaWMgY29uZmlncyBhcyB3ZSBjYW4gYXNzdW1lIHRoZXkgYXJlIGFscmVhZHkgZW5hYmxlZC4gYENPTkZJR19CUEZfSklUYCBhbmQgYENPTkZJR19MT09OR0FSQ0hgLiBgQ09ORklHX0JQRl9KSVRgIGlzIGxpa2VseSBhbHJlYWR5IGVuYWJsZWQgaWYgd2UncmUgZGVhbGluZyB3aXRoIGEgQlBGIEpJVCBmaWxlLCBidXQgbGV0J3MgbGlzdCBpdCBhbnl3YXkuIFRvIGJlIHNhZmUsIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB3aGF0IGVuYWJsZXMgYGJwZl9qaXQuY2AgLSBJIHNob3VsZCBjaGVjayBgYXJjaC9sb29uZ2FyY2gvS2NvbmZpZ2Agb3IgYGFyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZWAgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjI3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA3OjM5OjE1LjIyODIxMjY1NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzE5Mjc0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGUtNi0jXFxuYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzozOToxNS4yODE0MTAxNzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzEyODQyMjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmU6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuUmlnaHQsIHNvIEknbSBzZWVpbmcgdGhpcyBkZXBlbmRlbmN5IG9uIGBDT05GSUdfQlBGX0pJVGAuIFRoYXQncyBhIGdpdmVuLCBJIHVuZGVyc3RhbmQgdGhlIG5lZWQgZm9yIHRoZSBKdXN0LUluLVRpbWUgY29tcGlsZXIgaW4gdGhpcyBjb250ZXh0LiBCdXQgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC5cblxuQXJlIHRoZXJlIGFueSAqb3RoZXIqIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGluZmx1ZW5jZSB0aGlzPyBBbnl0aGluZyByZWxhdGVkIHRvIHRoZSB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZSwgb3B0aW1pemF0aW9ucywgc3BlY2lmaWMgaGFyZHdhcmUgc3VwcG9ydC4uLiBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBhbmdsZXMuIE15IGluc3RpbmN0cyBhcmUgdGVsbGluZyBtZSB0byBkaWcgZGVlcGVyLlxuXG5TcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCBhbnl0aGluZyByZWxhdGVkIHRvIGF0b21pYyBvcGVyYXRpb25zLCBvciBtYXliZSBldmVuIHJlbGF0ZWQgdG8gbWVtb3J5IGFjY2Vzcy4gSWYgdGhpcyBpcyBwZXJmb3JtYW5jZS1jcml0aWNhbCwgSSdsbCBuZWVkIHRvIGtub3cgd2hpY2ggb3B0aW9ucyBhcmUgZ29pbmcgdG8gYWZmZWN0IHRoZSBzcGVlZCBvZiB0aGF0LiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgcG90ZW50aWFsbHkgaGlkZGVuIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoZSAqZnVsbCogY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg3NDUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzozOToxOC41OTQyNTQzNzFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgyNzQxNTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDc6Mzk6MTguNjUyNTM2MDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzQxNDE0ODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBDb25maWd1cmF0aW9uIGZvciBCUEYgSklUIENvbXBpbGF0aW9uKipcblxuQWxyaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIEJQRiBKSVQgY29tcGlsYXRpb24gc2l0dWF0aW9uLCBhbmQgSSdtIG5vdCBzZWVpbmcgYW55IHNwZWNpZmljLCBvYnZpb3VzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBkZWZpbmVkIHdpdGhpbiBgYnBmX2ppdC5jYC4gVGhhdCdzIGEgbGl0dGxlIHVudXN1YWwsIGJ1dCBub3QgbmVjZXNzYXJpbHkgYSBzaG93c3RvcHBlci4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIGJyb2FkZW4gdGhlIHNjb3BlIGFuZCBzZWUgaWYgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbmNsdWRlIGZpbGVzIG1pZ2h0IGhvbGQgdGhlIGtleS4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gY2hlY2sgYGFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaGAuIE1heWJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9yIGluc3RydWN0aW9uIGRlZmluaXRpb25zIGFyZSBoYW5kbGVkIHRoZXJlLCBnaXZlbiB3ZSdyZSBkZWFsaW5nIHdpdGggTG9vbmdBcmNoLiBUaGF0J3MgYSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHRoZSBsb3ctbGV2ZWwgZGV0YWlscyB0aGF0IHdvdWxkIGluZmx1ZW5jZSB0aGUgSklUIGNvbXBpbGVyJ3MgYmVoYXZpb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwMzIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzozOToyMS45OTM5NTI4NjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNzQ1ODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaD00NDg9c3RhdGljIGlubGluZSBib29sIGlzX3JhX3NhdmVfaW5zKHVuaW9uIGxvb25nYXJjaF9pbnN0cnVjdGlvbiAqaXApXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oLTQ0OS17XFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oOjQ1MDpcXHRjb25zdCB1MzIgb3Bjb2RlID0gSVNfRU5BQkxFRChDT05GSUdfMzJCSVQpID8gc3R3X29wIDogc3RkX29wO1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaC00NTEtXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0Lmg9NDU5PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19zdGFja19hbGxvY19pbnModW5pb24gbG9vbmdhcmNoX2luc3RydWN0aW9uICppcClcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmgtNDYwLXtcXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0Lmg6NDYxOlxcdGNvbnN0IHUzMiBvcGNvZGUgPSBJU19FTkFCTEVEKENPTkZJR18zMkJJVCkgPyBhZGRpd19vcCA6IGFkZGlkX29wO1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaC00NjItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA3OjM5OjIyLjA0NDcwNzM4NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDAyNTQ5OTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIEpJVCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIHplcm9pbmcgaW4gb24gdGhpcyBgQ09ORklHX0JQRl9KSVRgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIOKAkyB0aGF0J3MgdGhlIGNvcmUuIE15IHJlYWwgZm9jdXMsIHRob3VnaCwgYXJlIHRoZXNlIGNydWNpYWwgc3ltYm9sczogYGVtaXRfYXRvbWljX3Jtd2AgYW5kIGBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnYC4gQWgsIGhhbmcgb24sIGBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnYCBpcyBiYXNpY2FsbHkganVzdCBhIGJvb2xlYW4gY2hlY2ssIGEgc2ltcGxlIHRydWUvZmFsc2UgcmV0dXJuLiBTbywgaXQgbG9va3MgbGlrZSBgZW1pdF9hdG9taWNfcm13YCBpcyB0aGUgcmVhbCBoZWF2eSBsaWZ0ZXIgaGVyZSwgdGhlIG9uZSB3aGVyZSB0aGUgY29kZSBtb2RpZmljYXRpb25zIGFyZSBoYXBwZW5pbmcuIEkgbmVlZCB0byBiZSBzdXJlIHRob3VnaCwgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgdGhhdCBhcmUgYXNzb2NpYXRlZCBoZXJlPyBJIG5lZWQgdG8gY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1MzQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzozOToyNi4wNDcyNTk3NDlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NjY5ODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9qaXRfc3VwcG9ydHNfcHRyX3hjaGdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTIzNjQ9Ym9vbCBicGZfaml0X3N1cHBvcnRzX2ZzZXNzaW9uKHZvaWQpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIzNjgtXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyMzY5OmJvb2wgYnBmX2ppdF9zdXBwb3J0c19wdHJfeGNoZyh2b2lkKVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjM3MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA3OjM5OjI2LjEwMjkzNDc2OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MjAwNDIyNTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBlbWl0X2F0b21pY19ybXdgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBZZXMsIGl0IGlzLiBHaXZlbiB0aGF0IGl0J3Mgc3RhdGljIGFuZCBpdHMgcmVzcG9uc2liaWxpdHkgcmVsYXRlcyBzcGVjaWZpY2FsbHkgdG8gYXRvbWljIGluc3RydWN0aW9ucywgaXQgc2VlbXMgbGlrZSB0aGUgaWRlYWwgZm9jdXMgZm9yIG15IGludmVzdGlnYXRpb24uIENvbnNpZGVyaW5nIGBidWlsZF9pbnNuYCBjYWxscyBpdCwgdGhlIGNhbGwgcGF0aCBpdHNlbGYgbWlnaHQgYmUgcGVyZm9ybWFuY2UtY3JpdGljYWwgZHVyaW5nIEpJVCBjb21waWxhdGlvbi4gSG93ZXZlciwgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgd2l0aCBgZW1pdF9hdG9taWNfcm13YCwgd2hpY2ggZGVhbHMgZGlyZWN0bHkgd2l0aCB0aGUgYXRvbWljIGluc3RydWN0aW9uIGdlbmVyYXRpb24uXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbnN0cnVjdGlvbnMgZ2VuZXJhdGVkIGZvciBhdG9taWMgb3BlcmF0aW9ucyBpbiB0aGUgTG9vbmdBcmNoIEJQRiBKSVQsIHNwZWNpZmljYWxseSByZXBsYWNpbmcgaW5zdHJ1Y3Rpb25zIGxpa2UgYGFtYWRkYmAgd2l0aCBzb21ldGhpbmcgbGlrZSBgYW1hZGRkYmJgLCB3aGljaCBoaW50cyBhdCBsYXJnZXIgZGF0YSBzaXplcyBvciBwZXJoYXBzIGluc3RydWN0aW9uIGZvcm1hdCBjaGFuZ2VzLiBUaGUgcHJvbXB0J3MgcmVxdWlyZW1lbnQgYWJvdXQgXCJpbXBvc3NpYmxlLXRvLXJlYWNoXCIgY29kZSBpcyBpbXBvcnRhbnQuIENhbiB3ZSBldmVuIHJlYWNoIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VPyBZZXMsIHdlIGNhbi4gUUVNVSBzdXBwb3J0cyBMb29uZ0FyY2gsIGFuZCB3ZSBjYW4gZGVmaW5pdGVseSBydW4gYSBMb29uZ0FyY2gga2VybmVsIHdpdGhpbiBpdCwgdGh1cyBtYWtpbmcgdGhpcyBjb2RlIHBhdGggcmVhY2hhYmxlLlxuXG5UaGUga2V5IGNvbmZpZ3VyYXRpb24gdG8gbm90ZSBoZXJlIGlzIGBCUEZfSklUYC4gTm93LCBsb29raW5nIGF0IHRoZSBzeW1ib2xzLCB0aGUgcHJpbWFyeSBmb2N1cyBpcyBkZWZpbml0ZWx5IG9uIGBlbWl0X2F0b21pY19ybXdgLiBUaGlzIHBhdGNoIGVuYWJsZXMgYGJwZl9qaXRfc3VwcG9ydHNfcHRyX3hjaGdgIGFzIHdlbGwsIHNvIHRoZXJlIG11c3QgYmUgYWRkaXRpb25hbCBjaGFuZ2VzIHJlbGF0ZWQgdG8gcG9pbnRlciBleGNoYW5nZS5cblxuVGhlIGZ1bmRhbWVudGFsIHJlYXNvbmluZyBpcyB0aGF0IHRoaXMgcGF0Y2ggYWx0ZXJzIHRoZSBpbnN0cnVjdGlvbiBlbWlzc2lvbiBmb3IgQlBGIGF0b21pYyBvcGVyYXRpb25zIG9uIExvb25nQXJjaC4gVGhpcyBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgQlBGIEpJVCwgYW5kIGl0J3Mgc29tZXRoaW5nIHRoYXQgY2FuIGJlIHRlc3RlZCBieSBleGVjdXRpbmcgQlBGIHByb2dyYW1zIHRoYXQgaW5jbHVkZSBhdG9taWMgb3BlcmF0aW9ucy4gTXkgbWFpbiBmb2N1cyByZW1haW5zIG9uIGBlbWl0X2F0b21pY19ybXdgIGFuZCBgYnBmX2ppdF9zdXBwb3J0c19wdHJfeGNoZ2AuXG5cbk5vdywgbG9va2luZyBkZWVwZXIsIHRoZSBjaGFuZ2VzIGFyZSBjZW50ZXJlZCBhcm91bmQgYGVtaXRfYXRvbWljX3Jtd2AgaW4gYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgIGFuZCBpbmxpbmUgZnVuY3Rpb25zLCBzdWNoIGFzIHRob3NlIGdlbmVyYXRlZCBieSBgREVGX0VNSVRfUkVHM19GT1JNQVRgIChsaWtlIGBlbWl0X2Ftc3dhcGRiYmApLCBkZWZpbmVkIGluIGBhcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhgLiBUaGVyZSBpcyBhIHRlc3QgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9gIHRoYXQgYmVuY2htYXJrcyBga3B0cl94Y2hnYCwgd2hpY2ggaXMgdXNlZnVsIGZvciB2YWxpZGF0aW9uLCBidXQgYGVtaXRfYXRvbWljX3Jtd2AgcmVtYWlucyB0aGUgY29yZSBhcmVhIG9mIGNvbmNlcm4uIE5vLCB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIHN1YnN0YW50aWFsIGZ1bmN0aW9ucyBtb2RpZmllZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk2MCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzozOTozNS4zMDMzNjA4MzhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NTU4OTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVtaXRfYXRvbWljX3Jtd1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MzUwPXN0YXRpYyB2b2lkIGVtaXRfc3RvcmVfc3RhY2tfaW1tNjQoc3RydWN0IGppdF9jdHggKmN0eCwgaW50IHJlZywgaW50IHN0YWNrX29mZiwgdTY0IGltbTY0KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0zNTUtXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzozNTY6c3RhdGljIGludCBlbWl0X2F0b21pY19ybXcoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4KVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMzU3LXtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9NzA0PXN0YXRpYyBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgZXh0cmFfcGFzcylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMTQyNi1cXHRcXHRpZiAoIWJwZl9hdG9taWNfaXNfbG9hZF9zdG9yZShpbnNuKSlcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjE0Mjc6XFx0XFx0XFx0cmV0ID0gZW1pdF9hdG9taWNfcm13KGluc24sIGN0eCk7XFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0xNDI4LVxcdFxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDc6Mzk6MzUuMzU3OTI1NDE3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MDQxNTA1NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEJQRiBKSVQgTG9vbmdBcmNoIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSB6ZXJvZWQgaW4gb24gdGhlIGBicGZfaml0LmNgIGZpbGUuIEl0IGxvb2tzIGxpa2UgdGhlIG1haW4gZnVuY3Rpb24gaW1wYWN0ZWQgaXMgYGVtaXRfYXRvbWljX3Jtd2AsIHdoaWNoIGFsaWducyB3aXRoIHRoZSBpbnRlbnRpb24gb2YgdGhlIGNoYW5nZXMg4oCTIGZvY3VzaW5nIG9uIGF0b21pYyBvcGVyYXRpb25zLiBUaGUgYGJwZl9qaXRfc3VwcG9ydHNfcHRyX3hjaGdgIGFkZGl0aW9uIGlzIGFsc28gbm90ZXdvcnRoeSwgZGlyZWN0bHkgc3VwcG9ydGluZyB0aGUgbmV3IGF0b21pYyBpbnN0cnVjdGlvbiBpbXBsZW1lbnRhdGlvbnMuXG5cbk5vdywgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkgc2VlIHRoZSByZXF1aXJlbWVudCBmb3IgYEJQRl9TWVNDQUxMYCBmb3IgQlBGIGluIGdlbmVyYWwsIGJ1dCB0aGF0J3MgYSBiYXNlbGluZS4gVGhlIGBCUEZfSklUYCBjb25maWcgc2VlbXMgY3JpdGljYWwgc2luY2UgdGhpcyBwYXRjaCBpcyBkaXJlY3RseSBtb2RpZnlpbmcgdGhlIEpJVCBjb21waWxlci4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbid0IGxpc3QgYW55dGhpbmcgdGhhdCdzIHRvbyBnZW5lcmljLCBhbmQgYEJQRl9KSVRgIGNlcnRhaW5seSBpc24ndC4gSSdsbCBzdGljayB3aXRoIGBCUEZfSklUYCBmb3Igbm93LlxuXG5Db25zaWRlcmluZyB0aGF0IHRoZSBjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byBMb29uZ0FyY2gsIEkgY291bGQgY29uc2lkZXIgaWYgSSBuZWVkIHRvIGluY2x1ZGUgYExPT05HQVJDSGAuIEhvd2V2ZXIsIHRoZSBwcm9tcHQgZGlyZWN0cyBtZSB0byBsaXN0IG9ubHkgd2hhdCBpcyBuZWVkZWQsIGFuZCBgQlBGX0pJVGAgaXMgc3BlY2lmaWMgZW5vdWdoLCBzbyBJIHdvbid0LlxuXG5Ob3csIGxldCBtZSBhcnRpY3VsYXRlIHRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgYW5hbHlzaXMuIFRoZSBwYXRjaCdzIGNvcmUgZnVuY3Rpb24gaXMgdG8gdXBkYXRlIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlciB0byBsZXZlcmFnZSBuZXcgYXRvbWljIGluc3RydWN0aW9ucyBsaWtlIGBhbWFkZGRiYmAgYW5kIGBhbXN3YXBkYmJgIHRvIG9wdGltaXplIEJQRiBhdG9taWMgb3BlcmF0aW9ucywgYW5kIGl0IGFsc28gZW5hYmxlcyBgYnBmX2ppdF9zdXBwb3J0c19wdHJfeGNoZ2AuIEl0J3MgYSBmdW5jdGlvbmFsIGVuaGFuY2VtZW50IHRvIHRoZSBCUEYgSklUIGxvZ2ljLiBUaGlzIG1lYW5zIHRoaXMgY2FuIGJlIGZ1enplZCB0aHJvdWdoIEJQRiBwcm9ncmFtcyB0aGF0IHVzZSBhdG9taWMgb3BlcmF0aW9ucy5cblxuTXkgZm9jdXMgc3ltYm9scyBhcmUgYGVtaXRfYXRvbWljX3Jtd2AuXG5cbkFuZCBteSBzZWxlY3RlZCBjb25maWcgaXMgYEJQRl9KSVRgLlxuXG5JJ20gcmVhZHkgdG8gcHJvY2VlZCB3aXRoIHNldHRpbmcgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzg0LCJPdXRwdXRUb2tlbnMiOjEzMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNzozOTo0MS45NjIwNzg5NzNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDk0NDExOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImVtaXRfYXRvbWljX3Jtd1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyIHRvIHVzZSBuZXcgYXRvbWljIGluc3RydWN0aW9ucyAoZS5nLiwgYW1hZGRkYmIsIGFtc3dhcGRiYikgZm9yIEJQRiBhdG9taWMgb3BlcmF0aW9ucyBhbmQgZW5hYmxlcyBicGZfaml0X3N1cHBvcnRzX3B0cl94Y2hnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgQlBGIEpJVCBsb2dpYyBvbiBMb29uZ0FyY2gsIHdoaWNoIGNhbiBiZSBmdXp6ZWQgYnkgbG9hZGluZyBhbmQgZXhlY3V0aW5nIEJQRiBwcm9ncmFtcyB3aXRoIGF0b21pYyBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJlbWl0X2F0b21pY19ybXdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCB1cGRhdGVzIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlciB0byB1c2UgbmV3IGF0b21pYyBpbnN0cnVjdGlvbnMgKGUuZy4sIGFtYWRkZGJiLCBhbXN3YXBkYmIpIGZvciBCUEYgYXRvbWljIG9wZXJhdGlvbnMgYW5kIGVuYWJsZXMgYnBmX2ppdF9zdXBwb3J0c19wdHJfeGNoZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIEJQRiBKSVQgbG9naWMgb24gTG9vbmdBcmNoLCB3aGljaCBjYW4gYmUgZnV6emVkIGJ5IGxvYWRpbmcgYW5kIGV4ZWN1dGluZyBCUEYgcHJvZ3JhbXMgd2l0aCBhdG9taWMgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt69zq[1] Phase: Succeeded StartedAt: 2026-06-22 07:39:52 +0000 UTC FinishedAt: 2026-06-22 07:39:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-22 07:39:52 +0000 UTC FinishedAt: 2026-06-22 07:39:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[2] Phase: Succeeded StartedAt: 2026-06-22 07:39:52 +0000 UTC FinishedAt: 2026-06-22 09:12:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-22 07:39:52 +0000 UTC FinishedAt: 2026-06-22 09:12:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-22 07:39:52 +0000 UTC FinishedAt: 2026-06-22 07:40:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-22 07:39:52 +0000 UTC FinishedAt: 2026-06-22 07:39:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt69zq/series-workflowt69zq-convert-artifact-3708594584/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-22 07:40:02 +0000 UTC FinishedAt: 2026-06-22 08:03:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-22 07:40:02 +0000 UTC FinishedAt: 2026-06-22 08:03:42 +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:*a91d0426-b269-42fe-8f7a-48b56a1f627f,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-workflowt69zq/series-workflowt69zq-convert-artifact-3708594584/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": "e449296f-1304-467b-ad50-c99cb89657a3", "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-workflowt69zq/series-workflowt69zq-build-action-993781454/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-22 07:40:02 +0000 UTC FinishedAt: 2026-06-22 08:03:32 +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:*a91d0426-b269-42fe-8f7a-48b56a1f627f,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-workflowt69zq/series-workflowt69zq-convert-artifact-3708594584/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": "e449296f-1304-467b-ad50-c99cb89657a3", "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-workflowt69zq/series-workflowt69zq-build-action-993781454/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-22 08:03:42 +0000 UTC FinishedAt: 2026-06-22 08:03:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-22 08:03:42 +0000 UTC FinishedAt: 2026-06-22 08:03:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-22 08:03:42 +0000 UTC FinishedAt: 2026-06-22 08:04:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-22 08:03:42 +0000 UTC FinishedAt: 2026-06-22 08:03:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt69zq/series-workflowt69zq-convert-artifact-3479412735/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-22 08:04:03 +0000 UTC FinishedAt: 2026-06-22 08:06:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-22 08:04:03 +0000 UTC FinishedAt: 2026-06-22 08:06:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e449296f-1304-467b-ad50-c99cb89657a3,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-workflowt69zq/series-workflowt69zq-build-action-993781454/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-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-22 08:06:38 +0000 UTC FinishedAt: 2026-06-22 08:06:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-22 08:06:38 +0000 UTC FinishedAt: 2026-06-22 08:06:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-22 08:06:38 +0000 UTC FinishedAt: 2026-06-22 09:06:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-22 08:06:38 +0000 UTC FinishedAt: 2026-06-22 09:06:32 +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:*a91d0426-b269-42fe-8f7a-48b56a1f627f,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-workflowt69zq/series-workflowt69zq-convert-artifact-3479412735/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": "5dd29f76-d5f8-4da9-a3b1-0e2672667ad1", "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-workflowt69zq/series-workflowt69zq-build-action-1333321046/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Failed StartedAt: 2026-06-22 08:06:38 +0000 UTC FinishedAt: 2026-06-22 08:12:15 +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:*a91d0426-b269-42fe-8f7a-48b56a1f627f,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-workflowt69zq/series-workflowt69zq-convert-artifact-3479412735/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(1) Phase: Succeeded StartedAt: 2026-06-22 08:21:46 +0000 UTC FinishedAt: 2026-06-22 09:06:22 +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:*a91d0426-b269-42fe-8f7a-48b56a1f627f,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-workflowt69zq/series-workflowt69zq-convert-artifact-3479412735/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": "5dd29f76-d5f8-4da9-a3b1-0e2672667ad1", "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-workflowt69zq/series-workflowt69zq-build-action-1333321046/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-22 09:06:32 +0000 UTC FinishedAt: 2026-06-22 09:06:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-22 09:06:32 +0000 UTC FinishedAt: 2026-06-22 09:06:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-22 09:06:32 +0000 UTC FinishedAt: 2026-06-22 09:08:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-22 09:06:32 +0000 UTC FinishedAt: 2026-06-22 09:08: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:*5dd29f76-d5f8-4da9-a3b1-0e2672667ad1,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-workflowt69zq/series-workflowt69zq-build-action-1333321046/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-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-22 09:08:30 +0000 UTC FinishedAt: 2026-06-22 09:12:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-22 09:08:30 +0000 UTC FinishedAt: 2026-06-22 09:12:39 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"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:*e449296f-1304-467b-ad50-c99cb89657a3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5dd29f76-d5f8-4da9-a3b1-0e2672667ad1,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-workflowt69zq/series-workflowt69zq-build-action-993781454/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-workflowt69zq/series-workflowt69zq-build-action-1333321046/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-22 09:08:30 +0000 UTC FinishedAt: 2026-06-22 09:10:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-22 09:08:30 +0000 UTC FinishedAt: 2026-06-22 09:09:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"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-workflowt69zq/series-workflowt69zq-convert-artifact-3270238360/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-22 09:08:30 +0000 UTC FinishedAt: 2026-06-22 09:08:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-22 09:08:30 +0000 UTC FinishedAt: 2026-06-22 09:08:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-22 09:08:31 +0000 UTC FinishedAt: 2026-06-22 09:08:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-22 09:10:08 +0000 UTC FinishedAt: 2026-06-22 09:12:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt69zq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["emit_atomic_rmw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT"],"series_id":"78dfa6cd-1f38-4cfd-8944-2fbe3024ad6c","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-22 09:10:08 +0000 UTC FinishedAt: 2026-06-22 09:12:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e449296f-1304-467b-ad50-c99cb89657a3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5dd29f76-d5f8-4da9-a3b1-0e2672667ad1,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-workflowt69zq/series-workflowt69zq-build-action-993781454/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-workflowt69zq/series-workflowt69zq-build-action-1333321046/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-workflowt69zq/series-workflowt69zq-convert-artifact-3270238360/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,}