Name: series-workflow88zpg Phase: Succeeded StartedAt: 2026-07-04 05:11:38 +0000 UTC FinishedAt: 2026-07-04 07:26:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[0] Phase: Succeeded StartedAt: 2026-07-04 05:11:38 +0000 UTC FinishedAt: 2026-07-04 05:40:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[0].run-triage Phase: Succeeded StartedAt: 2026-07-04 05:11:38 +0000 UTC FinishedAt: 2026-07-04 05:40:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CIFS", "9P_FS", "CEPH_FS", "AFS_FS", "FSCACHE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CIFS", "9P_FS", "CEPH_FS", "AFS_FS", "FSCACHE" ], "series_id": "346c2266-bb93-438f-9174-00adb280eb6c" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "netfs_pgpriv2_copy_folio", "netfs_pgpriv2_copy_to_cache" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDA1OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NJRlMmIzM0OywKICAgICYjMzQ7OVBfRlMmIzM0OywKICAgICYjMzQ7Q0VQSF9GUyYjMzQ7LAogICAgJiMzNDtBRlNfRlMmIzM0OywKICAgICYjMzQ7RlNDQUNIRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25ldGZzX3BncHJpdjJfY29weV9mb2xpbyYjMzQ7LAogICAgJiMzNDtuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtaXNzaW5nIGZvbGlvX2VuZF9wcml2YXRlXzIoKSBjYWxsIGluIG5ldGZzX3BncHJpdjJfY29weV9mb2xpbygpIHdoZW4gYXBwZW5kaW5nIHRvIHRoZSByb2xsaW5nIGJ1ZmZlciBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXRmcyBsaWJyYXJ5LCB3aGljaCBpcyB1c2VkIGJ5IG5ldHdvcmsgZmlsZXN5c3RlbXMgKGxpa2UgQ0lGUywgOVAsIENlcGgsIEFGUykgZm9yIGxvY2FsIGNhY2hpbmcgKGZzY2FjaGUpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDA1OjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTJkZWNhMmYxNmYzZjliMzU5M2M4ZTBjYzFlMzcyNGVjMjNkNGU3Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDQgMDU6Mzk6MzUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMgYi9mcy9uZXRmcy9yZWFkX3BncHJpdjIuY1xuaW5kZXggYTE0ODlhYTI5Zjc4MmEuLjdlYWNjNThhYmFkYjczIDEwMDY0NFxuLS0tIGEvZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL25ldGZzL3JlYWRfcGdwcml2Mi5jXG5AQCAtNTQsNiAmIzQzOzU0LDcgQEAgc3RhdGljIHZvaWQgbmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpjcmVxLCBzdHJ1Y3QgZm9saW9cbiBcbiBcdC8qIEF0dGFjaCB0aGUgZm9saW8gdG8gdGhlIHJvbGxpbmcgYnVmZmVyLiAqL1xuIFx0aWYgKHJvbGxpbmdfYnVmZmVyX2FwcGVuZChcdTAwMjZjcmVxLVx1MDAzZWJ1ZmZlciwgZm9saW8sIDApIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRmb2xpb19lbmRfcHJpdmF0ZV8yKGZvbGlvKTtcbiBcdFx0Y2xlYXJfYml0KE5FVEZTX1JSRVFfRk9MSU9fQ09QWV9UT19DQUNIRSwgXHUwMDI2Y3JlcS1cdTAwM2VmbGFncyk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAwNTozOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDSUZTJiMzNDssCiAgICAmIzM0OzlQX0ZTJiMzNDssCiAgICAmIzM0O0NFUEhfRlMmIzM0OywKICAgICYjMzQ7QUZTX0ZTJiMzNDssCiAgICAmIzM0O0ZTQ0FDSEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW8mIzM0OywKICAgICYjMzQ7bmV0ZnNfcGdwcml2Ml9jb3B5X3RvX2NhY2hlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWlzc2luZyBmb2xpb19lbmRfcHJpdmF0ZV8yKCkgY2FsbCBpbiBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW8oKSB3aGVuIGFwcGVuZGluZyB0byB0aGUgcm9sbGluZyBidWZmZXIgZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZnMgbGlicmFyeSwgd2hpY2ggaXMgdXNlZCBieSBuZXR3b3JrIGZpbGVzeXN0ZW1zIChsaWtlIENJRlMsIDlQLCBDZXBoLCBBRlMpIGZvciBsb2NhbCBjYWNoaW5nIChmc2NhY2hlKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTJkZWNhMmYxNmYzZjliMzU5M2M4ZTBjYzFlMzcyNGVjMjNkNGU3YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDQgMDU6Mzk6MzUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9uZXRmcy9yZWFkX3BncHJpdjIuYyBiL2ZzL25ldGZzL3JlYWRfcGdwcml2Mi5jCmluZGV4IGExNDg5YWEyOWY3ODJhLi43ZWFjYzU4YWJhZGI3MyAxMDA2NDQKLS0tIGEvZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMKQEAgLTU0LDYgJiM0Mzs1NCw3IEBAIHN0YXRpYyB2b2lkIG5ldGZzX3BncHJpdjJfY29weV9mb2xpbyhzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqY3JlcSwgc3RydWN0IGZvbGlvCiAKIAkvKiBBdHRhY2ggdGhlIGZvbGlvIHRvIHRoZSByb2xsaW5nIGJ1ZmZlci4gKi8KIAlpZiAocm9sbGluZ19idWZmZXJfYXBwZW5kKCZhbXA7Y3JlcS0mZ3Q7YnVmZmVyLCBmb2xpbywgMCkgJmx0OyAwKSB7CiYjNDM7CQlmb2xpb19lbmRfcHJpdmF0ZV8yKGZvbGlvKTsKIAkJY2xlYXJfYml0KE5FVEZTX1JSRVFfRk9MSU9fQ09QWV9UT19DQUNIRSwgJmFtcDtjcmVxLSZndDtmbGFncyk7CiAJCXJldHVybjsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDA1OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NDkKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBmcy9uZXRmcy9yZWFkX3BncHJpdjIuY2AgY2hhbmdlLgoKKipFeGFtaW5pbmcgdGhlIEZvbGlvIEhhbmRsaW5nIGluIGBuZXRmc2AqKgoKUmlnaHQsIHNvIHRoZXJlJiMzOTtzIGEgcGF0Y2ggaGVyZSwgYW5kIGl0JiMzOTtzIHRvdWNoaW5nIGByZWFkX3BncHJpdjIuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYWRkaW5nIGEgYGZvbGlvX2VuZF9wcml2YXRlXzIoZm9saW8pO2AgY2FsbC4gVGhlIGNydWNpYWwgcGFydCBoZXJlIGlzICp3aGVuKiBpdCYjMzk7cyBiZWluZyBhZGRlZDogc3BlY2lmaWNhbGx5LCB3aGVuIGByb2xsaW5nX2J1ZmZlcl9hcHBlbmRgIGZhaWxzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCYjMzk7cyBgcm9sbGluZ19idWZmZXJfYXBwZW5kYCBkb2luZywgYW5kIHdoeSB3b3VsZCBpdCBmYWlsIGluIGEgd2F5IHRoYXQgcmVxdWlyZXMgdGhpcyBraW5kIG9mIGNsZWFudXA/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkYXRhIHN0cnVjdHVyZXMgYW5kIGNvbnRyb2wgZmxvdyBhcm91bmQgdGhhdCBmdW5jdGlvbi4gSXMgdGhpcyBhIG5ldyBmYWlsdXJlIGNhc2UsIG9yIGlzIHRoaXMgZXJyb3IgaGFuZGxpbmcgYmVpbmcgZXhwbGljaXRseSBjb3JyZWN0ZWQ/IFRoZSBgZm9saW9fZW5kX3ByaXZhdGVfMmAgZnVuY3Rpb24gbGlrZWx5IG5lZWRzIHRvIGJlIGludmVzdGlnYXRlZC4gV2hhdCBleGFjdGx5IGRvZXMgaXQgZG8/IE15IGV4cGVyaWVuY2Ugc2F5cyB0aGlzIGlzIGxpa2VseSByZWxlYXNpbmcgcmVzb3VyY2VzLiBCdXQgaW4gd2hhdCBjb250ZXh0LCBhbmQgd2hhdCByZXNvdXJjZXMgYXJlIHdlIGRlYWxpbmcgd2l0aD8gTGV0JiMzOTtzIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDU6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtMTgtICovXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYzoxOTpzdGF0aWMgdm9pZCBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW8oc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKmNyZXEsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYy0yMC17XG4tLVxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmM9MTMzPXZvaWQgbmV0ZnNfcGdwcml2Ml9jb3B5X3RvX2NhY2hlKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbmZzL25ldGZzL3JlYWRfcGdwcml2Mi5jLTE0My1cdGZvbGlvX3N0YXJ0X3ByaXZhdGVfMihmb2xpbyk7XG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYzoxNDQ6XHRuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW8oY3JlcSwgZm9saW8pO1xuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtMTQ1LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAwNTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDA1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBhIERhdGEgQ29weSBQYXRoIGluIE5ldEZTKioKCk9rYXksIHNvIEkgc2VlIGBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW9gIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGVgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBhbmQgdXN1YWxseSBtZWFucyB3ZSBoYXZlIGEgZnVuY3Rpb24gY29weWluZyBkYXRhIGZyb20gb25lIGxvY2F0aW9uIHRvIGFub3RoZXIuIFRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgZGF0YSBmbG93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGVgIGlzIGRvaW5nLCBzbyBsZXQmIzM5O3Mgc3RhcnQgdGhlcmUuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYG5ldGZzX3BncHJpdjJfY29weV90b19jYWNoZWAgdG8gc2VlIHdoYXQgaW5mb3JtYXRpb24gaXQmIzM5O3MgcGFzc2luZyB0byB0aGUgYGNvcHlfZm9saW9gIGZ1bmN0aW9uLCBhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhhdCBmdW5jdGlvbiBpcyBjYWxsZWQuIEZyb20gdGhhdCBwb2ludCwgSSBjYW4gZm9ybSBhIGJldHRlciBpZGVhIGFib3V0IGhvdyB0aGUgZGF0YSBjb3BpZXMgYXJlIHBlcmZvcm1lZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAwNTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9uZXRmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbmV0ZnMvaW50ZXJuYWwuaD0xMTQ9dm9pZCBuZXRmc19jYWNoZV9yZWFkX3Rlcm1pbmF0ZWQodm9pZCAqcHJpdiwgc3NpemVfdCB0cmFuc2ZlcnJlZF9vcl9lcnJvcik7XG4tLVxuZnMvbmV0ZnMvaW50ZXJuYWwuaC0xMTgtICovXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjExOTp2b2lkIG5ldGZzX3BncHJpdjJfY29weV90b19jYWNoZShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqcnJlcSwgc3RydWN0IGZvbGlvICpmb2xpbyk7XG5mcy9uZXRmcy9pbnRlcm5hbC5oLTEyMC12b2lkIG5ldGZzX3BncHJpdjJfZW5kX2NvcHlfdG9fY2FjaGUoc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKnJyZXEpO1xuLS1cbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jPTQyPXN0YXRpYyB2b2lkIG5ldGZzX3VubG9ja19yZWFkX2ZvbGlvKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxLFxuLS1cbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jLTgxLVx0XHRpZiAodGVzdF9iaXQoTkVURlNfUlJFUV9GT0xJT19DT1BZX1RPX0NBQ0hFLCBcdTAwMjZycmVxLVx1MDAzZWZsYWdzKSlcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jOjgyOlx0XHRcdG5ldGZzX3BncHJpdjJfY29weV90b19jYWNoZShycmVxLCBmb2xpbyk7XG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYy04My1cdH1cbi0tXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYz05OD1zdGF0aWMgc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKm5ldGZzX3BncHJpdjJfYmVnaW5fY29weV90b19jYWNoZShcbi0tXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYy0xMzItICovXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYzoxMzM6dm9pZCBuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGUoc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKnJyZXEsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYy0xMzQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDA1OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBuZXRmcyBMaWJyYXJ5IENoYW5nZSoqCgpPa2F5LCBzbyB0aGlzIGNoYW5nZSBhcHBlYXJzIHRvIGJlIHdpdGhpbiB0aGUgYG5ldGZzYCBsaWJyYXJ5LCB3aGljaCBpcyBhIGtleSBjb21wb25lbnQgZm9yIGhvdyBuZXR3b3JrIGZpbGVzeXN0ZW1zIGxpa2UgQUZTLCBDZXBoLCBhbmQgQ0lGUyBtYW5hZ2UgdGhlaXIgbG9jYWwgY2FjaGluZyBtZWNoYW5pc21zLCBzcGVjaWZpY2FsbHksIGBmc2NhY2hlYC4gRnVuY3Rpb25hbGx5LCBpdCYjMzk7cyBhIGZpeCwgd2hpY2ggaXMgYWx3YXlzIGdvb2QuIFRoZSBzcGVjaWZpYyBpc3N1ZSBpcyBhIG1pc3NpbmcgYGZvbGlvX2VuZF9wcml2YXRlXzJgIGNhbGwgd2hlbiBhcHBlbmRpbmcgdG8gdGhlIHJvbGxpbmcgYnVmZmVyIGZhaWxzLiBUaGF0IG1ha2VzIHNlbnNlOyBmYWlsdXJlIHN0YXRlcyBuZWVkIHByb3BlciBjbGVhbnVwLCBhbmQgSSB3b3VsZCBoYXZlIGV4cGVjdGVkIGEgY2hlY2sgZm9yIHRoaXMgdHlwZSBvZiB0aGluZyBpbiB0aGUgZXhpc3RpbmcgY29kZSwgYnV0IHRoZXNlIHRoaW5ncyBoYXBwZW4uCgpOb3csIGxldCYjMzk7cyB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBgbmV0ZnNgLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGlzIGxpYnJhcnkgaXMgY29uZmlndXJlZCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgd2lkZXIgY29udGV4dCBvZiB0aGlzIGNoYW5nZSwgYW5kIGhvdyBpdCBtaWdodCBpbXBhY3QgdmFyaW91cyBlbnZpcm9ubWVudHMuIEkmIzM5O20gZ29pbmcgdG8gbG9vayB0byBzZWUgaWYgdGhpcyBjaGFuZ2UgbWF5IGltcGFjdCBhbnkgb3RoZXIgYXJlYXMsIG9yIGlmIHRoZXJlIGlzIGFueXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgYnJvdWdodCB1cCB3aXRoIHRoZSBjbGllbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDU6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVEZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbmV0ZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9uZXRmcy9LY29uZmlnLTItXG5mcy9uZXRmcy9LY29uZmlnOjM6Y29uZmlnIE5FVEZTX1NVUFBPUlRcbmZzL25ldGZzL0tjb25maWctNC1cdHRyaXN0YXRlXG4tLVxuZnMvbmV0ZnMvS2NvbmZpZy05LVxuZnMvbmV0ZnMvS2NvbmZpZzoxMDpjb25maWcgTkVURlNfU1RBVFNcbmZzL25ldGZzL0tjb25maWctMTEtXHRib29sIFwmIzM0O0dhdGhlciBzdGF0aXN0aWNhbCBpbmZvcm1hdGlvbiBvbiBsb2NhbCBjYWNoaW5nXCYjMzQ7XG4tLVxuZnMvbmV0ZnMvS2NvbmZpZy0yNC1cbmZzL25ldGZzL0tjb25maWc6MjU6Y29uZmlnIE5FVEZTX0RFQlVHXG5mcy9uZXRmcy9LY29uZmlnLTI2LVx0Ym9vbCBcJiMzNDtFbmFibGUgZHluYW1pYyBkZWJ1Z2dpbmcgbmV0ZnNsaWIgYW5kIEZTLUNhY2hlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDU6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU3MgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCB1c2VyOgoKKipJbnZlc3RpZ2F0aW5nIEZTQ2FjaGUgYW5kIE5ldEZTIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBjb25maWd1cmF0aW9ucyBjdXJyZW50bHkgaW4gcGxhY2UgdGhhdCBtaWdodCBiZSBlbmFibGluZyBgZnNjYWNoZWAgb3IgYG5ldGZzYC4gSSYjMzk7bSB0aGlua2luZywgdGhpcyBpcyBwcm9iYWJseSBnb2luZyB0byBpbnZvbHZlIGxvb2tpbmcgYXQgYSBjb21iaW5hdGlvbiBvZiBrZXJuZWwgbW9kdWxlcyBsb2FkZWQsIG1vdW50IG9wdGlvbnMsIGFuZCBwZXJoYXBzIHNvbWUgcmVsZXZhbnQgc3lzdGVtZCBzZXJ2aWNlIGRlZmluaXRpb25zLCByaWdodD8gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgd2l0aCB0aGUgbW9yZSBvYnZpb3VzIHBsYWNlcyDigJMgbWF5YmUgYSBxdWljayBgbHNtb2RgIGFuZCB0aGVuIGRpdmUgaW50byBgL2V0Yy9mc3RhYmAgYW5kIGFueSBzeXN0ZW1kIHVuaXQgZmlsZXMgcmVsYXRlZCB0byBuZXR3b3JrIGZpbGUgc3lzdGVtcy4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0byBjaGVjayBhbnkgcG90ZW50aWFsIG92ZXJyaWRlcyBpbiBgL2V0Yy9tb2Rwcm9iZS5kL2AgYXMgd2VsbCwganVzdCBpbiBjYXNlIHNvbWVvbmUgZ290IGZhbmN5IHdpdGggc29tZSBrZXJuZWwgbW9kdWxlIGJsYWNrbGlzdGluZyBvciBvcHRpb25zLiBHb3R0YSBiZSB0aG9yb3VnaC4gQWxzbywgSSBiZXR0ZXIgY2hlY2sgZm9yIGFueSByZWxhdGVkIHBhcmFtZXRlcnMgaW4gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUsIGp1c3QgdG8gY292ZXIgYWxsIGJhc2VzIGFuZCBlbnN1cmUgSSBkb24mIzM5O3QgbWlzcyBhbnl0aGluZyB0aGF0IG1pZ2h0IGhhdmUgYmVlbiBzZXQgZHVyaW5nIGJvb3QuIEkmIzM5O20gaW1hZ2luaW5nIGl0JiMzOTtzIGdvaW5nIHRvIGJlIGEgcXVpY2sgc3dlZXAgb2Yga2V5IGZpbGVzLCBidXQgeW91IG5ldmVyIGtub3cuIEl0JiMzOTtzIGJlc3QgdG8gYmUgYXMgY29tcHJlaGVuc2l2ZSBhcyBwb3NzaWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDU6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZTQ0FDSEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9uZXRmcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL25ldGZzL0tjb25maWc9MjU9Y29uZmlnIE5FVEZTX0RFQlVHXG4tLVxuZnMvbmV0ZnMvS2NvbmZpZy0zMi1cbmZzL25ldGZzL0tjb25maWc6MzM6Y29uZmlnIEZTQ0FDSEVcbmZzL25ldGZzL0tjb25maWctMzQtXHRib29sIFwmIzM0O0dlbmVyYWwgZmlsZXN5c3RlbSBsb2NhbCBjYWNoaW5nIG1hbmFnZXJcJiMzNDtcbi0tXG5mcy9uZXRmcy9LY29uZmlnLTQzLVxuZnMvbmV0ZnMvS2NvbmZpZzo0NDpjb25maWcgRlNDQUNIRV9TVEFUU1xuZnMvbmV0ZnMvS2NvbmZpZy00NS1cdGJvb2wgXCYjMzQ7R2F0aGVyIHN0YXRpc3RpY2FsIGluZm9ybWF0aW9uIG9uIGxvY2FsIGNhY2hpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDU6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk5MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHdyaXR0ZW4gYXMgaWYgSSYjMzk7bSB0aGlua2luZyBpdDoKCioqRGlnZ2luZyBpbnRvIHRoZSBOZXRGUyBDb2RlKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBUaGUga2VybmVsIGNvbmZpZ3VyYXRpb24gaW5kaWNhdGVzIHRoYXQgdGhlIGBmcy9uZXRmcy9yZWFkX3BncHJpdjIuY2AgZmlsZSBpcyBiZWluZyBjb21waWxlZCB3aGVuIGBORVRGU19TVVBQT1JUYCBpcyBlbmFibGVkLiBNeSBpbW1lZGlhdGUgaW5jbGluYXRpb24gaXMgdG8gY29uZmlybSB0aGlzIHdpdGhpbiB0aGUgYnVpbGQgc3lzdGVtLiBTbywgbGV0JiMzOTtzIHBvcCBvcGVuIGBmcy9uZXRmcy9NYWtlZmlsZWAgYW5kIHZlcmlmeSB0aGUgY29tcGlsYXRpb24gZGVwZW5kZW5jeSBhbmQgdGhhdCBgTkVURlNfU1VQUE9SVGAgaXMgaW5kZWVkIGEgY29udHJvbGxpbmcgZmFjdG9yLiBUaGlzIGtpbmQgb2YgcXVpY2sgY3Jvc3MtcmVmZXJlbmNlIGlzIGVzc2VudGlhbCB3aGVuIG5hdmlnYXRpbmcga2VybmVsIGJ1aWxkIGNvbmZpZ3VyYXRpb25zLiBJdCB3aWxsIHNob3cgbWUgdGhlIGJ1aWxkIHJ1bGVzIGFuZCB1bHRpbWF0ZWx5IHJldmVhbCB3aGF0IGlzIGhhcHBlbmluZyBkdXJpbmcgdGhlIGtlcm5lbCBidWlsZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDU6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVhZF9wZ3ByaXYyLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9uZXRmcy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9uZXRmcy9NYWtlZmlsZT0zPW5ldGZzLXkgOj0gXFxcbi0tXG5mcy9uZXRmcy9NYWtlZmlsZS0xMy1cdHJlYWRfY29sbGVjdC5vIFxcXG5mcy9uZXRmcy9NYWtlZmlsZToxNDpcdHJlYWRfcGdwcml2Mi5vIFxcXG5mcy9uZXRmcy9NYWtlZmlsZS0xNS1cdHJlYWRfcmV0cnkubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAwNTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mjk5CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYG5ldGZzLXlgIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjaGFuZ2UsIGFuZCBpdCBzZWVtcyB0byBiZSBwYXJ0IG9mIHRoZSBgbmV0ZnMteWAgbW9kdWxlLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIHRoZSBgbmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvYCBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlZW4gbW9kaWZpZWQuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGhvdyBpcyB0aGlzIGNvbmZpZ3VyZWQ/IElzIGBORVRGU19TVVBQT1JUYCBzdWZmaWNpZW50IGZvciBhY3RpdmF0aW9uPyBMZXQmIzM5O3MgdGFrZSBhIGxvb2suLi4gQWgsIHllcywgYE5FVEZTX1NVUFBPUlRgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIG9wdGlvbi4KCkhhbmcgb24gYSBzZWNvbmQsIHRob3VnaC4gSSYjMzk7bSByZWNhbGxpbmcgbm93LCBgTkVURlNfU1VQUE9SVGAgaXMgYSAqdHJpc3RhdGUqLiBUaGF0JiMzOTtzIG9mdGVuIHNlbGVjdGVkIGJ5IGZpbGVzeXN0ZW0gZHJpdmVycyB0aGVtc2VsdmVzLCB0aGluZ3MgbGlrZSBBRlMsIENFUEgsIENJRlMsIGFuZCA5UC4gSnVzdCBuZWVkIHRvIGNoZWNrIHdoYXQgc3BlY2lmaWNhbGx5IGRyaXZlcyB0aGF0IGNvbmZpZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBoZXJlIHRvIHNlZSBpZiB0aGlzIGNoYW5nZSBhbGlnbnMgd2l0aCB0aGUgb3ZlcmFsbCBtb2R1bGUgY29uZmlndXJhdGlvbiBzY2hlbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDA1OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBORVRGU19TVVBQT1JUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzLzlwL0tjb25maWc9Mj1jb25maWcgOVBfRlNcbi0tXG5mcy85cC9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIE5FVF85UFxuZnMvOXAvS2NvbmZpZzo1Olx0c2VsZWN0IE5FVEZTX1NVUFBPUlRcbmZzLzlwL0tjb25maWctNi1cdGhlbHBcbi0tXG5mcy9hZnMvS2NvbmZpZz0yPWNvbmZpZyBBRlNfRlNcbi0tXG5mcy9hZnMvS2NvbmZpZy02LVx0c2VsZWN0IEROU19SRVNPTFZFUlxuZnMvYWZzL0tjb25maWc6NzpcdHNlbGVjdCBORVRGU19TVVBQT1JUXG5mcy9hZnMvS2NvbmZpZy04LVx0c2VsZWN0IENSWVBUT19LUkI1XG4tLVxuZnMvY2VwaC9LY29uZmlnPTI9Y29uZmlnIENFUEhfRlNcbi0tXG5mcy9jZXBoL0tjb25maWctNS1cdHNlbGVjdCBDRVBIX0xJQlxuZnMvY2VwaC9LY29uZmlnOjY6XHRzZWxlY3QgTkVURlNfU1VQUE9SVFxuZnMvY2VwaC9LY29uZmlnLTctXHRzZWxlY3QgRlNfRU5DUllQVElPTl9BTEdTIGlmIEZTX0VOQ1JZUFRJT05cbi0tXG5mcy9uZnMvS2NvbmZpZz0xNzM9Y29uZmlnIE5GU19GU0NBQ0hFXG4tLVxuZnMvbmZzL0tjb25maWctMTc1LVx0ZGVwZW5kcyBvbiBORlNfRlNcbmZzL25mcy9LY29uZmlnOjE3NjpcdHNlbGVjdCBORVRGU19TVVBQT1JUXG5mcy9uZnMvS2NvbmZpZy0xNzctXHRzZWxlY3QgRlNDQUNIRVxuLS1cbmZzL3NtYi9jbGllbnQvS2NvbmZpZz0yPWNvbmZpZyBDSUZTXG4tLVxuZnMvc21iL2NsaWVudC9LY29uZmlnLTIwLVx0c2VsZWN0IE9JRF9SRUdJU1RSWVxuZnMvc21iL2NsaWVudC9LY29uZmlnOjIxOlx0c2VsZWN0IE5FVEZTX1NVUFBPUlRcbmZzL3NtYi9jbGllbnQvS2NvbmZpZy0yMi1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDU6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAwNAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWZpbmluZyB0aGUgTmV0d29yayBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24gU3RyYXRlZ3kqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZpbGVzeXN0ZW0gY29uZmlndXJhdGlvbnMsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZXkmIzM5O3JlIGxldmVyYWdpbmcgYE5FVEZTX1NVUFBPUlRgLiBUaGUgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBzaW1wbHkgbGlzdCBgTkVURlNfU1VQUE9SVGAgb3IgcGVyaGFwcyBgRlNDQUNIRWAgYWxvbmcgd2l0aCBhIHNwZWNpZmljIG5ldHdvcmsgZmlsZXN5c3RlbSBsaWtlIGBDSUZTYCBvciBgOVBfRlNgIGluIHRoZSBtZW51LiBUaGF0IHNlZW1lZCBjbGVhbi4KCkJ1dCB0aGVuLCBhIHNsaWdodCBjb3JyZWN0aW9uLiBgTkVURlNfU1VQUE9SVGAgaXNuJiMzOTt0IGRpcmVjdGx5IHVzZXItc2VsZWN0YWJsZSwgaXQmIzM5O3MgYSAqZGVwZW5kZW5jeSouIFNvLCBqdXN0IGxpc3RpbmcgaXQgd291bGRuJiMzOTt0IGJlIHF1aXRlIHJpZ2h0IGZvciB0aGUgdXNlci4gT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgaXQgKmlzKiBzZWxlY3RhYmxlIHRvIGdpdmUgdGhlIHVzZXIgY29ycmVjdCBjb250ZXh0LgoKSSBuZWVkIHRvIGdvIGRlZXBlciBpbnRvIHRoZSBzb3VyY2UsIHNwZWNpZmljYWxseSBgZnMvbmV0ZnMvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNvbnRyb2wgZm9yIGBORVRGU19TVVBQT1JUYCBsaWtlbHkgcmVzaWRlcy4gR290dGEgY2hlY2sgdGhhdCBLY29uZmlnIGZpbGUgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAwNTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVURlNfU1VQUE9SVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL25ldGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbmV0ZnMvS2NvbmZpZy0yLVxuZnMvbmV0ZnMvS2NvbmZpZzozOmNvbmZpZyBORVRGU19TVVBQT1JUXG5mcy9uZXRmcy9LY29uZmlnLTQtXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAwNTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzgyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTmF2aWdhdGluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gTGFieXJpbnRoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHRyaXN0YXRlIG9wdGlvbiwgYW5kIHdpdGhvdXQgYSBkaXJlY3QgcHJvbXB0LCBJIGNhbiYjMzk7dCBqdXN0IGZsaXAgYENPTkZJR19ORVRGU19TVVBQT1JUPXlgLiBUaGF0JiMzOTtzIGEgbm8tZ28uIEkgbmVlZCBhIHRyaWdnZXIsIHNvbWV0aGluZyB0aGF0ICpzZWxlY3RzKiB0aGlzIGZ1bmN0aW9uYWxpdHkuIExldCYjMzk7cyB0aGluay4uLiBgQ0lGU2AsIGA5UF9GU2AsIGBDRVBIX0ZTYCwgb3IgZXZlbiBgQUZTX0ZTYCBzZWVtIGxpa2UgcG90ZW50aWFsIGNhbmRpZGF0ZXMuIFRoZXkmIzM5O3JlIGFsbCBuZXR3b3JrIGZpbGVzeXN0ZW0gb3B0aW9ucywgc28gdGhleSYjMzk7cmUgbGlrZWx5IGRlcGVuZGVuY2llcy4gSSBzaG91bGQgcHJvYmFibHkgbGlzdCBgQ0lGU2AgYW5kIGA5UF9GU2AgYXMgbXkgdG9wIGNob2ljZXMgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gV2FpdCBhIHNlY29uZCwgaG9sZCBvbi4uLiBgRlNDQUNIRWAgaXMgdXNlci1zZWxlY3RhYmxlLCBhbmQgdGhhdCBoYXMgdGhlIHBvdGVudGlhbCB0byBkcmFnIHRoaXMgaW4uIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gZmFjdG9yIHRoYXQgaW50byBteSBwbGFuLiBUaGlzIG1heSB0YWtlIGEgbGl0dGxlIG1vcmUgZGlnZ2luZyB0aGFuIEkgaW5pdGlhbGx5IHRob3VnaHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDA1OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGU0NBQ0hFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbmV0ZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9uZXRmcy9LY29uZmlnPTI1PWNvbmZpZyBORVRGU19ERUJVR1xuLS1cbmZzL25ldGZzL0tjb25maWctMzItXG5mcy9uZXRmcy9LY29uZmlnOjMzOmNvbmZpZyBGU0NBQ0hFXG5mcy9uZXRmcy9LY29uZmlnLTM0LVx0Ym9vbCBcJiMzNDtHZW5lcmFsIGZpbGVzeXN0ZW0gbG9jYWwgY2FjaGluZyBtYW5hZ2VyXCYjMzQ7XG4tLVxuZnMvbmV0ZnMvS2NvbmZpZy00My1cbmZzL25ldGZzL0tjb25maWc6NDQ6Y29uZmlnIEZTQ0FDSEVfU1RBVFNcbmZzL25ldGZzL0tjb25maWctNDUtXHRib29sIFwmIzM0O0dhdGhlciBzdGF0aXN0aWNhbCBpbmZvcm1hdGlvbiBvbiBsb2NhbCBjYWNoaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDA1OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MjQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQ2hlY2tpbmcgRmlsZXN5c3RlbSBDYWNoZSBEZXBlbmRlbmN5KioKCkFscmlnaHQsIG15IGludGVybmFsIGNoZWNrbGlzdCBoYXMgZmxhZ2dlZCBzb21ldGhpbmcgcG90ZW50aWFsbHkgc2lnbmlmaWNhbnQuIE15IHRob3VnaHQgcHJvY2VzcyBpcyBjZW50ZXJlZCBhcm91bmQgZW5zdXJpbmcgdGhhdCB0aGUgYEZTQ0FDSEVgIG9wdGlvbiBwcm9wZXJseSBzZWxlY3RzIHRoZSBgTkVURlNfU1VQUE9SVGAgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byBjb25maXJtIHRoZSBkZXBlbmRlbmN5LiBUaGlzIGlzIGNydWNpYWwgZm9yIGF2b2lkaW5nIGFueSB1bmV4cGVjdGVkIHJlZ3Jlc3Npb25zIG9yIG1pc2NvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gbmV0d29yayBmaWxlc3lzdGVtIGNhY2hpbmcsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggY29tcGxleCBvciBwZXJmb3JtYW5jZS1zZW5zaXRpdmUgc3lzdGVtcy4gQSBtaXNzaW5nIGRlcGVuZGVuY3kgaGVyZSB3b3VsZCBiZSBhIGNyaXRpY2FsIG92ZXJzaWdodCwgbGVhZGluZyB0byBwb3RlbnRpYWxseSBzdWJ0bGUgYW5kIGZydXN0cmF0aW5nIGRlYnVnZ2luZyBzY2VuYXJpb3MgZG93biB0aGUgbGluZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSB0aGUgS2NvbmZpZyByZWxhdGlvbnNoaXAgYmV0d2VlbiBgRlNDQUNIRWAgYW5kIGBORVRGU19TVVBQT1JUYCB0byBlbnN1cmUgdGhleSYjMzk7cmUgbGlua2VkIGFzIGV4cGVjdGVkLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoaXMgaXMgb2Z0ZW4gYSBjb21tb24gYXJlYSBmb3Igb3ZlcnNpZ2h0IGR1cmluZyBjb2RlIGludGVncmF0aW9uIG9yIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgc28gSSYjMzk7bSBkb3VibGUtY2hlY2tpbmcgYXMgYSBtYXR0ZXIgb2YgZHVlIGRpbGlnZW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDU6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgTkVURlNfU1VQUE9SVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL25ldGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAwNTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDgwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBgRlNDQUNIRWAgRGVwZW5kZW5jeSoqCgpIbW0sIHNvIEkgbmVlZCB0byBjbGFyaWZ5IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBgRlNDQUNIRWAgYW5kIGBORVRGU19TVVBQT1JUYC4gSXMgYEZTQ0FDSEVgIGFjdHVhbGx5ICpkZXBlbmRlbnQqIG9uIGBORVRGU19TVVBQT1JUYCwgb3IgZG9lcyBpdCBqdXN0ICpzZWxlY3QqIGl0PyBUaGlzIGlzbiYjMzk7dCBpbW1lZGlhdGVseSBvYnZpb3VzLCBhbmQgdGhhdCBhbWJpZ3VpdHkgaXMgYSBwcm9ibGVtIGZvciBwcm9wZXIgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50LiBUbyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLCB0aGUgbW9zdCByZWxpYWJsZSBhcHByb2FjaCBpcyB0byBkaXJlY3RseSBleGFtaW5lIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZXNlIGtpbmRzIG9mIGRlcGVuZGVuY2llcy4gVGhhdCYjMzk7cyBgZnMvbmV0ZnMvS2NvbmZpZ2AuIExldCYjMzk7cyBkaWcgaW4gdGhlcmUgYW5kIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGUgaGFzIHRvIHNheS4gTm8gYXNzdW1wdGlvbnMsIGp1c3QgdGhlIHNvdXJjZSBvZiB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uLiBUaGF0JiMzOTtsbCBnaXZlIGEgZGVmaW5pdGl2ZSBhbnN3ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDA1OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvbmV0ZnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdFxuICAgMzpcdGNvbmZpZyBORVRGU19TVVBQT1JUXG4gICA0Olx0XHR0cmlzdGF0ZVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIG5ldHdvcmsgZmlsZXN5c3RlbXMsIGluY2x1ZGluZ1xuICAgNzpcdFx0ICBoZWxwZXJzIGZvciBoaWdoLWxldmVsIGJ1ZmZlcmVkIEkvTywgYWJzdHJhY3Rpbmcgb3V0IHJlYWRcbiAgIDg6XHRcdCAgc2VnbWVudGF0aW9uLCBsb2NhbCBjYWNoaW5nIGFuZCB0cmFuc3BhcmVudCBodWdlIHBhZ2Ugc3VwcG9ydC5cbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgTkVURlNfU1RBVFNcbiAgMTE6XHRcdGJvb2wgXCYjMzQ7R2F0aGVyIHN0YXRpc3RpY2FsIGluZm9ybWF0aW9uIG9uIGxvY2FsIGNhY2hpbmdcJiMzNDtcbiAgMTI6XHRcdGRlcGVuZHMgb24gTkVURlNfU1VQUE9SVCBcdTAwMjZcdTAwMjYgUFJPQ19GU1xuICAxMzpcdFx0aGVscFxuICAxNDpcdFx0ICBUaGlzIG9wdGlvbiBjYXVzZXMgc3RhdGlzdGljYWwgaW5mb3JtYXRpb24gdG8gYmUgZ2F0aGVyZWQgb24gbG9jYWxcbiAgMTU6XHRcdCAgY2FjaGluZyBhbmQgZXhwb3J0ZWQgdGhyb3VnaCBmaWxlOlxuICAxNjpcdFxuICAxNzpcdFx0XHQvcHJvYy9mcy9mc2NhY2hlL3N0YXRzXG4gIDE4Olx0XG4gIDE5Olx0XHQgIFRoZSBnYXRoZXJpbmcgb2Ygc3RhdGlzdGljcyBhZGRzIGEgY2VydGFpbiBhbW91bnQgb2Ygb3ZlcmhlYWQgdG9cbiAgMjA6XHRcdCAgZXhlY3V0aW9uIGFzIHRoZXJlIGFyZSBhIHF1aXRlIGEgZmV3IHN0YXRzIGdhdGhlcmVkLCBhbmQgb24gYVxuICAyMTpcdFx0ICBtdWx0aS1DUFUgc3lzdGVtIHRoZXNlIG1heSBiZSBvbiBjYWNoZWxpbmVzIHRoYXQga2VlcCBib3VuY2luZ1xuICAyMjpcdFx0ICBiZXR3ZWVuIENQVXMuICBPbiB0aGUgb3RoZXIgaGFuZCwgdGhlIHN0YXRzIGFyZSB2ZXJ5IHVzZWZ1bCBmb3JcbiAgMjM6XHRcdCAgZGVidWdnaW5nIHB1cnBvc2VzLiAgU2F5aW5nICYjMzk7WSYjMzk7IGhlcmUgaXMgcmVjb21tZW5kZWQuXG4gIDI0Olx0XG4gIDI1Olx0Y29uZmlnIE5FVEZTX0RFQlVHXG4gIDI2Olx0XHRib29sIFwmIzM0O0VuYWJsZSBkeW5hbWljIGRlYnVnZ2luZyBuZXRmc2xpYiBhbmQgRlMtQ2FjaGVcJiMzNDtcbiAgMjc6XHRcdGRlcGVuZHMgb24gTkVURlNfU1VQUE9SVFxuICAyODpcdFx0aGVscFxuICAyOTpcdFx0ICBUaGlzIHBlcm1pdHMgZGVidWdnaW5nIHRvIGJlIGR5bmFtaWNhbGx5IGVuYWJsZWQgaW4gdGhlIGxvY2FsIGNhY2hpbmdcbiAgMzA6XHRcdCAgbWFuYWdlbWVudCBtb2R1bGUuICBJZiB0aGlzIGlzIHNldCwgdGhlIGRlYnVnZ2luZyBvdXRwdXQgbWF5IGJlXG4gIDMxOlx0XHQgIGVuYWJsZWQgYnkgc2V0dGluZyBiaXRzIGluIC9zeXMvbW9kdWxlL25ldGZzL3BhcmFtZXRlcnMvZGVidWcuXG4gIDMyOlx0XG4gIDMzOlx0Y29uZmlnIEZTQ0FDSEVcbiAgMzQ6XHRcdGJvb2wgXCYjMzQ7R2VuZXJhbCBmaWxlc3lzdGVtIGxvY2FsIGNhY2hpbmcgbWFuYWdlclwmIzM0O1xuICAzNTpcdFx0ZGVwZW5kcyBvbiBORVRGU19TVVBQT1JUXG4gIDM2Olx0XHRoZWxwXG4gIDM3Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgYSBnZW5lcmljIGZpbGVzeXN0ZW0gY2FjaGluZyBtYW5hZ2VyIHRoYXQgY2FuIGJlXG4gIDM4Olx0XHQgIHVzZWQgYnkgdmFyaW91cyBuZXR3b3JrIGFuZCBvdGhlciBmaWxlc3lzdGVtcyB0byBjYWNoZSBkYXRhIGxvY2FsbHkuXG4gIDM5Olx0XHQgIERpZmZlcmVudCBzb3J0cyBvZiBjYWNoZXMgY2FuIGJlIHBsdWdnZWQgaW4sIGRlcGVuZGluZyBvbiB0aGVcbiAgNDA6XHRcdCAgcmVzb3VyY2VzIGF2YWlsYWJsZS5cbiAgNDE6XHRcbiAgNDI6XHRcdCAgU2VlIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2FjaGluZy9mc2NhY2hlLnJzdCBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgNDM6XHRcbiAgNDQ6XHRjb25maWcgRlNDQUNIRV9TVEFUU1xuICA0NTpcdFx0Ym9vbCBcJiMzNDtHYXRoZXIgc3RhdGlzdGljYWwgaW5mb3JtYXRpb24gb24gbG9jYWwgY2FjaGluZ1wmIzM0O1xuICA0NjpcdFx0ZGVwZW5kcyBvbiBGU0NBQ0hFIFx1MDAyNlx1MDAyNiBQUk9DX0ZTXG4gIDQ3Olx0XHRzZWxlY3QgTkVURlNfU1RBVFNcbiAgNDg6XHRcdGhlbHBcbiAgNDk6XHRcdCAgVGhpcyBvcHRpb24gY2F1c2VzIHN0YXRpc3RpY2FsIGluZm9ybWF0aW9uIHRvIGJlIGdhdGhlcmVkIG9uIGxvY2FsXG4gIDUwOlx0XHQgIGNhY2hpbmcgYW5kIGV4cG9ydGVkIHRocm91Z2ggZmlsZTpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzAwMQoJCQkJCQkJb3V0cHV0OiAxNjIKCQkJCQkJCXRob3VnaHRzOiAzNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IG5ldGZzX3BncHJpdjJfY29weV9mb2xpbyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoZSBkZXBlbmRlbmN5OiBgRlNDQUNIRWAgcmVsaWVzIG9uIGBORVRGU19TVVBQT1JUYC4gVG8gZ2V0IGBORVRGU19TVVBQT1JUYCBnb2luZywgSSBuZWVkIHRvIGVuYWJsZSBvbmUgb2YgdGhlIG5ldHdvcmsgZmlsZXN5c3RlbSBvcHRpb25zOiBgQ0lGU2AsIGA5UF9GU2AsIGBDRVBIX0ZTYCwgb3IgYEFGU19GU2AuIExldCBtZSBsaXN0IHRob3NlIG91dCBhZ2FpbjogYENJRlNgLCBgOVBfRlNgLCBgQUZTX0ZTYCwgYENFUEhfRlNgLCBhbmQgb2YgY291cnNlIGBGU0NBQ0hFYCBpdHNlbGYuCgpUaGUga2V5IGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVlbiBtb2RpZmllZCBoZXJlIGlzIGBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW9gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgcmVhY2hhYmxlIHRoaXMgY29kZSBwYXRoIGlzLiBMZXQgbWUgdHJhY2UgdGhhdC4gUmlnaHQsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGVgLCB3aGljaCBpbiB0dXJuIGdldHMgY2FsbGVkIGJ5IGBuZXRmc191bmxvY2tfcmVhZF9mb2xpb2AgKmlmKiB0aGUgYE5FVEZTX1JSRVFfRk9MSU9fQ09QWV9UT19DQUNIRWAgZmxhZyBpcyBzZXQuIFRoYXQgc3VnZ2VzdHMgaXQmIzM5O3MgaW52b2x2ZWQgd2hlbiBjYWNoaW5nIGlzIGFjdHVhbGx5ICp1c2VkKi4KClRoZSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgcmVhbGx5IG9uIHRob3NlIHR3byBmdW5jdGlvbnM6IGBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW9gIGFuZCBgbmV0ZnNfcGdwcml2Ml9jb3B5X3RvX2NhY2hlYC4gQ29uc2lkZXJpbmcgdGhhdCBgbmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvYCBnZXRzIGNhbGxlZCBmb3IgZXZlcnkgZm9saW8gY29waWVkIGludG8gdGhlIGNhY2hlLCBteSBpbnN0aW5jdHMgdGVsbCBtZSB0aGlzIGlzIHByb2JhYmx5IGEgaG90IHBhdGguIFRoYXQgbWFrZXMgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gTGV0JiMzOTtzIG1hcmsgdGhpcyBhcyBgV29ydGhGdXp6aW5nPXRydWVgLgoKU28sIHRoZSBjb25maWcgb3B0aW9ucyBJIG5lZWQgdG8gY29uc2lkZXIgZm9yIHRoaXMgZnV6emluZyBhcmU6IGBDSUZTYCwgYDlQX0ZTYCwgYENFUEhfRlNgLCBgQUZTX0ZTYCwgYW5kIGBGU0NBQ0hFYC4KClVsdGltYXRlbHksIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgZnVuY3Rpb25hbCBpc3N1ZS4gVGhlIGZpeCBhcHBlYXJzIHRvIGFkZCBhIG1pc3NpbmcgY2FsbCB0byBgZm9saW9fZW5kX3ByaXZhdGVfMmAgaW4gYG5ldGZzX3BncHJpdjJfY29weV9mb2xpb2AgaWYgYHJvbGxpbmdfYnVmZmVyX2FwcGVuZGAgZmFpbHMuIFRoZSBmYWN0IHRoYXQgdGhlIHRhcmdldCBpcyBhIG5ldHdvcmsgZmlsZXN5c3RlbSB3aGljaCB1c2VzIGBmc2NhY2hlYCBhZGRzIHRvIGl0cyBpbXBvcnRhbmNlLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O2xsIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBjb2RlIGluIGBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW9gIGFuZCBgbmV0ZnNfcGdwcml2Ml9jb3B5X3RvX2NhY2hlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDU6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NJRlMmIzM0OywKICAgICYjMzQ7OVBfRlMmIzM0OywKICAgICYjMzQ7Q0VQSF9GUyYjMzQ7LAogICAgJiMzNDtBRlNfRlMmIzM0OywKICAgICYjMzQ7RlNDQUNIRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25ldGZzX3BncHJpdjJfY29weV9mb2xpbyYjMzQ7LAogICAgJiMzNDtuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtaXNzaW5nIGZvbGlvX2VuZF9wcml2YXRlXzIoKSBjYWxsIGluIG5ldGZzX3BncHJpdjJfY29weV9mb2xpbygpIHdoZW4gYXBwZW5kaW5nIHRvIHRoZSByb2xsaW5nIGJ1ZmZlciBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXRmcyBsaWJyYXJ5LCB3aGljaCBpcyB1c2VkIGJ5IG5ldHdvcmsgZmlsZXN5c3RlbXMgKGxpa2UgQ0lGUywgOVAsIENlcGgsIEFGUykgZm9yIGxvY2FsIGNhY2hpbmcgKGZzY2FjaGUpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDSUZTJiMzNDssCiAgICAmIzM0OzlQX0ZTJiMzNDssCiAgICAmIzM0O0NFUEhfRlMmIzM0OywKICAgICYjMzQ7QUZTX0ZTJiMzNDssCiAgICAmIzM0O0ZTQ0FDSEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW8mIzM0OywKICAgICYjMzQ7bmV0ZnNfcGdwcml2Ml9jb3B5X3RvX2NhY2hlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWlzc2luZyBmb2xpb19lbmRfcHJpdmF0ZV8yKCkgY2FsbCBpbiBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW8oKSB3aGVuIGFwcGVuZGluZyB0byB0aGUgcm9sbGluZyBidWZmZXIgZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZnMgbGlicmFyeSwgd2hpY2ggaXMgdXNlZCBieSBuZXR3b3JrIGZpbGVzeXN0ZW1zIChsaWtlIENJRlMsIDlQLCBDZXBoLCBBRlMpIGZvciBsb2NhbCBjYWNoaW5nIChmc2NhY2hlKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA1OjM5OjM2LjY5NDYxMjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODg5MTE2NjM3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDSUZTXCIsXG4gICAgXCI5UF9GU1wiLFxuICAgIFwiQ0VQSF9GU1wiLFxuICAgIFwiQUZTX0ZTXCIsXG4gICAgXCJGU0NBQ0hFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvXCIsXG4gICAgXCJuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1pc3NpbmcgZm9saW9fZW5kX3ByaXZhdGVfMigpIGNhbGwgaW4gbmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvKCkgd2hlbiBhcHBlbmRpbmcgdG8gdGhlIHJvbGxpbmcgYnVmZmVyIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldGZzIGxpYnJhcnksIHdoaWNoIGlzIHVzZWQgYnkgbmV0d29yayBmaWxlc3lzdGVtcyAobGlrZSBDSUZTLCA5UCwgQ2VwaCwgQUZTKSBmb3IgbG9jYWwgY2FjaGluZyAoZnNjYWNoZSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA1OjM5OjM2LjY5NDYxNzU2OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIzNzE3NTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOTJkZWNhMmYxNmYzZjliMzU5M2M4ZTBjYzFlMzcyNGVjMjNkNGU3Y1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCA0IDA1OjM5OjM1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL25ldGZzL3JlYWRfcGdwcml2Mi5jIGIvZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmNcXG5pbmRleCBhMTQ4OWFhMjlmNzgyYS4uN2VhY2M1OGFiYWRiNzMgMTAwNjQ0XFxuLS0tIGEvZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmNcXG4rKysgYi9mcy9uZXRmcy9yZWFkX3BncHJpdjIuY1xcbkBAIC01NCw2ICs1NCw3IEBAIHN0YXRpYyB2b2lkIG5ldGZzX3BncHJpdjJfY29weV9mb2xpbyhzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqY3JlcSwgc3RydWN0IGZvbGlvXFxuIFxcbiBcXHQvKiBBdHRhY2ggdGhlIGZvbGlvIHRvIHRoZSByb2xsaW5nIGJ1ZmZlci4gKi9cXG4gXFx0aWYgKHJvbGxpbmdfYnVmZmVyX2FwcGVuZChcXHUwMDI2Y3JlcS1cXHUwMDNlYnVmZmVyLCBmb2xpbywgMCkgXFx1MDAzYyAwKSB7XFxuK1xcdFxcdGZvbGlvX2VuZF9wcml2YXRlXzIoZm9saW8pO1xcbiBcXHRcXHRjbGVhcl9iaXQoTkVURlNfUlJFUV9GT0xJT19DT1BZX1RPX0NBQ0hFLCBcXHUwMDI2Y3JlcS1cXHUwMDNlZmxhZ3MpO1xcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDU6Mzk6MzcuMTE5MDQyNzk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODQ2NjcyNzI0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDSUZTXCIsXG4gICAgXCI5UF9GU1wiLFxuICAgIFwiQ0VQSF9GU1wiLFxuICAgIFwiQUZTX0ZTXCIsXG4gICAgXCJGU0NBQ0hFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvXCIsXG4gICAgXCJuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1pc3NpbmcgZm9saW9fZW5kX3ByaXZhdGVfMigpIGNhbGwgaW4gbmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvKCkgd2hlbiBhcHBlbmRpbmcgdG8gdGhlIHJvbGxpbmcgYnVmZmVyIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldGZzIGxpYnJhcnksIHdoaWNoIGlzIHVzZWQgYnkgbmV0d29yayBmaWxlc3lzdGVtcyAobGlrZSBDSUZTLCA5UCwgQ2VwaCwgQUZTKSBmb3IgbG9jYWwgY2FjaGluZyAoZnNjYWNoZSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTJkZWNhMmYxNmYzZjliMzU5M2M4ZTBjYzFlMzcyNGVjMjNkNGU3Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDQgMDU6Mzk6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9uZXRmcy9yZWFkX3BncHJpdjIuYyBiL2ZzL25ldGZzL3JlYWRfcGdwcml2Mi5jXG5pbmRleCBhMTQ4OWFhMjlmNzgyYS4uN2VhY2M1OGFiYWRiNzMgMTAwNjQ0XG4tLS0gYS9mcy9uZXRmcy9yZWFkX3BncHJpdjIuY1xuKysrIGIvZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmNcbkBAIC01NCw2ICs1NCw3IEBAIHN0YXRpYyB2b2lkIG5ldGZzX3BncHJpdjJfY29weV9mb2xpbyhzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqY3JlcSwgc3RydWN0IGZvbGlvXG4gXG4gXHQvKiBBdHRhY2ggdGhlIGZvbGlvIHRvIHRoZSByb2xsaW5nIGJ1ZmZlci4gKi9cbiBcdGlmIChyb2xsaW5nX2J1ZmZlcl9hcHBlbmQoXHUwMDI2Y3JlcS1cdTAwM2VidWZmZXIsIGZvbGlvLCAwKSBcdTAwM2MgMCkge1xuK1x0XHRmb2xpb19lbmRfcHJpdmF0ZV8yKGZvbGlvKTtcbiBcdFx0Y2xlYXJfYml0KE5FVEZTX1JSRVFfRk9MSU9fQ09QWV9UT19DQUNIRSwgXHUwMDI2Y3JlcS1cdTAwM2VmbGFncyk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA1OjM5OjM3LjExOTA0NDU3OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NjcyMTQ0MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBmcy9uZXRmcy9yZWFkX3BncHJpdjIuY2AgY2hhbmdlLlxuXG4qKkV4YW1pbmluZyB0aGUgRm9saW8gSGFuZGxpbmcgaW4gYG5ldGZzYCoqXG5cblJpZ2h0LCBzbyB0aGVyZSdzIGEgcGF0Y2ggaGVyZSwgYW5kIGl0J3MgdG91Y2hpbmcgYHJlYWRfcGdwcml2Mi5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhZGRpbmcgYSBgZm9saW9fZW5kX3ByaXZhdGVfMihmb2xpbyk7YCBjYWxsLiBUaGUgY3J1Y2lhbCBwYXJ0IGhlcmUgaXMgKndoZW4qIGl0J3MgYmVpbmcgYWRkZWQ6IHNwZWNpZmljYWxseSwgd2hlbiBgcm9sbGluZ19idWZmZXJfYXBwZW5kYCBmYWlscy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQncyBgcm9sbGluZ19idWZmZXJfYXBwZW5kYCBkb2luZywgYW5kIHdoeSB3b3VsZCBpdCBmYWlsIGluIGEgd2F5IHRoYXQgcmVxdWlyZXMgdGhpcyBraW5kIG9mIGNsZWFudXA/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkYXRhIHN0cnVjdHVyZXMgYW5kIGNvbnRyb2wgZmxvdyBhcm91bmQgdGhhdCBmdW5jdGlvbi4gSXMgdGhpcyBhIG5ldyBmYWlsdXJlIGNhc2UsIG9yIGlzIHRoaXMgZXJyb3IgaGFuZGxpbmcgYmVpbmcgZXhwbGljaXRseSBjb3JyZWN0ZWQ/IFRoZSBgZm9saW9fZW5kX3ByaXZhdGVfMmAgZnVuY3Rpb24gbGlrZWx5IG5lZWRzIHRvIGJlIGludmVzdGlnYXRlZC4gV2hhdCBleGFjdGx5IGRvZXMgaXQgZG8/IE15IGV4cGVyaWVuY2Ugc2F5cyB0aGlzIGlzIGxpa2VseSByZWxlYXNpbmcgcmVzb3VyY2VzLiBCdXQgaW4gd2hhdCBjb250ZXh0LCBhbmQgd2hhdCByZXNvdXJjZXMgYXJlIHdlIGRlYWxpbmcgd2l0aD8gTGV0J3MgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg0OSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDU6Mzk6NDAuNjg2MjYxNzMxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2OTMzNzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldGZzX3BncHJpdjJfY29weV9mb2xpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9uZXRmcy9yZWFkX3BncHJpdjIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9uZXRmcy9yZWFkX3BncHJpdjIuYy0xOC0gKi9cXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYzoxOTpzdGF0aWMgdm9pZCBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW8oc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKmNyZXEsIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtMjAte1xcbi0tXFxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmM9MTMzPXZvaWQgbmV0ZnNfcGdwcml2Ml9jb3B5X3RvX2NhY2hlKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtMTQzLVxcdGZvbGlvX3N0YXJ0X3ByaXZhdGVfMihmb2xpbyk7XFxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmM6MTQ0OlxcdG5ldGZzX3BncHJpdjJfY29weV9mb2xpbyhjcmVxLCBmb2xpbyk7XFxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtMTQ1LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDU6Mzk6NDAuNzQzMjA5MDE3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc5NzkxNDg3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBhIERhdGEgQ29weSBQYXRoIGluIE5ldEZTKipcblxuT2theSwgc28gSSBzZWUgYG5ldGZzX3BncHJpdjJfY29weV9mb2xpb2AgaXMgYmVpbmcgY2FsbGVkIGZyb20gYG5ldGZzX3BncHJpdjJfY29weV90b19jYWNoZWAuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIHVzdWFsbHkgbWVhbnMgd2UgaGF2ZSBhIGZ1bmN0aW9uIGNvcHlpbmcgZGF0YSBmcm9tIG9uZSBsb2NhdGlvbiB0byBhbm90aGVyLiBUbyB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGRhdGEgZmxvdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgbmV0ZnNfcGdwcml2Ml9jb3B5X3RvX2NhY2hlYCBpcyBkb2luZywgc28gbGV0J3Mgc3RhcnQgdGhlcmUuIEknbGwgbmVlZCB0byBkaWcgaW50byBgbmV0ZnNfcGdwcml2Ml9jb3B5X3RvX2NhY2hlYCB0byBzZWUgd2hhdCBpbmZvcm1hdGlvbiBpdCdzIHBhc3NpbmcgdG8gdGhlIGBjb3B5X2ZvbGlvYCBmdW5jdGlvbiwgYW5kIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkLiBGcm9tIHRoYXQgcG9pbnQsIEkgY2FuIGZvcm0gYSBiZXR0ZXIgaWRlYSBhYm91dCBob3cgdGhlIGRhdGEgY29waWVzIGFyZSBwZXJmb3JtZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MDUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQwNTozOTo0My41NDExMjU4NjhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM4MTM3NTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldGZzX3BncHJpdjJfY29weV90b19jYWNoZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9uZXRmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbmV0ZnMvaW50ZXJuYWwuaD0xMTQ9dm9pZCBuZXRmc19jYWNoZV9yZWFkX3Rlcm1pbmF0ZWQodm9pZCAqcHJpdiwgc3NpemVfdCB0cmFuc2ZlcnJlZF9vcl9lcnJvcik7XFxuLS1cXG5mcy9uZXRmcy9pbnRlcm5hbC5oLTExOC0gKi9cXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjExOTp2b2lkIG5ldGZzX3BncHJpdjJfY29weV90b19jYWNoZShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqcnJlcSwgc3RydWN0IGZvbGlvICpmb2xpbyk7XFxuZnMvbmV0ZnMvaW50ZXJuYWwuaC0xMjAtdm9pZCBuZXRmc19wZ3ByaXYyX2VuZF9jb3B5X3RvX2NhY2hlKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxKTtcXG4tLVxcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jPTQyPXN0YXRpYyB2b2lkIG5ldGZzX3VubG9ja19yZWFkX2ZvbGlvKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxLFxcbi0tXFxuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmMtODEtXFx0XFx0aWYgKHRlc3RfYml0KE5FVEZTX1JSRVFfRk9MSU9fQ09QWV9UT19DQUNIRSwgXFx1MDAyNnJyZXEtXFx1MDAzZWZsYWdzKSlcXG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYzo4MjpcXHRcXHRcXHRuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGUocnJlcSwgZm9saW8pO1xcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jLTgzLVxcdH1cXG4tLVxcbmZzL25ldGZzL3JlYWRfcGdwcml2Mi5jPTk4PXN0YXRpYyBzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqbmV0ZnNfcGdwcml2Ml9iZWdpbl9jb3B5X3RvX2NhY2hlKFxcbi0tXFxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtMTMyLSAqL1xcbmZzL25ldGZzL3JlYWRfcGdwcml2Mi5jOjEzMzp2b2lkIG5ldGZzX3BncHJpdjJfY29weV90b19jYWNoZShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqcnJlcSwgc3RydWN0IGZvbGlvICpmb2xpbylcXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYy0xMzQte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQwNTozOTo0My42NzkyNjkwNzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjMyOTAzMTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIG5ldGZzIExpYnJhcnkgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBjaGFuZ2UgYXBwZWFycyB0byBiZSB3aXRoaW4gdGhlIGBuZXRmc2AgbGlicmFyeSwgd2hpY2ggaXMgYSBrZXkgY29tcG9uZW50IGZvciBob3cgbmV0d29yayBmaWxlc3lzdGVtcyBsaWtlIEFGUywgQ2VwaCwgYW5kIENJRlMgbWFuYWdlIHRoZWlyIGxvY2FsIGNhY2hpbmcgbWVjaGFuaXNtcywgc3BlY2lmaWNhbGx5LCBgZnNjYWNoZWAuIEZ1bmN0aW9uYWxseSwgaXQncyBhIGZpeCwgd2hpY2ggaXMgYWx3YXlzIGdvb2QuIFRoZSBzcGVjaWZpYyBpc3N1ZSBpcyBhIG1pc3NpbmcgYGZvbGlvX2VuZF9wcml2YXRlXzJgIGNhbGwgd2hlbiBhcHBlbmRpbmcgdG8gdGhlIHJvbGxpbmcgYnVmZmVyIGZhaWxzLiBUaGF0IG1ha2VzIHNlbnNlOyBmYWlsdXJlIHN0YXRlcyBuZWVkIHByb3BlciBjbGVhbnVwLCBhbmQgSSB3b3VsZCBoYXZlIGV4cGVjdGVkIGEgY2hlY2sgZm9yIHRoaXMgdHlwZSBvZiB0aGluZyBpbiB0aGUgZXhpc3RpbmcgY29kZSwgYnV0IHRoZXNlIHRoaW5ncyBoYXBwZW4uXG5cbk5vdywgbGV0J3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYG5ldGZzYC4gVW5kZXJzdGFuZGluZyBob3cgdGhpcyBsaWJyYXJ5IGlzIGNvbmZpZ3VyZWQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHdpZGVyIGNvbnRleHQgb2YgdGhpcyBjaGFuZ2UsIGFuZCBob3cgaXQgbWlnaHQgaW1wYWN0IHZhcmlvdXMgZW52aXJvbm1lbnRzLiBJJ20gZ29pbmcgdG8gbG9vayB0byBzZWUgaWYgdGhpcyBjaGFuZ2UgbWF5IGltcGFjdCBhbnkgb3RoZXIgYXJlYXMsIG9yIGlmIHRoZXJlIGlzIGFueXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgYnJvdWdodCB1cCB3aXRoIHRoZSBjbGllbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwOTYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQwNTozOTo0Ni45MTIxOTU5NDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYyODY3NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVEZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL25ldGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbmV0ZnMvS2NvbmZpZy0yLVxcbmZzL25ldGZzL0tjb25maWc6Mzpjb25maWcgTkVURlNfU1VQUE9SVFxcbmZzL25ldGZzL0tjb25maWctNC1cXHR0cmlzdGF0ZVxcbi0tXFxuZnMvbmV0ZnMvS2NvbmZpZy05LVxcbmZzL25ldGZzL0tjb25maWc6MTA6Y29uZmlnIE5FVEZTX1NUQVRTXFxuZnMvbmV0ZnMvS2NvbmZpZy0xMS1cXHRib29sIFxcXCJHYXRoZXIgc3RhdGlzdGljYWwgaW5mb3JtYXRpb24gb24gbG9jYWwgY2FjaGluZ1xcXCJcXG4tLVxcbmZzL25ldGZzL0tjb25maWctMjQtXFxuZnMvbmV0ZnMvS2NvbmZpZzoyNTpjb25maWcgTkVURlNfREVCVUdcXG5mcy9uZXRmcy9LY29uZmlnLTI2LVxcdGJvb2wgXFxcIkVuYWJsZSBkeW5hbWljIGRlYnVnZ2luZyBuZXRmc2xpYiBhbmQgRlMtQ2FjaGVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA1OjM5OjQ2Ljk2ODQ4NzgzMloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjU5MzA5MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgdXNlcjpcblxuKipJbnZlc3RpZ2F0aW5nIEZTQ2FjaGUgYW5kIE5ldEZTIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGNvbmZpZ3VyYXRpb25zIGN1cnJlbnRseSBpbiBwbGFjZSB0aGF0IG1pZ2h0IGJlIGVuYWJsaW5nIGBmc2NhY2hlYCBvciBgbmV0ZnNgLiBJJ20gdGhpbmtpbmcsIHRoaXMgaXMgcHJvYmFibHkgZ29pbmcgdG8gaW52b2x2ZSBsb29raW5nIGF0IGEgY29tYmluYXRpb24gb2Yga2VybmVsIG1vZHVsZXMgbG9hZGVkLCBtb3VudCBvcHRpb25zLCBhbmQgcGVyaGFwcyBzb21lIHJlbGV2YW50IHN5c3RlbWQgc2VydmljZSBkZWZpbml0aW9ucywgcmlnaHQ/IEknbGwgcHJvYmFibHkgc3RhcnQgd2l0aCB0aGUgbW9yZSBvYnZpb3VzIHBsYWNlcyDigJMgbWF5YmUgYSBxdWljayBgbHNtb2RgIGFuZCB0aGVuIGRpdmUgaW50byBgL2V0Yy9mc3RhYmAgYW5kIGFueSBzeXN0ZW1kIHVuaXQgZmlsZXMgcmVsYXRlZCB0byBuZXR3b3JrIGZpbGUgc3lzdGVtcy4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIGNoZWNrIGFueSBwb3RlbnRpYWwgb3ZlcnJpZGVzIGluIGAvZXRjL21vZHByb2JlLmQvYCBhcyB3ZWxsLCBqdXN0IGluIGNhc2Ugc29tZW9uZSBnb3QgZmFuY3kgd2l0aCBzb21lIGtlcm5lbCBtb2R1bGUgYmxhY2tsaXN0aW5nIG9yIG9wdGlvbnMuIEdvdHRhIGJlIHRob3JvdWdoLiBBbHNvLCBJIGJldHRlciBjaGVjayBmb3IgYW55IHJlbGF0ZWQgcGFyYW1ldGVycyBpbiB0aGUga2VybmVsIGNvbW1hbmQgbGluZSwganVzdCB0byBjb3ZlciBhbGwgYmFzZXMgYW5kIGVuc3VyZSBJIGRvbid0IG1pc3MgYW55dGhpbmcgdGhhdCBtaWdodCBoYXZlIGJlZW4gc2V0IGR1cmluZyBib290LiBJJ20gaW1hZ2luaW5nIGl0J3MgZ29pbmcgdG8gYmUgYSBxdWljayBzd2VlcCBvZiBrZXkgZmlsZXMsIGJ1dCB5b3UgbmV2ZXIga25vdy4gSXQncyBiZXN0IHRvIGJlIGFzIGNvbXByZWhlbnNpdmUgYXMgcG9zc2libGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NzIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQwNTozOTo1MC4yMzQ0MjEyNzhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NTQwNjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGU0NBQ0hFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL25ldGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbmV0ZnMvS2NvbmZpZz0yNT1jb25maWcgTkVURlNfREVCVUdcXG4tLVxcbmZzL25ldGZzL0tjb25maWctMzItXFxuZnMvbmV0ZnMvS2NvbmZpZzozMzpjb25maWcgRlNDQUNIRVxcbmZzL25ldGZzL0tjb25maWctMzQtXFx0Ym9vbCBcXFwiR2VuZXJhbCBmaWxlc3lzdGVtIGxvY2FsIGNhY2hpbmcgbWFuYWdlclxcXCJcXG4tLVxcbmZzL25ldGZzL0tjb25maWctNDMtXFxuZnMvbmV0ZnMvS2NvbmZpZzo0NDpjb25maWcgRlNDQUNIRV9TVEFUU1xcbmZzL25ldGZzL0tjb25maWctNDUtXFx0Ym9vbCBcXFwiR2F0aGVyIHN0YXRpc3RpY2FsIGluZm9ybWF0aW9uIG9uIGxvY2FsIGNhY2hpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA1OjM5OjUwLjI4OTk3MTkyNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjA3NTQwNTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgd3JpdHRlbiBhcyBpZiBJJ20gdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBOZXRGUyBDb2RlKipcblxuUmlnaHQsIGxldCdzIHNlZS4gVGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGluZGljYXRlcyB0aGF0IHRoZSBgZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmNgIGZpbGUgaXMgYmVpbmcgY29tcGlsZWQgd2hlbiBgTkVURlNfU1VQUE9SVGAgaXMgZW5hYmxlZC4gTXkgaW1tZWRpYXRlIGluY2xpbmF0aW9uIGlzIHRvIGNvbmZpcm0gdGhpcyB3aXRoaW4gdGhlIGJ1aWxkIHN5c3RlbS4gU28sIGxldCdzIHBvcCBvcGVuIGBmcy9uZXRmcy9NYWtlZmlsZWAgYW5kIHZlcmlmeSB0aGUgY29tcGlsYXRpb24gZGVwZW5kZW5jeSBhbmQgdGhhdCBgTkVURlNfU1VQUE9SVGAgaXMgaW5kZWVkIGEgY29udHJvbGxpbmcgZmFjdG9yLiBUaGlzIGtpbmQgb2YgcXVpY2sgY3Jvc3MtcmVmZXJlbmNlIGlzIGVzc2VudGlhbCB3aGVuIG5hdmlnYXRpbmcga2VybmVsIGJ1aWxkIGNvbmZpZ3VyYXRpb25zLiBJdCB3aWxsIHNob3cgbWUgdGhlIGJ1aWxkIHJ1bGVzIGFuZCB1bHRpbWF0ZWx5IHJldmVhbCB3aGF0IGlzIGhhcHBlbmluZyBkdXJpbmcgdGhlIGtlcm5lbCBidWlsZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk5MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA1OjM5OjUyLjg5NzUxNDU3OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUzMDg0NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVhZF9wZ3ByaXYyLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbmV0ZnMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbmV0ZnMvTWFrZWZpbGU9Mz1uZXRmcy15IDo9IFxcXFxcXG4tLVxcbmZzL25ldGZzL01ha2VmaWxlLTEzLVxcdHJlYWRfY29sbGVjdC5vIFxcXFxcXG5mcy9uZXRmcy9NYWtlZmlsZToxNDpcXHRyZWFkX3BncHJpdjIubyBcXFxcXFxuZnMvbmV0ZnMvTWFrZWZpbGUtMTUtXFx0cmVhZF9yZXRyeS5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDU6Mzk6NTIuOTUyODI4NTM0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNDcyOTUzMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgbmV0ZnMteWAgQ2hhbmdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjaGFuZ2UsIGFuZCBpdCBzZWVtcyB0byBiZSBwYXJ0IG9mIHRoZSBgbmV0ZnMteWAgbW9kdWxlLiBTcGVjaWZpY2FsbHksIGl0J3MgdGhlIGBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW9gIGZ1bmN0aW9uIHRoYXQncyBiZWVuIG1vZGlmaWVkLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBob3cgaXMgdGhpcyBjb25maWd1cmVkPyBJcyBgTkVURlNfU1VQUE9SVGAgc3VmZmljaWVudCBmb3IgYWN0aXZhdGlvbj8gTGV0J3MgdGFrZSBhIGxvb2suLi4gQWgsIHllcywgYE5FVEZTX1NVUFBPUlRgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIG9wdGlvbi5cblxuSGFuZyBvbiBhIHNlY29uZCwgdGhvdWdoLiBJJ20gcmVjYWxsaW5nIG5vdywgYE5FVEZTX1NVUFBPUlRgIGlzIGEgKnRyaXN0YXRlKi4gVGhhdCdzIG9mdGVuIHNlbGVjdGVkIGJ5IGZpbGVzeXN0ZW0gZHJpdmVycyB0aGVtc2VsdmVzLCB0aGluZ3MgbGlrZSBBRlMsIENFUEgsIENJRlMsIGFuZCA5UC4gSnVzdCBuZWVkIHRvIGNoZWNrIHdoYXQgc3BlY2lmaWNhbGx5IGRyaXZlcyB0aGF0IGNvbmZpZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBoZXJlIHRvIHNlZSBpZiB0aGlzIGNoYW5nZSBhbGlnbnMgd2l0aCB0aGUgb3ZlcmFsbCBtb2R1bGUgY29uZmlndXJhdGlvbiBzY2hlbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyOTksIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDU6Mzk6NTYuMjAwMTI2MjQyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTExODIxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgTkVURlNfU1VQUE9SVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvOXAvS2NvbmZpZz0yPWNvbmZpZyA5UF9GU1xcbi0tXFxuZnMvOXAvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gTkVUXzlQXFxuZnMvOXAvS2NvbmZpZzo1OlxcdHNlbGVjdCBORVRGU19TVVBQT1JUXFxuZnMvOXAvS2NvbmZpZy02LVxcdGhlbHBcXG4tLVxcbmZzL2Fmcy9LY29uZmlnPTI9Y29uZmlnIEFGU19GU1xcbi0tXFxuZnMvYWZzL0tjb25maWctNi1cXHRzZWxlY3QgRE5TX1JFU09MVkVSXFxuZnMvYWZzL0tjb25maWc6NzpcXHRzZWxlY3QgTkVURlNfU1VQUE9SVFxcbmZzL2Fmcy9LY29uZmlnLTgtXFx0c2VsZWN0IENSWVBUT19LUkI1XFxuLS1cXG5mcy9jZXBoL0tjb25maWc9Mj1jb25maWcgQ0VQSF9GU1xcbi0tXFxuZnMvY2VwaC9LY29uZmlnLTUtXFx0c2VsZWN0IENFUEhfTElCXFxuZnMvY2VwaC9LY29uZmlnOjY6XFx0c2VsZWN0IE5FVEZTX1NVUFBPUlRcXG5mcy9jZXBoL0tjb25maWctNy1cXHRzZWxlY3QgRlNfRU5DUllQVElPTl9BTEdTIGlmIEZTX0VOQ1JZUFRJT05cXG4tLVxcbmZzL25mcy9LY29uZmlnPTE3Mz1jb25maWcgTkZTX0ZTQ0FDSEVcXG4tLVxcbmZzL25mcy9LY29uZmlnLTE3NS1cXHRkZXBlbmRzIG9uIE5GU19GU1xcbmZzL25mcy9LY29uZmlnOjE3NjpcXHRzZWxlY3QgTkVURlNfU1VQUE9SVFxcbmZzL25mcy9LY29uZmlnLTE3Ny1cXHRzZWxlY3QgRlNDQUNIRVxcbi0tXFxuZnMvc21iL2NsaWVudC9LY29uZmlnPTI9Y29uZmlnIENJRlNcXG4tLVxcbmZzL3NtYi9jbGllbnQvS2NvbmZpZy0yMC1cXHRzZWxlY3QgT0lEX1JFR0lTVFJZXFxuZnMvc21iL2NsaWVudC9LY29uZmlnOjIxOlxcdHNlbGVjdCBORVRGU19TVVBQT1JUXFxuZnMvc21iL2NsaWVudC9LY29uZmlnLTIyLVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDU6Mzk6NTYuMjg1MjUwMTE2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzI5Nzg4NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVmaW5pbmcgdGhlIE5ldHdvcmsgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZmlsZXN5c3RlbSBjb25maWd1cmF0aW9ucywgYW5kIGl0IHNlZW1zIGxpa2UgdGhleSdyZSBsZXZlcmFnaW5nIGBORVRGU19TVVBQT1JUYC4gVGhlIGluaXRpYWwgdGhvdWdodCB3YXMgdG8gc2ltcGx5IGxpc3QgYE5FVEZTX1NVUFBPUlRgIG9yIHBlcmhhcHMgYEZTQ0FDSEVgIGFsb25nIHdpdGggYSBzcGVjaWZpYyBuZXR3b3JrIGZpbGVzeXN0ZW0gbGlrZSBgQ0lGU2Agb3IgYDlQX0ZTYCBpbiB0aGUgbWVudS4gVGhhdCBzZWVtZWQgY2xlYW4uXG5cbkJ1dCB0aGVuLCBhIHNsaWdodCBjb3JyZWN0aW9uLiBgTkVURlNfU1VQUE9SVGAgaXNuJ3QgZGlyZWN0bHkgdXNlci1zZWxlY3RhYmxlLCBpdCdzIGEgKmRlcGVuZGVuY3kqLiBTbywganVzdCBsaXN0aW5nIGl0IHdvdWxkbid0IGJlIHF1aXRlIHJpZ2h0IGZvciB0aGUgdXNlci4gT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgaXQgKmlzKiBzZWxlY3RhYmxlIHRvIGdpdmUgdGhlIHVzZXIgY29ycmVjdCBjb250ZXh0LlxuXG5JIG5lZWQgdG8gZ28gZGVlcGVyIGludG8gdGhlIHNvdXJjZSwgc3BlY2lmaWNhbGx5IGBmcy9uZXRmcy9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIHRoZSBjb250cm9sIGZvciBgTkVURlNfU1VQUE9SVGAgbGlrZWx5IHJlc2lkZXMuIEdvdHRhIGNoZWNrIHRoYXQgS2NvbmZpZyBmaWxlIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAwNCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQwNTozOTo1OS41MTgyMzEzODRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0Mzk5MDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRGU19TVVBQT1JUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL25ldGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbmV0ZnMvS2NvbmZpZy0yLVxcbmZzL25ldGZzL0tjb25maWc6Mzpjb25maWcgTkVURlNfU1VQUE9SVFxcbmZzL25ldGZzL0tjb25maWctNC1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQwNTozOTo1OS41ODI2MzUxMzlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyMDcyMTcwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipOYXZpZ2F0aW5nIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBMYWJ5cmludGgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHRyaXN0YXRlIG9wdGlvbiwgYW5kIHdpdGhvdXQgYSBkaXJlY3QgcHJvbXB0LCBJIGNhbid0IGp1c3QgZmxpcCBgQ09ORklHX05FVEZTX1NVUFBPUlQ9eWAuIFRoYXQncyBhIG5vLWdvLiBJIG5lZWQgYSB0cmlnZ2VyLCBzb21ldGhpbmcgdGhhdCAqc2VsZWN0cyogdGhpcyBmdW5jdGlvbmFsaXR5LiBMZXQncyB0aGluay4uLiBgQ0lGU2AsIGA5UF9GU2AsIGBDRVBIX0ZTYCwgb3IgZXZlbiBgQUZTX0ZTYCBzZWVtIGxpa2UgcG90ZW50aWFsIGNhbmRpZGF0ZXMuIFRoZXkncmUgYWxsIG5ldHdvcmsgZmlsZXN5c3RlbSBvcHRpb25zLCBzbyB0aGV5J3JlIGxpa2VseSBkZXBlbmRlbmNpZXMuIEkgc2hvdWxkIHByb2JhYmx5IGxpc3QgYENJRlNgIGFuZCBgOVBfRlNgIGFzIG15IHRvcCBjaG9pY2VzIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuIFdhaXQgYSBzZWNvbmQsIGhvbGQgb24uLi4gYEZTQ0FDSEVgIGlzIHVzZXItc2VsZWN0YWJsZSwgYW5kIHRoYXQgaGFzIHRoZSBwb3RlbnRpYWwgdG8gZHJhZyB0aGlzIGluLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gZmFjdG9yIHRoYXQgaW50byBteSBwbGFuLiBUaGlzIG1heSB0YWtlIGEgbGl0dGxlIG1vcmUgZGlnZ2luZyB0aGFuIEkgaW5pdGlhbGx5IHRob3VnaHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzODIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQwNTo0MDowMi45MDMzNTkzMDFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0OTk1NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGU0NBQ0hFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL25ldGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbmV0ZnMvS2NvbmZpZz0yNT1jb25maWcgTkVURlNfREVCVUdcXG4tLVxcbmZzL25ldGZzL0tjb25maWctMzItXFxuZnMvbmV0ZnMvS2NvbmZpZzozMzpjb25maWcgRlNDQUNIRVxcbmZzL25ldGZzL0tjb25maWctMzQtXFx0Ym9vbCBcXFwiR2VuZXJhbCBmaWxlc3lzdGVtIGxvY2FsIGNhY2hpbmcgbWFuYWdlclxcXCJcXG4tLVxcbmZzL25ldGZzL0tjb25maWctNDMtXFxuZnMvbmV0ZnMvS2NvbmZpZzo0NDpjb25maWcgRlNDQUNIRV9TVEFUU1xcbmZzL25ldGZzL0tjb25maWctNDUtXFx0Ym9vbCBcXFwiR2F0aGVyIHN0YXRpc3RpY2FsIGluZm9ybWF0aW9uIG9uIGxvY2FsIGNhY2hpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA1OjQwOjAyLjk3ODM2MTU2NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODIyNTAzNzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQ2hlY2tpbmcgRmlsZXN5c3RlbSBDYWNoZSBEZXBlbmRlbmN5KipcblxuQWxyaWdodCwgbXkgaW50ZXJuYWwgY2hlY2tsaXN0IGhhcyBmbGFnZ2VkIHNvbWV0aGluZyBwb3RlbnRpYWxseSBzaWduaWZpY2FudC4gTXkgdGhvdWdodCBwcm9jZXNzIGlzIGNlbnRlcmVkIGFyb3VuZCBlbnN1cmluZyB0aGF0IHRoZSBgRlNDQUNIRWAgb3B0aW9uIHByb3Blcmx5IHNlbGVjdHMgdGhlIGBORVRGU19TVVBQT1JUYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGRlcGVuZGVuY3kuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgYXZvaWRpbmcgYW55IHVuZXhwZWN0ZWQgcmVncmVzc2lvbnMgb3IgbWlzY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBuZXR3b3JrIGZpbGVzeXN0ZW0gY2FjaGluZywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBjb21wbGV4IG9yIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSBzeXN0ZW1zLiBBIG1pc3NpbmcgZGVwZW5kZW5jeSBoZXJlIHdvdWxkIGJlIGEgY3JpdGljYWwgb3ZlcnNpZ2h0LCBsZWFkaW5nIHRvIHBvdGVudGlhbGx5IHN1YnRsZSBhbmQgZnJ1c3RyYXRpbmcgZGVidWdnaW5nIHNjZW5hcmlvcyBkb3duIHRoZSBsaW5lLiBJJ20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIEtjb25maWcgcmVsYXRpb25zaGlwIGJldHdlZW4gYEZTQ0FDSEVgIGFuZCBgTkVURlNfU1VQUE9SVGAgdG8gZW5zdXJlIHRoZXkncmUgbGlua2VkIGFzIGV4cGVjdGVkLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoaXMgaXMgb2Z0ZW4gYSBjb21tb24gYXJlYSBmb3Igb3ZlcnNpZ2h0IGR1cmluZyBjb2RlIGludGVncmF0aW9uIG9yIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgc28gSSdtIGRvdWJsZS1jaGVja2luZyBhcyBhIG1hdHRlciBvZiBkdWUgZGlsaWdlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODI0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDU6NDA6MDUuODAwODY3MTk0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTExMjkyNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5FVEZTX1NVUFBPUlRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbmV0ZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDU6NDA6MDUuODcwMDA0MjM5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MDIyNjE0NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYEZTQ0FDSEVgIERlcGVuZGVuY3kqKlxuXG5IbW0sIHNvIEkgbmVlZCB0byBjbGFyaWZ5IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBgRlNDQUNIRWAgYW5kIGBORVRGU19TVVBQT1JUYC4gSXMgYEZTQ0FDSEVgIGFjdHVhbGx5ICpkZXBlbmRlbnQqIG9uIGBORVRGU19TVVBQT1JUYCwgb3IgZG9lcyBpdCBqdXN0ICpzZWxlY3QqIGl0PyBUaGlzIGlzbid0IGltbWVkaWF0ZWx5IG9idmlvdXMsIGFuZCB0aGF0IGFtYmlndWl0eSBpcyBhIHByb2JsZW0gZm9yIHByb3BlciBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQuIFRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMsIHRoZSBtb3N0IHJlbGlhYmxlIGFwcHJvYWNoIGlzIHRvIGRpcmVjdGx5IGV4YW1pbmUgdGhlIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlc2Uga2luZHMgb2YgZGVwZW5kZW5jaWVzLiBUaGF0J3MgYGZzL25ldGZzL0tjb25maWdgLiBMZXQncyBkaWcgaW4gdGhlcmUgYW5kIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGUgaGFzIHRvIHNheS4gTm8gYXNzdW1wdGlvbnMsIGp1c3QgdGhlIHNvdXJjZSBvZiB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uLiBUaGF0J2xsIGdpdmUgYSBkZWZpbml0aXZlIGFuc3dlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA4MCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA1OjQwOjA4LjQ3MjI2Nzk3NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mzk3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9uZXRmcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRcXG4gICAzOlxcdGNvbmZpZyBORVRGU19TVVBQT1JUXFxuICAgNDpcXHRcXHR0cmlzdGF0ZVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIG5ldHdvcmsgZmlsZXN5c3RlbXMsIGluY2x1ZGluZ1xcbiAgIDc6XFx0XFx0ICBoZWxwZXJzIGZvciBoaWdoLWxldmVsIGJ1ZmZlcmVkIEkvTywgYWJzdHJhY3Rpbmcgb3V0IHJlYWRcXG4gICA4OlxcdFxcdCAgc2VnbWVudGF0aW9uLCBsb2NhbCBjYWNoaW5nIGFuZCB0cmFuc3BhcmVudCBodWdlIHBhZ2Ugc3VwcG9ydC5cXG4gICA5OlxcdFxcbiAgMTA6XFx0Y29uZmlnIE5FVEZTX1NUQVRTXFxuICAxMTpcXHRcXHRib29sIFxcXCJHYXRoZXIgc3RhdGlzdGljYWwgaW5mb3JtYXRpb24gb24gbG9jYWwgY2FjaGluZ1xcXCJcXG4gIDEyOlxcdFxcdGRlcGVuZHMgb24gTkVURlNfU1VQUE9SVCBcXHUwMDI2XFx1MDAyNiBQUk9DX0ZTXFxuICAxMzpcXHRcXHRoZWxwXFxuICAxNDpcXHRcXHQgIFRoaXMgb3B0aW9uIGNhdXNlcyBzdGF0aXN0aWNhbCBpbmZvcm1hdGlvbiB0byBiZSBnYXRoZXJlZCBvbiBsb2NhbFxcbiAgMTU6XFx0XFx0ICBjYWNoaW5nIGFuZCBleHBvcnRlZCB0aHJvdWdoIGZpbGU6XFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdFxcdC9wcm9jL2ZzL2ZzY2FjaGUvc3RhdHNcXG4gIDE4OlxcdFxcbiAgMTk6XFx0XFx0ICBUaGUgZ2F0aGVyaW5nIG9mIHN0YXRpc3RpY3MgYWRkcyBhIGNlcnRhaW4gYW1vdW50IG9mIG92ZXJoZWFkIHRvXFxuICAyMDpcXHRcXHQgIGV4ZWN1dGlvbiBhcyB0aGVyZSBhcmUgYSBxdWl0ZSBhIGZldyBzdGF0cyBnYXRoZXJlZCwgYW5kIG9uIGFcXG4gIDIxOlxcdFxcdCAgbXVsdGktQ1BVIHN5c3RlbSB0aGVzZSBtYXkgYmUgb24gY2FjaGVsaW5lcyB0aGF0IGtlZXAgYm91bmNpbmdcXG4gIDIyOlxcdFxcdCAgYmV0d2VlbiBDUFVzLiAgT24gdGhlIG90aGVyIGhhbmQsIHRoZSBzdGF0cyBhcmUgdmVyeSB1c2VmdWwgZm9yXFxuICAyMzpcXHRcXHQgIGRlYnVnZ2luZyBwdXJwb3Nlcy4gIFNheWluZyAnWScgaGVyZSBpcyByZWNvbW1lbmRlZC5cXG4gIDI0OlxcdFxcbiAgMjU6XFx0Y29uZmlnIE5FVEZTX0RFQlVHXFxuICAyNjpcXHRcXHRib29sIFxcXCJFbmFibGUgZHluYW1pYyBkZWJ1Z2dpbmcgbmV0ZnNsaWIgYW5kIEZTLUNhY2hlXFxcIlxcbiAgMjc6XFx0XFx0ZGVwZW5kcyBvbiBORVRGU19TVVBQT1JUXFxuICAyODpcXHRcXHRoZWxwXFxuICAyOTpcXHRcXHQgIFRoaXMgcGVybWl0cyBkZWJ1Z2dpbmcgdG8gYmUgZHluYW1pY2FsbHkgZW5hYmxlZCBpbiB0aGUgbG9jYWwgY2FjaGluZ1xcbiAgMzA6XFx0XFx0ICBtYW5hZ2VtZW50IG1vZHVsZS4gIElmIHRoaXMgaXMgc2V0LCB0aGUgZGVidWdnaW5nIG91dHB1dCBtYXkgYmVcXG4gIDMxOlxcdFxcdCAgZW5hYmxlZCBieSBzZXR0aW5nIGJpdHMgaW4gL3N5cy9tb2R1bGUvbmV0ZnMvcGFyYW1ldGVycy9kZWJ1Zy5cXG4gIDMyOlxcdFxcbiAgMzM6XFx0Y29uZmlnIEZTQ0FDSEVcXG4gIDM0OlxcdFxcdGJvb2wgXFxcIkdlbmVyYWwgZmlsZXN5c3RlbSBsb2NhbCBjYWNoaW5nIG1hbmFnZXJcXFwiXFxuICAzNTpcXHRcXHRkZXBlbmRzIG9uIE5FVEZTX1NVUFBPUlRcXG4gIDM2OlxcdFxcdGhlbHBcXG4gIDM3OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBhIGdlbmVyaWMgZmlsZXN5c3RlbSBjYWNoaW5nIG1hbmFnZXIgdGhhdCBjYW4gYmVcXG4gIDM4OlxcdFxcdCAgdXNlZCBieSB2YXJpb3VzIG5ldHdvcmsgYW5kIG90aGVyIGZpbGVzeXN0ZW1zIHRvIGNhY2hlIGRhdGEgbG9jYWxseS5cXG4gIDM5OlxcdFxcdCAgRGlmZmVyZW50IHNvcnRzIG9mIGNhY2hlcyBjYW4gYmUgcGx1Z2dlZCBpbiwgZGVwZW5kaW5nIG9uIHRoZVxcbiAgNDA6XFx0XFx0ICByZXNvdXJjZXMgYXZhaWxhYmxlLlxcbiAgNDE6XFx0XFxuICA0MjpcXHRcXHQgIFNlZSBEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NhY2hpbmcvZnNjYWNoZS5yc3QgZm9yIG1vcmUgaW5mb3JtYXRpb24uXFxuICA0MzpcXHRcXG4gIDQ0OlxcdGNvbmZpZyBGU0NBQ0hFX1NUQVRTXFxuICA0NTpcXHRcXHRib29sIFxcXCJHYXRoZXIgc3RhdGlzdGljYWwgaW5mb3JtYXRpb24gb24gbG9jYWwgY2FjaGluZ1xcXCJcXG4gIDQ2OlxcdFxcdGRlcGVuZHMgb24gRlNDQUNIRSBcXHUwMDI2XFx1MDAyNiBQUk9DX0ZTXFxuICA0NzpcXHRcXHRzZWxlY3QgTkVURlNfU1RBVFNcXG4gIDQ4OlxcdFxcdGhlbHBcXG4gIDQ5OlxcdFxcdCAgVGhpcyBvcHRpb24gY2F1c2VzIHN0YXRpc3RpY2FsIGluZm9ybWF0aW9uIHRvIGJlIGdhdGhlcmVkIG9uIGxvY2FsXFxuICA1MDpcXHRcXHQgIGNhY2hpbmcgYW5kIGV4cG9ydGVkIHRocm91Z2ggZmlsZTpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDU6NDA6MDguNDcyMzMzMTg1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MzAwMzY2NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IG5ldGZzX3BncHJpdjJfY29weV9mb2xpbyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHNlZSB0aGUgZGVwZW5kZW5jeTogYEZTQ0FDSEVgIHJlbGllcyBvbiBgTkVURlNfU1VQUE9SVGAuIFRvIGdldCBgTkVURlNfU1VQUE9SVGAgZ29pbmcsIEkgbmVlZCB0byBlbmFibGUgb25lIG9mIHRoZSBuZXR3b3JrIGZpbGVzeXN0ZW0gb3B0aW9uczogYENJRlNgLCBgOVBfRlNgLCBgQ0VQSF9GU2AsIG9yIGBBRlNfRlNgLiBMZXQgbWUgbGlzdCB0aG9zZSBvdXQgYWdhaW46IGBDSUZTYCwgYDlQX0ZTYCwgYEFGU19GU2AsIGBDRVBIX0ZTYCwgYW5kIG9mIGNvdXJzZSBgRlNDQUNIRWAgaXRzZWxmLlxuXG5UaGUga2V5IGZ1bmN0aW9uIHRoYXQncyBiZWVuIG1vZGlmaWVkIGhlcmUgaXMgYG5ldGZzX3BncHJpdjJfY29weV9mb2xpb2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyByZWFjaGFibGUgdGhpcyBjb2RlIHBhdGggaXMuIExldCBtZSB0cmFjZSB0aGF0LiBSaWdodCwgaXQncyBjYWxsZWQgZnJvbSBgbmV0ZnNfcGdwcml2Ml9jb3B5X3RvX2NhY2hlYCwgd2hpY2ggaW4gdHVybiBnZXRzIGNhbGxlZCBieSBgbmV0ZnNfdW5sb2NrX3JlYWRfZm9saW9gICppZiogdGhlIGBORVRGU19SUkVRX0ZPTElPX0NPUFlfVE9fQ0FDSEVgIGZsYWcgaXMgc2V0LiBUaGF0IHN1Z2dlc3RzIGl0J3MgaW52b2x2ZWQgd2hlbiBjYWNoaW5nIGlzIGFjdHVhbGx5ICp1c2VkKi5cblxuVGhlIHByaW1hcnkgZm9jdXMgaGVyZSBpcyByZWFsbHkgb24gdGhvc2UgdHdvIGZ1bmN0aW9uczogYG5ldGZzX3BncHJpdjJfY29weV9mb2xpb2AgYW5kIGBuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGVgLiBDb25zaWRlcmluZyB0aGF0IGBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW9gIGdldHMgY2FsbGVkIGZvciBldmVyeSBmb2xpbyBjb3BpZWQgaW50byB0aGUgY2FjaGUsIG15IGluc3RpbmN0cyB0ZWxsIG1lIHRoaXMgaXMgcHJvYmFibHkgYSBob3QgcGF0aC4gVGhhdCBtYWtlcyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBMZXQncyBtYXJrIHRoaXMgYXMgYFdvcnRoRnV6emluZz10cnVlYC5cblxuU28sIHRoZSBjb25maWcgb3B0aW9ucyBJIG5lZWQgdG8gY29uc2lkZXIgZm9yIHRoaXMgZnV6emluZyBhcmU6IGBDSUZTYCwgYDlQX0ZTYCwgYENFUEhfRlNgLCBgQUZTX0ZTYCwgYW5kIGBGU0NBQ0hFYC5cblxuVWx0aW1hdGVseSwgdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBmdW5jdGlvbmFsIGlzc3VlLiBUaGUgZml4IGFwcGVhcnMgdG8gYWRkIGEgbWlzc2luZyBjYWxsIHRvIGBmb2xpb19lbmRfcHJpdmF0ZV8yYCBpbiBgbmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvYCBpZiBgcm9sbGluZ19idWZmZXJfYXBwZW5kYCBmYWlscy4gVGhlIGZhY3QgdGhhdCB0aGUgdGFyZ2V0IGlzIGEgbmV0d29yayBmaWxlc3lzdGVtIHdoaWNoIHVzZXMgYGZzY2FjaGVgIGFkZHMgdG8gaXRzIGltcG9ydGFuY2UuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ2xsIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBjb2RlIGluIGBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW9gIGFuZCBgbmV0ZnNfcGdwcml2Ml9jb3B5X3RvX2NhY2hlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzAwMSwiT3V0cHV0VG9rZW5zIjoxNjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQwNTo0MDoxNS4zMDIzNzE4NjRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODMzOTM4NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNJRlNcIixcbiAgICBcIjlQX0ZTXCIsXG4gICAgXCJDRVBIX0ZTXCIsXG4gICAgXCJBRlNfRlNcIixcbiAgICBcIkZTQ0FDSEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW9cIixcbiAgICBcIm5ldGZzX3BncHJpdjJfY29weV90b19jYWNoZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWlzc2luZyBmb2xpb19lbmRfcHJpdmF0ZV8yKCkgY2FsbCBpbiBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW8oKSB3aGVuIGFwcGVuZGluZyB0byB0aGUgcm9sbGluZyBidWZmZXIgZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZnMgbGlicmFyeSwgd2hpY2ggaXMgdXNlZCBieSBuZXR3b3JrIGZpbGVzeXN0ZW1zIChsaWtlIENJRlMsIDlQLCBDZXBoLCBBRlMpIGZvciBsb2NhbCBjYWNoaW5nIChmc2NhY2hlKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDSUZTXCIsXG4gICAgXCI5UF9GU1wiLFxuICAgIFwiQ0VQSF9GU1wiLFxuICAgIFwiQUZTX0ZTXCIsXG4gICAgXCJGU0NBQ0hFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvXCIsXG4gICAgXCJuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1pc3NpbmcgZm9saW9fZW5kX3ByaXZhdGVfMigpIGNhbGwgaW4gbmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvKCkgd2hlbiBhcHBlbmRpbmcgdG8gdGhlIHJvbGxpbmcgYnVmZmVyIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldGZzIGxpYnJhcnksIHdoaWNoIGlzIHVzZWQgYnkgbmV0d29yayBmaWxlc3lzdGVtcyAobGlrZSBDSUZTLCA5UCwgQ2VwaCwgQUZTKSBmb3IgbG9jYWwgY2FjaGluZyAoZnNjYWNoZSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow88zpg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-04 05:11:38 +0000 UTC FinishedAt: 2026-07-04 05:40:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CIFS", "9P_FS", "CEPH_FS", "AFS_FS", "FSCACHE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CIFS", "9P_FS", "CEPH_FS", "AFS_FS", "FSCACHE" ], "series_id": "346c2266-bb93-438f-9174-00adb280eb6c" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "netfs_pgpriv2_copy_folio", "netfs_pgpriv2_copy_to_cache" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDA1OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NJRlMmIzM0OywKICAgICYjMzQ7OVBfRlMmIzM0OywKICAgICYjMzQ7Q0VQSF9GUyYjMzQ7LAogICAgJiMzNDtBRlNfRlMmIzM0OywKICAgICYjMzQ7RlNDQUNIRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25ldGZzX3BncHJpdjJfY29weV9mb2xpbyYjMzQ7LAogICAgJiMzNDtuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtaXNzaW5nIGZvbGlvX2VuZF9wcml2YXRlXzIoKSBjYWxsIGluIG5ldGZzX3BncHJpdjJfY29weV9mb2xpbygpIHdoZW4gYXBwZW5kaW5nIHRvIHRoZSByb2xsaW5nIGJ1ZmZlciBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXRmcyBsaWJyYXJ5LCB3aGljaCBpcyB1c2VkIGJ5IG5ldHdvcmsgZmlsZXN5c3RlbXMgKGxpa2UgQ0lGUywgOVAsIENlcGgsIEFGUykgZm9yIGxvY2FsIGNhY2hpbmcgKGZzY2FjaGUpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDA1OjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTJkZWNhMmYxNmYzZjliMzU5M2M4ZTBjYzFlMzcyNGVjMjNkNGU3Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDQgMDU6Mzk6MzUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMgYi9mcy9uZXRmcy9yZWFkX3BncHJpdjIuY1xuaW5kZXggYTE0ODlhYTI5Zjc4MmEuLjdlYWNjNThhYmFkYjczIDEwMDY0NFxuLS0tIGEvZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL25ldGZzL3JlYWRfcGdwcml2Mi5jXG5AQCAtNTQsNiAmIzQzOzU0LDcgQEAgc3RhdGljIHZvaWQgbmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpjcmVxLCBzdHJ1Y3QgZm9saW9cbiBcbiBcdC8qIEF0dGFjaCB0aGUgZm9saW8gdG8gdGhlIHJvbGxpbmcgYnVmZmVyLiAqL1xuIFx0aWYgKHJvbGxpbmdfYnVmZmVyX2FwcGVuZChcdTAwMjZjcmVxLVx1MDAzZWJ1ZmZlciwgZm9saW8sIDApIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRmb2xpb19lbmRfcHJpdmF0ZV8yKGZvbGlvKTtcbiBcdFx0Y2xlYXJfYml0KE5FVEZTX1JSRVFfRk9MSU9fQ09QWV9UT19DQUNIRSwgXHUwMDI2Y3JlcS1cdTAwM2VmbGFncyk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAwNTozOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDSUZTJiMzNDssCiAgICAmIzM0OzlQX0ZTJiMzNDssCiAgICAmIzM0O0NFUEhfRlMmIzM0OywKICAgICYjMzQ7QUZTX0ZTJiMzNDssCiAgICAmIzM0O0ZTQ0FDSEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW8mIzM0OywKICAgICYjMzQ7bmV0ZnNfcGdwcml2Ml9jb3B5X3RvX2NhY2hlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWlzc2luZyBmb2xpb19lbmRfcHJpdmF0ZV8yKCkgY2FsbCBpbiBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW8oKSB3aGVuIGFwcGVuZGluZyB0byB0aGUgcm9sbGluZyBidWZmZXIgZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZnMgbGlicmFyeSwgd2hpY2ggaXMgdXNlZCBieSBuZXR3b3JrIGZpbGVzeXN0ZW1zIChsaWtlIENJRlMsIDlQLCBDZXBoLCBBRlMpIGZvciBsb2NhbCBjYWNoaW5nIChmc2NhY2hlKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTJkZWNhMmYxNmYzZjliMzU5M2M4ZTBjYzFlMzcyNGVjMjNkNGU3YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDQgMDU6Mzk6MzUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9uZXRmcy9yZWFkX3BncHJpdjIuYyBiL2ZzL25ldGZzL3JlYWRfcGdwcml2Mi5jCmluZGV4IGExNDg5YWEyOWY3ODJhLi43ZWFjYzU4YWJhZGI3MyAxMDA2NDQKLS0tIGEvZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMKQEAgLTU0LDYgJiM0Mzs1NCw3IEBAIHN0YXRpYyB2b2lkIG5ldGZzX3BncHJpdjJfY29weV9mb2xpbyhzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqY3JlcSwgc3RydWN0IGZvbGlvCiAKIAkvKiBBdHRhY2ggdGhlIGZvbGlvIHRvIHRoZSByb2xsaW5nIGJ1ZmZlci4gKi8KIAlpZiAocm9sbGluZ19idWZmZXJfYXBwZW5kKCZhbXA7Y3JlcS0mZ3Q7YnVmZmVyLCBmb2xpbywgMCkgJmx0OyAwKSB7CiYjNDM7CQlmb2xpb19lbmRfcHJpdmF0ZV8yKGZvbGlvKTsKIAkJY2xlYXJfYml0KE5FVEZTX1JSRVFfRk9MSU9fQ09QWV9UT19DQUNIRSwgJmFtcDtjcmVxLSZndDtmbGFncyk7CiAJCXJldHVybjsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDA1OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NDkKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBmcy9uZXRmcy9yZWFkX3BncHJpdjIuY2AgY2hhbmdlLgoKKipFeGFtaW5pbmcgdGhlIEZvbGlvIEhhbmRsaW5nIGluIGBuZXRmc2AqKgoKUmlnaHQsIHNvIHRoZXJlJiMzOTtzIGEgcGF0Y2ggaGVyZSwgYW5kIGl0JiMzOTtzIHRvdWNoaW5nIGByZWFkX3BncHJpdjIuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYWRkaW5nIGEgYGZvbGlvX2VuZF9wcml2YXRlXzIoZm9saW8pO2AgY2FsbC4gVGhlIGNydWNpYWwgcGFydCBoZXJlIGlzICp3aGVuKiBpdCYjMzk7cyBiZWluZyBhZGRlZDogc3BlY2lmaWNhbGx5LCB3aGVuIGByb2xsaW5nX2J1ZmZlcl9hcHBlbmRgIGZhaWxzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCYjMzk7cyBgcm9sbGluZ19idWZmZXJfYXBwZW5kYCBkb2luZywgYW5kIHdoeSB3b3VsZCBpdCBmYWlsIGluIGEgd2F5IHRoYXQgcmVxdWlyZXMgdGhpcyBraW5kIG9mIGNsZWFudXA/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkYXRhIHN0cnVjdHVyZXMgYW5kIGNvbnRyb2wgZmxvdyBhcm91bmQgdGhhdCBmdW5jdGlvbi4gSXMgdGhpcyBhIG5ldyBmYWlsdXJlIGNhc2UsIG9yIGlzIHRoaXMgZXJyb3IgaGFuZGxpbmcgYmVpbmcgZXhwbGljaXRseSBjb3JyZWN0ZWQ/IFRoZSBgZm9saW9fZW5kX3ByaXZhdGVfMmAgZnVuY3Rpb24gbGlrZWx5IG5lZWRzIHRvIGJlIGludmVzdGlnYXRlZC4gV2hhdCBleGFjdGx5IGRvZXMgaXQgZG8/IE15IGV4cGVyaWVuY2Ugc2F5cyB0aGlzIGlzIGxpa2VseSByZWxlYXNpbmcgcmVzb3VyY2VzLiBCdXQgaW4gd2hhdCBjb250ZXh0LCBhbmQgd2hhdCByZXNvdXJjZXMgYXJlIHdlIGRlYWxpbmcgd2l0aD8gTGV0JiMzOTtzIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDU6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtMTgtICovXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYzoxOTpzdGF0aWMgdm9pZCBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW8oc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKmNyZXEsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYy0yMC17XG4tLVxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmM9MTMzPXZvaWQgbmV0ZnNfcGdwcml2Ml9jb3B5X3RvX2NhY2hlKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbmZzL25ldGZzL3JlYWRfcGdwcml2Mi5jLTE0My1cdGZvbGlvX3N0YXJ0X3ByaXZhdGVfMihmb2xpbyk7XG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYzoxNDQ6XHRuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW8oY3JlcSwgZm9saW8pO1xuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtMTQ1LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAwNTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDA1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBhIERhdGEgQ29weSBQYXRoIGluIE5ldEZTKioKCk9rYXksIHNvIEkgc2VlIGBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW9gIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGVgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBhbmQgdXN1YWxseSBtZWFucyB3ZSBoYXZlIGEgZnVuY3Rpb24gY29weWluZyBkYXRhIGZyb20gb25lIGxvY2F0aW9uIHRvIGFub3RoZXIuIFRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgZGF0YSBmbG93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGVgIGlzIGRvaW5nLCBzbyBsZXQmIzM5O3Mgc3RhcnQgdGhlcmUuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYG5ldGZzX3BncHJpdjJfY29weV90b19jYWNoZWAgdG8gc2VlIHdoYXQgaW5mb3JtYXRpb24gaXQmIzM5O3MgcGFzc2luZyB0byB0aGUgYGNvcHlfZm9saW9gIGZ1bmN0aW9uLCBhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhhdCBmdW5jdGlvbiBpcyBjYWxsZWQuIEZyb20gdGhhdCBwb2ludCwgSSBjYW4gZm9ybSBhIGJldHRlciBpZGVhIGFib3V0IGhvdyB0aGUgZGF0YSBjb3BpZXMgYXJlIHBlcmZvcm1lZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAwNTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9uZXRmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbmV0ZnMvaW50ZXJuYWwuaD0xMTQ9dm9pZCBuZXRmc19jYWNoZV9yZWFkX3Rlcm1pbmF0ZWQodm9pZCAqcHJpdiwgc3NpemVfdCB0cmFuc2ZlcnJlZF9vcl9lcnJvcik7XG4tLVxuZnMvbmV0ZnMvaW50ZXJuYWwuaC0xMTgtICovXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjExOTp2b2lkIG5ldGZzX3BncHJpdjJfY29weV90b19jYWNoZShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqcnJlcSwgc3RydWN0IGZvbGlvICpmb2xpbyk7XG5mcy9uZXRmcy9pbnRlcm5hbC5oLTEyMC12b2lkIG5ldGZzX3BncHJpdjJfZW5kX2NvcHlfdG9fY2FjaGUoc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKnJyZXEpO1xuLS1cbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jPTQyPXN0YXRpYyB2b2lkIG5ldGZzX3VubG9ja19yZWFkX2ZvbGlvKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxLFxuLS1cbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jLTgxLVx0XHRpZiAodGVzdF9iaXQoTkVURlNfUlJFUV9GT0xJT19DT1BZX1RPX0NBQ0hFLCBcdTAwMjZycmVxLVx1MDAzZWZsYWdzKSlcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jOjgyOlx0XHRcdG5ldGZzX3BncHJpdjJfY29weV90b19jYWNoZShycmVxLCBmb2xpbyk7XG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYy04My1cdH1cbi0tXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYz05OD1zdGF0aWMgc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKm5ldGZzX3BncHJpdjJfYmVnaW5fY29weV90b19jYWNoZShcbi0tXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYy0xMzItICovXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYzoxMzM6dm9pZCBuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGUoc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKnJyZXEsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYy0xMzQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDA1OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBuZXRmcyBMaWJyYXJ5IENoYW5nZSoqCgpPa2F5LCBzbyB0aGlzIGNoYW5nZSBhcHBlYXJzIHRvIGJlIHdpdGhpbiB0aGUgYG5ldGZzYCBsaWJyYXJ5LCB3aGljaCBpcyBhIGtleSBjb21wb25lbnQgZm9yIGhvdyBuZXR3b3JrIGZpbGVzeXN0ZW1zIGxpa2UgQUZTLCBDZXBoLCBhbmQgQ0lGUyBtYW5hZ2UgdGhlaXIgbG9jYWwgY2FjaGluZyBtZWNoYW5pc21zLCBzcGVjaWZpY2FsbHksIGBmc2NhY2hlYC4gRnVuY3Rpb25hbGx5LCBpdCYjMzk7cyBhIGZpeCwgd2hpY2ggaXMgYWx3YXlzIGdvb2QuIFRoZSBzcGVjaWZpYyBpc3N1ZSBpcyBhIG1pc3NpbmcgYGZvbGlvX2VuZF9wcml2YXRlXzJgIGNhbGwgd2hlbiBhcHBlbmRpbmcgdG8gdGhlIHJvbGxpbmcgYnVmZmVyIGZhaWxzLiBUaGF0IG1ha2VzIHNlbnNlOyBmYWlsdXJlIHN0YXRlcyBuZWVkIHByb3BlciBjbGVhbnVwLCBhbmQgSSB3b3VsZCBoYXZlIGV4cGVjdGVkIGEgY2hlY2sgZm9yIHRoaXMgdHlwZSBvZiB0aGluZyBpbiB0aGUgZXhpc3RpbmcgY29kZSwgYnV0IHRoZXNlIHRoaW5ncyBoYXBwZW4uCgpOb3csIGxldCYjMzk7cyB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBgbmV0ZnNgLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGlzIGxpYnJhcnkgaXMgY29uZmlndXJlZCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgd2lkZXIgY29udGV4dCBvZiB0aGlzIGNoYW5nZSwgYW5kIGhvdyBpdCBtaWdodCBpbXBhY3QgdmFyaW91cyBlbnZpcm9ubWVudHMuIEkmIzM5O20gZ29pbmcgdG8gbG9vayB0byBzZWUgaWYgdGhpcyBjaGFuZ2UgbWF5IGltcGFjdCBhbnkgb3RoZXIgYXJlYXMsIG9yIGlmIHRoZXJlIGlzIGFueXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgYnJvdWdodCB1cCB3aXRoIHRoZSBjbGllbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDU6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVEZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbmV0ZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9uZXRmcy9LY29uZmlnLTItXG5mcy9uZXRmcy9LY29uZmlnOjM6Y29uZmlnIE5FVEZTX1NVUFBPUlRcbmZzL25ldGZzL0tjb25maWctNC1cdHRyaXN0YXRlXG4tLVxuZnMvbmV0ZnMvS2NvbmZpZy05LVxuZnMvbmV0ZnMvS2NvbmZpZzoxMDpjb25maWcgTkVURlNfU1RBVFNcbmZzL25ldGZzL0tjb25maWctMTEtXHRib29sIFwmIzM0O0dhdGhlciBzdGF0aXN0aWNhbCBpbmZvcm1hdGlvbiBvbiBsb2NhbCBjYWNoaW5nXCYjMzQ7XG4tLVxuZnMvbmV0ZnMvS2NvbmZpZy0yNC1cbmZzL25ldGZzL0tjb25maWc6MjU6Y29uZmlnIE5FVEZTX0RFQlVHXG5mcy9uZXRmcy9LY29uZmlnLTI2LVx0Ym9vbCBcJiMzNDtFbmFibGUgZHluYW1pYyBkZWJ1Z2dpbmcgbmV0ZnNsaWIgYW5kIEZTLUNhY2hlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDU6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU3MgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCB1c2VyOgoKKipJbnZlc3RpZ2F0aW5nIEZTQ2FjaGUgYW5kIE5ldEZTIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBjb25maWd1cmF0aW9ucyBjdXJyZW50bHkgaW4gcGxhY2UgdGhhdCBtaWdodCBiZSBlbmFibGluZyBgZnNjYWNoZWAgb3IgYG5ldGZzYC4gSSYjMzk7bSB0aGlua2luZywgdGhpcyBpcyBwcm9iYWJseSBnb2luZyB0byBpbnZvbHZlIGxvb2tpbmcgYXQgYSBjb21iaW5hdGlvbiBvZiBrZXJuZWwgbW9kdWxlcyBsb2FkZWQsIG1vdW50IG9wdGlvbnMsIGFuZCBwZXJoYXBzIHNvbWUgcmVsZXZhbnQgc3lzdGVtZCBzZXJ2aWNlIGRlZmluaXRpb25zLCByaWdodD8gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgd2l0aCB0aGUgbW9yZSBvYnZpb3VzIHBsYWNlcyDigJMgbWF5YmUgYSBxdWljayBgbHNtb2RgIGFuZCB0aGVuIGRpdmUgaW50byBgL2V0Yy9mc3RhYmAgYW5kIGFueSBzeXN0ZW1kIHVuaXQgZmlsZXMgcmVsYXRlZCB0byBuZXR3b3JrIGZpbGUgc3lzdGVtcy4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0byBjaGVjayBhbnkgcG90ZW50aWFsIG92ZXJyaWRlcyBpbiBgL2V0Yy9tb2Rwcm9iZS5kL2AgYXMgd2VsbCwganVzdCBpbiBjYXNlIHNvbWVvbmUgZ290IGZhbmN5IHdpdGggc29tZSBrZXJuZWwgbW9kdWxlIGJsYWNrbGlzdGluZyBvciBvcHRpb25zLiBHb3R0YSBiZSB0aG9yb3VnaC4gQWxzbywgSSBiZXR0ZXIgY2hlY2sgZm9yIGFueSByZWxhdGVkIHBhcmFtZXRlcnMgaW4gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUsIGp1c3QgdG8gY292ZXIgYWxsIGJhc2VzIGFuZCBlbnN1cmUgSSBkb24mIzM5O3QgbWlzcyBhbnl0aGluZyB0aGF0IG1pZ2h0IGhhdmUgYmVlbiBzZXQgZHVyaW5nIGJvb3QuIEkmIzM5O20gaW1hZ2luaW5nIGl0JiMzOTtzIGdvaW5nIHRvIGJlIGEgcXVpY2sgc3dlZXAgb2Yga2V5IGZpbGVzLCBidXQgeW91IG5ldmVyIGtub3cuIEl0JiMzOTtzIGJlc3QgdG8gYmUgYXMgY29tcHJlaGVuc2l2ZSBhcyBwb3NzaWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDU6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZTQ0FDSEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9uZXRmcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL25ldGZzL0tjb25maWc9MjU9Y29uZmlnIE5FVEZTX0RFQlVHXG4tLVxuZnMvbmV0ZnMvS2NvbmZpZy0zMi1cbmZzL25ldGZzL0tjb25maWc6MzM6Y29uZmlnIEZTQ0FDSEVcbmZzL25ldGZzL0tjb25maWctMzQtXHRib29sIFwmIzM0O0dlbmVyYWwgZmlsZXN5c3RlbSBsb2NhbCBjYWNoaW5nIG1hbmFnZXJcJiMzNDtcbi0tXG5mcy9uZXRmcy9LY29uZmlnLTQzLVxuZnMvbmV0ZnMvS2NvbmZpZzo0NDpjb25maWcgRlNDQUNIRV9TVEFUU1xuZnMvbmV0ZnMvS2NvbmZpZy00NS1cdGJvb2wgXCYjMzQ7R2F0aGVyIHN0YXRpc3RpY2FsIGluZm9ybWF0aW9uIG9uIGxvY2FsIGNhY2hpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDU6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk5MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHdyaXR0ZW4gYXMgaWYgSSYjMzk7bSB0aGlua2luZyBpdDoKCioqRGlnZ2luZyBpbnRvIHRoZSBOZXRGUyBDb2RlKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBUaGUga2VybmVsIGNvbmZpZ3VyYXRpb24gaW5kaWNhdGVzIHRoYXQgdGhlIGBmcy9uZXRmcy9yZWFkX3BncHJpdjIuY2AgZmlsZSBpcyBiZWluZyBjb21waWxlZCB3aGVuIGBORVRGU19TVVBQT1JUYCBpcyBlbmFibGVkLiBNeSBpbW1lZGlhdGUgaW5jbGluYXRpb24gaXMgdG8gY29uZmlybSB0aGlzIHdpdGhpbiB0aGUgYnVpbGQgc3lzdGVtLiBTbywgbGV0JiMzOTtzIHBvcCBvcGVuIGBmcy9uZXRmcy9NYWtlZmlsZWAgYW5kIHZlcmlmeSB0aGUgY29tcGlsYXRpb24gZGVwZW5kZW5jeSBhbmQgdGhhdCBgTkVURlNfU1VQUE9SVGAgaXMgaW5kZWVkIGEgY29udHJvbGxpbmcgZmFjdG9yLiBUaGlzIGtpbmQgb2YgcXVpY2sgY3Jvc3MtcmVmZXJlbmNlIGlzIGVzc2VudGlhbCB3aGVuIG5hdmlnYXRpbmcga2VybmVsIGJ1aWxkIGNvbmZpZ3VyYXRpb25zLiBJdCB3aWxsIHNob3cgbWUgdGhlIGJ1aWxkIHJ1bGVzIGFuZCB1bHRpbWF0ZWx5IHJldmVhbCB3aGF0IGlzIGhhcHBlbmluZyBkdXJpbmcgdGhlIGtlcm5lbCBidWlsZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDU6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVhZF9wZ3ByaXYyLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9uZXRmcy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9uZXRmcy9NYWtlZmlsZT0zPW5ldGZzLXkgOj0gXFxcbi0tXG5mcy9uZXRmcy9NYWtlZmlsZS0xMy1cdHJlYWRfY29sbGVjdC5vIFxcXG5mcy9uZXRmcy9NYWtlZmlsZToxNDpcdHJlYWRfcGdwcml2Mi5vIFxcXG5mcy9uZXRmcy9NYWtlZmlsZS0xNS1cdHJlYWRfcmV0cnkubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAwNTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mjk5CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYG5ldGZzLXlgIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjaGFuZ2UsIGFuZCBpdCBzZWVtcyB0byBiZSBwYXJ0IG9mIHRoZSBgbmV0ZnMteWAgbW9kdWxlLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIHRoZSBgbmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvYCBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlZW4gbW9kaWZpZWQuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGhvdyBpcyB0aGlzIGNvbmZpZ3VyZWQ/IElzIGBORVRGU19TVVBQT1JUYCBzdWZmaWNpZW50IGZvciBhY3RpdmF0aW9uPyBMZXQmIzM5O3MgdGFrZSBhIGxvb2suLi4gQWgsIHllcywgYE5FVEZTX1NVUFBPUlRgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIG9wdGlvbi4KCkhhbmcgb24gYSBzZWNvbmQsIHRob3VnaC4gSSYjMzk7bSByZWNhbGxpbmcgbm93LCBgTkVURlNfU1VQUE9SVGAgaXMgYSAqdHJpc3RhdGUqLiBUaGF0JiMzOTtzIG9mdGVuIHNlbGVjdGVkIGJ5IGZpbGVzeXN0ZW0gZHJpdmVycyB0aGVtc2VsdmVzLCB0aGluZ3MgbGlrZSBBRlMsIENFUEgsIENJRlMsIGFuZCA5UC4gSnVzdCBuZWVkIHRvIGNoZWNrIHdoYXQgc3BlY2lmaWNhbGx5IGRyaXZlcyB0aGF0IGNvbmZpZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBoZXJlIHRvIHNlZSBpZiB0aGlzIGNoYW5nZSBhbGlnbnMgd2l0aCB0aGUgb3ZlcmFsbCBtb2R1bGUgY29uZmlndXJhdGlvbiBzY2hlbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDA1OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBORVRGU19TVVBQT1JUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzLzlwL0tjb25maWc9Mj1jb25maWcgOVBfRlNcbi0tXG5mcy85cC9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIE5FVF85UFxuZnMvOXAvS2NvbmZpZzo1Olx0c2VsZWN0IE5FVEZTX1NVUFBPUlRcbmZzLzlwL0tjb25maWctNi1cdGhlbHBcbi0tXG5mcy9hZnMvS2NvbmZpZz0yPWNvbmZpZyBBRlNfRlNcbi0tXG5mcy9hZnMvS2NvbmZpZy02LVx0c2VsZWN0IEROU19SRVNPTFZFUlxuZnMvYWZzL0tjb25maWc6NzpcdHNlbGVjdCBORVRGU19TVVBQT1JUXG5mcy9hZnMvS2NvbmZpZy04LVx0c2VsZWN0IENSWVBUT19LUkI1XG4tLVxuZnMvY2VwaC9LY29uZmlnPTI9Y29uZmlnIENFUEhfRlNcbi0tXG5mcy9jZXBoL0tjb25maWctNS1cdHNlbGVjdCBDRVBIX0xJQlxuZnMvY2VwaC9LY29uZmlnOjY6XHRzZWxlY3QgTkVURlNfU1VQUE9SVFxuZnMvY2VwaC9LY29uZmlnLTctXHRzZWxlY3QgRlNfRU5DUllQVElPTl9BTEdTIGlmIEZTX0VOQ1JZUFRJT05cbi0tXG5mcy9uZnMvS2NvbmZpZz0xNzM9Y29uZmlnIE5GU19GU0NBQ0hFXG4tLVxuZnMvbmZzL0tjb25maWctMTc1LVx0ZGVwZW5kcyBvbiBORlNfRlNcbmZzL25mcy9LY29uZmlnOjE3NjpcdHNlbGVjdCBORVRGU19TVVBQT1JUXG5mcy9uZnMvS2NvbmZpZy0xNzctXHRzZWxlY3QgRlNDQUNIRVxuLS1cbmZzL3NtYi9jbGllbnQvS2NvbmZpZz0yPWNvbmZpZyBDSUZTXG4tLVxuZnMvc21iL2NsaWVudC9LY29uZmlnLTIwLVx0c2VsZWN0IE9JRF9SRUdJU1RSWVxuZnMvc21iL2NsaWVudC9LY29uZmlnOjIxOlx0c2VsZWN0IE5FVEZTX1NVUFBPUlRcbmZzL3NtYi9jbGllbnQvS2NvbmZpZy0yMi1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDU6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAwNAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWZpbmluZyB0aGUgTmV0d29yayBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24gU3RyYXRlZ3kqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZpbGVzeXN0ZW0gY29uZmlndXJhdGlvbnMsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZXkmIzM5O3JlIGxldmVyYWdpbmcgYE5FVEZTX1NVUFBPUlRgLiBUaGUgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBzaW1wbHkgbGlzdCBgTkVURlNfU1VQUE9SVGAgb3IgcGVyaGFwcyBgRlNDQUNIRWAgYWxvbmcgd2l0aCBhIHNwZWNpZmljIG5ldHdvcmsgZmlsZXN5c3RlbSBsaWtlIGBDSUZTYCBvciBgOVBfRlNgIGluIHRoZSBtZW51LiBUaGF0IHNlZW1lZCBjbGVhbi4KCkJ1dCB0aGVuLCBhIHNsaWdodCBjb3JyZWN0aW9uLiBgTkVURlNfU1VQUE9SVGAgaXNuJiMzOTt0IGRpcmVjdGx5IHVzZXItc2VsZWN0YWJsZSwgaXQmIzM5O3MgYSAqZGVwZW5kZW5jeSouIFNvLCBqdXN0IGxpc3RpbmcgaXQgd291bGRuJiMzOTt0IGJlIHF1aXRlIHJpZ2h0IGZvciB0aGUgdXNlci4gT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgaXQgKmlzKiBzZWxlY3RhYmxlIHRvIGdpdmUgdGhlIHVzZXIgY29ycmVjdCBjb250ZXh0LgoKSSBuZWVkIHRvIGdvIGRlZXBlciBpbnRvIHRoZSBzb3VyY2UsIHNwZWNpZmljYWxseSBgZnMvbmV0ZnMvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGNvbnRyb2wgZm9yIGBORVRGU19TVVBQT1JUYCBsaWtlbHkgcmVzaWRlcy4gR290dGEgY2hlY2sgdGhhdCBLY29uZmlnIGZpbGUgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAwNTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVURlNfU1VQUE9SVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL25ldGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbmV0ZnMvS2NvbmZpZy0yLVxuZnMvbmV0ZnMvS2NvbmZpZzozOmNvbmZpZyBORVRGU19TVVBQT1JUXG5mcy9uZXRmcy9LY29uZmlnLTQtXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAwNTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzgyCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTmF2aWdhdGluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24gTGFieXJpbnRoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHRyaXN0YXRlIG9wdGlvbiwgYW5kIHdpdGhvdXQgYSBkaXJlY3QgcHJvbXB0LCBJIGNhbiYjMzk7dCBqdXN0IGZsaXAgYENPTkZJR19ORVRGU19TVVBQT1JUPXlgLiBUaGF0JiMzOTtzIGEgbm8tZ28uIEkgbmVlZCBhIHRyaWdnZXIsIHNvbWV0aGluZyB0aGF0ICpzZWxlY3RzKiB0aGlzIGZ1bmN0aW9uYWxpdHkuIExldCYjMzk7cyB0aGluay4uLiBgQ0lGU2AsIGA5UF9GU2AsIGBDRVBIX0ZTYCwgb3IgZXZlbiBgQUZTX0ZTYCBzZWVtIGxpa2UgcG90ZW50aWFsIGNhbmRpZGF0ZXMuIFRoZXkmIzM5O3JlIGFsbCBuZXR3b3JrIGZpbGVzeXN0ZW0gb3B0aW9ucywgc28gdGhleSYjMzk7cmUgbGlrZWx5IGRlcGVuZGVuY2llcy4gSSBzaG91bGQgcHJvYmFibHkgbGlzdCBgQ0lGU2AgYW5kIGA5UF9GU2AgYXMgbXkgdG9wIGNob2ljZXMgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gV2FpdCBhIHNlY29uZCwgaG9sZCBvbi4uLiBgRlNDQUNIRWAgaXMgdXNlci1zZWxlY3RhYmxlLCBhbmQgdGhhdCBoYXMgdGhlIHBvdGVudGlhbCB0byBkcmFnIHRoaXMgaW4uIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gZmFjdG9yIHRoYXQgaW50byBteSBwbGFuLiBUaGlzIG1heSB0YWtlIGEgbGl0dGxlIG1vcmUgZGlnZ2luZyB0aGFuIEkgaW5pdGlhbGx5IHRob3VnaHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDA1OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGU0NBQ0hFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbmV0ZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9uZXRmcy9LY29uZmlnPTI1PWNvbmZpZyBORVRGU19ERUJVR1xuLS1cbmZzL25ldGZzL0tjb25maWctMzItXG5mcy9uZXRmcy9LY29uZmlnOjMzOmNvbmZpZyBGU0NBQ0hFXG5mcy9uZXRmcy9LY29uZmlnLTM0LVx0Ym9vbCBcJiMzNDtHZW5lcmFsIGZpbGVzeXN0ZW0gbG9jYWwgY2FjaGluZyBtYW5hZ2VyXCYjMzQ7XG4tLVxuZnMvbmV0ZnMvS2NvbmZpZy00My1cbmZzL25ldGZzL0tjb25maWc6NDQ6Y29uZmlnIEZTQ0FDSEVfU1RBVFNcbmZzL25ldGZzL0tjb25maWctNDUtXHRib29sIFwmIzM0O0dhdGhlciBzdGF0aXN0aWNhbCBpbmZvcm1hdGlvbiBvbiBsb2NhbCBjYWNoaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDA1OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MjQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQ2hlY2tpbmcgRmlsZXN5c3RlbSBDYWNoZSBEZXBlbmRlbmN5KioKCkFscmlnaHQsIG15IGludGVybmFsIGNoZWNrbGlzdCBoYXMgZmxhZ2dlZCBzb21ldGhpbmcgcG90ZW50aWFsbHkgc2lnbmlmaWNhbnQuIE15IHRob3VnaHQgcHJvY2VzcyBpcyBjZW50ZXJlZCBhcm91bmQgZW5zdXJpbmcgdGhhdCB0aGUgYEZTQ0FDSEVgIG9wdGlvbiBwcm9wZXJseSBzZWxlY3RzIHRoZSBgTkVURlNfU1VQUE9SVGAgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byBjb25maXJtIHRoZSBkZXBlbmRlbmN5LiBUaGlzIGlzIGNydWNpYWwgZm9yIGF2b2lkaW5nIGFueSB1bmV4cGVjdGVkIHJlZ3Jlc3Npb25zIG9yIG1pc2NvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gbmV0d29yayBmaWxlc3lzdGVtIGNhY2hpbmcsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggY29tcGxleCBvciBwZXJmb3JtYW5jZS1zZW5zaXRpdmUgc3lzdGVtcy4gQSBtaXNzaW5nIGRlcGVuZGVuY3kgaGVyZSB3b3VsZCBiZSBhIGNyaXRpY2FsIG92ZXJzaWdodCwgbGVhZGluZyB0byBwb3RlbnRpYWxseSBzdWJ0bGUgYW5kIGZydXN0cmF0aW5nIGRlYnVnZ2luZyBzY2VuYXJpb3MgZG93biB0aGUgbGluZS4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSB0aGUgS2NvbmZpZyByZWxhdGlvbnNoaXAgYmV0d2VlbiBgRlNDQUNIRWAgYW5kIGBORVRGU19TVVBQT1JUYCB0byBlbnN1cmUgdGhleSYjMzk7cmUgbGlua2VkIGFzIGV4cGVjdGVkLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoaXMgaXMgb2Z0ZW4gYSBjb21tb24gYXJlYSBmb3Igb3ZlcnNpZ2h0IGR1cmluZyBjb2RlIGludGVncmF0aW9uIG9yIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgc28gSSYjMzk7bSBkb3VibGUtY2hlY2tpbmcgYXMgYSBtYXR0ZXIgb2YgZHVlIGRpbGlnZW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDU6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgTkVURlNfU1VQUE9SVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL25ldGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNCAwNTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDgwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBgRlNDQUNIRWAgRGVwZW5kZW5jeSoqCgpIbW0sIHNvIEkgbmVlZCB0byBjbGFyaWZ5IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBgRlNDQUNIRWAgYW5kIGBORVRGU19TVVBQT1JUYC4gSXMgYEZTQ0FDSEVgIGFjdHVhbGx5ICpkZXBlbmRlbnQqIG9uIGBORVRGU19TVVBQT1JUYCwgb3IgZG9lcyBpdCBqdXN0ICpzZWxlY3QqIGl0PyBUaGlzIGlzbiYjMzk7dCBpbW1lZGlhdGVseSBvYnZpb3VzLCBhbmQgdGhhdCBhbWJpZ3VpdHkgaXMgYSBwcm9ibGVtIGZvciBwcm9wZXIgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50LiBUbyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLCB0aGUgbW9zdCByZWxpYWJsZSBhcHByb2FjaCBpcyB0byBkaXJlY3RseSBleGFtaW5lIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZXNlIGtpbmRzIG9mIGRlcGVuZGVuY2llcy4gVGhhdCYjMzk7cyBgZnMvbmV0ZnMvS2NvbmZpZ2AuIExldCYjMzk7cyBkaWcgaW4gdGhlcmUgYW5kIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGUgaGFzIHRvIHNheS4gTm8gYXNzdW1wdGlvbnMsIGp1c3QgdGhlIHNvdXJjZSBvZiB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uLiBUaGF0JiMzOTtsbCBnaXZlIGEgZGVmaW5pdGl2ZSBhbnN3ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA0IDA1OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvbmV0ZnMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdFxuICAgMzpcdGNvbmZpZyBORVRGU19TVVBQT1JUXG4gICA0Olx0XHR0cmlzdGF0ZVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIG5ldHdvcmsgZmlsZXN5c3RlbXMsIGluY2x1ZGluZ1xuICAgNzpcdFx0ICBoZWxwZXJzIGZvciBoaWdoLWxldmVsIGJ1ZmZlcmVkIEkvTywgYWJzdHJhY3Rpbmcgb3V0IHJlYWRcbiAgIDg6XHRcdCAgc2VnbWVudGF0aW9uLCBsb2NhbCBjYWNoaW5nIGFuZCB0cmFuc3BhcmVudCBodWdlIHBhZ2Ugc3VwcG9ydC5cbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgTkVURlNfU1RBVFNcbiAgMTE6XHRcdGJvb2wgXCYjMzQ7R2F0aGVyIHN0YXRpc3RpY2FsIGluZm9ybWF0aW9uIG9uIGxvY2FsIGNhY2hpbmdcJiMzNDtcbiAgMTI6XHRcdGRlcGVuZHMgb24gTkVURlNfU1VQUE9SVCBcdTAwMjZcdTAwMjYgUFJPQ19GU1xuICAxMzpcdFx0aGVscFxuICAxNDpcdFx0ICBUaGlzIG9wdGlvbiBjYXVzZXMgc3RhdGlzdGljYWwgaW5mb3JtYXRpb24gdG8gYmUgZ2F0aGVyZWQgb24gbG9jYWxcbiAgMTU6XHRcdCAgY2FjaGluZyBhbmQgZXhwb3J0ZWQgdGhyb3VnaCBmaWxlOlxuICAxNjpcdFxuICAxNzpcdFx0XHQvcHJvYy9mcy9mc2NhY2hlL3N0YXRzXG4gIDE4Olx0XG4gIDE5Olx0XHQgIFRoZSBnYXRoZXJpbmcgb2Ygc3RhdGlzdGljcyBhZGRzIGEgY2VydGFpbiBhbW91bnQgb2Ygb3ZlcmhlYWQgdG9cbiAgMjA6XHRcdCAgZXhlY3V0aW9uIGFzIHRoZXJlIGFyZSBhIHF1aXRlIGEgZmV3IHN0YXRzIGdhdGhlcmVkLCBhbmQgb24gYVxuICAyMTpcdFx0ICBtdWx0aS1DUFUgc3lzdGVtIHRoZXNlIG1heSBiZSBvbiBjYWNoZWxpbmVzIHRoYXQga2VlcCBib3VuY2luZ1xuICAyMjpcdFx0ICBiZXR3ZWVuIENQVXMuICBPbiB0aGUgb3RoZXIgaGFuZCwgdGhlIHN0YXRzIGFyZSB2ZXJ5IHVzZWZ1bCBmb3JcbiAgMjM6XHRcdCAgZGVidWdnaW5nIHB1cnBvc2VzLiAgU2F5aW5nICYjMzk7WSYjMzk7IGhlcmUgaXMgcmVjb21tZW5kZWQuXG4gIDI0Olx0XG4gIDI1Olx0Y29uZmlnIE5FVEZTX0RFQlVHXG4gIDI2Olx0XHRib29sIFwmIzM0O0VuYWJsZSBkeW5hbWljIGRlYnVnZ2luZyBuZXRmc2xpYiBhbmQgRlMtQ2FjaGVcJiMzNDtcbiAgMjc6XHRcdGRlcGVuZHMgb24gTkVURlNfU1VQUE9SVFxuICAyODpcdFx0aGVscFxuICAyOTpcdFx0ICBUaGlzIHBlcm1pdHMgZGVidWdnaW5nIHRvIGJlIGR5bmFtaWNhbGx5IGVuYWJsZWQgaW4gdGhlIGxvY2FsIGNhY2hpbmdcbiAgMzA6XHRcdCAgbWFuYWdlbWVudCBtb2R1bGUuICBJZiB0aGlzIGlzIHNldCwgdGhlIGRlYnVnZ2luZyBvdXRwdXQgbWF5IGJlXG4gIDMxOlx0XHQgIGVuYWJsZWQgYnkgc2V0dGluZyBiaXRzIGluIC9zeXMvbW9kdWxlL25ldGZzL3BhcmFtZXRlcnMvZGVidWcuXG4gIDMyOlx0XG4gIDMzOlx0Y29uZmlnIEZTQ0FDSEVcbiAgMzQ6XHRcdGJvb2wgXCYjMzQ7R2VuZXJhbCBmaWxlc3lzdGVtIGxvY2FsIGNhY2hpbmcgbWFuYWdlclwmIzM0O1xuICAzNTpcdFx0ZGVwZW5kcyBvbiBORVRGU19TVVBQT1JUXG4gIDM2Olx0XHRoZWxwXG4gIDM3Olx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgYSBnZW5lcmljIGZpbGVzeXN0ZW0gY2FjaGluZyBtYW5hZ2VyIHRoYXQgY2FuIGJlXG4gIDM4Olx0XHQgIHVzZWQgYnkgdmFyaW91cyBuZXR3b3JrIGFuZCBvdGhlciBmaWxlc3lzdGVtcyB0byBjYWNoZSBkYXRhIGxvY2FsbHkuXG4gIDM5Olx0XHQgIERpZmZlcmVudCBzb3J0cyBvZiBjYWNoZXMgY2FuIGJlIHBsdWdnZWQgaW4sIGRlcGVuZGluZyBvbiB0aGVcbiAgNDA6XHRcdCAgcmVzb3VyY2VzIGF2YWlsYWJsZS5cbiAgNDE6XHRcbiAgNDI6XHRcdCAgU2VlIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2FjaGluZy9mc2NhY2hlLnJzdCBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgNDM6XHRcbiAgNDQ6XHRjb25maWcgRlNDQUNIRV9TVEFUU1xuICA0NTpcdFx0Ym9vbCBcJiMzNDtHYXRoZXIgc3RhdGlzdGljYWwgaW5mb3JtYXRpb24gb24gbG9jYWwgY2FjaGluZ1wmIzM0O1xuICA0NjpcdFx0ZGVwZW5kcyBvbiBGU0NBQ0hFIFx1MDAyNlx1MDAyNiBQUk9DX0ZTXG4gIDQ3Olx0XHRzZWxlY3QgTkVURlNfU1RBVFNcbiAgNDg6XHRcdGhlbHBcbiAgNDk6XHRcdCAgVGhpcyBvcHRpb24gY2F1c2VzIHN0YXRpc3RpY2FsIGluZm9ybWF0aW9uIHRvIGJlIGdhdGhlcmVkIG9uIGxvY2FsXG4gIDUwOlx0XHQgIGNhY2hpbmcgYW5kIGV4cG9ydGVkIHRocm91Z2ggZmlsZTpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzAwMQoJCQkJCQkJb3V0cHV0OiAxNjIKCQkJCQkJCXRob3VnaHRzOiAzNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IG5ldGZzX3BncHJpdjJfY29weV9mb2xpbyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoZSBkZXBlbmRlbmN5OiBgRlNDQUNIRWAgcmVsaWVzIG9uIGBORVRGU19TVVBQT1JUYC4gVG8gZ2V0IGBORVRGU19TVVBQT1JUYCBnb2luZywgSSBuZWVkIHRvIGVuYWJsZSBvbmUgb2YgdGhlIG5ldHdvcmsgZmlsZXN5c3RlbSBvcHRpb25zOiBgQ0lGU2AsIGA5UF9GU2AsIGBDRVBIX0ZTYCwgb3IgYEFGU19GU2AuIExldCBtZSBsaXN0IHRob3NlIG91dCBhZ2FpbjogYENJRlNgLCBgOVBfRlNgLCBgQUZTX0ZTYCwgYENFUEhfRlNgLCBhbmQgb2YgY291cnNlIGBGU0NBQ0hFYCBpdHNlbGYuCgpUaGUga2V5IGZ1bmN0aW9uIHRoYXQmIzM5O3MgYmVlbiBtb2RpZmllZCBoZXJlIGlzIGBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW9gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgcmVhY2hhYmxlIHRoaXMgY29kZSBwYXRoIGlzLiBMZXQgbWUgdHJhY2UgdGhhdC4gUmlnaHQsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGVgLCB3aGljaCBpbiB0dXJuIGdldHMgY2FsbGVkIGJ5IGBuZXRmc191bmxvY2tfcmVhZF9mb2xpb2AgKmlmKiB0aGUgYE5FVEZTX1JSRVFfRk9MSU9fQ09QWV9UT19DQUNIRWAgZmxhZyBpcyBzZXQuIFRoYXQgc3VnZ2VzdHMgaXQmIzM5O3MgaW52b2x2ZWQgd2hlbiBjYWNoaW5nIGlzIGFjdHVhbGx5ICp1c2VkKi4KClRoZSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgcmVhbGx5IG9uIHRob3NlIHR3byBmdW5jdGlvbnM6IGBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW9gIGFuZCBgbmV0ZnNfcGdwcml2Ml9jb3B5X3RvX2NhY2hlYC4gQ29uc2lkZXJpbmcgdGhhdCBgbmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvYCBnZXRzIGNhbGxlZCBmb3IgZXZlcnkgZm9saW8gY29waWVkIGludG8gdGhlIGNhY2hlLCBteSBpbnN0aW5jdHMgdGVsbCBtZSB0aGlzIGlzIHByb2JhYmx5IGEgaG90IHBhdGguIFRoYXQgbWFrZXMgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gTGV0JiMzOTtzIG1hcmsgdGhpcyBhcyBgV29ydGhGdXp6aW5nPXRydWVgLgoKU28sIHRoZSBjb25maWcgb3B0aW9ucyBJIG5lZWQgdG8gY29uc2lkZXIgZm9yIHRoaXMgZnV6emluZyBhcmU6IGBDSUZTYCwgYDlQX0ZTYCwgYENFUEhfRlNgLCBgQUZTX0ZTYCwgYW5kIGBGU0NBQ0hFYC4KClVsdGltYXRlbHksIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgZnVuY3Rpb25hbCBpc3N1ZS4gVGhlIGZpeCBhcHBlYXJzIHRvIGFkZCBhIG1pc3NpbmcgY2FsbCB0byBgZm9saW9fZW5kX3ByaXZhdGVfMmAgaW4gYG5ldGZzX3BncHJpdjJfY29weV9mb2xpb2AgaWYgYHJvbGxpbmdfYnVmZmVyX2FwcGVuZGAgZmFpbHMuIFRoZSBmYWN0IHRoYXQgdGhlIHRhcmdldCBpcyBhIG5ldHdvcmsgZmlsZXN5c3RlbSB3aGljaCB1c2VzIGBmc2NhY2hlYCBhZGRzIHRvIGl0cyBpbXBvcnRhbmNlLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O2xsIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBjb2RlIGluIGBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW9gIGFuZCBgbmV0ZnNfcGdwcml2Ml9jb3B5X3RvX2NhY2hlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDQgMDU6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NJRlMmIzM0OywKICAgICYjMzQ7OVBfRlMmIzM0OywKICAgICYjMzQ7Q0VQSF9GUyYjMzQ7LAogICAgJiMzNDtBRlNfRlMmIzM0OywKICAgICYjMzQ7RlNDQUNIRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25ldGZzX3BncHJpdjJfY29weV9mb2xpbyYjMzQ7LAogICAgJiMzNDtuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtaXNzaW5nIGZvbGlvX2VuZF9wcml2YXRlXzIoKSBjYWxsIGluIG5ldGZzX3BncHJpdjJfY29weV9mb2xpbygpIHdoZW4gYXBwZW5kaW5nIHRvIHRoZSByb2xsaW5nIGJ1ZmZlciBmYWlscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXRmcyBsaWJyYXJ5LCB3aGljaCBpcyB1c2VkIGJ5IG5ldHdvcmsgZmlsZXN5c3RlbXMgKGxpa2UgQ0lGUywgOVAsIENlcGgsIEFGUykgZm9yIGxvY2FsIGNhY2hpbmcgKGZzY2FjaGUpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDSUZTJiMzNDssCiAgICAmIzM0OzlQX0ZTJiMzNDssCiAgICAmIzM0O0NFUEhfRlMmIzM0OywKICAgICYjMzQ7QUZTX0ZTJiMzNDssCiAgICAmIzM0O0ZTQ0FDSEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW8mIzM0OywKICAgICYjMzQ7bmV0ZnNfcGdwcml2Ml9jb3B5X3RvX2NhY2hlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWlzc2luZyBmb2xpb19lbmRfcHJpdmF0ZV8yKCkgY2FsbCBpbiBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW8oKSB3aGVuIGFwcGVuZGluZyB0byB0aGUgcm9sbGluZyBidWZmZXIgZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZnMgbGlicmFyeSwgd2hpY2ggaXMgdXNlZCBieSBuZXR3b3JrIGZpbGVzeXN0ZW1zIChsaWtlIENJRlMsIDlQLCBDZXBoLCBBRlMpIGZvciBsb2NhbCBjYWNoaW5nIChmc2NhY2hlKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA1OjM5OjM2LjY5NDYxMjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODg5MTE2NjM3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDSUZTXCIsXG4gICAgXCI5UF9GU1wiLFxuICAgIFwiQ0VQSF9GU1wiLFxuICAgIFwiQUZTX0ZTXCIsXG4gICAgXCJGU0NBQ0hFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvXCIsXG4gICAgXCJuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1pc3NpbmcgZm9saW9fZW5kX3ByaXZhdGVfMigpIGNhbGwgaW4gbmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvKCkgd2hlbiBhcHBlbmRpbmcgdG8gdGhlIHJvbGxpbmcgYnVmZmVyIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldGZzIGxpYnJhcnksIHdoaWNoIGlzIHVzZWQgYnkgbmV0d29yayBmaWxlc3lzdGVtcyAobGlrZSBDSUZTLCA5UCwgQ2VwaCwgQUZTKSBmb3IgbG9jYWwgY2FjaGluZyAoZnNjYWNoZSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA1OjM5OjM2LjY5NDYxNzU2OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIzNzE3NTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOTJkZWNhMmYxNmYzZjliMzU5M2M4ZTBjYzFlMzcyNGVjMjNkNGU3Y1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCA0IDA1OjM5OjM1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL25ldGZzL3JlYWRfcGdwcml2Mi5jIGIvZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmNcXG5pbmRleCBhMTQ4OWFhMjlmNzgyYS4uN2VhY2M1OGFiYWRiNzMgMTAwNjQ0XFxuLS0tIGEvZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmNcXG4rKysgYi9mcy9uZXRmcy9yZWFkX3BncHJpdjIuY1xcbkBAIC01NCw2ICs1NCw3IEBAIHN0YXRpYyB2b2lkIG5ldGZzX3BncHJpdjJfY29weV9mb2xpbyhzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqY3JlcSwgc3RydWN0IGZvbGlvXFxuIFxcbiBcXHQvKiBBdHRhY2ggdGhlIGZvbGlvIHRvIHRoZSByb2xsaW5nIGJ1ZmZlci4gKi9cXG4gXFx0aWYgKHJvbGxpbmdfYnVmZmVyX2FwcGVuZChcXHUwMDI2Y3JlcS1cXHUwMDNlYnVmZmVyLCBmb2xpbywgMCkgXFx1MDAzYyAwKSB7XFxuK1xcdFxcdGZvbGlvX2VuZF9wcml2YXRlXzIoZm9saW8pO1xcbiBcXHRcXHRjbGVhcl9iaXQoTkVURlNfUlJFUV9GT0xJT19DT1BZX1RPX0NBQ0hFLCBcXHUwMDI2Y3JlcS1cXHUwMDNlZmxhZ3MpO1xcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDU6Mzk6MzcuMTE5MDQyNzk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODQ2NjcyNzI0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDSUZTXCIsXG4gICAgXCI5UF9GU1wiLFxuICAgIFwiQ0VQSF9GU1wiLFxuICAgIFwiQUZTX0ZTXCIsXG4gICAgXCJGU0NBQ0hFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvXCIsXG4gICAgXCJuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1pc3NpbmcgZm9saW9fZW5kX3ByaXZhdGVfMigpIGNhbGwgaW4gbmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvKCkgd2hlbiBhcHBlbmRpbmcgdG8gdGhlIHJvbGxpbmcgYnVmZmVyIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldGZzIGxpYnJhcnksIHdoaWNoIGlzIHVzZWQgYnkgbmV0d29yayBmaWxlc3lzdGVtcyAobGlrZSBDSUZTLCA5UCwgQ2VwaCwgQUZTKSBmb3IgbG9jYWwgY2FjaGluZyAoZnNjYWNoZSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOTJkZWNhMmYxNmYzZjliMzU5M2M4ZTBjYzFlMzcyNGVjMjNkNGU3Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDQgMDU6Mzk6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9uZXRmcy9yZWFkX3BncHJpdjIuYyBiL2ZzL25ldGZzL3JlYWRfcGdwcml2Mi5jXG5pbmRleCBhMTQ4OWFhMjlmNzgyYS4uN2VhY2M1OGFiYWRiNzMgMTAwNjQ0XG4tLS0gYS9mcy9uZXRmcy9yZWFkX3BncHJpdjIuY1xuKysrIGIvZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmNcbkBAIC01NCw2ICs1NCw3IEBAIHN0YXRpYyB2b2lkIG5ldGZzX3BncHJpdjJfY29weV9mb2xpbyhzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqY3JlcSwgc3RydWN0IGZvbGlvXG4gXG4gXHQvKiBBdHRhY2ggdGhlIGZvbGlvIHRvIHRoZSByb2xsaW5nIGJ1ZmZlci4gKi9cbiBcdGlmIChyb2xsaW5nX2J1ZmZlcl9hcHBlbmQoXHUwMDI2Y3JlcS1cdTAwM2VidWZmZXIsIGZvbGlvLCAwKSBcdTAwM2MgMCkge1xuK1x0XHRmb2xpb19lbmRfcHJpdmF0ZV8yKGZvbGlvKTtcbiBcdFx0Y2xlYXJfYml0KE5FVEZTX1JSRVFfRk9MSU9fQ09QWV9UT19DQUNIRSwgXHUwMDI2Y3JlcS1cdTAwM2VmbGFncyk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA1OjM5OjM3LjExOTA0NDU3OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NjcyMTQ0MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBmcy9uZXRmcy9yZWFkX3BncHJpdjIuY2AgY2hhbmdlLlxuXG4qKkV4YW1pbmluZyB0aGUgRm9saW8gSGFuZGxpbmcgaW4gYG5ldGZzYCoqXG5cblJpZ2h0LCBzbyB0aGVyZSdzIGEgcGF0Y2ggaGVyZSwgYW5kIGl0J3MgdG91Y2hpbmcgYHJlYWRfcGdwcml2Mi5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhZGRpbmcgYSBgZm9saW9fZW5kX3ByaXZhdGVfMihmb2xpbyk7YCBjYWxsLiBUaGUgY3J1Y2lhbCBwYXJ0IGhlcmUgaXMgKndoZW4qIGl0J3MgYmVpbmcgYWRkZWQ6IHNwZWNpZmljYWxseSwgd2hlbiBgcm9sbGluZ19idWZmZXJfYXBwZW5kYCBmYWlscy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQncyBgcm9sbGluZ19idWZmZXJfYXBwZW5kYCBkb2luZywgYW5kIHdoeSB3b3VsZCBpdCBmYWlsIGluIGEgd2F5IHRoYXQgcmVxdWlyZXMgdGhpcyBraW5kIG9mIGNsZWFudXA/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkYXRhIHN0cnVjdHVyZXMgYW5kIGNvbnRyb2wgZmxvdyBhcm91bmQgdGhhdCBmdW5jdGlvbi4gSXMgdGhpcyBhIG5ldyBmYWlsdXJlIGNhc2UsIG9yIGlzIHRoaXMgZXJyb3IgaGFuZGxpbmcgYmVpbmcgZXhwbGljaXRseSBjb3JyZWN0ZWQ/IFRoZSBgZm9saW9fZW5kX3ByaXZhdGVfMmAgZnVuY3Rpb24gbGlrZWx5IG5lZWRzIHRvIGJlIGludmVzdGlnYXRlZC4gV2hhdCBleGFjdGx5IGRvZXMgaXQgZG8/IE15IGV4cGVyaWVuY2Ugc2F5cyB0aGlzIGlzIGxpa2VseSByZWxlYXNpbmcgcmVzb3VyY2VzLiBCdXQgaW4gd2hhdCBjb250ZXh0LCBhbmQgd2hhdCByZXNvdXJjZXMgYXJlIHdlIGRlYWxpbmcgd2l0aD8gTGV0J3MgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg0OSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDU6Mzk6NDAuNjg2MjYxNzMxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2OTMzNzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldGZzX3BncHJpdjJfY29weV9mb2xpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9uZXRmcy9yZWFkX3BncHJpdjIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9uZXRmcy9yZWFkX3BncHJpdjIuYy0xOC0gKi9cXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYzoxOTpzdGF0aWMgdm9pZCBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW8oc3RydWN0IG5ldGZzX2lvX3JlcXVlc3QgKmNyZXEsIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtMjAte1xcbi0tXFxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmM9MTMzPXZvaWQgbmV0ZnNfcGdwcml2Ml9jb3B5X3RvX2NhY2hlKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtMTQzLVxcdGZvbGlvX3N0YXJ0X3ByaXZhdGVfMihmb2xpbyk7XFxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmM6MTQ0OlxcdG5ldGZzX3BncHJpdjJfY29weV9mb2xpbyhjcmVxLCBmb2xpbyk7XFxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtMTQ1LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDU6Mzk6NDAuNzQzMjA5MDE3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc5NzkxNDg3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBhIERhdGEgQ29weSBQYXRoIGluIE5ldEZTKipcblxuT2theSwgc28gSSBzZWUgYG5ldGZzX3BncHJpdjJfY29weV9mb2xpb2AgaXMgYmVpbmcgY2FsbGVkIGZyb20gYG5ldGZzX3BncHJpdjJfY29weV90b19jYWNoZWAuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIHVzdWFsbHkgbWVhbnMgd2UgaGF2ZSBhIGZ1bmN0aW9uIGNvcHlpbmcgZGF0YSBmcm9tIG9uZSBsb2NhdGlvbiB0byBhbm90aGVyLiBUbyB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGRhdGEgZmxvdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgbmV0ZnNfcGdwcml2Ml9jb3B5X3RvX2NhY2hlYCBpcyBkb2luZywgc28gbGV0J3Mgc3RhcnQgdGhlcmUuIEknbGwgbmVlZCB0byBkaWcgaW50byBgbmV0ZnNfcGdwcml2Ml9jb3B5X3RvX2NhY2hlYCB0byBzZWUgd2hhdCBpbmZvcm1hdGlvbiBpdCdzIHBhc3NpbmcgdG8gdGhlIGBjb3B5X2ZvbGlvYCBmdW5jdGlvbiwgYW5kIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkLiBGcm9tIHRoYXQgcG9pbnQsIEkgY2FuIGZvcm0gYSBiZXR0ZXIgaWRlYSBhYm91dCBob3cgdGhlIGRhdGEgY29waWVzIGFyZSBwZXJmb3JtZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MDUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQwNTozOTo0My41NDExMjU4NjhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM4MTM3NTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldGZzX3BncHJpdjJfY29weV90b19jYWNoZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9uZXRmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbmV0ZnMvaW50ZXJuYWwuaD0xMTQ9dm9pZCBuZXRmc19jYWNoZV9yZWFkX3Rlcm1pbmF0ZWQodm9pZCAqcHJpdiwgc3NpemVfdCB0cmFuc2ZlcnJlZF9vcl9lcnJvcik7XFxuLS1cXG5mcy9uZXRmcy9pbnRlcm5hbC5oLTExOC0gKi9cXG5mcy9uZXRmcy9pbnRlcm5hbC5oOjExOTp2b2lkIG5ldGZzX3BncHJpdjJfY29weV90b19jYWNoZShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqcnJlcSwgc3RydWN0IGZvbGlvICpmb2xpbyk7XFxuZnMvbmV0ZnMvaW50ZXJuYWwuaC0xMjAtdm9pZCBuZXRmc19wZ3ByaXYyX2VuZF9jb3B5X3RvX2NhY2hlKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxKTtcXG4tLVxcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jPTQyPXN0YXRpYyB2b2lkIG5ldGZzX3VubG9ja19yZWFkX2ZvbGlvKHN0cnVjdCBuZXRmc19pb19yZXF1ZXN0ICpycmVxLFxcbi0tXFxuZnMvbmV0ZnMvcmVhZF9jb2xsZWN0LmMtODEtXFx0XFx0aWYgKHRlc3RfYml0KE5FVEZTX1JSRVFfRk9MSU9fQ09QWV9UT19DQUNIRSwgXFx1MDAyNnJyZXEtXFx1MDAzZWZsYWdzKSlcXG5mcy9uZXRmcy9yZWFkX2NvbGxlY3QuYzo4MjpcXHRcXHRcXHRuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGUocnJlcSwgZm9saW8pO1xcbmZzL25ldGZzL3JlYWRfY29sbGVjdC5jLTgzLVxcdH1cXG4tLVxcbmZzL25ldGZzL3JlYWRfcGdwcml2Mi5jPTk4PXN0YXRpYyBzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqbmV0ZnNfcGdwcml2Ml9iZWdpbl9jb3B5X3RvX2NhY2hlKFxcbi0tXFxuZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmMtMTMyLSAqL1xcbmZzL25ldGZzL3JlYWRfcGdwcml2Mi5jOjEzMzp2b2lkIG5ldGZzX3BncHJpdjJfY29weV90b19jYWNoZShzdHJ1Y3QgbmV0ZnNfaW9fcmVxdWVzdCAqcnJlcSwgc3RydWN0IGZvbGlvICpmb2xpbylcXG5mcy9uZXRmcy9yZWFkX3BncHJpdjIuYy0xMzQte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQwNTozOTo0My42NzkyNjkwNzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjMyOTAzMTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIG5ldGZzIExpYnJhcnkgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBjaGFuZ2UgYXBwZWFycyB0byBiZSB3aXRoaW4gdGhlIGBuZXRmc2AgbGlicmFyeSwgd2hpY2ggaXMgYSBrZXkgY29tcG9uZW50IGZvciBob3cgbmV0d29yayBmaWxlc3lzdGVtcyBsaWtlIEFGUywgQ2VwaCwgYW5kIENJRlMgbWFuYWdlIHRoZWlyIGxvY2FsIGNhY2hpbmcgbWVjaGFuaXNtcywgc3BlY2lmaWNhbGx5LCBgZnNjYWNoZWAuIEZ1bmN0aW9uYWxseSwgaXQncyBhIGZpeCwgd2hpY2ggaXMgYWx3YXlzIGdvb2QuIFRoZSBzcGVjaWZpYyBpc3N1ZSBpcyBhIG1pc3NpbmcgYGZvbGlvX2VuZF9wcml2YXRlXzJgIGNhbGwgd2hlbiBhcHBlbmRpbmcgdG8gdGhlIHJvbGxpbmcgYnVmZmVyIGZhaWxzLiBUaGF0IG1ha2VzIHNlbnNlOyBmYWlsdXJlIHN0YXRlcyBuZWVkIHByb3BlciBjbGVhbnVwLCBhbmQgSSB3b3VsZCBoYXZlIGV4cGVjdGVkIGEgY2hlY2sgZm9yIHRoaXMgdHlwZSBvZiB0aGluZyBpbiB0aGUgZXhpc3RpbmcgY29kZSwgYnV0IHRoZXNlIHRoaW5ncyBoYXBwZW4uXG5cbk5vdywgbGV0J3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYG5ldGZzYC4gVW5kZXJzdGFuZGluZyBob3cgdGhpcyBsaWJyYXJ5IGlzIGNvbmZpZ3VyZWQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHdpZGVyIGNvbnRleHQgb2YgdGhpcyBjaGFuZ2UsIGFuZCBob3cgaXQgbWlnaHQgaW1wYWN0IHZhcmlvdXMgZW52aXJvbm1lbnRzLiBJJ20gZ29pbmcgdG8gbG9vayB0byBzZWUgaWYgdGhpcyBjaGFuZ2UgbWF5IGltcGFjdCBhbnkgb3RoZXIgYXJlYXMsIG9yIGlmIHRoZXJlIGlzIGFueXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgYnJvdWdodCB1cCB3aXRoIHRoZSBjbGllbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwOTYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQwNTozOTo0Ni45MTIxOTU5NDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYyODY3NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVEZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL25ldGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbmV0ZnMvS2NvbmZpZy0yLVxcbmZzL25ldGZzL0tjb25maWc6Mzpjb25maWcgTkVURlNfU1VQUE9SVFxcbmZzL25ldGZzL0tjb25maWctNC1cXHR0cmlzdGF0ZVxcbi0tXFxuZnMvbmV0ZnMvS2NvbmZpZy05LVxcbmZzL25ldGZzL0tjb25maWc6MTA6Y29uZmlnIE5FVEZTX1NUQVRTXFxuZnMvbmV0ZnMvS2NvbmZpZy0xMS1cXHRib29sIFxcXCJHYXRoZXIgc3RhdGlzdGljYWwgaW5mb3JtYXRpb24gb24gbG9jYWwgY2FjaGluZ1xcXCJcXG4tLVxcbmZzL25ldGZzL0tjb25maWctMjQtXFxuZnMvbmV0ZnMvS2NvbmZpZzoyNTpjb25maWcgTkVURlNfREVCVUdcXG5mcy9uZXRmcy9LY29uZmlnLTI2LVxcdGJvb2wgXFxcIkVuYWJsZSBkeW5hbWljIGRlYnVnZ2luZyBuZXRmc2xpYiBhbmQgRlMtQ2FjaGVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA1OjM5OjQ2Ljk2ODQ4NzgzMloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNjU5MzA5MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgdXNlcjpcblxuKipJbnZlc3RpZ2F0aW5nIEZTQ2FjaGUgYW5kIE5ldEZTIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGNvbmZpZ3VyYXRpb25zIGN1cnJlbnRseSBpbiBwbGFjZSB0aGF0IG1pZ2h0IGJlIGVuYWJsaW5nIGBmc2NhY2hlYCBvciBgbmV0ZnNgLiBJJ20gdGhpbmtpbmcsIHRoaXMgaXMgcHJvYmFibHkgZ29pbmcgdG8gaW52b2x2ZSBsb29raW5nIGF0IGEgY29tYmluYXRpb24gb2Yga2VybmVsIG1vZHVsZXMgbG9hZGVkLCBtb3VudCBvcHRpb25zLCBhbmQgcGVyaGFwcyBzb21lIHJlbGV2YW50IHN5c3RlbWQgc2VydmljZSBkZWZpbml0aW9ucywgcmlnaHQ/IEknbGwgcHJvYmFibHkgc3RhcnQgd2l0aCB0aGUgbW9yZSBvYnZpb3VzIHBsYWNlcyDigJMgbWF5YmUgYSBxdWljayBgbHNtb2RgIGFuZCB0aGVuIGRpdmUgaW50byBgL2V0Yy9mc3RhYmAgYW5kIGFueSBzeXN0ZW1kIHVuaXQgZmlsZXMgcmVsYXRlZCB0byBuZXR3b3JrIGZpbGUgc3lzdGVtcy4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIGNoZWNrIGFueSBwb3RlbnRpYWwgb3ZlcnJpZGVzIGluIGAvZXRjL21vZHByb2JlLmQvYCBhcyB3ZWxsLCBqdXN0IGluIGNhc2Ugc29tZW9uZSBnb3QgZmFuY3kgd2l0aCBzb21lIGtlcm5lbCBtb2R1bGUgYmxhY2tsaXN0aW5nIG9yIG9wdGlvbnMuIEdvdHRhIGJlIHRob3JvdWdoLiBBbHNvLCBJIGJldHRlciBjaGVjayBmb3IgYW55IHJlbGF0ZWQgcGFyYW1ldGVycyBpbiB0aGUga2VybmVsIGNvbW1hbmQgbGluZSwganVzdCB0byBjb3ZlciBhbGwgYmFzZXMgYW5kIGVuc3VyZSBJIGRvbid0IG1pc3MgYW55dGhpbmcgdGhhdCBtaWdodCBoYXZlIGJlZW4gc2V0IGR1cmluZyBib290LiBJJ20gaW1hZ2luaW5nIGl0J3MgZ29pbmcgdG8gYmUgYSBxdWljayBzd2VlcCBvZiBrZXkgZmlsZXMsIGJ1dCB5b3UgbmV2ZXIga25vdy4gSXQncyBiZXN0IHRvIGJlIGFzIGNvbXByZWhlbnNpdmUgYXMgcG9zc2libGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NzIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQwNTozOTo1MC4yMzQ0MjEyNzhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NTQwNjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGU0NBQ0hFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL25ldGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbmV0ZnMvS2NvbmZpZz0yNT1jb25maWcgTkVURlNfREVCVUdcXG4tLVxcbmZzL25ldGZzL0tjb25maWctMzItXFxuZnMvbmV0ZnMvS2NvbmZpZzozMzpjb25maWcgRlNDQUNIRVxcbmZzL25ldGZzL0tjb25maWctMzQtXFx0Ym9vbCBcXFwiR2VuZXJhbCBmaWxlc3lzdGVtIGxvY2FsIGNhY2hpbmcgbWFuYWdlclxcXCJcXG4tLVxcbmZzL25ldGZzL0tjb25maWctNDMtXFxuZnMvbmV0ZnMvS2NvbmZpZzo0NDpjb25maWcgRlNDQUNIRV9TVEFUU1xcbmZzL25ldGZzL0tjb25maWctNDUtXFx0Ym9vbCBcXFwiR2F0aGVyIHN0YXRpc3RpY2FsIGluZm9ybWF0aW9uIG9uIGxvY2FsIGNhY2hpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA1OjM5OjUwLjI4OTk3MTkyNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjA3NTQwNTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgd3JpdHRlbiBhcyBpZiBJJ20gdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBOZXRGUyBDb2RlKipcblxuUmlnaHQsIGxldCdzIHNlZS4gVGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGluZGljYXRlcyB0aGF0IHRoZSBgZnMvbmV0ZnMvcmVhZF9wZ3ByaXYyLmNgIGZpbGUgaXMgYmVpbmcgY29tcGlsZWQgd2hlbiBgTkVURlNfU1VQUE9SVGAgaXMgZW5hYmxlZC4gTXkgaW1tZWRpYXRlIGluY2xpbmF0aW9uIGlzIHRvIGNvbmZpcm0gdGhpcyB3aXRoaW4gdGhlIGJ1aWxkIHN5c3RlbS4gU28sIGxldCdzIHBvcCBvcGVuIGBmcy9uZXRmcy9NYWtlZmlsZWAgYW5kIHZlcmlmeSB0aGUgY29tcGlsYXRpb24gZGVwZW5kZW5jeSBhbmQgdGhhdCBgTkVURlNfU1VQUE9SVGAgaXMgaW5kZWVkIGEgY29udHJvbGxpbmcgZmFjdG9yLiBUaGlzIGtpbmQgb2YgcXVpY2sgY3Jvc3MtcmVmZXJlbmNlIGlzIGVzc2VudGlhbCB3aGVuIG5hdmlnYXRpbmcga2VybmVsIGJ1aWxkIGNvbmZpZ3VyYXRpb25zLiBJdCB3aWxsIHNob3cgbWUgdGhlIGJ1aWxkIHJ1bGVzIGFuZCB1bHRpbWF0ZWx5IHJldmVhbCB3aGF0IGlzIGhhcHBlbmluZyBkdXJpbmcgdGhlIGtlcm5lbCBidWlsZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk5MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA1OjM5OjUyLjg5NzUxNDU3OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUzMDg0NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVhZF9wZ3ByaXYyLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbmV0ZnMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbmV0ZnMvTWFrZWZpbGU9Mz1uZXRmcy15IDo9IFxcXFxcXG4tLVxcbmZzL25ldGZzL01ha2VmaWxlLTEzLVxcdHJlYWRfY29sbGVjdC5vIFxcXFxcXG5mcy9uZXRmcy9NYWtlZmlsZToxNDpcXHRyZWFkX3BncHJpdjIubyBcXFxcXFxuZnMvbmV0ZnMvTWFrZWZpbGUtMTUtXFx0cmVhZF9yZXRyeS5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDU6Mzk6NTIuOTUyODI4NTM0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNDcyOTUzMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgbmV0ZnMteWAgQ2hhbmdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjaGFuZ2UsIGFuZCBpdCBzZWVtcyB0byBiZSBwYXJ0IG9mIHRoZSBgbmV0ZnMteWAgbW9kdWxlLiBTcGVjaWZpY2FsbHksIGl0J3MgdGhlIGBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW9gIGZ1bmN0aW9uIHRoYXQncyBiZWVuIG1vZGlmaWVkLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBob3cgaXMgdGhpcyBjb25maWd1cmVkPyBJcyBgTkVURlNfU1VQUE9SVGAgc3VmZmljaWVudCBmb3IgYWN0aXZhdGlvbj8gTGV0J3MgdGFrZSBhIGxvb2suLi4gQWgsIHllcywgYE5FVEZTX1NVUFBPUlRgIGlzIGluZGVlZCB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIG9wdGlvbi5cblxuSGFuZyBvbiBhIHNlY29uZCwgdGhvdWdoLiBJJ20gcmVjYWxsaW5nIG5vdywgYE5FVEZTX1NVUFBPUlRgIGlzIGEgKnRyaXN0YXRlKi4gVGhhdCdzIG9mdGVuIHNlbGVjdGVkIGJ5IGZpbGVzeXN0ZW0gZHJpdmVycyB0aGVtc2VsdmVzLCB0aGluZ3MgbGlrZSBBRlMsIENFUEgsIENJRlMsIGFuZCA5UC4gSnVzdCBuZWVkIHRvIGNoZWNrIHdoYXQgc3BlY2lmaWNhbGx5IGRyaXZlcyB0aGF0IGNvbmZpZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBoZXJlIHRvIHNlZSBpZiB0aGlzIGNoYW5nZSBhbGlnbnMgd2l0aCB0aGUgb3ZlcmFsbCBtb2R1bGUgY29uZmlndXJhdGlvbiBzY2hlbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyOTksIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDU6Mzk6NTYuMjAwMTI2MjQyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTExODIxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgTkVURlNfU1VQUE9SVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvOXAvS2NvbmZpZz0yPWNvbmZpZyA5UF9GU1xcbi0tXFxuZnMvOXAvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gTkVUXzlQXFxuZnMvOXAvS2NvbmZpZzo1OlxcdHNlbGVjdCBORVRGU19TVVBQT1JUXFxuZnMvOXAvS2NvbmZpZy02LVxcdGhlbHBcXG4tLVxcbmZzL2Fmcy9LY29uZmlnPTI9Y29uZmlnIEFGU19GU1xcbi0tXFxuZnMvYWZzL0tjb25maWctNi1cXHRzZWxlY3QgRE5TX1JFU09MVkVSXFxuZnMvYWZzL0tjb25maWc6NzpcXHRzZWxlY3QgTkVURlNfU1VQUE9SVFxcbmZzL2Fmcy9LY29uZmlnLTgtXFx0c2VsZWN0IENSWVBUT19LUkI1XFxuLS1cXG5mcy9jZXBoL0tjb25maWc9Mj1jb25maWcgQ0VQSF9GU1xcbi0tXFxuZnMvY2VwaC9LY29uZmlnLTUtXFx0c2VsZWN0IENFUEhfTElCXFxuZnMvY2VwaC9LY29uZmlnOjY6XFx0c2VsZWN0IE5FVEZTX1NVUFBPUlRcXG5mcy9jZXBoL0tjb25maWctNy1cXHRzZWxlY3QgRlNfRU5DUllQVElPTl9BTEdTIGlmIEZTX0VOQ1JZUFRJT05cXG4tLVxcbmZzL25mcy9LY29uZmlnPTE3Mz1jb25maWcgTkZTX0ZTQ0FDSEVcXG4tLVxcbmZzL25mcy9LY29uZmlnLTE3NS1cXHRkZXBlbmRzIG9uIE5GU19GU1xcbmZzL25mcy9LY29uZmlnOjE3NjpcXHRzZWxlY3QgTkVURlNfU1VQUE9SVFxcbmZzL25mcy9LY29uZmlnLTE3Ny1cXHRzZWxlY3QgRlNDQUNIRVxcbi0tXFxuZnMvc21iL2NsaWVudC9LY29uZmlnPTI9Y29uZmlnIENJRlNcXG4tLVxcbmZzL3NtYi9jbGllbnQvS2NvbmZpZy0yMC1cXHRzZWxlY3QgT0lEX1JFR0lTVFJZXFxuZnMvc21iL2NsaWVudC9LY29uZmlnOjIxOlxcdHNlbGVjdCBORVRGU19TVVBQT1JUXFxuZnMvc21iL2NsaWVudC9LY29uZmlnLTIyLVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDU6Mzk6NTYuMjg1MjUwMTE2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzI5Nzg4NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVmaW5pbmcgdGhlIE5ldHdvcmsgRmlsZXN5c3RlbSBDb25maWd1cmF0aW9uIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZmlsZXN5c3RlbSBjb25maWd1cmF0aW9ucywgYW5kIGl0IHNlZW1zIGxpa2UgdGhleSdyZSBsZXZlcmFnaW5nIGBORVRGU19TVVBQT1JUYC4gVGhlIGluaXRpYWwgdGhvdWdodCB3YXMgdG8gc2ltcGx5IGxpc3QgYE5FVEZTX1NVUFBPUlRgIG9yIHBlcmhhcHMgYEZTQ0FDSEVgIGFsb25nIHdpdGggYSBzcGVjaWZpYyBuZXR3b3JrIGZpbGVzeXN0ZW0gbGlrZSBgQ0lGU2Agb3IgYDlQX0ZTYCBpbiB0aGUgbWVudS4gVGhhdCBzZWVtZWQgY2xlYW4uXG5cbkJ1dCB0aGVuLCBhIHNsaWdodCBjb3JyZWN0aW9uLiBgTkVURlNfU1VQUE9SVGAgaXNuJ3QgZGlyZWN0bHkgdXNlci1zZWxlY3RhYmxlLCBpdCdzIGEgKmRlcGVuZGVuY3kqLiBTbywganVzdCBsaXN0aW5nIGl0IHdvdWxkbid0IGJlIHF1aXRlIHJpZ2h0IGZvciB0aGUgdXNlci4gT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgaXQgKmlzKiBzZWxlY3RhYmxlIHRvIGdpdmUgdGhlIHVzZXIgY29ycmVjdCBjb250ZXh0LlxuXG5JIG5lZWQgdG8gZ28gZGVlcGVyIGludG8gdGhlIHNvdXJjZSwgc3BlY2lmaWNhbGx5IGBmcy9uZXRmcy9LY29uZmlnYC4gVGhhdCdzIHdoZXJlIHRoZSBjb250cm9sIGZvciBgTkVURlNfU1VQUE9SVGAgbGlrZWx5IHJlc2lkZXMuIEdvdHRhIGNoZWNrIHRoYXQgS2NvbmZpZyBmaWxlIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAwNCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQwNTozOTo1OS41MTgyMzEzODRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0Mzk5MDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRGU19TVVBQT1JUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL25ldGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbmV0ZnMvS2NvbmZpZy0yLVxcbmZzL25ldGZzL0tjb25maWc6Mzpjb25maWcgTkVURlNfU1VQUE9SVFxcbmZzL25ldGZzL0tjb25maWctNC1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQwNTozOTo1OS41ODI2MzUxMzlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyMDcyMTcwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipOYXZpZ2F0aW5nIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBMYWJ5cmludGgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHRyaXN0YXRlIG9wdGlvbiwgYW5kIHdpdGhvdXQgYSBkaXJlY3QgcHJvbXB0LCBJIGNhbid0IGp1c3QgZmxpcCBgQ09ORklHX05FVEZTX1NVUFBPUlQ9eWAuIFRoYXQncyBhIG5vLWdvLiBJIG5lZWQgYSB0cmlnZ2VyLCBzb21ldGhpbmcgdGhhdCAqc2VsZWN0cyogdGhpcyBmdW5jdGlvbmFsaXR5LiBMZXQncyB0aGluay4uLiBgQ0lGU2AsIGA5UF9GU2AsIGBDRVBIX0ZTYCwgb3IgZXZlbiBgQUZTX0ZTYCBzZWVtIGxpa2UgcG90ZW50aWFsIGNhbmRpZGF0ZXMuIFRoZXkncmUgYWxsIG5ldHdvcmsgZmlsZXN5c3RlbSBvcHRpb25zLCBzbyB0aGV5J3JlIGxpa2VseSBkZXBlbmRlbmNpZXMuIEkgc2hvdWxkIHByb2JhYmx5IGxpc3QgYENJRlNgIGFuZCBgOVBfRlNgIGFzIG15IHRvcCBjaG9pY2VzIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuIFdhaXQgYSBzZWNvbmQsIGhvbGQgb24uLi4gYEZTQ0FDSEVgIGlzIHVzZXItc2VsZWN0YWJsZSwgYW5kIHRoYXQgaGFzIHRoZSBwb3RlbnRpYWwgdG8gZHJhZyB0aGlzIGluLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gZmFjdG9yIHRoYXQgaW50byBteSBwbGFuLiBUaGlzIG1heSB0YWtlIGEgbGl0dGxlIG1vcmUgZGlnZ2luZyB0aGFuIEkgaW5pdGlhbGx5IHRob3VnaHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzODIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQwNTo0MDowMi45MDMzNTkzMDFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0OTk1NTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGU0NBQ0hFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL25ldGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbmV0ZnMvS2NvbmZpZz0yNT1jb25maWcgTkVURlNfREVCVUdcXG4tLVxcbmZzL25ldGZzL0tjb25maWctMzItXFxuZnMvbmV0ZnMvS2NvbmZpZzozMzpjb25maWcgRlNDQUNIRVxcbmZzL25ldGZzL0tjb25maWctMzQtXFx0Ym9vbCBcXFwiR2VuZXJhbCBmaWxlc3lzdGVtIGxvY2FsIGNhY2hpbmcgbWFuYWdlclxcXCJcXG4tLVxcbmZzL25ldGZzL0tjb25maWctNDMtXFxuZnMvbmV0ZnMvS2NvbmZpZzo0NDpjb25maWcgRlNDQUNIRV9TVEFUU1xcbmZzL25ldGZzL0tjb25maWctNDUtXFx0Ym9vbCBcXFwiR2F0aGVyIHN0YXRpc3RpY2FsIGluZm9ybWF0aW9uIG9uIGxvY2FsIGNhY2hpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA1OjQwOjAyLjk3ODM2MTU2NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODIyNTAzNzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQ2hlY2tpbmcgRmlsZXN5c3RlbSBDYWNoZSBEZXBlbmRlbmN5KipcblxuQWxyaWdodCwgbXkgaW50ZXJuYWwgY2hlY2tsaXN0IGhhcyBmbGFnZ2VkIHNvbWV0aGluZyBwb3RlbnRpYWxseSBzaWduaWZpY2FudC4gTXkgdGhvdWdodCBwcm9jZXNzIGlzIGNlbnRlcmVkIGFyb3VuZCBlbnN1cmluZyB0aGF0IHRoZSBgRlNDQUNIRWAgb3B0aW9uIHByb3Blcmx5IHNlbGVjdHMgdGhlIGBORVRGU19TVVBQT1JUYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGRlcGVuZGVuY3kuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgYXZvaWRpbmcgYW55IHVuZXhwZWN0ZWQgcmVncmVzc2lvbnMgb3IgbWlzY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBuZXR3b3JrIGZpbGVzeXN0ZW0gY2FjaGluZywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBjb21wbGV4IG9yIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSBzeXN0ZW1zLiBBIG1pc3NpbmcgZGVwZW5kZW5jeSBoZXJlIHdvdWxkIGJlIGEgY3JpdGljYWwgb3ZlcnNpZ2h0LCBsZWFkaW5nIHRvIHBvdGVudGlhbGx5IHN1YnRsZSBhbmQgZnJ1c3RyYXRpbmcgZGVidWdnaW5nIHNjZW5hcmlvcyBkb3duIHRoZSBsaW5lLiBJJ20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIEtjb25maWcgcmVsYXRpb25zaGlwIGJldHdlZW4gYEZTQ0FDSEVgIGFuZCBgTkVURlNfU1VQUE9SVGAgdG8gZW5zdXJlIHRoZXkncmUgbGlua2VkIGFzIGV4cGVjdGVkLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoaXMgaXMgb2Z0ZW4gYSBjb21tb24gYXJlYSBmb3Igb3ZlcnNpZ2h0IGR1cmluZyBjb2RlIGludGVncmF0aW9uIG9yIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgc28gSSdtIGRvdWJsZS1jaGVja2luZyBhcyBhIG1hdHRlciBvZiBkdWUgZGlsaWdlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODI0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDU6NDA6MDUuODAwODY3MTk0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTExMjkyNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5FVEZTX1NVUFBPUlRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbmV0ZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDU6NDA6MDUuODcwMDA0MjM5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MDIyNjE0NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYEZTQ0FDSEVgIERlcGVuZGVuY3kqKlxuXG5IbW0sIHNvIEkgbmVlZCB0byBjbGFyaWZ5IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBgRlNDQUNIRWAgYW5kIGBORVRGU19TVVBQT1JUYC4gSXMgYEZTQ0FDSEVgIGFjdHVhbGx5ICpkZXBlbmRlbnQqIG9uIGBORVRGU19TVVBQT1JUYCwgb3IgZG9lcyBpdCBqdXN0ICpzZWxlY3QqIGl0PyBUaGlzIGlzbid0IGltbWVkaWF0ZWx5IG9idmlvdXMsIGFuZCB0aGF0IGFtYmlndWl0eSBpcyBhIHByb2JsZW0gZm9yIHByb3BlciBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQuIFRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMsIHRoZSBtb3N0IHJlbGlhYmxlIGFwcHJvYWNoIGlzIHRvIGRpcmVjdGx5IGV4YW1pbmUgdGhlIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlc2Uga2luZHMgb2YgZGVwZW5kZW5jaWVzLiBUaGF0J3MgYGZzL25ldGZzL0tjb25maWdgLiBMZXQncyBkaWcgaW4gdGhlcmUgYW5kIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGUgaGFzIHRvIHNheS4gTm8gYXNzdW1wdGlvbnMsIGp1c3QgdGhlIHNvdXJjZSBvZiB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uLiBUaGF0J2xsIGdpdmUgYSBkZWZpbml0aXZlIGFuc3dlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA4MCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA0VDA1OjQwOjA4LjQ3MjI2Nzk3NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mzk3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9uZXRmcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRcXG4gICAzOlxcdGNvbmZpZyBORVRGU19TVVBQT1JUXFxuICAgNDpcXHRcXHR0cmlzdGF0ZVxcbiAgIDU6XFx0XFx0aGVscFxcbiAgIDY6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHN1cHBvcnQgZm9yIG5ldHdvcmsgZmlsZXN5c3RlbXMsIGluY2x1ZGluZ1xcbiAgIDc6XFx0XFx0ICBoZWxwZXJzIGZvciBoaWdoLWxldmVsIGJ1ZmZlcmVkIEkvTywgYWJzdHJhY3Rpbmcgb3V0IHJlYWRcXG4gICA4OlxcdFxcdCAgc2VnbWVudGF0aW9uLCBsb2NhbCBjYWNoaW5nIGFuZCB0cmFuc3BhcmVudCBodWdlIHBhZ2Ugc3VwcG9ydC5cXG4gICA5OlxcdFxcbiAgMTA6XFx0Y29uZmlnIE5FVEZTX1NUQVRTXFxuICAxMTpcXHRcXHRib29sIFxcXCJHYXRoZXIgc3RhdGlzdGljYWwgaW5mb3JtYXRpb24gb24gbG9jYWwgY2FjaGluZ1xcXCJcXG4gIDEyOlxcdFxcdGRlcGVuZHMgb24gTkVURlNfU1VQUE9SVCBcXHUwMDI2XFx1MDAyNiBQUk9DX0ZTXFxuICAxMzpcXHRcXHRoZWxwXFxuICAxNDpcXHRcXHQgIFRoaXMgb3B0aW9uIGNhdXNlcyBzdGF0aXN0aWNhbCBpbmZvcm1hdGlvbiB0byBiZSBnYXRoZXJlZCBvbiBsb2NhbFxcbiAgMTU6XFx0XFx0ICBjYWNoaW5nIGFuZCBleHBvcnRlZCB0aHJvdWdoIGZpbGU6XFxuICAxNjpcXHRcXG4gIDE3OlxcdFxcdFxcdC9wcm9jL2ZzL2ZzY2FjaGUvc3RhdHNcXG4gIDE4OlxcdFxcbiAgMTk6XFx0XFx0ICBUaGUgZ2F0aGVyaW5nIG9mIHN0YXRpc3RpY3MgYWRkcyBhIGNlcnRhaW4gYW1vdW50IG9mIG92ZXJoZWFkIHRvXFxuICAyMDpcXHRcXHQgIGV4ZWN1dGlvbiBhcyB0aGVyZSBhcmUgYSBxdWl0ZSBhIGZldyBzdGF0cyBnYXRoZXJlZCwgYW5kIG9uIGFcXG4gIDIxOlxcdFxcdCAgbXVsdGktQ1BVIHN5c3RlbSB0aGVzZSBtYXkgYmUgb24gY2FjaGVsaW5lcyB0aGF0IGtlZXAgYm91bmNpbmdcXG4gIDIyOlxcdFxcdCAgYmV0d2VlbiBDUFVzLiAgT24gdGhlIG90aGVyIGhhbmQsIHRoZSBzdGF0cyBhcmUgdmVyeSB1c2VmdWwgZm9yXFxuICAyMzpcXHRcXHQgIGRlYnVnZ2luZyBwdXJwb3Nlcy4gIFNheWluZyAnWScgaGVyZSBpcyByZWNvbW1lbmRlZC5cXG4gIDI0OlxcdFxcbiAgMjU6XFx0Y29uZmlnIE5FVEZTX0RFQlVHXFxuICAyNjpcXHRcXHRib29sIFxcXCJFbmFibGUgZHluYW1pYyBkZWJ1Z2dpbmcgbmV0ZnNsaWIgYW5kIEZTLUNhY2hlXFxcIlxcbiAgMjc6XFx0XFx0ZGVwZW5kcyBvbiBORVRGU19TVVBQT1JUXFxuICAyODpcXHRcXHRoZWxwXFxuICAyOTpcXHRcXHQgIFRoaXMgcGVybWl0cyBkZWJ1Z2dpbmcgdG8gYmUgZHluYW1pY2FsbHkgZW5hYmxlZCBpbiB0aGUgbG9jYWwgY2FjaGluZ1xcbiAgMzA6XFx0XFx0ICBtYW5hZ2VtZW50IG1vZHVsZS4gIElmIHRoaXMgaXMgc2V0LCB0aGUgZGVidWdnaW5nIG91dHB1dCBtYXkgYmVcXG4gIDMxOlxcdFxcdCAgZW5hYmxlZCBieSBzZXR0aW5nIGJpdHMgaW4gL3N5cy9tb2R1bGUvbmV0ZnMvcGFyYW1ldGVycy9kZWJ1Zy5cXG4gIDMyOlxcdFxcbiAgMzM6XFx0Y29uZmlnIEZTQ0FDSEVcXG4gIDM0OlxcdFxcdGJvb2wgXFxcIkdlbmVyYWwgZmlsZXN5c3RlbSBsb2NhbCBjYWNoaW5nIG1hbmFnZXJcXFwiXFxuICAzNTpcXHRcXHRkZXBlbmRzIG9uIE5FVEZTX1NVUFBPUlRcXG4gIDM2OlxcdFxcdGhlbHBcXG4gIDM3OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBhIGdlbmVyaWMgZmlsZXN5c3RlbSBjYWNoaW5nIG1hbmFnZXIgdGhhdCBjYW4gYmVcXG4gIDM4OlxcdFxcdCAgdXNlZCBieSB2YXJpb3VzIG5ldHdvcmsgYW5kIG90aGVyIGZpbGVzeXN0ZW1zIHRvIGNhY2hlIGRhdGEgbG9jYWxseS5cXG4gIDM5OlxcdFxcdCAgRGlmZmVyZW50IHNvcnRzIG9mIGNhY2hlcyBjYW4gYmUgcGx1Z2dlZCBpbiwgZGVwZW5kaW5nIG9uIHRoZVxcbiAgNDA6XFx0XFx0ICByZXNvdXJjZXMgYXZhaWxhYmxlLlxcbiAgNDE6XFx0XFxuICA0MjpcXHRcXHQgIFNlZSBEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NhY2hpbmcvZnNjYWNoZS5yc3QgZm9yIG1vcmUgaW5mb3JtYXRpb24uXFxuICA0MzpcXHRcXG4gIDQ0OlxcdGNvbmZpZyBGU0NBQ0hFX1NUQVRTXFxuICA0NTpcXHRcXHRib29sIFxcXCJHYXRoZXIgc3RhdGlzdGljYWwgaW5mb3JtYXRpb24gb24gbG9jYWwgY2FjaGluZ1xcXCJcXG4gIDQ2OlxcdFxcdGRlcGVuZHMgb24gRlNDQUNIRSBcXHUwMDI2XFx1MDAyNiBQUk9DX0ZTXFxuICA0NzpcXHRcXHRzZWxlY3QgTkVURlNfU1RBVFNcXG4gIDQ4OlxcdFxcdGhlbHBcXG4gIDQ5OlxcdFxcdCAgVGhpcyBvcHRpb24gY2F1c2VzIHN0YXRpc3RpY2FsIGluZm9ybWF0aW9uIHRvIGJlIGdhdGhlcmVkIG9uIGxvY2FsXFxuICA1MDpcXHRcXHQgIGNhY2hpbmcgYW5kIGV4cG9ydGVkIHRocm91Z2ggZmlsZTpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDRUMDU6NDA6MDguNDcyMzMzMTg1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MzAwMzY2NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IG5ldGZzX3BncHJpdjJfY29weV9mb2xpbyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHNlZSB0aGUgZGVwZW5kZW5jeTogYEZTQ0FDSEVgIHJlbGllcyBvbiBgTkVURlNfU1VQUE9SVGAuIFRvIGdldCBgTkVURlNfU1VQUE9SVGAgZ29pbmcsIEkgbmVlZCB0byBlbmFibGUgb25lIG9mIHRoZSBuZXR3b3JrIGZpbGVzeXN0ZW0gb3B0aW9uczogYENJRlNgLCBgOVBfRlNgLCBgQ0VQSF9GU2AsIG9yIGBBRlNfRlNgLiBMZXQgbWUgbGlzdCB0aG9zZSBvdXQgYWdhaW46IGBDSUZTYCwgYDlQX0ZTYCwgYEFGU19GU2AsIGBDRVBIX0ZTYCwgYW5kIG9mIGNvdXJzZSBgRlNDQUNIRWAgaXRzZWxmLlxuXG5UaGUga2V5IGZ1bmN0aW9uIHRoYXQncyBiZWVuIG1vZGlmaWVkIGhlcmUgaXMgYG5ldGZzX3BncHJpdjJfY29weV9mb2xpb2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyByZWFjaGFibGUgdGhpcyBjb2RlIHBhdGggaXMuIExldCBtZSB0cmFjZSB0aGF0LiBSaWdodCwgaXQncyBjYWxsZWQgZnJvbSBgbmV0ZnNfcGdwcml2Ml9jb3B5X3RvX2NhY2hlYCwgd2hpY2ggaW4gdHVybiBnZXRzIGNhbGxlZCBieSBgbmV0ZnNfdW5sb2NrX3JlYWRfZm9saW9gICppZiogdGhlIGBORVRGU19SUkVRX0ZPTElPX0NPUFlfVE9fQ0FDSEVgIGZsYWcgaXMgc2V0LiBUaGF0IHN1Z2dlc3RzIGl0J3MgaW52b2x2ZWQgd2hlbiBjYWNoaW5nIGlzIGFjdHVhbGx5ICp1c2VkKi5cblxuVGhlIHByaW1hcnkgZm9jdXMgaGVyZSBpcyByZWFsbHkgb24gdGhvc2UgdHdvIGZ1bmN0aW9uczogYG5ldGZzX3BncHJpdjJfY29weV9mb2xpb2AgYW5kIGBuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGVgLiBDb25zaWRlcmluZyB0aGF0IGBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW9gIGdldHMgY2FsbGVkIGZvciBldmVyeSBmb2xpbyBjb3BpZWQgaW50byB0aGUgY2FjaGUsIG15IGluc3RpbmN0cyB0ZWxsIG1lIHRoaXMgaXMgcHJvYmFibHkgYSBob3QgcGF0aC4gVGhhdCBtYWtlcyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBMZXQncyBtYXJrIHRoaXMgYXMgYFdvcnRoRnV6emluZz10cnVlYC5cblxuU28sIHRoZSBjb25maWcgb3B0aW9ucyBJIG5lZWQgdG8gY29uc2lkZXIgZm9yIHRoaXMgZnV6emluZyBhcmU6IGBDSUZTYCwgYDlQX0ZTYCwgYENFUEhfRlNgLCBgQUZTX0ZTYCwgYW5kIGBGU0NBQ0hFYC5cblxuVWx0aW1hdGVseSwgdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBmdW5jdGlvbmFsIGlzc3VlLiBUaGUgZml4IGFwcGVhcnMgdG8gYWRkIGEgbWlzc2luZyBjYWxsIHRvIGBmb2xpb19lbmRfcHJpdmF0ZV8yYCBpbiBgbmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvYCBpZiBgcm9sbGluZ19idWZmZXJfYXBwZW5kYCBmYWlscy4gVGhlIGZhY3QgdGhhdCB0aGUgdGFyZ2V0IGlzIGEgbmV0d29yayBmaWxlc3lzdGVtIHdoaWNoIHVzZXMgYGZzY2FjaGVgIGFkZHMgdG8gaXRzIGltcG9ydGFuY2UuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ2xsIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBjb2RlIGluIGBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW9gIGFuZCBgbmV0ZnNfcGdwcml2Ml9jb3B5X3RvX2NhY2hlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzAwMSwiT3V0cHV0VG9rZW5zIjoxNjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNFQwNTo0MDoxNS4zMDIzNzE4NjRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODMzOTM4NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNJRlNcIixcbiAgICBcIjlQX0ZTXCIsXG4gICAgXCJDRVBIX0ZTXCIsXG4gICAgXCJBRlNfRlNcIixcbiAgICBcIkZTQ0FDSEVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW9cIixcbiAgICBcIm5ldGZzX3BncHJpdjJfY29weV90b19jYWNoZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWlzc2luZyBmb2xpb19lbmRfcHJpdmF0ZV8yKCkgY2FsbCBpbiBuZXRmc19wZ3ByaXYyX2NvcHlfZm9saW8oKSB3aGVuIGFwcGVuZGluZyB0byB0aGUgcm9sbGluZyBidWZmZXIgZmFpbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0ZnMgbGlicmFyeSwgd2hpY2ggaXMgdXNlZCBieSBuZXR3b3JrIGZpbGVzeXN0ZW1zIChsaWtlIENJRlMsIDlQLCBDZXBoLCBBRlMpIGZvciBsb2NhbCBjYWNoaW5nIChmc2NhY2hlKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDSUZTXCIsXG4gICAgXCI5UF9GU1wiLFxuICAgIFwiQ0VQSF9GU1wiLFxuICAgIFwiQUZTX0ZTXCIsXG4gICAgXCJGU0NBQ0hFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvXCIsXG4gICAgXCJuZXRmc19wZ3ByaXYyX2NvcHlfdG9fY2FjaGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1pc3NpbmcgZm9saW9fZW5kX3ByaXZhdGVfMigpIGNhbGwgaW4gbmV0ZnNfcGdwcml2Ml9jb3B5X2ZvbGlvKCkgd2hlbiBhcHBlbmRpbmcgdG8gdGhlIHJvbGxpbmcgYnVmZmVyIGZhaWxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldGZzIGxpYnJhcnksIHdoaWNoIGlzIHVzZWQgYnkgbmV0d29yayBmaWxlc3lzdGVtcyAobGlrZSBDSUZTLCA5UCwgQ2VwaCwgQUZTKSBmb3IgbG9jYWwgY2FjaGluZyAoZnNjYWNoZSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow88zpg[1] Phase: Succeeded StartedAt: 2026-07-04 05:40:47 +0000 UTC FinishedAt: 2026-07-04 05:40:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-04 05:40:47 +0000 UTC FinishedAt: 2026-07-04 05:40:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[2] Phase: Succeeded StartedAt: 2026-07-04 05:40:47 +0000 UTC FinishedAt: 2026-07-04 07:26:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-04 05:40:47 +0000 UTC FinishedAt: 2026-07-04 07:26:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-04 05:40:47 +0000 UTC FinishedAt: 2026-07-04 05:40:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-04 05:40:47 +0000 UTC FinishedAt: 2026-07-04 05:40:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow88zpg/series-workflow88zpg-convert-artifact-4272617183/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-04 05:40:57 +0000 UTC FinishedAt: 2026-07-04 06:05:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-04 05:40:57 +0000 UTC FinishedAt: 2026-07-04 06:05:12 +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:*c59fb9d8-e7b2-4436-9b79-41f37d0b1090,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-workflow88zpg/series-workflow88zpg-convert-artifact-4272617183/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": "b0d7c789-dd60-4096-85f4-1c7517aec781", "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-workflow88zpg/series-workflow88zpg-build-action-2344475621/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-04 05:40:57 +0000 UTC FinishedAt: 2026-07-04 06:05:02 +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:*c59fb9d8-e7b2-4436-9b79-41f37d0b1090,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-workflow88zpg/series-workflow88zpg-convert-artifact-4272617183/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": "b0d7c789-dd60-4096-85f4-1c7517aec781", "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-workflow88zpg/series-workflow88zpg-build-action-2344475621/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-04 06:05:12 +0000 UTC FinishedAt: 2026-07-04 06:05:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-04 06:05:12 +0000 UTC FinishedAt: 2026-07-04 06:05:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-04 06:05:12 +0000 UTC FinishedAt: 2026-07-04 06:05:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-04 06:05:12 +0000 UTC FinishedAt: 2026-07-04 06:05:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow88zpg/series-workflow88zpg-convert-artifact-3075534958/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-04 06:05:32 +0000 UTC FinishedAt: 2026-07-04 06:07:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-04 06:05:32 +0000 UTC FinishedAt: 2026-07-04 06:07:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b0d7c789-dd60-4096-85f4-1c7517aec781,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-workflow88zpg/series-workflow88zpg-build-action-2344475621/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-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-04 06:07:48 +0000 UTC FinishedAt: 2026-07-04 06:07:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-04 06:07:48 +0000 UTC FinishedAt: 2026-07-04 06:07:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-04 06:07:48 +0000 UTC FinishedAt: 2026-07-04 06:33:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-04 06:07:48 +0000 UTC FinishedAt: 2026-07-04 06:33:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*c59fb9d8-e7b2-4436-9b79-41f37d0b1090,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-workflow88zpg/series-workflow88zpg-convert-artifact-3075534958/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": "13d3560f-4a68-4818-8e43-c7c381da9ec5", "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-workflow88zpg/series-workflow88zpg-build-action-2910503298/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-04 06:07:48 +0000 UTC FinishedAt: 2026-07-04 06:32:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*c59fb9d8-e7b2-4436-9b79-41f37d0b1090,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-workflow88zpg/series-workflow88zpg-convert-artifact-3075534958/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": "13d3560f-4a68-4818-8e43-c7c381da9ec5", "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-workflow88zpg/series-workflow88zpg-build-action-2910503298/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-04 06:33:06 +0000 UTC FinishedAt: 2026-07-04 06:33:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-04 06:33:06 +0000 UTC FinishedAt: 2026-07-04 06:33:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-04 06:33:06 +0000 UTC FinishedAt: 2026-07-04 06:35:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-04 06:33:06 +0000 UTC FinishedAt: 2026-07-04 06:35:07 +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:*13d3560f-4a68-4818-8e43-c7c381da9ec5,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-workflow88zpg/series-workflow88zpg-build-action-2910503298/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-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-04 06:35:17 +0000 UTC FinishedAt: 2026-07-04 07:26:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-04 06:35:17 +0000 UTC FinishedAt: 2026-07-04 07:26:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*b0d7c789-dd60-4096-85f4-1c7517aec781,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*13d3560f-4a68-4818-8e43-c7c381da9ec5,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-workflow88zpg/series-workflow88zpg-build-action-2344475621/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-workflow88zpg/series-workflow88zpg-build-action-2910503298/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-04 06:35:17 +0000 UTC FinishedAt: 2026-07-04 06:35:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-04 06:35:17 +0000 UTC FinishedAt: 2026-07-04 06:35:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow88zpg/series-workflow88zpg-convert-artifact-4188678163/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-04 06:35:17 +0000 UTC FinishedAt: 2026-07-04 06:35:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-04 06:35:17 +0000 UTC FinishedAt: 2026-07-04 06:35:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-04 06:35:17 +0000 UTC FinishedAt: 2026-07-04 06:35:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-04 06:35:27 +0000 UTC FinishedAt: 2026-07-04 07:26:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow88zpg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["netfs_pgpriv2_copy_folio","netfs_pgpriv2_copy_to_cache"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"71dfdfb0209b43dfd6f494f84f5548e4cfd18cb5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CIFS","9P_FS","CEPH_FS","AFS_FS","FSCACHE"],"series_id":"346c2266-bb93-438f-9174-00adb280eb6c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-04 06:35:27 +0000 UTC FinishedAt: 2026-07-04 07:26:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b0d7c789-dd60-4096-85f4-1c7517aec781,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*13d3560f-4a68-4818-8e43-c7c381da9ec5,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-workflow88zpg/series-workflow88zpg-build-action-2344475621/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-workflow88zpg/series-workflow88zpg-build-action-2910503298/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-workflow88zpg/series-workflow88zpg-convert-artifact-4188678163/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,}