Name: series-workflowtv99j Phase: Succeeded StartedAt: 2026-07-23 06:17:12 +0000 UTC FinishedAt: 2026-07-23 11:01:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[0] Phase: Succeeded StartedAt: 2026-07-23 06:17:12 +0000 UTC FinishedAt: 2026-07-23 06:40:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[0].run-triage Phase: Succeeded StartedAt: 2026-07-23 06:17:12 +0000 UTC FinishedAt: 2026-07-23 06:40:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "5e0603ba185af6754422ad28b646798686b6caf6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IDLE_PAGE_TRACKING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "5e0603ba185af6754422ad28b646798686b6caf6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IDLE_PAGE_TRACKING" ], "series_id": "aff4b681-3cf9-4c0d-bfdf-81f600cb95a2" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "page_idle_get_folio", "page_idle_bitmap_read", "page_idle_bitmap_write" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lETEVfUEFHRV9UUkFDS0lORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhZ2VfaWRsZV9nZXRfZm9saW8mIzM0OywKICAgICYjMzQ7cGFnZV9pZGxlX2JpdG1hcF9yZWFkJiMzNDssCiAgICAmIzM0O3BhZ2VfaWRsZV9iaXRtYXBfd3JpdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHN5bmNocm9uaXphdGlvbiBsb2dpYyBpbiBgcGFnZV9pZGxlX2dldF9mb2xpb2AgYnkgY2hhbmdpbmcgdGhlIG9yZGVyIG9mIGBmb2xpb190cnlfZ2V0YCBhbmQgYGZvbGlvX3Rlc3RfbHJ1YCBjaGVja3MuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBzeXNmcyByZWFkL3dyaXRlIG9wZXJhdGlvbnMgb24gYC9zeXMva2VybmVsL21tL3BhZ2VfaWRsZS9iaXRtYXBgLiBGdXp6aW5nIHRoZXNlIHN5c2ZzIGhhbmRsZXJzIGNhbiBoZWxwIHZlcmlmeSB0aGUgZml4IGZvciB0aGUgcmFjZSBjb25kaXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDY6Mzk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlMjkzNjYxMWUxN2M1ZjYwNzM0YTE2YzgzMjg2MmY1NWI2ZGRiNTVmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMDY6Mzk6MTkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vcGFnZV9pZGxlLmMgYi9tbS9wYWdlX2lkbGUuY1xuaW5kZXggOWM2N2NiYWMyOTY1OTguLjI5ZWUxOGYwZThjZTAyIDEwMDY0NFxuLS0tIGEvbW0vcGFnZV9pZGxlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL3BhZ2VfaWRsZS5jXG5AQCAtNDAsOSAmIzQzOzQwLDkgQEAgc3RhdGljIHN0cnVjdCBmb2xpbyAqcGFnZV9pZGxlX2dldF9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbilcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRmb2xpbyA9IHBhZ2VfZm9saW8ocGFnZSk7XG4tXHRpZiAoIWZvbGlvX3Rlc3RfbHJ1KGZvbGlvKSB8fCAhZm9saW9fdHJ5X2dldChmb2xpbykpXG4mIzQzO1x0aWYgKCFmb2xpb190cnlfZ2V0KGZvbGlvKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4tXHRpZiAodW5saWtlbHkocGFnZV9mb2xpbyhwYWdlKSAhPSBmb2xpbyB8fCAhZm9saW9fdGVzdF9scnUoZm9saW8pKSkge1xuJiM0MztcdGlmICh1bmxpa2VseShwYWdlX2ZvbGlvKHBhZ2UpICE9IGZvbGlvKSB8fCAhZm9saW9fdGVzdF9scnUoZm9saW8pKSB7XG4gXHRcdGZvbGlvX3B1dChmb2xpbyk7XG4gXHRcdGZvbGlvID0gTlVMTDtcbiBcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNjozOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SURMRV9QQUdFX1RSQUNLSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGFnZV9pZGxlX2dldF9mb2xpbyYjMzQ7LAogICAgJiMzNDtwYWdlX2lkbGVfYml0bWFwX3JlYWQmIzM0OywKICAgICYjMzQ7cGFnZV9pZGxlX2JpdG1hcF93cml0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIGluIGBwYWdlX2lkbGVfZ2V0X2ZvbGlvYCBieSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgYGZvbGlvX3RyeV9nZXRgIGFuZCBgZm9saW9fdGVzdF9scnVgIGNoZWNrcy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN5c2ZzIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBvbiBgL3N5cy9rZXJuZWwvbW0vcGFnZV9pZGxlL2JpdG1hcGAuIEZ1enppbmcgdGhlc2Ugc3lzZnMgaGFuZGxlcnMgY2FuIGhlbHAgdmVyaWZ5IHRoZSBmaXggZm9yIHRoZSByYWNlIGNvbmRpdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTI5MzY2MTFlMTdjNWY2MDczNGExNmM4MzI4NjJmNTViNmRkYjU1ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIzIDA2OjM5OjE5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vcGFnZV9pZGxlLmMgYi9tbS9wYWdlX2lkbGUuYwppbmRleCA5YzY3Y2JhYzI5NjU5OC4uMjllZTE4ZjBlOGNlMDIgMTAwNjQ0Ci0tLSBhL21tL3BhZ2VfaWRsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL3BhZ2VfaWRsZS5jCkBAIC00MCw5ICYjNDM7NDAsOSBAQCBzdGF0aWMgc3RydWN0IGZvbGlvICpwYWdlX2lkbGVfZ2V0X2ZvbGlvKHVuc2lnbmVkIGxvbmcgcGZuKQogCQlyZXR1cm4gTlVMTDsKIAogCWZvbGlvID0gcGFnZV9mb2xpbyhwYWdlKTsKLQlpZiAoIWZvbGlvX3Rlc3RfbHJ1KGZvbGlvKSB8fCAhZm9saW9fdHJ5X2dldChmb2xpbykpCiYjNDM7CWlmICghZm9saW9fdHJ5X2dldChmb2xpbykpCiAJCXJldHVybiBOVUxMOwotCWlmICh1bmxpa2VseShwYWdlX2ZvbGlvKHBhZ2UpICE9IGZvbGlvIHx8ICFmb2xpb190ZXN0X2xydShmb2xpbykpKSB7CiYjNDM7CWlmICh1bmxpa2VseShwYWdlX2ZvbGlvKHBhZ2UpICE9IGZvbGlvKSB8fCAhZm9saW9fdGVzdF9scnUoZm9saW8pKSB7CiAJCWZvbGlvX3B1dChmb2xpbyk7CiAJCWZvbGlvID0gTlVMTDsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MzcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIFBhZ2UgSWRsZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYG1tL3BhZ2VfaWRsZS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgcGFnZV9pZGxlX2dldF9mb2xpb2AgZnVuY3Rpb24uIExldCYjMzk7cyBicmVhayBkb3duIHRoaXMgZGlmZi4gSW5pdGlhbGx5LCBJIHNhdyBzb21lIHN0cmFpZ2h0Zm9yd2FyZCBsb2dpYyBhbHRlcmF0aW9uLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgZm9saW9fdHJ5X2dldGAgYW5kIGBmb2xpb190ZXN0X2xydWAgY2FsbHMuIEl0IGxvb2tlZCBsaWtlIHRoZSBwYXRjaCBqdXN0IG1vdmVkIHRoZSBgIWZvbGlvX3Rlc3RfbHJ1KGZvbGlvKWAgY2hlY2sgZnJvbSBiZWZvcmUgdGhlIGB0cnlfZ2V0YCB0byBhZnRlci4gQnV0IGhvbGQgb24uLi4gdGhlICpzZWNvbmQqIGBpZmAgc3RhdGVtZW50IGFscmVhZHkgaGFkIGAhZm9saW9fdGVzdF9scnUoZm9saW8pYCEKCk9rYXksIEkgc2VlIGl0IG5vdy4gVGhlIGNydWNpYWwgY2hhbmdlIGlzIHRoYXQgdGhlIGB1bmxpa2VseWAgbWFjcm8gaXMgb25seSB3cmFwcGluZyBgcGFnZV9mb2xpbyhwYWdlKSAhPSBmb2xpb2AgaW4gdGhlIG1vZGlmaWVkIGNvZGUuIFRoZSBvcmlnaW5hbCBgaWZgIGNvbmRpdGlvbiB3YXMgbG9uZ2VyLiBTbyB0aGUgZmlyc3QgYGlmYCBzdGF0ZW1lbnQgKmxvc3QqIHRoYXQgYCFmb2xpb190ZXN0X2xydShmb2xpbylgIGNvbmRpdGlvbi4gTWFrZXMgc2Vuc2UuLi4gTm93IEkgbmVlZCB0byBzZWUgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgbWlnaHQgYmUgaW4gcGxheSBoZXJlLiBUaW1lIHRvIGp1bXAgaW50byBgbW0vcGFnZV9pZGxlLmNgIGFuZCBmaWd1cmUgb3V0IHRoZSBjb25kaXRpb25hbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDY6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFnZV9pZGxlX2dldF9mb2xpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3BhZ2VfaWRsZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3BhZ2VfaWRsZS5jLTMzLSAqL1xubW0vcGFnZV9pZGxlLmM6MzQ6c3RhdGljIHN0cnVjdCBmb2xpbyAqcGFnZV9pZGxlX2dldF9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbilcbm1tL3BhZ2VfaWRsZS5jLTM1LXtcbi0tXG5tbS9wYWdlX2lkbGUuYz0xMTg9c3RhdGljIHNzaXplX3QgcGFnZV9pZGxlX2JpdG1hcF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9wYWdlX2lkbGUuYy0xNDEtXHRcdFx0Km91dCA9IDBVTEw7XG5tbS9wYWdlX2lkbGUuYzoxNDI6XHRcdGZvbGlvID0gcGFnZV9pZGxlX2dldF9mb2xpbyhwZm4pO1xubW0vcGFnZV9pZGxlLmMtMTQzLVx0XHRpZiAoZm9saW8pIHtcbi0tXG5tbS9wYWdlX2lkbGUuYz0xNjM9c3RhdGljIHNzaXplX3QgcGFnZV9pZGxlX2JpdG1hcF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vcGFnZV9pZGxlLmMtMTg1LVx0XHRpZiAoKCppbiBcdTAwM2VcdTAwM2UgYml0KSBcdTAwMjYgMSkge1xubW0vcGFnZV9pZGxlLmM6MTg2Olx0XHRcdGZvbGlvID0gcGFnZV9pZGxlX2dldF9mb2xpbyhwZm4pO1xubW0vcGFnZV9pZGxlLmMtMTg3LVx0XHRcdGlmIChmb2xpbykge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NzcKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqTG9jYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gZm9yIGBtbS9wYWdlX2lkbGUuY2AqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBteSBoYW5kcyBvbiB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIGBtbS9wYWdlX2lkbGUuY2AuIFRoYXQmIzM5O3MgdGhlIG1vZHVsZSBJJiMzOTttIGludGVyZXN0ZWQgaW4gcmlnaHQgbm93LiBUaGUgZmlyc3QgdGhpbmcgSSYjMzk7bGwgZG8gaXMgZmlndXJlIG91dCB3aGVyZSB0aGF0IGNvbmZpZ3VyYXRpb24gbGl2ZXMuIElzIGl0IGEga2VybmVsIGNvbmZpZyBvcHRpb24/IEEgYnVpbGQtdGltZSBmbGFnPyBBIHJ1bnRpbWUgcGFyYW1ldGVyPyBNeSBndXQgc2F5cyBpdCYjMzk7cyBsaWtlbHkgYSBgS2NvbmZpZ2Agb3B0aW9uIHNvbWV3aGVyZSwgYnVyaWVkIGRlZXAgaW4gdGhlIGtlcm5lbCB0cmVlLiBJJiMzOTtsbCBuZWVkIHRvIGxvY2F0ZSB0aGUgcmlnaHQgZmlsZS4gSSYjMzk7bSB0aGlua2luZyBJIGNhbiBzdGFydCBieSB1c2luZyBgZmluZGAgb3IgYGdyZXBgIHRvIHF1aWNrbHkgc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgZm9yIGEgcmVsZXZhbnQgYEtjb25maWdgIGZpbGUuIEkmIzM5O2xsIHByb2JhYmx5IGxvb2sgZm9yIGtleXdvcmRzIGxpa2UgJiMzNDtwYWdlX2lkbGUsJiMzNDsgJiMzNDtpZGxlLCYjMzQ7IG9yIGV2ZW4gJiMzNDttZW1vcnkgbWFuYWdlbWVudCYjMzQ7IHRvIG5hcnJvdyBpdCBkb3duLiBPbmNlIEkgaGF2ZSBhIGZldyBjYW5kaWRhdGUgZmlsZXMsIEkmIzM5O2xsIGV4YW1pbmUgdGhlbSBjbG9zZWx5LiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24gYXNzb2NpYXRlZCB3aXRoIGBtbS9wYWdlX2lkbGUuY2AsIG5vdGluZyB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgYW5kIGFueSBvdGhlciByZWxldmFudCBjb250ZXh0dWFsIGluZm9ybWF0aW9uIGl0IHByb3ZpZGVzLiBJdCYjMzk7cyBhIHF1aWNrIHByb2Nlc3MsIGJ1dCBpdCByZXF1aXJlcyBhIHN5c3RlbWF0aWMgYXBwcm9hY2ggdG8gbWFrZSBzdXJlIHRoYXQgSSYjMzk7bSBsb29raW5nIGF0IHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gb3B0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhZ2VfaWRsZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGU9MTMxPW9iai0kKENPTkZJR19VU0VSRkFVTFRGRCkgJiM0Mzs9IHVzZXJmYXVsdGZkLm9cbm1tL01ha2VmaWxlOjEzMjpvYmotJChDT05GSUdfSURMRV9QQUdFX1RSQUNLSU5HKSAmIzQzOz0gcGFnZV9pZGxlLm9cbm1tL01ha2VmaWxlLTEzMy1vYmotJChDT05GSUdfREVCVUdfUEFHRUFMTE9DKSAmIzQzOz0gZGVidWdfcGFnZV9hbGxvYy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDY6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI4MQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSWRsZSBQYWdlIFRyYWNraW5nIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaW4gcGxheSBoZXJlIGlzIGBJRExFX1BBR0VfVFJBQ0tJTkdgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIE5vdywgaXQgbG9va3MgbGlrZSB0aGUgZnVuY3Rpb24gYHBhZ2VfaWRsZV9nZXRfZm9saW9gIGlzIHRoZSB3b3JraG9yc2UgYmVoaW5kIHRoaXMsIGFuZCBpdCYjMzk7cyBiZWluZyBjYWxsZWQgYnkgYm90aCBgcGFnZV9pZGxlX2JpdG1hcF9yZWFkYCBhbmQgYHBhZ2VfaWRsZV9iaXRtYXBfd3JpdGVgLiBSaWdodCwgdGhvc2UgdHdvIGZ1bmN0aW9ucyBhcmUgdGhlIHN5c2ZzIG9wZXJhdGlvbnMgaW52b2x2ZWQgd2l0aCBpZGxlIHBhZ2UgdHJhY2tpbmcuIFRoYXQgbWFrZXMgc2Vuc2UsIHN5c2ZzIGJlaW5nIHRoZSBpbnRlcmZhY2UgZm9yIGNvbnRyb2wgYW5kIGluc3BlY3Rpb24uIE15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIGRpZyBpbnRvIGBwYWdlX2lkbGVfYml0bWFwX3JlYWRgIGFuZCBgcGFnZV9pZGxlX2JpdG1hcF93cml0ZWAgdG8gc2VlIGV4YWN0bHkgaG93IHRoZXkmIzM5O3JlIGxldmVyYWdpbmcgYHBhZ2VfaWRsZV9nZXRfZm9saW9gIGFuZCB3aGF0IHRoZXkmIzM5O3JlIGFjdHVhbGx5IGRvaW5nLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSByZWFsIGRldGFpbCB3aWxsIGJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhZ2VfaWRsZV9iaXRtYXBfcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3BhZ2VfaWRsZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3BhZ2VfaWRsZS5jPTk3PXN0YXRpYyB2b2lkIHBhZ2VfaWRsZV9jbGVhcl9wdGVfcmVmcyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbm1tL3BhZ2VfaWRsZS5jLTExNy1cbm1tL3BhZ2VfaWRsZS5jOjExODpzdGF0aWMgc3NpemVfdCBwYWdlX2lkbGVfYml0bWFwX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBrb2JqZWN0ICprb2JqLFxubW0vcGFnZV9pZGxlLmMtMTE5LVx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmLFxuLS1cbm1tL3BhZ2VfaWRsZS5jPTIwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgcGFnZV9pZGxlX2JpdG1hcF9hdHRyID1cbm1tL3BhZ2VfaWRsZS5jLTIwMS1cdFx0X19CSU5fQVRUUihiaXRtYXAsIDA2MDAsXG5tbS9wYWdlX2lkbGUuYzoyMDI6XHRcdFx0ICAgcGFnZV9pZGxlX2JpdG1hcF9yZWFkLCBwYWdlX2lkbGVfYml0bWFwX3dyaXRlLCAwKTtcbm1tL3BhZ2VfaWRsZS5jLTIwMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzk4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyB0aGUgQml0bWFwJiMzOTtzIFVzYWdlKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGVhbGluZyB3aXRoIHRoaXMgYGJpdG1hcGAgc3lzZnMgZmlsZSwgd2hpY2ggSSBrbm93IGlzIGhhbmdpbmcgb2ZmIHNvbWUga2VybmVsIG9iamVjdCAoYGtvYmpgKS4gVGhlIGtleSBxdWVzdGlvbiBub3cgaXMsIHdoYXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGlzIHRoaW5nPyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgdXNhZ2Ugb2YgYHBhZ2VfaWRsZV9iaXRtYXBfYXR0cmAuIFRpbWUgdG8gZG8gc29tZSBkaWdnaW5nIGFuZCBzZWUgd2hlcmUgdGhpcyBzcGVjaWZpYyBhdHRyaWJ1dGUgaXMgYmVpbmcgZW1wbG95ZWQgd2l0aGluIHRoZSBrZXJuZWwgY29kZS4gTGV0JiMzOTtzIHRyYWNlIHRoYXQgdXNhZ2UgYW5kIHVuZGVyc3RhbmQgaXRzIHJvbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhZ2VfaWRsZV9iaXRtYXBfYXR0ciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3BhZ2VfaWRsZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3BhZ2VfaWRsZS5jPTE2Mz1zdGF0aWMgc3NpemVfdCBwYWdlX2lkbGVfYml0bWFwX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9wYWdlX2lkbGUuYy0xOTktXG5tbS9wYWdlX2lkbGUuYzoyMDA6c3RhdGljIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlIHBhZ2VfaWRsZV9iaXRtYXBfYXR0ciA9XG5tbS9wYWdlX2lkbGUuYy0yMDEtXHRcdF9fQklOX0FUVFIoYml0bWFwLCAwNjAwLFxuLS1cbm1tL3BhZ2VfaWRsZS5jPTIwND1zdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgKmNvbnN0IHBhZ2VfaWRsZV9iaW5fYXR0cnNbXSA9IHtcbm1tL3BhZ2VfaWRsZS5jOjIwNTpcdFx1MDAyNnBhZ2VfaWRsZV9iaXRtYXBfYXR0cixcbm1tL3BhZ2VfaWRsZS5jLTIwNi1cdE5VTEwsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNzIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgYHBhZ2VfaWRsZV9iaW5fYXR0cnNgIFVzYWdlKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIG1lbnRhbCBjaGVja2xpc3Qgc3RhcnRzIHdpdGggZmlndXJpbmcgb3V0IHdoZXJlIGBwYWdlX2lkbGVfYmluX2F0dHJzYCBpcyBhY3R1YWxseSB1dGlsaXplZCB3aXRoaW4gdGhlIHN5c3RlbS4gSSBuZWVkIHRvIHRyYWNlIGl0cyB1c2FnZSBwYXR0ZXJucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIFdoZXJlIGFyZSB0aGUgcmVhZHM/IFdoZXJlIGFyZSB0aGUgd3JpdGVzPyBXaGF0IGZ1bmN0aW9ucyBjYWxsIGl0PyBXaGF0IGZ1bmN0aW9ucyBkb2VzIGl0IGNhbGw/IEtub3dpbmcgdGhlIGNhbGxzaXRlcyB3aWxsIHByb3ZpZGUgdGhlIGluc2lnaHRzIEkgbmVlZCB0byBldmFsdWF0ZSB0aGUgaW1wYWN0IG9mIHRoaXMgc3RydWN0dXJlLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgc3RhcnQgaHVudGluZyBkb3duIHRob3NlIHJlZmVyZW5jZXMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDY6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFnZV9pZGxlX2Jpbl9hdHRycyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3BhZ2VfaWRsZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3BhZ2VfaWRsZS5jPTIwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgcGFnZV9pZGxlX2JpdG1hcF9hdHRyID1cbi0tXG5tbS9wYWdlX2lkbGUuYy0yMDMtXG5tbS9wYWdlX2lkbGUuYzoyMDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlICpjb25zdCBwYWdlX2lkbGVfYmluX2F0dHJzW10gPSB7XG5tbS9wYWdlX2lkbGUuYy0yMDUtXHRcdTAwMjZwYWdlX2lkbGVfYml0bWFwX2F0dHIsXG4tLVxubW0vcGFnZV9pZGxlLmM9MjA5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIHBhZ2VfaWRsZV9hdHRyX2dyb3VwID0ge1xubW0vcGFnZV9pZGxlLmM6MjEwOlx0LmJpbl9hdHRycyA9IHBhZ2VfaWRsZV9iaW5fYXR0cnMsXG5tbS9wYWdlX2lkbGUuYy0yMTEtXHQubmFtZSA9IFwmIzM0O3BhZ2VfaWRsZVwmIzM0OyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDY6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU0NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIGBwYWdlX2lkbGVfYXR0cl9ncm91cGAgVXNhZ2UqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSBzY29wZSBhbmQgaW1wbGljYXRpb25zIG9mIGBwYWdlX2lkbGVfYXR0cl9ncm91cGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGVyZSogdGhpcyBpcyBhY3R1YWxseSBiZWluZyB1c2VkIHdpdGhpbiB0aGUgc3lzdGVtLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGNyaXRpY2FsIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHJvbGUgYW5kIGhvdyBhbnkgY2hhbmdlcyBtaWdodCByaXBwbGUgdGhyb3VnaCB0aGUgY29kZS4gSSBuZWVkIHRvIHRyYWNlIGl0cyByZWZlcmVuY2VzIHRvIGdldCBhIHNlbnNlIG9mIGl0cyBpbXBhY3QuIFdoZXJlIGlzIHRoaXMgdGhpbmcgYWN0dWFsbHkgKmhvb2tlZCogaW50byB0aGUgYXJjaGl0ZWN0dXJlPyBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhZ2VfaWRsZV9hdHRyX2dyb3VwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vcGFnZV9pZGxlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vcGFnZV9pZGxlLmM9MjA0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqY29uc3QgcGFnZV9pZGxlX2Jpbl9hdHRyc1tdID0ge1xuLS1cbm1tL3BhZ2VfaWRsZS5jLTIwOC1cbm1tL3BhZ2VfaWRsZS5jOjIwOTpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBwYWdlX2lkbGVfYXR0cl9ncm91cCA9IHtcbm1tL3BhZ2VfaWRsZS5jLTIxMC1cdC5iaW5fYXR0cnMgPSBwYWdlX2lkbGVfYmluX2F0dHJzLFxuLS1cbm1tL3BhZ2VfaWRsZS5jPTIxND1zdGF0aWMgaW50IF9faW5pdCBwYWdlX2lkbGVfaW5pdCh2b2lkKVxuLS1cbm1tL3BhZ2VfaWRsZS5jLTIxNy1cbm1tL3BhZ2VfaWRsZS5jOjIxODpcdGVyciA9IHN5c2ZzX2NyZWF0ZV9ncm91cChtbV9rb2JqLCBcdTAwMjZwYWdlX2lkbGVfYXR0cl9ncm91cCk7XG5tbS9wYWdlX2lkbGUuYy0yMTktXHRpZiAoZXJyKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MzIKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBTeXprYWxsZXIgRnV6emluZyBUYXJnZXRzIGZvciBJZGxlIFBhZ2UgVHJhY2tpbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgL3N5cy9rZXJuZWwvbW0vcGFnZV9pZGxlL2JpdG1hcGAgdGhpbmcuIFRoaXMgc2NyZWFtcyAmIzM0O3N5c2ZzIGZpbGUmIzM0OyB0byBtZSwgYW5kIHRoYXQgbWVhbnMgaXQmIzM5O3MgZmFpciBnYW1lIGZvciBzeXprYWxsZXIsIHdoaWNoIGlzIHByZWNpc2VseSB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IuIFRoZSBjcnVjaWFsIGZ1bmN0aW9ucyBoZXJlLCB0aGUgb25lcyB0aGF0IGhhbmRsZSB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGlzIHN5c2ZzIGVudHJ5LCBhcmUgYHBhZ2VfaWRsZV9iaXRtYXBfcmVhZGAgYW5kIGBwYWdlX2lkbGVfYml0bWFwX3dyaXRlYC4gVGhvc2UgYXJlIHRoZSBwcmltZSBzdXNwZWN0cywgdGhlIGVudHJ5IHBvaW50cyBJIHdhbnQgdG8ga2VlcCBhbiBleWUgb24uCgpXYWl0IGEgc2Vjb25kLCB0aGVyZSYjMzk7cyBhbHNvIGBwYWdlX2lkbGVfZ2V0X2ZvbGlvYCBpbnZvbHZlZCBpbiB0aGlzLCBJIHJlbWVtYmVyIHJlYWRpbmcgYWJvdXQgaXQgaW4gY29udGV4dCB3aXRoIHRoZSBiaXRtYXAuIE9rYXksIGxldCYjMzk7cyBpbmNsdWRlIGl0IGZvciBjb25zaWRlcmF0aW9uLgoKSG9sZCB1cCBhIG1pbnV0ZS4uLiBpc24mIzM5O3QgYHBhZ2VfaWRsZV9nZXRfZm9saW9gIGRlY2xhcmVkIGFzIGBzdGF0aWNgPyBUaGF0IG1pZ2h0IGJlIGEgcHJvYmxlbS4gU3RhdGljIGZ1bmN0aW9ucyBzb21ldGltZXMgZG9uJiMzOTt0IG1ha2UgaXQgaW50byB0aGUgc3ltYm9sIHRhYmxlLCBvciBzeXprYWxsZXIgbWlnaHQgbm90IGJlIGFibGUgdG8gdGFyZ2V0IHRoZW0gZGlyZWN0bHkuIEl0JiMzOTtzIHN0aWxsIHdvcnRoIGxpc3RpbmcgaXQsIHRob3VnaCwgYXMgaXQmIzM5O3MgbW9kaWZpZWQgYW5kIG1pZ2h0IGJlIGNhbGxlZCBpbiB0aGUgY29udGV4dCBvZiBgcGFnZV9pZGxlX2JpdG1hcF9yZWFkYCBhbmQgYHBhZ2VfaWRsZV9iaXRtYXBfd3JpdGVgLgoKQWxyaWdodCwgYmFjayB0byB0aGUgcHJpbWFyeSB0YXJnZXRzLiBEZWZpbml0ZWx5IGxpc3RpbmcgYHBhZ2VfaWRsZV9iaXRtYXBfcmVhZGAgYW5kIGBwYWdlX2lkbGVfYml0bWFwX3dyaXRlYCBmb3IgY2xvc2VyIHNjcnV0aW55LiBJIHRoaW5rIHRoZXkgYXJlIGdvaW5nIHRvIGJlIHRoZSBwbGFjZXMgdG8gc3RhcnQuCgpOb3csIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgYElETEVfUEFHRV9UUkFDS0lOR2AuIEFyZSB0aGVyZSBhbnkgZGVwZW5kZW5jaWVzPyBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IGBJRExFX1BBR0VfVFJBQ0tJTkdgIGlzbiYjMzk7dCBkZXBlbmRlbnQgb24gc29tZSBvdGhlciBmZWF0dXJlIHRoYXQgY291bGQgZWl0aGVyIGJsb2NrIGZ1enppbmcgY29tcGxldGVseSwgb3IgYWxsb3cgZm9yIHNvbWUgbW9yZSBpbnRlcmVzdGluZyBmdXp6aW5nIHRhcmdldHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJRExFX1BBR0VfVFJBQ0tJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9MTE3MT1jb25maWcgUEFHRV9JRExFX0ZMQUdcbi0tXG5tbS9LY29uZmlnLTExNzgtXG5tbS9LY29uZmlnOjExNzk6Y29uZmlnIElETEVfUEFHRV9UUkFDS0lOR1xubW0vS2NvbmZpZy0xMTgwLVx0Ym9vbCBcJiMzNDtFbmFibGUgaWRsZSBwYWdlIHRyYWNraW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NDEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjb25maWd1cmF0aW9uIHNwYWNlIGJldHRlci4gTGV0JiMzOTtzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYSBjcnVjaWFsIGZpbGUsIHNwZWNpZmljYWxseSBgbW0vS2NvbmZpZ2AsIGFuZCBsZXQmIzM5O3MgZ28gc3RyYWlnaHQgdG8gbGluZSAxMTc5LiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgaXQgd2lsbCBiZSBhIG1ham9yIHBhcnQgb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IG9wdGlvbnMgYW5kIGZlYXR1cmVzLCBzbyBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IGEgcGFydGljdWxhciBmZWF0dXJlIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQgYW5kIGFueSBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGZpZ3VyaW5nIG91dCBob3cgdGhpcyBwYXJ0aWN1bGFyIGFzcGVjdCByZWxhdGVzIHRvIHBlcmZvcm1hbmNlLiBLbm93aW5nIHRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBrZXJuZWwgaXMgaGFuZGxpbmcgbWVtb3J5IG1hbmFnZW1lbnQsIGluIHBhcnRpY3VsYXIgaG93IEkgbWlnaHQgb3B0aW1pemUgaXQgZm9yIHNwZWNpZmljIHdvcmtsb2Fkcy4gSG9wZWZ1bGx5LCB0aGlzIEtjb25maWcgZW50cnkgd2lsbCBwcm92aWRlIHNvbWUgaW5zaWdodCBpbnRvIHRoZSByZWxldmFudCBvcHRpb25zLCB0aGVpciByZWxhdGlvbnNoaXBzLCBhbmQgcGVyaGFwcyBldmVuIHNvbWUgaGludHMgYWJvdXQgdGhlIHVuZGVybHlpbmcgaW1wbGljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTc1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzExNzU6XHRcdCAgVGhpcyBhZGRzIFBHX2lkbGUgYW5kIFBHX3lvdW5nIGZsYWdzIHRvICYjMzk7c3RydWN0IHBhZ2UmIzM5Oy4gIFBURSBBY2Nlc3NlZFxuMTE3NjpcdFx0ICBiaXQgd3JpdGVycyBjYW4gc2V0IHRoZSBzdGF0ZSBvZiB0aGUgYml0IGluIHRoZSBmbGFncyBzbyB0aGF0IFBURVxuMTE3NzpcdFx0ICBBY2Nlc3NlZCBiaXQgcmVhZGVycyBtYXkgYXZvaWQgZGlzdHVyYmFuY2UuXG4xMTc4Olx0XG4xMTc5Olx0Y29uZmlnIElETEVfUEFHRV9UUkFDS0lOR1xuMTE4MDpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgaWRsZSBwYWdlIHRyYWNraW5nXCYjMzQ7XG4xMTgxOlx0XHRkZXBlbmRzIG9uIFNZU0ZTIFx1MDAyNlx1MDAyNiBNTVVcbjExODI6XHRcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xuMTE4MzpcdFx0aGVscFxuMTE4NDpcdFx0ICBUaGlzIGZlYXR1cmUgYWxsb3dzIHRvIGVzdGltYXRlIHRoZSBhbW91bnQgb2YgdXNlciBwYWdlcyB0aGF0IGhhdmVcbjExODU6XHRcdCAgbm90IGJlZW4gdG91Y2hlZCBkdXJpbmcgYSBnaXZlbiBwZXJpb2Qgb2YgdGltZS4gVGhpcyBpbmZvcm1hdGlvbiBjYW5cbjExODY6XHRcdCAgYmUgdXNlZnVsIHRvIHR1bmUgbWVtb3J5IGNncm91cCBsaW1pdHMgYW5kL29yIGZvciBqb2IgcGxhY2VtZW50XG4xMTg3Olx0XHQgIHdpdGhpbiBhIGNvbXB1dGUgY2x1c3Rlci5cbjExODg6XHRcbjExODk6XHRcdCAgU2VlIERvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vaWRsZV9wYWdlX3RyYWNraW5nLnJzdCBmb3JcbjExOTA6XHRcdCAgbW9yZSBkZXRhaWxzLlxuMTE5MTpcdFxuMTE5MjpcdCMgQXJjaGl0ZWN0dXJlcyB3aGljaCBpbXBsZW1lbnQgY3B1X2RjYWNoZV9pc19hbGlhc2luZygpIHRvIHF1ZXJ5XG4xMTkzOlx0IyB3aGV0aGVyIHRoZSBkYXRhIGNhY2hlcyBhcmUgYWxpYXNlZCAoVklWVCBvciBWSVBUIHdpdGggZGNhY2hlXG4xMTk0Olx0IyBhbGlhc2luZykgbmVlZCB0byBzZWxlY3QgdGhpcy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDY6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIyMgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipFbmFibGluZyBJRExFX1BBR0VfVFJBQ0tJTkcqKgoKUmlnaHQsIHNvIHRoZSBjb25maWcgb3B0aW9uIEkmIzM5O20gd29ya2luZyB3aXRoIGlzIGBJRExFX1BBR0VfVFJBQ0tJTkdgLiBHb29kLiBUaGUgZGVwZW5kZW5jeSBjaGVjayBjb25maXJtcyB0aGF0IGl0IGhpbmdlcyBvbiBgU1lTRlMgJmFtcDsmYW1wOyBNTVVgLCBib3RoIG9mIHdoaWNoIGFyZSBlc3NlbnRpYWxseSBhbHdheXMgZW5hYmxlZC4gVGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQ7IG15IG1haW4gdGFzayBoZXJlIGlzIHRvIGVuc3VyZSBgSURMRV9QQUdFX1RSQUNLSU5HYCBpdHNlbGYgaXMgZW5hYmxlZC4gTm8gY29tcGxleCBwcmUtcmVxdWlzaXRlIGRhbmNlIHRvIHdvcnJ5IGFib3V0LgoKTm93LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LiBJIGtub3cgdGhlIGtleSBmdW5jdGlvbnMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoaXMgZmVhdHVyZSBhcmUgYHBhZ2VfaWRsZV9nZXRfZm9saW9gLCBgcGFnZV9pZGxlX2JpdG1hcF9yZWFkYCwgYW5kIGBwYWdlX2lkbGVfYml0bWFwX3dyaXRlYC4gVGhlc2UgYXJlIHRoZSBjcml0aWNhbCBwaWVjZXMgdGhhdCBJIG5lZWQgdG8gYmUgaW50aW1hdGVseSBmYW1pbGlhciB3aXRoIGFzIEkgcmV2aWV3IHRoaXMgY29kZS4gVGhlc2UgbGlrZWx5IHJlcHJlc2VudCB0aGUgY29yZSBkYXRhIGFjY2VzcyBhbmQgbWFuaXB1bGF0aW9uIGZvciB0aGUgdHJhY2tpbmcgbWVjaGFuaXNtLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgcXVpY2tseSBnbGFuY2UgYXQgdGhlIHdpZGVyIGNvZGViYXNlIGFuZCBtYWtlIGEgcXVpY2sgbWVudGFsIG5vdGUgdGhhdCB0aGVyZSBhcmUgbGlrZWx5IG90aGVyIGZ1bmN0aW9ucyBpbnRlcmFjdGluZyB3aXRoIHRoZSBzYW1lIGZlYXR1cmUuIEl0IHBheXMgdG8ga2VlcCB0aGlzIGNvbnRleHQgaW4gbWluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDY6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFnZV9pZGxlX2dldF9mb2xpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3BhZ2VfaWRsZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3BhZ2VfaWRsZS5jLTMzLSAqL1xubW0vcGFnZV9pZGxlLmM6MzQ6c3RhdGljIHN0cnVjdCBmb2xpbyAqcGFnZV9pZGxlX2dldF9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbilcbm1tL3BhZ2VfaWRsZS5jLTM1LXtcbi0tXG5tbS9wYWdlX2lkbGUuYz0xMTg9c3RhdGljIHNzaXplX3QgcGFnZV9pZGxlX2JpdG1hcF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9wYWdlX2lkbGUuYy0xNDEtXHRcdFx0Km91dCA9IDBVTEw7XG5tbS9wYWdlX2lkbGUuYzoxNDI6XHRcdGZvbGlvID0gcGFnZV9pZGxlX2dldF9mb2xpbyhwZm4pO1xubW0vcGFnZV9pZGxlLmMtMTQzLVx0XHRpZiAoZm9saW8pIHtcbi0tXG5tbS9wYWdlX2lkbGUuYz0xNjM9c3RhdGljIHNzaXplX3QgcGFnZV9pZGxlX2JpdG1hcF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vcGFnZV9pZGxlLmMtMTg1LVx0XHRpZiAoKCppbiBcdTAwM2VcdTAwM2UgYml0KSBcdTAwMjYgMSkge1xubW0vcGFnZV9pZGxlLmM6MTg2Olx0XHRcdGZvbGlvID0gcGFnZV9pZGxlX2dldF9mb2xpbyhwZm4pO1xubW0vcGFnZV9pZGxlLmMtMTg3LVx0XHRcdGlmIChmb2xpbykge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODY5CgkJCQkJCQlvdXRwdXQ6IDE0OQoJCQkJCQkJdGhvdWdodHM6IDQxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZvbGlvIEFjcXVpc2l0aW9uIGFuZCBMUlUgQ2hlY2sgaW4gYHBhZ2VfaWRsZV9nZXRfZm9saW9gKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgaXQgc2VlbXMgbGlrZSBgcGFnZV9pZGxlX2JpdG1hcF9yZWFkYCBhbmQgYHBhZ2VfaWRsZV9iaXRtYXBfd3JpdGVgIGFyZSB0aGUgb25seSBmdW5jdGlvbnMgY2FsbGluZyB0aGlzLiBUaGUgY29kZSYjMzk7cyBiZWhhdmlvciBoYXMgYmVlbiBtb2RpZmllZCwgbGlrZWx5IHRvIGFkZHJlc3MgYSBidWcgb3IgZm9yIG9wdGltaXphdGlvbi4gTGV0JiMzOTtzIHRha2UgYSBjbG9zZXIgbG9vazogdGhlIG9yaWdpbmFsIGNvZGUgd291bGQgYmFpbCBvdXQgZWFybHkgaWYgdGhlIExSVSBmbGFnIHdhc24mIzM5O3Qgc2V0LiBUaGUgbmV3IHZlcnNpb24gKmFjcXVpcmVzKiBhIHJlZmVyZW5jZSB0byB0aGUgZm9saW8gZmlyc3QgdXNpbmcgYGZvbGlvX3RyeV9nZXRgLCAqdGhlbiogY2hlY2tzIHRoZSBMUlUgZmxhZy4gSWYgdGhlIExSVSBpc24mIzM5O3Qgc2V0LCB0aGUgcmVmZXJlbmNlIGlzIHJlbGVhc2VkLiBUaGlzIGNoYW5nZSBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24uIFdlJiMzOTtyZSBub3cgZW5zdXJpbmcgd2UgaG9sZCBhIHJlZmVyZW5jZSBiZWZvcmUgZXZhbHVhdGluZyB0aGUgTFJVIHN0YXRlLiBUaGUgaW50ZW50IGlzIHRvIGF2b2lkIGEgc2NlbmFyaW8gd2hlcmUgdGhlIExSVSBmbGFnIGNoYW5nZXMgYmV0d2VlbiB0aGUgaW5pdGlhbCBjaGVjayBhbmQgdGhlIGZvbGlvIGFjcXVpc2l0aW9uLCB3aGljaCBjb3VsZCBsZWFkIHRvIGluY29ycmVjdCBiZWhhdmlvci4KCkkmIzM5O20gdGhpbmtpbmcgdGhpcyBpcyB3b3J0aCBmdXp6aW5nLiBUaGUgY2hhbmdlIGlzIGRlZmluaXRlbHkgZnVuY3Rpb25hbC4gSSYjMzk7bGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFRvIGZvY3VzIHRoZSBmdXp6aW5nIGVmZm9ydHMsIEkmIzM5O2xsIHNwZWNpZnkgdGhlIHJlbGV2YW50IHN5bWJvbHMgYXMgYHBhZ2VfaWRsZV9nZXRfZm9saW9gLCBgcGFnZV9pZGxlX2JpdG1hcF9yZWFkYCwgYW5kIGBwYWdlX2lkbGVfYml0bWFwX3dyaXRlYC4gQW5kIHNpbmNlIHRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgc3lzZnMgaW50ZXJmYWNlLCBJJiMzOTtsbCBlbmFibGUgYElETEVfUEFHRV9UUkFDS0lOR2AuIE15IHJlYXNvbmluZyBpcyB0aGUgcGF0Y2gmIzM5O3MgbG9naWMgY2hhbmdlIHdpdGhpbiBgcGFnZV9pZGxlX2dldF9mb2xpb2AgaXMgZGlyZWN0bHkgcmVsZXZhbnQgdG8gdGhlIHN5c2ZzIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBvbiBgL3N5cy9rZXJuZWwvbW0vcGFnZV9pZGxlL2JpdG1hcGAuIEZ1enppbmcgdGhpcyB3aWxsIGFsbG93IHZlcmlmaWNhdGlvbiBvZiB0aGUgZml4IGZvciB0aGUgcmFjZSBjb25kaXRpb24gdGhlIHBhdGNoIGFkZHJlc3Nlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDY6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lETEVfUEFHRV9UUkFDS0lORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhZ2VfaWRsZV9nZXRfZm9saW8mIzM0OywKICAgICYjMzQ7cGFnZV9pZGxlX2JpdG1hcF9yZWFkJiMzNDssCiAgICAmIzM0O3BhZ2VfaWRsZV9iaXRtYXBfd3JpdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHN5bmNocm9uaXphdGlvbiBsb2dpYyBpbiBgcGFnZV9pZGxlX2dldF9mb2xpb2AgYnkgY2hhbmdpbmcgdGhlIG9yZGVyIG9mIGBmb2xpb190cnlfZ2V0YCBhbmQgYGZvbGlvX3Rlc3RfbHJ1YCBjaGVja3MuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBzeXNmcyByZWFkL3dyaXRlIG9wZXJhdGlvbnMgb24gYC9zeXMva2VybmVsL21tL3BhZ2VfaWRsZS9iaXRtYXBgLiBGdXp6aW5nIHRoZXNlIHN5c2ZzIGhhbmRsZXJzIGNhbiBoZWxwIHZlcmlmeSB0aGUgZml4IGZvciB0aGUgcmFjZSBjb25kaXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lETEVfUEFHRV9UUkFDS0lORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhZ2VfaWRsZV9nZXRfZm9saW8mIzM0OywKICAgICYjMzQ7cGFnZV9pZGxlX2JpdG1hcF9yZWFkJiMzNDssCiAgICAmIzM0O3BhZ2VfaWRsZV9iaXRtYXBfd3JpdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHN5bmNocm9uaXphdGlvbiBsb2dpYyBpbiBgcGFnZV9pZGxlX2dldF9mb2xpb2AgYnkgY2hhbmdpbmcgdGhlIG9yZGVyIG9mIGBmb2xpb190cnlfZ2V0YCBhbmQgYGZvbGlvX3Rlc3RfbHJ1YCBjaGVja3MuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBzeXNmcyByZWFkL3dyaXRlIG9wZXJhdGlvbnMgb24gYC9zeXMva2VybmVsL21tL3BhZ2VfaWRsZS9iaXRtYXBgLiBGdXp6aW5nIHRoZXNlIHN5c2ZzIGhhbmRsZXJzIGNhbiBoZWxwIHZlcmlmeSB0aGUgZml4IGZvciB0aGUgcmFjZSBjb25kaXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNjozOToyMC45MTI2Mzg4NjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTYwMTU1Mjc2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJRExFX1BBR0VfVFJBQ0tJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwYWdlX2lkbGVfZ2V0X2ZvbGlvXCIsXG4gICAgXCJwYWdlX2lkbGVfYml0bWFwX3JlYWRcIixcbiAgICBcInBhZ2VfaWRsZV9iaXRtYXBfd3JpdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIGluIGBwYWdlX2lkbGVfZ2V0X2ZvbGlvYCBieSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgYGZvbGlvX3RyeV9nZXRgIGFuZCBgZm9saW9fdGVzdF9scnVgIGNoZWNrcy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN5c2ZzIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBvbiBgL3N5cy9rZXJuZWwvbW0vcGFnZV9pZGxlL2JpdG1hcGAuIEZ1enppbmcgdGhlc2Ugc3lzZnMgaGFuZGxlcnMgY2FuIGhlbHAgdmVyaWZ5IHRoZSBmaXggZm9yIHRoZSByYWNlIGNvbmRpdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDY6Mzk6MjAuOTEyNjQ0OTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNzYwNTQ5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGUyOTM2NjExZTE3YzVmNjA3MzRhMTZjODMyODYyZjU1YjZkZGI1NWZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMjMgMDY6Mzk6MTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vcGFnZV9pZGxlLmMgYi9tbS9wYWdlX2lkbGUuY1xcbmluZGV4IDljNjdjYmFjMjk2NTk4Li4yOWVlMThmMGU4Y2UwMiAxMDA2NDRcXG4tLS0gYS9tbS9wYWdlX2lkbGUuY1xcbisrKyBiL21tL3BhZ2VfaWRsZS5jXFxuQEAgLTQwLDkgKzQwLDkgQEAgc3RhdGljIHN0cnVjdCBmb2xpbyAqcGFnZV9pZGxlX2dldF9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbilcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbiBcXHRmb2xpbyA9IHBhZ2VfZm9saW8ocGFnZSk7XFxuLVxcdGlmICghZm9saW9fdGVzdF9scnUoZm9saW8pIHx8ICFmb2xpb190cnlfZ2V0KGZvbGlvKSlcXG4rXFx0aWYgKCFmb2xpb190cnlfZ2V0KGZvbGlvKSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuLVxcdGlmICh1bmxpa2VseShwYWdlX2ZvbGlvKHBhZ2UpICE9IGZvbGlvIHx8ICFmb2xpb190ZXN0X2xydShmb2xpbykpKSB7XFxuK1xcdGlmICh1bmxpa2VseShwYWdlX2ZvbGlvKHBhZ2UpICE9IGZvbGlvKSB8fCAhZm9saW9fdGVzdF9scnUoZm9saW8pKSB7XFxuIFxcdFxcdGZvbGlvX3B1dChmb2xpbyk7XFxuIFxcdFxcdGZvbGlvID0gTlVMTDtcXG4gXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNjozOToyMS4zMzA3NzA3OTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0NTE4MzQxMTg4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJRExFX1BBR0VfVFJBQ0tJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwYWdlX2lkbGVfZ2V0X2ZvbGlvXCIsXG4gICAgXCJwYWdlX2lkbGVfYml0bWFwX3JlYWRcIixcbiAgICBcInBhZ2VfaWRsZV9iaXRtYXBfd3JpdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIGluIGBwYWdlX2lkbGVfZ2V0X2ZvbGlvYCBieSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgYGZvbGlvX3RyeV9nZXRgIGFuZCBgZm9saW9fdGVzdF9scnVgIGNoZWNrcy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN5c2ZzIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBvbiBgL3N5cy9rZXJuZWwvbW0vcGFnZV9pZGxlL2JpdG1hcGAuIEZ1enppbmcgdGhlc2Ugc3lzZnMgaGFuZGxlcnMgY2FuIGhlbHAgdmVyaWZ5IHRoZSBmaXggZm9yIHRoZSByYWNlIGNvbmRpdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlMjkzNjYxMWUxN2M1ZjYwNzM0YTE2YzgzMjg2MmY1NWI2ZGRiNTVmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMDY6Mzk6MTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9wYWdlX2lkbGUuYyBiL21tL3BhZ2VfaWRsZS5jXG5pbmRleCA5YzY3Y2JhYzI5NjU5OC4uMjllZTE4ZjBlOGNlMDIgMTAwNjQ0XG4tLS0gYS9tbS9wYWdlX2lkbGUuY1xuKysrIGIvbW0vcGFnZV9pZGxlLmNcbkBAIC00MCw5ICs0MCw5IEBAIHN0YXRpYyBzdHJ1Y3QgZm9saW8gKnBhZ2VfaWRsZV9nZXRfZm9saW8odW5zaWduZWQgbG9uZyBwZm4pXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0Zm9saW8gPSBwYWdlX2ZvbGlvKHBhZ2UpO1xuLVx0aWYgKCFmb2xpb190ZXN0X2xydShmb2xpbykgfHwgIWZvbGlvX3RyeV9nZXQoZm9saW8pKVxuK1x0aWYgKCFmb2xpb190cnlfZ2V0KGZvbGlvKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4tXHRpZiAodW5saWtlbHkocGFnZV9mb2xpbyhwYWdlKSAhPSBmb2xpbyB8fCAhZm9saW9fdGVzdF9scnUoZm9saW8pKSkge1xuK1x0aWYgKHVubGlrZWx5KHBhZ2VfZm9saW8ocGFnZSkgIT0gZm9saW8pIHx8ICFmb2xpb190ZXN0X2xydShmb2xpbykpIHtcbiBcdFx0Zm9saW9fcHV0KGZvbGlvKTtcbiBcdFx0Zm9saW8gPSBOVUxMO1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDY6Mzk6MjEuMzMwNzcxOTg3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA1NDU2NTgzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgUGFnZSBJZGxlIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYG1tL3BhZ2VfaWRsZS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgcGFnZV9pZGxlX2dldF9mb2xpb2AgZnVuY3Rpb24uIExldCdzIGJyZWFrIGRvd24gdGhpcyBkaWZmLiBJbml0aWFsbHksIEkgc2F3IHNvbWUgc3RyYWlnaHRmb3J3YXJkIGxvZ2ljIGFsdGVyYXRpb24sIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGBmb2xpb190cnlfZ2V0YCBhbmQgYGZvbGlvX3Rlc3RfbHJ1YCBjYWxscy4gSXQgbG9va2VkIGxpa2UgdGhlIHBhdGNoIGp1c3QgbW92ZWQgdGhlIGAhZm9saW9fdGVzdF9scnUoZm9saW8pYCBjaGVjayBmcm9tIGJlZm9yZSB0aGUgYHRyeV9nZXRgIHRvIGFmdGVyLiBCdXQgaG9sZCBvbi4uLiB0aGUgKnNlY29uZCogYGlmYCBzdGF0ZW1lbnQgYWxyZWFkeSBoYWQgYCFmb2xpb190ZXN0X2xydShmb2xpbylgIVxuXG5Pa2F5LCBJIHNlZSBpdCBub3cuIFRoZSBjcnVjaWFsIGNoYW5nZSBpcyB0aGF0IHRoZSBgdW5saWtlbHlgIG1hY3JvIGlzIG9ubHkgd3JhcHBpbmcgYHBhZ2VfZm9saW8ocGFnZSkgIT0gZm9saW9gIGluIHRoZSBtb2RpZmllZCBjb2RlLiBUaGUgb3JpZ2luYWwgYGlmYCBjb25kaXRpb24gd2FzIGxvbmdlci4gU28gdGhlIGZpcnN0IGBpZmAgc3RhdGVtZW50ICpsb3N0KiB0aGF0IGAhZm9saW9fdGVzdF9scnUoZm9saW8pYCBjb25kaXRpb24uIE1ha2VzIHNlbnNlLi4uIE5vdyBJIG5lZWQgdG8gc2VlIHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIG1pZ2h0IGJlIGluIHBsYXkgaGVyZS4gVGltZSB0byBqdW1wIGludG8gYG1tL3BhZ2VfaWRsZS5jYCBhbmQgZmlndXJlIG91dCB0aGUgY29uZGl0aW9uYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTM3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDY6Mzk6MjcuMzg1MzM5OTIyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDY1NDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2VfaWRsZV9nZXRfZm9saW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vcGFnZV9pZGxlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vcGFnZV9pZGxlLmMtMzMtICovXFxubW0vcGFnZV9pZGxlLmM6MzQ6c3RhdGljIHN0cnVjdCBmb2xpbyAqcGFnZV9pZGxlX2dldF9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbilcXG5tbS9wYWdlX2lkbGUuYy0zNS17XFxuLS1cXG5tbS9wYWdlX2lkbGUuYz0xMTg9c3RhdGljIHNzaXplX3QgcGFnZV9pZGxlX2JpdG1hcF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL3BhZ2VfaWRsZS5jLTE0MS1cXHRcXHRcXHQqb3V0ID0gMFVMTDtcXG5tbS9wYWdlX2lkbGUuYzoxNDI6XFx0XFx0Zm9saW8gPSBwYWdlX2lkbGVfZ2V0X2ZvbGlvKHBmbik7XFxubW0vcGFnZV9pZGxlLmMtMTQzLVxcdFxcdGlmIChmb2xpbykge1xcbi0tXFxubW0vcGFnZV9pZGxlLmM9MTYzPXN0YXRpYyBzc2l6ZV90IHBhZ2VfaWRsZV9iaXRtYXBfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vcGFnZV9pZGxlLmMtMTg1LVxcdFxcdGlmICgoKmluIFxcdTAwM2VcXHUwMDNlIGJpdCkgXFx1MDAyNiAxKSB7XFxubW0vcGFnZV9pZGxlLmM6MTg2OlxcdFxcdFxcdGZvbGlvID0gcGFnZV9pZGxlX2dldF9mb2xpbyhwZm4pO1xcbm1tL3BhZ2VfaWRsZS5jLTE4Ny1cXHRcXHRcXHRpZiAoZm9saW8pIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDY6Mzk6MjcuNDQyODA5MDIxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1OTc1Nzk3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkxvY2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIGZvciBgbW0vcGFnZV9pZGxlLmNgKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBteSBoYW5kcyBvbiB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIGBtbS9wYWdlX2lkbGUuY2AuIFRoYXQncyB0aGUgbW9kdWxlIEknbSBpbnRlcmVzdGVkIGluIHJpZ2h0IG5vdy4gVGhlIGZpcnN0IHRoaW5nIEknbGwgZG8gaXMgZmlndXJlIG91dCB3aGVyZSB0aGF0IGNvbmZpZ3VyYXRpb24gbGl2ZXMuIElzIGl0IGEga2VybmVsIGNvbmZpZyBvcHRpb24/IEEgYnVpbGQtdGltZSBmbGFnPyBBIHJ1bnRpbWUgcGFyYW1ldGVyPyBNeSBndXQgc2F5cyBpdCdzIGxpa2VseSBhIGBLY29uZmlnYCBvcHRpb24gc29tZXdoZXJlLCBidXJpZWQgZGVlcCBpbiB0aGUga2VybmVsIHRyZWUuIEknbGwgbmVlZCB0byBsb2NhdGUgdGhlIHJpZ2h0IGZpbGUuIEknbSB0aGlua2luZyBJIGNhbiBzdGFydCBieSB1c2luZyBgZmluZGAgb3IgYGdyZXBgIHRvIHF1aWNrbHkgc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgZm9yIGEgcmVsZXZhbnQgYEtjb25maWdgIGZpbGUuIEknbGwgcHJvYmFibHkgbG9vayBmb3Iga2V5d29yZHMgbGlrZSBcInBhZ2VfaWRsZSxcIiBcImlkbGUsXCIgb3IgZXZlbiBcIm1lbW9yeSBtYW5hZ2VtZW50XCIgdG8gbmFycm93IGl0IGRvd24uIE9uY2UgSSBoYXZlIGEgZmV3IGNhbmRpZGF0ZSBmaWxlcywgSSdsbCBleGFtaW5lIHRoZW0gY2xvc2VseS4gSSdsbCBiZSBsb29raW5nIGZvciB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24gYXNzb2NpYXRlZCB3aXRoIGBtbS9wYWdlX2lkbGUuY2AsIG5vdGluZyB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgYW5kIGFueSBvdGhlciByZWxldmFudCBjb250ZXh0dWFsIGluZm9ybWF0aW9uIGl0IHByb3ZpZGVzLiBJdCdzIGEgcXVpY2sgcHJvY2VzcywgYnV0IGl0IHJlcXVpcmVzIGEgc3lzdGVtYXRpYyBhcHByb2FjaCB0byBtYWtlIHN1cmUgdGhhdCBJJ20gbG9va2luZyBhdCB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIG9wdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg3NywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA2OjM5OjMxLjEwMjU2ODU3OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTQ2NTc5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWdlX2lkbGUub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9NYWtlZmlsZT0xMzE9b2JqLSQoQ09ORklHX1VTRVJGQVVMVEZEKSArPSB1c2VyZmF1bHRmZC5vXFxubW0vTWFrZWZpbGU6MTMyOm9iai0kKENPTkZJR19JRExFX1BBR0VfVFJBQ0tJTkcpICs9IHBhZ2VfaWRsZS5vXFxubW0vTWFrZWZpbGUtMTMzLW9iai0kKENPTkZJR19ERUJVR19QQUdFQUxMT0MpICs9IGRlYnVnX3BhZ2VfYWxsb2Mub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNjozOTozMS4xNTgwNDE2NzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDg5NTc3MjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSWRsZSBQYWdlIFRyYWNraW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBwbGF5IGhlcmUgaXMgYElETEVfUEFHRV9UUkFDS0lOR2AuIFRoYXQncyB0aGUga2V5LiBOb3csIGl0IGxvb2tzIGxpa2UgdGhlIGZ1bmN0aW9uIGBwYWdlX2lkbGVfZ2V0X2ZvbGlvYCBpcyB0aGUgd29ya2hvcnNlIGJlaGluZCB0aGlzLCBhbmQgaXQncyBiZWluZyBjYWxsZWQgYnkgYm90aCBgcGFnZV9pZGxlX2JpdG1hcF9yZWFkYCBhbmQgYHBhZ2VfaWRsZV9iaXRtYXBfd3JpdGVgLiBSaWdodCwgdGhvc2UgdHdvIGZ1bmN0aW9ucyBhcmUgdGhlIHN5c2ZzIG9wZXJhdGlvbnMgaW52b2x2ZWQgd2l0aCBpZGxlIHBhZ2UgdHJhY2tpbmcuIFRoYXQgbWFrZXMgc2Vuc2UsIHN5c2ZzIGJlaW5nIHRoZSBpbnRlcmZhY2UgZm9yIGNvbnRyb2wgYW5kIGluc3BlY3Rpb24uIE15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIGRpZyBpbnRvIGBwYWdlX2lkbGVfYml0bWFwX3JlYWRgIGFuZCBgcGFnZV9pZGxlX2JpdG1hcF93cml0ZWAgdG8gc2VlIGV4YWN0bHkgaG93IHRoZXkncmUgbGV2ZXJhZ2luZyBgcGFnZV9pZGxlX2dldF9mb2xpb2AgYW5kIHdoYXQgdGhleSdyZSBhY3R1YWxseSBkb2luZy4gVGhhdCdzIHdoZXJlIHRoZSByZWFsIGRldGFpbCB3aWxsIGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjgxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDY6Mzk6MzQuNjQ3NjIwNjkyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MzkxNTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2VfaWRsZV9iaXRtYXBfcmVhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9wYWdlX2lkbGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9wYWdlX2lkbGUuYz05Nz1zdGF0aWMgdm9pZCBwYWdlX2lkbGVfY2xlYXJfcHRlX3JlZnMoc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL3BhZ2VfaWRsZS5jLTExNy1cXG5tbS9wYWdlX2lkbGUuYzoxMTg6c3RhdGljIHNzaXplX3QgcGFnZV9pZGxlX2JpdG1hcF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcXG5tbS9wYWdlX2lkbGUuYy0xMTktXFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmLFxcbi0tXFxubW0vcGFnZV9pZGxlLmM9MjAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSBwYWdlX2lkbGVfYml0bWFwX2F0dHIgPVxcbm1tL3BhZ2VfaWRsZS5jLTIwMS1cXHRcXHRfX0JJTl9BVFRSKGJpdG1hcCwgMDYwMCxcXG5tbS9wYWdlX2lkbGUuYzoyMDI6XFx0XFx0XFx0ICAgcGFnZV9pZGxlX2JpdG1hcF9yZWFkLCBwYWdlX2lkbGVfYml0bWFwX3dyaXRlLCAwKTtcXG5tbS9wYWdlX2lkbGUuYy0yMDMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA2OjM5OjM0LjcwNTAxNjAxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA1NzYyODU1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQml0bWFwJ3MgVXNhZ2UqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZGVhbGluZyB3aXRoIHRoaXMgYGJpdG1hcGAgc3lzZnMgZmlsZSwgd2hpY2ggSSBrbm93IGlzIGhhbmdpbmcgb2ZmIHNvbWUga2VybmVsIG9iamVjdCAoYGtvYmpgKS4gVGhlIGtleSBxdWVzdGlvbiBub3cgaXMsIHdoYXQncyBpbnRlcmFjdGluZyB3aXRoIHRoaXMgdGhpbmc/IEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSB1c2FnZSBvZiBgcGFnZV9pZGxlX2JpdG1hcF9hdHRyYC4gVGltZSB0byBkbyBzb21lIGRpZ2dpbmcgYW5kIHNlZSB3aGVyZSB0aGlzIHNwZWNpZmljIGF0dHJpYnV0ZSBpcyBiZWluZyBlbXBsb3llZCB3aXRoaW4gdGhlIGtlcm5lbCBjb2RlLiBMZXQncyB0cmFjZSB0aGF0IHVzYWdlIGFuZCB1bmRlcnN0YW5kIGl0cyByb2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzk4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDY6Mzk6MzcuNzYyNjQ3MjA4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTQyOTk5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWdlX2lkbGVfYml0bWFwX2F0dHJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vcGFnZV9pZGxlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vcGFnZV9pZGxlLmM9MTYzPXN0YXRpYyBzc2l6ZV90IHBhZ2VfaWRsZV9iaXRtYXBfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vcGFnZV9pZGxlLmMtMTk5LVxcbm1tL3BhZ2VfaWRsZS5jOjIwMDpzdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgcGFnZV9pZGxlX2JpdG1hcF9hdHRyID1cXG5tbS9wYWdlX2lkbGUuYy0yMDEtXFx0XFx0X19CSU5fQVRUUihiaXRtYXAsIDA2MDAsXFxuLS1cXG5tbS9wYWdlX2lkbGUuYz0yMDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlICpjb25zdCBwYWdlX2lkbGVfYmluX2F0dHJzW10gPSB7XFxubW0vcGFnZV9pZGxlLmM6MjA1OlxcdFxcdTAwMjZwYWdlX2lkbGVfYml0bWFwX2F0dHIsXFxubW0vcGFnZV9pZGxlLmMtMjA2LVxcdE5VTEwsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA2OjM5OjM3LjgxODA4MjM3NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODM2NzIxNjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgYHBhZ2VfaWRsZV9iaW5fYXR0cnNgIFVzYWdlKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBtZW50YWwgY2hlY2tsaXN0IHN0YXJ0cyB3aXRoIGZpZ3VyaW5nIG91dCB3aGVyZSBgcGFnZV9pZGxlX2Jpbl9hdHRyc2AgaXMgYWN0dWFsbHkgdXRpbGl6ZWQgd2l0aGluIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byB0cmFjZSBpdHMgdXNhZ2UgcGF0dGVybnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBXaGVyZSBhcmUgdGhlIHJlYWRzPyBXaGVyZSBhcmUgdGhlIHdyaXRlcz8gV2hhdCBmdW5jdGlvbnMgY2FsbCBpdD8gV2hhdCBmdW5jdGlvbnMgZG9lcyBpdCBjYWxsPyBLbm93aW5nIHRoZSBjYWxsc2l0ZXMgd2lsbCBwcm92aWRlIHRoZSBpbnNpZ2h0cyBJIG5lZWQgdG8gZXZhbHVhdGUgdGhlIGltcGFjdCBvZiB0aGlzIHN0cnVjdHVyZS4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHN0YXJ0IGh1bnRpbmcgZG93biB0aG9zZSByZWZlcmVuY2VzLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE3MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA2OjM5OjQwLjY1NDgwNjExWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTM1MTMyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWdlX2lkbGVfYmluX2F0dHJzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3BhZ2VfaWRsZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3BhZ2VfaWRsZS5jPTIwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgcGFnZV9pZGxlX2JpdG1hcF9hdHRyID1cXG4tLVxcbm1tL3BhZ2VfaWRsZS5jLTIwMy1cXG5tbS9wYWdlX2lkbGUuYzoyMDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlICpjb25zdCBwYWdlX2lkbGVfYmluX2F0dHJzW10gPSB7XFxubW0vcGFnZV9pZGxlLmMtMjA1LVxcdFxcdTAwMjZwYWdlX2lkbGVfYml0bWFwX2F0dHIsXFxuLS1cXG5tbS9wYWdlX2lkbGUuYz0yMDk9c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgcGFnZV9pZGxlX2F0dHJfZ3JvdXAgPSB7XFxubW0vcGFnZV9pZGxlLmM6MjEwOlxcdC5iaW5fYXR0cnMgPSBwYWdlX2lkbGVfYmluX2F0dHJzLFxcbm1tL3BhZ2VfaWRsZS5jLTIxMS1cXHQubmFtZSA9IFxcXCJwYWdlX2lkbGVcXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNjozOTo0MC43MTAxNjE0MDhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjczNzM2MDM0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkludmVzdGlnYXRpbmcgYHBhZ2VfaWRsZV9hdHRyX2dyb3VwYCBVc2FnZSoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSBzY29wZSBhbmQgaW1wbGljYXRpb25zIG9mIGBwYWdlX2lkbGVfYXR0cl9ncm91cGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGVyZSogdGhpcyBpcyBhY3R1YWxseSBiZWluZyB1c2VkIHdpdGhpbiB0aGUgc3lzdGVtLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGNyaXRpY2FsIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHJvbGUgYW5kIGhvdyBhbnkgY2hhbmdlcyBtaWdodCByaXBwbGUgdGhyb3VnaCB0aGUgY29kZS4gSSBuZWVkIHRvIHRyYWNlIGl0cyByZWZlcmVuY2VzIHRvIGdldCBhIHNlbnNlIG9mIGl0cyBpbXBhY3QuIFdoZXJlIGlzIHRoaXMgdGhpbmcgYWN0dWFsbHkgKmhvb2tlZCogaW50byB0aGUgYXJjaGl0ZWN0dXJlPyBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NDQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNjozOTo0My40NDc1MjM4NzZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NzczODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2VfaWRsZV9hdHRyX2dyb3VwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3BhZ2VfaWRsZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3BhZ2VfaWRsZS5jPTIwND1zdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgKmNvbnN0IHBhZ2VfaWRsZV9iaW5fYXR0cnNbXSA9IHtcXG4tLVxcbm1tL3BhZ2VfaWRsZS5jLTIwOC1cXG5tbS9wYWdlX2lkbGUuYzoyMDk6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgcGFnZV9pZGxlX2F0dHJfZ3JvdXAgPSB7XFxubW0vcGFnZV9pZGxlLmMtMjEwLVxcdC5iaW5fYXR0cnMgPSBwYWdlX2lkbGVfYmluX2F0dHJzLFxcbi0tXFxubW0vcGFnZV9pZGxlLmM9MjE0PXN0YXRpYyBpbnQgX19pbml0IHBhZ2VfaWRsZV9pbml0KHZvaWQpXFxuLS1cXG5tbS9wYWdlX2lkbGUuYy0yMTctXFxubW0vcGFnZV9pZGxlLmM6MjE4OlxcdGVyciA9IHN5c2ZzX2NyZWF0ZV9ncm91cChtbV9rb2JqLCBcXHUwMDI2cGFnZV9pZGxlX2F0dHJfZ3JvdXApO1xcbm1tL3BhZ2VfaWRsZS5jLTIxOS1cXHRpZiAoZXJyKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA2OjM5OjQzLjUwNzMwMzM2NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjEwMjA3MjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgU3l6a2FsbGVyIEZ1enppbmcgVGFyZ2V0cyBmb3IgSWRsZSBQYWdlIFRyYWNraW5nKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGAvc3lzL2tlcm5lbC9tbS9wYWdlX2lkbGUvYml0bWFwYCB0aGluZy4gVGhpcyBzY3JlYW1zIFwic3lzZnMgZmlsZVwiIHRvIG1lLCBhbmQgdGhhdCBtZWFucyBpdCdzIGZhaXIgZ2FtZSBmb3Igc3l6a2FsbGVyLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hhdCBJJ20gbG9va2luZyBmb3IuIFRoZSBjcnVjaWFsIGZ1bmN0aW9ucyBoZXJlLCB0aGUgb25lcyB0aGF0IGhhbmRsZSB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGlzIHN5c2ZzIGVudHJ5LCBhcmUgYHBhZ2VfaWRsZV9iaXRtYXBfcmVhZGAgYW5kIGBwYWdlX2lkbGVfYml0bWFwX3dyaXRlYC4gVGhvc2UgYXJlIHRoZSBwcmltZSBzdXNwZWN0cywgdGhlIGVudHJ5IHBvaW50cyBJIHdhbnQgdG8ga2VlcCBhbiBleWUgb24uXG5cbldhaXQgYSBzZWNvbmQsIHRoZXJlJ3MgYWxzbyBgcGFnZV9pZGxlX2dldF9mb2xpb2AgaW52b2x2ZWQgaW4gdGhpcywgSSByZW1lbWJlciByZWFkaW5nIGFib3V0IGl0IGluIGNvbnRleHQgd2l0aCB0aGUgYml0bWFwLiBPa2F5LCBsZXQncyBpbmNsdWRlIGl0IGZvciBjb25zaWRlcmF0aW9uLlxuXG5Ib2xkIHVwIGEgbWludXRlLi4uIGlzbid0IGBwYWdlX2lkbGVfZ2V0X2ZvbGlvYCBkZWNsYXJlZCBhcyBgc3RhdGljYD8gVGhhdCBtaWdodCBiZSBhIHByb2JsZW0uIFN0YXRpYyBmdW5jdGlvbnMgc29tZXRpbWVzIGRvbid0IG1ha2UgaXQgaW50byB0aGUgc3ltYm9sIHRhYmxlLCBvciBzeXprYWxsZXIgbWlnaHQgbm90IGJlIGFibGUgdG8gdGFyZ2V0IHRoZW0gZGlyZWN0bHkuIEl0J3Mgc3RpbGwgd29ydGggbGlzdGluZyBpdCwgdGhvdWdoLCBhcyBpdCdzIG1vZGlmaWVkIGFuZCBtaWdodCBiZSBjYWxsZWQgaW4gdGhlIGNvbnRleHQgb2YgYHBhZ2VfaWRsZV9iaXRtYXBfcmVhZGAgYW5kIGBwYWdlX2lkbGVfYml0bWFwX3dyaXRlYC5cblxuQWxyaWdodCwgYmFjayB0byB0aGUgcHJpbWFyeSB0YXJnZXRzLiBEZWZpbml0ZWx5IGxpc3RpbmcgYHBhZ2VfaWRsZV9iaXRtYXBfcmVhZGAgYW5kIGBwYWdlX2lkbGVfYml0bWFwX3dyaXRlYCBmb3IgY2xvc2VyIHNjcnV0aW55LiBJIHRoaW5rIHRoZXkgYXJlIGdvaW5nIHRvIGJlIHRoZSBwbGFjZXMgdG8gc3RhcnQuXG5cbk5vdywgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBgSURMRV9QQUdFX1RSQUNLSU5HYC4gQXJlIHRoZXJlIGFueSBkZXBlbmRlbmNpZXM/IEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgYElETEVfUEFHRV9UUkFDS0lOR2AgaXNuJ3QgZGVwZW5kZW50IG9uIHNvbWUgb3RoZXIgZmVhdHVyZSB0aGF0IGNvdWxkIGVpdGhlciBibG9jayBmdXp6aW5nIGNvbXBsZXRlbHksIG9yIGFsbG93IGZvciBzb21lIG1vcmUgaW50ZXJlc3RpbmcgZnV6emluZyB0YXJnZXRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTMyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA2OjM5OjQ4LjcxNzUxMjYwNloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgxODM2NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElETEVfUEFHRV9UUkFDS0lOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTE3MT1jb25maWcgUEFHRV9JRExFX0ZMQUdcXG4tLVxcbm1tL0tjb25maWctMTE3OC1cXG5tbS9LY29uZmlnOjExNzk6Y29uZmlnIElETEVfUEFHRV9UUkFDS0lOR1xcbm1tL0tjb25maWctMTE4MC1cXHRib29sIFxcXCJFbmFibGUgaWRsZSBwYWdlIHRyYWNraW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNjozOTo0OC43NzU3MDE0NDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1OTQ1MzM3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjb25maWd1cmF0aW9uIHNwYWNlIGJldHRlci4gTGV0J3Mgc3RhcnQgYnkgemVyb2luZyBpbiBvbiBhIGNydWNpYWwgZmlsZSwgc3BlY2lmaWNhbGx5IGBtbS9LY29uZmlnYCwgYW5kIGxldCdzIGdvIHN0cmFpZ2h0IHRvIGxpbmUgMTE3OS4gSSdtIGFzc3VtaW5nIHRoYXQgaXQgd2lsbCBiZSBhIG1ham9yIHBhcnQgb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IG9wdGlvbnMgYW5kIGZlYXR1cmVzLCBzbyBJJ20gaG9waW5nIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgYSBwYXJ0aWN1bGFyIGZlYXR1cmUgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCBhbmQgYW55IGRlcGVuZGVuY2llcy4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBmaWd1cmluZyBvdXQgaG93IHRoaXMgcGFydGljdWxhciBhc3BlY3QgcmVsYXRlcyB0byBwZXJmb3JtYW5jZS4gS25vd2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUga2VybmVsIGlzIGhhbmRsaW5nIG1lbW9yeSBtYW5hZ2VtZW50LCBpbiBwYXJ0aWN1bGFyIGhvdyBJIG1pZ2h0IG9wdGltaXplIGl0IGZvciBzcGVjaWZpYyB3b3JrbG9hZHMuIEhvcGVmdWxseSwgdGhpcyBLY29uZmlnIGVudHJ5IHdpbGwgcHJvdmlkZSBzb21lIGluc2lnaHQgaW50byB0aGUgcmVsZXZhbnQgb3B0aW9ucywgdGhlaXIgcmVsYXRpb25zaGlwcywgYW5kIHBlcmhhcHMgZXZlbiBzb21lIGhpbnRzIGFib3V0IHRoZSB1bmRlcmx5aW5nIGltcGxpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY0MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA2OjM5OjUyLjEzNTE1Nzc4MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTc1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMTc1OlxcdFxcdCAgVGhpcyBhZGRzIFBHX2lkbGUgYW5kIFBHX3lvdW5nIGZsYWdzIHRvICdzdHJ1Y3QgcGFnZScuICBQVEUgQWNjZXNzZWRcXG4xMTc2OlxcdFxcdCAgYml0IHdyaXRlcnMgY2FuIHNldCB0aGUgc3RhdGUgb2YgdGhlIGJpdCBpbiB0aGUgZmxhZ3Mgc28gdGhhdCBQVEVcXG4xMTc3OlxcdFxcdCAgQWNjZXNzZWQgYml0IHJlYWRlcnMgbWF5IGF2b2lkIGRpc3R1cmJhbmNlLlxcbjExNzg6XFx0XFxuMTE3OTpcXHRjb25maWcgSURMRV9QQUdFX1RSQUNLSU5HXFxuMTE4MDpcXHRcXHRib29sIFxcXCJFbmFibGUgaWRsZSBwYWdlIHRyYWNraW5nXFxcIlxcbjExODE6XFx0XFx0ZGVwZW5kcyBvbiBTWVNGUyBcXHUwMDI2XFx1MDAyNiBNTVVcXG4xMTgyOlxcdFxcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xcbjExODM6XFx0XFx0aGVscFxcbjExODQ6XFx0XFx0ICBUaGlzIGZlYXR1cmUgYWxsb3dzIHRvIGVzdGltYXRlIHRoZSBhbW91bnQgb2YgdXNlciBwYWdlcyB0aGF0IGhhdmVcXG4xMTg1OlxcdFxcdCAgbm90IGJlZW4gdG91Y2hlZCBkdXJpbmcgYSBnaXZlbiBwZXJpb2Qgb2YgdGltZS4gVGhpcyBpbmZvcm1hdGlvbiBjYW5cXG4xMTg2OlxcdFxcdCAgYmUgdXNlZnVsIHRvIHR1bmUgbWVtb3J5IGNncm91cCBsaW1pdHMgYW5kL29yIGZvciBqb2IgcGxhY2VtZW50XFxuMTE4NzpcXHRcXHQgIHdpdGhpbiBhIGNvbXB1dGUgY2x1c3Rlci5cXG4xMTg4OlxcdFxcbjExODk6XFx0XFx0ICBTZWUgRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9pZGxlX3BhZ2VfdHJhY2tpbmcucnN0IGZvclxcbjExOTA6XFx0XFx0ICBtb3JlIGRldGFpbHMuXFxuMTE5MTpcXHRcXG4xMTkyOlxcdCMgQXJjaGl0ZWN0dXJlcyB3aGljaCBpbXBsZW1lbnQgY3B1X2RjYWNoZV9pc19hbGlhc2luZygpIHRvIHF1ZXJ5XFxuMTE5MzpcXHQjIHdoZXRoZXIgdGhlIGRhdGEgY2FjaGVzIGFyZSBhbGlhc2VkIChWSVZUIG9yIFZJUFQgd2l0aCBkY2FjaGVcXG4xMTk0OlxcdCMgYWxpYXNpbmcpIG5lZWQgdG8gc2VsZWN0IHRoaXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA2OjM5OjUyLjEzNTMxNzg5MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzA5NjEwNjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqRW5hYmxpbmcgSURMRV9QQUdFX1RSQUNLSU5HKipcblxuUmlnaHQsIHNvIHRoZSBjb25maWcgb3B0aW9uIEknbSB3b3JraW5nIHdpdGggaXMgYElETEVfUEFHRV9UUkFDS0lOR2AuIEdvb2QuIFRoZSBkZXBlbmRlbmN5IGNoZWNrIGNvbmZpcm1zIHRoYXQgaXQgaGluZ2VzIG9uIGBTWVNGUyBcdTAwMjZcdTAwMjYgTU1VYCwgYm90aCBvZiB3aGljaCBhcmUgZXNzZW50aWFsbHkgYWx3YXlzIGVuYWJsZWQuIFRoYXQncyBzdHJhaWdodGZvcndhcmQ7IG15IG1haW4gdGFzayBoZXJlIGlzIHRvIGVuc3VyZSBgSURMRV9QQUdFX1RSQUNLSU5HYCBpdHNlbGYgaXMgZW5hYmxlZC4gTm8gY29tcGxleCBwcmUtcmVxdWlzaXRlIGRhbmNlIHRvIHdvcnJ5IGFib3V0LlxuXG5Ob3csIGxldCdzIHplcm8gaW4gb24gdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4gSSBrbm93IHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgaW50ZXJhY3Qgd2l0aCB0aGlzIGZlYXR1cmUgYXJlIGBwYWdlX2lkbGVfZ2V0X2ZvbGlvYCwgYHBhZ2VfaWRsZV9iaXRtYXBfcmVhZGAsIGFuZCBgcGFnZV9pZGxlX2JpdG1hcF93cml0ZWAuIFRoZXNlIGFyZSB0aGUgY3JpdGljYWwgcGllY2VzIHRoYXQgSSBuZWVkIHRvIGJlIGludGltYXRlbHkgZmFtaWxpYXIgd2l0aCBhcyBJIHJldmlldyB0aGlzIGNvZGUuIFRoZXNlIGxpa2VseSByZXByZXNlbnQgdGhlIGNvcmUgZGF0YSBhY2Nlc3MgYW5kIG1hbmlwdWxhdGlvbiBmb3IgdGhlIHRyYWNraW5nIG1lY2hhbmlzbS5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdsbCBxdWlja2x5IGdsYW5jZSBhdCB0aGUgd2lkZXIgY29kZWJhc2UgYW5kIG1ha2UgYSBxdWljayBtZW50YWwgbm90ZSB0aGF0IHRoZXJlIGFyZSBsaWtlbHkgb3RoZXIgZnVuY3Rpb25zIGludGVyYWN0aW5nIHdpdGggdGhlIHNhbWUgZmVhdHVyZS4gSXQgcGF5cyB0byBrZWVwIHRoaXMgY29udGV4dCBpbiBtaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjIyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNjozOTo1OS40NDQ5MzAyMDFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDM4NTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2VfaWRsZV9nZXRfZm9saW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vcGFnZV9pZGxlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vcGFnZV9pZGxlLmMtMzMtICovXFxubW0vcGFnZV9pZGxlLmM6MzQ6c3RhdGljIHN0cnVjdCBmb2xpbyAqcGFnZV9pZGxlX2dldF9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbilcXG5tbS9wYWdlX2lkbGUuYy0zNS17XFxuLS1cXG5tbS9wYWdlX2lkbGUuYz0xMTg9c3RhdGljIHNzaXplX3QgcGFnZV9pZGxlX2JpdG1hcF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL3BhZ2VfaWRsZS5jLTE0MS1cXHRcXHRcXHQqb3V0ID0gMFVMTDtcXG5tbS9wYWdlX2lkbGUuYzoxNDI6XFx0XFx0Zm9saW8gPSBwYWdlX2lkbGVfZ2V0X2ZvbGlvKHBmbik7XFxubW0vcGFnZV9pZGxlLmMtMTQzLVxcdFxcdGlmIChmb2xpbykge1xcbi0tXFxubW0vcGFnZV9pZGxlLmM9MTYzPXN0YXRpYyBzc2l6ZV90IHBhZ2VfaWRsZV9iaXRtYXBfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vcGFnZV9pZGxlLmMtMTg1LVxcdFxcdGlmICgoKmluIFxcdTAwM2VcXHUwMDNlIGJpdCkgXFx1MDAyNiAxKSB7XFxubW0vcGFnZV9pZGxlLmM6MTg2OlxcdFxcdFxcdGZvbGlvID0gcGFnZV9pZGxlX2dldF9mb2xpbyhwZm4pO1xcbm1tL3BhZ2VfaWRsZS5jLTE4Ny1cXHRcXHRcXHRpZiAoZm9saW8pIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDY6Mzk6NTkuNTAyMzcxOTc5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MzczNjA0MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGb2xpbyBBY3F1aXNpdGlvbiBhbmQgTFJVIENoZWNrIGluIGBwYWdlX2lkbGVfZ2V0X2ZvbGlvYCoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgaXQgc2VlbXMgbGlrZSBgcGFnZV9pZGxlX2JpdG1hcF9yZWFkYCBhbmQgYHBhZ2VfaWRsZV9iaXRtYXBfd3JpdGVgIGFyZSB0aGUgb25seSBmdW5jdGlvbnMgY2FsbGluZyB0aGlzLiBUaGUgY29kZSdzIGJlaGF2aW9yIGhhcyBiZWVuIG1vZGlmaWVkLCBsaWtlbHkgdG8gYWRkcmVzcyBhIGJ1ZyBvciBmb3Igb3B0aW1pemF0aW9uLiBMZXQncyB0YWtlIGEgY2xvc2VyIGxvb2s6IHRoZSBvcmlnaW5hbCBjb2RlIHdvdWxkIGJhaWwgb3V0IGVhcmx5IGlmIHRoZSBMUlUgZmxhZyB3YXNuJ3Qgc2V0LiBUaGUgbmV3IHZlcnNpb24gKmFjcXVpcmVzKiBhIHJlZmVyZW5jZSB0byB0aGUgZm9saW8gZmlyc3QgdXNpbmcgYGZvbGlvX3RyeV9nZXRgLCAqdGhlbiogY2hlY2tzIHRoZSBMUlUgZmxhZy4gSWYgdGhlIExSVSBpc24ndCBzZXQsIHRoZSByZWZlcmVuY2UgaXMgcmVsZWFzZWQuIFRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbi4gV2UncmUgbm93IGVuc3VyaW5nIHdlIGhvbGQgYSByZWZlcmVuY2UgYmVmb3JlIGV2YWx1YXRpbmcgdGhlIExSVSBzdGF0ZS4gVGhlIGludGVudCBpcyB0byBhdm9pZCBhIHNjZW5hcmlvIHdoZXJlIHRoZSBMUlUgZmxhZyBjaGFuZ2VzIGJldHdlZW4gdGhlIGluaXRpYWwgY2hlY2sgYW5kIHRoZSBmb2xpbyBhY3F1aXNpdGlvbiwgd2hpY2ggY291bGQgbGVhZCB0byBpbmNvcnJlY3QgYmVoYXZpb3IuXG5cbkknbSB0aGlua2luZyB0aGlzIGlzIHdvcnRoIGZ1enppbmcuIFRoZSBjaGFuZ2UgaXMgZGVmaW5pdGVseSBmdW5jdGlvbmFsLiBJJ2xsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLiBUbyBmb2N1cyB0aGUgZnV6emluZyBlZmZvcnRzLCBJJ2xsIHNwZWNpZnkgdGhlIHJlbGV2YW50IHN5bWJvbHMgYXMgYHBhZ2VfaWRsZV9nZXRfZm9saW9gLCBgcGFnZV9pZGxlX2JpdG1hcF9yZWFkYCwgYW5kIGBwYWdlX2lkbGVfYml0bWFwX3dyaXRlYC4gQW5kIHNpbmNlIHRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgc3lzZnMgaW50ZXJmYWNlLCBJJ2xsIGVuYWJsZSBgSURMRV9QQUdFX1RSQUNLSU5HYC4gTXkgcmVhc29uaW5nIGlzIHRoZSBwYXRjaCdzIGxvZ2ljIGNoYW5nZSB3aXRoaW4gYHBhZ2VfaWRsZV9nZXRfZm9saW9gIGlzIGRpcmVjdGx5IHJlbGV2YW50IHRvIHRoZSBzeXNmcyByZWFkL3dyaXRlIG9wZXJhdGlvbnMgb24gYC9zeXMva2VybmVsL21tL3BhZ2VfaWRsZS9iaXRtYXBgLiBGdXp6aW5nIHRoaXMgd2lsbCBhbGxvdyB2ZXJpZmljYXRpb24gb2YgdGhlIGZpeCBmb3IgdGhlIHJhY2UgY29uZGl0aW9uIHRoZSBwYXRjaCBhZGRyZXNzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NjksIk91dHB1dFRva2VucyI6MTQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA2OjQwOjA2LjQzOTczNDc2OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0NDQ1MDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJRExFX1BBR0VfVFJBQ0tJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwYWdlX2lkbGVfZ2V0X2ZvbGlvXCIsXG4gICAgXCJwYWdlX2lkbGVfYml0bWFwX3JlYWRcIixcbiAgICBcInBhZ2VfaWRsZV9iaXRtYXBfd3JpdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIGluIGBwYWdlX2lkbGVfZ2V0X2ZvbGlvYCBieSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgYGZvbGlvX3RyeV9nZXRgIGFuZCBgZm9saW9fdGVzdF9scnVgIGNoZWNrcy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN5c2ZzIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBvbiBgL3N5cy9rZXJuZWwvbW0vcGFnZV9pZGxlL2JpdG1hcGAuIEZ1enppbmcgdGhlc2Ugc3lzZnMgaGFuZGxlcnMgY2FuIGhlbHAgdmVyaWZ5IHRoZSBmaXggZm9yIHRoZSByYWNlIGNvbmRpdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJRExFX1BBR0VfVFJBQ0tJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwYWdlX2lkbGVfZ2V0X2ZvbGlvXCIsXG4gICAgXCJwYWdlX2lkbGVfYml0bWFwX3JlYWRcIixcbiAgICBcInBhZ2VfaWRsZV9iaXRtYXBfd3JpdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIGluIGBwYWdlX2lkbGVfZ2V0X2ZvbGlvYCBieSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgYGZvbGlvX3RyeV9nZXRgIGFuZCBgZm9saW9fdGVzdF9scnVgIGNoZWNrcy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN5c2ZzIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBvbiBgL3N5cy9rZXJuZWwvbW0vcGFnZV9pZGxlL2JpdG1hcGAuIEZ1enppbmcgdGhlc2Ugc3lzZnMgaGFuZGxlcnMgY2FuIGhlbHAgdmVyaWZ5IHRoZSBmaXggZm9yIHRoZSByYWNlIGNvbmRpdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowtv99j[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-23 06:17:12 +0000 UTC FinishedAt: 2026-07-23 06:40:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "5e0603ba185af6754422ad28b646798686b6caf6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IDLE_PAGE_TRACKING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "5e0603ba185af6754422ad28b646798686b6caf6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IDLE_PAGE_TRACKING" ], "series_id": "aff4b681-3cf9-4c0d-bfdf-81f600cb95a2" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "page_idle_get_folio", "page_idle_bitmap_read", "page_idle_bitmap_write" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lETEVfUEFHRV9UUkFDS0lORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhZ2VfaWRsZV9nZXRfZm9saW8mIzM0OywKICAgICYjMzQ7cGFnZV9pZGxlX2JpdG1hcF9yZWFkJiMzNDssCiAgICAmIzM0O3BhZ2VfaWRsZV9iaXRtYXBfd3JpdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHN5bmNocm9uaXphdGlvbiBsb2dpYyBpbiBgcGFnZV9pZGxlX2dldF9mb2xpb2AgYnkgY2hhbmdpbmcgdGhlIG9yZGVyIG9mIGBmb2xpb190cnlfZ2V0YCBhbmQgYGZvbGlvX3Rlc3RfbHJ1YCBjaGVja3MuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBzeXNmcyByZWFkL3dyaXRlIG9wZXJhdGlvbnMgb24gYC9zeXMva2VybmVsL21tL3BhZ2VfaWRsZS9iaXRtYXBgLiBGdXp6aW5nIHRoZXNlIHN5c2ZzIGhhbmRsZXJzIGNhbiBoZWxwIHZlcmlmeSB0aGUgZml4IGZvciB0aGUgcmFjZSBjb25kaXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDY6Mzk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlMjkzNjYxMWUxN2M1ZjYwNzM0YTE2YzgzMjg2MmY1NWI2ZGRiNTVmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMDY6Mzk6MTkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vcGFnZV9pZGxlLmMgYi9tbS9wYWdlX2lkbGUuY1xuaW5kZXggOWM2N2NiYWMyOTY1OTguLjI5ZWUxOGYwZThjZTAyIDEwMDY0NFxuLS0tIGEvbW0vcGFnZV9pZGxlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL3BhZ2VfaWRsZS5jXG5AQCAtNDAsOSAmIzQzOzQwLDkgQEAgc3RhdGljIHN0cnVjdCBmb2xpbyAqcGFnZV9pZGxlX2dldF9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbilcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRmb2xpbyA9IHBhZ2VfZm9saW8ocGFnZSk7XG4tXHRpZiAoIWZvbGlvX3Rlc3RfbHJ1KGZvbGlvKSB8fCAhZm9saW9fdHJ5X2dldChmb2xpbykpXG4mIzQzO1x0aWYgKCFmb2xpb190cnlfZ2V0KGZvbGlvKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4tXHRpZiAodW5saWtlbHkocGFnZV9mb2xpbyhwYWdlKSAhPSBmb2xpbyB8fCAhZm9saW9fdGVzdF9scnUoZm9saW8pKSkge1xuJiM0MztcdGlmICh1bmxpa2VseShwYWdlX2ZvbGlvKHBhZ2UpICE9IGZvbGlvKSB8fCAhZm9saW9fdGVzdF9scnUoZm9saW8pKSB7XG4gXHRcdGZvbGlvX3B1dChmb2xpbyk7XG4gXHRcdGZvbGlvID0gTlVMTDtcbiBcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNjozOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SURMRV9QQUdFX1RSQUNLSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGFnZV9pZGxlX2dldF9mb2xpbyYjMzQ7LAogICAgJiMzNDtwYWdlX2lkbGVfYml0bWFwX3JlYWQmIzM0OywKICAgICYjMzQ7cGFnZV9pZGxlX2JpdG1hcF93cml0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIGluIGBwYWdlX2lkbGVfZ2V0X2ZvbGlvYCBieSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgYGZvbGlvX3RyeV9nZXRgIGFuZCBgZm9saW9fdGVzdF9scnVgIGNoZWNrcy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN5c2ZzIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBvbiBgL3N5cy9rZXJuZWwvbW0vcGFnZV9pZGxlL2JpdG1hcGAuIEZ1enppbmcgdGhlc2Ugc3lzZnMgaGFuZGxlcnMgY2FuIGhlbHAgdmVyaWZ5IHRoZSBmaXggZm9yIHRoZSByYWNlIGNvbmRpdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTI5MzY2MTFlMTdjNWY2MDczNGExNmM4MzI4NjJmNTViNmRkYjU1ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDIzIDA2OjM5OjE5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vcGFnZV9pZGxlLmMgYi9tbS9wYWdlX2lkbGUuYwppbmRleCA5YzY3Y2JhYzI5NjU5OC4uMjllZTE4ZjBlOGNlMDIgMTAwNjQ0Ci0tLSBhL21tL3BhZ2VfaWRsZS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL3BhZ2VfaWRsZS5jCkBAIC00MCw5ICYjNDM7NDAsOSBAQCBzdGF0aWMgc3RydWN0IGZvbGlvICpwYWdlX2lkbGVfZ2V0X2ZvbGlvKHVuc2lnbmVkIGxvbmcgcGZuKQogCQlyZXR1cm4gTlVMTDsKIAogCWZvbGlvID0gcGFnZV9mb2xpbyhwYWdlKTsKLQlpZiAoIWZvbGlvX3Rlc3RfbHJ1KGZvbGlvKSB8fCAhZm9saW9fdHJ5X2dldChmb2xpbykpCiYjNDM7CWlmICghZm9saW9fdHJ5X2dldChmb2xpbykpCiAJCXJldHVybiBOVUxMOwotCWlmICh1bmxpa2VseShwYWdlX2ZvbGlvKHBhZ2UpICE9IGZvbGlvIHx8ICFmb2xpb190ZXN0X2xydShmb2xpbykpKSB7CiYjNDM7CWlmICh1bmxpa2VseShwYWdlX2ZvbGlvKHBhZ2UpICE9IGZvbGlvKSB8fCAhZm9saW9fdGVzdF9scnUoZm9saW8pKSB7CiAJCWZvbGlvX3B1dChmb2xpbyk7CiAJCWZvbGlvID0gTlVMTDsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MzcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIFBhZ2UgSWRsZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYG1tL3BhZ2VfaWRsZS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgcGFnZV9pZGxlX2dldF9mb2xpb2AgZnVuY3Rpb24uIExldCYjMzk7cyBicmVhayBkb3duIHRoaXMgZGlmZi4gSW5pdGlhbGx5LCBJIHNhdyBzb21lIHN0cmFpZ2h0Zm9yd2FyZCBsb2dpYyBhbHRlcmF0aW9uLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBgZm9saW9fdHJ5X2dldGAgYW5kIGBmb2xpb190ZXN0X2xydWAgY2FsbHMuIEl0IGxvb2tlZCBsaWtlIHRoZSBwYXRjaCBqdXN0IG1vdmVkIHRoZSBgIWZvbGlvX3Rlc3RfbHJ1KGZvbGlvKWAgY2hlY2sgZnJvbSBiZWZvcmUgdGhlIGB0cnlfZ2V0YCB0byBhZnRlci4gQnV0IGhvbGQgb24uLi4gdGhlICpzZWNvbmQqIGBpZmAgc3RhdGVtZW50IGFscmVhZHkgaGFkIGAhZm9saW9fdGVzdF9scnUoZm9saW8pYCEKCk9rYXksIEkgc2VlIGl0IG5vdy4gVGhlIGNydWNpYWwgY2hhbmdlIGlzIHRoYXQgdGhlIGB1bmxpa2VseWAgbWFjcm8gaXMgb25seSB3cmFwcGluZyBgcGFnZV9mb2xpbyhwYWdlKSAhPSBmb2xpb2AgaW4gdGhlIG1vZGlmaWVkIGNvZGUuIFRoZSBvcmlnaW5hbCBgaWZgIGNvbmRpdGlvbiB3YXMgbG9uZ2VyLiBTbyB0aGUgZmlyc3QgYGlmYCBzdGF0ZW1lbnQgKmxvc3QqIHRoYXQgYCFmb2xpb190ZXN0X2xydShmb2xpbylgIGNvbmRpdGlvbi4gTWFrZXMgc2Vuc2UuLi4gTm93IEkgbmVlZCB0byBzZWUgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgbWlnaHQgYmUgaW4gcGxheSBoZXJlLiBUaW1lIHRvIGp1bXAgaW50byBgbW0vcGFnZV9pZGxlLmNgIGFuZCBmaWd1cmUgb3V0IHRoZSBjb25kaXRpb25hbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDY6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFnZV9pZGxlX2dldF9mb2xpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3BhZ2VfaWRsZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3BhZ2VfaWRsZS5jLTMzLSAqL1xubW0vcGFnZV9pZGxlLmM6MzQ6c3RhdGljIHN0cnVjdCBmb2xpbyAqcGFnZV9pZGxlX2dldF9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbilcbm1tL3BhZ2VfaWRsZS5jLTM1LXtcbi0tXG5tbS9wYWdlX2lkbGUuYz0xMTg9c3RhdGljIHNzaXplX3QgcGFnZV9pZGxlX2JpdG1hcF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9wYWdlX2lkbGUuYy0xNDEtXHRcdFx0Km91dCA9IDBVTEw7XG5tbS9wYWdlX2lkbGUuYzoxNDI6XHRcdGZvbGlvID0gcGFnZV9pZGxlX2dldF9mb2xpbyhwZm4pO1xubW0vcGFnZV9pZGxlLmMtMTQzLVx0XHRpZiAoZm9saW8pIHtcbi0tXG5tbS9wYWdlX2lkbGUuYz0xNjM9c3RhdGljIHNzaXplX3QgcGFnZV9pZGxlX2JpdG1hcF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vcGFnZV9pZGxlLmMtMTg1LVx0XHRpZiAoKCppbiBcdTAwM2VcdTAwM2UgYml0KSBcdTAwMjYgMSkge1xubW0vcGFnZV9pZGxlLmM6MTg2Olx0XHRcdGZvbGlvID0gcGFnZV9pZGxlX2dldF9mb2xpbyhwZm4pO1xubW0vcGFnZV9pZGxlLmMtMTg3LVx0XHRcdGlmIChmb2xpbykge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NzcKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqTG9jYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gZm9yIGBtbS9wYWdlX2lkbGUuY2AqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBteSBoYW5kcyBvbiB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIGBtbS9wYWdlX2lkbGUuY2AuIFRoYXQmIzM5O3MgdGhlIG1vZHVsZSBJJiMzOTttIGludGVyZXN0ZWQgaW4gcmlnaHQgbm93LiBUaGUgZmlyc3QgdGhpbmcgSSYjMzk7bGwgZG8gaXMgZmlndXJlIG91dCB3aGVyZSB0aGF0IGNvbmZpZ3VyYXRpb24gbGl2ZXMuIElzIGl0IGEga2VybmVsIGNvbmZpZyBvcHRpb24/IEEgYnVpbGQtdGltZSBmbGFnPyBBIHJ1bnRpbWUgcGFyYW1ldGVyPyBNeSBndXQgc2F5cyBpdCYjMzk7cyBsaWtlbHkgYSBgS2NvbmZpZ2Agb3B0aW9uIHNvbWV3aGVyZSwgYnVyaWVkIGRlZXAgaW4gdGhlIGtlcm5lbCB0cmVlLiBJJiMzOTtsbCBuZWVkIHRvIGxvY2F0ZSB0aGUgcmlnaHQgZmlsZS4gSSYjMzk7bSB0aGlua2luZyBJIGNhbiBzdGFydCBieSB1c2luZyBgZmluZGAgb3IgYGdyZXBgIHRvIHF1aWNrbHkgc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgZm9yIGEgcmVsZXZhbnQgYEtjb25maWdgIGZpbGUuIEkmIzM5O2xsIHByb2JhYmx5IGxvb2sgZm9yIGtleXdvcmRzIGxpa2UgJiMzNDtwYWdlX2lkbGUsJiMzNDsgJiMzNDtpZGxlLCYjMzQ7IG9yIGV2ZW4gJiMzNDttZW1vcnkgbWFuYWdlbWVudCYjMzQ7IHRvIG5hcnJvdyBpdCBkb3duLiBPbmNlIEkgaGF2ZSBhIGZldyBjYW5kaWRhdGUgZmlsZXMsIEkmIzM5O2xsIGV4YW1pbmUgdGhlbSBjbG9zZWx5LiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24gYXNzb2NpYXRlZCB3aXRoIGBtbS9wYWdlX2lkbGUuY2AsIG5vdGluZyB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgYW5kIGFueSBvdGhlciByZWxldmFudCBjb250ZXh0dWFsIGluZm9ybWF0aW9uIGl0IHByb3ZpZGVzLiBJdCYjMzk7cyBhIHF1aWNrIHByb2Nlc3MsIGJ1dCBpdCByZXF1aXJlcyBhIHN5c3RlbWF0aWMgYXBwcm9hY2ggdG8gbWFrZSBzdXJlIHRoYXQgSSYjMzk7bSBsb29raW5nIGF0IHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gb3B0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhZ2VfaWRsZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGU9MTMxPW9iai0kKENPTkZJR19VU0VSRkFVTFRGRCkgJiM0Mzs9IHVzZXJmYXVsdGZkLm9cbm1tL01ha2VmaWxlOjEzMjpvYmotJChDT05GSUdfSURMRV9QQUdFX1RSQUNLSU5HKSAmIzQzOz0gcGFnZV9pZGxlLm9cbm1tL01ha2VmaWxlLTEzMy1vYmotJChDT05GSUdfREVCVUdfUEFHRUFMTE9DKSAmIzQzOz0gZGVidWdfcGFnZV9hbGxvYy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDY6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI4MQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSWRsZSBQYWdlIFRyYWNraW5nIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaW4gcGxheSBoZXJlIGlzIGBJRExFX1BBR0VfVFJBQ0tJTkdgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIE5vdywgaXQgbG9va3MgbGlrZSB0aGUgZnVuY3Rpb24gYHBhZ2VfaWRsZV9nZXRfZm9saW9gIGlzIHRoZSB3b3JraG9yc2UgYmVoaW5kIHRoaXMsIGFuZCBpdCYjMzk7cyBiZWluZyBjYWxsZWQgYnkgYm90aCBgcGFnZV9pZGxlX2JpdG1hcF9yZWFkYCBhbmQgYHBhZ2VfaWRsZV9iaXRtYXBfd3JpdGVgLiBSaWdodCwgdGhvc2UgdHdvIGZ1bmN0aW9ucyBhcmUgdGhlIHN5c2ZzIG9wZXJhdGlvbnMgaW52b2x2ZWQgd2l0aCBpZGxlIHBhZ2UgdHJhY2tpbmcuIFRoYXQgbWFrZXMgc2Vuc2UsIHN5c2ZzIGJlaW5nIHRoZSBpbnRlcmZhY2UgZm9yIGNvbnRyb2wgYW5kIGluc3BlY3Rpb24uIE15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIGRpZyBpbnRvIGBwYWdlX2lkbGVfYml0bWFwX3JlYWRgIGFuZCBgcGFnZV9pZGxlX2JpdG1hcF93cml0ZWAgdG8gc2VlIGV4YWN0bHkgaG93IHRoZXkmIzM5O3JlIGxldmVyYWdpbmcgYHBhZ2VfaWRsZV9nZXRfZm9saW9gIGFuZCB3aGF0IHRoZXkmIzM5O3JlIGFjdHVhbGx5IGRvaW5nLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSByZWFsIGRldGFpbCB3aWxsIGJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhZ2VfaWRsZV9iaXRtYXBfcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3BhZ2VfaWRsZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3BhZ2VfaWRsZS5jPTk3PXN0YXRpYyB2b2lkIHBhZ2VfaWRsZV9jbGVhcl9wdGVfcmVmcyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbm1tL3BhZ2VfaWRsZS5jLTExNy1cbm1tL3BhZ2VfaWRsZS5jOjExODpzdGF0aWMgc3NpemVfdCBwYWdlX2lkbGVfYml0bWFwX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBrb2JqZWN0ICprb2JqLFxubW0vcGFnZV9pZGxlLmMtMTE5LVx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmLFxuLS1cbm1tL3BhZ2VfaWRsZS5jPTIwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgcGFnZV9pZGxlX2JpdG1hcF9hdHRyID1cbm1tL3BhZ2VfaWRsZS5jLTIwMS1cdFx0X19CSU5fQVRUUihiaXRtYXAsIDA2MDAsXG5tbS9wYWdlX2lkbGUuYzoyMDI6XHRcdFx0ICAgcGFnZV9pZGxlX2JpdG1hcF9yZWFkLCBwYWdlX2lkbGVfYml0bWFwX3dyaXRlLCAwKTtcbm1tL3BhZ2VfaWRsZS5jLTIwMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzk4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyB0aGUgQml0bWFwJiMzOTtzIFVzYWdlKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGVhbGluZyB3aXRoIHRoaXMgYGJpdG1hcGAgc3lzZnMgZmlsZSwgd2hpY2ggSSBrbm93IGlzIGhhbmdpbmcgb2ZmIHNvbWUga2VybmVsIG9iamVjdCAoYGtvYmpgKS4gVGhlIGtleSBxdWVzdGlvbiBub3cgaXMsIHdoYXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGlzIHRoaW5nPyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgdXNhZ2Ugb2YgYHBhZ2VfaWRsZV9iaXRtYXBfYXR0cmAuIFRpbWUgdG8gZG8gc29tZSBkaWdnaW5nIGFuZCBzZWUgd2hlcmUgdGhpcyBzcGVjaWZpYyBhdHRyaWJ1dGUgaXMgYmVpbmcgZW1wbG95ZWQgd2l0aGluIHRoZSBrZXJuZWwgY29kZS4gTGV0JiMzOTtzIHRyYWNlIHRoYXQgdXNhZ2UgYW5kIHVuZGVyc3RhbmQgaXRzIHJvbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhZ2VfaWRsZV9iaXRtYXBfYXR0ciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3BhZ2VfaWRsZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3BhZ2VfaWRsZS5jPTE2Mz1zdGF0aWMgc3NpemVfdCBwYWdlX2lkbGVfYml0bWFwX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9wYWdlX2lkbGUuYy0xOTktXG5tbS9wYWdlX2lkbGUuYzoyMDA6c3RhdGljIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlIHBhZ2VfaWRsZV9iaXRtYXBfYXR0ciA9XG5tbS9wYWdlX2lkbGUuYy0yMDEtXHRcdF9fQklOX0FUVFIoYml0bWFwLCAwNjAwLFxuLS1cbm1tL3BhZ2VfaWRsZS5jPTIwND1zdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgKmNvbnN0IHBhZ2VfaWRsZV9iaW5fYXR0cnNbXSA9IHtcbm1tL3BhZ2VfaWRsZS5jOjIwNTpcdFx1MDAyNnBhZ2VfaWRsZV9iaXRtYXBfYXR0cixcbm1tL3BhZ2VfaWRsZS5jLTIwNi1cdE5VTEwsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNzIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgYHBhZ2VfaWRsZV9iaW5fYXR0cnNgIFVzYWdlKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIG1lbnRhbCBjaGVja2xpc3Qgc3RhcnRzIHdpdGggZmlndXJpbmcgb3V0IHdoZXJlIGBwYWdlX2lkbGVfYmluX2F0dHJzYCBpcyBhY3R1YWxseSB1dGlsaXplZCB3aXRoaW4gdGhlIHN5c3RlbS4gSSBuZWVkIHRvIHRyYWNlIGl0cyB1c2FnZSBwYXR0ZXJucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIFdoZXJlIGFyZSB0aGUgcmVhZHM/IFdoZXJlIGFyZSB0aGUgd3JpdGVzPyBXaGF0IGZ1bmN0aW9ucyBjYWxsIGl0PyBXaGF0IGZ1bmN0aW9ucyBkb2VzIGl0IGNhbGw/IEtub3dpbmcgdGhlIGNhbGxzaXRlcyB3aWxsIHByb3ZpZGUgdGhlIGluc2lnaHRzIEkgbmVlZCB0byBldmFsdWF0ZSB0aGUgaW1wYWN0IG9mIHRoaXMgc3RydWN0dXJlLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgc3RhcnQgaHVudGluZyBkb3duIHRob3NlIHJlZmVyZW5jZXMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDY6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFnZV9pZGxlX2Jpbl9hdHRycyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3BhZ2VfaWRsZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3BhZ2VfaWRsZS5jPTIwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgcGFnZV9pZGxlX2JpdG1hcF9hdHRyID1cbi0tXG5tbS9wYWdlX2lkbGUuYy0yMDMtXG5tbS9wYWdlX2lkbGUuYzoyMDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlICpjb25zdCBwYWdlX2lkbGVfYmluX2F0dHJzW10gPSB7XG5tbS9wYWdlX2lkbGUuYy0yMDUtXHRcdTAwMjZwYWdlX2lkbGVfYml0bWFwX2F0dHIsXG4tLVxubW0vcGFnZV9pZGxlLmM9MjA5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIHBhZ2VfaWRsZV9hdHRyX2dyb3VwID0ge1xubW0vcGFnZV9pZGxlLmM6MjEwOlx0LmJpbl9hdHRycyA9IHBhZ2VfaWRsZV9iaW5fYXR0cnMsXG5tbS9wYWdlX2lkbGUuYy0yMTEtXHQubmFtZSA9IFwmIzM0O3BhZ2VfaWRsZVwmIzM0OyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDY6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU0NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIGBwYWdlX2lkbGVfYXR0cl9ncm91cGAgVXNhZ2UqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSBzY29wZSBhbmQgaW1wbGljYXRpb25zIG9mIGBwYWdlX2lkbGVfYXR0cl9ncm91cGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGVyZSogdGhpcyBpcyBhY3R1YWxseSBiZWluZyB1c2VkIHdpdGhpbiB0aGUgc3lzdGVtLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGNyaXRpY2FsIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHJvbGUgYW5kIGhvdyBhbnkgY2hhbmdlcyBtaWdodCByaXBwbGUgdGhyb3VnaCB0aGUgY29kZS4gSSBuZWVkIHRvIHRyYWNlIGl0cyByZWZlcmVuY2VzIHRvIGdldCBhIHNlbnNlIG9mIGl0cyBpbXBhY3QuIFdoZXJlIGlzIHRoaXMgdGhpbmcgYWN0dWFsbHkgKmhvb2tlZCogaW50byB0aGUgYXJjaGl0ZWN0dXJlPyBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhZ2VfaWRsZV9hdHRyX2dyb3VwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vcGFnZV9pZGxlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vcGFnZV9pZGxlLmM9MjA0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqY29uc3QgcGFnZV9pZGxlX2Jpbl9hdHRyc1tdID0ge1xuLS1cbm1tL3BhZ2VfaWRsZS5jLTIwOC1cbm1tL3BhZ2VfaWRsZS5jOjIwOTpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBwYWdlX2lkbGVfYXR0cl9ncm91cCA9IHtcbm1tL3BhZ2VfaWRsZS5jLTIxMC1cdC5iaW5fYXR0cnMgPSBwYWdlX2lkbGVfYmluX2F0dHJzLFxuLS1cbm1tL3BhZ2VfaWRsZS5jPTIxND1zdGF0aWMgaW50IF9faW5pdCBwYWdlX2lkbGVfaW5pdCh2b2lkKVxuLS1cbm1tL3BhZ2VfaWRsZS5jLTIxNy1cbm1tL3BhZ2VfaWRsZS5jOjIxODpcdGVyciA9IHN5c2ZzX2NyZWF0ZV9ncm91cChtbV9rb2JqLCBcdTAwMjZwYWdlX2lkbGVfYXR0cl9ncm91cCk7XG5tbS9wYWdlX2lkbGUuYy0yMTktXHRpZiAoZXJyKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MzIKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBTeXprYWxsZXIgRnV6emluZyBUYXJnZXRzIGZvciBJZGxlIFBhZ2UgVHJhY2tpbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgL3N5cy9rZXJuZWwvbW0vcGFnZV9pZGxlL2JpdG1hcGAgdGhpbmcuIFRoaXMgc2NyZWFtcyAmIzM0O3N5c2ZzIGZpbGUmIzM0OyB0byBtZSwgYW5kIHRoYXQgbWVhbnMgaXQmIzM5O3MgZmFpciBnYW1lIGZvciBzeXprYWxsZXIsIHdoaWNoIGlzIHByZWNpc2VseSB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IuIFRoZSBjcnVjaWFsIGZ1bmN0aW9ucyBoZXJlLCB0aGUgb25lcyB0aGF0IGhhbmRsZSB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGlzIHN5c2ZzIGVudHJ5LCBhcmUgYHBhZ2VfaWRsZV9iaXRtYXBfcmVhZGAgYW5kIGBwYWdlX2lkbGVfYml0bWFwX3dyaXRlYC4gVGhvc2UgYXJlIHRoZSBwcmltZSBzdXNwZWN0cywgdGhlIGVudHJ5IHBvaW50cyBJIHdhbnQgdG8ga2VlcCBhbiBleWUgb24uCgpXYWl0IGEgc2Vjb25kLCB0aGVyZSYjMzk7cyBhbHNvIGBwYWdlX2lkbGVfZ2V0X2ZvbGlvYCBpbnZvbHZlZCBpbiB0aGlzLCBJIHJlbWVtYmVyIHJlYWRpbmcgYWJvdXQgaXQgaW4gY29udGV4dCB3aXRoIHRoZSBiaXRtYXAuIE9rYXksIGxldCYjMzk7cyBpbmNsdWRlIGl0IGZvciBjb25zaWRlcmF0aW9uLgoKSG9sZCB1cCBhIG1pbnV0ZS4uLiBpc24mIzM5O3QgYHBhZ2VfaWRsZV9nZXRfZm9saW9gIGRlY2xhcmVkIGFzIGBzdGF0aWNgPyBUaGF0IG1pZ2h0IGJlIGEgcHJvYmxlbS4gU3RhdGljIGZ1bmN0aW9ucyBzb21ldGltZXMgZG9uJiMzOTt0IG1ha2UgaXQgaW50byB0aGUgc3ltYm9sIHRhYmxlLCBvciBzeXprYWxsZXIgbWlnaHQgbm90IGJlIGFibGUgdG8gdGFyZ2V0IHRoZW0gZGlyZWN0bHkuIEl0JiMzOTtzIHN0aWxsIHdvcnRoIGxpc3RpbmcgaXQsIHRob3VnaCwgYXMgaXQmIzM5O3MgbW9kaWZpZWQgYW5kIG1pZ2h0IGJlIGNhbGxlZCBpbiB0aGUgY29udGV4dCBvZiBgcGFnZV9pZGxlX2JpdG1hcF9yZWFkYCBhbmQgYHBhZ2VfaWRsZV9iaXRtYXBfd3JpdGVgLgoKQWxyaWdodCwgYmFjayB0byB0aGUgcHJpbWFyeSB0YXJnZXRzLiBEZWZpbml0ZWx5IGxpc3RpbmcgYHBhZ2VfaWRsZV9iaXRtYXBfcmVhZGAgYW5kIGBwYWdlX2lkbGVfYml0bWFwX3dyaXRlYCBmb3IgY2xvc2VyIHNjcnV0aW55LiBJIHRoaW5rIHRoZXkgYXJlIGdvaW5nIHRvIGJlIHRoZSBwbGFjZXMgdG8gc3RhcnQuCgpOb3csIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgYElETEVfUEFHRV9UUkFDS0lOR2AuIEFyZSB0aGVyZSBhbnkgZGVwZW5kZW5jaWVzPyBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IGBJRExFX1BBR0VfVFJBQ0tJTkdgIGlzbiYjMzk7dCBkZXBlbmRlbnQgb24gc29tZSBvdGhlciBmZWF0dXJlIHRoYXQgY291bGQgZWl0aGVyIGJsb2NrIGZ1enppbmcgY29tcGxldGVseSwgb3IgYWxsb3cgZm9yIHNvbWUgbW9yZSBpbnRlcmVzdGluZyBmdXp6aW5nIHRhcmdldHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJRExFX1BBR0VfVFJBQ0tJTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9MTE3MT1jb25maWcgUEFHRV9JRExFX0ZMQUdcbi0tXG5tbS9LY29uZmlnLTExNzgtXG5tbS9LY29uZmlnOjExNzk6Y29uZmlnIElETEVfUEFHRV9UUkFDS0lOR1xubW0vS2NvbmZpZy0xMTgwLVx0Ym9vbCBcJiMzNDtFbmFibGUgaWRsZSBwYWdlIHRyYWNraW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDA2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NDEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjb25maWd1cmF0aW9uIHNwYWNlIGJldHRlci4gTGV0JiMzOTtzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYSBjcnVjaWFsIGZpbGUsIHNwZWNpZmljYWxseSBgbW0vS2NvbmZpZ2AsIGFuZCBsZXQmIzM5O3MgZ28gc3RyYWlnaHQgdG8gbGluZSAxMTc5LiBJJiMzOTttIGFzc3VtaW5nIHRoYXQgaXQgd2lsbCBiZSBhIG1ham9yIHBhcnQgb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IG9wdGlvbnMgYW5kIGZlYXR1cmVzLCBzbyBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IGEgcGFydGljdWxhciBmZWF0dXJlIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQgYW5kIGFueSBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGZpZ3VyaW5nIG91dCBob3cgdGhpcyBwYXJ0aWN1bGFyIGFzcGVjdCByZWxhdGVzIHRvIHBlcmZvcm1hbmNlLiBLbm93aW5nIHRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBrZXJuZWwgaXMgaGFuZGxpbmcgbWVtb3J5IG1hbmFnZW1lbnQsIGluIHBhcnRpY3VsYXIgaG93IEkgbWlnaHQgb3B0aW1pemUgaXQgZm9yIHNwZWNpZmljIHdvcmtsb2Fkcy4gSG9wZWZ1bGx5LCB0aGlzIEtjb25maWcgZW50cnkgd2lsbCBwcm92aWRlIHNvbWUgaW5zaWdodCBpbnRvIHRoZSByZWxldmFudCBvcHRpb25zLCB0aGVpciByZWxhdGlvbnNoaXBzLCBhbmQgcGVyaGFwcyBldmVuIHNvbWUgaGludHMgYWJvdXQgdGhlIHVuZGVybHlpbmcgaW1wbGljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTc1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzExNzU6XHRcdCAgVGhpcyBhZGRzIFBHX2lkbGUgYW5kIFBHX3lvdW5nIGZsYWdzIHRvICYjMzk7c3RydWN0IHBhZ2UmIzM5Oy4gIFBURSBBY2Nlc3NlZFxuMTE3NjpcdFx0ICBiaXQgd3JpdGVycyBjYW4gc2V0IHRoZSBzdGF0ZSBvZiB0aGUgYml0IGluIHRoZSBmbGFncyBzbyB0aGF0IFBURVxuMTE3NzpcdFx0ICBBY2Nlc3NlZCBiaXQgcmVhZGVycyBtYXkgYXZvaWQgZGlzdHVyYmFuY2UuXG4xMTc4Olx0XG4xMTc5Olx0Y29uZmlnIElETEVfUEFHRV9UUkFDS0lOR1xuMTE4MDpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgaWRsZSBwYWdlIHRyYWNraW5nXCYjMzQ7XG4xMTgxOlx0XHRkZXBlbmRzIG9uIFNZU0ZTIFx1MDAyNlx1MDAyNiBNTVVcbjExODI6XHRcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xuMTE4MzpcdFx0aGVscFxuMTE4NDpcdFx0ICBUaGlzIGZlYXR1cmUgYWxsb3dzIHRvIGVzdGltYXRlIHRoZSBhbW91bnQgb2YgdXNlciBwYWdlcyB0aGF0IGhhdmVcbjExODU6XHRcdCAgbm90IGJlZW4gdG91Y2hlZCBkdXJpbmcgYSBnaXZlbiBwZXJpb2Qgb2YgdGltZS4gVGhpcyBpbmZvcm1hdGlvbiBjYW5cbjExODY6XHRcdCAgYmUgdXNlZnVsIHRvIHR1bmUgbWVtb3J5IGNncm91cCBsaW1pdHMgYW5kL29yIGZvciBqb2IgcGxhY2VtZW50XG4xMTg3Olx0XHQgIHdpdGhpbiBhIGNvbXB1dGUgY2x1c3Rlci5cbjExODg6XHRcbjExODk6XHRcdCAgU2VlIERvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vaWRsZV9wYWdlX3RyYWNraW5nLnJzdCBmb3JcbjExOTA6XHRcdCAgbW9yZSBkZXRhaWxzLlxuMTE5MTpcdFxuMTE5MjpcdCMgQXJjaGl0ZWN0dXJlcyB3aGljaCBpbXBsZW1lbnQgY3B1X2RjYWNoZV9pc19hbGlhc2luZygpIHRvIHF1ZXJ5XG4xMTkzOlx0IyB3aGV0aGVyIHRoZSBkYXRhIGNhY2hlcyBhcmUgYWxpYXNlZCAoVklWVCBvciBWSVBUIHdpdGggZGNhY2hlXG4xMTk0Olx0IyBhbGlhc2luZykgbmVlZCB0byBzZWxlY3QgdGhpcy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDY6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIyMgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipFbmFibGluZyBJRExFX1BBR0VfVFJBQ0tJTkcqKgoKUmlnaHQsIHNvIHRoZSBjb25maWcgb3B0aW9uIEkmIzM5O20gd29ya2luZyB3aXRoIGlzIGBJRExFX1BBR0VfVFJBQ0tJTkdgLiBHb29kLiBUaGUgZGVwZW5kZW5jeSBjaGVjayBjb25maXJtcyB0aGF0IGl0IGhpbmdlcyBvbiBgU1lTRlMgJmFtcDsmYW1wOyBNTVVgLCBib3RoIG9mIHdoaWNoIGFyZSBlc3NlbnRpYWxseSBhbHdheXMgZW5hYmxlZC4gVGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQ7IG15IG1haW4gdGFzayBoZXJlIGlzIHRvIGVuc3VyZSBgSURMRV9QQUdFX1RSQUNLSU5HYCBpdHNlbGYgaXMgZW5hYmxlZC4gTm8gY29tcGxleCBwcmUtcmVxdWlzaXRlIGRhbmNlIHRvIHdvcnJ5IGFib3V0LgoKTm93LCBsZXQmIzM5O3MgemVybyBpbiBvbiB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LiBJIGtub3cgdGhlIGtleSBmdW5jdGlvbnMgdGhhdCBpbnRlcmFjdCB3aXRoIHRoaXMgZmVhdHVyZSBhcmUgYHBhZ2VfaWRsZV9nZXRfZm9saW9gLCBgcGFnZV9pZGxlX2JpdG1hcF9yZWFkYCwgYW5kIGBwYWdlX2lkbGVfYml0bWFwX3dyaXRlYC4gVGhlc2UgYXJlIHRoZSBjcml0aWNhbCBwaWVjZXMgdGhhdCBJIG5lZWQgdG8gYmUgaW50aW1hdGVseSBmYW1pbGlhciB3aXRoIGFzIEkgcmV2aWV3IHRoaXMgY29kZS4gVGhlc2UgbGlrZWx5IHJlcHJlc2VudCB0aGUgY29yZSBkYXRhIGFjY2VzcyBhbmQgbWFuaXB1bGF0aW9uIGZvciB0aGUgdHJhY2tpbmcgbWVjaGFuaXNtLgoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgcXVpY2tseSBnbGFuY2UgYXQgdGhlIHdpZGVyIGNvZGViYXNlIGFuZCBtYWtlIGEgcXVpY2sgbWVudGFsIG5vdGUgdGhhdCB0aGVyZSBhcmUgbGlrZWx5IG90aGVyIGZ1bmN0aW9ucyBpbnRlcmFjdGluZyB3aXRoIHRoZSBzYW1lIGZlYXR1cmUuIEl0IHBheXMgdG8ga2VlcCB0aGlzIGNvbnRleHQgaW4gbWluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDY6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFnZV9pZGxlX2dldF9mb2xpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3BhZ2VfaWRsZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3BhZ2VfaWRsZS5jLTMzLSAqL1xubW0vcGFnZV9pZGxlLmM6MzQ6c3RhdGljIHN0cnVjdCBmb2xpbyAqcGFnZV9pZGxlX2dldF9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbilcbm1tL3BhZ2VfaWRsZS5jLTM1LXtcbi0tXG5tbS9wYWdlX2lkbGUuYz0xMTg9c3RhdGljIHNzaXplX3QgcGFnZV9pZGxlX2JpdG1hcF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9wYWdlX2lkbGUuYy0xNDEtXHRcdFx0Km91dCA9IDBVTEw7XG5tbS9wYWdlX2lkbGUuYzoxNDI6XHRcdGZvbGlvID0gcGFnZV9pZGxlX2dldF9mb2xpbyhwZm4pO1xubW0vcGFnZV9pZGxlLmMtMTQzLVx0XHRpZiAoZm9saW8pIHtcbi0tXG5tbS9wYWdlX2lkbGUuYz0xNjM9c3RhdGljIHNzaXplX3QgcGFnZV9pZGxlX2JpdG1hcF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vcGFnZV9pZGxlLmMtMTg1LVx0XHRpZiAoKCppbiBcdTAwM2VcdTAwM2UgYml0KSBcdTAwMjYgMSkge1xubW0vcGFnZV9pZGxlLmM6MTg2Olx0XHRcdGZvbGlvID0gcGFnZV9pZGxlX2dldF9mb2xpbyhwZm4pO1xubW0vcGFnZV9pZGxlLmMtMTg3LVx0XHRcdGlmIChmb2xpbykge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwNjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODY5CgkJCQkJCQlvdXRwdXQ6IDE0OQoJCQkJCQkJdGhvdWdodHM6IDQxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZvbGlvIEFjcXVpc2l0aW9uIGFuZCBMUlUgQ2hlY2sgaW4gYHBhZ2VfaWRsZV9nZXRfZm9saW9gKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgaXQgc2VlbXMgbGlrZSBgcGFnZV9pZGxlX2JpdG1hcF9yZWFkYCBhbmQgYHBhZ2VfaWRsZV9iaXRtYXBfd3JpdGVgIGFyZSB0aGUgb25seSBmdW5jdGlvbnMgY2FsbGluZyB0aGlzLiBUaGUgY29kZSYjMzk7cyBiZWhhdmlvciBoYXMgYmVlbiBtb2RpZmllZCwgbGlrZWx5IHRvIGFkZHJlc3MgYSBidWcgb3IgZm9yIG9wdGltaXphdGlvbi4gTGV0JiMzOTtzIHRha2UgYSBjbG9zZXIgbG9vazogdGhlIG9yaWdpbmFsIGNvZGUgd291bGQgYmFpbCBvdXQgZWFybHkgaWYgdGhlIExSVSBmbGFnIHdhc24mIzM5O3Qgc2V0LiBUaGUgbmV3IHZlcnNpb24gKmFjcXVpcmVzKiBhIHJlZmVyZW5jZSB0byB0aGUgZm9saW8gZmlyc3QgdXNpbmcgYGZvbGlvX3RyeV9nZXRgLCAqdGhlbiogY2hlY2tzIHRoZSBMUlUgZmxhZy4gSWYgdGhlIExSVSBpc24mIzM5O3Qgc2V0LCB0aGUgcmVmZXJlbmNlIGlzIHJlbGVhc2VkLiBUaGlzIGNoYW5nZSBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24uIFdlJiMzOTtyZSBub3cgZW5zdXJpbmcgd2UgaG9sZCBhIHJlZmVyZW5jZSBiZWZvcmUgZXZhbHVhdGluZyB0aGUgTFJVIHN0YXRlLiBUaGUgaW50ZW50IGlzIHRvIGF2b2lkIGEgc2NlbmFyaW8gd2hlcmUgdGhlIExSVSBmbGFnIGNoYW5nZXMgYmV0d2VlbiB0aGUgaW5pdGlhbCBjaGVjayBhbmQgdGhlIGZvbGlvIGFjcXVpc2l0aW9uLCB3aGljaCBjb3VsZCBsZWFkIHRvIGluY29ycmVjdCBiZWhhdmlvci4KCkkmIzM5O20gdGhpbmtpbmcgdGhpcyBpcyB3b3J0aCBmdXp6aW5nLiBUaGUgY2hhbmdlIGlzIGRlZmluaXRlbHkgZnVuY3Rpb25hbC4gSSYjMzk7bGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFRvIGZvY3VzIHRoZSBmdXp6aW5nIGVmZm9ydHMsIEkmIzM5O2xsIHNwZWNpZnkgdGhlIHJlbGV2YW50IHN5bWJvbHMgYXMgYHBhZ2VfaWRsZV9nZXRfZm9saW9gLCBgcGFnZV9pZGxlX2JpdG1hcF9yZWFkYCwgYW5kIGBwYWdlX2lkbGVfYml0bWFwX3dyaXRlYC4gQW5kIHNpbmNlIHRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgc3lzZnMgaW50ZXJmYWNlLCBJJiMzOTtsbCBlbmFibGUgYElETEVfUEFHRV9UUkFDS0lOR2AuIE15IHJlYXNvbmluZyBpcyB0aGUgcGF0Y2gmIzM5O3MgbG9naWMgY2hhbmdlIHdpdGhpbiBgcGFnZV9pZGxlX2dldF9mb2xpb2AgaXMgZGlyZWN0bHkgcmVsZXZhbnQgdG8gdGhlIHN5c2ZzIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBvbiBgL3N5cy9rZXJuZWwvbW0vcGFnZV9pZGxlL2JpdG1hcGAuIEZ1enppbmcgdGhpcyB3aWxsIGFsbG93IHZlcmlmaWNhdGlvbiBvZiB0aGUgZml4IGZvciB0aGUgcmFjZSBjb25kaXRpb24gdGhlIHBhdGNoIGFkZHJlc3Nlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDY6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lETEVfUEFHRV9UUkFDS0lORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhZ2VfaWRsZV9nZXRfZm9saW8mIzM0OywKICAgICYjMzQ7cGFnZV9pZGxlX2JpdG1hcF9yZWFkJiMzNDssCiAgICAmIzM0O3BhZ2VfaWRsZV9iaXRtYXBfd3JpdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHN5bmNocm9uaXphdGlvbiBsb2dpYyBpbiBgcGFnZV9pZGxlX2dldF9mb2xpb2AgYnkgY2hhbmdpbmcgdGhlIG9yZGVyIG9mIGBmb2xpb190cnlfZ2V0YCBhbmQgYGZvbGlvX3Rlc3RfbHJ1YCBjaGVja3MuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBzeXNmcyByZWFkL3dyaXRlIG9wZXJhdGlvbnMgb24gYC9zeXMva2VybmVsL21tL3BhZ2VfaWRsZS9iaXRtYXBgLiBGdXp6aW5nIHRoZXNlIHN5c2ZzIGhhbmRsZXJzIGNhbiBoZWxwIHZlcmlmeSB0aGUgZml4IGZvciB0aGUgcmFjZSBjb25kaXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lETEVfUEFHRV9UUkFDS0lORyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhZ2VfaWRsZV9nZXRfZm9saW8mIzM0OywKICAgICYjMzQ7cGFnZV9pZGxlX2JpdG1hcF9yZWFkJiMzNDssCiAgICAmIzM0O3BhZ2VfaWRsZV9iaXRtYXBfd3JpdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHN5bmNocm9uaXphdGlvbiBsb2dpYyBpbiBgcGFnZV9pZGxlX2dldF9mb2xpb2AgYnkgY2hhbmdpbmcgdGhlIG9yZGVyIG9mIGBmb2xpb190cnlfZ2V0YCBhbmQgYGZvbGlvX3Rlc3RfbHJ1YCBjaGVja3MuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBzeXNmcyByZWFkL3dyaXRlIG9wZXJhdGlvbnMgb24gYC9zeXMva2VybmVsL21tL3BhZ2VfaWRsZS9iaXRtYXBgLiBGdXp6aW5nIHRoZXNlIHN5c2ZzIGhhbmRsZXJzIGNhbiBoZWxwIHZlcmlmeSB0aGUgZml4IGZvciB0aGUgcmFjZSBjb25kaXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNjozOToyMC45MTI2Mzg4NjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTYwMTU1Mjc2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJRExFX1BBR0VfVFJBQ0tJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwYWdlX2lkbGVfZ2V0X2ZvbGlvXCIsXG4gICAgXCJwYWdlX2lkbGVfYml0bWFwX3JlYWRcIixcbiAgICBcInBhZ2VfaWRsZV9iaXRtYXBfd3JpdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIGluIGBwYWdlX2lkbGVfZ2V0X2ZvbGlvYCBieSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgYGZvbGlvX3RyeV9nZXRgIGFuZCBgZm9saW9fdGVzdF9scnVgIGNoZWNrcy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN5c2ZzIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBvbiBgL3N5cy9rZXJuZWwvbW0vcGFnZV9pZGxlL2JpdG1hcGAuIEZ1enppbmcgdGhlc2Ugc3lzZnMgaGFuZGxlcnMgY2FuIGhlbHAgdmVyaWZ5IHRoZSBmaXggZm9yIHRoZSByYWNlIGNvbmRpdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDY6Mzk6MjAuOTEyNjQ0OTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNzYwNTQ5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGUyOTM2NjExZTE3YzVmNjA3MzRhMTZjODMyODYyZjU1YjZkZGI1NWZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMjMgMDY6Mzk6MTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vcGFnZV9pZGxlLmMgYi9tbS9wYWdlX2lkbGUuY1xcbmluZGV4IDljNjdjYmFjMjk2NTk4Li4yOWVlMThmMGU4Y2UwMiAxMDA2NDRcXG4tLS0gYS9tbS9wYWdlX2lkbGUuY1xcbisrKyBiL21tL3BhZ2VfaWRsZS5jXFxuQEAgLTQwLDkgKzQwLDkgQEAgc3RhdGljIHN0cnVjdCBmb2xpbyAqcGFnZV9pZGxlX2dldF9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbilcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbiBcXHRmb2xpbyA9IHBhZ2VfZm9saW8ocGFnZSk7XFxuLVxcdGlmICghZm9saW9fdGVzdF9scnUoZm9saW8pIHx8ICFmb2xpb190cnlfZ2V0KGZvbGlvKSlcXG4rXFx0aWYgKCFmb2xpb190cnlfZ2V0KGZvbGlvKSlcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuLVxcdGlmICh1bmxpa2VseShwYWdlX2ZvbGlvKHBhZ2UpICE9IGZvbGlvIHx8ICFmb2xpb190ZXN0X2xydShmb2xpbykpKSB7XFxuK1xcdGlmICh1bmxpa2VseShwYWdlX2ZvbGlvKHBhZ2UpICE9IGZvbGlvKSB8fCAhZm9saW9fdGVzdF9scnUoZm9saW8pKSB7XFxuIFxcdFxcdGZvbGlvX3B1dChmb2xpbyk7XFxuIFxcdFxcdGZvbGlvID0gTlVMTDtcXG4gXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNjozOToyMS4zMzA3NzA3OTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0NTE4MzQxMTg4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJRExFX1BBR0VfVFJBQ0tJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwYWdlX2lkbGVfZ2V0X2ZvbGlvXCIsXG4gICAgXCJwYWdlX2lkbGVfYml0bWFwX3JlYWRcIixcbiAgICBcInBhZ2VfaWRsZV9iaXRtYXBfd3JpdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIGluIGBwYWdlX2lkbGVfZ2V0X2ZvbGlvYCBieSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgYGZvbGlvX3RyeV9nZXRgIGFuZCBgZm9saW9fdGVzdF9scnVgIGNoZWNrcy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN5c2ZzIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBvbiBgL3N5cy9rZXJuZWwvbW0vcGFnZV9pZGxlL2JpdG1hcGAuIEZ1enppbmcgdGhlc2Ugc3lzZnMgaGFuZGxlcnMgY2FuIGhlbHAgdmVyaWZ5IHRoZSBmaXggZm9yIHRoZSByYWNlIGNvbmRpdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlMjkzNjYxMWUxN2M1ZjYwNzM0YTE2YzgzMjg2MmY1NWI2ZGRiNTVmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMDY6Mzk6MTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9wYWdlX2lkbGUuYyBiL21tL3BhZ2VfaWRsZS5jXG5pbmRleCA5YzY3Y2JhYzI5NjU5OC4uMjllZTE4ZjBlOGNlMDIgMTAwNjQ0XG4tLS0gYS9tbS9wYWdlX2lkbGUuY1xuKysrIGIvbW0vcGFnZV9pZGxlLmNcbkBAIC00MCw5ICs0MCw5IEBAIHN0YXRpYyBzdHJ1Y3QgZm9saW8gKnBhZ2VfaWRsZV9nZXRfZm9saW8odW5zaWduZWQgbG9uZyBwZm4pXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0Zm9saW8gPSBwYWdlX2ZvbGlvKHBhZ2UpO1xuLVx0aWYgKCFmb2xpb190ZXN0X2xydShmb2xpbykgfHwgIWZvbGlvX3RyeV9nZXQoZm9saW8pKVxuK1x0aWYgKCFmb2xpb190cnlfZ2V0KGZvbGlvKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4tXHRpZiAodW5saWtlbHkocGFnZV9mb2xpbyhwYWdlKSAhPSBmb2xpbyB8fCAhZm9saW9fdGVzdF9scnUoZm9saW8pKSkge1xuK1x0aWYgKHVubGlrZWx5KHBhZ2VfZm9saW8ocGFnZSkgIT0gZm9saW8pIHx8ICFmb2xpb190ZXN0X2xydShmb2xpbykpIHtcbiBcdFx0Zm9saW9fcHV0KGZvbGlvKTtcbiBcdFx0Zm9saW8gPSBOVUxMO1xuIFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDY6Mzk6MjEuMzMwNzcxOTg3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA1NDU2NTgzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgUGFnZSBJZGxlIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYG1tL3BhZ2VfaWRsZS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgcGFnZV9pZGxlX2dldF9mb2xpb2AgZnVuY3Rpb24uIExldCdzIGJyZWFrIGRvd24gdGhpcyBkaWZmLiBJbml0aWFsbHksIEkgc2F3IHNvbWUgc3RyYWlnaHRmb3J3YXJkIGxvZ2ljIGFsdGVyYXRpb24sIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGBmb2xpb190cnlfZ2V0YCBhbmQgYGZvbGlvX3Rlc3RfbHJ1YCBjYWxscy4gSXQgbG9va2VkIGxpa2UgdGhlIHBhdGNoIGp1c3QgbW92ZWQgdGhlIGAhZm9saW9fdGVzdF9scnUoZm9saW8pYCBjaGVjayBmcm9tIGJlZm9yZSB0aGUgYHRyeV9nZXRgIHRvIGFmdGVyLiBCdXQgaG9sZCBvbi4uLiB0aGUgKnNlY29uZCogYGlmYCBzdGF0ZW1lbnQgYWxyZWFkeSBoYWQgYCFmb2xpb190ZXN0X2xydShmb2xpbylgIVxuXG5Pa2F5LCBJIHNlZSBpdCBub3cuIFRoZSBjcnVjaWFsIGNoYW5nZSBpcyB0aGF0IHRoZSBgdW5saWtlbHlgIG1hY3JvIGlzIG9ubHkgd3JhcHBpbmcgYHBhZ2VfZm9saW8ocGFnZSkgIT0gZm9saW9gIGluIHRoZSBtb2RpZmllZCBjb2RlLiBUaGUgb3JpZ2luYWwgYGlmYCBjb25kaXRpb24gd2FzIGxvbmdlci4gU28gdGhlIGZpcnN0IGBpZmAgc3RhdGVtZW50ICpsb3N0KiB0aGF0IGAhZm9saW9fdGVzdF9scnUoZm9saW8pYCBjb25kaXRpb24uIE1ha2VzIHNlbnNlLi4uIE5vdyBJIG5lZWQgdG8gc2VlIHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIG1pZ2h0IGJlIGluIHBsYXkgaGVyZS4gVGltZSB0byBqdW1wIGludG8gYG1tL3BhZ2VfaWRsZS5jYCBhbmQgZmlndXJlIG91dCB0aGUgY29uZGl0aW9uYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTM3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDY6Mzk6MjcuMzg1MzM5OTIyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDY1NDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2VfaWRsZV9nZXRfZm9saW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vcGFnZV9pZGxlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vcGFnZV9pZGxlLmMtMzMtICovXFxubW0vcGFnZV9pZGxlLmM6MzQ6c3RhdGljIHN0cnVjdCBmb2xpbyAqcGFnZV9pZGxlX2dldF9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbilcXG5tbS9wYWdlX2lkbGUuYy0zNS17XFxuLS1cXG5tbS9wYWdlX2lkbGUuYz0xMTg9c3RhdGljIHNzaXplX3QgcGFnZV9pZGxlX2JpdG1hcF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL3BhZ2VfaWRsZS5jLTE0MS1cXHRcXHRcXHQqb3V0ID0gMFVMTDtcXG5tbS9wYWdlX2lkbGUuYzoxNDI6XFx0XFx0Zm9saW8gPSBwYWdlX2lkbGVfZ2V0X2ZvbGlvKHBmbik7XFxubW0vcGFnZV9pZGxlLmMtMTQzLVxcdFxcdGlmIChmb2xpbykge1xcbi0tXFxubW0vcGFnZV9pZGxlLmM9MTYzPXN0YXRpYyBzc2l6ZV90IHBhZ2VfaWRsZV9iaXRtYXBfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vcGFnZV9pZGxlLmMtMTg1LVxcdFxcdGlmICgoKmluIFxcdTAwM2VcXHUwMDNlIGJpdCkgXFx1MDAyNiAxKSB7XFxubW0vcGFnZV9pZGxlLmM6MTg2OlxcdFxcdFxcdGZvbGlvID0gcGFnZV9pZGxlX2dldF9mb2xpbyhwZm4pO1xcbm1tL3BhZ2VfaWRsZS5jLTE4Ny1cXHRcXHRcXHRpZiAoZm9saW8pIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDY6Mzk6MjcuNDQyODA5MDIxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1OTc1Nzk3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkxvY2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIGZvciBgbW0vcGFnZV9pZGxlLmNgKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBteSBoYW5kcyBvbiB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIGBtbS9wYWdlX2lkbGUuY2AuIFRoYXQncyB0aGUgbW9kdWxlIEknbSBpbnRlcmVzdGVkIGluIHJpZ2h0IG5vdy4gVGhlIGZpcnN0IHRoaW5nIEknbGwgZG8gaXMgZmlndXJlIG91dCB3aGVyZSB0aGF0IGNvbmZpZ3VyYXRpb24gbGl2ZXMuIElzIGl0IGEga2VybmVsIGNvbmZpZyBvcHRpb24/IEEgYnVpbGQtdGltZSBmbGFnPyBBIHJ1bnRpbWUgcGFyYW1ldGVyPyBNeSBndXQgc2F5cyBpdCdzIGxpa2VseSBhIGBLY29uZmlnYCBvcHRpb24gc29tZXdoZXJlLCBidXJpZWQgZGVlcCBpbiB0aGUga2VybmVsIHRyZWUuIEknbGwgbmVlZCB0byBsb2NhdGUgdGhlIHJpZ2h0IGZpbGUuIEknbSB0aGlua2luZyBJIGNhbiBzdGFydCBieSB1c2luZyBgZmluZGAgb3IgYGdyZXBgIHRvIHF1aWNrbHkgc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgZm9yIGEgcmVsZXZhbnQgYEtjb25maWdgIGZpbGUuIEknbGwgcHJvYmFibHkgbG9vayBmb3Iga2V5d29yZHMgbGlrZSBcInBhZ2VfaWRsZSxcIiBcImlkbGUsXCIgb3IgZXZlbiBcIm1lbW9yeSBtYW5hZ2VtZW50XCIgdG8gbmFycm93IGl0IGRvd24uIE9uY2UgSSBoYXZlIGEgZmV3IGNhbmRpZGF0ZSBmaWxlcywgSSdsbCBleGFtaW5lIHRoZW0gY2xvc2VseS4gSSdsbCBiZSBsb29raW5nIGZvciB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24gYXNzb2NpYXRlZCB3aXRoIGBtbS9wYWdlX2lkbGUuY2AsIG5vdGluZyB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgYW5kIGFueSBvdGhlciByZWxldmFudCBjb250ZXh0dWFsIGluZm9ybWF0aW9uIGl0IHByb3ZpZGVzLiBJdCdzIGEgcXVpY2sgcHJvY2VzcywgYnV0IGl0IHJlcXVpcmVzIGEgc3lzdGVtYXRpYyBhcHByb2FjaCB0byBtYWtlIHN1cmUgdGhhdCBJJ20gbG9va2luZyBhdCB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIG9wdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg3NywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA2OjM5OjMxLjEwMjU2ODU3OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTQ2NTc5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWdlX2lkbGUub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9NYWtlZmlsZT0xMzE9b2JqLSQoQ09ORklHX1VTRVJGQVVMVEZEKSArPSB1c2VyZmF1bHRmZC5vXFxubW0vTWFrZWZpbGU6MTMyOm9iai0kKENPTkZJR19JRExFX1BBR0VfVFJBQ0tJTkcpICs9IHBhZ2VfaWRsZS5vXFxubW0vTWFrZWZpbGUtMTMzLW9iai0kKENPTkZJR19ERUJVR19QQUdFQUxMT0MpICs9IGRlYnVnX3BhZ2VfYWxsb2Mub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNjozOTozMS4xNTgwNDE2NzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDg5NTc3MjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSWRsZSBQYWdlIFRyYWNraW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBwbGF5IGhlcmUgaXMgYElETEVfUEFHRV9UUkFDS0lOR2AuIFRoYXQncyB0aGUga2V5LiBOb3csIGl0IGxvb2tzIGxpa2UgdGhlIGZ1bmN0aW9uIGBwYWdlX2lkbGVfZ2V0X2ZvbGlvYCBpcyB0aGUgd29ya2hvcnNlIGJlaGluZCB0aGlzLCBhbmQgaXQncyBiZWluZyBjYWxsZWQgYnkgYm90aCBgcGFnZV9pZGxlX2JpdG1hcF9yZWFkYCBhbmQgYHBhZ2VfaWRsZV9iaXRtYXBfd3JpdGVgLiBSaWdodCwgdGhvc2UgdHdvIGZ1bmN0aW9ucyBhcmUgdGhlIHN5c2ZzIG9wZXJhdGlvbnMgaW52b2x2ZWQgd2l0aCBpZGxlIHBhZ2UgdHJhY2tpbmcuIFRoYXQgbWFrZXMgc2Vuc2UsIHN5c2ZzIGJlaW5nIHRoZSBpbnRlcmZhY2UgZm9yIGNvbnRyb2wgYW5kIGluc3BlY3Rpb24uIE15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIGRpZyBpbnRvIGBwYWdlX2lkbGVfYml0bWFwX3JlYWRgIGFuZCBgcGFnZV9pZGxlX2JpdG1hcF93cml0ZWAgdG8gc2VlIGV4YWN0bHkgaG93IHRoZXkncmUgbGV2ZXJhZ2luZyBgcGFnZV9pZGxlX2dldF9mb2xpb2AgYW5kIHdoYXQgdGhleSdyZSBhY3R1YWxseSBkb2luZy4gVGhhdCdzIHdoZXJlIHRoZSByZWFsIGRldGFpbCB3aWxsIGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjgxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDY6Mzk6MzQuNjQ3NjIwNjkyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MzkxNTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2VfaWRsZV9iaXRtYXBfcmVhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9wYWdlX2lkbGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9wYWdlX2lkbGUuYz05Nz1zdGF0aWMgdm9pZCBwYWdlX2lkbGVfY2xlYXJfcHRlX3JlZnMoc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL3BhZ2VfaWRsZS5jLTExNy1cXG5tbS9wYWdlX2lkbGUuYzoxMTg6c3RhdGljIHNzaXplX3QgcGFnZV9pZGxlX2JpdG1hcF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcXG5tbS9wYWdlX2lkbGUuYy0xMTktXFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmLFxcbi0tXFxubW0vcGFnZV9pZGxlLmM9MjAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSBwYWdlX2lkbGVfYml0bWFwX2F0dHIgPVxcbm1tL3BhZ2VfaWRsZS5jLTIwMS1cXHRcXHRfX0JJTl9BVFRSKGJpdG1hcCwgMDYwMCxcXG5tbS9wYWdlX2lkbGUuYzoyMDI6XFx0XFx0XFx0ICAgcGFnZV9pZGxlX2JpdG1hcF9yZWFkLCBwYWdlX2lkbGVfYml0bWFwX3dyaXRlLCAwKTtcXG5tbS9wYWdlX2lkbGUuYy0yMDMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA2OjM5OjM0LjcwNTAxNjAxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA1NzYyODU1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQml0bWFwJ3MgVXNhZ2UqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZGVhbGluZyB3aXRoIHRoaXMgYGJpdG1hcGAgc3lzZnMgZmlsZSwgd2hpY2ggSSBrbm93IGlzIGhhbmdpbmcgb2ZmIHNvbWUga2VybmVsIG9iamVjdCAoYGtvYmpgKS4gVGhlIGtleSBxdWVzdGlvbiBub3cgaXMsIHdoYXQncyBpbnRlcmFjdGluZyB3aXRoIHRoaXMgdGhpbmc/IEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSB1c2FnZSBvZiBgcGFnZV9pZGxlX2JpdG1hcF9hdHRyYC4gVGltZSB0byBkbyBzb21lIGRpZ2dpbmcgYW5kIHNlZSB3aGVyZSB0aGlzIHNwZWNpZmljIGF0dHJpYnV0ZSBpcyBiZWluZyBlbXBsb3llZCB3aXRoaW4gdGhlIGtlcm5lbCBjb2RlLiBMZXQncyB0cmFjZSB0aGF0IHVzYWdlIGFuZCB1bmRlcnN0YW5kIGl0cyByb2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzk4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDY6Mzk6MzcuNzYyNjQ3MjA4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTQyOTk5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWdlX2lkbGVfYml0bWFwX2F0dHJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vcGFnZV9pZGxlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vcGFnZV9pZGxlLmM9MTYzPXN0YXRpYyBzc2l6ZV90IHBhZ2VfaWRsZV9iaXRtYXBfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vcGFnZV9pZGxlLmMtMTk5LVxcbm1tL3BhZ2VfaWRsZS5jOjIwMDpzdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgcGFnZV9pZGxlX2JpdG1hcF9hdHRyID1cXG5tbS9wYWdlX2lkbGUuYy0yMDEtXFx0XFx0X19CSU5fQVRUUihiaXRtYXAsIDA2MDAsXFxuLS1cXG5tbS9wYWdlX2lkbGUuYz0yMDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlICpjb25zdCBwYWdlX2lkbGVfYmluX2F0dHJzW10gPSB7XFxubW0vcGFnZV9pZGxlLmM6MjA1OlxcdFxcdTAwMjZwYWdlX2lkbGVfYml0bWFwX2F0dHIsXFxubW0vcGFnZV9pZGxlLmMtMjA2LVxcdE5VTEwsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA2OjM5OjM3LjgxODA4MjM3NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODM2NzIxNjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgYHBhZ2VfaWRsZV9iaW5fYXR0cnNgIFVzYWdlKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBtZW50YWwgY2hlY2tsaXN0IHN0YXJ0cyB3aXRoIGZpZ3VyaW5nIG91dCB3aGVyZSBgcGFnZV9pZGxlX2Jpbl9hdHRyc2AgaXMgYWN0dWFsbHkgdXRpbGl6ZWQgd2l0aGluIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byB0cmFjZSBpdHMgdXNhZ2UgcGF0dGVybnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBXaGVyZSBhcmUgdGhlIHJlYWRzPyBXaGVyZSBhcmUgdGhlIHdyaXRlcz8gV2hhdCBmdW5jdGlvbnMgY2FsbCBpdD8gV2hhdCBmdW5jdGlvbnMgZG9lcyBpdCBjYWxsPyBLbm93aW5nIHRoZSBjYWxsc2l0ZXMgd2lsbCBwcm92aWRlIHRoZSBpbnNpZ2h0cyBJIG5lZWQgdG8gZXZhbHVhdGUgdGhlIGltcGFjdCBvZiB0aGlzIHN0cnVjdHVyZS4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHN0YXJ0IGh1bnRpbmcgZG93biB0aG9zZSByZWZlcmVuY2VzLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE3MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA2OjM5OjQwLjY1NDgwNjExWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTM1MTMyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYWdlX2lkbGVfYmluX2F0dHJzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3BhZ2VfaWRsZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3BhZ2VfaWRsZS5jPTIwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgcGFnZV9pZGxlX2JpdG1hcF9hdHRyID1cXG4tLVxcbm1tL3BhZ2VfaWRsZS5jLTIwMy1cXG5tbS9wYWdlX2lkbGUuYzoyMDQ6c3RhdGljIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlICpjb25zdCBwYWdlX2lkbGVfYmluX2F0dHJzW10gPSB7XFxubW0vcGFnZV9pZGxlLmMtMjA1LVxcdFxcdTAwMjZwYWdlX2lkbGVfYml0bWFwX2F0dHIsXFxuLS1cXG5tbS9wYWdlX2lkbGUuYz0yMDk9c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgcGFnZV9pZGxlX2F0dHJfZ3JvdXAgPSB7XFxubW0vcGFnZV9pZGxlLmM6MjEwOlxcdC5iaW5fYXR0cnMgPSBwYWdlX2lkbGVfYmluX2F0dHJzLFxcbm1tL3BhZ2VfaWRsZS5jLTIxMS1cXHQubmFtZSA9IFxcXCJwYWdlX2lkbGVcXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNjozOTo0MC43MTAxNjE0MDhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjczNzM2MDM0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkludmVzdGlnYXRpbmcgYHBhZ2VfaWRsZV9hdHRyX2dyb3VwYCBVc2FnZSoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSBzY29wZSBhbmQgaW1wbGljYXRpb25zIG9mIGBwYWdlX2lkbGVfYXR0cl9ncm91cGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0ICp3aGVyZSogdGhpcyBpcyBhY3R1YWxseSBiZWluZyB1c2VkIHdpdGhpbiB0aGUgc3lzdGVtLiBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGNyaXRpY2FsIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHJvbGUgYW5kIGhvdyBhbnkgY2hhbmdlcyBtaWdodCByaXBwbGUgdGhyb3VnaCB0aGUgY29kZS4gSSBuZWVkIHRvIHRyYWNlIGl0cyByZWZlcmVuY2VzIHRvIGdldCBhIHNlbnNlIG9mIGl0cyBpbXBhY3QuIFdoZXJlIGlzIHRoaXMgdGhpbmcgYWN0dWFsbHkgKmhvb2tlZCogaW50byB0aGUgYXJjaGl0ZWN0dXJlPyBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NDQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNjozOTo0My40NDc1MjM4NzZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NzczODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2VfaWRsZV9hdHRyX2dyb3VwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3BhZ2VfaWRsZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3BhZ2VfaWRsZS5jPTIwND1zdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgKmNvbnN0IHBhZ2VfaWRsZV9iaW5fYXR0cnNbXSA9IHtcXG4tLVxcbm1tL3BhZ2VfaWRsZS5jLTIwOC1cXG5tbS9wYWdlX2lkbGUuYzoyMDk6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgcGFnZV9pZGxlX2F0dHJfZ3JvdXAgPSB7XFxubW0vcGFnZV9pZGxlLmMtMjEwLVxcdC5iaW5fYXR0cnMgPSBwYWdlX2lkbGVfYmluX2F0dHJzLFxcbi0tXFxubW0vcGFnZV9pZGxlLmM9MjE0PXN0YXRpYyBpbnQgX19pbml0IHBhZ2VfaWRsZV9pbml0KHZvaWQpXFxuLS1cXG5tbS9wYWdlX2lkbGUuYy0yMTctXFxubW0vcGFnZV9pZGxlLmM6MjE4OlxcdGVyciA9IHN5c2ZzX2NyZWF0ZV9ncm91cChtbV9rb2JqLCBcXHUwMDI2cGFnZV9pZGxlX2F0dHJfZ3JvdXApO1xcbm1tL3BhZ2VfaWRsZS5jLTIxOS1cXHRpZiAoZXJyKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA2OjM5OjQzLjUwNzMwMzM2NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjEwMjA3MjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgU3l6a2FsbGVyIEZ1enppbmcgVGFyZ2V0cyBmb3IgSWRsZSBQYWdlIFRyYWNraW5nKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGAvc3lzL2tlcm5lbC9tbS9wYWdlX2lkbGUvYml0bWFwYCB0aGluZy4gVGhpcyBzY3JlYW1zIFwic3lzZnMgZmlsZVwiIHRvIG1lLCBhbmQgdGhhdCBtZWFucyBpdCdzIGZhaXIgZ2FtZSBmb3Igc3l6a2FsbGVyLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hhdCBJJ20gbG9va2luZyBmb3IuIFRoZSBjcnVjaWFsIGZ1bmN0aW9ucyBoZXJlLCB0aGUgb25lcyB0aGF0IGhhbmRsZSB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGlzIHN5c2ZzIGVudHJ5LCBhcmUgYHBhZ2VfaWRsZV9iaXRtYXBfcmVhZGAgYW5kIGBwYWdlX2lkbGVfYml0bWFwX3dyaXRlYC4gVGhvc2UgYXJlIHRoZSBwcmltZSBzdXNwZWN0cywgdGhlIGVudHJ5IHBvaW50cyBJIHdhbnQgdG8ga2VlcCBhbiBleWUgb24uXG5cbldhaXQgYSBzZWNvbmQsIHRoZXJlJ3MgYWxzbyBgcGFnZV9pZGxlX2dldF9mb2xpb2AgaW52b2x2ZWQgaW4gdGhpcywgSSByZW1lbWJlciByZWFkaW5nIGFib3V0IGl0IGluIGNvbnRleHQgd2l0aCB0aGUgYml0bWFwLiBPa2F5LCBsZXQncyBpbmNsdWRlIGl0IGZvciBjb25zaWRlcmF0aW9uLlxuXG5Ib2xkIHVwIGEgbWludXRlLi4uIGlzbid0IGBwYWdlX2lkbGVfZ2V0X2ZvbGlvYCBkZWNsYXJlZCBhcyBgc3RhdGljYD8gVGhhdCBtaWdodCBiZSBhIHByb2JsZW0uIFN0YXRpYyBmdW5jdGlvbnMgc29tZXRpbWVzIGRvbid0IG1ha2UgaXQgaW50byB0aGUgc3ltYm9sIHRhYmxlLCBvciBzeXprYWxsZXIgbWlnaHQgbm90IGJlIGFibGUgdG8gdGFyZ2V0IHRoZW0gZGlyZWN0bHkuIEl0J3Mgc3RpbGwgd29ydGggbGlzdGluZyBpdCwgdGhvdWdoLCBhcyBpdCdzIG1vZGlmaWVkIGFuZCBtaWdodCBiZSBjYWxsZWQgaW4gdGhlIGNvbnRleHQgb2YgYHBhZ2VfaWRsZV9iaXRtYXBfcmVhZGAgYW5kIGBwYWdlX2lkbGVfYml0bWFwX3dyaXRlYC5cblxuQWxyaWdodCwgYmFjayB0byB0aGUgcHJpbWFyeSB0YXJnZXRzLiBEZWZpbml0ZWx5IGxpc3RpbmcgYHBhZ2VfaWRsZV9iaXRtYXBfcmVhZGAgYW5kIGBwYWdlX2lkbGVfYml0bWFwX3dyaXRlYCBmb3IgY2xvc2VyIHNjcnV0aW55LiBJIHRoaW5rIHRoZXkgYXJlIGdvaW5nIHRvIGJlIHRoZSBwbGFjZXMgdG8gc3RhcnQuXG5cbk5vdywgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBgSURMRV9QQUdFX1RSQUNLSU5HYC4gQXJlIHRoZXJlIGFueSBkZXBlbmRlbmNpZXM/IEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgYElETEVfUEFHRV9UUkFDS0lOR2AgaXNuJ3QgZGVwZW5kZW50IG9uIHNvbWUgb3RoZXIgZmVhdHVyZSB0aGF0IGNvdWxkIGVpdGhlciBibG9jayBmdXp6aW5nIGNvbXBsZXRlbHksIG9yIGFsbG93IGZvciBzb21lIG1vcmUgaW50ZXJlc3RpbmcgZnV6emluZyB0YXJnZXRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTMyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA2OjM5OjQ4LjcxNzUxMjYwNloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgxODM2NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElETEVfUEFHRV9UUkFDS0lOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTE3MT1jb25maWcgUEFHRV9JRExFX0ZMQUdcXG4tLVxcbm1tL0tjb25maWctMTE3OC1cXG5tbS9LY29uZmlnOjExNzk6Y29uZmlnIElETEVfUEFHRV9UUkFDS0lOR1xcbm1tL0tjb25maWctMTE4MC1cXHRib29sIFxcXCJFbmFibGUgaWRsZSBwYWdlIHRyYWNraW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNjozOTo0OC43NzU3MDE0NDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1OTQ1MzM3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjb25maWd1cmF0aW9uIHNwYWNlIGJldHRlci4gTGV0J3Mgc3RhcnQgYnkgemVyb2luZyBpbiBvbiBhIGNydWNpYWwgZmlsZSwgc3BlY2lmaWNhbGx5IGBtbS9LY29uZmlnYCwgYW5kIGxldCdzIGdvIHN0cmFpZ2h0IHRvIGxpbmUgMTE3OS4gSSdtIGFzc3VtaW5nIHRoYXQgaXQgd2lsbCBiZSBhIG1ham9yIHBhcnQgb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IG9wdGlvbnMgYW5kIGZlYXR1cmVzLCBzbyBJJ20gaG9waW5nIHRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgYSBwYXJ0aWN1bGFyIGZlYXR1cmUgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCBhbmQgYW55IGRlcGVuZGVuY2llcy4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBmaWd1cmluZyBvdXQgaG93IHRoaXMgcGFydGljdWxhciBhc3BlY3QgcmVsYXRlcyB0byBwZXJmb3JtYW5jZS4gS25vd2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUga2VybmVsIGlzIGhhbmRsaW5nIG1lbW9yeSBtYW5hZ2VtZW50LCBpbiBwYXJ0aWN1bGFyIGhvdyBJIG1pZ2h0IG9wdGltaXplIGl0IGZvciBzcGVjaWZpYyB3b3JrbG9hZHMuIEhvcGVmdWxseSwgdGhpcyBLY29uZmlnIGVudHJ5IHdpbGwgcHJvdmlkZSBzb21lIGluc2lnaHQgaW50byB0aGUgcmVsZXZhbnQgb3B0aW9ucywgdGhlaXIgcmVsYXRpb25zaGlwcywgYW5kIHBlcmhhcHMgZXZlbiBzb21lIGhpbnRzIGFib3V0IHRoZSB1bmRlcmx5aW5nIGltcGxpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY0MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA2OjM5OjUyLjEzNTE1Nzc4MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTc1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMTc1OlxcdFxcdCAgVGhpcyBhZGRzIFBHX2lkbGUgYW5kIFBHX3lvdW5nIGZsYWdzIHRvICdzdHJ1Y3QgcGFnZScuICBQVEUgQWNjZXNzZWRcXG4xMTc2OlxcdFxcdCAgYml0IHdyaXRlcnMgY2FuIHNldCB0aGUgc3RhdGUgb2YgdGhlIGJpdCBpbiB0aGUgZmxhZ3Mgc28gdGhhdCBQVEVcXG4xMTc3OlxcdFxcdCAgQWNjZXNzZWQgYml0IHJlYWRlcnMgbWF5IGF2b2lkIGRpc3R1cmJhbmNlLlxcbjExNzg6XFx0XFxuMTE3OTpcXHRjb25maWcgSURMRV9QQUdFX1RSQUNLSU5HXFxuMTE4MDpcXHRcXHRib29sIFxcXCJFbmFibGUgaWRsZSBwYWdlIHRyYWNraW5nXFxcIlxcbjExODE6XFx0XFx0ZGVwZW5kcyBvbiBTWVNGUyBcXHUwMDI2XFx1MDAyNiBNTVVcXG4xMTgyOlxcdFxcdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xcbjExODM6XFx0XFx0aGVscFxcbjExODQ6XFx0XFx0ICBUaGlzIGZlYXR1cmUgYWxsb3dzIHRvIGVzdGltYXRlIHRoZSBhbW91bnQgb2YgdXNlciBwYWdlcyB0aGF0IGhhdmVcXG4xMTg1OlxcdFxcdCAgbm90IGJlZW4gdG91Y2hlZCBkdXJpbmcgYSBnaXZlbiBwZXJpb2Qgb2YgdGltZS4gVGhpcyBpbmZvcm1hdGlvbiBjYW5cXG4xMTg2OlxcdFxcdCAgYmUgdXNlZnVsIHRvIHR1bmUgbWVtb3J5IGNncm91cCBsaW1pdHMgYW5kL29yIGZvciBqb2IgcGxhY2VtZW50XFxuMTE4NzpcXHRcXHQgIHdpdGhpbiBhIGNvbXB1dGUgY2x1c3Rlci5cXG4xMTg4OlxcdFxcbjExODk6XFx0XFx0ICBTZWUgRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9pZGxlX3BhZ2VfdHJhY2tpbmcucnN0IGZvclxcbjExOTA6XFx0XFx0ICBtb3JlIGRldGFpbHMuXFxuMTE5MTpcXHRcXG4xMTkyOlxcdCMgQXJjaGl0ZWN0dXJlcyB3aGljaCBpbXBsZW1lbnQgY3B1X2RjYWNoZV9pc19hbGlhc2luZygpIHRvIHF1ZXJ5XFxuMTE5MzpcXHQjIHdoZXRoZXIgdGhlIGRhdGEgY2FjaGVzIGFyZSBhbGlhc2VkIChWSVZUIG9yIFZJUFQgd2l0aCBkY2FjaGVcXG4xMTk0OlxcdCMgYWxpYXNpbmcpIG5lZWQgdG8gc2VsZWN0IHRoaXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA2OjM5OjUyLjEzNTMxNzg5MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzA5NjEwNjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqRW5hYmxpbmcgSURMRV9QQUdFX1RSQUNLSU5HKipcblxuUmlnaHQsIHNvIHRoZSBjb25maWcgb3B0aW9uIEknbSB3b3JraW5nIHdpdGggaXMgYElETEVfUEFHRV9UUkFDS0lOR2AuIEdvb2QuIFRoZSBkZXBlbmRlbmN5IGNoZWNrIGNvbmZpcm1zIHRoYXQgaXQgaGluZ2VzIG9uIGBTWVNGUyBcdTAwMjZcdTAwMjYgTU1VYCwgYm90aCBvZiB3aGljaCBhcmUgZXNzZW50aWFsbHkgYWx3YXlzIGVuYWJsZWQuIFRoYXQncyBzdHJhaWdodGZvcndhcmQ7IG15IG1haW4gdGFzayBoZXJlIGlzIHRvIGVuc3VyZSBgSURMRV9QQUdFX1RSQUNLSU5HYCBpdHNlbGYgaXMgZW5hYmxlZC4gTm8gY29tcGxleCBwcmUtcmVxdWlzaXRlIGRhbmNlIHRvIHdvcnJ5IGFib3V0LlxuXG5Ob3csIGxldCdzIHplcm8gaW4gb24gdGhlIGNvcmUgZnVuY3Rpb25hbGl0eS4gSSBrbm93IHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgaW50ZXJhY3Qgd2l0aCB0aGlzIGZlYXR1cmUgYXJlIGBwYWdlX2lkbGVfZ2V0X2ZvbGlvYCwgYHBhZ2VfaWRsZV9iaXRtYXBfcmVhZGAsIGFuZCBgcGFnZV9pZGxlX2JpdG1hcF93cml0ZWAuIFRoZXNlIGFyZSB0aGUgY3JpdGljYWwgcGllY2VzIHRoYXQgSSBuZWVkIHRvIGJlIGludGltYXRlbHkgZmFtaWxpYXIgd2l0aCBhcyBJIHJldmlldyB0aGlzIGNvZGUuIFRoZXNlIGxpa2VseSByZXByZXNlbnQgdGhlIGNvcmUgZGF0YSBhY2Nlc3MgYW5kIG1hbmlwdWxhdGlvbiBmb3IgdGhlIHRyYWNraW5nIG1lY2hhbmlzbS5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdsbCBxdWlja2x5IGdsYW5jZSBhdCB0aGUgd2lkZXIgY29kZWJhc2UgYW5kIG1ha2UgYSBxdWljayBtZW50YWwgbm90ZSB0aGF0IHRoZXJlIGFyZSBsaWtlbHkgb3RoZXIgZnVuY3Rpb25zIGludGVyYWN0aW5nIHdpdGggdGhlIHNhbWUgZmVhdHVyZS4gSXQgcGF5cyB0byBrZWVwIHRoaXMgY29udGV4dCBpbiBtaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjIyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwNjozOTo1OS40NDQ5MzAyMDFaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDM4NTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2VfaWRsZV9nZXRfZm9saW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vcGFnZV9pZGxlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vcGFnZV9pZGxlLmMtMzMtICovXFxubW0vcGFnZV9pZGxlLmM6MzQ6c3RhdGljIHN0cnVjdCBmb2xpbyAqcGFnZV9pZGxlX2dldF9mb2xpbyh1bnNpZ25lZCBsb25nIHBmbilcXG5tbS9wYWdlX2lkbGUuYy0zNS17XFxuLS1cXG5tbS9wYWdlX2lkbGUuYz0xMTg9c3RhdGljIHNzaXplX3QgcGFnZV9pZGxlX2JpdG1hcF9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL3BhZ2VfaWRsZS5jLTE0MS1cXHRcXHRcXHQqb3V0ID0gMFVMTDtcXG5tbS9wYWdlX2lkbGUuYzoxNDI6XFx0XFx0Zm9saW8gPSBwYWdlX2lkbGVfZ2V0X2ZvbGlvKHBmbik7XFxubW0vcGFnZV9pZGxlLmMtMTQzLVxcdFxcdGlmIChmb2xpbykge1xcbi0tXFxubW0vcGFnZV9pZGxlLmM9MTYzPXN0YXRpYyBzc2l6ZV90IHBhZ2VfaWRsZV9iaXRtYXBfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vcGFnZV9pZGxlLmMtMTg1LVxcdFxcdGlmICgoKmluIFxcdTAwM2VcXHUwMDNlIGJpdCkgXFx1MDAyNiAxKSB7XFxubW0vcGFnZV9pZGxlLmM6MTg2OlxcdFxcdFxcdGZvbGlvID0gcGFnZV9pZGxlX2dldF9mb2xpbyhwZm4pO1xcbm1tL3BhZ2VfaWRsZS5jLTE4Ny1cXHRcXHRcXHRpZiAoZm9saW8pIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDY6Mzk6NTkuNTAyMzcxOTc5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MzczNjA0MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGb2xpbyBBY3F1aXNpdGlvbiBhbmQgTFJVIENoZWNrIGluIGBwYWdlX2lkbGVfZ2V0X2ZvbGlvYCoqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgaXQgc2VlbXMgbGlrZSBgcGFnZV9pZGxlX2JpdG1hcF9yZWFkYCBhbmQgYHBhZ2VfaWRsZV9iaXRtYXBfd3JpdGVgIGFyZSB0aGUgb25seSBmdW5jdGlvbnMgY2FsbGluZyB0aGlzLiBUaGUgY29kZSdzIGJlaGF2aW9yIGhhcyBiZWVuIG1vZGlmaWVkLCBsaWtlbHkgdG8gYWRkcmVzcyBhIGJ1ZyBvciBmb3Igb3B0aW1pemF0aW9uLiBMZXQncyB0YWtlIGEgY2xvc2VyIGxvb2s6IHRoZSBvcmlnaW5hbCBjb2RlIHdvdWxkIGJhaWwgb3V0IGVhcmx5IGlmIHRoZSBMUlUgZmxhZyB3YXNuJ3Qgc2V0LiBUaGUgbmV3IHZlcnNpb24gKmFjcXVpcmVzKiBhIHJlZmVyZW5jZSB0byB0aGUgZm9saW8gZmlyc3QgdXNpbmcgYGZvbGlvX3RyeV9nZXRgLCAqdGhlbiogY2hlY2tzIHRoZSBMUlUgZmxhZy4gSWYgdGhlIExSVSBpc24ndCBzZXQsIHRoZSByZWZlcmVuY2UgaXMgcmVsZWFzZWQuIFRoaXMgY2hhbmdlIGFkZHJlc3NlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbi4gV2UncmUgbm93IGVuc3VyaW5nIHdlIGhvbGQgYSByZWZlcmVuY2UgYmVmb3JlIGV2YWx1YXRpbmcgdGhlIExSVSBzdGF0ZS4gVGhlIGludGVudCBpcyB0byBhdm9pZCBhIHNjZW5hcmlvIHdoZXJlIHRoZSBMUlUgZmxhZyBjaGFuZ2VzIGJldHdlZW4gdGhlIGluaXRpYWwgY2hlY2sgYW5kIHRoZSBmb2xpbyBhY3F1aXNpdGlvbiwgd2hpY2ggY291bGQgbGVhZCB0byBpbmNvcnJlY3QgYmVoYXZpb3IuXG5cbkknbSB0aGlua2luZyB0aGlzIGlzIHdvcnRoIGZ1enppbmcuIFRoZSBjaGFuZ2UgaXMgZGVmaW5pdGVseSBmdW5jdGlvbmFsLiBJJ2xsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLiBUbyBmb2N1cyB0aGUgZnV6emluZyBlZmZvcnRzLCBJJ2xsIHNwZWNpZnkgdGhlIHJlbGV2YW50IHN5bWJvbHMgYXMgYHBhZ2VfaWRsZV9nZXRfZm9saW9gLCBgcGFnZV9pZGxlX2JpdG1hcF9yZWFkYCwgYW5kIGBwYWdlX2lkbGVfYml0bWFwX3dyaXRlYC4gQW5kIHNpbmNlIHRoaXMgaXMgcmVhY2hhYmxlIHZpYSB0aGUgc3lzZnMgaW50ZXJmYWNlLCBJJ2xsIGVuYWJsZSBgSURMRV9QQUdFX1RSQUNLSU5HYC4gTXkgcmVhc29uaW5nIGlzIHRoZSBwYXRjaCdzIGxvZ2ljIGNoYW5nZSB3aXRoaW4gYHBhZ2VfaWRsZV9nZXRfZm9saW9gIGlzIGRpcmVjdGx5IHJlbGV2YW50IHRvIHRoZSBzeXNmcyByZWFkL3dyaXRlIG9wZXJhdGlvbnMgb24gYC9zeXMva2VybmVsL21tL3BhZ2VfaWRsZS9iaXRtYXBgLiBGdXp6aW5nIHRoaXMgd2lsbCBhbGxvdyB2ZXJpZmljYXRpb24gb2YgdGhlIGZpeCBmb3IgdGhlIHJhY2UgY29uZGl0aW9uIHRoZSBwYXRjaCBhZGRyZXNzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NjksIk91dHB1dFRva2VucyI6MTQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDA2OjQwOjA2LjQzOTczNDc2OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0NDQ1MDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJRExFX1BBR0VfVFJBQ0tJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwYWdlX2lkbGVfZ2V0X2ZvbGlvXCIsXG4gICAgXCJwYWdlX2lkbGVfYml0bWFwX3JlYWRcIixcbiAgICBcInBhZ2VfaWRsZV9iaXRtYXBfd3JpdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIGluIGBwYWdlX2lkbGVfZ2V0X2ZvbGlvYCBieSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgYGZvbGlvX3RyeV9nZXRgIGFuZCBgZm9saW9fdGVzdF9scnVgIGNoZWNrcy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN5c2ZzIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBvbiBgL3N5cy9rZXJuZWwvbW0vcGFnZV9pZGxlL2JpdG1hcGAuIEZ1enppbmcgdGhlc2Ugc3lzZnMgaGFuZGxlcnMgY2FuIGhlbHAgdmVyaWZ5IHRoZSBmaXggZm9yIHRoZSByYWNlIGNvbmRpdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJRExFX1BBR0VfVFJBQ0tJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwYWdlX2lkbGVfZ2V0X2ZvbGlvXCIsXG4gICAgXCJwYWdlX2lkbGVfYml0bWFwX3JlYWRcIixcbiAgICBcInBhZ2VfaWRsZV9iaXRtYXBfd3JpdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc3luY2hyb25pemF0aW9uIGxvZ2ljIGluIGBwYWdlX2lkbGVfZ2V0X2ZvbGlvYCBieSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgYGZvbGlvX3RyeV9nZXRgIGFuZCBgZm9saW9fdGVzdF9scnVgIGNoZWNrcy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN5c2ZzIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBvbiBgL3N5cy9rZXJuZWwvbW0vcGFnZV9pZGxlL2JpdG1hcGAuIEZ1enppbmcgdGhlc2Ugc3lzZnMgaGFuZGxlcnMgY2FuIGhlbHAgdmVyaWZ5IHRoZSBmaXggZm9yIHRoZSByYWNlIGNvbmRpdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowtv99j[1] Phase: Succeeded StartedAt: 2026-07-23 06:40:18 +0000 UTC FinishedAt: 2026-07-23 06:40:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-23 06:40:18 +0000 UTC FinishedAt: 2026-07-23 06:40:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[2] Phase: Succeeded StartedAt: 2026-07-23 06:40:18 +0000 UTC FinishedAt: 2026-07-23 11:01:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-23 06:40:18 +0000 UTC FinishedAt: 2026-07-23 11:01:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-23 06:40:18 +0000 UTC FinishedAt: 2026-07-23 06:40:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-23 06:40:18 +0000 UTC FinishedAt: 2026-07-23 06:40:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowtv99j/series-workflowtv99j-convert-artifact-3236178120/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-23 06:40:29 +0000 UTC FinishedAt: 2026-07-23 07:18:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-23 06:40:29 +0000 UTC FinishedAt: 2026-07-23 07:18:07 +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:*4cd645cd-75f3-4d10-90bc-799f6b45b62f,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-workflowtv99j/series-workflowtv99j-convert-artifact-3236178120/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": "9692d3d2-aa4c-43f4-af5d-b97845ef2f02", "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-workflowtv99j/series-workflowtv99j-build-action-365040958/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-23 06:40:29 +0000 UTC FinishedAt: 2026-07-23 07:17:57 +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:*4cd645cd-75f3-4d10-90bc-799f6b45b62f,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-workflowtv99j/series-workflowtv99j-convert-artifact-3236178120/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": "9692d3d2-aa4c-43f4-af5d-b97845ef2f02", "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-workflowtv99j/series-workflowtv99j-build-action-365040958/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-23 07:18:07 +0000 UTC FinishedAt: 2026-07-23 07:18:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-23 07:18:07 +0000 UTC FinishedAt: 2026-07-23 07:18:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-23 07:18:07 +0000 UTC FinishedAt: 2026-07-23 07:18:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-23 07:18:07 +0000 UTC FinishedAt: 2026-07-23 07:18:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowtv99j/series-workflowtv99j-convert-artifact-194320303/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-23 07:18:17 +0000 UTC FinishedAt: 2026-07-23 07:20:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-23 07:18:17 +0000 UTC FinishedAt: 2026-07-23 07:20:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9692d3d2-aa4c-43f4-af5d-b97845ef2f02,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-workflowtv99j/series-workflowtv99j-build-action-365040958/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-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-23 07:20:30 +0000 UTC FinishedAt: 2026-07-23 07:20:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-23 07:20:30 +0000 UTC FinishedAt: 2026-07-23 07:20:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-23 07:20:30 +0000 UTC FinishedAt: 2026-07-23 07:56:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-23 07:20:30 +0000 UTC FinishedAt: 2026-07-23 07:56:27 +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:*4cd645cd-75f3-4d10-90bc-799f6b45b62f,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-workflowtv99j/series-workflowtv99j-convert-artifact-194320303/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": "fbd0fd59-5af6-43ae-9dcf-7d3618b46fcc", "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-workflowtv99j/series-workflowtv99j-build-action-631563075/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-23 07:20:30 +0000 UTC FinishedAt: 2026-07-23 07:56:16 +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:*4cd645cd-75f3-4d10-90bc-799f6b45b62f,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-workflowtv99j/series-workflowtv99j-convert-artifact-194320303/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": "fbd0fd59-5af6-43ae-9dcf-7d3618b46fcc", "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-workflowtv99j/series-workflowtv99j-build-action-631563075/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-23 07:56:27 +0000 UTC FinishedAt: 2026-07-23 07:56:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-23 07:56:27 +0000 UTC FinishedAt: 2026-07-23 07:56:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-23 07:56:27 +0000 UTC FinishedAt: 2026-07-23 07:58:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-23 07:56:27 +0000 UTC FinishedAt: 2026-07-23 07:58:41 +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:*fbd0fd59-5af6-43ae-9dcf-7d3618b46fcc,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-workflowtv99j/series-workflowtv99j-build-action-631563075/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-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-23 07:58:51 +0000 UTC FinishedAt: 2026-07-23 11:01:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-23 07:58:51 +0000 UTC FinishedAt: 2026-07-23 11:01:05 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},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:*9692d3d2-aa4c-43f4-af5d-b97845ef2f02,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fbd0fd59-5af6-43ae-9dcf-7d3618b46fcc,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-workflowtv99j/series-workflowtv99j-build-action-365040958/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-workflowtv99j/series-workflowtv99j-build-action-631563075/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-23 07:58:51 +0000 UTC FinishedAt: 2026-07-23 07:59:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-23 07:58:51 +0000 UTC FinishedAt: 2026-07-23 07:58:56 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},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-workflowtv99j/series-workflowtv99j-convert-artifact-1626023016/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-23 07:58:51 +0000 UTC FinishedAt: 2026-07-23 07:58:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-23 07:58:51 +0000 UTC FinishedAt: 2026-07-23 07:58:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-23 07:58:51 +0000 UTC FinishedAt: 2026-07-23 07:58:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-23 07:59:01 +0000 UTC FinishedAt: 2026-07-23 11:01:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtv99j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["page_idle_get_folio","page_idle_bitmap_read","page_idle_bitmap_write"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"5e0603ba185af6754422ad28b646798686b6caf6","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDLE_PAGE_TRACKING"],"series_id":"aff4b681-3cf9-4c0d-bfdf-81f600cb95a2","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-23 07:59:01 +0000 UTC FinishedAt: 2026-07-23 11:00:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9692d3d2-aa4c-43f4-af5d-b97845ef2f02,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fbd0fd59-5af6-43ae-9dcf-7d3618b46fcc,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-workflowtv99j/series-workflowtv99j-build-action-365040958/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-workflowtv99j/series-workflowtv99j-build-action-631563075/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-workflowtv99j/series-workflowtv99j-convert-artifact-1626023016/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,}