Name: series-workflowznttl Phase: Succeeded StartedAt: 2026-07-08 20:51:42 +0000 UTC FinishedAt: 2026-07-08 22:48:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[0] Phase: Succeeded StartedAt: 2026-07-08 20:51:42 +0000 UTC FinishedAt: 2026-07-08 21:26:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[0].run-triage Phase: Succeeded StartedAt: 2026-07-08 20:51:42 +0000 UTC FinishedAt: 2026-07-08 21:26:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "302dfbff3e73be2ba5723237c6303244ec27cebb", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "302dfbff3e73be2ba5723237c6303244ec27cebb", "config_name": "upstream-apparmor-kasan.config", "series_id": "49ade4d9-a7bf-4c5a-aa55-c595265c91ea" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIGBkb19tbWFwYCBpbiBgbW0vbm9tbXUuY2AgdG8gZml4IGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIHdoZW4gYHZtYV9pdGVyX3ByZWFsbG9jYCBmYWlscy4gVGhpcyBpcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGZvciBub21tdSBhcmNoaXRlY3R1cmVzLCB3aGljaCBjYW4gYmUgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIGBkb19tbWFwYCBpcyBhIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb24sIHNvIGl0IGlzIG9taXR0ZWQgZnJvbSBGb2N1c1N5bWJvbHMuIFRoZSBjb2RlIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19NTVVgIGlzIGRpc2FibGVkLCBzbyBubyBzcGVjaWZpYyBjb25maWdzIG5lZWQgdG8gYmUgZXhwbGljaXRseSBlbmFibGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjEzNTA5ODYzOWQzYTE4ZjEzOWYxOTk4ZWNlZjRiZmI1OTc3ZWFlNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMjE6MjU6MDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vbm9tbXUuYyBiL21tL25vbW11LmNcbmluZGV4IDgxNWViZWZkZGZhZWYzLi44NTJlYzliZDA1MDU5MiAxMDA2NDRcbi0tLSBhL21tL25vbW11LmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL25vbW11LmNcbkBAIC0xMTgxLDcgJiM0MzsxMTgxLDYgQEAgdW5zaWduZWQgbG9uZyBkb19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRyZXQgPSBkb19tbWFwX3ByaXZhdGUodm1hLCByZWdpb24sIGxlbiwgY2FwYWJpbGl0aWVzKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdGdvdG8gZXJyb3JfanVzdF9mcmVlO1xuLVx0YWRkX25vbW11X3JlZ2lvbihyZWdpb24pO1xuIFxuIFx0LyogY2xlYXIgYW5vbnltb3VzIG1hcHBpbmdzIHRoYXQgZG9uJiMzOTt0IGFzayBmb3IgdW5pbml0aWFsaXplZCBkYXRhICovXG4gXHRpZiAoIXZtYS1cdTAwM2V2bV9maWxlIFx1MDAyNlx1MDAyNlxuQEAgLTExOTksNyAmIzQzOzExOTgsOSBAQCB1bnNpZ25lZCBsb25nIGRvX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRCVUdfT04oIXZtYS1cdTAwM2V2bV9yZWdpb24pO1xuIFx0dm1hX2l0ZXJfY29uZmlnKFx1MDAyNnZtaSwgdm1hLVx1MDAzZXZtX3N0YXJ0LCB2bWEtXHUwMDNldm1fZW5kKTtcbiBcdGlmICh2bWFfaXRlcl9wcmVhbGxvYyhcdTAwMjZ2bWksIHZtYSkpXG4tXHRcdGdvdG8gZXJyb3JfanVzdF9mcmVlO1xuJiM0MztcdFx0Z290byBlcnJvcl92bWFfaXRlcl9wcmVhbGxvYztcbiYjNDM7XG4mIzQzO1x0YWRkX25vbW11X3JlZ2lvbihyZWdpb24pO1xuIFxuIFx0c2V0dXBfdm1hX3RvX21tKHZtYSwgY3VycmVudC1cdTAwM2VtbSk7XG4gXHRjdXJyZW50LVx1MDAzZW1tLVx1MDAzZW1hcF9jb3VudCYjNDM7JiM0Mzs7XG5AQCAtMTIxOCwyMiAmIzQzOzEyMTksNDEgQEAgdW5zaWduZWQgbG9uZyBkb19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0cmV0dXJuIHJlc3VsdDtcbiBcbiBlcnJvcl9qdXN0X2ZyZWU6XG4mIzQzO1x0dm1hX2Nsb3NlKHZtYSk7XG4mIzQzO1x0LyogaWYgdGhlIGVycm9yIHdhcyBmcm9tIHNoYXJlZCBtYXBwaW5nL2V4aXN0aW5nIHJlZ2lvbiwgZG9uJiMzOTt0IGZyZWUgdGhlIHJlZ2lvbi5cbiYjNDM7XHQgKiB0aGlzIGhhcyB0byBiZSBiZWZvcmUgcmVsZWFzaW5nIHNlbWFwaG9yZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAocmVnaW9uLVx1MDAzZXZtX3VzYWdlID09IDEpIHtcbiYjNDM7XHRcdGlmIChyZWdpb24tXHUwMDNldm1fZmlsZSlcbiYjNDM7XHRcdFx0ZnB1dChyZWdpb24tXHUwMDNldm1fZmlsZSk7XG4mIzQzO1x0XHRrbWVtX2NhY2hlX2ZyZWUodm1fcmVnaW9uX2phciwgcmVnaW9uKTtcbiYjNDM7XG4mIzQzO1x0fSBlbHNlXG4mIzQzO1x0XHRyZWdpb24tXHUwMDNldm1fdXNhZ2UtLTtcbiYjNDM7XG4gXHR1cF93cml0ZShcdTAwMjZub21tdV9yZWdpb25fc2VtKTtcbi1lcnJvcjpcbiBcdHZtYV9pdGVyX2ZyZWUoXHUwMDI2dm1pKTtcbi1cdGlmIChyZWdpb24tXHUwMDNldm1fZmlsZSlcbi1cdFx0ZnB1dChyZWdpb24tXHUwMDNldm1fZmlsZSk7XG4tXHRrbWVtX2NhY2hlX2ZyZWUodm1fcmVnaW9uX2phciwgcmVnaW9uKTtcbiYjNDM7XG4gXHRpZiAodm1hLVx1MDAzZXZtX2ZpbGUpXG4gXHRcdGZwdXQodm1hLVx1MDAzZXZtX2ZpbGUpO1xuIFx0dm1fYXJlYV9mcmVlKHZtYSk7XG4gXHRyZXR1cm4gcmV0O1xuIFxuIHNoYXJpbmdfdmlvbGF0aW9uOlxuLVx0dXBfd3JpdGUoXHUwMDI2bm9tbXVfcmVnaW9uX3NlbSk7XG4gXHRwcl93YXJuKFwmIzM0O0F0dGVtcHQgdG8gc2hhcmUgbWlzbWF0Y2hlZCBtYXBwaW5nc1xcblwmIzM0Oyk7XG4gXHRyZXQgPSAtRUlOVkFMO1xuLVx0Z290byBlcnJvcjtcbiYjNDM7XHRnb3RvIGVycm9yX2p1c3RfZnJlZTtcbiYjNDM7XG4mIzQzO2Vycm9yX3ZtYV9pdGVyX3ByZWFsbG9jOlxuJiM0MztcdHByX3dhcm4oXCYjMzQ7QWxsb2NhdGlvbiBvZiB2bWEgaXRlcmF0b3IgZm9yIHByb2Nlc3MgJWQgZmFpbGVkXFxuXCYjMzQ7LCBjdXJyZW50LVx1MDAzZXBpZCk7XG4mIzQzO1x0c2hvd19tZW0oKTtcbiYjNDM7XHRyZXQgPSAtRU5PTUVNO1xuJiM0MztcbiYjNDM7XHQvKiBpbiBjYXNlIHRoYXQgdGhlIHJlZ2lvbiBpcyBhbGxvY2F0ZWQgdmlhIGRvX21tYXBfcHJpdmF0ZSgpICovXG4mIzQzO1x0aWYgKChyZWdpb24tXHUwMDNldm1fdXNhZ2UgPT0gMSkgXHUwMDI2XHUwMDI2IChyZWdpb24tXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX01BUFBFRF9DT1BZKSlcbiYjNDM7XHRcdGZyZWVfcGFnZV9zZXJpZXMocmVnaW9uLVx1MDAzZXZtX3N0YXJ0LCByZWdpb24tXHUwMDNldm1fdG9wKTtcbiYjNDM7XG4mIzQzO1x0Z290byBlcnJvcl9qdXN0X2ZyZWU7XG4gXG4gZXJyb3JfZ2V0dGluZ192bWE6XG4gXHRrbWVtX2NhY2hlX2ZyZWUodm1fcmVnaW9uX2phciwgcmVnaW9uKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiBgZG9fbW1hcGAgaW4gYG1tL25vbW11LmNgIHRvIGZpeCBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBvciB1c2UtYWZ0ZXItZnJlZSB3aGVuIGB2bWFfaXRlcl9wcmVhbGxvY2AgZmFpbHMuIFRoaXMgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBmb3Igbm9tbXUgYXJjaGl0ZWN0dXJlcywgd2hpY2ggY2FuIGJlIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBgZG9fbW1hcGAgaXMgYSBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9uLCBzbyBpdCBpcyBvbWl0dGVkIGZyb20gRm9jdXNTeW1ib2xzLiBUaGUgY29kZSBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfTU1VYCBpcyBkaXNhYmxlZCwgc28gbm8gc3BlY2lmaWMgY29uZmlncyBuZWVkIHRvIGJlIGV4cGxpY2l0bHkgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjEzNTA5ODYzOWQzYTE4ZjEzOWYxOTk4ZWNlZjRiZmI1OTc3ZWFlNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDggMjE6MjU6MDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9ub21tdS5jIGIvbW0vbm9tbXUuYwppbmRleCA4MTVlYmVmZGRmYWVmMy4uODUyZWM5YmQwNTA1OTIgMTAwNjQ0Ci0tLSBhL21tL25vbW11LmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbm9tbXUuYwpAQCAtMTE4MSw3ICYjNDM7MTE4MSw2IEBAIHVuc2lnbmVkIGxvbmcgZG9fbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJcmV0ID0gZG9fbW1hcF9wcml2YXRlKHZtYSwgcmVnaW9uLCBsZW4sIGNhcGFiaWxpdGllcyk7CiAJaWYgKHJldCAmbHQ7IDApCiAJCWdvdG8gZXJyb3JfanVzdF9mcmVlOwotCWFkZF9ub21tdV9yZWdpb24ocmVnaW9uKTsKIAogCS8qIGNsZWFyIGFub255bW91cyBtYXBwaW5ncyB0aGF0IGRvbiYjMzk7dCBhc2sgZm9yIHVuaW5pdGlhbGl6ZWQgZGF0YSAqLwogCWlmICghdm1hLSZndDt2bV9maWxlICZhbXA7JmFtcDsKQEAgLTExOTksNyAmIzQzOzExOTgsOSBAQCB1bnNpZ25lZCBsb25nIGRvX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsCiAJQlVHX09OKCF2bWEtJmd0O3ZtX3JlZ2lvbik7CiAJdm1hX2l0ZXJfY29uZmlnKCZhbXA7dm1pLCB2bWEtJmd0O3ZtX3N0YXJ0LCB2bWEtJmd0O3ZtX2VuZCk7CiAJaWYgKHZtYV9pdGVyX3ByZWFsbG9jKCZhbXA7dm1pLCB2bWEpKQotCQlnb3RvIGVycm9yX2p1c3RfZnJlZTsKJiM0MzsJCWdvdG8gZXJyb3Jfdm1hX2l0ZXJfcHJlYWxsb2M7CiYjNDM7CiYjNDM7CWFkZF9ub21tdV9yZWdpb24ocmVnaW9uKTsKIAogCXNldHVwX3ZtYV90b19tbSh2bWEsIGN1cnJlbnQtJmd0O21tKTsKIAljdXJyZW50LSZndDttbS0mZ3Q7bWFwX2NvdW50JiM0MzsmIzQzOzsKQEAgLTEyMTgsMjIgJiM0MzsxMjE5LDQxIEBAIHVuc2lnbmVkIGxvbmcgZG9fbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwKIAlyZXR1cm4gcmVzdWx0OwogCiBlcnJvcl9qdXN0X2ZyZWU6CiYjNDM7CXZtYV9jbG9zZSh2bWEpOwomIzQzOwkvKiBpZiB0aGUgZXJyb3Igd2FzIGZyb20gc2hhcmVkIG1hcHBpbmcvZXhpc3RpbmcgcmVnaW9uLCBkb24mIzM5O3QgZnJlZSB0aGUgcmVnaW9uLgomIzQzOwkgKiB0aGlzIGhhcyB0byBiZSBiZWZvcmUgcmVsZWFzaW5nIHNlbWFwaG9yZS4KJiM0MzsJICovCiYjNDM7CWlmIChyZWdpb24tJmd0O3ZtX3VzYWdlID09IDEpIHsKJiM0MzsJCWlmIChyZWdpb24tJmd0O3ZtX2ZpbGUpCiYjNDM7CQkJZnB1dChyZWdpb24tJmd0O3ZtX2ZpbGUpOwomIzQzOwkJa21lbV9jYWNoZV9mcmVlKHZtX3JlZ2lvbl9qYXIsIHJlZ2lvbik7CiYjNDM7CiYjNDM7CX0gZWxzZQomIzQzOwkJcmVnaW9uLSZndDt2bV91c2FnZS0tOwomIzQzOwogCXVwX3dyaXRlKCZhbXA7bm9tbXVfcmVnaW9uX3NlbSk7Ci1lcnJvcjoKIAl2bWFfaXRlcl9mcmVlKCZhbXA7dm1pKTsKLQlpZiAocmVnaW9uLSZndDt2bV9maWxlKQotCQlmcHV0KHJlZ2lvbi0mZ3Q7dm1fZmlsZSk7Ci0Ja21lbV9jYWNoZV9mcmVlKHZtX3JlZ2lvbl9qYXIsIHJlZ2lvbik7CiYjNDM7CiAJaWYgKHZtYS0mZ3Q7dm1fZmlsZSkKIAkJZnB1dCh2bWEtJmd0O3ZtX2ZpbGUpOwogCXZtX2FyZWFfZnJlZSh2bWEpOwogCXJldHVybiByZXQ7CiAKIHNoYXJpbmdfdmlvbGF0aW9uOgotCXVwX3dyaXRlKCZhbXA7bm9tbXVfcmVnaW9uX3NlbSk7CiAJcHJfd2FybigmIzM0O0F0dGVtcHQgdG8gc2hhcmUgbWlzbWF0Y2hlZCBtYXBwaW5nc1xuJiMzNDspOwogCXJldCA9IC1FSU5WQUw7Ci0JZ290byBlcnJvcjsKJiM0MzsJZ290byBlcnJvcl9qdXN0X2ZyZWU7CiYjNDM7CiYjNDM7ZXJyb3Jfdm1hX2l0ZXJfcHJlYWxsb2M6CiYjNDM7CXByX3dhcm4oJiMzNDtBbGxvY2F0aW9uIG9mIHZtYSBpdGVyYXRvciBmb3IgcHJvY2VzcyAlZCBmYWlsZWRcbiYjMzQ7LCBjdXJyZW50LSZndDtwaWQpOwomIzQzOwlzaG93X21lbSgpOwomIzQzOwlyZXQgPSAtRU5PTUVNOwomIzQzOwomIzQzOwkvKiBpbiBjYXNlIHRoYXQgdGhlIHJlZ2lvbiBpcyBhbGxvY2F0ZWQgdmlhIGRvX21tYXBfcHJpdmF0ZSgpICovCiYjNDM7CWlmICgocmVnaW9uLSZndDt2bV91c2FnZSA9PSAxKSAmYW1wOyZhbXA7IChyZWdpb24tJmd0O3ZtX2ZsYWdzICZhbXA7IFZNX01BUFBFRF9DT1BZKSkKJiM0MzsJCWZyZWVfcGFnZV9zZXJpZXMocmVnaW9uLSZndDt2bV9zdGFydCwgcmVnaW9uLSZndDt2bV90b3ApOwomIzQzOwomIzQzOwlnb3RvIGVycm9yX2p1c3RfZnJlZTsKIAogZXJyb3JfZ2V0dGluZ192bWE6CiAJa21lbV9jYWNoZV9mcmVlKHZtX3JlZ2lvbl9qYXIsIHJlZ2lvbik7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0ODEKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTm9tbXUgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG1tL25vbW11LmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBkb19tbWFwYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCByZWFkIHN1Z2dlc3RzIGl0JiMzOTtzIGFkZHJlc3NpbmcgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiB0aGF0IGZ1bmN0aW9uLCBwcm9iYWJseSByZWxhdGVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50IHdpdGggYG5vbW11X3JlZ2lvbmAuIExvb2tzIGxpa2UgYSBwb3RlbnRpYWwgbGVhayBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZSwgdGhvc2UgYXJlIGFsd2F5cyBmdW4uCgpUaGV5JiMzOTt2ZSBtb3ZlZCB0aGUgYGFkZF9ub21tdV9yZWdpb24ocmVnaW9uKWAgY2FsbCBmdXJ0aGVyIGRvd24sIGFmdGVyIGB2bWFfaXRlcl9wcmVhbGxvY2AsIGFuZCBhZGRlZCBhbiBgZXJyb3Jfdm1hX2l0ZXJfcHJlYWxsb2NgIGxhYmVsIGFuZCBtb2RpZmllZCBgZXJyb3JfanVzdF9mcmVlYC4gVGhhdCBzZXF1ZW5jZSBtYWtlcyBtZSB0aGluayB0aGV5JiMzOTtyZSB0cnlpbmcgdG8gZW5zdXJlIHRoZSBhbGxvY2F0aW9uIGhhcHBlbnMgYmVmb3JlIHNvbWUgcG90ZW50aWFsbHkgZmFpbGluZyBwcmUtYWxsb2NhdGlvbiBzdGVwLiBTbWFydCwgbGVzcyBjaGFuY2Ugb2YgcmVzb3VyY2UgbGVha3MgdGhhdCB3YXkuCgpOb3csIHdhaXQgYSBzZWNvbmQuIGBtbS9ub21tdS5jYC4uLiB0aGF0JiMzOTtzIG9ubHkgY29tcGlsZWQgaWYgYENPTkZJR19NTVVgIGlzICpub3QqIHNldC4gVGhhdCYjMzk7cyBhIHJlZCBmbGFnLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgY29uZmlnIHNwYWNlIHRvIHNlZSBob3cgY29tbW9uIHRoYXQgaXMuIFJpZ2h0LCBtb3N0IGFyY2hpdGVjdHVyZXMgKmRvKiBoYXZlIGFuIE1NVS4gU28sIHdobyYjMzk7cyBoaXR0aW5nIHRoaXM/IFN5emthbGxlciwgbWF5YmU/IEkga25vdyB0aGV5IHRlc3QgYWxsIGtpbmRzIG9mIG9ic2N1cmUgY29uZmlndXJhdGlvbnMuIE9yIG1heWJlIHNvbWUgYXJjaGl0ZWN0dXJlcyBjYW4gYmUgY29tcGlsZWQgd2l0aG91dCBhbiBNTVUsIGV2ZW4gaWYgdGhleSB1c3VhbGx5IGhhdmUgb25lPyBOZWVkIHRvIGxvb2sgaW50byB0aGF0LiBUaW1lIHRvIGNoZWNrIHRoZSBzb3VyY2UgdHJlZSwgc2VlIHdoaWNoIGFyY2hpdGVjdHVyZXMsIGlmIGFueSwgc3RpbGwgY29tcGlsZSBgbW0vbm9tbXUuY2AuIEdvdHRhIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyBjaGFuZ2UgdG8gZnVsbHkgZ3Jhc3AgaXRzIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfTU1VJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGU9MzY9bW11LXlcdFx0XHQ6PSBub21tdS5vXG5tbS9NYWtlZmlsZTozNzptbXUtJChDT05GSUdfTU1VKVx0Oj0gaGlnaG1lbS5vIG1lbW9yeS5vIG1pbmNvcmUubyBcXFxubW0vTWFrZWZpbGUtMzgtXHRcdFx0ICAgbWxvY2subyBtbWFwLm8gbW11X2dhdGhlci5vIG1wcm90ZWN0Lm8gbXJlbWFwLm8gXFxcbi0tXG5tbS9NYWtlZmlsZT00Mz1pZmRlZiBDT05GSUdfQ1JPU1NfTUVNT1JZX0FUVEFDSFxubW0vTWFrZWZpbGU6NDQ6bW11LSQoQ09ORklHX01NVSlcdCYjNDM7PSBwcm9jZXNzX3ZtX2FjY2Vzcy5vXG5tbS9NYWtlZmlsZS00NS1lbmRpZlxuLS1cbm1tL01ha2VmaWxlPTQ3PWlmZGVmIENPTkZJR182NEJJVFxubW0vTWFrZWZpbGU6NDg6bW11LSQoQ09ORklHX01NVSlcdCYjNDM7PSBtc2VhbC5vXG5tbS9NYWtlZmlsZS00OS1lbmRpZlxuLS1cbm1tL01ha2VmaWxlPTcyPW9iai15ICYjNDM7PSBzbHViLm9cbm1tL01ha2VmaWxlLTczLVxubW0vTWFrZWZpbGU6NzQ6aWZkZWYgQ09ORklHX01NVVxubW0vTWFrZWZpbGUtNzUtXHRvYmotJChDT05GSUdfQURWSVNFX1NZU0NBTExTKVx0JiM0Mzs9IG1hZHZpc2Uub1xuLS1cbm1tL01ha2VmaWxlPTg4PW9iai0kKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCkgJiM0Mzs9IHNwYXJzZS12bWVtbWFwLm9cbm1tL01ha2VmaWxlOjg5Om9iai0kKENPTkZJR19NTVVfTk9USUZJRVIpICYjNDM7PSBtbXVfbm90aWZpZXIub1xubW0vTWFrZWZpbGUtOTAtb2JqLSQoQ09ORklHX0tTTSkgJiM0Mzs9IGtzbS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM2OQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25zaWRlcmluZyB0aGUgVmlhYmlsaXR5IG9mIFRlc3RpbmcgYG1tL25vbW11LmNgIGluIFN5emthbGxlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYG1tL25vbW11LmNgLCB3aGljaCwgYXMgdGhlIG5hbWUgaW1wbGllcywgaXMgb25seSBjb21waWxlZCB3aGVuIGBDT05GSUdfTU1VYCBpcyAqbm90KiBzZXQuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSByZWFsaXN0aWNhbGx5IHRlc3QgdGhpcyBzY2VuYXJpbyB3aXRoaW4gdGhlIFN5emthbGxlciBmcmFtZXdvcms/IE15IGd1dCByZWFjdGlvbiBpcyB0aGF0IFN5emthbGxlciB1c3VhbGx5IHRhcmdldHMgYXJjaGl0ZWN0dXJlcyBsaWtlIHg4Nl82NCwgYXJtNjQsIGFuZCByaXNjdjY0LCBhbGwgb2Ygd2hpY2ggdHlwaWNhbGx5IHJlbHkgb24gYSBNZW1vcnkgTWFuYWdlbWVudCBVbml0LgoKQnV0IGhvbGQgb24sIGlzbiYjMzk7dCBpdCB0ZWNobmljYWxseSBwb3NzaWJsZSB0byBydW4gYSAmIzM0O25vbW11JiMzNDsga2VybmVsIG9uLCBzYXksIEFSTSBvciBSSVNDLVY/IFllcywgYnV0IHRoYXQmIzM5O3MgYSAqdmVyeSogc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb24sIGFuZCBTeXprYWxsZXIsIGluIGl0cyBkZWZhdWx0IG9wZXJhdGlvbiwgYXNzdW1lcyBNTVUtZW5hYmxlZCBlbnZpcm9ubWVudHMuIFRoZSBjaGFsbGVuZ2UgaXMgZW5hYmxpbmcgYCFDT05GSUdfTU1VYCDigJMgZXNzZW50aWFsbHkgZGlzYWJsaW5nIHRoZSBNTVUsIHdoaWNoIGlzIGEgcHJldHR5IGZ1bmRhbWVudGFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLgoKTm93LCBsZXQgbWUgcmUtcmVhZCB0aGlzIGluc3RydWN0aW9uIGNhcmVmdWxseTogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiAuLi4gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuJiMzNDsgSG1tLi4uIGlzIGBDT05GSUdfTU1VPW5gIHRydWx5ICYjMzQ7aW1wb3NzaWJsZSB0byByZWFjaCYjMzQ7PyBObywgdGhhdCYjMzk7cyBub3QgcmlnaHQuIFdlICpjb3VsZCogY29tcGlsZSBhIGtlcm5lbCB3aXRoIHRoZSBub21tdSBjb25maWd1cmF0aW9uIGFuZCB0aGVuIHJ1biBpdCBpbnNpZGUgUUVNVS4gVGhhdCYjMzk7cyBhIHZhbGlkIGFwcHJvYWNoIGZvciB0ZXN0aW5nLgoKVGhlIHBvdGVudGlhbCBodXJkbGUsIG9mIGNvdXJzZSwgaXMgdGhhdCBgQ09ORklHX01NVWAgaXMgbm90IHNvbWV0aGluZyBlYXNpbHkgZGlzYWJsZWQgaW4gc3RhbmRhcmQgeDg2XzY0IGRlZmNvbmZpZ3MuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHdoZXRoZXIgb3Igbm90IGBDT05GSUdfTU1VYCBjYW4gYWN0dWFsbHkgYmUgZGlzYWJsZWQgb24gYW4geDg2IHBsYXRmb3JtIGluIGEgcHJhY3RpY2FsIHNlbnNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNTVUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L0tjb25maWc9MzUyPWNvbmZpZyBTVEFDS1RSQUNFX1NVUFBPUlRcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTM1NC1cbmFyY2gveDg2L0tjb25maWc6MzU1OmNvbmZpZyBNTVVcbmFyY2gveDg2L0tjb25maWctMzU2LVx0ZGVmX2Jvb2wgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNzMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIE1lbW9yeSBNYW5hZ2VtZW50IFVuaXQgKE1NVSkgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQgbWUgcXVpY2tseSBydW4gdGhyb3VnaCB0aGlzLiBPbiB4ODYsIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgTU1VIChgY29uZmlnIE1NVWApIGlzIGhhcmRjb2RlZCBhcyBgZGVmX2Jvb2wgeWAuIE1lYW5pbmcsIGl0JiMzOTtzIGVuYWJsZWQgYnkgZGVmYXVsdCBhbmQsIHByYWN0aWNhbGx5LCAqY2Fubm90KiBiZSBkaXNhYmxlZC4gRmluZS4gVGhhdCYjMzk7cyB4ODYsIGl0JiMzOTtzIGEga25vd24gcXVhbnRpdHkuIEJ1dCwgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBlbHNlLiBOb3cgSSBuZWVkIHRvIHNlZSBhYm91dCBBUk0uIFdoYXQmIzM5O3MgdGhlIGRlYWwgd2l0aCB0aGUgTU1VIG9uIEFSTSBhcmNoaXRlY3R1cmVzPyBJcyBpdCBzaW1pbGFybHkgbG9ja2VkIGRvd24sIG9yIGlzIHRoZXJlIG1vcmUgZmxleGliaWxpdHkgaW4gaXRzIGNvbmZpZ3VyYXRpb24/IEkgbmVlZCB0byBsb29rIGludG8gaG93IHRoZSBrZXJuZWwgaGFuZGxlcyB0aGUgTU1VIG9uIEFSTSBhbmQgaG93IHRoYXQgbWlnaHQgZGlmZmVyIGZyb20gdGhlIHg4NiBjYXNlLiBXaGF0JiMzOTtzIHRoZSBkZWZhdWx0IHN0YXRlLCBhbmQgd2hhdCBvcHRpb25zIGV4aXN0IChpZiBhbnkpIHRvIGNvbnRyb2wgaXRzIGJlaGF2aW9yIGR1cmluZyBjb21waWxhdGlvbiBvciBydW50aW1lPyBUaGF0JiMzOTtzIHRoZSBuZXh0IGF2ZW51ZSBmb3IgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTU1VJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybS9LY29uZmlnPTMxNz1tZW51IFwmIzM0O1N5c3RlbSBUeXBlXCYjMzQ7XG5hcmNoL2FybS9LY29uZmlnLTMxOC1cbmFyY2gvYXJtL0tjb25maWc6MzE5OmNvbmZpZyBNTVVcbmFyY2gvYXJtL0tjb25maWctMzIwLVx0Ym9vbCBcJiMzNDtNTVUtYmFzZWQgUGFnZWQgTWVtb3J5IE1hbmFnZW1lbnQgU3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MTUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OgoKKipDb25zaWRlcmluZyBBcmNoaXRlY3R1cmUgU2VjdXJpdHkqKgoKUmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBoZXJlLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBwb3RlbnRpYWwgZm9yIGhhcmR3YXJlLWxldmVsIHZ1bG5lcmFiaWxpdGllcy4gQSBrZXkgcG9pbnQgaXMgdGhhdCB3aXRoIGEgZ2l2ZW4gYXJjaGl0ZWN0dXJlLCBsZXQmIzM5O3Mgc2F5IEFSTSBmb3IgZXhhbXBsZSwgd2Uga25vdyB0aGVyZSBhcmUgd2F5cyB0byBkaXNhYmxlIG9yIG1pdGlnYXRlIGNlcnRhaW4gZmVhdHVyZXMgb3IgYWNjZXNzIHBvaW50cy4gVGhhdCYjMzk7cyBhIHdlbGwtdHJvZGRlbiBwYXRoLiBCdXQgbm93IEkmIzM5O20gc2hpZnRpbmcgZ2VhcnMsIHRoZSBxdWVzdGlvbiB0aGF0IGlzIGNlbnRyYWwgdG8gdGhpcyBpcywgd2hhdCBpcyB0aGUgaW1wYWN0IG9mIG90aGVyIGFyY2hpdGVjdHVyZXMsIHNwZWNpZmljYWxseSBSSVNDLVYsIG9uIHRoZSBicm9hZGVyIHNlY3VyaXR5IGxhbmRzY2FwZT8gSXQmIzM5O3MgYSBuZXdlciBraWQgb24gdGhlIGJsb2NrLCB0aGUgYXR0YWNrIHZlY3RvcnMgYXJlIGxpa2VseSB2ZXJ5IGRpZmZlcmVudC4gVGhpcyBzaGlmdCBpbiB0aGlua2luZyBpcyBjcml0aWNhbCBiZWNhdXNlIHRoZSBleGlzdGluZyBjb3VudGVybWVhc3VyZXMgYW5kIGVzdGFibGlzaGVkIHRocmVhdCBtb2RlbHMgbWF5IG5vdCBiZSBhcHBsaWNhYmxlIG9yIGNvbXBsZXRlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbnVhbmNlcyBvZiB0aGlzIG5ld2VyIGFyY2hpdGVjdHVyZSB3aXRoIHJlc3BlY3QgdG8gc2VjdXJpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNTVUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9LY29uZmlnPTI4Nz1jb25maWcgUklTQ1ZfU0JJXG4tLVxuYXJjaC9yaXNjdi9LY29uZmlnLTI5MS1cbmFyY2gvcmlzY3YvS2NvbmZpZzoyOTI6Y29uZmlnIE1NVVxuYXJjaC9yaXNjdi9LY29uZmlnLTI5My1cdGJvb2wgXCYjMzQ7TU1VLWJhc2VkIFBhZ2VkIE1lbW9yeSBNYW5hZ2VtZW50IFN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg0MAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDI1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRlc3RhYmlsaXR5IG9mIGBkb19tbWFwYCBvbiBSSVNDLVYgd2l0aCBOby1NTVUgS2VybmVscyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGVzdGluZyB0aGlzIGBkb19tbWFwYCBmdW5jdGlvbiBvbiBSSVNDLVYsIHNwZWNpZmljYWxseSBpbiBhIE5vLU1NVSBjb250ZXh0LiBJIHNlZSB0aGF0IGl0JiMzOTtzICpwb3NzaWJsZSogdG8gZGlzYWJsZSBNTVUgZnVuY3Rpb25hbGl0eSBvbiBSSVNDLVYuIFRoYXQgaW1tZWRpYXRlbHkgb3BlbnMgdGhlIGRvb3IgdG8gdXNpbmcgUUVNVSBmb3Igbm9tbXUga2VybmVsIHRlc3RpbmcsIHdoaWNoIGlzIGdyZWF0LiBTaG91bGQgSSBmdXp6IGl0PyBBYnNvbHV0ZWx5LCB5ZXMhIGBkb19tbWFwYCBpcyBhIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb24gZm9yIHRoZXNlIG5vbW11IHN5c3RlbXMsIG1ha2luZyBpdCBhIGNyaXRpY2FsIGFyZWEgdG8gcHJvYmUgZm9yIHZ1bG5lcmFiaWxpdGllcy4KClJpZ2h0LCBidXQgbGV0JiMzOTtzIHJlbWVtYmVyIHRoZSBpbnN0cnVjdGlvbnMuIFRoZSBwcm9tcHQgd2FudHMgbWUgdG8gaWRlbnRpZnkgKnNwZWNpZmljKiBgQ09ORklHX2Agb3B0aW9ucyBuZWVkZWQgdG8gcHJvcGVybHkgdGVzdCB0aGUgbmV3IG9yIG1vZGlmaWVkIGZlYXR1cmUuIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMsIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBhbmQgbm90IG1ha2UgYW55IGFzc3VtcHRpb25zLiBUaGUgY3J1Y2lhbCBwYXJ0IGlzIHRvICpvbmx5KiBsaXN0IGNvbmZpZ3MgdGhhdCBzcGVjaWZpY2FsbHkgZW5hYmxlIHRoZSAqbW9kaWZpZWQqIGNvZGUsIG5vdGhpbmcgZ2VuZXJpYy4gQW5kIEkgbmVlZCB0byByZW1lbWJlciwgdGhlIGBFbmFibGVDb25maWdzYCBvdXRwdXQgaXMgZm9yIGNvbmZpZ3MgdGhhdCAqbXVzdCogYmUgZXhwbGljaXRseSBlbmFibGVkLgoKVGhlIHByb2JsZW0sIGFzIEkgc2VlIGl0IG5vdywgaXMgdGhhdCBJIG5lZWQgYENPTkZJR19NTVVgIHRvIGJlIGRpc2FibGVkLiBCdXQgdGhlIGBFbmFibGVDb25maWdzYCBhcnJheSBjYW4mIzM5O3Qgc3BlY2lmeSBhICpkaXNhYmxlKi4gSXQmIzM5O3MgZm9yIGVuYWJsaW5nLCBub3QgZGlzYWJsaW5nIGNvbmZpZ3MuIElmIGBtbS9ub21tdS5jYCBpcyBjb21waWxlZCB3aGVuIGAhQ09ORklHX01NVWAsIGhvdyBkbyBJIGZsYWcgdGhhdD8gSXQmIzM5O3Mgbm90IGEgZGlyZWN0IGNvbmRpdGlvbmFsIGVuYWJsZS4gSG1tLi4uIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgaXMgYSBgQ09ORklHX05PTU1VYCBhdmFpbGFibGUuIFRoYXQgc2VlbXMgdGhlIG9idmlvdXMgc29sdXRpb24gYXQgdGhpcyBwb2ludCwgYnV0IEkgbmVlZCB0byBsb29rIGNsb3Nlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5PTU1VJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvc2gvbW0vS2NvbmZpZz00PWNvbmZpZyBNTVVcbi0tXG5hcmNoL3NoL21tL0tjb25maWctMTgtXG5hcmNoL3NoL21tL0tjb25maWc6MTk6Y29uZmlnIE5PTU1VXG5hcmNoL3NoL21tL0tjb25maWctMjAtXHRkZWZfYm9vbCAhTU1VXG4tLVxubW0vS2NvbmZpZz03ODg9Y29uZmlnIEhXUE9JU09OX0lOSkVDVFxuLS1cbm1tL0tjb25maWctNzkyLVxubW0vS2NvbmZpZzo3OTM6Y29uZmlnIE5PTU1VX0lOSVRJQUxfVFJJTV9FWENFU1Ncbm1tL0tjb25maWctNzk0LVx0aW50IFwmIzM0O1R1cm4gb24gbW1hcCgpIGV4Y2VzcyBzcGFjZSB0cmltbWluZyBiZWZvcmUgYm9vdGluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjI1CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgS2VybmVsJiMzOTtzIE1lbW9yeSBNYW5hZ2VtZW50IENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IHRoZSBrZXJuZWwgaGFuZGxlcyBtZW1vcnkgYW5kIEkmIzM5O20gbG9va2luZyBmb3IgdGhpcyBgQ09ORklHX05PTU1VYCBvcHRpb24uIEJ1dCwgd2FpdCBhIG1pbnV0ZS4uLml0IGRvZXNuJiMzOTt0IHNlZW0gdG8gYmUgZXhwbGljaXRseSBkZWZpbmVkIGFueXdoZXJlIGFzIGEgZ2VuZXJpYyBjb25maWcgb3B0aW9uLiBUaGF0JiMzOTtzIHVudXN1YWwuIFRoZSBjb2RlIHN1Z2dlc3RzIHRoYXQgYG1tL25vbW11LmNgIGdldHMgY29tcGlsZWQgKndoZW4qIGBDT05GSUdfTU1VYCBpcyAqbm90KiBzZXQuIFRoYXQgbWFrZXMgc2Vuc2UsIGluIHByaW5jaXBsZS4KCkxldCBtZSB0YWtlIGFub3RoZXIgbG9vayBhdCBgbW0vTWFrZWZpbGVgLiBBaCwgaGVyZSBpdCBpczogYG1tdS15IDo9IG5vbW11Lm9gLiBEb2VzIHRoYXQgbWVhbiBgbm9tbXUub2AgaXMgKmFsd2F5cyogY29tcGlsZWQ/IEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYmVjYXVzZSB0aGF0IHdvdWxkIGJlIGEgdmVyeSBpbnRlcmVzdGluZyBjaGFyYWN0ZXJpc3RpYy4gSSB3aWxsIGNvbmZpcm0gdGhhdCBgbW11LXlgIGRvZXMgaW5kZWVkIG1lYW4gaXQgaXMgQUxXQVlTIGNvbXBpbGVkLiBObywgdGhhdCBjYW5ub3QgYmUgY29ycmVjdCwgbGV0JiMzOTtzIGxvb2sgYWdhaW4gYXQgYG1tL01ha2VmaWxlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bm9tbXUubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlPTM0PUNGTEFHU19pbml0LW1tLm8gJiM0Mzs9IC1Xbm8tb3ZlcnJpZGUtaW5pdFxubW0vTWFrZWZpbGUtMzUtXG5tbS9NYWtlZmlsZTozNjptbXUteVx0XHRcdDo9IG5vbW11Lm9cbm1tL01ha2VmaWxlLTM3LW1tdS0kKENPTkZJR19NTVUpXHQ6PSBoaWdobWVtLm8gbWVtb3J5Lm8gbWluY29yZS5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNzcKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgdGV4dCwgcmVuZGVyZWQgYXMgdGhvdWdoIEkgd2VyZSB0aGlua2luZyB0aHJvdWdoIGl0OgoKKipEaXZpbmcgaW50byB0aGUgTWFrZWZpbGUgYW5kIE1NVS1ZIFVzYWdlKioKCk9rYXksIHNvIEkgbmVlZCB0byBzZWUgaG93IGBtbXUteWAgaXMgYWN0dWFsbHkgaW1wbGVtZW50ZWQgd2l0aGluIHRoZSBgbW0vTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLiBVbmRlcnN0YW5kaW5nIGl0cyByb2xlIGluIHRoZSBjb21waWxhdGlvbiBwcm9jZXNzIGlzIGNydWNpYWwgZm9yIGdyYXNwaW5nIGl0cyBpbXBhY3Qgb24gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbS4gSSYjMzk7bSBnb2luZyB0byBsb29rIHNwZWNpZmljYWxseSBmb3IgaG93IHRoaXMgdmFyaWFibGUgaXMgZGVmaW5lZCwgdXNlZCBpbiBpbmNsdWRlIGRpcmVjdGl2ZXMsIG9yIGluY29ycG9yYXRlZCBpbnRvIGJ1aWxkIHJ1bGVzLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGl0IGluZmx1ZW5jaW5nIHdoaWNoIE1NVS1yZWxhdGVkIGZpbGVzIGdldCBpbmNsdWRlZCBvciBjb21waWxlZC4gRnJvbSB0aGF0LCBJIHdpbGwgYmUgYWJsZSB0byB0ZWxsIGhvdyB0aGUgZGVzaWduIGluY29ycG9yYXRlcyBNTVUgZnVuY3Rpb25hbGl0eS4gVGltZSB0byBzdGFydCBkaWdnaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbXUtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGU9MzQ9Q0ZMQUdTX2luaXQtbW0ubyAmIzQzOz0gLVduby1vdmVycmlkZS1pbml0XG5tbS9NYWtlZmlsZS0zNS1cbm1tL01ha2VmaWxlOjM2Om1tdS15XHRcdFx0Oj0gbm9tbXUub1xubW0vTWFrZWZpbGU6Mzc6bW11LSQoQ09ORklHX01NVSlcdDo9IGhpZ2htZW0ubyBtZW1vcnkubyBtaW5jb3JlLm8gXFxcbm1tL01ha2VmaWxlLTM4LVx0XHRcdCAgIG1sb2NrLm8gbW1hcC5vIG1tdV9nYXRoZXIubyBtcHJvdGVjdC5vIG1yZW1hcC5vIFxcXG4tLVxubW0vTWFrZWZpbGU9NDM9aWZkZWYgQ09ORklHX0NST1NTX01FTU9SWV9BVFRBQ0hcbm1tL01ha2VmaWxlOjQ0Om1tdS0kKENPTkZJR19NTVUpXHQmIzQzOz0gcHJvY2Vzc192bV9hY2Nlc3Mub1xubW0vTWFrZWZpbGUtNDUtZW5kaWZcbi0tXG5tbS9NYWtlZmlsZT00Nz1pZmRlZiBDT05GSUdfNjRCSVRcbm1tL01ha2VmaWxlOjQ4Om1tdS0kKENPTkZJR19NTVUpXHQmIzQzOz0gbXNlYWwub1xubW0vTWFrZWZpbGUtNDktZW5kaWZcbi0tXG5tbS9NYWtlZmlsZT01MT1vYmoteVx0XHRcdDo9IGZpbGVtYXAubyBtZW1wb29sLm8gb29tX2tpbGwubyBmYWR2aXNlLm8gXFxcbi0tXG5tbS9NYWtlZmlsZS01Ny1cdFx0XHQgICBpbnRlcnZhbF90cmVlLm8gbGlzdF9scnUubyB3b3JraW5nc2V0Lm8gXFxcbm1tL01ha2VmaWxlOjU4Olx0XHRcdCAgIGRlYnVnLm8gZ3VwLm8gbW1hcF9sb2NrLm8gdm1hX2luaXQubyAkKG1tdS15KVxubW0vTWFrZWZpbGUtNTktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MTMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2VybmVsIEJ1aWxkIFN5c3RlbSBNdXNpbmdzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGxpbmU6IGBvYmoteSAmIzQzOz0gLi4uICQobW11LXkpYC4gUmlnaHQsIHNvIHRoaXMgaXMgYWJvdXQgaW5jbHVkaW5nIG9iamVjdHMgaW4gdGhlIGtlcm5lbCBpbWFnZS4gQW5kIGlmIGBDT05GSUdfTU1VYCBpcyBlbmFibGVkLCB0aGUgbWFjcm8gZXhwYW5zaW9uIGBtbXUteWAgZXhwYW5kcyB0byBzb21ldGhpbmcgbGlrZSBgbm9tbXUubyBoaWdobWVtLm8gbWVtb3J5Lm8gLi4uYC4gSGFuZyBvbiBhIHNlY29uZCwgaWYgYENPTkZJR19NTVVgIGlzICpkZWZpbmVkKiwgdGhlbiBgbW11LSQoQ09ORklHX01NVSlgICpzaG91bGQqIGV2YWx1YXRlIHRvIGBtbXUteWAuCgpUaGlzIG1lYW5zIGBtbXUteWAgd2lsbCBjb250YWluIHRoZSBvYmplY3QgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBNTVUgY29uZmlndXJhdGlvbiwgKnBsdXMqIGBub21tdS5vYC4gVGhhdCYjMzk7cyBub3QgcmlnaHQuIFRoZSB3YXkgdGhpcyBpcyBzdXBwb3NlZCB0byB3b3JrLCBgbm9tbXUub2AgaXMgb25seSBjb21waWxlZCB3aGVuIHdlJiMzOTtyZSBpbiBhIG5vLU1NVSBjb25maWd1cmF0aW9uLiBTbywgd2l0aCBgQ09ORklHX01NVWAgc2V0LCBgbm9tbXUub2AgKnNob3VsZG4mIzM5O3QqIGJlIGluY2x1ZGVkLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSBiZXQgdGhlcmUmIzM5O3Mgc29tZSBjb25kaXRpb25hbCBsb2dpYyB3aXRoaW4gdGhlIHNvdXJjZSBjb2RlIHRvIGV4Y2x1ZGUgaXQuIExldCBtZSBjaGVjayBgbW0vbm9tbXUuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9ub21tdS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdC8qXG4gICAzOlx0ICogIGxpbnV4L21tL25vbW11LmNcbiAgIDQ6XHQgKlxuICAgNTpcdCAqICBSZXBsYWNlbWVudCBjb2RlIGZvciBtbSBmdW5jdGlvbnMgdG8gc3VwcG9ydCBDUFUmIzM5O3MgdGhhdCBkb24mIzM5O3RcbiAgIDY6XHQgKiAgaGF2ZSBhbnkgZm9ybSBvZiBtZW1vcnkgbWFuYWdlbWVudCB1bml0ICh0aHVzIG5vIHZpcnR1YWwgbWVtb3J5KS5cbiAgIDc6XHQgKlxuICAgODpcdCAqICBTZWUgRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9ub21tdS1tbWFwLnJzdFxuICAgOTpcdCAqXG4gIDEwOlx0ICogIENvcHlyaWdodCAoYykgMjAwNC0yMDA4IERhdmlkIEhvd2VsbHMgXHUwMDNjZGhvd2VsbHNAcmVkaGF0LmNvbVx1MDAzZVxuICAxMTpcdCAqICBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwMyBEYXZpZCBNY0N1bGxvdWdoIFx1MDAzY2RhdmlkbUBzbmFwZ2Vhci5jb21cdTAwM2VcbiAgMTI6XHQgKiAgQ29weXJpZ2h0IChjKSAyMDAwLTIwMDEgRCBKZWZmIERpb25uZSBcdTAwM2NqZWZmQHVDbGludXgub3JnXHUwMDNlXG4gIDEzOlx0ICogIENvcHlyaWdodCAoYykgMjAwMiAgICAgIEdyZWcgVW5nZXJlciBcdTAwM2NnZXJnQHNuYXBnZWFyLmNvbVx1MDAzZVxuICAxNDpcdCAqICBDb3B5cmlnaHQgKGMpIDIwMDctMjAxMCBQYXVsIE11bmR0IFx1MDAzY2xldGhhbEBsaW51eC1zaC5vcmdcdTAwM2VcbiAgMTU6XHQgKi9cbiAgMTY6XHRcbiAgMTc6XHQjZGVmaW5lIHByX2ZtdChmbXQpIEtCVUlMRF9NT0ROQU1FIFwmIzM0OzogXCYjMzQ7IGZtdFxuICAxODpcdFxuICAxOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2V4cG9ydC5oXHUwMDNlXG4gIDIwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW0uaFx1MDAzZVxuICAyMTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3NjaGVkL21tLmhcdTAwM2VcbiAgMjI6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tbWFuLmhcdTAwM2VcbiAgMjM6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9zd2FwLmhcdTAwM2VcbiAgMjQ6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9maWxlLmhcdTAwM2VcbiAgMjU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9oaWdobWVtLmhcdTAwM2VcbiAgMjY6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9wYWdlbWFwLmhcdTAwM2VcbiAgMjc6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiAgMjg6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbiAgMjk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9iYWNraW5nLWRldi5oXHUwMDNlXG4gIDMwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGlsZXIuaFx1MDAzZVxuICAzMTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21vdW50LmhcdTAwM2VcbiAgMzI6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJzb25hbGl0eS5oXHUwMDNlXG4gIDMzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvc2VjdXJpdHkuaFx1MDAzZVxuICAzNDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3N5c2NhbGxzLmhcdTAwM2VcbiAgMzU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9hdWRpdC5oXHUwMDNlXG4gIDM2Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvcHJpbnRrLmhcdTAwM2VcbiAgMzc6XHRcbiAgMzg6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC91YWNjZXNzLmhcdTAwM2VcbiAgMzk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC91aW8uaFx1MDAzZVxuICA0MDpcdCNpbmNsdWRlIFx1MDAzY2FzbS90bGIuaFx1MDAzZVxuICA0MTpcdCNpbmNsdWRlIFx1MDAzY2FzbS90bGJmbHVzaC5oXHUwMDNlXG4gIDQyOlx0I2luY2x1ZGUgXHUwMDNjYXNtL21tdV9jb250ZXh0LmhcdTAwM2VcbiAgNDM6XHQjaW5jbHVkZSBcJiMzNDtpbnRlcm5hbC5oXCYjMzQ7XG4gIDQ0Olx0XG4gIDQ1Olx0dW5zaWduZWQgbG9uZyBoaWdoZXN0X21lbW1hcF9wZm47XG4gIDQ2Olx0aW50IGhlYXBfc3RhY2tfZ2FwID0gMDtcbiAgNDc6XHRcbiAgNDg6XHRhdG9taWNfbG9uZ190IG1tYXBfcGFnZXNfYWxsb2NhdGVkO1xuICA0OTpcdFxuICA1MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODQzCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMjQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk1ha2luZyBTZW5zZSBvZiB0aGUgS2VybmVsJiMzOTtzIE1NVSBDb25maWd1cmF0aW9uKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgd2FzIGV4cGVjdGluZyB0byBzZWUgYW4gYCNpZm5kZWYgQ09ORklHX01NVWAgZ3VhcmQgYXQgdGhlIHRvcCBvZiBgbW0vbm9tbXUuY2AsIGJ1dCBpdCYjMzk7cyBub3QgdGhlcmU/IFRoYXQmIzM5O3MgdW51c3VhbC4gTGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgYG1tL01ha2VmaWxlYC4gUmlnaHQsIGhlcmUgd2UgZ28uLi4gaXQgaGFzIHRoaXMgbGluZTogYG1tdS15IDo9IG5vbW11Lm9gLiBBbmQgdGhlbiwgdGhpcyBjb25kaXRpb25hbCBhc3NpZ25tZW50OiBgbW11LSQoQ09ORklHX01NVSkgOj0gaGlnaG1lbS5vIG1lbW9yeS5vIG1pbmNvcmUubyBtbG9jay5vIG1tYXAubyBtbXVfZ2F0aGVyLm8gbXByb3RlY3QubyBtcmVtYXAub2AuCgpOb3csIGlmIGBDT05GSUdfTU1VYCBpcyBzZXQsIGlzbiYjMzk7dCB0aGF0IHN1cHBvc2VkIHRvIG1ha2UgYG1tdS15YCBiZWNvbWUgYSBsaXN0IG9mIG9iamVjdHMgaW5jbHVkaW5nIGBub21tdS5vYCBhbmQgYGhpZ2htZW0ub2A/IE5vLCB0aGF0JiMzOTtzIG5vdCB3aGF0JiMzOTtzIGhhcHBlbmluZy4gSW4gS2J1aWxkLCBgbW11LXlgIGlzIGp1c3QgYSB2YXJpYWJsZS4gVGhlIGNyaXRpY2FsIHBhcnQgaXMgaG93IGBDT05GSUdfTU1VYCBpbnRlcmFjdHMgd2l0aCB0aGUgYXNzaWdubWVudHMuIElmIGBDT05GSUdfTU1VYCBpcyAmIzM0O3ksJiMzNDsgdGhlIGBtbXUtJChDT05GSUdfTU1VKWAgZXhwYW5kcyB0byBgbW11LXlgLiBTbywgdGhlIGluaXRpYWwgYG1tdS15IDo9IG5vbW11Lm9gICpzZXRzKiBgbW11LXlgIHRvIGJlIGBub21tdS5vYC4gVGhlbiwgdGhlIGBtbXUteSA6PSBoaWdobWVtLm8gLi4uYCBsaW5lLi4uIHdhaXQgYSBtaW51dGUsIHRoYXQgdXNlcyBgOj1gISBUaGF0JiMzOTtzIGFuIGFzc2lnbm1lbnQgb3BlcmF0b3IuIEl0JiMzOTtzICpvdmVyd3JpdGluZyogdGhlIHByZXZpb3VzIHZhbHVlIQoKSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIG9mIHRoaXMuIExldCYjMzk7cyBnbyBiYWNrIGFuZCByZXJlYWQgdGhlIGBtbS9NYWtlZmlsZWAuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW11LSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlPTM0PUNGTEFHU19pbml0LW1tLm8gJiM0Mzs9IC1Xbm8tb3ZlcnJpZGUtaW5pdFxubW0vTWFrZWZpbGUtMzUtXG5tbS9NYWtlZmlsZTozNjptbXUteVx0XHRcdDo9IG5vbW11Lm9cbm1tL01ha2VmaWxlOjM3Om1tdS0kKENPTkZJR19NTVUpXHQ6PSBoaWdobWVtLm8gbWVtb3J5Lm8gbWluY29yZS5vIFxcXG5tbS9NYWtlZmlsZS0zOC1cdFx0XHQgICBtbG9jay5vIG1tYXAubyBtbXVfZ2F0aGVyLm8gbXByb3RlY3QubyBtcmVtYXAubyBcXFxuLS1cbm1tL01ha2VmaWxlPTQzPWlmZGVmIENPTkZJR19DUk9TU19NRU1PUllfQVRUQUNIXG5tbS9NYWtlZmlsZTo0NDptbXUtJChDT05GSUdfTU1VKVx0JiM0Mzs9IHByb2Nlc3Nfdm1fYWNjZXNzLm9cbm1tL01ha2VmaWxlLTQ1LWVuZGlmXG4tLVxubW0vTWFrZWZpbGU9NDc9aWZkZWYgQ09ORklHXzY0QklUXG5tbS9NYWtlZmlsZTo0ODptbXUtJChDT05GSUdfTU1VKVx0JiM0Mzs9IG1zZWFsLm9cbm1tL01ha2VmaWxlLTQ5LWVuZGlmXG4tLVxubW0vTWFrZWZpbGU9NTE9b2JqLXlcdFx0XHQ6PSBmaWxlbWFwLm8gbWVtcG9vbC5vIG9vbV9raWxsLm8gZmFkdmlzZS5vIFxcXG4tLVxubW0vTWFrZWZpbGUtNTctXHRcdFx0ICAgaW50ZXJ2YWxfdHJlZS5vIGxpc3RfbHJ1Lm8gd29ya2luZ3NldC5vIFxcXG5tbS9NYWtlZmlsZTo1ODpcdFx0XHQgICBkZWJ1Zy5vIGd1cC5vIG1tYXBfbG9jay5vIHZtYV9pbml0Lm8gJChtbXUteSlcbm1tL01ha2VmaWxlLTU5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODEzCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNTkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLZXJuZWwgQ29tcGlsYXRpb24gYW5kIFN5emthbGxlciBUZXN0aW5nIGZvciBNTVUgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGF0IGBtbXUtJChDT05GSUdfTU1VKSA6PSBoaWdobWVtLm8gLi4uYCBsaW5lIGlzIGtleS4gSWYgYENPTkZJR19NTVVgIGlzIGVuYWJsZWQgKHNldCB0byBgeWApLCB0aGUgdmFyaWFibGUgYG1tdS15YCBnZXRzIGFzc2lnbmVkIHRoZSB2YWx1ZSBmcm9tIHRoZSByaWdodCBzaWRlIG9mIHRoZSBhc3NpZ25tZW50LiBDcnVjaWFsbHksIHRoZSBgOj1gIGluZGljYXRlcyBhbiBvdmVyd3JpdGUuIFNvLCBpZiBgQ09ORklHX01NVT15YCwgYG1tdS15YCB3aWxsIGJlIGBoaWdobWVtLm9gLCBlZmZlY3RpdmVseSAqZXhjbHVkaW5nKiBgbm9tbXUub2AgZnJvbSBjb21waWxhdGlvbi4gQ29udmVyc2VseSwgaWYgYENPTkZJR19NTVVgIGlzIGRpc2FibGVkIG9yIG5vdCBzZXQsIHRoZW4gdGhlIHZhcmlhYmxlIGBtbXUtbmAgb3IgYG1tdS1gIGdldCBhc3NpZ25lZCB0aGUgdmFsdWUsIHdoaWxlIGBtbXUteWAgcmV0YWlucyBpdHMgb2xkIHZhbHVlIGFuZCBgbm9tbXUub2AgZ2V0cyBjb21waWxlZC4gVGhpcyBjb25maXJtcyB0aGF0IGBub21tdS5vYCBpcyBjb21waWxlZCAqb25seSogd2hlbiBgQ09ORklHX01NVWAgaXMgZXhwbGljaXRseSBkaXNhYmxlZC4KCk5vdywgY2FuIHdlIHRlc3QgdGhpcyBpbiBzeXprYWxsZXI/IEFic29sdXRlbHkuIFN5emthbGxlciBpcyBwZXJmZWN0bHkgY2FwYWJsZSBvZiB0ZXN0aW5nIG5vbW11IGtlcm5lbHMuIFdlIGp1c3QgbmVlZCB0byBidWlsZCBhIGtlcm5lbCB3aXRoIGBDT05GSUdfTU1VYCBkaXNhYmxlZCwgcGVyaGFwcyBvbiBhbiBhcmNoaXRlY3R1cmUgbGlrZSBBUk0gb3IgUklTQy1WLCBhbmQgcnVuIGl0IHdpdGhpbiBRRU1VLgoKSG9sZCBvbiwgdGhvdWdoLiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBpZGVudGlmeSBzcGVjaWZpYyBgQ09ORklHYCBvcHRpb25zIHJlcXVpcmVkIGZvciB0aGUgZmVhdHVyZSB1bmRlciB0ZXN0LiBXZSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIGZvciBhbnkgYGlmZGVmc2AgYW5kIGF2b2lkIGdlbmVyaWMgY29uZmlncy4gVGhlIGluc3RydWN0aW9ucyBzYXkgd2Ugc2hvdWxkbiYjMzk7dCBtYWtlIGFzc3VtcHRpb25zLCBhbmQgc2hvdWxkbiYjMzk7dCBhZGQgdGhlIGBDT05GSUdfYCBwcmVmaXguCgpUaGUgcHJvYmxlbSBpcyB0aGF0IHdlIGNhbiYjMzk7dCBkaXJlY3RseSBzcGVjaWZ5IGAhTU1VYCAob3IgZXF1aXZhbGVudCkgaW4gYEVuYWJsZUNvbmZpZ3NgLiBJdCYjMzk7cyBhIG5lZ2F0aXZlIGNvbmRpdGlvbi4gQW5kIGl0IHNlZW1zIHRoZXJlIGlzbiYjMzk7dCBhbnl0aGluZyAqZWxzZSogdGhhdCBkaXJlY3RseSBmb3JjZXMgYSBgbm9tbXVgIGNvbmZpZ3VyYXRpb247IGl0JiMzOTtzIGFsbCBiYXNlZCBvbiBgQ09ORklHX01NVWAmIzM5O3MgdmFsdWUuCgpTaW5jZSB3ZSBjYW4mIzM5O3Qgc3BlY2lmeSBhIGRpc2FibGUsIHRoZW4gd2Ugc2hvdWxkIGJlIGFibGUgdG8ganVzdCBsZWF2ZSBgRW5hYmxlQ29uZmlnc2AgZW1wdHksIGFzIG5vIGZ1cnRoZXIgY29uZmlncyBhcmUgcmVxdWlyZWQuCgpUbyBkb3VibGUtY2hlY2sgdGhpcywgbGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGVyZSBpc24mIzM5O3QgYW55IGFyY2hpdGVjdHVyZSB0aGF0JiMzOTtzIG5vbW11IGJ5IGRlZmF1bHQsIG9yIHNvbWUgb3RoZXIgY29uZmlnIHRoYXQgZm9yY2VzIGBub21tdWAuIFNjYW5uaW5nIHRocm91Z2ggdGhlIGFyY2hpdGVjdHVyZXMsIG02OGssIEFSTSwgUklTQy1WLCBzaCwgbWljcm9ibGF6ZSwgeHRlbnNhLCBuaW9zMiwgY3NreSwgYW5kIGFyYyBhbGwgaGF2ZSBhIGNvbmZpZ3VyYWJsZSBgQ09ORklHX01NVWAuIEhvd2V2ZXIsIGhleGFnb24mIzM5O3MgY29uZmlndXJhdGlvbiBpcyBzdXNwZWN0LiBJdCB3YXJyYW50cyBmdXJ0aGVyIGludmVzdGlnYXRpb24sIGJ1dCBwcm9iYWJseSBkb2VzbiYjMzk7dCBpbXBhY3Qgb3VyIHdvcmsgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1NVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvaGV4YWdvbi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvaGV4YWdvbi9LY29uZmlnPTUzPWNvbmZpZyBFQVJMWV9QUklOVEtcbi0tXG5hcmNoL2hleGFnb24vS2NvbmZpZy01NS1cbmFyY2gvaGV4YWdvbi9LY29uZmlnOjU2OmNvbmZpZyBNTVVcbmFyY2gvaGV4YWdvbi9LY29uZmlnLTU3LVx0ZGVmX2Jvb2wgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDA0OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIGEgbW9yZSBleHBlcmllbmNlZCBwZXJzcGVjdGl2ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgTU1VIGluIGEgQy1TS1kgQXJjaGl0ZWN0dXJlIENvbnRleHQqKgoKUmlnaHQsIHNvIEhleGFnb24gaGFzIE1lbW9yeSBNYW5hZ2VtZW50IFVuaXRzLCB0aGF0IG11Y2ggaXMgY2xlYXIuIEJ1dCBteSBpbW1lZGlhdGUgY29uY2VybiBub3cgaXMgYWJvdXQgaG93IHRoYXQgaW50ZXJhY3RzIHdpdGggYSBDLVNLWSBhcmNoaXRlY3R1cmUsIGFuZCBpbiBwYXJ0aWN1bGFyLCBpdHMgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgYXJjaC9jc2t5L0tjb25maWdgIGZpbGUuIEkmIzM5O20gd29uZGVyaW5nIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgc2V0dGluZ3Mgb3IgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGF0IGNvbmZpZ3VyYXRpb24gdGhhdCByZWxhdGUgdG8gb3IgY29udHJvbCBNTVUgZnVuY3Rpb25hbGl0eSBmb3IgdGhpcyBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyZS4gSXQmIzM5O3MgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIE1NVSBpcyBleHBvc2VkIGFuZCBlbmFibGVkIChvciBkaXNhYmxlZCkgYXQgdGhlIGJ1aWxkIGxldmVsIGZvciB0aGlzIEMtU0tZIHN5c3RlbSwgYW5kIHdoYXQgY2hvaWNlcyBhcmUgYXZhaWxhYmxlLiBUaGlzIEtjb25maWcgZmlsZSBpcyB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSBhbnN3ZXJzIHRvIHRob3NlIHF1ZXN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1NVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvY3NreS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvY3NreS9LY29uZmlnPTE1Nz1jb25maWcgR0VORVJJQ19IV0VJR0hUXG4tLVxuYXJjaC9jc2t5L0tjb25maWctMTU5LVxuYXJjaC9jc2t5L0tjb25maWc6MTYwOmNvbmZpZyBNTVVcbmFyY2gvY3NreS9LY29uZmlnLTE2MS1cdGRlZl9ib29sIHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzNTMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXM6CgoqKk1lbW9yeSBNYW5hZ2VtZW50IFVuaXQgQ29uc2lkZXJhdGlvbnMgZm9yIENza3kqKgoKT2theSwgc28gQ3NreSBoYXMgYSBNZW1vcnkgTWFuYWdlbWVudCBVbml0IChNTVUpLCB0aGF0JiMzOTtzIGdvb2QgdG8ga25vdy4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBXaGVyZSB3b3VsZCBJIGV4cGVjdCB0byBmaW5kIHRoZSByZWxldmFudCBzZXR0aW5ncz8gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBLY29uZmlnIGZpbGVzLiBHaXZlbiB0aGF0LCBJIHNob3VsZCBsb29rIGF0IGBhcmNoL202OGsvS2NvbmZpZ2AsIGl0JiMzOTtzIG5vdCB0aGUgY29ycmVjdCBhcmNoaXRlY3R1cmUsIGJ1dCB0aGlzIGZpbGUgaXMgb2Z0ZW4gYSBnb29kIHBsYWNlIHRvIHN0YXJ0IHRvIHNlZSBob3cgTU1VIHN1cHBvcnQgaXMgZ2VuZXJhbGx5IGhhbmRsZWQgd2l0aGluIHRoZSBrZXJuZWwgYW5kIGlmIHRoYXQgaGVscHMgbWUgZGV0ZXJtaW5lIHRoZSB0eXBpY2FsIGxvY2F0aW9uLiBJIGNhbiBhZGFwdCB0aGUga25vd2xlZGdlIEkgZ2FpbiBoZXJlIHRvIHRoZSBDc2t5IGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNTVUgaXMgZXhwb3NlZCBhbmQgZW5hYmxlZCBmb3IgQ3NreSwgYW5kIHRoZSBLY29uZmlnIGZpbGVzIGFyZSB0aGUgcGxhY2UgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNTVUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL202OGsvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL202OGsvS2NvbmZpZz03OT1jb25maWcgUEdUQUJMRV9MRVZFTFNcbi0tXG5hcmNoL202OGsvS2NvbmZpZy04Mi1cbmFyY2gvbTY4ay9LY29uZmlnOjgzOmNvbmZpZyBNTVVcbmFyY2gvbTY4ay9LY29uZmlnLTg0LVx0Ym9vbCBcJiMzNDtNTVUtYmFzZWQgUGFnZWQgTWVtb3J5IE1hbmFnZW1lbnQgU3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvbTY4ay9LY29uZmlnLTg5LVxuYXJjaC9tNjhrL0tjb25maWc6OTA6Y29uZmlnIE1NVV9NT1RPUk9MQVxuYXJjaC9tNjhrL0tjb25maWctOTEtXHRkZWZfYm9vbCBNTVUgXHUwMDI2XHUwMDI2IE02OEtDTEFTU0lDXG4tLVxuYXJjaC9tNjhrL0tjb25maWctOTMtXG5hcmNoL202OGsvS2NvbmZpZzo5NDpjb25maWcgTU1VX0NPTERGSVJFXG5hcmNoL202OGsvS2NvbmZpZy05NS1cdGRlZl9ib29sIE1NVSBcdTAwMjZcdTAwMjYgQ09MREZJUkVcbi0tXG5hcmNoL202OGsvS2NvbmZpZy05Ny1cbmFyY2gvbTY4ay9LY29uZmlnOjk4OmNvbmZpZyBNTVVfU1VOM1xuYXJjaC9tNjhrL0tjb25maWctOTktXHRkZWZfYm9vbCBNTVUgXHUwMDI2XHUwMDI2IFNVTjNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA4NjgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMTM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uOiBBIE5vbW11IE1lbW9yeSBNYW5hZ2VtZW50IERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBNNjhrIGNvZGUsIGFuZCB0aGUgTU1VIGNvbmZpZ3VyYXRpb24gaXMga2V5IOKAkyBgQ09ORklHX01NVWAgaXMgdGhlIG9idmlvdXMgZmxhZywgYnV0IHdlIGNhbiYjMzk7dCBkaXJlY3RseSB1c2UgYCFNTVVgIGluIGBFbmFibGVDb25maWdzYC4gSG1tLCB0aGVyZSBkb2VzbiYjMzk7dCBzZWVtIHRvIGJlIGEgY29uZmlndXJhdGlvbiBvcHRpb24gc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciB0aGlzIGNhc2UuIEJ1dCBpdCAqaXMqIHdvcnRoIGNvbnNpZGVyaW5nIGFzIGEgZnV6emluZyB0YXJnZXQgYmVjYXVzZSBpdCYjMzk7cyBoYW5kbGluZyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50ICpzcGVjaWZpY2FsbHkqIGZvciBub21tdSBzeXN0ZW1zLgoKTm93LCBhIHBvdGVudGlhbCByb2FkYmxvY2s6IGlmIGl0JiMzOTtzIG5vbW11LCBjYW4gaXQgZXZlbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVU/IFllcywgUUVNVSBzdXBwb3J0cyBub21tdSB0YXJnZXRzLCBmb3IgaW5zdGFuY2UgdXNpbmcgdGhlIGBxZW11LXN5c3RlbS1hcm0gLU0gdmVyc2F0aWxlcGJgIGNvbmZpZ3VyYXRpb24gd2l0aCBhIG5vbW11IGtlcm5lbCwgb3IgYWxzbyBgcWVtdS1zeXN0ZW0tcmlzY3Y2NGAgd2l0aCBhIG5vbW11IGtlcm5lbC4gU28geWVzLCBpdCYjMzk7cyByZWFjaGFibGUuCgpJcyB0aGlzIHBhdGNoIGZ1bmN0aW9uYWwsIHRob3VnaD8gTG9va2luZyBhdCB0aGUgY29kZSBhZ2FpbiwgSSBzZWUgaXQmIzM5O3MgZml4aW5nIGFuIGVycm9yIHBhdGggaW4gYGRvX21tYXBgLiBTcGVjaWZpY2FsbHksIHRoaXMgcGF0Y2ggbW9kaWZpZXMgYGRvX21tYXBgIGluIGBtbS9ub21tdS5jYCwgd2hpY2ggaXMgdGhlIG1haW4gbW1hcCBpbXBsZW1lbnRhdGlvbiBpbiBub21tdSBzeXN0ZW1zLCBzbyBpdCYjMzk7cyBhIHZlcnkgaG90LXBhdGggZnVuY3Rpb24uIFRoZSBwYXRjaCBtb2RpZmllcyBgZG9fbW1hcGAgYW5kIGl0cyBlcnJvciBoYW5kbGluZy4gSSB3YW50IHRvIGNoZWNrIGBtbS9ub21tdS5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIG90aGVyIGZ1bmN0aW9ucy4KCkxldCYjMzk7cyBjaGVjayB0aGUgcGF0Y2g6IEl0IGxvb2tzIGxpa2UgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIGBhZGRfbm9tbXVfcmVnaW9uKHJlZ2lvbilgIHJpZ2h0IGFmdGVyIHRoZSBjYWxsIHRvIGBkb19tbWFwX3ByaXZhdGVgLCBidXQgbm93IGl0JiMzOTtzIG1vdmVkICphZnRlciogYSBgdm1hX2l0ZXJfcHJlYWxsb2NgIGNhbGwuIFRoaXMgc3VnZ2VzdHMgYSBjaGFuZ2UgaW4gaG93IG1lbW9yeSByZWdpb25zIGFyZSBtYW5hZ2VkIGluIHRoZSBub21tdSBlbnZpcm9ubWVudCwgcGFydGljdWxhcmx5IHdoZW4gaGFuZGxpbmcgZXJyb3JzLiBUaGUgY29kZSBub3cgaGFuZGxlcyB0aGUgZXJyb3JzIHdpdGggYHZtYV9pdGVyX2ZyZWUoJmFtcDt2bWkpO2AsIGBmcHV0KHZtYS0mZ3Q7dm1fZmlsZSk7YCBhbmQgYHZtX2FyZWFfZnJlZSh2bWEpO2AuIElmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgcHJlYWxsb2NhdGlvbiwgaXQgbm93IGZyZWVzIHRoZSByZWdpb24gYW5kIGNhbGxzIGB2bWFfY2xvc2Uodm1hKTtgLCBhbmQgdGhlbiBjYWxscyBga21lbV9jYWNoZV9mcmVlKHZtX3JlZ2lvbl9qYXIsIHJlZ2lvbik7YC4gVGhlIHBhdGNoIGFkZHMgc29tZSBuZXcgZXJyb3JzLgoKVGhpcyBmdW5jdGlvbiBgZG9fbW1hcGAgaXRzZWxmIHNlZW1zIHRvIGJlIHRoZSBmb2N1cyBoZXJlLgoKU28sIGBkb19tbWFwYCBpcyB0aGUgcHJpbWFyeSB0YXJnZXQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnVuc2lnbmVkIGxvbmcgZG9fbW1hcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL25vbW11LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vbm9tbXUuYz05MTQ9c3RhdGljIGludCBkb19tbWFwX3ByaXZhdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxubW0vbm9tbXUuYy0xMDExLSAqL1xubW0vbm9tbXUuYzoxMDEyOnVuc2lnbmVkIGxvbmcgZG9fbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSxcbm1tL25vbW11LmMtMTAxMy1cdFx0XHR1bnNpZ25lZCBsb25nIGFkZHIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNjU1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogODUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYXNvbmluZyB0aHJvdWdoIHRoZSBQYXRjaCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBzZWUgdGhhdCB0aGUgb25seSBtb2RpZmllZCBmdW5jdGlvbiBpcyBgZG9fbW1hcGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbmNsdWRlIGl0IGluIGBGb2N1c1N5bWJvbHNgLCBidXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgYGRvX21tYXBgIGlzIGNhbGxlZCBmb3IgZXZlcnkgYG1tYXBgIHN5c2NhbGwuIFRoYXQgbWFrZXMgaXQgYSBzZXJpb3VzIGhvdC1wYXRoIGZ1bmN0aW9uLCBhbmQgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgc2F5cyB0byBhdm9pZCB0aG9zZSB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIEkgbmVlZCB0byBmb2N1cyBvbiB0aGUgZXJyb3IgcGF0aHMsIG5vdCB0aGUgY29tbW9uIGV4ZWN1dGlvbi4KClNvLCBpZiBJIGRvbiYjMzk7dCBzcGVjaWZ5IGBkb19tbWFwYCwgd2hhdCAqZG8qIEkgc3BlY2lmeT8gSG1tLCBtYXliZSBgZG9fbW1hcF9wcml2YXRlYD8gTm8sIHRoYXQmIzM5O3Mgbm90IGJlZW4gbW9kaWZpZWQuIEJ1dCB0aGUgZXJyb3IgcGF0aCBJICp3YW50KiB0byB0ZXN0IGlzIHRyaWdnZXJlZCB3aGVuIGB2bWFfaXRlcl9wcmVhbGxvY2AgZmFpbHMuIFRoYXQmIzM5O3MgYW4gZXJyb3IgaW5qZWN0aW9uIHNjZW5hcmlvLCBhbmQgdGhhdCYjMzk7cyB0aGUga2V5LiBTaG91bGQgSSBsaXN0IGFueSBvdGhlciBmdW5jdGlvbj8gTm9wZS4KCkxldCBtZSBnbyBiYWNrIGFuZCByZS1yZWFkIHRoZSBwcm9tcHQmIzM5O3MgY3JpdGVyaWEgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBEb2N1bWVudGF0aW9uLCBsb2dnaW5nLCBkZWNvcmF0aXZlIGNoYW5nZXMsIGNvbnN0YW50cyB3aXRob3V0IGZ1bmN0aW9uYWwgaW1wYWN0LCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhz4oCmIG5vbmUgb2YgdGhvc2UgYXBwbHkgaGVyZS4gSSYjMzk7bSBmb2N1c2luZyBvbiBhIHNwZWNpZmljIGVycm9yIGhhbmRsaW5nIGJyYW5jaCwgbm90IHRoZSBwcmltYXJ5IG1tYXAgcGF0aC4KCk5vdywgdGhlIHF1ZXN0aW9uIGlzIGFib3V0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXMgdGhpcyBjb2RlIHJlYWNoYWJsZSBpbiBRRU1VPyBZZXMsIGRlZmluaXRlbHkuIFdlIGNhbiBlbXVsYXRlIG5vbW11IHN5c3RlbXMgd2l0aCBRRU1VIChBUk0gQ29ydGV4LU0sIFJJU0MtViBub21tdSksIGFuZCBTeXprYWxsZXIgZXZlbiBzdXBwb3J0cyB0ZXN0aW5nIHRoZXNlIHR5cGVzIG9mIGtlcm5lbHMuCgpOZXh0LCBkbyBJIG5lZWQgYW55IHNwZWNpZmljIGBDT05GSUdfYCBvcHRpb25zPyBXZWxsLCBjbGVhcmx5LCBgQ09ORklHX01NVWAgbmVlZHMgdG8gYmUgZGlzYWJsZWQuIEJ1dCBJIGNhbiYjMzk7dCBzcGVjaWZ5IGAhQ09ORklHX01NVWAgaW4gYEVuYWJsZUNvbmZpZ3NgLiBJcyB0aGVyZSBhbnkgb3RoZXIgY29uZmlnPyBJJiMzOTtsbCBjaGVjayBgbW0vS2NvbmZpZ2AsIGFuZCB5ZXMsIHRoZXJlIGlzIGBDT05GSUdfTk9NTVVfSU5JVElBTF9UUklNX0VYQ0VTU2AuIEJ1dCB0aGF0JiMzOTtzIG5vdCByZXF1aXJlZCB0byB0ZXN0IHRoaXMuIFNvIGBFbmFibGVDb25maWdzYCBzaG91bGQgYmUgZW1wdHkuCgpMZXQgbWUgZG91YmxlLWNoZWNrIG9uY2UgbW9yZToganVzdCBgZG9fbW1hcGAgaW4gYG1tL25vbW11LmNgPyBZZXMsIHRoYXQgaXMgY29ycmVjdC4KCk9rYXksIGxldCYjMzk7cyBjaXJjbGUgYmFjayB0byB0aGUgaG90LXBhdGggY29uY2Vybi4gYGRvX21tYXBgICppcyogdmVyeSBmcmVxdWVudCwgYSBnZW5lcmljIGhvdC1wYXRoLiBGdXp6aW5nIGl0IGRpcmVjdGx5IHdvdWxkIGxpa2VseSBqdXN0IGdlbmVyYXRlIGxvdHMgb2Ygc3RhbmRhcmQgYG1tYXBgIGNhbGxzIHRoYXQgU3l6a2FsbGVyIGlzIGFscmVhZHkgZ29vZCBhdCwgYW5kIEkmIzM5O2QgbWlzcyB0aGUgZXJyb3IgY29uZGl0aW9ucy4gVGhlIHByb21wdCBzYXlzLCAmIzM0O0F2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLiYjMzQ7IExlYXZpbmcgYEZvY3VzU3ltYm9sc2AgZW1wdHkgc2VlbXMgbGlrZSB0aGUgcmlnaHQgY2FsbCBoZXJlLgoKU28sIGxldCYjMzk7cyB3cml0ZSBvdXQgdGhlIGxvZ2ljOiBUaGUgcGF0Y2ggZml4ZXMgYW4gZXJyb3IgaW4gYGRvX21tYXBgIGZvciBub21tdSBhcmNoaXRlY3R1cmVzLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgYSBmYWlsdXJlIGluIGB2bWFfaXRlcl9wcmVhbGxvY2AuIEl0JiMzOTtzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGFuZCBgZG9fbW1hcGAgaXMgYSBob3QtcGF0aCBmdW5jdGlvbi4gIEZvY3VzU3ltYm9scyBzaG91bGQgc3RheSBlbXB0eS4gTm8gc3BlY2lmaWMgY29uZmlncyBuZWVkIHRvIGJlIGVuYWJsZWQgYmVjYXVzZSBpdCBydW5zIHdoZW4gYENPTkZJR19NTVVgIGlzIGRpc2FibGVkLiBUaGF0JiMzOTtzIHRoZSBjb3JyZWN0IHdheSB0byB0aGluayBhYm91dCB0aGlzLiBMZXQgbWUgdmVyaWZ5IGFnYWluIHRoYXQgb25seSBgZG9fbW1hcGAgaXMgY2hhbmdlZC4uLiBZZXAsIG9ubHkgYGRvX21tYXBgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlcnJvcl92bWFfaXRlcl9wcmVhbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL25vbW11LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vbm9tbXUuYz0xMDEyPXVuc2lnbmVkIGxvbmcgZG9fbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5tbS9ub21tdS5jLTEyMDAtXHRpZiAodm1hX2l0ZXJfcHJlYWxsb2MoXHUwMDI2dm1pLCB2bWEpKVxubW0vbm9tbXUuYzoxMjAxOlx0XHRnb3RvIGVycm9yX3ZtYV9pdGVyX3ByZWFsbG9jO1xubW0vbm9tbXUuYy0xMjAyLVxuLS1cbm1tL25vbW11LmMtMTI0Ni1cbm1tL25vbW11LmM6MTI0NzplcnJvcl92bWFfaXRlcl9wcmVhbGxvYzpcbm1tL25vbW11LmMtMTI0OC1cdHByX3dhcm4oXCYjMzQ7QWxsb2NhdGlvbiBvZiB2bWEgaXRlcmF0b3IgZm9yIHByb2Nlc3MgJWQgZmFpbGVkXFxuXCYjMzQ7LCBjdXJyZW50LVx1MDAzZXBpZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDA0CgkJCQkJCQlvdXRwdXQ6IDE0OAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGV4cHJlc3NlZCBhcyB0aG91Z2ggdGhlc2Ugd2VyZSBteSBvd24gdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aGUgY29yZSByZXF1aXJlbWVudCBoZXJlIGlzIHN0cmFpZ2h0Zm9yd2FyZDogaXQmIzM5O3MgYWxsIGFib3V0IGBkb19tbWFwYC4gR290IGl0LiBMZXQmIzM5O3Mgbm90IG92ZXJjb21wbGljYXRlIHRoaW5ncy4KCk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBzY2FuIGZvciBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIG9yIGNvbmRpdGlvbmFsIGJyYW5jaGVzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoZSBmbG93LiBOb3BlLCBub3RoaW5nIGVsc2UuIEp1c3QgYSBjbGVhbiwgZGlyZWN0IHBhdGggZm9yd2FyZC4KClRoZXJlZm9yZSwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4gRG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiBgZG9fbW1hcGAgaW4gYG1tL25vbW11LmNgIHRvIGZpeCBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBvciB1c2UtYWZ0ZXItZnJlZSB3aGVuIGB2bWFfaXRlcl9wcmVhbGxvY2AgZmFpbHMuIFRoaXMgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBmb3Igbm9tbXUgYXJjaGl0ZWN0dXJlcywgd2hpY2ggY2FuIGJlIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBgZG9fbW1hcGAgaXMgYSBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9uLCBzbyBpdCBpcyBvbWl0dGVkIGZyb20gRm9jdXNTeW1ib2xzLiBUaGUgY29kZSBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfTU1VYCBpcyBkaXNhYmxlZCwgc28gbm8gc3BlY2lmaWMgY29uZmlncyBuZWVkIHRvIGJlIGV4cGxpY2l0bHkgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgYGRvX21tYXBgIGluIGBtbS9ub21tdS5jYCB0byBmaXggYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgdXNlLWFmdGVyLWZyZWUgd2hlbiBgdm1hX2l0ZXJfcHJlYWxsb2NgIGZhaWxzLiBUaGlzIGlzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgZm9yIG5vbW11IGFyY2hpdGVjdHVyZXMsIHdoaWNoIGNhbiBiZSB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gYGRvX21tYXBgIGlzIGEgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbiwgc28gaXQgaXMgb21pdHRlZCBmcm9tIEZvY3VzU3ltYm9scy4gVGhlIGNvZGUgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX01NVWAgaXMgZGlzYWJsZWQsIHNvIG5vIHNwZWNpZmljIGNvbmZpZ3MgbmVlZCB0byBiZSBleHBsaWNpdGx5IGVuYWJsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNTowOC4wNzQ1NTI4MDRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTI4Njc1MDI3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgYGRvX21tYXBgIGluIGBtbS9ub21tdS5jYCB0byBmaXggYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgdXNlLWFmdGVyLWZyZWUgd2hlbiBgdm1hX2l0ZXJfcHJlYWxsb2NgIGZhaWxzLiBUaGlzIGlzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgZm9yIG5vbW11IGFyY2hpdGVjdHVyZXMsIHdoaWNoIGNhbiBiZSB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gYGRvX21tYXBgIGlzIGEgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbiwgc28gaXQgaXMgb21pdHRlZCBmcm9tIEZvY3VzU3ltYm9scy4gVGhlIGNvZGUgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX01NVWAgaXMgZGlzYWJsZWQsIHNvIG5vIHNwZWNpZmljIGNvbmZpZ3MgbmVlZCB0byBiZSBleHBsaWNpdGx5IGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI1OjA4LjA3NDU1Njc5NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQyNDU0NTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjEzNTA5ODYzOWQzYTE4ZjEzOWYxOTk4ZWNlZjRiZmI1OTc3ZWFlNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCA4IDIxOjI1OjA2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL25vbW11LmMgYi9tbS9ub21tdS5jXFxuaW5kZXggODE1ZWJlZmRkZmFlZjMuLjg1MmVjOWJkMDUwNTkyIDEwMDY0NFxcbi0tLSBhL21tL25vbW11LmNcXG4rKysgYi9tbS9ub21tdS5jXFxuQEAgLTExODEsNyArMTE4MSw2IEBAIHVuc2lnbmVkIGxvbmcgZG9fbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4gXFx0XFx0cmV0ID0gZG9fbW1hcF9wcml2YXRlKHZtYSwgcmVnaW9uLCBsZW4sIGNhcGFiaWxpdGllcyk7XFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiBcXHRcXHRnb3RvIGVycm9yX2p1c3RfZnJlZTtcXG4tXFx0YWRkX25vbW11X3JlZ2lvbihyZWdpb24pO1xcbiBcXG4gXFx0LyogY2xlYXIgYW5vbnltb3VzIG1hcHBpbmdzIHRoYXQgZG9uJ3QgYXNrIGZvciB1bmluaXRpYWxpemVkIGRhdGEgKi9cXG4gXFx0aWYgKCF2bWEtXFx1MDAzZXZtX2ZpbGUgXFx1MDAyNlxcdTAwMjZcXG5AQCAtMTE5OSw3ICsxMTk4LDkgQEAgdW5zaWduZWQgbG9uZyBkb19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLFxcbiBcXHRCVUdfT04oIXZtYS1cXHUwMDNldm1fcmVnaW9uKTtcXG4gXFx0dm1hX2l0ZXJfY29uZmlnKFxcdTAwMjZ2bWksIHZtYS1cXHUwMDNldm1fc3RhcnQsIHZtYS1cXHUwMDNldm1fZW5kKTtcXG4gXFx0aWYgKHZtYV9pdGVyX3ByZWFsbG9jKFxcdTAwMjZ2bWksIHZtYSkpXFxuLVxcdFxcdGdvdG8gZXJyb3JfanVzdF9mcmVlO1xcbitcXHRcXHRnb3RvIGVycm9yX3ZtYV9pdGVyX3ByZWFsbG9jO1xcbitcXG4rXFx0YWRkX25vbW11X3JlZ2lvbihyZWdpb24pO1xcbiBcXG4gXFx0c2V0dXBfdm1hX3RvX21tKHZtYSwgY3VycmVudC1cXHUwMDNlbW0pO1xcbiBcXHRjdXJyZW50LVxcdTAwM2VtbS1cXHUwMDNlbWFwX2NvdW50Kys7XFxuQEAgLTEyMTgsMjIgKzEyMTksNDEgQEAgdW5zaWduZWQgbG9uZyBkb19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLFxcbiBcXHRyZXR1cm4gcmVzdWx0O1xcbiBcXG4gZXJyb3JfanVzdF9mcmVlOlxcbitcXHR2bWFfY2xvc2Uodm1hKTtcXG4rXFx0LyogaWYgdGhlIGVycm9yIHdhcyBmcm9tIHNoYXJlZCBtYXBwaW5nL2V4aXN0aW5nIHJlZ2lvbiwgZG9uJ3QgZnJlZSB0aGUgcmVnaW9uLlxcbitcXHQgKiB0aGlzIGhhcyB0byBiZSBiZWZvcmUgcmVsZWFzaW5nIHNlbWFwaG9yZS5cXG4rXFx0ICovXFxuK1xcdGlmIChyZWdpb24tXFx1MDAzZXZtX3VzYWdlID09IDEpIHtcXG4rXFx0XFx0aWYgKHJlZ2lvbi1cXHUwMDNldm1fZmlsZSlcXG4rXFx0XFx0XFx0ZnB1dChyZWdpb24tXFx1MDAzZXZtX2ZpbGUpO1xcbitcXHRcXHRrbWVtX2NhY2hlX2ZyZWUodm1fcmVnaW9uX2phciwgcmVnaW9uKTtcXG4rXFxuK1xcdH0gZWxzZVxcbitcXHRcXHRyZWdpb24tXFx1MDAzZXZtX3VzYWdlLS07XFxuK1xcbiBcXHR1cF93cml0ZShcXHUwMDI2bm9tbXVfcmVnaW9uX3NlbSk7XFxuLWVycm9yOlxcbiBcXHR2bWFfaXRlcl9mcmVlKFxcdTAwMjZ2bWkpO1xcbi1cXHRpZiAocmVnaW9uLVxcdTAwM2V2bV9maWxlKVxcbi1cXHRcXHRmcHV0KHJlZ2lvbi1cXHUwMDNldm1fZmlsZSk7XFxuLVxcdGttZW1fY2FjaGVfZnJlZSh2bV9yZWdpb25famFyLCByZWdpb24pO1xcbitcXG4gXFx0aWYgKHZtYS1cXHUwMDNldm1fZmlsZSlcXG4gXFx0XFx0ZnB1dCh2bWEtXFx1MDAzZXZtX2ZpbGUpO1xcbiBcXHR2bV9hcmVhX2ZyZWUodm1hKTtcXG4gXFx0cmV0dXJuIHJldDtcXG4gXFxuIHNoYXJpbmdfdmlvbGF0aW9uOlxcbi1cXHR1cF93cml0ZShcXHUwMDI2bm9tbXVfcmVnaW9uX3NlbSk7XFxuIFxcdHByX3dhcm4oXFxcIkF0dGVtcHQgdG8gc2hhcmUgbWlzbWF0Y2hlZCBtYXBwaW5nc1xcXFxuXFxcIik7XFxuIFxcdHJldCA9IC1FSU5WQUw7XFxuLVxcdGdvdG8gZXJyb3I7XFxuK1xcdGdvdG8gZXJyb3JfanVzdF9mcmVlO1xcbitcXG4rZXJyb3Jfdm1hX2l0ZXJfcHJlYWxsb2M6XFxuK1xcdHByX3dhcm4oXFxcIkFsbG9jYXRpb24gb2Ygdm1hIGl0ZXJhdG9yIGZvciBwcm9jZXNzICVkIGZhaWxlZFxcXFxuXFxcIiwgY3VycmVudC1cXHUwMDNlcGlkKTtcXG4rXFx0c2hvd19tZW0oKTtcXG4rXFx0cmV0ID0gLUVOT01FTTtcXG4rXFxuK1xcdC8qIGluIGNhc2UgdGhhdCB0aGUgcmVnaW9uIGlzIGFsbG9jYXRlZCB2aWEgZG9fbW1hcF9wcml2YXRlKCkgKi9cXG4rXFx0aWYgKChyZWdpb24tXFx1MDAzZXZtX3VzYWdlID09IDEpIFxcdTAwMjZcXHUwMDI2IChyZWdpb24tXFx1MDAzZXZtX2ZsYWdzIFxcdTAwMjYgVk1fTUFQUEVEX0NPUFkpKVxcbitcXHRcXHRmcmVlX3BhZ2Vfc2VyaWVzKHJlZ2lvbi1cXHUwMDNldm1fc3RhcnQsIHJlZ2lvbi1cXHUwMDNldm1fdG9wKTtcXG4rXFxuK1xcdGdvdG8gZXJyb3JfanVzdF9mcmVlO1xcbiBcXG4gZXJyb3JfZ2V0dGluZ192bWE6XFxuIFxcdGttZW1fY2FjaGVfZnJlZSh2bV9yZWdpb25famFyLCByZWdpb24pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNTowOC42MTc2NjQ3NzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg4NzQzNjMzMDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiBgZG9fbW1hcGAgaW4gYG1tL25vbW11LmNgIHRvIGZpeCBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBvciB1c2UtYWZ0ZXItZnJlZSB3aGVuIGB2bWFfaXRlcl9wcmVhbGxvY2AgZmFpbHMuIFRoaXMgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBmb3Igbm9tbXUgYXJjaGl0ZWN0dXJlcywgd2hpY2ggY2FuIGJlIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBgZG9fbW1hcGAgaXMgYSBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9uLCBzbyBpdCBpcyBvbWl0dGVkIGZyb20gRm9jdXNTeW1ib2xzLiBUaGUgY29kZSBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfTU1VYCBpcyBkaXNhYmxlZCwgc28gbm8gc3BlY2lmaWMgY29uZmlncyBuZWVkIHRvIGJlIGV4cGxpY2l0bHkgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2MTM1MDk4NjM5ZDNhMThmMTM5ZjE5OThlY2VmNGJmYjU5NzdlYWU2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAyMToyNTowNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL25vbW11LmMgYi9tbS9ub21tdS5jXG5pbmRleCA4MTVlYmVmZGRmYWVmMy4uODUyZWM5YmQwNTA1OTIgMTAwNjQ0XG4tLS0gYS9tbS9ub21tdS5jXG4rKysgYi9tbS9ub21tdS5jXG5AQCAtMTE4MSw3ICsxMTgxLDYgQEAgdW5zaWduZWQgbG9uZyBkb19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRyZXQgPSBkb19tbWFwX3ByaXZhdGUodm1hLCByZWdpb24sIGxlbiwgY2FwYWJpbGl0aWVzKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdGdvdG8gZXJyb3JfanVzdF9mcmVlO1xuLVx0YWRkX25vbW11X3JlZ2lvbihyZWdpb24pO1xuIFxuIFx0LyogY2xlYXIgYW5vbnltb3VzIG1hcHBpbmdzIHRoYXQgZG9uJ3QgYXNrIGZvciB1bmluaXRpYWxpemVkIGRhdGEgKi9cbiBcdGlmICghdm1hLVx1MDAzZXZtX2ZpbGUgXHUwMDI2XHUwMDI2XG5AQCAtMTE5OSw3ICsxMTk4LDkgQEAgdW5zaWduZWQgbG9uZyBkb19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0QlVHX09OKCF2bWEtXHUwMDNldm1fcmVnaW9uKTtcbiBcdHZtYV9pdGVyX2NvbmZpZyhcdTAwMjZ2bWksIHZtYS1cdTAwM2V2bV9zdGFydCwgdm1hLVx1MDAzZXZtX2VuZCk7XG4gXHRpZiAodm1hX2l0ZXJfcHJlYWxsb2MoXHUwMDI2dm1pLCB2bWEpKVxuLVx0XHRnb3RvIGVycm9yX2p1c3RfZnJlZTtcbitcdFx0Z290byBlcnJvcl92bWFfaXRlcl9wcmVhbGxvYztcbitcbitcdGFkZF9ub21tdV9yZWdpb24ocmVnaW9uKTtcbiBcbiBcdHNldHVwX3ZtYV90b19tbSh2bWEsIGN1cnJlbnQtXHUwMDNlbW0pO1xuIFx0Y3VycmVudC1cdTAwM2VtbS1cdTAwM2VtYXBfY291bnQrKztcbkBAIC0xMjE4LDIyICsxMjE5LDQxIEBAIHVuc2lnbmVkIGxvbmcgZG9fbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcdHJldHVybiByZXN1bHQ7XG4gXG4gZXJyb3JfanVzdF9mcmVlOlxuK1x0dm1hX2Nsb3NlKHZtYSk7XG4rXHQvKiBpZiB0aGUgZXJyb3Igd2FzIGZyb20gc2hhcmVkIG1hcHBpbmcvZXhpc3RpbmcgcmVnaW9uLCBkb24ndCBmcmVlIHRoZSByZWdpb24uXG4rXHQgKiB0aGlzIGhhcyB0byBiZSBiZWZvcmUgcmVsZWFzaW5nIHNlbWFwaG9yZS5cbitcdCAqL1xuK1x0aWYgKHJlZ2lvbi1cdTAwM2V2bV91c2FnZSA9PSAxKSB7XG4rXHRcdGlmIChyZWdpb24tXHUwMDNldm1fZmlsZSlcbitcdFx0XHRmcHV0KHJlZ2lvbi1cdTAwM2V2bV9maWxlKTtcbitcdFx0a21lbV9jYWNoZV9mcmVlKHZtX3JlZ2lvbl9qYXIsIHJlZ2lvbik7XG4rXG4rXHR9IGVsc2VcbitcdFx0cmVnaW9uLVx1MDAzZXZtX3VzYWdlLS07XG4rXG4gXHR1cF93cml0ZShcdTAwMjZub21tdV9yZWdpb25fc2VtKTtcbi1lcnJvcjpcbiBcdHZtYV9pdGVyX2ZyZWUoXHUwMDI2dm1pKTtcbi1cdGlmIChyZWdpb24tXHUwMDNldm1fZmlsZSlcbi1cdFx0ZnB1dChyZWdpb24tXHUwMDNldm1fZmlsZSk7XG4tXHRrbWVtX2NhY2hlX2ZyZWUodm1fcmVnaW9uX2phciwgcmVnaW9uKTtcbitcbiBcdGlmICh2bWEtXHUwMDNldm1fZmlsZSlcbiBcdFx0ZnB1dCh2bWEtXHUwMDNldm1fZmlsZSk7XG4gXHR2bV9hcmVhX2ZyZWUodm1hKTtcbiBcdHJldHVybiByZXQ7XG4gXG4gc2hhcmluZ192aW9sYXRpb246XG4tXHR1cF93cml0ZShcdTAwMjZub21tdV9yZWdpb25fc2VtKTtcbiBcdHByX3dhcm4oXCJBdHRlbXB0IHRvIHNoYXJlIG1pc21hdGNoZWQgbWFwcGluZ3NcXG5cIik7XG4gXHRyZXQgPSAtRUlOVkFMO1xuLVx0Z290byBlcnJvcjtcbitcdGdvdG8gZXJyb3JfanVzdF9mcmVlO1xuK1xuK2Vycm9yX3ZtYV9pdGVyX3ByZWFsbG9jOlxuK1x0cHJfd2FybihcIkFsbG9jYXRpb24gb2Ygdm1hIGl0ZXJhdG9yIGZvciBwcm9jZXNzICVkIGZhaWxlZFxcblwiLCBjdXJyZW50LVx1MDAzZXBpZCk7XG4rXHRzaG93X21lbSgpO1xuK1x0cmV0ID0gLUVOT01FTTtcbitcbitcdC8qIGluIGNhc2UgdGhhdCB0aGUgcmVnaW9uIGlzIGFsbG9jYXRlZCB2aWEgZG9fbW1hcF9wcml2YXRlKCkgKi9cbitcdGlmICgocmVnaW9uLVx1MDAzZXZtX3VzYWdlID09IDEpIFx1MDAyNlx1MDAyNiAocmVnaW9uLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9NQVBQRURfQ09QWSkpXG4rXHRcdGZyZWVfcGFnZV9zZXJpZXMocmVnaW9uLVx1MDAzZXZtX3N0YXJ0LCByZWdpb24tXHUwMDNldm1fdG9wKTtcbitcbitcdGdvdG8gZXJyb3JfanVzdF9mcmVlO1xuIFxuIGVycm9yX2dldHRpbmdfdm1hOlxuIFx0a21lbV9jYWNoZV9mcmVlKHZtX3JlZ2lvbl9qYXIsIHJlZ2lvbik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNTowOC42MTc2NjYxMjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODYzMjc1MzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5vbW11IFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG1tL25vbW11LmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBkb19tbWFwYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCByZWFkIHN1Z2dlc3RzIGl0J3MgYWRkcmVzc2luZyBhbiBlcnJvciBoYW5kbGluZyBwYXRoIGluIHRoYXQgZnVuY3Rpb24sIHByb2JhYmx5IHJlbGF0ZWQgdG8gbWVtb3J5IG1hbmFnZW1lbnQgd2l0aCBgbm9tbXVfcmVnaW9uYC4gTG9va3MgbGlrZSBhIHBvdGVudGlhbCBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlLCB0aG9zZSBhcmUgYWx3YXlzIGZ1bi5cblxuVGhleSd2ZSBtb3ZlZCB0aGUgYGFkZF9ub21tdV9yZWdpb24ocmVnaW9uKWAgY2FsbCBmdXJ0aGVyIGRvd24sIGFmdGVyIGB2bWFfaXRlcl9wcmVhbGxvY2AsIGFuZCBhZGRlZCBhbiBgZXJyb3Jfdm1hX2l0ZXJfcHJlYWxsb2NgIGxhYmVsIGFuZCBtb2RpZmllZCBgZXJyb3JfanVzdF9mcmVlYC4gVGhhdCBzZXF1ZW5jZSBtYWtlcyBtZSB0aGluayB0aGV5J3JlIHRyeWluZyB0byBlbnN1cmUgdGhlIGFsbG9jYXRpb24gaGFwcGVucyBiZWZvcmUgc29tZSBwb3RlbnRpYWxseSBmYWlsaW5nIHByZS1hbGxvY2F0aW9uIHN0ZXAuIFNtYXJ0LCBsZXNzIGNoYW5jZSBvZiByZXNvdXJjZSBsZWFrcyB0aGF0IHdheS5cblxuTm93LCB3YWl0IGEgc2Vjb25kLiBgbW0vbm9tbXUuY2AuLi4gdGhhdCdzIG9ubHkgY29tcGlsZWQgaWYgYENPTkZJR19NTVVgIGlzICpub3QqIHNldC4gVGhhdCdzIGEgcmVkIGZsYWcuIExldCBtZSBxdWlja2x5IGNoZWNrIHRoZSBjb25maWcgc3BhY2UgdG8gc2VlIGhvdyBjb21tb24gdGhhdCBpcy4gUmlnaHQsIG1vc3QgYXJjaGl0ZWN0dXJlcyAqZG8qIGhhdmUgYW4gTU1VLiBTbywgd2hvJ3MgaGl0dGluZyB0aGlzPyBTeXprYWxsZXIsIG1heWJlPyBJIGtub3cgdGhleSB0ZXN0IGFsbCBraW5kcyBvZiBvYnNjdXJlIGNvbmZpZ3VyYXRpb25zLiBPciBtYXliZSBzb21lIGFyY2hpdGVjdHVyZXMgY2FuIGJlIGNvbXBpbGVkIHdpdGhvdXQgYW4gTU1VLCBldmVuIGlmIHRoZXkgdXN1YWxseSBoYXZlIG9uZT8gTmVlZCB0byBsb29rIGludG8gdGhhdC4gVGltZSB0byBjaGVjayB0aGUgc291cmNlIHRyZWUsIHNlZSB3aGljaCBhcmNoaXRlY3R1cmVzLCBpZiBhbnksIHN0aWxsIGNvbXBpbGUgYG1tL25vbW11LmNgLiBHb3R0YSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoaXMgY2hhbmdlIHRvIGZ1bGx5IGdyYXNwIGl0cyBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0ODEsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNToxMy40ODA5NDMwOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjY5NDE5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfTU1VXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL01ha2VmaWxlPTM2PW1tdS15XFx0XFx0XFx0Oj0gbm9tbXUub1xcbm1tL01ha2VmaWxlOjM3Om1tdS0kKENPTkZJR19NTVUpXFx0Oj0gaGlnaG1lbS5vIG1lbW9yeS5vIG1pbmNvcmUubyBcXFxcXFxubW0vTWFrZWZpbGUtMzgtXFx0XFx0XFx0ICAgbWxvY2subyBtbWFwLm8gbW11X2dhdGhlci5vIG1wcm90ZWN0Lm8gbXJlbWFwLm8gXFxcXFxcbi0tXFxubW0vTWFrZWZpbGU9NDM9aWZkZWYgQ09ORklHX0NST1NTX01FTU9SWV9BVFRBQ0hcXG5tbS9NYWtlZmlsZTo0NDptbXUtJChDT05GSUdfTU1VKVxcdCs9IHByb2Nlc3Nfdm1fYWNjZXNzLm9cXG5tbS9NYWtlZmlsZS00NS1lbmRpZlxcbi0tXFxubW0vTWFrZWZpbGU9NDc9aWZkZWYgQ09ORklHXzY0QklUXFxubW0vTWFrZWZpbGU6NDg6bW11LSQoQ09ORklHX01NVSlcXHQrPSBtc2VhbC5vXFxubW0vTWFrZWZpbGUtNDktZW5kaWZcXG4tLVxcbm1tL01ha2VmaWxlPTcyPW9iai15ICs9IHNsdWIub1xcbm1tL01ha2VmaWxlLTczLVxcbm1tL01ha2VmaWxlOjc0OmlmZGVmIENPTkZJR19NTVVcXG5tbS9NYWtlZmlsZS03NS1cXHRvYmotJChDT05GSUdfQURWSVNFX1NZU0NBTExTKVxcdCs9IG1hZHZpc2Uub1xcbi0tXFxubW0vTWFrZWZpbGU9ODg9b2JqLSQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKSArPSBzcGFyc2Utdm1lbW1hcC5vXFxubW0vTWFrZWZpbGU6ODk6b2JqLSQoQ09ORklHX01NVV9OT1RJRklFUikgKz0gbW11X25vdGlmaWVyLm9cXG5tbS9NYWtlZmlsZS05MC1vYmotJChDT05GSUdfS1NNKSArPSBrc20ub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNToxMy41Mzc2NDgxNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MzgzNzEwOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uc2lkZXJpbmcgdGhlIFZpYWJpbGl0eSBvZiBUZXN0aW5nIGBtbS9ub21tdS5jYCBpbiBTeXprYWxsZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgbW0vbm9tbXUuY2AsIHdoaWNoLCBhcyB0aGUgbmFtZSBpbXBsaWVzLCBpcyBvbmx5IGNvbXBpbGVkIHdoZW4gYENPTkZJR19NTVVgIGlzICpub3QqIHNldC4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIHdlIHJlYWxpc3RpY2FsbHkgdGVzdCB0aGlzIHNjZW5hcmlvIHdpdGhpbiB0aGUgU3l6a2FsbGVyIGZyYW1ld29yaz8gTXkgZ3V0IHJlYWN0aW9uIGlzIHRoYXQgU3l6a2FsbGVyIHVzdWFsbHkgdGFyZ2V0cyBhcmNoaXRlY3R1cmVzIGxpa2UgeDg2XzY0LCBhcm02NCwgYW5kIHJpc2N2NjQsIGFsbCBvZiB3aGljaCB0eXBpY2FsbHkgcmVseSBvbiBhIE1lbW9yeSBNYW5hZ2VtZW50IFVuaXQuXG5cbkJ1dCBob2xkIG9uLCBpc24ndCBpdCB0ZWNobmljYWxseSBwb3NzaWJsZSB0byBydW4gYSBcIm5vbW11XCIga2VybmVsIG9uLCBzYXksIEFSTSBvciBSSVNDLVY/IFllcywgYnV0IHRoYXQncyBhICp2ZXJ5KiBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbiwgYW5kIFN5emthbGxlciwgaW4gaXRzIGRlZmF1bHQgb3BlcmF0aW9uLCBhc3N1bWVzIE1NVS1lbmFibGVkIGVudmlyb25tZW50cy4gVGhlIGNoYWxsZW5nZSBpcyBlbmFibGluZyBgIUNPTkZJR19NTVVgIOKAkyBlc3NlbnRpYWxseSBkaXNhYmxpbmcgdGhlIE1NVSwgd2hpY2ggaXMgYSBwcmV0dHkgZnVuZGFtZW50YWwgY29uZmlndXJhdGlvbiBvcHRpb24uXG5cbk5vdywgbGV0IG1lIHJlLXJlYWQgdGhpcyBpbnN0cnVjdGlvbiBjYXJlZnVsbHk6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogLi4uIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiIEhtbS4uLiBpcyBgQ09ORklHX01NVT1uYCB0cnVseSBcImltcG9zc2libGUgdG8gcmVhY2hcIj8gTm8sIHRoYXQncyBub3QgcmlnaHQuIFdlICpjb3VsZCogY29tcGlsZSBhIGtlcm5lbCB3aXRoIHRoZSBub21tdSBjb25maWd1cmF0aW9uIGFuZCB0aGVuIHJ1biBpdCBpbnNpZGUgUUVNVS4gVGhhdCdzIGEgdmFsaWQgYXBwcm9hY2ggZm9yIHRlc3RpbmcuXG5cblRoZSBwb3RlbnRpYWwgaHVyZGxlLCBvZiBjb3Vyc2UsIGlzIHRoYXQgYENPTkZJR19NTVVgIGlzIG5vdCBzb21ldGhpbmcgZWFzaWx5IGRpc2FibGVkIGluIHN0YW5kYXJkIHg4Nl82NCBkZWZjb25maWdzLiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB3aGV0aGVyIG9yIG5vdCBgQ09ORklHX01NVWAgY2FuIGFjdHVhbGx5IGJlIGRpc2FibGVkIG9uIGFuIHg4NiBwbGF0Zm9ybSBpbiBhIHByYWN0aWNhbCBzZW5zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM2OSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNToxOS4yNzYwMjEwNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzY0ODc4NjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNTVVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9LY29uZmlnPTM1Mj1jb25maWcgU1RBQ0tUUkFDRV9TVVBQT1JUXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTM1NC1cXG5hcmNoL3g4Ni9LY29uZmlnOjM1NTpjb25maWcgTU1VXFxuYXJjaC94ODYvS2NvbmZpZy0zNTYtXFx0ZGVmX2Jvb2wgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNToyMC42NDA5MDgwNjdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQ2MzEwNjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIE1lbW9yeSBNYW5hZ2VtZW50IFVuaXQgKE1NVSkgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGxldCBtZSBxdWlja2x5IHJ1biB0aHJvdWdoIHRoaXMuIE9uIHg4NiwgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBNTVUgKGBjb25maWcgTU1VYCkgaXMgaGFyZGNvZGVkIGFzIGBkZWZfYm9vbCB5YC4gTWVhbmluZywgaXQncyBlbmFibGVkIGJ5IGRlZmF1bHQgYW5kLCBwcmFjdGljYWxseSwgKmNhbm5vdCogYmUgZGlzYWJsZWQuIEZpbmUuIFRoYXQncyB4ODYsIGl0J3MgYSBrbm93biBxdWFudGl0eS4gQnV0LCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGVsc2UuIE5vdyBJIG5lZWQgdG8gc2VlIGFib3V0IEFSTS4gV2hhdCdzIHRoZSBkZWFsIHdpdGggdGhlIE1NVSBvbiBBUk0gYXJjaGl0ZWN0dXJlcz8gSXMgaXQgc2ltaWxhcmx5IGxvY2tlZCBkb3duLCBvciBpcyB0aGVyZSBtb3JlIGZsZXhpYmlsaXR5IGluIGl0cyBjb25maWd1cmF0aW9uPyBJIG5lZWQgdG8gbG9vayBpbnRvIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgdGhlIE1NVSBvbiBBUk0gYW5kIGhvdyB0aGF0IG1pZ2h0IGRpZmZlciBmcm9tIHRoZSB4ODYgY2FzZS4gV2hhdCdzIHRoZSBkZWZhdWx0IHN0YXRlLCBhbmQgd2hhdCBvcHRpb25zIGV4aXN0IChpZiBhbnkpIHRvIGNvbnRyb2wgaXRzIGJlaGF2aW9yIGR1cmluZyBjb21waWxhdGlvbiBvciBydW50aW1lPyBUaGF0J3MgdGhlIG5leHQgYXZlbnVlIGZvciBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTczLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6MjU6MjMuNzg3MjIwNTUzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MjA4NDEwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTU1VXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vS2NvbmZpZz0zMTc9bWVudSBcXFwiU3lzdGVtIFR5cGVcXFwiXFxuYXJjaC9hcm0vS2NvbmZpZy0zMTgtXFxuYXJjaC9hcm0vS2NvbmZpZzozMTk6Y29uZmlnIE1NVVxcbmFyY2gvYXJtL0tjb25maWctMzIwLVxcdGJvb2wgXFxcIk1NVS1iYXNlZCBQYWdlZCBNZW1vcnkgTWFuYWdlbWVudCBTdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNToyNC4xNjkzMTE4NDZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzEzODYzMTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeTpcblxuKipDb25zaWRlcmluZyBBcmNoaXRlY3R1cmUgU2VjdXJpdHkqKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgaGVyZS4gSSdtIGZvY3VzaW5nIG9uIHRoZSBwb3RlbnRpYWwgZm9yIGhhcmR3YXJlLWxldmVsIHZ1bG5lcmFiaWxpdGllcy4gQSBrZXkgcG9pbnQgaXMgdGhhdCB3aXRoIGEgZ2l2ZW4gYXJjaGl0ZWN0dXJlLCBsZXQncyBzYXkgQVJNIGZvciBleGFtcGxlLCB3ZSBrbm93IHRoZXJlIGFyZSB3YXlzIHRvIGRpc2FibGUgb3IgbWl0aWdhdGUgY2VydGFpbiBmZWF0dXJlcyBvciBhY2Nlc3MgcG9pbnRzLiBUaGF0J3MgYSB3ZWxsLXRyb2RkZW4gcGF0aC4gQnV0IG5vdyBJJ20gc2hpZnRpbmcgZ2VhcnMsIHRoZSBxdWVzdGlvbiB0aGF0IGlzIGNlbnRyYWwgdG8gdGhpcyBpcywgd2hhdCBpcyB0aGUgaW1wYWN0IG9mIG90aGVyIGFyY2hpdGVjdHVyZXMsIHNwZWNpZmljYWxseSBSSVNDLVYsIG9uIHRoZSBicm9hZGVyIHNlY3VyaXR5IGxhbmRzY2FwZT8gSXQncyBhIG5ld2VyIGtpZCBvbiB0aGUgYmxvY2ssIHRoZSBhdHRhY2sgdmVjdG9ycyBhcmUgbGlrZWx5IHZlcnkgZGlmZmVyZW50LiBUaGlzIHNoaWZ0IGluIHRoaW5raW5nIGlzIGNyaXRpY2FsIGJlY2F1c2UgdGhlIGV4aXN0aW5nIGNvdW50ZXJtZWFzdXJlcyBhbmQgZXN0YWJsaXNoZWQgdGhyZWF0IG1vZGVscyBtYXkgbm90IGJlIGFwcGxpY2FibGUgb3IgY29tcGxldGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBudWFuY2VzIG9mIHRoaXMgbmV3ZXIgYXJjaGl0ZWN0dXJlIHdpdGggcmVzcGVjdCB0byBzZWN1cml0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUxNSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI1OjI2Ljg4MzE3NjU1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDQ5MTIzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTU1VXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3YvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L0tjb25maWc9Mjg3PWNvbmZpZyBSSVNDVl9TQklcXG4tLVxcbmFyY2gvcmlzY3YvS2NvbmZpZy0yOTEtXFxuYXJjaC9yaXNjdi9LY29uZmlnOjI5Mjpjb25maWcgTU1VXFxuYXJjaC9yaXNjdi9LY29uZmlnLTI5My1cXHRib29sIFxcXCJNTVUtYmFzZWQgUGFnZWQgTWVtb3J5IE1hbmFnZW1lbnQgU3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6MjU6MjYuOTUzNjcwNTY4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNzM2ODQyNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUZXN0YWJpbGl0eSBvZiBgZG9fbW1hcGAgb24gUklTQy1WIHdpdGggTm8tTU1VIEtlcm5lbHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0ZXN0aW5nIHRoaXMgYGRvX21tYXBgIGZ1bmN0aW9uIG9uIFJJU0MtViwgc3BlY2lmaWNhbGx5IGluIGEgTm8tTU1VIGNvbnRleHQuIEkgc2VlIHRoYXQgaXQncyAqcG9zc2libGUqIHRvIGRpc2FibGUgTU1VIGZ1bmN0aW9uYWxpdHkgb24gUklTQy1WLiBUaGF0IGltbWVkaWF0ZWx5IG9wZW5zIHRoZSBkb29yIHRvIHVzaW5nIFFFTVUgZm9yIG5vbW11IGtlcm5lbCB0ZXN0aW5nLCB3aGljaCBpcyBncmVhdC4gU2hvdWxkIEkgZnV6eiBpdD8gQWJzb2x1dGVseSwgeWVzISBgZG9fbW1hcGAgaXMgYSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9uIGZvciB0aGVzZSBub21tdSBzeXN0ZW1zLCBtYWtpbmcgaXQgYSBjcml0aWNhbCBhcmVhIHRvIHByb2JlIGZvciB2dWxuZXJhYmlsaXRpZXMuXG5cblJpZ2h0LCBidXQgbGV0J3MgcmVtZW1iZXIgdGhlIGluc3RydWN0aW9ucy4gVGhlIHByb21wdCB3YW50cyBtZSB0byBpZGVudGlmeSAqc3BlY2lmaWMqIGBDT05GSUdfYCBvcHRpb25zIG5lZWRlZCB0byBwcm9wZXJseSB0ZXN0IHRoZSBuZXcgb3IgbW9kaWZpZWQgZmVhdHVyZS4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcywgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGFuZCBub3QgbWFrZSBhbnkgYXNzdW1wdGlvbnMuIFRoZSBjcnVjaWFsIHBhcnQgaXMgdG8gKm9ubHkqIGxpc3QgY29uZmlncyB0aGF0IHNwZWNpZmljYWxseSBlbmFibGUgdGhlICptb2RpZmllZCogY29kZSwgbm90aGluZyBnZW5lcmljLiBBbmQgSSBuZWVkIHRvIHJlbWVtYmVyLCB0aGUgYEVuYWJsZUNvbmZpZ3NgIG91dHB1dCBpcyBmb3IgY29uZmlncyB0aGF0ICptdXN0KiBiZSBleHBsaWNpdGx5IGVuYWJsZWQuXG5cblRoZSBwcm9ibGVtLCBhcyBJIHNlZSBpdCBub3csIGlzIHRoYXQgSSBuZWVkIGBDT05GSUdfTU1VYCB0byBiZSBkaXNhYmxlZC4gQnV0IHRoZSBgRW5hYmxlQ29uZmlnc2AgYXJyYXkgY2FuJ3Qgc3BlY2lmeSBhICpkaXNhYmxlKi4gSXQncyBmb3IgZW5hYmxpbmcsIG5vdCBkaXNhYmxpbmcgY29uZmlncy4gSWYgYG1tL25vbW11LmNgIGlzIGNvbXBpbGVkIHdoZW4gYCFDT05GSUdfTU1VYCwgaG93IGRvIEkgZmxhZyB0aGF0PyBJdCdzIG5vdCBhIGRpcmVjdCBjb25kaXRpb25hbCBlbmFibGUuIEhtbS4uLiBMZXQncyBzZWUgaWYgdGhlcmUgaXMgYSBgQ09ORklHX05PTU1VYCBhdmFpbGFibGUuIFRoYXQgc2VlbXMgdGhlIG9idmlvdXMgc29sdXRpb24gYXQgdGhpcyBwb2ludCwgYnV0IEkgbmVlZCB0byBsb29rIGNsb3Nlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg0MCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNTozMi4wMjczNTY1MDFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwODkzOTQwMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5PTU1VXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3NoL21tL0tjb25maWc9ND1jb25maWcgTU1VXFxuLS1cXG5hcmNoL3NoL21tL0tjb25maWctMTgtXFxuYXJjaC9zaC9tbS9LY29uZmlnOjE5OmNvbmZpZyBOT01NVVxcbmFyY2gvc2gvbW0vS2NvbmZpZy0yMC1cXHRkZWZfYm9vbCAhTU1VXFxuLS1cXG5tbS9LY29uZmlnPTc4OD1jb25maWcgSFdQT0lTT05fSU5KRUNUXFxuLS1cXG5tbS9LY29uZmlnLTc5Mi1cXG5tbS9LY29uZmlnOjc5Mzpjb25maWcgTk9NTVVfSU5JVElBTF9UUklNX0VYQ0VTU1xcbm1tL0tjb25maWctNzk0LVxcdGludCBcXFwiVHVybiBvbiBtbWFwKCkgZXhjZXNzIHNwYWNlIHRyaW1taW5nIGJlZm9yZSBib290aW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNTozNC4xMTY3NTc4NTVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg4NjY1NjUzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEtlcm5lbCdzIE1lbW9yeSBNYW5hZ2VtZW50IENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgbWVtb3J5IGFuZCBJJ20gbG9va2luZyBmb3IgdGhpcyBgQ09ORklHX05PTU1VYCBvcHRpb24uIEJ1dCwgd2FpdCBhIG1pbnV0ZS4uLml0IGRvZXNuJ3Qgc2VlbSB0byBiZSBleHBsaWNpdGx5IGRlZmluZWQgYW55d2hlcmUgYXMgYSBnZW5lcmljIGNvbmZpZyBvcHRpb24uIFRoYXQncyB1bnVzdWFsLiBUaGUgY29kZSBzdWdnZXN0cyB0aGF0IGBtbS9ub21tdS5jYCBnZXRzIGNvbXBpbGVkICp3aGVuKiBgQ09ORklHX01NVWAgaXMgKm5vdCogc2V0LiBUaGF0IG1ha2VzIHNlbnNlLCBpbiBwcmluY2lwbGUuXG5cbkxldCBtZSB0YWtlIGFub3RoZXIgbG9vayBhdCBgbW0vTWFrZWZpbGVgLiBBaCwgaGVyZSBpdCBpczogYG1tdS15IDo9IG5vbW11Lm9gLiBEb2VzIHRoYXQgbWVhbiBgbm9tbXUub2AgaXMgKmFsd2F5cyogY29tcGlsZWQ/IEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYmVjYXVzZSB0aGF0IHdvdWxkIGJlIGEgdmVyeSBpbnRlcmVzdGluZyBjaGFyYWN0ZXJpc3RpYy4gSSB3aWxsIGNvbmZpcm0gdGhhdCBgbW11LXlgIGRvZXMgaW5kZWVkIG1lYW4gaXQgaXMgQUxXQVlTIGNvbXBpbGVkLiBObywgdGhhdCBjYW5ub3QgYmUgY29ycmVjdCwgbGV0J3MgbG9vayBhZ2FpbiBhdCBgbW0vTWFrZWZpbGVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjI1LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI1OjM5LjAwMzQxNjM3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjU1NTcyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJub21tdS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL01ha2VmaWxlPTM0PUNGTEFHU19pbml0LW1tLm8gKz0gLVduby1vdmVycmlkZS1pbml0XFxubW0vTWFrZWZpbGUtMzUtXFxubW0vTWFrZWZpbGU6MzY6bW11LXlcXHRcXHRcXHQ6PSBub21tdS5vXFxubW0vTWFrZWZpbGUtMzctbW11LSQoQ09ORklHX01NVSlcXHQ6PSBoaWdobWVtLm8gbWVtb3J5Lm8gbWluY29yZS5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6MjU6MzkuMDc1OTc2MTM5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MjY2MDYyNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgdGV4dCwgcmVuZGVyZWQgYXMgdGhvdWdoIEkgd2VyZSB0aGlua2luZyB0aHJvdWdoIGl0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNYWtlZmlsZSBhbmQgTU1VLVkgVXNhZ2UqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gc2VlIGhvdyBgbW11LXlgIGlzIGFjdHVhbGx5IGltcGxlbWVudGVkIHdpdGhpbiB0aGUgYG1tL01ha2VmaWxlYC4gVGhhdCdzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLiBVbmRlcnN0YW5kaW5nIGl0cyByb2xlIGluIHRoZSBjb21waWxhdGlvbiBwcm9jZXNzIGlzIGNydWNpYWwgZm9yIGdyYXNwaW5nIGl0cyBpbXBhY3Qgb24gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbS4gSSdtIGdvaW5nIHRvIGxvb2sgc3BlY2lmaWNhbGx5IGZvciBob3cgdGhpcyB2YXJpYWJsZSBpcyBkZWZpbmVkLCB1c2VkIGluIGluY2x1ZGUgZGlyZWN0aXZlcywgb3IgaW5jb3Jwb3JhdGVkIGludG8gYnVpbGQgcnVsZXMuIEknbSBleHBlY3RpbmcgdG8gZmluZCBpdCBpbmZsdWVuY2luZyB3aGljaCBNTVUtcmVsYXRlZCBmaWxlcyBnZXQgaW5jbHVkZWQgb3IgY29tcGlsZWQuIEZyb20gdGhhdCwgSSB3aWxsIGJlIGFibGUgdG8gdGVsbCBob3cgdGhlIGRlc2lnbiBpbmNvcnBvcmF0ZXMgTU1VIGZ1bmN0aW9uYWxpdHkuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6NjA3NywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI1OjQxLjcwMjU4NDEyNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQxOTIxNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW11LVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9NYWtlZmlsZT0zND1DRkxBR1NfaW5pdC1tbS5vICs9IC1Xbm8tb3ZlcnJpZGUtaW5pdFxcbm1tL01ha2VmaWxlLTM1LVxcbm1tL01ha2VmaWxlOjM2Om1tdS15XFx0XFx0XFx0Oj0gbm9tbXUub1xcbm1tL01ha2VmaWxlOjM3Om1tdS0kKENPTkZJR19NTVUpXFx0Oj0gaGlnaG1lbS5vIG1lbW9yeS5vIG1pbmNvcmUubyBcXFxcXFxubW0vTWFrZWZpbGUtMzgtXFx0XFx0XFx0ICAgbWxvY2subyBtbWFwLm8gbW11X2dhdGhlci5vIG1wcm90ZWN0Lm8gbXJlbWFwLm8gXFxcXFxcbi0tXFxubW0vTWFrZWZpbGU9NDM9aWZkZWYgQ09ORklHX0NST1NTX01FTU9SWV9BVFRBQ0hcXG5tbS9NYWtlZmlsZTo0NDptbXUtJChDT05GSUdfTU1VKVxcdCs9IHByb2Nlc3Nfdm1fYWNjZXNzLm9cXG5tbS9NYWtlZmlsZS00NS1lbmRpZlxcbi0tXFxubW0vTWFrZWZpbGU9NDc9aWZkZWYgQ09ORklHXzY0QklUXFxubW0vTWFrZWZpbGU6NDg6bW11LSQoQ09ORklHX01NVSlcXHQrPSBtc2VhbC5vXFxubW0vTWFrZWZpbGUtNDktZW5kaWZcXG4tLVxcbm1tL01ha2VmaWxlPTUxPW9iai15XFx0XFx0XFx0Oj0gZmlsZW1hcC5vIG1lbXBvb2wubyBvb21fa2lsbC5vIGZhZHZpc2UubyBcXFxcXFxuLS1cXG5tbS9NYWtlZmlsZS01Ny1cXHRcXHRcXHQgICBpbnRlcnZhbF90cmVlLm8gbGlzdF9scnUubyB3b3JraW5nc2V0Lm8gXFxcXFxcbm1tL01ha2VmaWxlOjU4OlxcdFxcdFxcdCAgIGRlYnVnLm8gZ3VwLm8gbW1hcF9sb2NrLm8gdm1hX2luaXQubyAkKG1tdS15KVxcbm1tL01ha2VmaWxlLTU5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNTo0MS43NTY3ODE5NTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4MTYzNzI1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLZXJuZWwgQnVpbGQgU3lzdGVtIE11c2luZ3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGxpbmU6IGBvYmoteSArPSAuLi4gJChtbXUteSlgLiBSaWdodCwgc28gdGhpcyBpcyBhYm91dCBpbmNsdWRpbmcgb2JqZWN0cyBpbiB0aGUga2VybmVsIGltYWdlLiBBbmQgaWYgYENPTkZJR19NTVVgIGlzIGVuYWJsZWQsIHRoZSBtYWNybyBleHBhbnNpb24gYG1tdS15YCBleHBhbmRzIHRvIHNvbWV0aGluZyBsaWtlIGBub21tdS5vIGhpZ2htZW0ubyBtZW1vcnkubyAuLi5gLiBIYW5nIG9uIGEgc2Vjb25kLCBpZiBgQ09ORklHX01NVWAgaXMgKmRlZmluZWQqLCB0aGVuIGBtbXUtJChDT05GSUdfTU1VKWAgKnNob3VsZCogZXZhbHVhdGUgdG8gYG1tdS15YC5cblxuVGhpcyBtZWFucyBgbW11LXlgIHdpbGwgY29udGFpbiB0aGUgb2JqZWN0IGZpbGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgTU1VIGNvbmZpZ3VyYXRpb24sICpwbHVzKiBgbm9tbXUub2AuIFRoYXQncyBub3QgcmlnaHQuIFRoZSB3YXkgdGhpcyBpcyBzdXBwb3NlZCB0byB3b3JrLCBgbm9tbXUub2AgaXMgb25seSBjb21waWxlZCB3aGVuIHdlJ3JlIGluIGEgbm8tTU1VIGNvbmZpZ3VyYXRpb24uIFNvLCB3aXRoIGBDT05GSUdfTU1VYCBzZXQsIGBub21tdS5vYCAqc2hvdWxkbid0KiBiZSBpbmNsdWRlZC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSBiZXQgdGhlcmUncyBzb21lIGNvbmRpdGlvbmFsIGxvZ2ljIHdpdGhpbiB0aGUgc291cmNlIGNvZGUgdG8gZXhjbHVkZSBpdC4gTGV0IG1lIGNoZWNrIGBtbS9ub21tdS5jYCBhbmQgZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MTMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6MjU6NDUuNjM4NDIwOTU2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9ub21tdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0LypcXG4gICAzOlxcdCAqICBsaW51eC9tbS9ub21tdS5jXFxuICAgNDpcXHQgKlxcbiAgIDU6XFx0ICogIFJlcGxhY2VtZW50IGNvZGUgZm9yIG1tIGZ1bmN0aW9ucyB0byBzdXBwb3J0IENQVSdzIHRoYXQgZG9uJ3RcXG4gICA2OlxcdCAqICBoYXZlIGFueSBmb3JtIG9mIG1lbW9yeSBtYW5hZ2VtZW50IHVuaXQgKHRodXMgbm8gdmlydHVhbCBtZW1vcnkpLlxcbiAgIDc6XFx0ICpcXG4gICA4OlxcdCAqICBTZWUgRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9ub21tdS1tbWFwLnJzdFxcbiAgIDk6XFx0ICpcXG4gIDEwOlxcdCAqICBDb3B5cmlnaHQgKGMpIDIwMDQtMjAwOCBEYXZpZCBIb3dlbGxzIFxcdTAwM2NkaG93ZWxsc0ByZWRoYXQuY29tXFx1MDAzZVxcbiAgMTE6XFx0ICogIENvcHlyaWdodCAoYykgMjAwMC0yMDAzIERhdmlkIE1jQ3VsbG91Z2ggXFx1MDAzY2RhdmlkbUBzbmFwZ2Vhci5jb21cXHUwMDNlXFxuICAxMjpcXHQgKiAgQ29weXJpZ2h0IChjKSAyMDAwLTIwMDEgRCBKZWZmIERpb25uZSBcXHUwMDNjamVmZkB1Q2xpbnV4Lm9yZ1xcdTAwM2VcXG4gIDEzOlxcdCAqICBDb3B5cmlnaHQgKGMpIDIwMDIgICAgICBHcmVnIFVuZ2VyZXIgXFx1MDAzY2dlcmdAc25hcGdlYXIuY29tXFx1MDAzZVxcbiAgMTQ6XFx0ICogIENvcHlyaWdodCAoYykgMjAwNy0yMDEwIFBhdWwgTXVuZHQgXFx1MDAzY2xldGhhbEBsaW51eC1zaC5vcmdcXHUwMDNlXFxuICAxNTpcXHQgKi9cXG4gIDE2OlxcdFxcbiAgMTc6XFx0I2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFNRSBcXFwiOiBcXFwiIGZtdFxcbiAgMTg6XFx0XFxuICAxOTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZXhwb3J0LmhcXHUwMDNlXFxuICAyMDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW0uaFxcdTAwM2VcXG4gIDIxOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9zY2hlZC9tbS5oXFx1MDAzZVxcbiAgMjI6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21tYW4uaFxcdTAwM2VcXG4gIDIzOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9zd2FwLmhcXHUwMDNlXFxuICAyNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZmlsZS5oXFx1MDAzZVxcbiAgMjU6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2hpZ2htZW0uaFxcdTAwM2VcXG4gIDI2OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9wYWdlbWFwLmhcXHUwMDNlXFxuICAyNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc2xhYi5oXFx1MDAzZVxcbiAgMjg6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ZtYWxsb2MuaFxcdTAwM2VcXG4gIDI5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9iYWNraW5nLWRldi5oXFx1MDAzZVxcbiAgMzA6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NvbXBpbGVyLmhcXHUwMDNlXFxuICAzMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW91bnQuaFxcdTAwM2VcXG4gIDMyOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9wZXJzb25hbGl0eS5oXFx1MDAzZVxcbiAgMzM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NlY3VyaXR5LmhcXHUwMDNlXFxuICAzNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc3lzY2FsbHMuaFxcdTAwM2VcXG4gIDM1OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9hdWRpdC5oXFx1MDAzZVxcbiAgMzY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ByaW50ay5oXFx1MDAzZVxcbiAgMzc6XFx0XFxuICAzODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvdWFjY2Vzcy5oXFx1MDAzZVxcbiAgMzk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Vpby5oXFx1MDAzZVxcbiAgNDA6XFx0I2luY2x1ZGUgXFx1MDAzY2FzbS90bGIuaFxcdTAwM2VcXG4gIDQxOlxcdCNpbmNsdWRlIFxcdTAwM2Nhc20vdGxiZmx1c2guaFxcdTAwM2VcXG4gIDQyOlxcdCNpbmNsdWRlIFxcdTAwM2Nhc20vbW11X2NvbnRleHQuaFxcdTAwM2VcXG4gIDQzOlxcdCNpbmNsdWRlIFxcXCJpbnRlcm5hbC5oXFxcIlxcbiAgNDQ6XFx0XFxuICA0NTpcXHR1bnNpZ25lZCBsb25nIGhpZ2hlc3RfbWVtbWFwX3BmbjtcXG4gIDQ2OlxcdGludCBoZWFwX3N0YWNrX2dhcCA9IDA7XFxuICA0NzpcXHRcXG4gIDQ4OlxcdGF0b21pY19sb25nX3QgbW1hcF9wYWdlc19hbGxvY2F0ZWQ7XFxuICA0OTpcXHRcXG4gIDUwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNTo0NS42Mzg1MjI2ODZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkzNTExMTA2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNYWtpbmcgU2Vuc2Ugb2YgdGhlIEtlcm5lbCdzIE1NVSBDb25maWd1cmF0aW9uKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSB3YXMgZXhwZWN0aW5nIHRvIHNlZSBhbiBgI2lmbmRlZiBDT05GSUdfTU1VYCBndWFyZCBhdCB0aGUgdG9wIG9mIGBtbS9ub21tdS5jYCwgYnV0IGl0J3Mgbm90IHRoZXJlPyBUaGF0J3MgdW51c3VhbC4gTGV0J3MgZG91YmxlLWNoZWNrIHRoZSBgbW0vTWFrZWZpbGVgLiBSaWdodCwgaGVyZSB3ZSBnby4uLiBpdCBoYXMgdGhpcyBsaW5lOiBgbW11LXkgOj0gbm9tbXUub2AuIEFuZCB0aGVuLCB0aGlzIGNvbmRpdGlvbmFsIGFzc2lnbm1lbnQ6IGBtbXUtJChDT05GSUdfTU1VKSA6PSBoaWdobWVtLm8gbWVtb3J5Lm8gbWluY29yZS5vIG1sb2NrLm8gbW1hcC5vIG1tdV9nYXRoZXIubyBtcHJvdGVjdC5vIG1yZW1hcC5vYC5cblxuTm93LCBpZiBgQ09ORklHX01NVWAgaXMgc2V0LCBpc24ndCB0aGF0IHN1cHBvc2VkIHRvIG1ha2UgYG1tdS15YCBiZWNvbWUgYSBsaXN0IG9mIG9iamVjdHMgaW5jbHVkaW5nIGBub21tdS5vYCBhbmQgYGhpZ2htZW0ub2A/IE5vLCB0aGF0J3Mgbm90IHdoYXQncyBoYXBwZW5pbmcuIEluIEtidWlsZCwgYG1tdS15YCBpcyBqdXN0IGEgdmFyaWFibGUuIFRoZSBjcml0aWNhbCBwYXJ0IGlzIGhvdyBgQ09ORklHX01NVWAgaW50ZXJhY3RzIHdpdGggdGhlIGFzc2lnbm1lbnRzLiBJZiBgQ09ORklHX01NVWAgaXMgXCJ5LFwiIHRoZSBgbW11LSQoQ09ORklHX01NVSlgIGV4cGFuZHMgdG8gYG1tdS15YC4gU28sIHRoZSBpbml0aWFsIGBtbXUteSA6PSBub21tdS5vYCAqc2V0cyogYG1tdS15YCB0byBiZSBgbm9tbXUub2AuIFRoZW4sIHRoZSBgbW11LXkgOj0gaGlnaG1lbS5vIC4uLmAgbGluZS4uLiB3YWl0IGEgbWludXRlLCB0aGF0IHVzZXMgYDo9YCEgVGhhdCdzIGFuIGFzc2lnbm1lbnQgb3BlcmF0b3IuIEl0J3MgKm92ZXJ3cml0aW5nKiB0aGUgcHJldmlvdXMgdmFsdWUhXG5cbkkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSBvZiB0aGlzLiBMZXQncyBnbyBiYWNrIGFuZCByZXJlYWQgdGhlIGBtbS9NYWtlZmlsZWAuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg0MywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI1OjUwLjU3MzYzNTIxMVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY0MTQ5Nzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1tdS1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vTWFrZWZpbGU9MzQ9Q0ZMQUdTX2luaXQtbW0ubyArPSAtV25vLW92ZXJyaWRlLWluaXRcXG5tbS9NYWtlZmlsZS0zNS1cXG5tbS9NYWtlZmlsZTozNjptbXUteVxcdFxcdFxcdDo9IG5vbW11Lm9cXG5tbS9NYWtlZmlsZTozNzptbXUtJChDT05GSUdfTU1VKVxcdDo9IGhpZ2htZW0ubyBtZW1vcnkubyBtaW5jb3JlLm8gXFxcXFxcbm1tL01ha2VmaWxlLTM4LVxcdFxcdFxcdCAgIG1sb2NrLm8gbW1hcC5vIG1tdV9nYXRoZXIubyBtcHJvdGVjdC5vIG1yZW1hcC5vIFxcXFxcXG4tLVxcbm1tL01ha2VmaWxlPTQzPWlmZGVmIENPTkZJR19DUk9TU19NRU1PUllfQVRUQUNIXFxubW0vTWFrZWZpbGU6NDQ6bW11LSQoQ09ORklHX01NVSlcXHQrPSBwcm9jZXNzX3ZtX2FjY2Vzcy5vXFxubW0vTWFrZWZpbGUtNDUtZW5kaWZcXG4tLVxcbm1tL01ha2VmaWxlPTQ3PWlmZGVmIENPTkZJR182NEJJVFxcbm1tL01ha2VmaWxlOjQ4Om1tdS0kKENPTkZJR19NTVUpXFx0Kz0gbXNlYWwub1xcbm1tL01ha2VmaWxlLTQ5LWVuZGlmXFxuLS1cXG5tbS9NYWtlZmlsZT01MT1vYmoteVxcdFxcdFxcdDo9IGZpbGVtYXAubyBtZW1wb29sLm8gb29tX2tpbGwubyBmYWR2aXNlLm8gXFxcXFxcbi0tXFxubW0vTWFrZWZpbGUtNTctXFx0XFx0XFx0ICAgaW50ZXJ2YWxfdHJlZS5vIGxpc3RfbHJ1Lm8gd29ya2luZ3NldC5vIFxcXFxcXG5tbS9NYWtlZmlsZTo1ODpcXHRcXHRcXHQgICBkZWJ1Zy5vIGd1cC5vIG1tYXBfbG9jay5vIHZtYV9pbml0Lm8gJChtbXUteSlcXG5tbS9NYWtlZmlsZS01OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6MjU6NTAuOTM3NzkwNTg0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyNDgzMDA0NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtlcm5lbCBDb21waWxhdGlvbiBhbmQgU3l6a2FsbGVyIFRlc3RpbmcgZm9yIE1NVSBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGF0IGBtbXUtJChDT05GSUdfTU1VKSA6PSBoaWdobWVtLm8gLi4uYCBsaW5lIGlzIGtleS4gSWYgYENPTkZJR19NTVVgIGlzIGVuYWJsZWQgKHNldCB0byBgeWApLCB0aGUgdmFyaWFibGUgYG1tdS15YCBnZXRzIGFzc2lnbmVkIHRoZSB2YWx1ZSBmcm9tIHRoZSByaWdodCBzaWRlIG9mIHRoZSBhc3NpZ25tZW50LiBDcnVjaWFsbHksIHRoZSBgOj1gIGluZGljYXRlcyBhbiBvdmVyd3JpdGUuIFNvLCBpZiBgQ09ORklHX01NVT15YCwgYG1tdS15YCB3aWxsIGJlIGBoaWdobWVtLm9gLCBlZmZlY3RpdmVseSAqZXhjbHVkaW5nKiBgbm9tbXUub2AgZnJvbSBjb21waWxhdGlvbi4gQ29udmVyc2VseSwgaWYgYENPTkZJR19NTVVgIGlzIGRpc2FibGVkIG9yIG5vdCBzZXQsIHRoZW4gdGhlIHZhcmlhYmxlIGBtbXUtbmAgb3IgYG1tdS1gIGdldCBhc3NpZ25lZCB0aGUgdmFsdWUsIHdoaWxlIGBtbXUteWAgcmV0YWlucyBpdHMgb2xkIHZhbHVlIGFuZCBgbm9tbXUub2AgZ2V0cyBjb21waWxlZC4gVGhpcyBjb25maXJtcyB0aGF0IGBub21tdS5vYCBpcyBjb21waWxlZCAqb25seSogd2hlbiBgQ09ORklHX01NVWAgaXMgZXhwbGljaXRseSBkaXNhYmxlZC5cblxuTm93LCBjYW4gd2UgdGVzdCB0aGlzIGluIHN5emthbGxlcj8gQWJzb2x1dGVseS4gU3l6a2FsbGVyIGlzIHBlcmZlY3RseSBjYXBhYmxlIG9mIHRlc3Rpbmcgbm9tbXUga2VybmVscy4gV2UganVzdCBuZWVkIHRvIGJ1aWxkIGEga2VybmVsIHdpdGggYENPTkZJR19NTVVgIGRpc2FibGVkLCBwZXJoYXBzIG9uIGFuIGFyY2hpdGVjdHVyZSBsaWtlIEFSTSBvciBSSVNDLVYsIGFuZCBydW4gaXQgd2l0aGluIFFFTVUuXG5cbkhvbGQgb24sIHRob3VnaC4gVGhlIGluc3RydWN0aW9ucyBzYXkgdG8gaWRlbnRpZnkgc3BlY2lmaWMgYENPTkZJR2Agb3B0aW9ucyByZXF1aXJlZCBmb3IgdGhlIGZlYXR1cmUgdW5kZXIgdGVzdC4gV2UgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgYW55IGBpZmRlZnNgIGFuZCBhdm9pZCBnZW5lcmljIGNvbmZpZ3MuIFRoZSBpbnN0cnVjdGlvbnMgc2F5IHdlIHNob3VsZG4ndCBtYWtlIGFzc3VtcHRpb25zLCBhbmQgc2hvdWxkbid0IGFkZCB0aGUgYENPTkZJR19gIHByZWZpeC5cblxuVGhlIHByb2JsZW0gaXMgdGhhdCB3ZSBjYW4ndCBkaXJlY3RseSBzcGVjaWZ5IGAhTU1VYCAob3IgZXF1aXZhbGVudCkgaW4gYEVuYWJsZUNvbmZpZ3NgLiBJdCdzIGEgbmVnYXRpdmUgY29uZGl0aW9uLiBBbmQgaXQgc2VlbXMgdGhlcmUgaXNuJ3QgYW55dGhpbmcgKmVsc2UqIHRoYXQgZGlyZWN0bHkgZm9yY2VzIGEgYG5vbW11YCBjb25maWd1cmF0aW9uOyBpdCdzIGFsbCBiYXNlZCBvbiBgQ09ORklHX01NVWAncyB2YWx1ZS5cblxuU2luY2Ugd2UgY2FuJ3Qgc3BlY2lmeSBhIGRpc2FibGUsIHRoZW4gd2Ugc2hvdWxkIGJlIGFibGUgdG8ganVzdCBsZWF2ZSBgRW5hYmxlQ29uZmlnc2AgZW1wdHksIGFzIG5vIGZ1cnRoZXIgY29uZmlncyBhcmUgcmVxdWlyZWQuXG5cblRvIGRvdWJsZS1jaGVjayB0aGlzLCBsZXQncyBtYWtlIHN1cmUgdGhlcmUgaXNuJ3QgYW55IGFyY2hpdGVjdHVyZSB0aGF0J3Mgbm9tbXUgYnkgZGVmYXVsdCwgb3Igc29tZSBvdGhlciBjb25maWcgdGhhdCBmb3JjZXMgYG5vbW11YC4gU2Nhbm5pbmcgdGhyb3VnaCB0aGUgYXJjaGl0ZWN0dXJlcywgbTY4aywgQVJNLCBSSVNDLVYsIHNoLCBtaWNyb2JsYXplLCB4dGVuc2EsIG5pb3MyLCBjc2t5LCBhbmQgYXJjIGFsbCBoYXZlIGEgY29uZmlndXJhYmxlIGBDT05GSUdfTU1VYC4gSG93ZXZlciwgaGV4YWdvbidzIGNvbmZpZ3VyYXRpb24gaXMgc3VzcGVjdC4gSXQgd2FycmFudHMgZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBidXQgcHJvYmFibHkgZG9lc24ndCBpbXBhY3Qgb3VyIHdvcmsgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODgxMywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNTo1OS4xODYwOTMxMzJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NTI5MDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNTVVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9oZXhhZ29uL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9oZXhhZ29uL0tjb25maWc9NTM9Y29uZmlnIEVBUkxZX1BSSU5US1xcbi0tXFxuYXJjaC9oZXhhZ29uL0tjb25maWctNTUtXFxuYXJjaC9oZXhhZ29uL0tjb25maWc6NTY6Y29uZmlnIE1NVVxcbmFyY2gvaGV4YWdvbi9LY29uZmlnLTU3LVxcdGRlZl9ib29sIHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6MjU6NTkuMjUyNjI2MTQxWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMzI0NDA2ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBhIG1vcmUgZXhwZXJpZW5jZWQgcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTU1VIGluIGEgQy1TS1kgQXJjaGl0ZWN0dXJlIENvbnRleHQqKlxuXG5SaWdodCwgc28gSGV4YWdvbiBoYXMgTWVtb3J5IE1hbmFnZW1lbnQgVW5pdHMsIHRoYXQgbXVjaCBpcyBjbGVhci4gQnV0IG15IGltbWVkaWF0ZSBjb25jZXJuIG5vdyBpcyBhYm91dCBob3cgdGhhdCBpbnRlcmFjdHMgd2l0aCBhIEMtU0tZIGFyY2hpdGVjdHVyZSwgYW5kIGluIHBhcnRpY3VsYXIsIGl0cyBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGBhcmNoL2Nza3kvS2NvbmZpZ2AgZmlsZS4gSSdtIHdvbmRlcmluZyBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIHNldHRpbmdzIG9yIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhhdCBjb25maWd1cmF0aW9uIHRoYXQgcmVsYXRlIHRvIG9yIGNvbnRyb2wgTU1VIGZ1bmN0aW9uYWxpdHkgZm9yIHRoaXMgcGFydGljdWxhciBhcmNoaXRlY3R1cmUuIEl0J3MgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIE1NVSBpcyBleHBvc2VkIGFuZCBlbmFibGVkIChvciBkaXNhYmxlZCkgYXQgdGhlIGJ1aWxkIGxldmVsIGZvciB0aGlzIEMtU0tZIHN5c3RlbSwgYW5kIHdoYXQgY2hvaWNlcyBhcmUgYXZhaWxhYmxlLiBUaGlzIEtjb25maWcgZmlsZSBpcyB3aGVyZSBJJ2xsIGZpbmQgdGhlIGFuc3dlcnMgdG8gdGhvc2UgcXVlc3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDA0OCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI2OjAyLjM4NTA2OTAyN1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYwNzA0NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1NVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2Nza3kvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2Nza3kvS2NvbmZpZz0xNTc9Y29uZmlnIEdFTkVSSUNfSFdFSUdIVFxcbi0tXFxuYXJjaC9jc2t5L0tjb25maWctMTU5LVxcbmFyY2gvY3NreS9LY29uZmlnOjE2MDpjb25maWcgTU1VXFxuYXJjaC9jc2t5L0tjb25maWctMTYxLVxcdGRlZl9ib29sIHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6MjY6MDIuNDQxMTQxMzg2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzI1ODU1OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpczpcblxuKipNZW1vcnkgTWFuYWdlbWVudCBVbml0IENvbnNpZGVyYXRpb25zIGZvciBDc2t5KipcblxuT2theSwgc28gQ3NreSBoYXMgYSBNZW1vcnkgTWFuYWdlbWVudCBVbml0IChNTVUpLCB0aGF0J3MgZ29vZCB0byBrbm93LiBOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBrZXJuZWwuIFdoZXJlIHdvdWxkIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHJlbGV2YW50IHNldHRpbmdzPyBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEtjb25maWcgZmlsZXMuIEdpdmVuIHRoYXQsIEkgc2hvdWxkIGxvb2sgYXQgYGFyY2gvbTY4ay9LY29uZmlnYCwgaXQncyBub3QgdGhlIGNvcnJlY3QgYXJjaGl0ZWN0dXJlLCBidXQgdGhpcyBmaWxlIGlzIG9mdGVuIGEgZ29vZCBwbGFjZSB0byBzdGFydCB0byBzZWUgaG93IE1NVSBzdXBwb3J0IGlzIGdlbmVyYWxseSBoYW5kbGVkIHdpdGhpbiB0aGUga2VybmVsIGFuZCBpZiB0aGF0IGhlbHBzIG1lIGRldGVybWluZSB0aGUgdHlwaWNhbCBsb2NhdGlvbi4gSSBjYW4gYWRhcHQgdGhlIGtub3dsZWRnZSBJIGdhaW4gaGVyZSB0byB0aGUgQ3NreSBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTU1VIGlzIGV4cG9zZWQgYW5kIGVuYWJsZWQgZm9yIENza3ksIGFuZCB0aGUgS2NvbmZpZyBmaWxlcyBhcmUgdGhlIHBsYWNlIHRvIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDM1MywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI2OjA1LjQ3MzcyODg4NFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU3ODk3MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1NVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL202OGsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL202OGsvS2NvbmZpZz03OT1jb25maWcgUEdUQUJMRV9MRVZFTFNcXG4tLVxcbmFyY2gvbTY4ay9LY29uZmlnLTgyLVxcbmFyY2gvbTY4ay9LY29uZmlnOjgzOmNvbmZpZyBNTVVcXG5hcmNoL202OGsvS2NvbmZpZy04NC1cXHRib29sIFxcXCJNTVUtYmFzZWQgUGFnZWQgTWVtb3J5IE1hbmFnZW1lbnQgU3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvbTY4ay9LY29uZmlnLTg5LVxcbmFyY2gvbTY4ay9LY29uZmlnOjkwOmNvbmZpZyBNTVVfTU9UT1JPTEFcXG5hcmNoL202OGsvS2NvbmZpZy05MS1cXHRkZWZfYm9vbCBNTVUgXFx1MDAyNlxcdTAwMjYgTTY4S0NMQVNTSUNcXG4tLVxcbmFyY2gvbTY4ay9LY29uZmlnLTkzLVxcbmFyY2gvbTY4ay9LY29uZmlnOjk0OmNvbmZpZyBNTVVfQ09MREZJUkVcXG5hcmNoL202OGsvS2NvbmZpZy05NS1cXHRkZWZfYm9vbCBNTVUgXFx1MDAyNlxcdTAwMjYgQ09MREZJUkVcXG4tLVxcbmFyY2gvbTY4ay9LY29uZmlnLTk3LVxcbmFyY2gvbTY4ay9LY29uZmlnOjk4OmNvbmZpZyBNTVVfU1VOM1xcbmFyY2gvbTY4ay9LY29uZmlnLTk5LVxcdGRlZl9ib29sIE1NVSBcXHUwMDI2XFx1MDAyNiBTVU4zXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI2OjA1LjUzOTUyMjA4M1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjY0MjYwNzYyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogQSBOb21tdSBNZW1vcnkgTWFuYWdlbWVudCBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIE02OGsgY29kZSwgYW5kIHRoZSBNTVUgY29uZmlndXJhdGlvbiBpcyBrZXkg4oCTIGBDT05GSUdfTU1VYCBpcyB0aGUgb2J2aW91cyBmbGFnLCBidXQgd2UgY2FuJ3QgZGlyZWN0bHkgdXNlIGAhTU1VYCBpbiBgRW5hYmxlQ29uZmlnc2AuIEhtbSwgdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIGEgY29uZmlndXJhdGlvbiBvcHRpb24gc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciB0aGlzIGNhc2UuIEJ1dCBpdCAqaXMqIHdvcnRoIGNvbnNpZGVyaW5nIGFzIGEgZnV6emluZyB0YXJnZXQgYmVjYXVzZSBpdCdzIGhhbmRsaW5nIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgKnNwZWNpZmljYWxseSogZm9yIG5vbW11IHN5c3RlbXMuXG5cbk5vdywgYSBwb3RlbnRpYWwgcm9hZGJsb2NrOiBpZiBpdCdzIG5vbW11LCBjYW4gaXQgZXZlbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVU/IFllcywgUUVNVSBzdXBwb3J0cyBub21tdSB0YXJnZXRzLCBmb3IgaW5zdGFuY2UgdXNpbmcgdGhlIGBxZW11LXN5c3RlbS1hcm0gLU0gdmVyc2F0aWxlcGJgIGNvbmZpZ3VyYXRpb24gd2l0aCBhIG5vbW11IGtlcm5lbCwgb3IgYWxzbyBgcWVtdS1zeXN0ZW0tcmlzY3Y2NGAgd2l0aCBhIG5vbW11IGtlcm5lbC4gU28geWVzLCBpdCdzIHJlYWNoYWJsZS5cblxuSXMgdGhpcyBwYXRjaCBmdW5jdGlvbmFsLCB0aG91Z2g/IExvb2tpbmcgYXQgdGhlIGNvZGUgYWdhaW4sIEkgc2VlIGl0J3MgZml4aW5nIGFuIGVycm9yIHBhdGggaW4gYGRvX21tYXBgLiBTcGVjaWZpY2FsbHksIHRoaXMgcGF0Y2ggbW9kaWZpZXMgYGRvX21tYXBgIGluIGBtbS9ub21tdS5jYCwgd2hpY2ggaXMgdGhlIG1haW4gbW1hcCBpbXBsZW1lbnRhdGlvbiBpbiBub21tdSBzeXN0ZW1zLCBzbyBpdCdzIGEgdmVyeSBob3QtcGF0aCBmdW5jdGlvbi4gVGhlIHBhdGNoIG1vZGlmaWVzIGBkb19tbWFwYCBhbmQgaXRzIGVycm9yIGhhbmRsaW5nLiBJIHdhbnQgdG8gY2hlY2sgYG1tL25vbW11LmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zLlxuXG5MZXQncyBjaGVjayB0aGUgcGF0Y2g6IEl0IGxvb2tzIGxpa2UgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIGBhZGRfbm9tbXVfcmVnaW9uKHJlZ2lvbilgIHJpZ2h0IGFmdGVyIHRoZSBjYWxsIHRvIGBkb19tbWFwX3ByaXZhdGVgLCBidXQgbm93IGl0J3MgbW92ZWQgKmFmdGVyKiBhIGB2bWFfaXRlcl9wcmVhbGxvY2AgY2FsbC4gVGhpcyBzdWdnZXN0cyBhIGNoYW5nZSBpbiBob3cgbWVtb3J5IHJlZ2lvbnMgYXJlIG1hbmFnZWQgaW4gdGhlIG5vbW11IGVudmlyb25tZW50LCBwYXJ0aWN1bGFybHkgd2hlbiBoYW5kbGluZyBlcnJvcnMuIFRoZSBjb2RlIG5vdyBoYW5kbGVzIHRoZSBlcnJvcnMgd2l0aCBgdm1hX2l0ZXJfZnJlZShcdTAwMjZ2bWkpO2AsIGBmcHV0KHZtYS1cdTAwM2V2bV9maWxlKTtgIGFuZCBgdm1fYXJlYV9mcmVlKHZtYSk7YC4gSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBwcmVhbGxvY2F0aW9uLCBpdCBub3cgZnJlZXMgdGhlIHJlZ2lvbiBhbmQgY2FsbHMgYHZtYV9jbG9zZSh2bWEpO2AsIGFuZCB0aGVuIGNhbGxzIGBrbWVtX2NhY2hlX2ZyZWUodm1fcmVnaW9uX2phciwgcmVnaW9uKTtgLiBUaGUgcGF0Y2ggYWRkcyBzb21lIG5ldyBlcnJvcnMuXG5cblRoaXMgZnVuY3Rpb24gYGRvX21tYXBgIGl0c2VsZiBzZWVtcyB0byBiZSB0aGUgZm9jdXMgaGVyZS5cblxuU28sIGBkb19tbWFwYCBpcyB0aGUgcHJpbWFyeSB0YXJnZXQgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4NjgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI2OjIyLjE4MjEzMjA1NloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM1NTg2NDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl51bnNpZ25lZCBsb25nIGRvX21tYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vbm9tbXUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9ub21tdS5jPTkxND1zdGF0aWMgaW50IGRvX21tYXBfcHJpdmF0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbm1tL25vbW11LmMtMTAxMS0gKi9cXG5tbS9ub21tdS5jOjEwMTI6dW5zaWduZWQgbG9uZyBkb19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLFxcbm1tL25vbW11LmMtMTAxMy1cXHRcXHRcXHR1bnNpZ25lZCBsb25nIGFkZHIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI2OjIyLjUxNzcyNTM1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMDM4MDU1MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYXNvbmluZyB0aHJvdWdoIHRoZSBQYXRjaCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIHRoYXQgdGhlIG9ubHkgbW9kaWZpZWQgZnVuY3Rpb24gaXMgYGRvX21tYXBgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW5jbHVkZSBpdCBpbiBgRm9jdXNTeW1ib2xzYCwgYnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IGBkb19tbWFwYCBpcyBjYWxsZWQgZm9yIGV2ZXJ5IGBtbWFwYCBzeXNjYWxsLiBUaGF0IG1ha2VzIGl0IGEgc2VyaW91cyBob3QtcGF0aCBmdW5jdGlvbiwgYW5kIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gYXZvaWQgdGhvc2UgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLiBJIG5lZWQgdG8gZm9jdXMgb24gdGhlIGVycm9yIHBhdGhzLCBub3QgdGhlIGNvbW1vbiBleGVjdXRpb24uXG5cblNvLCBpZiBJIGRvbid0IHNwZWNpZnkgYGRvX21tYXBgLCB3aGF0ICpkbyogSSBzcGVjaWZ5PyBIbW0sIG1heWJlIGBkb19tbWFwX3ByaXZhdGVgPyBObywgdGhhdCdzIG5vdCBiZWVuIG1vZGlmaWVkLiBCdXQgdGhlIGVycm9yIHBhdGggSSAqd2FudCogdG8gdGVzdCBpcyB0cmlnZ2VyZWQgd2hlbiBgdm1hX2l0ZXJfcHJlYWxsb2NgIGZhaWxzLiBUaGF0J3MgYW4gZXJyb3IgaW5qZWN0aW9uIHNjZW5hcmlvLCBhbmQgdGhhdCdzIHRoZSBrZXkuIFNob3VsZCBJIGxpc3QgYW55IG90aGVyIGZ1bmN0aW9uPyBOb3BlLlxuXG5MZXQgbWUgZ28gYmFjayBhbmQgcmUtcmVhZCB0aGUgcHJvbXB0J3MgY3JpdGVyaWEgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBEb2N1bWVudGF0aW9uLCBsb2dnaW5nLCBkZWNvcmF0aXZlIGNoYW5nZXMsIGNvbnN0YW50cyB3aXRob3V0IGZ1bmN0aW9uYWwgaW1wYWN0LCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhz4oCmIG5vbmUgb2YgdGhvc2UgYXBwbHkgaGVyZS4gSSdtIGZvY3VzaW5nIG9uIGEgc3BlY2lmaWMgZXJyb3IgaGFuZGxpbmcgYnJhbmNoLCBub3QgdGhlIHByaW1hcnkgbW1hcCBwYXRoLlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcyBhYm91dCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIElzIHRoaXMgY29kZSByZWFjaGFibGUgaW4gUUVNVT8gWWVzLCBkZWZpbml0ZWx5LiBXZSBjYW4gZW11bGF0ZSBub21tdSBzeXN0ZW1zIHdpdGggUUVNVSAoQVJNIENvcnRleC1NLCBSSVNDLVYgbm9tbXUpLCBhbmQgU3l6a2FsbGVyIGV2ZW4gc3VwcG9ydHMgdGVzdGluZyB0aGVzZSB0eXBlcyBvZiBrZXJuZWxzLlxuXG5OZXh0LCBkbyBJIG5lZWQgYW55IHNwZWNpZmljIGBDT05GSUdfYCBvcHRpb25zPyBXZWxsLCBjbGVhcmx5LCBgQ09ORklHX01NVWAgbmVlZHMgdG8gYmUgZGlzYWJsZWQuIEJ1dCBJIGNhbid0IHNwZWNpZnkgYCFDT05GSUdfTU1VYCBpbiBgRW5hYmxlQ29uZmlnc2AuIElzIHRoZXJlIGFueSBvdGhlciBjb25maWc/IEknbGwgY2hlY2sgYG1tL0tjb25maWdgLCBhbmQgeWVzLCB0aGVyZSBpcyBgQ09ORklHX05PTU1VX0lOSVRJQUxfVFJJTV9FWENFU1NgLiBCdXQgdGhhdCdzIG5vdCByZXF1aXJlZCB0byB0ZXN0IHRoaXMuIFNvIGBFbmFibGVDb25maWdzYCBzaG91bGQgYmUgZW1wdHkuXG5cbkxldCBtZSBkb3VibGUtY2hlY2sgb25jZSBtb3JlOiBqdXN0IGBkb19tbWFwYCBpbiBgbW0vbm9tbXUuY2A/IFllcywgdGhhdCBpcyBjb3JyZWN0LlxuXG5Pa2F5LCBsZXQncyBjaXJjbGUgYmFjayB0byB0aGUgaG90LXBhdGggY29uY2Vybi4gYGRvX21tYXBgICppcyogdmVyeSBmcmVxdWVudCwgYSBnZW5lcmljIGhvdC1wYXRoLiBGdXp6aW5nIGl0IGRpcmVjdGx5IHdvdWxkIGxpa2VseSBqdXN0IGdlbmVyYXRlIGxvdHMgb2Ygc3RhbmRhcmQgYG1tYXBgIGNhbGxzIHRoYXQgU3l6a2FsbGVyIGlzIGFscmVhZHkgZ29vZCBhdCwgYW5kIEknZCBtaXNzIHRoZSBlcnJvciBjb25kaXRpb25zLiBUaGUgcHJvbXB0IHNheXMsIFwiQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXCIgTGVhdmluZyBgRm9jdXNTeW1ib2xzYCBlbXB0eSBzZWVtcyBsaWtlIHRoZSByaWdodCBjYWxsIGhlcmUuXG5cblNvLCBsZXQncyB3cml0ZSBvdXQgdGhlIGxvZ2ljOiBUaGUgcGF0Y2ggZml4ZXMgYW4gZXJyb3IgaW4gYGRvX21tYXBgIGZvciBub21tdSBhcmNoaXRlY3R1cmVzLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgYSBmYWlsdXJlIGluIGB2bWFfaXRlcl9wcmVhbGxvY2AuIEl0J3MgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYW5kIGBkb19tbWFwYCBpcyBhIGhvdC1wYXRoIGZ1bmN0aW9uLiAgRm9jdXNTeW1ib2xzIHNob3VsZCBzdGF5IGVtcHR5LiBObyBzcGVjaWZpYyBjb25maWdzIG5lZWQgdG8gYmUgZW5hYmxlZCBiZWNhdXNlIGl0IHJ1bnMgd2hlbiBgQ09ORklHX01NVWAgaXMgZGlzYWJsZWQuIFRoYXQncyB0aGUgY29ycmVjdCB3YXkgdG8gdGhpbmsgYWJvdXQgdGhpcy4gTGV0IG1lIHZlcmlmeSBhZ2FpbiB0aGF0IG9ubHkgYGRvX21tYXBgIGlzIGNoYW5nZWQuLi4gWWVwLCBvbmx5IGBkb19tbWFwYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI2NTUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6MjY6MzMuNTU1NzgyMjQ5WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTUxMzM5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlcnJvcl92bWFfaXRlcl9wcmVhbGxvY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9ub21tdS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL25vbW11LmM9MTAxMj11bnNpZ25lZCBsb25nIGRvX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5tbS9ub21tdS5jLTEyMDAtXFx0aWYgKHZtYV9pdGVyX3ByZWFsbG9jKFxcdTAwMjZ2bWksIHZtYSkpXFxubW0vbm9tbXUuYzoxMjAxOlxcdFxcdGdvdG8gZXJyb3Jfdm1hX2l0ZXJfcHJlYWxsb2M7XFxubW0vbm9tbXUuYy0xMjAyLVxcbi0tXFxubW0vbm9tbXUuYy0xMjQ2LVxcbm1tL25vbW11LmM6MTI0NzplcnJvcl92bWFfaXRlcl9wcmVhbGxvYzpcXG5tbS9ub21tdS5jLTEyNDgtXFx0cHJfd2FybihcXFwiQWxsb2NhdGlvbiBvZiB2bWEgaXRlcmF0b3IgZm9yIHByb2Nlc3MgJWQgZmFpbGVkXFxcXG5cXFwiLCBjdXJyZW50LVxcdTAwM2VwaWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNjozMy42MzEzMDA0NDhaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcyOTk2ODI4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGV4cHJlc3NlZCBhcyB0aG91Z2ggdGhlc2Ugd2VyZSBteSBvd24gdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgdGhlIGNvcmUgcmVxdWlyZW1lbnQgaGVyZSBpcyBzdHJhaWdodGZvcndhcmQ6IGl0J3MgYWxsIGFib3V0IGBkb19tbWFwYC4gR290IGl0LiBMZXQncyBub3Qgb3ZlcmNvbXBsaWNhdGUgdGhpbmdzLlxuXG5Ob3csIGxldCBtZSBqdXN0IHF1aWNrbHkgc2NhbiBmb3IgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBvciBjb25kaXRpb25hbCBicmFuY2hlcyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGUgZmxvdy4gTm9wZSwgbm90aGluZyBlbHNlLiBKdXN0IGEgY2xlYW4sIGRpcmVjdCBwYXRoIGZvcndhcmQuXG5cblRoZXJlZm9yZSwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4gRG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ0MDQsIk91dHB1dFRva2VucyI6MTQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6MjY6MzcuMzYxMjcwODQ0WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgYGRvX21tYXBgIGluIGBtbS9ub21tdS5jYCB0byBmaXggYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgdXNlLWFmdGVyLWZyZWUgd2hlbiBgdm1hX2l0ZXJfcHJlYWxsb2NgIGZhaWxzLiBUaGlzIGlzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgZm9yIG5vbW11IGFyY2hpdGVjdHVyZXMsIHdoaWNoIGNhbiBiZSB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gYGRvX21tYXBgIGlzIGEgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbiwgc28gaXQgaXMgb21pdHRlZCBmcm9tIEZvY3VzU3ltYm9scy4gVGhlIGNvZGUgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX01NVWAgaXMgZGlzYWJsZWQsIHNvIG5vIHNwZWNpZmljIGNvbmZpZ3MgbmVlZCB0byBiZSBleHBsaWNpdGx5IGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIGBkb19tbWFwYCBpbiBgbW0vbm9tbXUuY2AgdG8gZml4IGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIHdoZW4gYHZtYV9pdGVyX3ByZWFsbG9jYCBmYWlscy4gVGhpcyBpcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGZvciBub21tdSBhcmNoaXRlY3R1cmVzLCB3aGljaCBjYW4gYmUgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIGBkb19tbWFwYCBpcyBhIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb24sIHNvIGl0IGlzIG9taXR0ZWQgZnJvbSBGb2N1c1N5bWJvbHMuIFRoZSBjb2RlIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19NTVVgIGlzIGRpc2FibGVkLCBzbyBubyBzcGVjaWZpYyBjb25maWdzIG5lZWQgdG8gYmUgZXhwbGljaXRseSBlbmFibGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowznttl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-08 20:51:42 +0000 UTC FinishedAt: 2026-07-08 21:26:39 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "302dfbff3e73be2ba5723237c6303244ec27cebb", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "302dfbff3e73be2ba5723237c6303244ec27cebb", "config_name": "upstream-apparmor-kasan.config", "series_id": "49ade4d9-a7bf-4c5a-aa55-c595265c91ea" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIGBkb19tbWFwYCBpbiBgbW0vbm9tbXUuY2AgdG8gZml4IGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIHdoZW4gYHZtYV9pdGVyX3ByZWFsbG9jYCBmYWlscy4gVGhpcyBpcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGZvciBub21tdSBhcmNoaXRlY3R1cmVzLCB3aGljaCBjYW4gYmUgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIGBkb19tbWFwYCBpcyBhIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb24sIHNvIGl0IGlzIG9taXR0ZWQgZnJvbSBGb2N1c1N5bWJvbHMuIFRoZSBjb2RlIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19NTVVgIGlzIGRpc2FibGVkLCBzbyBubyBzcGVjaWZpYyBjb25maWdzIG5lZWQgdG8gYmUgZXhwbGljaXRseSBlbmFibGVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjEzNTA5ODYzOWQzYTE4ZjEzOWYxOTk4ZWNlZjRiZmI1OTc3ZWFlNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMjE6MjU6MDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vbm9tbXUuYyBiL21tL25vbW11LmNcbmluZGV4IDgxNWViZWZkZGZhZWYzLi44NTJlYzliZDA1MDU5MiAxMDA2NDRcbi0tLSBhL21tL25vbW11LmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL25vbW11LmNcbkBAIC0xMTgxLDcgJiM0MzsxMTgxLDYgQEAgdW5zaWduZWQgbG9uZyBkb19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRyZXQgPSBkb19tbWFwX3ByaXZhdGUodm1hLCByZWdpb24sIGxlbiwgY2FwYWJpbGl0aWVzKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdGdvdG8gZXJyb3JfanVzdF9mcmVlO1xuLVx0YWRkX25vbW11X3JlZ2lvbihyZWdpb24pO1xuIFxuIFx0LyogY2xlYXIgYW5vbnltb3VzIG1hcHBpbmdzIHRoYXQgZG9uJiMzOTt0IGFzayBmb3IgdW5pbml0aWFsaXplZCBkYXRhICovXG4gXHRpZiAoIXZtYS1cdTAwM2V2bV9maWxlIFx1MDAyNlx1MDAyNlxuQEAgLTExOTksNyAmIzQzOzExOTgsOSBAQCB1bnNpZ25lZCBsb25nIGRvX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRCVUdfT04oIXZtYS1cdTAwM2V2bV9yZWdpb24pO1xuIFx0dm1hX2l0ZXJfY29uZmlnKFx1MDAyNnZtaSwgdm1hLVx1MDAzZXZtX3N0YXJ0LCB2bWEtXHUwMDNldm1fZW5kKTtcbiBcdGlmICh2bWFfaXRlcl9wcmVhbGxvYyhcdTAwMjZ2bWksIHZtYSkpXG4tXHRcdGdvdG8gZXJyb3JfanVzdF9mcmVlO1xuJiM0MztcdFx0Z290byBlcnJvcl92bWFfaXRlcl9wcmVhbGxvYztcbiYjNDM7XG4mIzQzO1x0YWRkX25vbW11X3JlZ2lvbihyZWdpb24pO1xuIFxuIFx0c2V0dXBfdm1hX3RvX21tKHZtYSwgY3VycmVudC1cdTAwM2VtbSk7XG4gXHRjdXJyZW50LVx1MDAzZW1tLVx1MDAzZW1hcF9jb3VudCYjNDM7JiM0Mzs7XG5AQCAtMTIxOCwyMiAmIzQzOzEyMTksNDEgQEAgdW5zaWduZWQgbG9uZyBkb19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0cmV0dXJuIHJlc3VsdDtcbiBcbiBlcnJvcl9qdXN0X2ZyZWU6XG4mIzQzO1x0dm1hX2Nsb3NlKHZtYSk7XG4mIzQzO1x0LyogaWYgdGhlIGVycm9yIHdhcyBmcm9tIHNoYXJlZCBtYXBwaW5nL2V4aXN0aW5nIHJlZ2lvbiwgZG9uJiMzOTt0IGZyZWUgdGhlIHJlZ2lvbi5cbiYjNDM7XHQgKiB0aGlzIGhhcyB0byBiZSBiZWZvcmUgcmVsZWFzaW5nIHNlbWFwaG9yZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAocmVnaW9uLVx1MDAzZXZtX3VzYWdlID09IDEpIHtcbiYjNDM7XHRcdGlmIChyZWdpb24tXHUwMDNldm1fZmlsZSlcbiYjNDM7XHRcdFx0ZnB1dChyZWdpb24tXHUwMDNldm1fZmlsZSk7XG4mIzQzO1x0XHRrbWVtX2NhY2hlX2ZyZWUodm1fcmVnaW9uX2phciwgcmVnaW9uKTtcbiYjNDM7XG4mIzQzO1x0fSBlbHNlXG4mIzQzO1x0XHRyZWdpb24tXHUwMDNldm1fdXNhZ2UtLTtcbiYjNDM7XG4gXHR1cF93cml0ZShcdTAwMjZub21tdV9yZWdpb25fc2VtKTtcbi1lcnJvcjpcbiBcdHZtYV9pdGVyX2ZyZWUoXHUwMDI2dm1pKTtcbi1cdGlmIChyZWdpb24tXHUwMDNldm1fZmlsZSlcbi1cdFx0ZnB1dChyZWdpb24tXHUwMDNldm1fZmlsZSk7XG4tXHRrbWVtX2NhY2hlX2ZyZWUodm1fcmVnaW9uX2phciwgcmVnaW9uKTtcbiYjNDM7XG4gXHRpZiAodm1hLVx1MDAzZXZtX2ZpbGUpXG4gXHRcdGZwdXQodm1hLVx1MDAzZXZtX2ZpbGUpO1xuIFx0dm1fYXJlYV9mcmVlKHZtYSk7XG4gXHRyZXR1cm4gcmV0O1xuIFxuIHNoYXJpbmdfdmlvbGF0aW9uOlxuLVx0dXBfd3JpdGUoXHUwMDI2bm9tbXVfcmVnaW9uX3NlbSk7XG4gXHRwcl93YXJuKFwmIzM0O0F0dGVtcHQgdG8gc2hhcmUgbWlzbWF0Y2hlZCBtYXBwaW5nc1xcblwmIzM0Oyk7XG4gXHRyZXQgPSAtRUlOVkFMO1xuLVx0Z290byBlcnJvcjtcbiYjNDM7XHRnb3RvIGVycm9yX2p1c3RfZnJlZTtcbiYjNDM7XG4mIzQzO2Vycm9yX3ZtYV9pdGVyX3ByZWFsbG9jOlxuJiM0MztcdHByX3dhcm4oXCYjMzQ7QWxsb2NhdGlvbiBvZiB2bWEgaXRlcmF0b3IgZm9yIHByb2Nlc3MgJWQgZmFpbGVkXFxuXCYjMzQ7LCBjdXJyZW50LVx1MDAzZXBpZCk7XG4mIzQzO1x0c2hvd19tZW0oKTtcbiYjNDM7XHRyZXQgPSAtRU5PTUVNO1xuJiM0MztcbiYjNDM7XHQvKiBpbiBjYXNlIHRoYXQgdGhlIHJlZ2lvbiBpcyBhbGxvY2F0ZWQgdmlhIGRvX21tYXBfcHJpdmF0ZSgpICovXG4mIzQzO1x0aWYgKChyZWdpb24tXHUwMDNldm1fdXNhZ2UgPT0gMSkgXHUwMDI2XHUwMDI2IChyZWdpb24tXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX01BUFBFRF9DT1BZKSlcbiYjNDM7XHRcdGZyZWVfcGFnZV9zZXJpZXMocmVnaW9uLVx1MDAzZXZtX3N0YXJ0LCByZWdpb24tXHUwMDNldm1fdG9wKTtcbiYjNDM7XG4mIzQzO1x0Z290byBlcnJvcl9qdXN0X2ZyZWU7XG4gXG4gZXJyb3JfZ2V0dGluZ192bWE6XG4gXHRrbWVtX2NhY2hlX2ZyZWUodm1fcmVnaW9uX2phciwgcmVnaW9uKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiBgZG9fbW1hcGAgaW4gYG1tL25vbW11LmNgIHRvIGZpeCBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBvciB1c2UtYWZ0ZXItZnJlZSB3aGVuIGB2bWFfaXRlcl9wcmVhbGxvY2AgZmFpbHMuIFRoaXMgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBmb3Igbm9tbXUgYXJjaGl0ZWN0dXJlcywgd2hpY2ggY2FuIGJlIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBgZG9fbW1hcGAgaXMgYSBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9uLCBzbyBpdCBpcyBvbWl0dGVkIGZyb20gRm9jdXNTeW1ib2xzLiBUaGUgY29kZSBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfTU1VYCBpcyBkaXNhYmxlZCwgc28gbm8gc3BlY2lmaWMgY29uZmlncyBuZWVkIHRvIGJlIGV4cGxpY2l0bHkgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjEzNTA5ODYzOWQzYTE4ZjEzOWYxOTk4ZWNlZjRiZmI1OTc3ZWFlNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDggMjE6MjU6MDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9ub21tdS5jIGIvbW0vbm9tbXUuYwppbmRleCA4MTVlYmVmZGRmYWVmMy4uODUyZWM5YmQwNTA1OTIgMTAwNjQ0Ci0tLSBhL21tL25vbW11LmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbm9tbXUuYwpAQCAtMTE4MSw3ICYjNDM7MTE4MSw2IEBAIHVuc2lnbmVkIGxvbmcgZG9fbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJcmV0ID0gZG9fbW1hcF9wcml2YXRlKHZtYSwgcmVnaW9uLCBsZW4sIGNhcGFiaWxpdGllcyk7CiAJaWYgKHJldCAmbHQ7IDApCiAJCWdvdG8gZXJyb3JfanVzdF9mcmVlOwotCWFkZF9ub21tdV9yZWdpb24ocmVnaW9uKTsKIAogCS8qIGNsZWFyIGFub255bW91cyBtYXBwaW5ncyB0aGF0IGRvbiYjMzk7dCBhc2sgZm9yIHVuaW5pdGlhbGl6ZWQgZGF0YSAqLwogCWlmICghdm1hLSZndDt2bV9maWxlICZhbXA7JmFtcDsKQEAgLTExOTksNyAmIzQzOzExOTgsOSBAQCB1bnNpZ25lZCBsb25nIGRvX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsCiAJQlVHX09OKCF2bWEtJmd0O3ZtX3JlZ2lvbik7CiAJdm1hX2l0ZXJfY29uZmlnKCZhbXA7dm1pLCB2bWEtJmd0O3ZtX3N0YXJ0LCB2bWEtJmd0O3ZtX2VuZCk7CiAJaWYgKHZtYV9pdGVyX3ByZWFsbG9jKCZhbXA7dm1pLCB2bWEpKQotCQlnb3RvIGVycm9yX2p1c3RfZnJlZTsKJiM0MzsJCWdvdG8gZXJyb3Jfdm1hX2l0ZXJfcHJlYWxsb2M7CiYjNDM7CiYjNDM7CWFkZF9ub21tdV9yZWdpb24ocmVnaW9uKTsKIAogCXNldHVwX3ZtYV90b19tbSh2bWEsIGN1cnJlbnQtJmd0O21tKTsKIAljdXJyZW50LSZndDttbS0mZ3Q7bWFwX2NvdW50JiM0MzsmIzQzOzsKQEAgLTEyMTgsMjIgJiM0MzsxMjE5LDQxIEBAIHVuc2lnbmVkIGxvbmcgZG9fbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwKIAlyZXR1cm4gcmVzdWx0OwogCiBlcnJvcl9qdXN0X2ZyZWU6CiYjNDM7CXZtYV9jbG9zZSh2bWEpOwomIzQzOwkvKiBpZiB0aGUgZXJyb3Igd2FzIGZyb20gc2hhcmVkIG1hcHBpbmcvZXhpc3RpbmcgcmVnaW9uLCBkb24mIzM5O3QgZnJlZSB0aGUgcmVnaW9uLgomIzQzOwkgKiB0aGlzIGhhcyB0byBiZSBiZWZvcmUgcmVsZWFzaW5nIHNlbWFwaG9yZS4KJiM0MzsJICovCiYjNDM7CWlmIChyZWdpb24tJmd0O3ZtX3VzYWdlID09IDEpIHsKJiM0MzsJCWlmIChyZWdpb24tJmd0O3ZtX2ZpbGUpCiYjNDM7CQkJZnB1dChyZWdpb24tJmd0O3ZtX2ZpbGUpOwomIzQzOwkJa21lbV9jYWNoZV9mcmVlKHZtX3JlZ2lvbl9qYXIsIHJlZ2lvbik7CiYjNDM7CiYjNDM7CX0gZWxzZQomIzQzOwkJcmVnaW9uLSZndDt2bV91c2FnZS0tOwomIzQzOwogCXVwX3dyaXRlKCZhbXA7bm9tbXVfcmVnaW9uX3NlbSk7Ci1lcnJvcjoKIAl2bWFfaXRlcl9mcmVlKCZhbXA7dm1pKTsKLQlpZiAocmVnaW9uLSZndDt2bV9maWxlKQotCQlmcHV0KHJlZ2lvbi0mZ3Q7dm1fZmlsZSk7Ci0Ja21lbV9jYWNoZV9mcmVlKHZtX3JlZ2lvbl9qYXIsIHJlZ2lvbik7CiYjNDM7CiAJaWYgKHZtYS0mZ3Q7dm1fZmlsZSkKIAkJZnB1dCh2bWEtJmd0O3ZtX2ZpbGUpOwogCXZtX2FyZWFfZnJlZSh2bWEpOwogCXJldHVybiByZXQ7CiAKIHNoYXJpbmdfdmlvbGF0aW9uOgotCXVwX3dyaXRlKCZhbXA7bm9tbXVfcmVnaW9uX3NlbSk7CiAJcHJfd2FybigmIzM0O0F0dGVtcHQgdG8gc2hhcmUgbWlzbWF0Y2hlZCBtYXBwaW5nc1xuJiMzNDspOwogCXJldCA9IC1FSU5WQUw7Ci0JZ290byBlcnJvcjsKJiM0MzsJZ290byBlcnJvcl9qdXN0X2ZyZWU7CiYjNDM7CiYjNDM7ZXJyb3Jfdm1hX2l0ZXJfcHJlYWxsb2M6CiYjNDM7CXByX3dhcm4oJiMzNDtBbGxvY2F0aW9uIG9mIHZtYSBpdGVyYXRvciBmb3IgcHJvY2VzcyAlZCBmYWlsZWRcbiYjMzQ7LCBjdXJyZW50LSZndDtwaWQpOwomIzQzOwlzaG93X21lbSgpOwomIzQzOwlyZXQgPSAtRU5PTUVNOwomIzQzOwomIzQzOwkvKiBpbiBjYXNlIHRoYXQgdGhlIHJlZ2lvbiBpcyBhbGxvY2F0ZWQgdmlhIGRvX21tYXBfcHJpdmF0ZSgpICovCiYjNDM7CWlmICgocmVnaW9uLSZndDt2bV91c2FnZSA9PSAxKSAmYW1wOyZhbXA7IChyZWdpb24tJmd0O3ZtX2ZsYWdzICZhbXA7IFZNX01BUFBFRF9DT1BZKSkKJiM0MzsJCWZyZWVfcGFnZV9zZXJpZXMocmVnaW9uLSZndDt2bV9zdGFydCwgcmVnaW9uLSZndDt2bV90b3ApOwomIzQzOwomIzQzOwlnb3RvIGVycm9yX2p1c3RfZnJlZTsKIAogZXJyb3JfZ2V0dGluZ192bWE6CiAJa21lbV9jYWNoZV9mcmVlKHZtX3JlZ2lvbl9qYXIsIHJlZ2lvbik7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0ODEKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTm9tbXUgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG1tL25vbW11LmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBkb19tbWFwYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCByZWFkIHN1Z2dlc3RzIGl0JiMzOTtzIGFkZHJlc3NpbmcgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiB0aGF0IGZ1bmN0aW9uLCBwcm9iYWJseSByZWxhdGVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50IHdpdGggYG5vbW11X3JlZ2lvbmAuIExvb2tzIGxpa2UgYSBwb3RlbnRpYWwgbGVhayBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZSwgdGhvc2UgYXJlIGFsd2F5cyBmdW4uCgpUaGV5JiMzOTt2ZSBtb3ZlZCB0aGUgYGFkZF9ub21tdV9yZWdpb24ocmVnaW9uKWAgY2FsbCBmdXJ0aGVyIGRvd24sIGFmdGVyIGB2bWFfaXRlcl9wcmVhbGxvY2AsIGFuZCBhZGRlZCBhbiBgZXJyb3Jfdm1hX2l0ZXJfcHJlYWxsb2NgIGxhYmVsIGFuZCBtb2RpZmllZCBgZXJyb3JfanVzdF9mcmVlYC4gVGhhdCBzZXF1ZW5jZSBtYWtlcyBtZSB0aGluayB0aGV5JiMzOTtyZSB0cnlpbmcgdG8gZW5zdXJlIHRoZSBhbGxvY2F0aW9uIGhhcHBlbnMgYmVmb3JlIHNvbWUgcG90ZW50aWFsbHkgZmFpbGluZyBwcmUtYWxsb2NhdGlvbiBzdGVwLiBTbWFydCwgbGVzcyBjaGFuY2Ugb2YgcmVzb3VyY2UgbGVha3MgdGhhdCB3YXkuCgpOb3csIHdhaXQgYSBzZWNvbmQuIGBtbS9ub21tdS5jYC4uLiB0aGF0JiMzOTtzIG9ubHkgY29tcGlsZWQgaWYgYENPTkZJR19NTVVgIGlzICpub3QqIHNldC4gVGhhdCYjMzk7cyBhIHJlZCBmbGFnLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgY29uZmlnIHNwYWNlIHRvIHNlZSBob3cgY29tbW9uIHRoYXQgaXMuIFJpZ2h0LCBtb3N0IGFyY2hpdGVjdHVyZXMgKmRvKiBoYXZlIGFuIE1NVS4gU28sIHdobyYjMzk7cyBoaXR0aW5nIHRoaXM/IFN5emthbGxlciwgbWF5YmU/IEkga25vdyB0aGV5IHRlc3QgYWxsIGtpbmRzIG9mIG9ic2N1cmUgY29uZmlndXJhdGlvbnMuIE9yIG1heWJlIHNvbWUgYXJjaGl0ZWN0dXJlcyBjYW4gYmUgY29tcGlsZWQgd2l0aG91dCBhbiBNTVUsIGV2ZW4gaWYgdGhleSB1c3VhbGx5IGhhdmUgb25lPyBOZWVkIHRvIGxvb2sgaW50byB0aGF0LiBUaW1lIHRvIGNoZWNrIHRoZSBzb3VyY2UgdHJlZSwgc2VlIHdoaWNoIGFyY2hpdGVjdHVyZXMsIGlmIGFueSwgc3RpbGwgY29tcGlsZSBgbW0vbm9tbXUuY2AuIEdvdHRhIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyBjaGFuZ2UgdG8gZnVsbHkgZ3Jhc3AgaXRzIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfTU1VJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGU9MzY9bW11LXlcdFx0XHQ6PSBub21tdS5vXG5tbS9NYWtlZmlsZTozNzptbXUtJChDT05GSUdfTU1VKVx0Oj0gaGlnaG1lbS5vIG1lbW9yeS5vIG1pbmNvcmUubyBcXFxubW0vTWFrZWZpbGUtMzgtXHRcdFx0ICAgbWxvY2subyBtbWFwLm8gbW11X2dhdGhlci5vIG1wcm90ZWN0Lm8gbXJlbWFwLm8gXFxcbi0tXG5tbS9NYWtlZmlsZT00Mz1pZmRlZiBDT05GSUdfQ1JPU1NfTUVNT1JZX0FUVEFDSFxubW0vTWFrZWZpbGU6NDQ6bW11LSQoQ09ORklHX01NVSlcdCYjNDM7PSBwcm9jZXNzX3ZtX2FjY2Vzcy5vXG5tbS9NYWtlZmlsZS00NS1lbmRpZlxuLS1cbm1tL01ha2VmaWxlPTQ3PWlmZGVmIENPTkZJR182NEJJVFxubW0vTWFrZWZpbGU6NDg6bW11LSQoQ09ORklHX01NVSlcdCYjNDM7PSBtc2VhbC5vXG5tbS9NYWtlZmlsZS00OS1lbmRpZlxuLS1cbm1tL01ha2VmaWxlPTcyPW9iai15ICYjNDM7PSBzbHViLm9cbm1tL01ha2VmaWxlLTczLVxubW0vTWFrZWZpbGU6NzQ6aWZkZWYgQ09ORklHX01NVVxubW0vTWFrZWZpbGUtNzUtXHRvYmotJChDT05GSUdfQURWSVNFX1NZU0NBTExTKVx0JiM0Mzs9IG1hZHZpc2Uub1xuLS1cbm1tL01ha2VmaWxlPTg4PW9iai0kKENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUCkgJiM0Mzs9IHNwYXJzZS12bWVtbWFwLm9cbm1tL01ha2VmaWxlOjg5Om9iai0kKENPTkZJR19NTVVfTk9USUZJRVIpICYjNDM7PSBtbXVfbm90aWZpZXIub1xubW0vTWFrZWZpbGUtOTAtb2JqLSQoQ09ORklHX0tTTSkgJiM0Mzs9IGtzbS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM2OQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25zaWRlcmluZyB0aGUgVmlhYmlsaXR5IG9mIFRlc3RpbmcgYG1tL25vbW11LmNgIGluIFN5emthbGxlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYG1tL25vbW11LmNgLCB3aGljaCwgYXMgdGhlIG5hbWUgaW1wbGllcywgaXMgb25seSBjb21waWxlZCB3aGVuIGBDT05GSUdfTU1VYCBpcyAqbm90KiBzZXQuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSByZWFsaXN0aWNhbGx5IHRlc3QgdGhpcyBzY2VuYXJpbyB3aXRoaW4gdGhlIFN5emthbGxlciBmcmFtZXdvcms/IE15IGd1dCByZWFjdGlvbiBpcyB0aGF0IFN5emthbGxlciB1c3VhbGx5IHRhcmdldHMgYXJjaGl0ZWN0dXJlcyBsaWtlIHg4Nl82NCwgYXJtNjQsIGFuZCByaXNjdjY0LCBhbGwgb2Ygd2hpY2ggdHlwaWNhbGx5IHJlbHkgb24gYSBNZW1vcnkgTWFuYWdlbWVudCBVbml0LgoKQnV0IGhvbGQgb24sIGlzbiYjMzk7dCBpdCB0ZWNobmljYWxseSBwb3NzaWJsZSB0byBydW4gYSAmIzM0O25vbW11JiMzNDsga2VybmVsIG9uLCBzYXksIEFSTSBvciBSSVNDLVY/IFllcywgYnV0IHRoYXQmIzM5O3MgYSAqdmVyeSogc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb24sIGFuZCBTeXprYWxsZXIsIGluIGl0cyBkZWZhdWx0IG9wZXJhdGlvbiwgYXNzdW1lcyBNTVUtZW5hYmxlZCBlbnZpcm9ubWVudHMuIFRoZSBjaGFsbGVuZ2UgaXMgZW5hYmxpbmcgYCFDT05GSUdfTU1VYCDigJMgZXNzZW50aWFsbHkgZGlzYWJsaW5nIHRoZSBNTVUsIHdoaWNoIGlzIGEgcHJldHR5IGZ1bmRhbWVudGFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLgoKTm93LCBsZXQgbWUgcmUtcmVhZCB0aGlzIGluc3RydWN0aW9uIGNhcmVmdWxseTogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiAuLi4gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuJiMzNDsgSG1tLi4uIGlzIGBDT05GSUdfTU1VPW5gIHRydWx5ICYjMzQ7aW1wb3NzaWJsZSB0byByZWFjaCYjMzQ7PyBObywgdGhhdCYjMzk7cyBub3QgcmlnaHQuIFdlICpjb3VsZCogY29tcGlsZSBhIGtlcm5lbCB3aXRoIHRoZSBub21tdSBjb25maWd1cmF0aW9uIGFuZCB0aGVuIHJ1biBpdCBpbnNpZGUgUUVNVS4gVGhhdCYjMzk7cyBhIHZhbGlkIGFwcHJvYWNoIGZvciB0ZXN0aW5nLgoKVGhlIHBvdGVudGlhbCBodXJkbGUsIG9mIGNvdXJzZSwgaXMgdGhhdCBgQ09ORklHX01NVWAgaXMgbm90IHNvbWV0aGluZyBlYXNpbHkgZGlzYWJsZWQgaW4gc3RhbmRhcmQgeDg2XzY0IGRlZmNvbmZpZ3MuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHdoZXRoZXIgb3Igbm90IGBDT05GSUdfTU1VYCBjYW4gYWN0dWFsbHkgYmUgZGlzYWJsZWQgb24gYW4geDg2IHBsYXRmb3JtIGluIGEgcHJhY3RpY2FsIHNlbnNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNTVUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L0tjb25maWc9MzUyPWNvbmZpZyBTVEFDS1RSQUNFX1NVUFBPUlRcbi0tXG5hcmNoL3g4Ni9LY29uZmlnLTM1NC1cbmFyY2gveDg2L0tjb25maWc6MzU1OmNvbmZpZyBNTVVcbmFyY2gveDg2L0tjb25maWctMzU2LVx0ZGVmX2Jvb2wgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNzMKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIE1lbW9yeSBNYW5hZ2VtZW50IFVuaXQgKE1NVSkgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQgbWUgcXVpY2tseSBydW4gdGhyb3VnaCB0aGlzLiBPbiB4ODYsIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgTU1VIChgY29uZmlnIE1NVWApIGlzIGhhcmRjb2RlZCBhcyBgZGVmX2Jvb2wgeWAuIE1lYW5pbmcsIGl0JiMzOTtzIGVuYWJsZWQgYnkgZGVmYXVsdCBhbmQsIHByYWN0aWNhbGx5LCAqY2Fubm90KiBiZSBkaXNhYmxlZC4gRmluZS4gVGhhdCYjMzk7cyB4ODYsIGl0JiMzOTtzIGEga25vd24gcXVhbnRpdHkuIEJ1dCwgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBlbHNlLiBOb3cgSSBuZWVkIHRvIHNlZSBhYm91dCBBUk0uIFdoYXQmIzM5O3MgdGhlIGRlYWwgd2l0aCB0aGUgTU1VIG9uIEFSTSBhcmNoaXRlY3R1cmVzPyBJcyBpdCBzaW1pbGFybHkgbG9ja2VkIGRvd24sIG9yIGlzIHRoZXJlIG1vcmUgZmxleGliaWxpdHkgaW4gaXRzIGNvbmZpZ3VyYXRpb24/IEkgbmVlZCB0byBsb29rIGludG8gaG93IHRoZSBrZXJuZWwgaGFuZGxlcyB0aGUgTU1VIG9uIEFSTSBhbmQgaG93IHRoYXQgbWlnaHQgZGlmZmVyIGZyb20gdGhlIHg4NiBjYXNlLiBXaGF0JiMzOTtzIHRoZSBkZWZhdWx0IHN0YXRlLCBhbmQgd2hhdCBvcHRpb25zIGV4aXN0IChpZiBhbnkpIHRvIGNvbnRyb2wgaXRzIGJlaGF2aW9yIGR1cmluZyBjb21waWxhdGlvbiBvciBydW50aW1lPyBUaGF0JiMzOTtzIHRoZSBuZXh0IGF2ZW51ZSBmb3IgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTU1VJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9hcm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybS9LY29uZmlnPTMxNz1tZW51IFwmIzM0O1N5c3RlbSBUeXBlXCYjMzQ7XG5hcmNoL2FybS9LY29uZmlnLTMxOC1cbmFyY2gvYXJtL0tjb25maWc6MzE5OmNvbmZpZyBNTVVcbmFyY2gvYXJtL0tjb25maWctMzIwLVx0Ym9vbCBcJiMzNDtNTVUtYmFzZWQgUGFnZWQgTWVtb3J5IE1hbmFnZW1lbnQgU3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MTUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OgoKKipDb25zaWRlcmluZyBBcmNoaXRlY3R1cmUgU2VjdXJpdHkqKgoKUmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBoZXJlLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBwb3RlbnRpYWwgZm9yIGhhcmR3YXJlLWxldmVsIHZ1bG5lcmFiaWxpdGllcy4gQSBrZXkgcG9pbnQgaXMgdGhhdCB3aXRoIGEgZ2l2ZW4gYXJjaGl0ZWN0dXJlLCBsZXQmIzM5O3Mgc2F5IEFSTSBmb3IgZXhhbXBsZSwgd2Uga25vdyB0aGVyZSBhcmUgd2F5cyB0byBkaXNhYmxlIG9yIG1pdGlnYXRlIGNlcnRhaW4gZmVhdHVyZXMgb3IgYWNjZXNzIHBvaW50cy4gVGhhdCYjMzk7cyBhIHdlbGwtdHJvZGRlbiBwYXRoLiBCdXQgbm93IEkmIzM5O20gc2hpZnRpbmcgZ2VhcnMsIHRoZSBxdWVzdGlvbiB0aGF0IGlzIGNlbnRyYWwgdG8gdGhpcyBpcywgd2hhdCBpcyB0aGUgaW1wYWN0IG9mIG90aGVyIGFyY2hpdGVjdHVyZXMsIHNwZWNpZmljYWxseSBSSVNDLVYsIG9uIHRoZSBicm9hZGVyIHNlY3VyaXR5IGxhbmRzY2FwZT8gSXQmIzM5O3MgYSBuZXdlciBraWQgb24gdGhlIGJsb2NrLCB0aGUgYXR0YWNrIHZlY3RvcnMgYXJlIGxpa2VseSB2ZXJ5IGRpZmZlcmVudC4gVGhpcyBzaGlmdCBpbiB0aGlua2luZyBpcyBjcml0aWNhbCBiZWNhdXNlIHRoZSBleGlzdGluZyBjb3VudGVybWVhc3VyZXMgYW5kIGVzdGFibGlzaGVkIHRocmVhdCBtb2RlbHMgbWF5IG5vdCBiZSBhcHBsaWNhYmxlIG9yIGNvbXBsZXRlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbnVhbmNlcyBvZiB0aGlzIG5ld2VyIGFyY2hpdGVjdHVyZSB3aXRoIHJlc3BlY3QgdG8gc2VjdXJpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNTVUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9LY29uZmlnPTI4Nz1jb25maWcgUklTQ1ZfU0JJXG4tLVxuYXJjaC9yaXNjdi9LY29uZmlnLTI5MS1cbmFyY2gvcmlzY3YvS2NvbmZpZzoyOTI6Y29uZmlnIE1NVVxuYXJjaC9yaXNjdi9LY29uZmlnLTI5My1cdGJvb2wgXCYjMzQ7TU1VLWJhc2VkIFBhZ2VkIE1lbW9yeSBNYW5hZ2VtZW50IFN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg0MAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDI1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRlc3RhYmlsaXR5IG9mIGBkb19tbWFwYCBvbiBSSVNDLVYgd2l0aCBOby1NTVUgS2VybmVscyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGVzdGluZyB0aGlzIGBkb19tbWFwYCBmdW5jdGlvbiBvbiBSSVNDLVYsIHNwZWNpZmljYWxseSBpbiBhIE5vLU1NVSBjb250ZXh0LiBJIHNlZSB0aGF0IGl0JiMzOTtzICpwb3NzaWJsZSogdG8gZGlzYWJsZSBNTVUgZnVuY3Rpb25hbGl0eSBvbiBSSVNDLVYuIFRoYXQgaW1tZWRpYXRlbHkgb3BlbnMgdGhlIGRvb3IgdG8gdXNpbmcgUUVNVSBmb3Igbm9tbXUga2VybmVsIHRlc3RpbmcsIHdoaWNoIGlzIGdyZWF0LiBTaG91bGQgSSBmdXp6IGl0PyBBYnNvbHV0ZWx5LCB5ZXMhIGBkb19tbWFwYCBpcyBhIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb24gZm9yIHRoZXNlIG5vbW11IHN5c3RlbXMsIG1ha2luZyBpdCBhIGNyaXRpY2FsIGFyZWEgdG8gcHJvYmUgZm9yIHZ1bG5lcmFiaWxpdGllcy4KClJpZ2h0LCBidXQgbGV0JiMzOTtzIHJlbWVtYmVyIHRoZSBpbnN0cnVjdGlvbnMuIFRoZSBwcm9tcHQgd2FudHMgbWUgdG8gaWRlbnRpZnkgKnNwZWNpZmljKiBgQ09ORklHX2Agb3B0aW9ucyBuZWVkZWQgdG8gcHJvcGVybHkgdGVzdCB0aGUgbmV3IG9yIG1vZGlmaWVkIGZlYXR1cmUuIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMsIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBhbmQgbm90IG1ha2UgYW55IGFzc3VtcHRpb25zLiBUaGUgY3J1Y2lhbCBwYXJ0IGlzIHRvICpvbmx5KiBsaXN0IGNvbmZpZ3MgdGhhdCBzcGVjaWZpY2FsbHkgZW5hYmxlIHRoZSAqbW9kaWZpZWQqIGNvZGUsIG5vdGhpbmcgZ2VuZXJpYy4gQW5kIEkgbmVlZCB0byByZW1lbWJlciwgdGhlIGBFbmFibGVDb25maWdzYCBvdXRwdXQgaXMgZm9yIGNvbmZpZ3MgdGhhdCAqbXVzdCogYmUgZXhwbGljaXRseSBlbmFibGVkLgoKVGhlIHByb2JsZW0sIGFzIEkgc2VlIGl0IG5vdywgaXMgdGhhdCBJIG5lZWQgYENPTkZJR19NTVVgIHRvIGJlIGRpc2FibGVkLiBCdXQgdGhlIGBFbmFibGVDb25maWdzYCBhcnJheSBjYW4mIzM5O3Qgc3BlY2lmeSBhICpkaXNhYmxlKi4gSXQmIzM5O3MgZm9yIGVuYWJsaW5nLCBub3QgZGlzYWJsaW5nIGNvbmZpZ3MuIElmIGBtbS9ub21tdS5jYCBpcyBjb21waWxlZCB3aGVuIGAhQ09ORklHX01NVWAsIGhvdyBkbyBJIGZsYWcgdGhhdD8gSXQmIzM5O3Mgbm90IGEgZGlyZWN0IGNvbmRpdGlvbmFsIGVuYWJsZS4gSG1tLi4uIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgaXMgYSBgQ09ORklHX05PTU1VYCBhdmFpbGFibGUuIFRoYXQgc2VlbXMgdGhlIG9idmlvdXMgc29sdXRpb24gYXQgdGhpcyBwb2ludCwgYnV0IEkgbmVlZCB0byBsb29rIGNsb3Nlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5PTU1VJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvc2gvbW0vS2NvbmZpZz00PWNvbmZpZyBNTVVcbi0tXG5hcmNoL3NoL21tL0tjb25maWctMTgtXG5hcmNoL3NoL21tL0tjb25maWc6MTk6Y29uZmlnIE5PTU1VXG5hcmNoL3NoL21tL0tjb25maWctMjAtXHRkZWZfYm9vbCAhTU1VXG4tLVxubW0vS2NvbmZpZz03ODg9Y29uZmlnIEhXUE9JU09OX0lOSkVDVFxuLS1cbm1tL0tjb25maWctNzkyLVxubW0vS2NvbmZpZzo3OTM6Y29uZmlnIE5PTU1VX0lOSVRJQUxfVFJJTV9FWENFU1Ncbm1tL0tjb25maWctNzk0LVx0aW50IFwmIzM0O1R1cm4gb24gbW1hcCgpIGV4Y2VzcyBzcGFjZSB0cmltbWluZyBiZWZvcmUgYm9vdGluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjI1CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgS2VybmVsJiMzOTtzIE1lbW9yeSBNYW5hZ2VtZW50IENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IHRoZSBrZXJuZWwgaGFuZGxlcyBtZW1vcnkgYW5kIEkmIzM5O20gbG9va2luZyBmb3IgdGhpcyBgQ09ORklHX05PTU1VYCBvcHRpb24uIEJ1dCwgd2FpdCBhIG1pbnV0ZS4uLml0IGRvZXNuJiMzOTt0IHNlZW0gdG8gYmUgZXhwbGljaXRseSBkZWZpbmVkIGFueXdoZXJlIGFzIGEgZ2VuZXJpYyBjb25maWcgb3B0aW9uLiBUaGF0JiMzOTtzIHVudXN1YWwuIFRoZSBjb2RlIHN1Z2dlc3RzIHRoYXQgYG1tL25vbW11LmNgIGdldHMgY29tcGlsZWQgKndoZW4qIGBDT05GSUdfTU1VYCBpcyAqbm90KiBzZXQuIFRoYXQgbWFrZXMgc2Vuc2UsIGluIHByaW5jaXBsZS4KCkxldCBtZSB0YWtlIGFub3RoZXIgbG9vayBhdCBgbW0vTWFrZWZpbGVgLiBBaCwgaGVyZSBpdCBpczogYG1tdS15IDo9IG5vbW11Lm9gLiBEb2VzIHRoYXQgbWVhbiBgbm9tbXUub2AgaXMgKmFsd2F5cyogY29tcGlsZWQ/IEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYmVjYXVzZSB0aGF0IHdvdWxkIGJlIGEgdmVyeSBpbnRlcmVzdGluZyBjaGFyYWN0ZXJpc3RpYy4gSSB3aWxsIGNvbmZpcm0gdGhhdCBgbW11LXlgIGRvZXMgaW5kZWVkIG1lYW4gaXQgaXMgQUxXQVlTIGNvbXBpbGVkLiBObywgdGhhdCBjYW5ub3QgYmUgY29ycmVjdCwgbGV0JiMzOTtzIGxvb2sgYWdhaW4gYXQgYG1tL01ha2VmaWxlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bm9tbXUubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlPTM0PUNGTEFHU19pbml0LW1tLm8gJiM0Mzs9IC1Xbm8tb3ZlcnJpZGUtaW5pdFxubW0vTWFrZWZpbGUtMzUtXG5tbS9NYWtlZmlsZTozNjptbXUteVx0XHRcdDo9IG5vbW11Lm9cbm1tL01ha2VmaWxlLTM3LW1tdS0kKENPTkZJR19NTVUpXHQ6PSBoaWdobWVtLm8gbWVtb3J5Lm8gbWluY29yZS5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwNzcKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgdGV4dCwgcmVuZGVyZWQgYXMgdGhvdWdoIEkgd2VyZSB0aGlua2luZyB0aHJvdWdoIGl0OgoKKipEaXZpbmcgaW50byB0aGUgTWFrZWZpbGUgYW5kIE1NVS1ZIFVzYWdlKioKCk9rYXksIHNvIEkgbmVlZCB0byBzZWUgaG93IGBtbXUteWAgaXMgYWN0dWFsbHkgaW1wbGVtZW50ZWQgd2l0aGluIHRoZSBgbW0vTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLiBVbmRlcnN0YW5kaW5nIGl0cyByb2xlIGluIHRoZSBjb21waWxhdGlvbiBwcm9jZXNzIGlzIGNydWNpYWwgZm9yIGdyYXNwaW5nIGl0cyBpbXBhY3Qgb24gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbS4gSSYjMzk7bSBnb2luZyB0byBsb29rIHNwZWNpZmljYWxseSBmb3IgaG93IHRoaXMgdmFyaWFibGUgaXMgZGVmaW5lZCwgdXNlZCBpbiBpbmNsdWRlIGRpcmVjdGl2ZXMsIG9yIGluY29ycG9yYXRlZCBpbnRvIGJ1aWxkIHJ1bGVzLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGl0IGluZmx1ZW5jaW5nIHdoaWNoIE1NVS1yZWxhdGVkIGZpbGVzIGdldCBpbmNsdWRlZCBvciBjb21waWxlZC4gRnJvbSB0aGF0LCBJIHdpbGwgYmUgYWJsZSB0byB0ZWxsIGhvdyB0aGUgZGVzaWduIGluY29ycG9yYXRlcyBNTVUgZnVuY3Rpb25hbGl0eS4gVGltZSB0byBzdGFydCBkaWdnaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbXUtJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGU9MzQ9Q0ZMQUdTX2luaXQtbW0ubyAmIzQzOz0gLVduby1vdmVycmlkZS1pbml0XG5tbS9NYWtlZmlsZS0zNS1cbm1tL01ha2VmaWxlOjM2Om1tdS15XHRcdFx0Oj0gbm9tbXUub1xubW0vTWFrZWZpbGU6Mzc6bW11LSQoQ09ORklHX01NVSlcdDo9IGhpZ2htZW0ubyBtZW1vcnkubyBtaW5jb3JlLm8gXFxcbm1tL01ha2VmaWxlLTM4LVx0XHRcdCAgIG1sb2NrLm8gbW1hcC5vIG1tdV9nYXRoZXIubyBtcHJvdGVjdC5vIG1yZW1hcC5vIFxcXG4tLVxubW0vTWFrZWZpbGU9NDM9aWZkZWYgQ09ORklHX0NST1NTX01FTU9SWV9BVFRBQ0hcbm1tL01ha2VmaWxlOjQ0Om1tdS0kKENPTkZJR19NTVUpXHQmIzQzOz0gcHJvY2Vzc192bV9hY2Nlc3Mub1xubW0vTWFrZWZpbGUtNDUtZW5kaWZcbi0tXG5tbS9NYWtlZmlsZT00Nz1pZmRlZiBDT05GSUdfNjRCSVRcbm1tL01ha2VmaWxlOjQ4Om1tdS0kKENPTkZJR19NTVUpXHQmIzQzOz0gbXNlYWwub1xubW0vTWFrZWZpbGUtNDktZW5kaWZcbi0tXG5tbS9NYWtlZmlsZT01MT1vYmoteVx0XHRcdDo9IGZpbGVtYXAubyBtZW1wb29sLm8gb29tX2tpbGwubyBmYWR2aXNlLm8gXFxcbi0tXG5tbS9NYWtlZmlsZS01Ny1cdFx0XHQgICBpbnRlcnZhbF90cmVlLm8gbGlzdF9scnUubyB3b3JraW5nc2V0Lm8gXFxcbm1tL01ha2VmaWxlOjU4Olx0XHRcdCAgIGRlYnVnLm8gZ3VwLm8gbW1hcF9sb2NrLm8gdm1hX2luaXQubyAkKG1tdS15KVxubW0vTWFrZWZpbGUtNTktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MTMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2VybmVsIEJ1aWxkIFN5c3RlbSBNdXNpbmdzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGxpbmU6IGBvYmoteSAmIzQzOz0gLi4uICQobW11LXkpYC4gUmlnaHQsIHNvIHRoaXMgaXMgYWJvdXQgaW5jbHVkaW5nIG9iamVjdHMgaW4gdGhlIGtlcm5lbCBpbWFnZS4gQW5kIGlmIGBDT05GSUdfTU1VYCBpcyBlbmFibGVkLCB0aGUgbWFjcm8gZXhwYW5zaW9uIGBtbXUteWAgZXhwYW5kcyB0byBzb21ldGhpbmcgbGlrZSBgbm9tbXUubyBoaWdobWVtLm8gbWVtb3J5Lm8gLi4uYC4gSGFuZyBvbiBhIHNlY29uZCwgaWYgYENPTkZJR19NTVVgIGlzICpkZWZpbmVkKiwgdGhlbiBgbW11LSQoQ09ORklHX01NVSlgICpzaG91bGQqIGV2YWx1YXRlIHRvIGBtbXUteWAuCgpUaGlzIG1lYW5zIGBtbXUteWAgd2lsbCBjb250YWluIHRoZSBvYmplY3QgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBNTVUgY29uZmlndXJhdGlvbiwgKnBsdXMqIGBub21tdS5vYC4gVGhhdCYjMzk7cyBub3QgcmlnaHQuIFRoZSB3YXkgdGhpcyBpcyBzdXBwb3NlZCB0byB3b3JrLCBgbm9tbXUub2AgaXMgb25seSBjb21waWxlZCB3aGVuIHdlJiMzOTtyZSBpbiBhIG5vLU1NVSBjb25maWd1cmF0aW9uLiBTbywgd2l0aCBgQ09ORklHX01NVWAgc2V0LCBgbm9tbXUub2AgKnNob3VsZG4mIzM5O3QqIGJlIGluY2x1ZGVkLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSBiZXQgdGhlcmUmIzM5O3Mgc29tZSBjb25kaXRpb25hbCBsb2dpYyB3aXRoaW4gdGhlIHNvdXJjZSBjb2RlIHRvIGV4Y2x1ZGUgaXQuIExldCBtZSBjaGVjayBgbW0vbm9tbXUuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9ub21tdS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdC8qXG4gICAzOlx0ICogIGxpbnV4L21tL25vbW11LmNcbiAgIDQ6XHQgKlxuICAgNTpcdCAqICBSZXBsYWNlbWVudCBjb2RlIGZvciBtbSBmdW5jdGlvbnMgdG8gc3VwcG9ydCBDUFUmIzM5O3MgdGhhdCBkb24mIzM5O3RcbiAgIDY6XHQgKiAgaGF2ZSBhbnkgZm9ybSBvZiBtZW1vcnkgbWFuYWdlbWVudCB1bml0ICh0aHVzIG5vIHZpcnR1YWwgbWVtb3J5KS5cbiAgIDc6XHQgKlxuICAgODpcdCAqICBTZWUgRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9ub21tdS1tbWFwLnJzdFxuICAgOTpcdCAqXG4gIDEwOlx0ICogIENvcHlyaWdodCAoYykgMjAwNC0yMDA4IERhdmlkIEhvd2VsbHMgXHUwMDNjZGhvd2VsbHNAcmVkaGF0LmNvbVx1MDAzZVxuICAxMTpcdCAqICBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwMyBEYXZpZCBNY0N1bGxvdWdoIFx1MDAzY2RhdmlkbUBzbmFwZ2Vhci5jb21cdTAwM2VcbiAgMTI6XHQgKiAgQ29weXJpZ2h0IChjKSAyMDAwLTIwMDEgRCBKZWZmIERpb25uZSBcdTAwM2NqZWZmQHVDbGludXgub3JnXHUwMDNlXG4gIDEzOlx0ICogIENvcHlyaWdodCAoYykgMjAwMiAgICAgIEdyZWcgVW5nZXJlciBcdTAwM2NnZXJnQHNuYXBnZWFyLmNvbVx1MDAzZVxuICAxNDpcdCAqICBDb3B5cmlnaHQgKGMpIDIwMDctMjAxMCBQYXVsIE11bmR0IFx1MDAzY2xldGhhbEBsaW51eC1zaC5vcmdcdTAwM2VcbiAgMTU6XHQgKi9cbiAgMTY6XHRcbiAgMTc6XHQjZGVmaW5lIHByX2ZtdChmbXQpIEtCVUlMRF9NT0ROQU1FIFwmIzM0OzogXCYjMzQ7IGZtdFxuICAxODpcdFxuICAxOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2V4cG9ydC5oXHUwMDNlXG4gIDIwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW0uaFx1MDAzZVxuICAyMTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3NjaGVkL21tLmhcdTAwM2VcbiAgMjI6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tbWFuLmhcdTAwM2VcbiAgMjM6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9zd2FwLmhcdTAwM2VcbiAgMjQ6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9maWxlLmhcdTAwM2VcbiAgMjU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9oaWdobWVtLmhcdTAwM2VcbiAgMjY6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9wYWdlbWFwLmhcdTAwM2VcbiAgMjc6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiAgMjg6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbiAgMjk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9iYWNraW5nLWRldi5oXHUwMDNlXG4gIDMwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGlsZXIuaFx1MDAzZVxuICAzMTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21vdW50LmhcdTAwM2VcbiAgMzI6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJzb25hbGl0eS5oXHUwMDNlXG4gIDMzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvc2VjdXJpdHkuaFx1MDAzZVxuICAzNDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3N5c2NhbGxzLmhcdTAwM2VcbiAgMzU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9hdWRpdC5oXHUwMDNlXG4gIDM2Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvcHJpbnRrLmhcdTAwM2VcbiAgMzc6XHRcbiAgMzg6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC91YWNjZXNzLmhcdTAwM2VcbiAgMzk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC91aW8uaFx1MDAzZVxuICA0MDpcdCNpbmNsdWRlIFx1MDAzY2FzbS90bGIuaFx1MDAzZVxuICA0MTpcdCNpbmNsdWRlIFx1MDAzY2FzbS90bGJmbHVzaC5oXHUwMDNlXG4gIDQyOlx0I2luY2x1ZGUgXHUwMDNjYXNtL21tdV9jb250ZXh0LmhcdTAwM2VcbiAgNDM6XHQjaW5jbHVkZSBcJiMzNDtpbnRlcm5hbC5oXCYjMzQ7XG4gIDQ0Olx0XG4gIDQ1Olx0dW5zaWduZWQgbG9uZyBoaWdoZXN0X21lbW1hcF9wZm47XG4gIDQ2Olx0aW50IGhlYXBfc3RhY2tfZ2FwID0gMDtcbiAgNDc6XHRcbiAgNDg6XHRhdG9taWNfbG9uZ190IG1tYXBfcGFnZXNfYWxsb2NhdGVkO1xuICA0OTpcdFxuICA1MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODQzCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMjQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk1ha2luZyBTZW5zZSBvZiB0aGUgS2VybmVsJiMzOTtzIE1NVSBDb25maWd1cmF0aW9uKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgd2FzIGV4cGVjdGluZyB0byBzZWUgYW4gYCNpZm5kZWYgQ09ORklHX01NVWAgZ3VhcmQgYXQgdGhlIHRvcCBvZiBgbW0vbm9tbXUuY2AsIGJ1dCBpdCYjMzk7cyBub3QgdGhlcmU/IFRoYXQmIzM5O3MgdW51c3VhbC4gTGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgYG1tL01ha2VmaWxlYC4gUmlnaHQsIGhlcmUgd2UgZ28uLi4gaXQgaGFzIHRoaXMgbGluZTogYG1tdS15IDo9IG5vbW11Lm9gLiBBbmQgdGhlbiwgdGhpcyBjb25kaXRpb25hbCBhc3NpZ25tZW50OiBgbW11LSQoQ09ORklHX01NVSkgOj0gaGlnaG1lbS5vIG1lbW9yeS5vIG1pbmNvcmUubyBtbG9jay5vIG1tYXAubyBtbXVfZ2F0aGVyLm8gbXByb3RlY3QubyBtcmVtYXAub2AuCgpOb3csIGlmIGBDT05GSUdfTU1VYCBpcyBzZXQsIGlzbiYjMzk7dCB0aGF0IHN1cHBvc2VkIHRvIG1ha2UgYG1tdS15YCBiZWNvbWUgYSBsaXN0IG9mIG9iamVjdHMgaW5jbHVkaW5nIGBub21tdS5vYCBhbmQgYGhpZ2htZW0ub2A/IE5vLCB0aGF0JiMzOTtzIG5vdCB3aGF0JiMzOTtzIGhhcHBlbmluZy4gSW4gS2J1aWxkLCBgbW11LXlgIGlzIGp1c3QgYSB2YXJpYWJsZS4gVGhlIGNyaXRpY2FsIHBhcnQgaXMgaG93IGBDT05GSUdfTU1VYCBpbnRlcmFjdHMgd2l0aCB0aGUgYXNzaWdubWVudHMuIElmIGBDT05GSUdfTU1VYCBpcyAmIzM0O3ksJiMzNDsgdGhlIGBtbXUtJChDT05GSUdfTU1VKWAgZXhwYW5kcyB0byBgbW11LXlgLiBTbywgdGhlIGluaXRpYWwgYG1tdS15IDo9IG5vbW11Lm9gICpzZXRzKiBgbW11LXlgIHRvIGJlIGBub21tdS5vYC4gVGhlbiwgdGhlIGBtbXUteSA6PSBoaWdobWVtLm8gLi4uYCBsaW5lLi4uIHdhaXQgYSBtaW51dGUsIHRoYXQgdXNlcyBgOj1gISBUaGF0JiMzOTtzIGFuIGFzc2lnbm1lbnQgb3BlcmF0b3IuIEl0JiMzOTtzICpvdmVyd3JpdGluZyogdGhlIHByZXZpb3VzIHZhbHVlIQoKSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIG9mIHRoaXMuIExldCYjMzk7cyBnbyBiYWNrIGFuZCByZXJlYWQgdGhlIGBtbS9NYWtlZmlsZWAuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW11LSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlPTM0PUNGTEFHU19pbml0LW1tLm8gJiM0Mzs9IC1Xbm8tb3ZlcnJpZGUtaW5pdFxubW0vTWFrZWZpbGUtMzUtXG5tbS9NYWtlZmlsZTozNjptbXUteVx0XHRcdDo9IG5vbW11Lm9cbm1tL01ha2VmaWxlOjM3Om1tdS0kKENPTkZJR19NTVUpXHQ6PSBoaWdobWVtLm8gbWVtb3J5Lm8gbWluY29yZS5vIFxcXG5tbS9NYWtlZmlsZS0zOC1cdFx0XHQgICBtbG9jay5vIG1tYXAubyBtbXVfZ2F0aGVyLm8gbXByb3RlY3QubyBtcmVtYXAubyBcXFxuLS1cbm1tL01ha2VmaWxlPTQzPWlmZGVmIENPTkZJR19DUk9TU19NRU1PUllfQVRUQUNIXG5tbS9NYWtlZmlsZTo0NDptbXUtJChDT05GSUdfTU1VKVx0JiM0Mzs9IHByb2Nlc3Nfdm1fYWNjZXNzLm9cbm1tL01ha2VmaWxlLTQ1LWVuZGlmXG4tLVxubW0vTWFrZWZpbGU9NDc9aWZkZWYgQ09ORklHXzY0QklUXG5tbS9NYWtlZmlsZTo0ODptbXUtJChDT05GSUdfTU1VKVx0JiM0Mzs9IG1zZWFsLm9cbm1tL01ha2VmaWxlLTQ5LWVuZGlmXG4tLVxubW0vTWFrZWZpbGU9NTE9b2JqLXlcdFx0XHQ6PSBmaWxlbWFwLm8gbWVtcG9vbC5vIG9vbV9raWxsLm8gZmFkdmlzZS5vIFxcXG4tLVxubW0vTWFrZWZpbGUtNTctXHRcdFx0ICAgaW50ZXJ2YWxfdHJlZS5vIGxpc3RfbHJ1Lm8gd29ya2luZ3NldC5vIFxcXG5tbS9NYWtlZmlsZTo1ODpcdFx0XHQgICBkZWJ1Zy5vIGd1cC5vIG1tYXBfbG9jay5vIHZtYV9pbml0Lm8gJChtbXUteSlcbm1tL01ha2VmaWxlLTU5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODEzCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNTkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLZXJuZWwgQ29tcGlsYXRpb24gYW5kIFN5emthbGxlciBUZXN0aW5nIGZvciBNTVUgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGF0IGBtbXUtJChDT05GSUdfTU1VKSA6PSBoaWdobWVtLm8gLi4uYCBsaW5lIGlzIGtleS4gSWYgYENPTkZJR19NTVVgIGlzIGVuYWJsZWQgKHNldCB0byBgeWApLCB0aGUgdmFyaWFibGUgYG1tdS15YCBnZXRzIGFzc2lnbmVkIHRoZSB2YWx1ZSBmcm9tIHRoZSByaWdodCBzaWRlIG9mIHRoZSBhc3NpZ25tZW50LiBDcnVjaWFsbHksIHRoZSBgOj1gIGluZGljYXRlcyBhbiBvdmVyd3JpdGUuIFNvLCBpZiBgQ09ORklHX01NVT15YCwgYG1tdS15YCB3aWxsIGJlIGBoaWdobWVtLm9gLCBlZmZlY3RpdmVseSAqZXhjbHVkaW5nKiBgbm9tbXUub2AgZnJvbSBjb21waWxhdGlvbi4gQ29udmVyc2VseSwgaWYgYENPTkZJR19NTVVgIGlzIGRpc2FibGVkIG9yIG5vdCBzZXQsIHRoZW4gdGhlIHZhcmlhYmxlIGBtbXUtbmAgb3IgYG1tdS1gIGdldCBhc3NpZ25lZCB0aGUgdmFsdWUsIHdoaWxlIGBtbXUteWAgcmV0YWlucyBpdHMgb2xkIHZhbHVlIGFuZCBgbm9tbXUub2AgZ2V0cyBjb21waWxlZC4gVGhpcyBjb25maXJtcyB0aGF0IGBub21tdS5vYCBpcyBjb21waWxlZCAqb25seSogd2hlbiBgQ09ORklHX01NVWAgaXMgZXhwbGljaXRseSBkaXNhYmxlZC4KCk5vdywgY2FuIHdlIHRlc3QgdGhpcyBpbiBzeXprYWxsZXI/IEFic29sdXRlbHkuIFN5emthbGxlciBpcyBwZXJmZWN0bHkgY2FwYWJsZSBvZiB0ZXN0aW5nIG5vbW11IGtlcm5lbHMuIFdlIGp1c3QgbmVlZCB0byBidWlsZCBhIGtlcm5lbCB3aXRoIGBDT05GSUdfTU1VYCBkaXNhYmxlZCwgcGVyaGFwcyBvbiBhbiBhcmNoaXRlY3R1cmUgbGlrZSBBUk0gb3IgUklTQy1WLCBhbmQgcnVuIGl0IHdpdGhpbiBRRU1VLgoKSG9sZCBvbiwgdGhvdWdoLiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBpZGVudGlmeSBzcGVjaWZpYyBgQ09ORklHYCBvcHRpb25zIHJlcXVpcmVkIGZvciB0aGUgZmVhdHVyZSB1bmRlciB0ZXN0LiBXZSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIGZvciBhbnkgYGlmZGVmc2AgYW5kIGF2b2lkIGdlbmVyaWMgY29uZmlncy4gVGhlIGluc3RydWN0aW9ucyBzYXkgd2Ugc2hvdWxkbiYjMzk7dCBtYWtlIGFzc3VtcHRpb25zLCBhbmQgc2hvdWxkbiYjMzk7dCBhZGQgdGhlIGBDT05GSUdfYCBwcmVmaXguCgpUaGUgcHJvYmxlbSBpcyB0aGF0IHdlIGNhbiYjMzk7dCBkaXJlY3RseSBzcGVjaWZ5IGAhTU1VYCAob3IgZXF1aXZhbGVudCkgaW4gYEVuYWJsZUNvbmZpZ3NgLiBJdCYjMzk7cyBhIG5lZ2F0aXZlIGNvbmRpdGlvbi4gQW5kIGl0IHNlZW1zIHRoZXJlIGlzbiYjMzk7dCBhbnl0aGluZyAqZWxzZSogdGhhdCBkaXJlY3RseSBmb3JjZXMgYSBgbm9tbXVgIGNvbmZpZ3VyYXRpb247IGl0JiMzOTtzIGFsbCBiYXNlZCBvbiBgQ09ORklHX01NVWAmIzM5O3MgdmFsdWUuCgpTaW5jZSB3ZSBjYW4mIzM5O3Qgc3BlY2lmeSBhIGRpc2FibGUsIHRoZW4gd2Ugc2hvdWxkIGJlIGFibGUgdG8ganVzdCBsZWF2ZSBgRW5hYmxlQ29uZmlnc2AgZW1wdHksIGFzIG5vIGZ1cnRoZXIgY29uZmlncyBhcmUgcmVxdWlyZWQuCgpUbyBkb3VibGUtY2hlY2sgdGhpcywgbGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGVyZSBpc24mIzM5O3QgYW55IGFyY2hpdGVjdHVyZSB0aGF0JiMzOTtzIG5vbW11IGJ5IGRlZmF1bHQsIG9yIHNvbWUgb3RoZXIgY29uZmlnIHRoYXQgZm9yY2VzIGBub21tdWAuIFNjYW5uaW5nIHRocm91Z2ggdGhlIGFyY2hpdGVjdHVyZXMsIG02OGssIEFSTSwgUklTQy1WLCBzaCwgbWljcm9ibGF6ZSwgeHRlbnNhLCBuaW9zMiwgY3NreSwgYW5kIGFyYyBhbGwgaGF2ZSBhIGNvbmZpZ3VyYWJsZSBgQ09ORklHX01NVWAuIEhvd2V2ZXIsIGhleGFnb24mIzM5O3MgY29uZmlndXJhdGlvbiBpcyBzdXNwZWN0LiBJdCB3YXJyYW50cyBmdXJ0aGVyIGludmVzdGlnYXRpb24sIGJ1dCBwcm9iYWJseSBkb2VzbiYjMzk7dCBpbXBhY3Qgb3VyIHdvcmsgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1NVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvaGV4YWdvbi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvaGV4YWdvbi9LY29uZmlnPTUzPWNvbmZpZyBFQVJMWV9QUklOVEtcbi0tXG5hcmNoL2hleGFnb24vS2NvbmZpZy01NS1cbmFyY2gvaGV4YWdvbi9LY29uZmlnOjU2OmNvbmZpZyBNTVVcbmFyY2gvaGV4YWdvbi9LY29uZmlnLTU3LVx0ZGVmX2Jvb2wgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDA0OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIGEgbW9yZSBleHBlcmllbmNlZCBwZXJzcGVjdGl2ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgTU1VIGluIGEgQy1TS1kgQXJjaGl0ZWN0dXJlIENvbnRleHQqKgoKUmlnaHQsIHNvIEhleGFnb24gaGFzIE1lbW9yeSBNYW5hZ2VtZW50IFVuaXRzLCB0aGF0IG11Y2ggaXMgY2xlYXIuIEJ1dCBteSBpbW1lZGlhdGUgY29uY2VybiBub3cgaXMgYWJvdXQgaG93IHRoYXQgaW50ZXJhY3RzIHdpdGggYSBDLVNLWSBhcmNoaXRlY3R1cmUsIGFuZCBpbiBwYXJ0aWN1bGFyLCBpdHMgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgYXJjaC9jc2t5L0tjb25maWdgIGZpbGUuIEkmIzM5O20gd29uZGVyaW5nIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgc2V0dGluZ3Mgb3IgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGF0IGNvbmZpZ3VyYXRpb24gdGhhdCByZWxhdGUgdG8gb3IgY29udHJvbCBNTVUgZnVuY3Rpb25hbGl0eSBmb3IgdGhpcyBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyZS4gSXQmIzM5O3MgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIE1NVSBpcyBleHBvc2VkIGFuZCBlbmFibGVkIChvciBkaXNhYmxlZCkgYXQgdGhlIGJ1aWxkIGxldmVsIGZvciB0aGlzIEMtU0tZIHN5c3RlbSwgYW5kIHdoYXQgY2hvaWNlcyBhcmUgYXZhaWxhYmxlLiBUaGlzIEtjb25maWcgZmlsZSBpcyB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSBhbnN3ZXJzIHRvIHRob3NlIHF1ZXN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1NVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvY3NreS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvY3NreS9LY29uZmlnPTE1Nz1jb25maWcgR0VORVJJQ19IV0VJR0hUXG4tLVxuYXJjaC9jc2t5L0tjb25maWctMTU5LVxuYXJjaC9jc2t5L0tjb25maWc6MTYwOmNvbmZpZyBNTVVcbmFyY2gvY3NreS9LY29uZmlnLTE2MS1cdGRlZl9ib29sIHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzNTMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXM6CgoqKk1lbW9yeSBNYW5hZ2VtZW50IFVuaXQgQ29uc2lkZXJhdGlvbnMgZm9yIENza3kqKgoKT2theSwgc28gQ3NreSBoYXMgYSBNZW1vcnkgTWFuYWdlbWVudCBVbml0IChNTVUpLCB0aGF0JiMzOTtzIGdvb2QgdG8ga25vdy4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsLiBXaGVyZSB3b3VsZCBJIGV4cGVjdCB0byBmaW5kIHRoZSByZWxldmFudCBzZXR0aW5ncz8gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBLY29uZmlnIGZpbGVzLiBHaXZlbiB0aGF0LCBJIHNob3VsZCBsb29rIGF0IGBhcmNoL202OGsvS2NvbmZpZ2AsIGl0JiMzOTtzIG5vdCB0aGUgY29ycmVjdCBhcmNoaXRlY3R1cmUsIGJ1dCB0aGlzIGZpbGUgaXMgb2Z0ZW4gYSBnb29kIHBsYWNlIHRvIHN0YXJ0IHRvIHNlZSBob3cgTU1VIHN1cHBvcnQgaXMgZ2VuZXJhbGx5IGhhbmRsZWQgd2l0aGluIHRoZSBrZXJuZWwgYW5kIGlmIHRoYXQgaGVscHMgbWUgZGV0ZXJtaW5lIHRoZSB0eXBpY2FsIGxvY2F0aW9uLiBJIGNhbiBhZGFwdCB0aGUga25vd2xlZGdlIEkgZ2FpbiBoZXJlIHRvIHRoZSBDc2t5IGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNTVUgaXMgZXhwb3NlZCBhbmQgZW5hYmxlZCBmb3IgQ3NreSwgYW5kIHRoZSBLY29uZmlnIGZpbGVzIGFyZSB0aGUgcGxhY2UgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNTVUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL202OGsvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL202OGsvS2NvbmZpZz03OT1jb25maWcgUEdUQUJMRV9MRVZFTFNcbi0tXG5hcmNoL202OGsvS2NvbmZpZy04Mi1cbmFyY2gvbTY4ay9LY29uZmlnOjgzOmNvbmZpZyBNTVVcbmFyY2gvbTY4ay9LY29uZmlnLTg0LVx0Ym9vbCBcJiMzNDtNTVUtYmFzZWQgUGFnZWQgTWVtb3J5IE1hbmFnZW1lbnQgU3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvbTY4ay9LY29uZmlnLTg5LVxuYXJjaC9tNjhrL0tjb25maWc6OTA6Y29uZmlnIE1NVV9NT1RPUk9MQVxuYXJjaC9tNjhrL0tjb25maWctOTEtXHRkZWZfYm9vbCBNTVUgXHUwMDI2XHUwMDI2IE02OEtDTEFTU0lDXG4tLVxuYXJjaC9tNjhrL0tjb25maWctOTMtXG5hcmNoL202OGsvS2NvbmZpZzo5NDpjb25maWcgTU1VX0NPTERGSVJFXG5hcmNoL202OGsvS2NvbmZpZy05NS1cdGRlZl9ib29sIE1NVSBcdTAwMjZcdTAwMjYgQ09MREZJUkVcbi0tXG5hcmNoL202OGsvS2NvbmZpZy05Ny1cbmFyY2gvbTY4ay9LY29uZmlnOjk4OmNvbmZpZyBNTVVfU1VOM1xuYXJjaC9tNjhrL0tjb25maWctOTktXHRkZWZfYm9vbCBNTVUgXHUwMDI2XHUwMDI2IFNVTjNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA4NjgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMTM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uOiBBIE5vbW11IE1lbW9yeSBNYW5hZ2VtZW50IERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBNNjhrIGNvZGUsIGFuZCB0aGUgTU1VIGNvbmZpZ3VyYXRpb24gaXMga2V5IOKAkyBgQ09ORklHX01NVWAgaXMgdGhlIG9idmlvdXMgZmxhZywgYnV0IHdlIGNhbiYjMzk7dCBkaXJlY3RseSB1c2UgYCFNTVVgIGluIGBFbmFibGVDb25maWdzYC4gSG1tLCB0aGVyZSBkb2VzbiYjMzk7dCBzZWVtIHRvIGJlIGEgY29uZmlndXJhdGlvbiBvcHRpb24gc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciB0aGlzIGNhc2UuIEJ1dCBpdCAqaXMqIHdvcnRoIGNvbnNpZGVyaW5nIGFzIGEgZnV6emluZyB0YXJnZXQgYmVjYXVzZSBpdCYjMzk7cyBoYW5kbGluZyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50ICpzcGVjaWZpY2FsbHkqIGZvciBub21tdSBzeXN0ZW1zLgoKTm93LCBhIHBvdGVudGlhbCByb2FkYmxvY2s6IGlmIGl0JiMzOTtzIG5vbW11LCBjYW4gaXQgZXZlbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVU/IFllcywgUUVNVSBzdXBwb3J0cyBub21tdSB0YXJnZXRzLCBmb3IgaW5zdGFuY2UgdXNpbmcgdGhlIGBxZW11LXN5c3RlbS1hcm0gLU0gdmVyc2F0aWxlcGJgIGNvbmZpZ3VyYXRpb24gd2l0aCBhIG5vbW11IGtlcm5lbCwgb3IgYWxzbyBgcWVtdS1zeXN0ZW0tcmlzY3Y2NGAgd2l0aCBhIG5vbW11IGtlcm5lbC4gU28geWVzLCBpdCYjMzk7cyByZWFjaGFibGUuCgpJcyB0aGlzIHBhdGNoIGZ1bmN0aW9uYWwsIHRob3VnaD8gTG9va2luZyBhdCB0aGUgY29kZSBhZ2FpbiwgSSBzZWUgaXQmIzM5O3MgZml4aW5nIGFuIGVycm9yIHBhdGggaW4gYGRvX21tYXBgLiBTcGVjaWZpY2FsbHksIHRoaXMgcGF0Y2ggbW9kaWZpZXMgYGRvX21tYXBgIGluIGBtbS9ub21tdS5jYCwgd2hpY2ggaXMgdGhlIG1haW4gbW1hcCBpbXBsZW1lbnRhdGlvbiBpbiBub21tdSBzeXN0ZW1zLCBzbyBpdCYjMzk7cyBhIHZlcnkgaG90LXBhdGggZnVuY3Rpb24uIFRoZSBwYXRjaCBtb2RpZmllcyBgZG9fbW1hcGAgYW5kIGl0cyBlcnJvciBoYW5kbGluZy4gSSB3YW50IHRvIGNoZWNrIGBtbS9ub21tdS5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIG90aGVyIGZ1bmN0aW9ucy4KCkxldCYjMzk7cyBjaGVjayB0aGUgcGF0Y2g6IEl0IGxvb2tzIGxpa2UgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIGBhZGRfbm9tbXVfcmVnaW9uKHJlZ2lvbilgIHJpZ2h0IGFmdGVyIHRoZSBjYWxsIHRvIGBkb19tbWFwX3ByaXZhdGVgLCBidXQgbm93IGl0JiMzOTtzIG1vdmVkICphZnRlciogYSBgdm1hX2l0ZXJfcHJlYWxsb2NgIGNhbGwuIFRoaXMgc3VnZ2VzdHMgYSBjaGFuZ2UgaW4gaG93IG1lbW9yeSByZWdpb25zIGFyZSBtYW5hZ2VkIGluIHRoZSBub21tdSBlbnZpcm9ubWVudCwgcGFydGljdWxhcmx5IHdoZW4gaGFuZGxpbmcgZXJyb3JzLiBUaGUgY29kZSBub3cgaGFuZGxlcyB0aGUgZXJyb3JzIHdpdGggYHZtYV9pdGVyX2ZyZWUoJmFtcDt2bWkpO2AsIGBmcHV0KHZtYS0mZ3Q7dm1fZmlsZSk7YCBhbmQgYHZtX2FyZWFfZnJlZSh2bWEpO2AuIElmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgcHJlYWxsb2NhdGlvbiwgaXQgbm93IGZyZWVzIHRoZSByZWdpb24gYW5kIGNhbGxzIGB2bWFfY2xvc2Uodm1hKTtgLCBhbmQgdGhlbiBjYWxscyBga21lbV9jYWNoZV9mcmVlKHZtX3JlZ2lvbl9qYXIsIHJlZ2lvbik7YC4gVGhlIHBhdGNoIGFkZHMgc29tZSBuZXcgZXJyb3JzLgoKVGhpcyBmdW5jdGlvbiBgZG9fbW1hcGAgaXRzZWxmIHNlZW1zIHRvIGJlIHRoZSBmb2N1cyBoZXJlLgoKU28sIGBkb19tbWFwYCBpcyB0aGUgcHJpbWFyeSB0YXJnZXQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnVuc2lnbmVkIGxvbmcgZG9fbW1hcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL25vbW11LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vbm9tbXUuYz05MTQ9c3RhdGljIGludCBkb19tbWFwX3ByaXZhdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxubW0vbm9tbXUuYy0xMDExLSAqL1xubW0vbm9tbXUuYzoxMDEyOnVuc2lnbmVkIGxvbmcgZG9fbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSxcbm1tL25vbW11LmMtMTAxMy1cdFx0XHR1bnNpZ25lZCBsb25nIGFkZHIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNjU1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogODUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJlYXNvbmluZyB0aHJvdWdoIHRoZSBQYXRjaCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgSSBzZWUgdGhhdCB0aGUgb25seSBtb2RpZmllZCBmdW5jdGlvbiBpcyBgZG9fbW1hcGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbmNsdWRlIGl0IGluIGBGb2N1c1N5bWJvbHNgLCBidXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgYGRvX21tYXBgIGlzIGNhbGxlZCBmb3IgZXZlcnkgYG1tYXBgIHN5c2NhbGwuIFRoYXQgbWFrZXMgaXQgYSBzZXJpb3VzIGhvdC1wYXRoIGZ1bmN0aW9uLCBhbmQgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgc2F5cyB0byBhdm9pZCB0aG9zZSB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIEkgbmVlZCB0byBmb2N1cyBvbiB0aGUgZXJyb3IgcGF0aHMsIG5vdCB0aGUgY29tbW9uIGV4ZWN1dGlvbi4KClNvLCBpZiBJIGRvbiYjMzk7dCBzcGVjaWZ5IGBkb19tbWFwYCwgd2hhdCAqZG8qIEkgc3BlY2lmeT8gSG1tLCBtYXliZSBgZG9fbW1hcF9wcml2YXRlYD8gTm8sIHRoYXQmIzM5O3Mgbm90IGJlZW4gbW9kaWZpZWQuIEJ1dCB0aGUgZXJyb3IgcGF0aCBJICp3YW50KiB0byB0ZXN0IGlzIHRyaWdnZXJlZCB3aGVuIGB2bWFfaXRlcl9wcmVhbGxvY2AgZmFpbHMuIFRoYXQmIzM5O3MgYW4gZXJyb3IgaW5qZWN0aW9uIHNjZW5hcmlvLCBhbmQgdGhhdCYjMzk7cyB0aGUga2V5LiBTaG91bGQgSSBsaXN0IGFueSBvdGhlciBmdW5jdGlvbj8gTm9wZS4KCkxldCBtZSBnbyBiYWNrIGFuZCByZS1yZWFkIHRoZSBwcm9tcHQmIzM5O3MgY3JpdGVyaWEgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBEb2N1bWVudGF0aW9uLCBsb2dnaW5nLCBkZWNvcmF0aXZlIGNoYW5nZXMsIGNvbnN0YW50cyB3aXRob3V0IGZ1bmN0aW9uYWwgaW1wYWN0LCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhz4oCmIG5vbmUgb2YgdGhvc2UgYXBwbHkgaGVyZS4gSSYjMzk7bSBmb2N1c2luZyBvbiBhIHNwZWNpZmljIGVycm9yIGhhbmRsaW5nIGJyYW5jaCwgbm90IHRoZSBwcmltYXJ5IG1tYXAgcGF0aC4KCk5vdywgdGhlIHF1ZXN0aW9uIGlzIGFib3V0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSXMgdGhpcyBjb2RlIHJlYWNoYWJsZSBpbiBRRU1VPyBZZXMsIGRlZmluaXRlbHkuIFdlIGNhbiBlbXVsYXRlIG5vbW11IHN5c3RlbXMgd2l0aCBRRU1VIChBUk0gQ29ydGV4LU0sIFJJU0MtViBub21tdSksIGFuZCBTeXprYWxsZXIgZXZlbiBzdXBwb3J0cyB0ZXN0aW5nIHRoZXNlIHR5cGVzIG9mIGtlcm5lbHMuCgpOZXh0LCBkbyBJIG5lZWQgYW55IHNwZWNpZmljIGBDT05GSUdfYCBvcHRpb25zPyBXZWxsLCBjbGVhcmx5LCBgQ09ORklHX01NVWAgbmVlZHMgdG8gYmUgZGlzYWJsZWQuIEJ1dCBJIGNhbiYjMzk7dCBzcGVjaWZ5IGAhQ09ORklHX01NVWAgaW4gYEVuYWJsZUNvbmZpZ3NgLiBJcyB0aGVyZSBhbnkgb3RoZXIgY29uZmlnPyBJJiMzOTtsbCBjaGVjayBgbW0vS2NvbmZpZ2AsIGFuZCB5ZXMsIHRoZXJlIGlzIGBDT05GSUdfTk9NTVVfSU5JVElBTF9UUklNX0VYQ0VTU2AuIEJ1dCB0aGF0JiMzOTtzIG5vdCByZXF1aXJlZCB0byB0ZXN0IHRoaXMuIFNvIGBFbmFibGVDb25maWdzYCBzaG91bGQgYmUgZW1wdHkuCgpMZXQgbWUgZG91YmxlLWNoZWNrIG9uY2UgbW9yZToganVzdCBgZG9fbW1hcGAgaW4gYG1tL25vbW11LmNgPyBZZXMsIHRoYXQgaXMgY29ycmVjdC4KCk9rYXksIGxldCYjMzk7cyBjaXJjbGUgYmFjayB0byB0aGUgaG90LXBhdGggY29uY2Vybi4gYGRvX21tYXBgICppcyogdmVyeSBmcmVxdWVudCwgYSBnZW5lcmljIGhvdC1wYXRoLiBGdXp6aW5nIGl0IGRpcmVjdGx5IHdvdWxkIGxpa2VseSBqdXN0IGdlbmVyYXRlIGxvdHMgb2Ygc3RhbmRhcmQgYG1tYXBgIGNhbGxzIHRoYXQgU3l6a2FsbGVyIGlzIGFscmVhZHkgZ29vZCBhdCwgYW5kIEkmIzM5O2QgbWlzcyB0aGUgZXJyb3IgY29uZGl0aW9ucy4gVGhlIHByb21wdCBzYXlzLCAmIzM0O0F2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLiYjMzQ7IExlYXZpbmcgYEZvY3VzU3ltYm9sc2AgZW1wdHkgc2VlbXMgbGlrZSB0aGUgcmlnaHQgY2FsbCBoZXJlLgoKU28sIGxldCYjMzk7cyB3cml0ZSBvdXQgdGhlIGxvZ2ljOiBUaGUgcGF0Y2ggZml4ZXMgYW4gZXJyb3IgaW4gYGRvX21tYXBgIGZvciBub21tdSBhcmNoaXRlY3R1cmVzLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgYSBmYWlsdXJlIGluIGB2bWFfaXRlcl9wcmVhbGxvY2AuIEl0JiMzOTtzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGFuZCBgZG9fbW1hcGAgaXMgYSBob3QtcGF0aCBmdW5jdGlvbi4gIEZvY3VzU3ltYm9scyBzaG91bGQgc3RheSBlbXB0eS4gTm8gc3BlY2lmaWMgY29uZmlncyBuZWVkIHRvIGJlIGVuYWJsZWQgYmVjYXVzZSBpdCBydW5zIHdoZW4gYENPTkZJR19NTVVgIGlzIGRpc2FibGVkLiBUaGF0JiMzOTtzIHRoZSBjb3JyZWN0IHdheSB0byB0aGluayBhYm91dCB0aGlzLiBMZXQgbWUgdmVyaWZ5IGFnYWluIHRoYXQgb25seSBgZG9fbW1hcGAgaXMgY2hhbmdlZC4uLiBZZXAsIG9ubHkgYGRvX21tYXBgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAyMToyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlcnJvcl92bWFfaXRlcl9wcmVhbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL25vbW11LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vbm9tbXUuYz0xMDEyPXVuc2lnbmVkIGxvbmcgZG9fbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5tbS9ub21tdS5jLTEyMDAtXHRpZiAodm1hX2l0ZXJfcHJlYWxsb2MoXHUwMDI2dm1pLCB2bWEpKVxubW0vbm9tbXUuYzoxMjAxOlx0XHRnb3RvIGVycm9yX3ZtYV9pdGVyX3ByZWFsbG9jO1xubW0vbm9tbXUuYy0xMjAyLVxuLS1cbm1tL25vbW11LmMtMTI0Ni1cbm1tL25vbW11LmM6MTI0NzplcnJvcl92bWFfaXRlcl9wcmVhbGxvYzpcbm1tL25vbW11LmMtMTI0OC1cdHByX3dhcm4oXCYjMzQ7QWxsb2NhdGlvbiBvZiB2bWEgaXRlcmF0b3IgZm9yIHByb2Nlc3MgJWQgZmFpbGVkXFxuXCYjMzQ7LCBjdXJyZW50LVx1MDAzZXBpZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDIxOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDA0CgkJCQkJCQlvdXRwdXQ6IDE0OAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGV4cHJlc3NlZCBhcyB0aG91Z2ggdGhlc2Ugd2VyZSBteSBvd24gdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCB0aGUgY29yZSByZXF1aXJlbWVudCBoZXJlIGlzIHN0cmFpZ2h0Zm9yd2FyZDogaXQmIzM5O3MgYWxsIGFib3V0IGBkb19tbWFwYC4gR290IGl0LiBMZXQmIzM5O3Mgbm90IG92ZXJjb21wbGljYXRlIHRoaW5ncy4KCk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBzY2FuIGZvciBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIG9yIGNvbmRpdGlvbmFsIGJyYW5jaGVzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoZSBmbG93LiBOb3BlLCBub3RoaW5nIGVsc2UuIEp1c3QgYSBjbGVhbiwgZGlyZWN0IHBhdGggZm9yd2FyZC4KClRoZXJlZm9yZSwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4gRG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMjE6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiBgZG9fbW1hcGAgaW4gYG1tL25vbW11LmNgIHRvIGZpeCBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBvciB1c2UtYWZ0ZXItZnJlZSB3aGVuIGB2bWFfaXRlcl9wcmVhbGxvY2AgZmFpbHMuIFRoaXMgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBmb3Igbm9tbXUgYXJjaGl0ZWN0dXJlcywgd2hpY2ggY2FuIGJlIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBgZG9fbW1hcGAgaXMgYSBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9uLCBzbyBpdCBpcyBvbWl0dGVkIGZyb20gRm9jdXNTeW1ib2xzLiBUaGUgY29kZSBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfTU1VYCBpcyBkaXNhYmxlZCwgc28gbm8gc3BlY2lmaWMgY29uZmlncyBuZWVkIHRvIGJlIGV4cGxpY2l0bHkgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgYGRvX21tYXBgIGluIGBtbS9ub21tdS5jYCB0byBmaXggYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgdXNlLWFmdGVyLWZyZWUgd2hlbiBgdm1hX2l0ZXJfcHJlYWxsb2NgIGZhaWxzLiBUaGlzIGlzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgZm9yIG5vbW11IGFyY2hpdGVjdHVyZXMsIHdoaWNoIGNhbiBiZSB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gYGRvX21tYXBgIGlzIGEgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbiwgc28gaXQgaXMgb21pdHRlZCBmcm9tIEZvY3VzU3ltYm9scy4gVGhlIGNvZGUgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX01NVWAgaXMgZGlzYWJsZWQsIHNvIG5vIHNwZWNpZmljIGNvbmZpZ3MgbmVlZCB0byBiZSBleHBsaWNpdGx5IGVuYWJsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNTowOC4wNzQ1NTI4MDRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTI4Njc1MDI3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgYGRvX21tYXBgIGluIGBtbS9ub21tdS5jYCB0byBmaXggYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgdXNlLWFmdGVyLWZyZWUgd2hlbiBgdm1hX2l0ZXJfcHJlYWxsb2NgIGZhaWxzLiBUaGlzIGlzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgZm9yIG5vbW11IGFyY2hpdGVjdHVyZXMsIHdoaWNoIGNhbiBiZSB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gYGRvX21tYXBgIGlzIGEgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbiwgc28gaXQgaXMgb21pdHRlZCBmcm9tIEZvY3VzU3ltYm9scy4gVGhlIGNvZGUgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX01NVWAgaXMgZGlzYWJsZWQsIHNvIG5vIHNwZWNpZmljIGNvbmZpZ3MgbmVlZCB0byBiZSBleHBsaWNpdGx5IGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI1OjA4LjA3NDU1Njc5NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQyNDU0NTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjEzNTA5ODYzOWQzYTE4ZjEzOWYxOTk4ZWNlZjRiZmI1OTc3ZWFlNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCA4IDIxOjI1OjA2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21tL25vbW11LmMgYi9tbS9ub21tdS5jXFxuaW5kZXggODE1ZWJlZmRkZmFlZjMuLjg1MmVjOWJkMDUwNTkyIDEwMDY0NFxcbi0tLSBhL21tL25vbW11LmNcXG4rKysgYi9tbS9ub21tdS5jXFxuQEAgLTExODEsNyArMTE4MSw2IEBAIHVuc2lnbmVkIGxvbmcgZG9fbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4gXFx0XFx0cmV0ID0gZG9fbW1hcF9wcml2YXRlKHZtYSwgcmVnaW9uLCBsZW4sIGNhcGFiaWxpdGllcyk7XFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiBcXHRcXHRnb3RvIGVycm9yX2p1c3RfZnJlZTtcXG4tXFx0YWRkX25vbW11X3JlZ2lvbihyZWdpb24pO1xcbiBcXG4gXFx0LyogY2xlYXIgYW5vbnltb3VzIG1hcHBpbmdzIHRoYXQgZG9uJ3QgYXNrIGZvciB1bmluaXRpYWxpemVkIGRhdGEgKi9cXG4gXFx0aWYgKCF2bWEtXFx1MDAzZXZtX2ZpbGUgXFx1MDAyNlxcdTAwMjZcXG5AQCAtMTE5OSw3ICsxMTk4LDkgQEAgdW5zaWduZWQgbG9uZyBkb19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLFxcbiBcXHRCVUdfT04oIXZtYS1cXHUwMDNldm1fcmVnaW9uKTtcXG4gXFx0dm1hX2l0ZXJfY29uZmlnKFxcdTAwMjZ2bWksIHZtYS1cXHUwMDNldm1fc3RhcnQsIHZtYS1cXHUwMDNldm1fZW5kKTtcXG4gXFx0aWYgKHZtYV9pdGVyX3ByZWFsbG9jKFxcdTAwMjZ2bWksIHZtYSkpXFxuLVxcdFxcdGdvdG8gZXJyb3JfanVzdF9mcmVlO1xcbitcXHRcXHRnb3RvIGVycm9yX3ZtYV9pdGVyX3ByZWFsbG9jO1xcbitcXG4rXFx0YWRkX25vbW11X3JlZ2lvbihyZWdpb24pO1xcbiBcXG4gXFx0c2V0dXBfdm1hX3RvX21tKHZtYSwgY3VycmVudC1cXHUwMDNlbW0pO1xcbiBcXHRjdXJyZW50LVxcdTAwM2VtbS1cXHUwMDNlbWFwX2NvdW50Kys7XFxuQEAgLTEyMTgsMjIgKzEyMTksNDEgQEAgdW5zaWduZWQgbG9uZyBkb19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLFxcbiBcXHRyZXR1cm4gcmVzdWx0O1xcbiBcXG4gZXJyb3JfanVzdF9mcmVlOlxcbitcXHR2bWFfY2xvc2Uodm1hKTtcXG4rXFx0LyogaWYgdGhlIGVycm9yIHdhcyBmcm9tIHNoYXJlZCBtYXBwaW5nL2V4aXN0aW5nIHJlZ2lvbiwgZG9uJ3QgZnJlZSB0aGUgcmVnaW9uLlxcbitcXHQgKiB0aGlzIGhhcyB0byBiZSBiZWZvcmUgcmVsZWFzaW5nIHNlbWFwaG9yZS5cXG4rXFx0ICovXFxuK1xcdGlmIChyZWdpb24tXFx1MDAzZXZtX3VzYWdlID09IDEpIHtcXG4rXFx0XFx0aWYgKHJlZ2lvbi1cXHUwMDNldm1fZmlsZSlcXG4rXFx0XFx0XFx0ZnB1dChyZWdpb24tXFx1MDAzZXZtX2ZpbGUpO1xcbitcXHRcXHRrbWVtX2NhY2hlX2ZyZWUodm1fcmVnaW9uX2phciwgcmVnaW9uKTtcXG4rXFxuK1xcdH0gZWxzZVxcbitcXHRcXHRyZWdpb24tXFx1MDAzZXZtX3VzYWdlLS07XFxuK1xcbiBcXHR1cF93cml0ZShcXHUwMDI2bm9tbXVfcmVnaW9uX3NlbSk7XFxuLWVycm9yOlxcbiBcXHR2bWFfaXRlcl9mcmVlKFxcdTAwMjZ2bWkpO1xcbi1cXHRpZiAocmVnaW9uLVxcdTAwM2V2bV9maWxlKVxcbi1cXHRcXHRmcHV0KHJlZ2lvbi1cXHUwMDNldm1fZmlsZSk7XFxuLVxcdGttZW1fY2FjaGVfZnJlZSh2bV9yZWdpb25famFyLCByZWdpb24pO1xcbitcXG4gXFx0aWYgKHZtYS1cXHUwMDNldm1fZmlsZSlcXG4gXFx0XFx0ZnB1dCh2bWEtXFx1MDAzZXZtX2ZpbGUpO1xcbiBcXHR2bV9hcmVhX2ZyZWUodm1hKTtcXG4gXFx0cmV0dXJuIHJldDtcXG4gXFxuIHNoYXJpbmdfdmlvbGF0aW9uOlxcbi1cXHR1cF93cml0ZShcXHUwMDI2bm9tbXVfcmVnaW9uX3NlbSk7XFxuIFxcdHByX3dhcm4oXFxcIkF0dGVtcHQgdG8gc2hhcmUgbWlzbWF0Y2hlZCBtYXBwaW5nc1xcXFxuXFxcIik7XFxuIFxcdHJldCA9IC1FSU5WQUw7XFxuLVxcdGdvdG8gZXJyb3I7XFxuK1xcdGdvdG8gZXJyb3JfanVzdF9mcmVlO1xcbitcXG4rZXJyb3Jfdm1hX2l0ZXJfcHJlYWxsb2M6XFxuK1xcdHByX3dhcm4oXFxcIkFsbG9jYXRpb24gb2Ygdm1hIGl0ZXJhdG9yIGZvciBwcm9jZXNzICVkIGZhaWxlZFxcXFxuXFxcIiwgY3VycmVudC1cXHUwMDNlcGlkKTtcXG4rXFx0c2hvd19tZW0oKTtcXG4rXFx0cmV0ID0gLUVOT01FTTtcXG4rXFxuK1xcdC8qIGluIGNhc2UgdGhhdCB0aGUgcmVnaW9uIGlzIGFsbG9jYXRlZCB2aWEgZG9fbW1hcF9wcml2YXRlKCkgKi9cXG4rXFx0aWYgKChyZWdpb24tXFx1MDAzZXZtX3VzYWdlID09IDEpIFxcdTAwMjZcXHUwMDI2IChyZWdpb24tXFx1MDAzZXZtX2ZsYWdzIFxcdTAwMjYgVk1fTUFQUEVEX0NPUFkpKVxcbitcXHRcXHRmcmVlX3BhZ2Vfc2VyaWVzKHJlZ2lvbi1cXHUwMDNldm1fc3RhcnQsIHJlZ2lvbi1cXHUwMDNldm1fdG9wKTtcXG4rXFxuK1xcdGdvdG8gZXJyb3JfanVzdF9mcmVlO1xcbiBcXG4gZXJyb3JfZ2V0dGluZ192bWE6XFxuIFxcdGttZW1fY2FjaGVfZnJlZSh2bV9yZWdpb25famFyLCByZWdpb24pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNTowOC42MTc2NjQ3NzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg4NzQzNjMzMDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiBgZG9fbW1hcGAgaW4gYG1tL25vbW11LmNgIHRvIGZpeCBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBvciB1c2UtYWZ0ZXItZnJlZSB3aGVuIGB2bWFfaXRlcl9wcmVhbGxvY2AgZmFpbHMuIFRoaXMgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBmb3Igbm9tbXUgYXJjaGl0ZWN0dXJlcywgd2hpY2ggY2FuIGJlIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBgZG9fbW1hcGAgaXMgYSBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9uLCBzbyBpdCBpcyBvbWl0dGVkIGZyb20gRm9jdXNTeW1ib2xzLiBUaGUgY29kZSBpcyBjb21waWxlZCB3aGVuIGBDT05GSUdfTU1VYCBpcyBkaXNhYmxlZCwgc28gbm8gc3BlY2lmaWMgY29uZmlncyBuZWVkIHRvIGJlIGV4cGxpY2l0bHkgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2MTM1MDk4NjM5ZDNhMThmMTM5ZjE5OThlY2VmNGJmYjU5NzdlYWU2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAyMToyNTowNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL25vbW11LmMgYi9tbS9ub21tdS5jXG5pbmRleCA4MTVlYmVmZGRmYWVmMy4uODUyZWM5YmQwNTA1OTIgMTAwNjQ0XG4tLS0gYS9tbS9ub21tdS5jXG4rKysgYi9tbS9ub21tdS5jXG5AQCAtMTE4MSw3ICsxMTgxLDYgQEAgdW5zaWduZWQgbG9uZyBkb19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRyZXQgPSBkb19tbWFwX3ByaXZhdGUodm1hLCByZWdpb24sIGxlbiwgY2FwYWJpbGl0aWVzKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdGdvdG8gZXJyb3JfanVzdF9mcmVlO1xuLVx0YWRkX25vbW11X3JlZ2lvbihyZWdpb24pO1xuIFxuIFx0LyogY2xlYXIgYW5vbnltb3VzIG1hcHBpbmdzIHRoYXQgZG9uJ3QgYXNrIGZvciB1bmluaXRpYWxpemVkIGRhdGEgKi9cbiBcdGlmICghdm1hLVx1MDAzZXZtX2ZpbGUgXHUwMDI2XHUwMDI2XG5AQCAtMTE5OSw3ICsxMTk4LDkgQEAgdW5zaWduZWQgbG9uZyBkb19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0QlVHX09OKCF2bWEtXHUwMDNldm1fcmVnaW9uKTtcbiBcdHZtYV9pdGVyX2NvbmZpZyhcdTAwMjZ2bWksIHZtYS1cdTAwM2V2bV9zdGFydCwgdm1hLVx1MDAzZXZtX2VuZCk7XG4gXHRpZiAodm1hX2l0ZXJfcHJlYWxsb2MoXHUwMDI2dm1pLCB2bWEpKVxuLVx0XHRnb3RvIGVycm9yX2p1c3RfZnJlZTtcbitcdFx0Z290byBlcnJvcl92bWFfaXRlcl9wcmVhbGxvYztcbitcbitcdGFkZF9ub21tdV9yZWdpb24ocmVnaW9uKTtcbiBcbiBcdHNldHVwX3ZtYV90b19tbSh2bWEsIGN1cnJlbnQtXHUwMDNlbW0pO1xuIFx0Y3VycmVudC1cdTAwM2VtbS1cdTAwM2VtYXBfY291bnQrKztcbkBAIC0xMjE4LDIyICsxMjE5LDQxIEBAIHVuc2lnbmVkIGxvbmcgZG9fbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcdHJldHVybiByZXN1bHQ7XG4gXG4gZXJyb3JfanVzdF9mcmVlOlxuK1x0dm1hX2Nsb3NlKHZtYSk7XG4rXHQvKiBpZiB0aGUgZXJyb3Igd2FzIGZyb20gc2hhcmVkIG1hcHBpbmcvZXhpc3RpbmcgcmVnaW9uLCBkb24ndCBmcmVlIHRoZSByZWdpb24uXG4rXHQgKiB0aGlzIGhhcyB0byBiZSBiZWZvcmUgcmVsZWFzaW5nIHNlbWFwaG9yZS5cbitcdCAqL1xuK1x0aWYgKHJlZ2lvbi1cdTAwM2V2bV91c2FnZSA9PSAxKSB7XG4rXHRcdGlmIChyZWdpb24tXHUwMDNldm1fZmlsZSlcbitcdFx0XHRmcHV0KHJlZ2lvbi1cdTAwM2V2bV9maWxlKTtcbitcdFx0a21lbV9jYWNoZV9mcmVlKHZtX3JlZ2lvbl9qYXIsIHJlZ2lvbik7XG4rXG4rXHR9IGVsc2VcbitcdFx0cmVnaW9uLVx1MDAzZXZtX3VzYWdlLS07XG4rXG4gXHR1cF93cml0ZShcdTAwMjZub21tdV9yZWdpb25fc2VtKTtcbi1lcnJvcjpcbiBcdHZtYV9pdGVyX2ZyZWUoXHUwMDI2dm1pKTtcbi1cdGlmIChyZWdpb24tXHUwMDNldm1fZmlsZSlcbi1cdFx0ZnB1dChyZWdpb24tXHUwMDNldm1fZmlsZSk7XG4tXHRrbWVtX2NhY2hlX2ZyZWUodm1fcmVnaW9uX2phciwgcmVnaW9uKTtcbitcbiBcdGlmICh2bWEtXHUwMDNldm1fZmlsZSlcbiBcdFx0ZnB1dCh2bWEtXHUwMDNldm1fZmlsZSk7XG4gXHR2bV9hcmVhX2ZyZWUodm1hKTtcbiBcdHJldHVybiByZXQ7XG4gXG4gc2hhcmluZ192aW9sYXRpb246XG4tXHR1cF93cml0ZShcdTAwMjZub21tdV9yZWdpb25fc2VtKTtcbiBcdHByX3dhcm4oXCJBdHRlbXB0IHRvIHNoYXJlIG1pc21hdGNoZWQgbWFwcGluZ3NcXG5cIik7XG4gXHRyZXQgPSAtRUlOVkFMO1xuLVx0Z290byBlcnJvcjtcbitcdGdvdG8gZXJyb3JfanVzdF9mcmVlO1xuK1xuK2Vycm9yX3ZtYV9pdGVyX3ByZWFsbG9jOlxuK1x0cHJfd2FybihcIkFsbG9jYXRpb24gb2Ygdm1hIGl0ZXJhdG9yIGZvciBwcm9jZXNzICVkIGZhaWxlZFxcblwiLCBjdXJyZW50LVx1MDAzZXBpZCk7XG4rXHRzaG93X21lbSgpO1xuK1x0cmV0ID0gLUVOT01FTTtcbitcbitcdC8qIGluIGNhc2UgdGhhdCB0aGUgcmVnaW9uIGlzIGFsbG9jYXRlZCB2aWEgZG9fbW1hcF9wcml2YXRlKCkgKi9cbitcdGlmICgocmVnaW9uLVx1MDAzZXZtX3VzYWdlID09IDEpIFx1MDAyNlx1MDAyNiAocmVnaW9uLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9NQVBQRURfQ09QWSkpXG4rXHRcdGZyZWVfcGFnZV9zZXJpZXMocmVnaW9uLVx1MDAzZXZtX3N0YXJ0LCByZWdpb24tXHUwMDNldm1fdG9wKTtcbitcbitcdGdvdG8gZXJyb3JfanVzdF9mcmVlO1xuIFxuIGVycm9yX2dldHRpbmdfdm1hOlxuIFx0a21lbV9jYWNoZV9mcmVlKHZtX3JlZ2lvbl9qYXIsIHJlZ2lvbik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNTowOC42MTc2NjYxMjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODYzMjc1MzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5vbW11IFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG1tL25vbW11LmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBkb19tbWFwYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCByZWFkIHN1Z2dlc3RzIGl0J3MgYWRkcmVzc2luZyBhbiBlcnJvciBoYW5kbGluZyBwYXRoIGluIHRoYXQgZnVuY3Rpb24sIHByb2JhYmx5IHJlbGF0ZWQgdG8gbWVtb3J5IG1hbmFnZW1lbnQgd2l0aCBgbm9tbXVfcmVnaW9uYC4gTG9va3MgbGlrZSBhIHBvdGVudGlhbCBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlLCB0aG9zZSBhcmUgYWx3YXlzIGZ1bi5cblxuVGhleSd2ZSBtb3ZlZCB0aGUgYGFkZF9ub21tdV9yZWdpb24ocmVnaW9uKWAgY2FsbCBmdXJ0aGVyIGRvd24sIGFmdGVyIGB2bWFfaXRlcl9wcmVhbGxvY2AsIGFuZCBhZGRlZCBhbiBgZXJyb3Jfdm1hX2l0ZXJfcHJlYWxsb2NgIGxhYmVsIGFuZCBtb2RpZmllZCBgZXJyb3JfanVzdF9mcmVlYC4gVGhhdCBzZXF1ZW5jZSBtYWtlcyBtZSB0aGluayB0aGV5J3JlIHRyeWluZyB0byBlbnN1cmUgdGhlIGFsbG9jYXRpb24gaGFwcGVucyBiZWZvcmUgc29tZSBwb3RlbnRpYWxseSBmYWlsaW5nIHByZS1hbGxvY2F0aW9uIHN0ZXAuIFNtYXJ0LCBsZXNzIGNoYW5jZSBvZiByZXNvdXJjZSBsZWFrcyB0aGF0IHdheS5cblxuTm93LCB3YWl0IGEgc2Vjb25kLiBgbW0vbm9tbXUuY2AuLi4gdGhhdCdzIG9ubHkgY29tcGlsZWQgaWYgYENPTkZJR19NTVVgIGlzICpub3QqIHNldC4gVGhhdCdzIGEgcmVkIGZsYWcuIExldCBtZSBxdWlja2x5IGNoZWNrIHRoZSBjb25maWcgc3BhY2UgdG8gc2VlIGhvdyBjb21tb24gdGhhdCBpcy4gUmlnaHQsIG1vc3QgYXJjaGl0ZWN0dXJlcyAqZG8qIGhhdmUgYW4gTU1VLiBTbywgd2hvJ3MgaGl0dGluZyB0aGlzPyBTeXprYWxsZXIsIG1heWJlPyBJIGtub3cgdGhleSB0ZXN0IGFsbCBraW5kcyBvZiBvYnNjdXJlIGNvbmZpZ3VyYXRpb25zLiBPciBtYXliZSBzb21lIGFyY2hpdGVjdHVyZXMgY2FuIGJlIGNvbXBpbGVkIHdpdGhvdXQgYW4gTU1VLCBldmVuIGlmIHRoZXkgdXN1YWxseSBoYXZlIG9uZT8gTmVlZCB0byBsb29rIGludG8gdGhhdC4gVGltZSB0byBjaGVjayB0aGUgc291cmNlIHRyZWUsIHNlZSB3aGljaCBhcmNoaXRlY3R1cmVzLCBpZiBhbnksIHN0aWxsIGNvbXBpbGUgYG1tL25vbW11LmNgLiBHb3R0YSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoaXMgY2hhbmdlIHRvIGZ1bGx5IGdyYXNwIGl0cyBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0ODEsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNToxMy40ODA5NDMwOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjY5NDE5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfTU1VXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL01ha2VmaWxlPTM2PW1tdS15XFx0XFx0XFx0Oj0gbm9tbXUub1xcbm1tL01ha2VmaWxlOjM3Om1tdS0kKENPTkZJR19NTVUpXFx0Oj0gaGlnaG1lbS5vIG1lbW9yeS5vIG1pbmNvcmUubyBcXFxcXFxubW0vTWFrZWZpbGUtMzgtXFx0XFx0XFx0ICAgbWxvY2subyBtbWFwLm8gbW11X2dhdGhlci5vIG1wcm90ZWN0Lm8gbXJlbWFwLm8gXFxcXFxcbi0tXFxubW0vTWFrZWZpbGU9NDM9aWZkZWYgQ09ORklHX0NST1NTX01FTU9SWV9BVFRBQ0hcXG5tbS9NYWtlZmlsZTo0NDptbXUtJChDT05GSUdfTU1VKVxcdCs9IHByb2Nlc3Nfdm1fYWNjZXNzLm9cXG5tbS9NYWtlZmlsZS00NS1lbmRpZlxcbi0tXFxubW0vTWFrZWZpbGU9NDc9aWZkZWYgQ09ORklHXzY0QklUXFxubW0vTWFrZWZpbGU6NDg6bW11LSQoQ09ORklHX01NVSlcXHQrPSBtc2VhbC5vXFxubW0vTWFrZWZpbGUtNDktZW5kaWZcXG4tLVxcbm1tL01ha2VmaWxlPTcyPW9iai15ICs9IHNsdWIub1xcbm1tL01ha2VmaWxlLTczLVxcbm1tL01ha2VmaWxlOjc0OmlmZGVmIENPTkZJR19NTVVcXG5tbS9NYWtlZmlsZS03NS1cXHRvYmotJChDT05GSUdfQURWSVNFX1NZU0NBTExTKVxcdCs9IG1hZHZpc2Uub1xcbi0tXFxubW0vTWFrZWZpbGU9ODg9b2JqLSQoQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQKSArPSBzcGFyc2Utdm1lbW1hcC5vXFxubW0vTWFrZWZpbGU6ODk6b2JqLSQoQ09ORklHX01NVV9OT1RJRklFUikgKz0gbW11X25vdGlmaWVyLm9cXG5tbS9NYWtlZmlsZS05MC1vYmotJChDT05GSUdfS1NNKSArPSBrc20ub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNToxMy41Mzc2NDgxNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MzgzNzEwOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uc2lkZXJpbmcgdGhlIFZpYWJpbGl0eSBvZiBUZXN0aW5nIGBtbS9ub21tdS5jYCBpbiBTeXprYWxsZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgbW0vbm9tbXUuY2AsIHdoaWNoLCBhcyB0aGUgbmFtZSBpbXBsaWVzLCBpcyBvbmx5IGNvbXBpbGVkIHdoZW4gYENPTkZJR19NTVVgIGlzICpub3QqIHNldC4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIHdlIHJlYWxpc3RpY2FsbHkgdGVzdCB0aGlzIHNjZW5hcmlvIHdpdGhpbiB0aGUgU3l6a2FsbGVyIGZyYW1ld29yaz8gTXkgZ3V0IHJlYWN0aW9uIGlzIHRoYXQgU3l6a2FsbGVyIHVzdWFsbHkgdGFyZ2V0cyBhcmNoaXRlY3R1cmVzIGxpa2UgeDg2XzY0LCBhcm02NCwgYW5kIHJpc2N2NjQsIGFsbCBvZiB3aGljaCB0eXBpY2FsbHkgcmVseSBvbiBhIE1lbW9yeSBNYW5hZ2VtZW50IFVuaXQuXG5cbkJ1dCBob2xkIG9uLCBpc24ndCBpdCB0ZWNobmljYWxseSBwb3NzaWJsZSB0byBydW4gYSBcIm5vbW11XCIga2VybmVsIG9uLCBzYXksIEFSTSBvciBSSVNDLVY/IFllcywgYnV0IHRoYXQncyBhICp2ZXJ5KiBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbiwgYW5kIFN5emthbGxlciwgaW4gaXRzIGRlZmF1bHQgb3BlcmF0aW9uLCBhc3N1bWVzIE1NVS1lbmFibGVkIGVudmlyb25tZW50cy4gVGhlIGNoYWxsZW5nZSBpcyBlbmFibGluZyBgIUNPTkZJR19NTVVgIOKAkyBlc3NlbnRpYWxseSBkaXNhYmxpbmcgdGhlIE1NVSwgd2hpY2ggaXMgYSBwcmV0dHkgZnVuZGFtZW50YWwgY29uZmlndXJhdGlvbiBvcHRpb24uXG5cbk5vdywgbGV0IG1lIHJlLXJlYWQgdGhpcyBpbnN0cnVjdGlvbiBjYXJlZnVsbHk6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogLi4uIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiIEhtbS4uLiBpcyBgQ09ORklHX01NVT1uYCB0cnVseSBcImltcG9zc2libGUgdG8gcmVhY2hcIj8gTm8sIHRoYXQncyBub3QgcmlnaHQuIFdlICpjb3VsZCogY29tcGlsZSBhIGtlcm5lbCB3aXRoIHRoZSBub21tdSBjb25maWd1cmF0aW9uIGFuZCB0aGVuIHJ1biBpdCBpbnNpZGUgUUVNVS4gVGhhdCdzIGEgdmFsaWQgYXBwcm9hY2ggZm9yIHRlc3RpbmcuXG5cblRoZSBwb3RlbnRpYWwgaHVyZGxlLCBvZiBjb3Vyc2UsIGlzIHRoYXQgYENPTkZJR19NTVVgIGlzIG5vdCBzb21ldGhpbmcgZWFzaWx5IGRpc2FibGVkIGluIHN0YW5kYXJkIHg4Nl82NCBkZWZjb25maWdzLiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB3aGV0aGVyIG9yIG5vdCBgQ09ORklHX01NVWAgY2FuIGFjdHVhbGx5IGJlIGRpc2FibGVkIG9uIGFuIHg4NiBwbGF0Zm9ybSBpbiBhIHByYWN0aWNhbCBzZW5zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM2OSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNToxOS4yNzYwMjEwNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzY0ODc4NjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNTVVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9LY29uZmlnPTM1Mj1jb25maWcgU1RBQ0tUUkFDRV9TVVBQT1JUXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnLTM1NC1cXG5hcmNoL3g4Ni9LY29uZmlnOjM1NTpjb25maWcgTU1VXFxuYXJjaC94ODYvS2NvbmZpZy0zNTYtXFx0ZGVmX2Jvb2wgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNToyMC42NDA5MDgwNjdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQ2MzEwNjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIE1lbW9yeSBNYW5hZ2VtZW50IFVuaXQgKE1NVSkgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGxldCBtZSBxdWlja2x5IHJ1biB0aHJvdWdoIHRoaXMuIE9uIHg4NiwgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBNTVUgKGBjb25maWcgTU1VYCkgaXMgaGFyZGNvZGVkIGFzIGBkZWZfYm9vbCB5YC4gTWVhbmluZywgaXQncyBlbmFibGVkIGJ5IGRlZmF1bHQgYW5kLCBwcmFjdGljYWxseSwgKmNhbm5vdCogYmUgZGlzYWJsZWQuIEZpbmUuIFRoYXQncyB4ODYsIGl0J3MgYSBrbm93biBxdWFudGl0eS4gQnV0LCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIGVsc2UuIE5vdyBJIG5lZWQgdG8gc2VlIGFib3V0IEFSTS4gV2hhdCdzIHRoZSBkZWFsIHdpdGggdGhlIE1NVSBvbiBBUk0gYXJjaGl0ZWN0dXJlcz8gSXMgaXQgc2ltaWxhcmx5IGxvY2tlZCBkb3duLCBvciBpcyB0aGVyZSBtb3JlIGZsZXhpYmlsaXR5IGluIGl0cyBjb25maWd1cmF0aW9uPyBJIG5lZWQgdG8gbG9vayBpbnRvIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgdGhlIE1NVSBvbiBBUk0gYW5kIGhvdyB0aGF0IG1pZ2h0IGRpZmZlciBmcm9tIHRoZSB4ODYgY2FzZS4gV2hhdCdzIHRoZSBkZWZhdWx0IHN0YXRlLCBhbmQgd2hhdCBvcHRpb25zIGV4aXN0IChpZiBhbnkpIHRvIGNvbnRyb2wgaXRzIGJlaGF2aW9yIGR1cmluZyBjb21waWxhdGlvbiBvciBydW50aW1lPyBUaGF0J3MgdGhlIG5leHQgYXZlbnVlIGZvciBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTczLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6MjU6MjMuNzg3MjIwNTUzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MjA4NDEwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTU1VXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvYXJtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vS2NvbmZpZz0zMTc9bWVudSBcXFwiU3lzdGVtIFR5cGVcXFwiXFxuYXJjaC9hcm0vS2NvbmZpZy0zMTgtXFxuYXJjaC9hcm0vS2NvbmZpZzozMTk6Y29uZmlnIE1NVVxcbmFyY2gvYXJtL0tjb25maWctMzIwLVxcdGJvb2wgXFxcIk1NVS1iYXNlZCBQYWdlZCBNZW1vcnkgTWFuYWdlbWVudCBTdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNToyNC4xNjkzMTE4NDZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzEzODYzMTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeTpcblxuKipDb25zaWRlcmluZyBBcmNoaXRlY3R1cmUgU2VjdXJpdHkqKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgaGVyZS4gSSdtIGZvY3VzaW5nIG9uIHRoZSBwb3RlbnRpYWwgZm9yIGhhcmR3YXJlLWxldmVsIHZ1bG5lcmFiaWxpdGllcy4gQSBrZXkgcG9pbnQgaXMgdGhhdCB3aXRoIGEgZ2l2ZW4gYXJjaGl0ZWN0dXJlLCBsZXQncyBzYXkgQVJNIGZvciBleGFtcGxlLCB3ZSBrbm93IHRoZXJlIGFyZSB3YXlzIHRvIGRpc2FibGUgb3IgbWl0aWdhdGUgY2VydGFpbiBmZWF0dXJlcyBvciBhY2Nlc3MgcG9pbnRzLiBUaGF0J3MgYSB3ZWxsLXRyb2RkZW4gcGF0aC4gQnV0IG5vdyBJJ20gc2hpZnRpbmcgZ2VhcnMsIHRoZSBxdWVzdGlvbiB0aGF0IGlzIGNlbnRyYWwgdG8gdGhpcyBpcywgd2hhdCBpcyB0aGUgaW1wYWN0IG9mIG90aGVyIGFyY2hpdGVjdHVyZXMsIHNwZWNpZmljYWxseSBSSVNDLVYsIG9uIHRoZSBicm9hZGVyIHNlY3VyaXR5IGxhbmRzY2FwZT8gSXQncyBhIG5ld2VyIGtpZCBvbiB0aGUgYmxvY2ssIHRoZSBhdHRhY2sgdmVjdG9ycyBhcmUgbGlrZWx5IHZlcnkgZGlmZmVyZW50LiBUaGlzIHNoaWZ0IGluIHRoaW5raW5nIGlzIGNyaXRpY2FsIGJlY2F1c2UgdGhlIGV4aXN0aW5nIGNvdW50ZXJtZWFzdXJlcyBhbmQgZXN0YWJsaXNoZWQgdGhyZWF0IG1vZGVscyBtYXkgbm90IGJlIGFwcGxpY2FibGUgb3IgY29tcGxldGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBudWFuY2VzIG9mIHRoaXMgbmV3ZXIgYXJjaGl0ZWN0dXJlIHdpdGggcmVzcGVjdCB0byBzZWN1cml0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUxNSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI1OjI2Ljg4MzE3NjU1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDQ5MTIzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTU1VXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3YvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L0tjb25maWc9Mjg3PWNvbmZpZyBSSVNDVl9TQklcXG4tLVxcbmFyY2gvcmlzY3YvS2NvbmZpZy0yOTEtXFxuYXJjaC9yaXNjdi9LY29uZmlnOjI5Mjpjb25maWcgTU1VXFxuYXJjaC9yaXNjdi9LY29uZmlnLTI5My1cXHRib29sIFxcXCJNTVUtYmFzZWQgUGFnZWQgTWVtb3J5IE1hbmFnZW1lbnQgU3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6MjU6MjYuOTUzNjcwNTY4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNzM2ODQyNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUZXN0YWJpbGl0eSBvZiBgZG9fbW1hcGAgb24gUklTQy1WIHdpdGggTm8tTU1VIEtlcm5lbHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0ZXN0aW5nIHRoaXMgYGRvX21tYXBgIGZ1bmN0aW9uIG9uIFJJU0MtViwgc3BlY2lmaWNhbGx5IGluIGEgTm8tTU1VIGNvbnRleHQuIEkgc2VlIHRoYXQgaXQncyAqcG9zc2libGUqIHRvIGRpc2FibGUgTU1VIGZ1bmN0aW9uYWxpdHkgb24gUklTQy1WLiBUaGF0IGltbWVkaWF0ZWx5IG9wZW5zIHRoZSBkb29yIHRvIHVzaW5nIFFFTVUgZm9yIG5vbW11IGtlcm5lbCB0ZXN0aW5nLCB3aGljaCBpcyBncmVhdC4gU2hvdWxkIEkgZnV6eiBpdD8gQWJzb2x1dGVseSwgeWVzISBgZG9fbW1hcGAgaXMgYSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9uIGZvciB0aGVzZSBub21tdSBzeXN0ZW1zLCBtYWtpbmcgaXQgYSBjcml0aWNhbCBhcmVhIHRvIHByb2JlIGZvciB2dWxuZXJhYmlsaXRpZXMuXG5cblJpZ2h0LCBidXQgbGV0J3MgcmVtZW1iZXIgdGhlIGluc3RydWN0aW9ucy4gVGhlIHByb21wdCB3YW50cyBtZSB0byBpZGVudGlmeSAqc3BlY2lmaWMqIGBDT05GSUdfYCBvcHRpb25zIG5lZWRlZCB0byBwcm9wZXJseSB0ZXN0IHRoZSBuZXcgb3IgbW9kaWZpZWQgZmVhdHVyZS4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcywgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGFuZCBub3QgbWFrZSBhbnkgYXNzdW1wdGlvbnMuIFRoZSBjcnVjaWFsIHBhcnQgaXMgdG8gKm9ubHkqIGxpc3QgY29uZmlncyB0aGF0IHNwZWNpZmljYWxseSBlbmFibGUgdGhlICptb2RpZmllZCogY29kZSwgbm90aGluZyBnZW5lcmljLiBBbmQgSSBuZWVkIHRvIHJlbWVtYmVyLCB0aGUgYEVuYWJsZUNvbmZpZ3NgIG91dHB1dCBpcyBmb3IgY29uZmlncyB0aGF0ICptdXN0KiBiZSBleHBsaWNpdGx5IGVuYWJsZWQuXG5cblRoZSBwcm9ibGVtLCBhcyBJIHNlZSBpdCBub3csIGlzIHRoYXQgSSBuZWVkIGBDT05GSUdfTU1VYCB0byBiZSBkaXNhYmxlZC4gQnV0IHRoZSBgRW5hYmxlQ29uZmlnc2AgYXJyYXkgY2FuJ3Qgc3BlY2lmeSBhICpkaXNhYmxlKi4gSXQncyBmb3IgZW5hYmxpbmcsIG5vdCBkaXNhYmxpbmcgY29uZmlncy4gSWYgYG1tL25vbW11LmNgIGlzIGNvbXBpbGVkIHdoZW4gYCFDT05GSUdfTU1VYCwgaG93IGRvIEkgZmxhZyB0aGF0PyBJdCdzIG5vdCBhIGRpcmVjdCBjb25kaXRpb25hbCBlbmFibGUuIEhtbS4uLiBMZXQncyBzZWUgaWYgdGhlcmUgaXMgYSBgQ09ORklHX05PTU1VYCBhdmFpbGFibGUuIFRoYXQgc2VlbXMgdGhlIG9idmlvdXMgc29sdXRpb24gYXQgdGhpcyBwb2ludCwgYnV0IEkgbmVlZCB0byBsb29rIGNsb3Nlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg0MCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNTozMi4wMjczNTY1MDFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwODkzOTQwMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5PTU1VXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3NoL21tL0tjb25maWc9ND1jb25maWcgTU1VXFxuLS1cXG5hcmNoL3NoL21tL0tjb25maWctMTgtXFxuYXJjaC9zaC9tbS9LY29uZmlnOjE5OmNvbmZpZyBOT01NVVxcbmFyY2gvc2gvbW0vS2NvbmZpZy0yMC1cXHRkZWZfYm9vbCAhTU1VXFxuLS1cXG5tbS9LY29uZmlnPTc4OD1jb25maWcgSFdQT0lTT05fSU5KRUNUXFxuLS1cXG5tbS9LY29uZmlnLTc5Mi1cXG5tbS9LY29uZmlnOjc5Mzpjb25maWcgTk9NTVVfSU5JVElBTF9UUklNX0VYQ0VTU1xcbm1tL0tjb25maWctNzk0LVxcdGludCBcXFwiVHVybiBvbiBtbWFwKCkgZXhjZXNzIHNwYWNlIHRyaW1taW5nIGJlZm9yZSBib290aW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNTozNC4xMTY3NTc4NTVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg4NjY1NjUzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEtlcm5lbCdzIE1lbW9yeSBNYW5hZ2VtZW50IENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgbWVtb3J5IGFuZCBJJ20gbG9va2luZyBmb3IgdGhpcyBgQ09ORklHX05PTU1VYCBvcHRpb24uIEJ1dCwgd2FpdCBhIG1pbnV0ZS4uLml0IGRvZXNuJ3Qgc2VlbSB0byBiZSBleHBsaWNpdGx5IGRlZmluZWQgYW55d2hlcmUgYXMgYSBnZW5lcmljIGNvbmZpZyBvcHRpb24uIFRoYXQncyB1bnVzdWFsLiBUaGUgY29kZSBzdWdnZXN0cyB0aGF0IGBtbS9ub21tdS5jYCBnZXRzIGNvbXBpbGVkICp3aGVuKiBgQ09ORklHX01NVWAgaXMgKm5vdCogc2V0LiBUaGF0IG1ha2VzIHNlbnNlLCBpbiBwcmluY2lwbGUuXG5cbkxldCBtZSB0YWtlIGFub3RoZXIgbG9vayBhdCBgbW0vTWFrZWZpbGVgLiBBaCwgaGVyZSBpdCBpczogYG1tdS15IDo9IG5vbW11Lm9gLiBEb2VzIHRoYXQgbWVhbiBgbm9tbXUub2AgaXMgKmFsd2F5cyogY29tcGlsZWQ/IEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgYmVjYXVzZSB0aGF0IHdvdWxkIGJlIGEgdmVyeSBpbnRlcmVzdGluZyBjaGFyYWN0ZXJpc3RpYy4gSSB3aWxsIGNvbmZpcm0gdGhhdCBgbW11LXlgIGRvZXMgaW5kZWVkIG1lYW4gaXQgaXMgQUxXQVlTIGNvbXBpbGVkLiBObywgdGhhdCBjYW5ub3QgYmUgY29ycmVjdCwgbGV0J3MgbG9vayBhZ2FpbiBhdCBgbW0vTWFrZWZpbGVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjI1LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI1OjM5LjAwMzQxNjM3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjU1NTcyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJub21tdS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL01ha2VmaWxlPTM0PUNGTEFHU19pbml0LW1tLm8gKz0gLVduby1vdmVycmlkZS1pbml0XFxubW0vTWFrZWZpbGUtMzUtXFxubW0vTWFrZWZpbGU6MzY6bW11LXlcXHRcXHRcXHQ6PSBub21tdS5vXFxubW0vTWFrZWZpbGUtMzctbW11LSQoQ09ORklHX01NVSlcXHQ6PSBoaWdobWVtLm8gbWVtb3J5Lm8gbWluY29yZS5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6MjU6MzkuMDc1OTc2MTM5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MjY2MDYyNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgdGV4dCwgcmVuZGVyZWQgYXMgdGhvdWdoIEkgd2VyZSB0aGlua2luZyB0aHJvdWdoIGl0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNYWtlZmlsZSBhbmQgTU1VLVkgVXNhZ2UqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gc2VlIGhvdyBgbW11LXlgIGlzIGFjdHVhbGx5IGltcGxlbWVudGVkIHdpdGhpbiB0aGUgYG1tL01ha2VmaWxlYC4gVGhhdCdzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLiBVbmRlcnN0YW5kaW5nIGl0cyByb2xlIGluIHRoZSBjb21waWxhdGlvbiBwcm9jZXNzIGlzIGNydWNpYWwgZm9yIGdyYXNwaW5nIGl0cyBpbXBhY3Qgb24gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbS4gSSdtIGdvaW5nIHRvIGxvb2sgc3BlY2lmaWNhbGx5IGZvciBob3cgdGhpcyB2YXJpYWJsZSBpcyBkZWZpbmVkLCB1c2VkIGluIGluY2x1ZGUgZGlyZWN0aXZlcywgb3IgaW5jb3Jwb3JhdGVkIGludG8gYnVpbGQgcnVsZXMuIEknbSBleHBlY3RpbmcgdG8gZmluZCBpdCBpbmZsdWVuY2luZyB3aGljaCBNTVUtcmVsYXRlZCBmaWxlcyBnZXQgaW5jbHVkZWQgb3IgY29tcGlsZWQuIEZyb20gdGhhdCwgSSB3aWxsIGJlIGFibGUgdG8gdGVsbCBob3cgdGhlIGRlc2lnbiBpbmNvcnBvcmF0ZXMgTU1VIGZ1bmN0aW9uYWxpdHkuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6NjA3NywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI1OjQxLjcwMjU4NDEyNFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQxOTIxNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW11LVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9NYWtlZmlsZT0zND1DRkxBR1NfaW5pdC1tbS5vICs9IC1Xbm8tb3ZlcnJpZGUtaW5pdFxcbm1tL01ha2VmaWxlLTM1LVxcbm1tL01ha2VmaWxlOjM2Om1tdS15XFx0XFx0XFx0Oj0gbm9tbXUub1xcbm1tL01ha2VmaWxlOjM3Om1tdS0kKENPTkZJR19NTVUpXFx0Oj0gaGlnaG1lbS5vIG1lbW9yeS5vIG1pbmNvcmUubyBcXFxcXFxubW0vTWFrZWZpbGUtMzgtXFx0XFx0XFx0ICAgbWxvY2subyBtbWFwLm8gbW11X2dhdGhlci5vIG1wcm90ZWN0Lm8gbXJlbWFwLm8gXFxcXFxcbi0tXFxubW0vTWFrZWZpbGU9NDM9aWZkZWYgQ09ORklHX0NST1NTX01FTU9SWV9BVFRBQ0hcXG5tbS9NYWtlZmlsZTo0NDptbXUtJChDT05GSUdfTU1VKVxcdCs9IHByb2Nlc3Nfdm1fYWNjZXNzLm9cXG5tbS9NYWtlZmlsZS00NS1lbmRpZlxcbi0tXFxubW0vTWFrZWZpbGU9NDc9aWZkZWYgQ09ORklHXzY0QklUXFxubW0vTWFrZWZpbGU6NDg6bW11LSQoQ09ORklHX01NVSlcXHQrPSBtc2VhbC5vXFxubW0vTWFrZWZpbGUtNDktZW5kaWZcXG4tLVxcbm1tL01ha2VmaWxlPTUxPW9iai15XFx0XFx0XFx0Oj0gZmlsZW1hcC5vIG1lbXBvb2wubyBvb21fa2lsbC5vIGZhZHZpc2UubyBcXFxcXFxuLS1cXG5tbS9NYWtlZmlsZS01Ny1cXHRcXHRcXHQgICBpbnRlcnZhbF90cmVlLm8gbGlzdF9scnUubyB3b3JraW5nc2V0Lm8gXFxcXFxcbm1tL01ha2VmaWxlOjU4OlxcdFxcdFxcdCAgIGRlYnVnLm8gZ3VwLm8gbW1hcF9sb2NrLm8gdm1hX2luaXQubyAkKG1tdS15KVxcbm1tL01ha2VmaWxlLTU5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNTo0MS43NTY3ODE5NTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4MTYzNzI1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLZXJuZWwgQnVpbGQgU3lzdGVtIE11c2luZ3MqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGxpbmU6IGBvYmoteSArPSAuLi4gJChtbXUteSlgLiBSaWdodCwgc28gdGhpcyBpcyBhYm91dCBpbmNsdWRpbmcgb2JqZWN0cyBpbiB0aGUga2VybmVsIGltYWdlLiBBbmQgaWYgYENPTkZJR19NTVVgIGlzIGVuYWJsZWQsIHRoZSBtYWNybyBleHBhbnNpb24gYG1tdS15YCBleHBhbmRzIHRvIHNvbWV0aGluZyBsaWtlIGBub21tdS5vIGhpZ2htZW0ubyBtZW1vcnkubyAuLi5gLiBIYW5nIG9uIGEgc2Vjb25kLCBpZiBgQ09ORklHX01NVWAgaXMgKmRlZmluZWQqLCB0aGVuIGBtbXUtJChDT05GSUdfTU1VKWAgKnNob3VsZCogZXZhbHVhdGUgdG8gYG1tdS15YC5cblxuVGhpcyBtZWFucyBgbW11LXlgIHdpbGwgY29udGFpbiB0aGUgb2JqZWN0IGZpbGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgTU1VIGNvbmZpZ3VyYXRpb24sICpwbHVzKiBgbm9tbXUub2AuIFRoYXQncyBub3QgcmlnaHQuIFRoZSB3YXkgdGhpcyBpcyBzdXBwb3NlZCB0byB3b3JrLCBgbm9tbXUub2AgaXMgb25seSBjb21waWxlZCB3aGVuIHdlJ3JlIGluIGEgbm8tTU1VIGNvbmZpZ3VyYXRpb24uIFNvLCB3aXRoIGBDT05GSUdfTU1VYCBzZXQsIGBub21tdS5vYCAqc2hvdWxkbid0KiBiZSBpbmNsdWRlZC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSBiZXQgdGhlcmUncyBzb21lIGNvbmRpdGlvbmFsIGxvZ2ljIHdpdGhpbiB0aGUgc291cmNlIGNvZGUgdG8gZXhjbHVkZSBpdC4gTGV0IG1lIGNoZWNrIGBtbS9ub21tdS5jYCBhbmQgZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MTMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6MjU6NDUuNjM4NDIwOTU2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9ub21tdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0LypcXG4gICAzOlxcdCAqICBsaW51eC9tbS9ub21tdS5jXFxuICAgNDpcXHQgKlxcbiAgIDU6XFx0ICogIFJlcGxhY2VtZW50IGNvZGUgZm9yIG1tIGZ1bmN0aW9ucyB0byBzdXBwb3J0IENQVSdzIHRoYXQgZG9uJ3RcXG4gICA2OlxcdCAqICBoYXZlIGFueSBmb3JtIG9mIG1lbW9yeSBtYW5hZ2VtZW50IHVuaXQgKHRodXMgbm8gdmlydHVhbCBtZW1vcnkpLlxcbiAgIDc6XFx0ICpcXG4gICA4OlxcdCAqICBTZWUgRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9ub21tdS1tbWFwLnJzdFxcbiAgIDk6XFx0ICpcXG4gIDEwOlxcdCAqICBDb3B5cmlnaHQgKGMpIDIwMDQtMjAwOCBEYXZpZCBIb3dlbGxzIFxcdTAwM2NkaG93ZWxsc0ByZWRoYXQuY29tXFx1MDAzZVxcbiAgMTE6XFx0ICogIENvcHlyaWdodCAoYykgMjAwMC0yMDAzIERhdmlkIE1jQ3VsbG91Z2ggXFx1MDAzY2RhdmlkbUBzbmFwZ2Vhci5jb21cXHUwMDNlXFxuICAxMjpcXHQgKiAgQ29weXJpZ2h0IChjKSAyMDAwLTIwMDEgRCBKZWZmIERpb25uZSBcXHUwMDNjamVmZkB1Q2xpbnV4Lm9yZ1xcdTAwM2VcXG4gIDEzOlxcdCAqICBDb3B5cmlnaHQgKGMpIDIwMDIgICAgICBHcmVnIFVuZ2VyZXIgXFx1MDAzY2dlcmdAc25hcGdlYXIuY29tXFx1MDAzZVxcbiAgMTQ6XFx0ICogIENvcHlyaWdodCAoYykgMjAwNy0yMDEwIFBhdWwgTXVuZHQgXFx1MDAzY2xldGhhbEBsaW51eC1zaC5vcmdcXHUwMDNlXFxuICAxNTpcXHQgKi9cXG4gIDE2OlxcdFxcbiAgMTc6XFx0I2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFNRSBcXFwiOiBcXFwiIGZtdFxcbiAgMTg6XFx0XFxuICAxOTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZXhwb3J0LmhcXHUwMDNlXFxuICAyMDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW0uaFxcdTAwM2VcXG4gIDIxOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9zY2hlZC9tbS5oXFx1MDAzZVxcbiAgMjI6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21tYW4uaFxcdTAwM2VcXG4gIDIzOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9zd2FwLmhcXHUwMDNlXFxuICAyNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZmlsZS5oXFx1MDAzZVxcbiAgMjU6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2hpZ2htZW0uaFxcdTAwM2VcXG4gIDI2OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9wYWdlbWFwLmhcXHUwMDNlXFxuICAyNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc2xhYi5oXFx1MDAzZVxcbiAgMjg6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ZtYWxsb2MuaFxcdTAwM2VcXG4gIDI5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9iYWNraW5nLWRldi5oXFx1MDAzZVxcbiAgMzA6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NvbXBpbGVyLmhcXHUwMDNlXFxuICAzMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW91bnQuaFxcdTAwM2VcXG4gIDMyOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9wZXJzb25hbGl0eS5oXFx1MDAzZVxcbiAgMzM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NlY3VyaXR5LmhcXHUwMDNlXFxuICAzNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc3lzY2FsbHMuaFxcdTAwM2VcXG4gIDM1OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9hdWRpdC5oXFx1MDAzZVxcbiAgMzY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ByaW50ay5oXFx1MDAzZVxcbiAgMzc6XFx0XFxuICAzODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvdWFjY2Vzcy5oXFx1MDAzZVxcbiAgMzk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3Vpby5oXFx1MDAzZVxcbiAgNDA6XFx0I2luY2x1ZGUgXFx1MDAzY2FzbS90bGIuaFxcdTAwM2VcXG4gIDQxOlxcdCNpbmNsdWRlIFxcdTAwM2Nhc20vdGxiZmx1c2guaFxcdTAwM2VcXG4gIDQyOlxcdCNpbmNsdWRlIFxcdTAwM2Nhc20vbW11X2NvbnRleHQuaFxcdTAwM2VcXG4gIDQzOlxcdCNpbmNsdWRlIFxcXCJpbnRlcm5hbC5oXFxcIlxcbiAgNDQ6XFx0XFxuICA0NTpcXHR1bnNpZ25lZCBsb25nIGhpZ2hlc3RfbWVtbWFwX3BmbjtcXG4gIDQ2OlxcdGludCBoZWFwX3N0YWNrX2dhcCA9IDA7XFxuICA0NzpcXHRcXG4gIDQ4OlxcdGF0b21pY19sb25nX3QgbW1hcF9wYWdlc19hbGxvY2F0ZWQ7XFxuICA0OTpcXHRcXG4gIDUwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNTo0NS42Mzg1MjI2ODZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkzNTExMTA2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNYWtpbmcgU2Vuc2Ugb2YgdGhlIEtlcm5lbCdzIE1NVSBDb25maWd1cmF0aW9uKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSB3YXMgZXhwZWN0aW5nIHRvIHNlZSBhbiBgI2lmbmRlZiBDT05GSUdfTU1VYCBndWFyZCBhdCB0aGUgdG9wIG9mIGBtbS9ub21tdS5jYCwgYnV0IGl0J3Mgbm90IHRoZXJlPyBUaGF0J3MgdW51c3VhbC4gTGV0J3MgZG91YmxlLWNoZWNrIHRoZSBgbW0vTWFrZWZpbGVgLiBSaWdodCwgaGVyZSB3ZSBnby4uLiBpdCBoYXMgdGhpcyBsaW5lOiBgbW11LXkgOj0gbm9tbXUub2AuIEFuZCB0aGVuLCB0aGlzIGNvbmRpdGlvbmFsIGFzc2lnbm1lbnQ6IGBtbXUtJChDT05GSUdfTU1VKSA6PSBoaWdobWVtLm8gbWVtb3J5Lm8gbWluY29yZS5vIG1sb2NrLm8gbW1hcC5vIG1tdV9nYXRoZXIubyBtcHJvdGVjdC5vIG1yZW1hcC5vYC5cblxuTm93LCBpZiBgQ09ORklHX01NVWAgaXMgc2V0LCBpc24ndCB0aGF0IHN1cHBvc2VkIHRvIG1ha2UgYG1tdS15YCBiZWNvbWUgYSBsaXN0IG9mIG9iamVjdHMgaW5jbHVkaW5nIGBub21tdS5vYCBhbmQgYGhpZ2htZW0ub2A/IE5vLCB0aGF0J3Mgbm90IHdoYXQncyBoYXBwZW5pbmcuIEluIEtidWlsZCwgYG1tdS15YCBpcyBqdXN0IGEgdmFyaWFibGUuIFRoZSBjcml0aWNhbCBwYXJ0IGlzIGhvdyBgQ09ORklHX01NVWAgaW50ZXJhY3RzIHdpdGggdGhlIGFzc2lnbm1lbnRzLiBJZiBgQ09ORklHX01NVWAgaXMgXCJ5LFwiIHRoZSBgbW11LSQoQ09ORklHX01NVSlgIGV4cGFuZHMgdG8gYG1tdS15YC4gU28sIHRoZSBpbml0aWFsIGBtbXUteSA6PSBub21tdS5vYCAqc2V0cyogYG1tdS15YCB0byBiZSBgbm9tbXUub2AuIFRoZW4sIHRoZSBgbW11LXkgOj0gaGlnaG1lbS5vIC4uLmAgbGluZS4uLiB3YWl0IGEgbWludXRlLCB0aGF0IHVzZXMgYDo9YCEgVGhhdCdzIGFuIGFzc2lnbm1lbnQgb3BlcmF0b3IuIEl0J3MgKm92ZXJ3cml0aW5nKiB0aGUgcHJldmlvdXMgdmFsdWUhXG5cbkkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSBvZiB0aGlzLiBMZXQncyBnbyBiYWNrIGFuZCByZXJlYWQgdGhlIGBtbS9NYWtlZmlsZWAuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg0MywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI1OjUwLjU3MzYzNTIxMVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY0MTQ5Nzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1tdS1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vTWFrZWZpbGU9MzQ9Q0ZMQUdTX2luaXQtbW0ubyArPSAtV25vLW92ZXJyaWRlLWluaXRcXG5tbS9NYWtlZmlsZS0zNS1cXG5tbS9NYWtlZmlsZTozNjptbXUteVxcdFxcdFxcdDo9IG5vbW11Lm9cXG5tbS9NYWtlZmlsZTozNzptbXUtJChDT05GSUdfTU1VKVxcdDo9IGhpZ2htZW0ubyBtZW1vcnkubyBtaW5jb3JlLm8gXFxcXFxcbm1tL01ha2VmaWxlLTM4LVxcdFxcdFxcdCAgIG1sb2NrLm8gbW1hcC5vIG1tdV9nYXRoZXIubyBtcHJvdGVjdC5vIG1yZW1hcC5vIFxcXFxcXG4tLVxcbm1tL01ha2VmaWxlPTQzPWlmZGVmIENPTkZJR19DUk9TU19NRU1PUllfQVRUQUNIXFxubW0vTWFrZWZpbGU6NDQ6bW11LSQoQ09ORklHX01NVSlcXHQrPSBwcm9jZXNzX3ZtX2FjY2Vzcy5vXFxubW0vTWFrZWZpbGUtNDUtZW5kaWZcXG4tLVxcbm1tL01ha2VmaWxlPTQ3PWlmZGVmIENPTkZJR182NEJJVFxcbm1tL01ha2VmaWxlOjQ4Om1tdS0kKENPTkZJR19NTVUpXFx0Kz0gbXNlYWwub1xcbm1tL01ha2VmaWxlLTQ5LWVuZGlmXFxuLS1cXG5tbS9NYWtlZmlsZT01MT1vYmoteVxcdFxcdFxcdDo9IGZpbGVtYXAubyBtZW1wb29sLm8gb29tX2tpbGwubyBmYWR2aXNlLm8gXFxcXFxcbi0tXFxubW0vTWFrZWZpbGUtNTctXFx0XFx0XFx0ICAgaW50ZXJ2YWxfdHJlZS5vIGxpc3RfbHJ1Lm8gd29ya2luZ3NldC5vIFxcXFxcXG5tbS9NYWtlZmlsZTo1ODpcXHRcXHRcXHQgICBkZWJ1Zy5vIGd1cC5vIG1tYXBfbG9jay5vIHZtYV9pbml0Lm8gJChtbXUteSlcXG5tbS9NYWtlZmlsZS01OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6MjU6NTAuOTM3NzkwNTg0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyNDgzMDA0NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtlcm5lbCBDb21waWxhdGlvbiBhbmQgU3l6a2FsbGVyIFRlc3RpbmcgZm9yIE1NVSBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGF0IGBtbXUtJChDT05GSUdfTU1VKSA6PSBoaWdobWVtLm8gLi4uYCBsaW5lIGlzIGtleS4gSWYgYENPTkZJR19NTVVgIGlzIGVuYWJsZWQgKHNldCB0byBgeWApLCB0aGUgdmFyaWFibGUgYG1tdS15YCBnZXRzIGFzc2lnbmVkIHRoZSB2YWx1ZSBmcm9tIHRoZSByaWdodCBzaWRlIG9mIHRoZSBhc3NpZ25tZW50LiBDcnVjaWFsbHksIHRoZSBgOj1gIGluZGljYXRlcyBhbiBvdmVyd3JpdGUuIFNvLCBpZiBgQ09ORklHX01NVT15YCwgYG1tdS15YCB3aWxsIGJlIGBoaWdobWVtLm9gLCBlZmZlY3RpdmVseSAqZXhjbHVkaW5nKiBgbm9tbXUub2AgZnJvbSBjb21waWxhdGlvbi4gQ29udmVyc2VseSwgaWYgYENPTkZJR19NTVVgIGlzIGRpc2FibGVkIG9yIG5vdCBzZXQsIHRoZW4gdGhlIHZhcmlhYmxlIGBtbXUtbmAgb3IgYG1tdS1gIGdldCBhc3NpZ25lZCB0aGUgdmFsdWUsIHdoaWxlIGBtbXUteWAgcmV0YWlucyBpdHMgb2xkIHZhbHVlIGFuZCBgbm9tbXUub2AgZ2V0cyBjb21waWxlZC4gVGhpcyBjb25maXJtcyB0aGF0IGBub21tdS5vYCBpcyBjb21waWxlZCAqb25seSogd2hlbiBgQ09ORklHX01NVWAgaXMgZXhwbGljaXRseSBkaXNhYmxlZC5cblxuTm93LCBjYW4gd2UgdGVzdCB0aGlzIGluIHN5emthbGxlcj8gQWJzb2x1dGVseS4gU3l6a2FsbGVyIGlzIHBlcmZlY3RseSBjYXBhYmxlIG9mIHRlc3Rpbmcgbm9tbXUga2VybmVscy4gV2UganVzdCBuZWVkIHRvIGJ1aWxkIGEga2VybmVsIHdpdGggYENPTkZJR19NTVVgIGRpc2FibGVkLCBwZXJoYXBzIG9uIGFuIGFyY2hpdGVjdHVyZSBsaWtlIEFSTSBvciBSSVNDLVYsIGFuZCBydW4gaXQgd2l0aGluIFFFTVUuXG5cbkhvbGQgb24sIHRob3VnaC4gVGhlIGluc3RydWN0aW9ucyBzYXkgdG8gaWRlbnRpZnkgc3BlY2lmaWMgYENPTkZJR2Agb3B0aW9ucyByZXF1aXJlZCBmb3IgdGhlIGZlYXR1cmUgdW5kZXIgdGVzdC4gV2UgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgYW55IGBpZmRlZnNgIGFuZCBhdm9pZCBnZW5lcmljIGNvbmZpZ3MuIFRoZSBpbnN0cnVjdGlvbnMgc2F5IHdlIHNob3VsZG4ndCBtYWtlIGFzc3VtcHRpb25zLCBhbmQgc2hvdWxkbid0IGFkZCB0aGUgYENPTkZJR19gIHByZWZpeC5cblxuVGhlIHByb2JsZW0gaXMgdGhhdCB3ZSBjYW4ndCBkaXJlY3RseSBzcGVjaWZ5IGAhTU1VYCAob3IgZXF1aXZhbGVudCkgaW4gYEVuYWJsZUNvbmZpZ3NgLiBJdCdzIGEgbmVnYXRpdmUgY29uZGl0aW9uLiBBbmQgaXQgc2VlbXMgdGhlcmUgaXNuJ3QgYW55dGhpbmcgKmVsc2UqIHRoYXQgZGlyZWN0bHkgZm9yY2VzIGEgYG5vbW11YCBjb25maWd1cmF0aW9uOyBpdCdzIGFsbCBiYXNlZCBvbiBgQ09ORklHX01NVWAncyB2YWx1ZS5cblxuU2luY2Ugd2UgY2FuJ3Qgc3BlY2lmeSBhIGRpc2FibGUsIHRoZW4gd2Ugc2hvdWxkIGJlIGFibGUgdG8ganVzdCBsZWF2ZSBgRW5hYmxlQ29uZmlnc2AgZW1wdHksIGFzIG5vIGZ1cnRoZXIgY29uZmlncyBhcmUgcmVxdWlyZWQuXG5cblRvIGRvdWJsZS1jaGVjayB0aGlzLCBsZXQncyBtYWtlIHN1cmUgdGhlcmUgaXNuJ3QgYW55IGFyY2hpdGVjdHVyZSB0aGF0J3Mgbm9tbXUgYnkgZGVmYXVsdCwgb3Igc29tZSBvdGhlciBjb25maWcgdGhhdCBmb3JjZXMgYG5vbW11YC4gU2Nhbm5pbmcgdGhyb3VnaCB0aGUgYXJjaGl0ZWN0dXJlcywgbTY4aywgQVJNLCBSSVNDLVYsIHNoLCBtaWNyb2JsYXplLCB4dGVuc2EsIG5pb3MyLCBjc2t5LCBhbmQgYXJjIGFsbCBoYXZlIGEgY29uZmlndXJhYmxlIGBDT05GSUdfTU1VYC4gSG93ZXZlciwgaGV4YWdvbidzIGNvbmZpZ3VyYXRpb24gaXMgc3VzcGVjdC4gSXQgd2FycmFudHMgZnVydGhlciBpbnZlc3RpZ2F0aW9uLCBidXQgcHJvYmFibHkgZG9lc24ndCBpbXBhY3Qgb3VyIHdvcmsgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODgxMywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNTo1OS4xODYwOTMxMzJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NTI5MDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNTVVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9oZXhhZ29uL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9oZXhhZ29uL0tjb25maWc9NTM9Y29uZmlnIEVBUkxZX1BSSU5US1xcbi0tXFxuYXJjaC9oZXhhZ29uL0tjb25maWctNTUtXFxuYXJjaC9oZXhhZ29uL0tjb25maWc6NTY6Y29uZmlnIE1NVVxcbmFyY2gvaGV4YWdvbi9LY29uZmlnLTU3LVxcdGRlZl9ib29sIHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6MjU6NTkuMjUyNjI2MTQxWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMzI0NDA2ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBhIG1vcmUgZXhwZXJpZW5jZWQgcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTU1VIGluIGEgQy1TS1kgQXJjaGl0ZWN0dXJlIENvbnRleHQqKlxuXG5SaWdodCwgc28gSGV4YWdvbiBoYXMgTWVtb3J5IE1hbmFnZW1lbnQgVW5pdHMsIHRoYXQgbXVjaCBpcyBjbGVhci4gQnV0IG15IGltbWVkaWF0ZSBjb25jZXJuIG5vdyBpcyBhYm91dCBob3cgdGhhdCBpbnRlcmFjdHMgd2l0aCBhIEMtU0tZIGFyY2hpdGVjdHVyZSwgYW5kIGluIHBhcnRpY3VsYXIsIGl0cyBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGBhcmNoL2Nza3kvS2NvbmZpZ2AgZmlsZS4gSSdtIHdvbmRlcmluZyBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIHNldHRpbmdzIG9yIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhhdCBjb25maWd1cmF0aW9uIHRoYXQgcmVsYXRlIHRvIG9yIGNvbnRyb2wgTU1VIGZ1bmN0aW9uYWxpdHkgZm9yIHRoaXMgcGFydGljdWxhciBhcmNoaXRlY3R1cmUuIEl0J3MgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIE1NVSBpcyBleHBvc2VkIGFuZCBlbmFibGVkIChvciBkaXNhYmxlZCkgYXQgdGhlIGJ1aWxkIGxldmVsIGZvciB0aGlzIEMtU0tZIHN5c3RlbSwgYW5kIHdoYXQgY2hvaWNlcyBhcmUgYXZhaWxhYmxlLiBUaGlzIEtjb25maWcgZmlsZSBpcyB3aGVyZSBJJ2xsIGZpbmQgdGhlIGFuc3dlcnMgdG8gdGhvc2UgcXVlc3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDA0OCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI2OjAyLjM4NTA2OTAyN1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYwNzA0NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1NVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL2Nza3kvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2Nza3kvS2NvbmZpZz0xNTc9Y29uZmlnIEdFTkVSSUNfSFdFSUdIVFxcbi0tXFxuYXJjaC9jc2t5L0tjb25maWctMTU5LVxcbmFyY2gvY3NreS9LY29uZmlnOjE2MDpjb25maWcgTU1VXFxuYXJjaC9jc2t5L0tjb25maWctMTYxLVxcdGRlZl9ib29sIHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6MjY6MDIuNDQxMTQxMzg2WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzI1ODU1OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpczpcblxuKipNZW1vcnkgTWFuYWdlbWVudCBVbml0IENvbnNpZGVyYXRpb25zIGZvciBDc2t5KipcblxuT2theSwgc28gQ3NreSBoYXMgYSBNZW1vcnkgTWFuYWdlbWVudCBVbml0IChNTVUpLCB0aGF0J3MgZ29vZCB0byBrbm93LiBOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBrZXJuZWwuIFdoZXJlIHdvdWxkIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHJlbGV2YW50IHNldHRpbmdzPyBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEtjb25maWcgZmlsZXMuIEdpdmVuIHRoYXQsIEkgc2hvdWxkIGxvb2sgYXQgYGFyY2gvbTY4ay9LY29uZmlnYCwgaXQncyBub3QgdGhlIGNvcnJlY3QgYXJjaGl0ZWN0dXJlLCBidXQgdGhpcyBmaWxlIGlzIG9mdGVuIGEgZ29vZCBwbGFjZSB0byBzdGFydCB0byBzZWUgaG93IE1NVSBzdXBwb3J0IGlzIGdlbmVyYWxseSBoYW5kbGVkIHdpdGhpbiB0aGUga2VybmVsIGFuZCBpZiB0aGF0IGhlbHBzIG1lIGRldGVybWluZSB0aGUgdHlwaWNhbCBsb2NhdGlvbi4gSSBjYW4gYWRhcHQgdGhlIGtub3dsZWRnZSBJIGdhaW4gaGVyZSB0byB0aGUgQ3NreSBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgTU1VIGlzIGV4cG9zZWQgYW5kIGVuYWJsZWQgZm9yIENza3ksIGFuZCB0aGUgS2NvbmZpZyBmaWxlcyBhcmUgdGhlIHBsYWNlIHRvIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDM1MywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI2OjA1LjQ3MzcyODg4NFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU3ODk3MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1NVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL202OGsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL202OGsvS2NvbmZpZz03OT1jb25maWcgUEdUQUJMRV9MRVZFTFNcXG4tLVxcbmFyY2gvbTY4ay9LY29uZmlnLTgyLVxcbmFyY2gvbTY4ay9LY29uZmlnOjgzOmNvbmZpZyBNTVVcXG5hcmNoL202OGsvS2NvbmZpZy04NC1cXHRib29sIFxcXCJNTVUtYmFzZWQgUGFnZWQgTWVtb3J5IE1hbmFnZW1lbnQgU3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvbTY4ay9LY29uZmlnLTg5LVxcbmFyY2gvbTY4ay9LY29uZmlnOjkwOmNvbmZpZyBNTVVfTU9UT1JPTEFcXG5hcmNoL202OGsvS2NvbmZpZy05MS1cXHRkZWZfYm9vbCBNTVUgXFx1MDAyNlxcdTAwMjYgTTY4S0NMQVNTSUNcXG4tLVxcbmFyY2gvbTY4ay9LY29uZmlnLTkzLVxcbmFyY2gvbTY4ay9LY29uZmlnOjk0OmNvbmZpZyBNTVVfQ09MREZJUkVcXG5hcmNoL202OGsvS2NvbmZpZy05NS1cXHRkZWZfYm9vbCBNTVUgXFx1MDAyNlxcdTAwMjYgQ09MREZJUkVcXG4tLVxcbmFyY2gvbTY4ay9LY29uZmlnLTk3LVxcbmFyY2gvbTY4ay9LY29uZmlnOjk4OmNvbmZpZyBNTVVfU1VOM1xcbmFyY2gvbTY4ay9LY29uZmlnLTk5LVxcdGRlZl9ib29sIE1NVSBcXHUwMDI2XFx1MDAyNiBTVU4zXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI2OjA1LjUzOTUyMjA4M1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjY0MjYwNzYyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogQSBOb21tdSBNZW1vcnkgTWFuYWdlbWVudCBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIE02OGsgY29kZSwgYW5kIHRoZSBNTVUgY29uZmlndXJhdGlvbiBpcyBrZXkg4oCTIGBDT05GSUdfTU1VYCBpcyB0aGUgb2J2aW91cyBmbGFnLCBidXQgd2UgY2FuJ3QgZGlyZWN0bHkgdXNlIGAhTU1VYCBpbiBgRW5hYmxlQ29uZmlnc2AuIEhtbSwgdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIGEgY29uZmlndXJhdGlvbiBvcHRpb24gc3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciB0aGlzIGNhc2UuIEJ1dCBpdCAqaXMqIHdvcnRoIGNvbnNpZGVyaW5nIGFzIGEgZnV6emluZyB0YXJnZXQgYmVjYXVzZSBpdCdzIGhhbmRsaW5nIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgKnNwZWNpZmljYWxseSogZm9yIG5vbW11IHN5c3RlbXMuXG5cbk5vdywgYSBwb3RlbnRpYWwgcm9hZGJsb2NrOiBpZiBpdCdzIG5vbW11LCBjYW4gaXQgZXZlbiBiZSByZWFjaGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVU/IFllcywgUUVNVSBzdXBwb3J0cyBub21tdSB0YXJnZXRzLCBmb3IgaW5zdGFuY2UgdXNpbmcgdGhlIGBxZW11LXN5c3RlbS1hcm0gLU0gdmVyc2F0aWxlcGJgIGNvbmZpZ3VyYXRpb24gd2l0aCBhIG5vbW11IGtlcm5lbCwgb3IgYWxzbyBgcWVtdS1zeXN0ZW0tcmlzY3Y2NGAgd2l0aCBhIG5vbW11IGtlcm5lbC4gU28geWVzLCBpdCdzIHJlYWNoYWJsZS5cblxuSXMgdGhpcyBwYXRjaCBmdW5jdGlvbmFsLCB0aG91Z2g/IExvb2tpbmcgYXQgdGhlIGNvZGUgYWdhaW4sIEkgc2VlIGl0J3MgZml4aW5nIGFuIGVycm9yIHBhdGggaW4gYGRvX21tYXBgLiBTcGVjaWZpY2FsbHksIHRoaXMgcGF0Y2ggbW9kaWZpZXMgYGRvX21tYXBgIGluIGBtbS9ub21tdS5jYCwgd2hpY2ggaXMgdGhlIG1haW4gbW1hcCBpbXBsZW1lbnRhdGlvbiBpbiBub21tdSBzeXN0ZW1zLCBzbyBpdCdzIGEgdmVyeSBob3QtcGF0aCBmdW5jdGlvbi4gVGhlIHBhdGNoIG1vZGlmaWVzIGBkb19tbWFwYCBhbmQgaXRzIGVycm9yIGhhbmRsaW5nLiBJIHdhbnQgdG8gY2hlY2sgYG1tL25vbW11LmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zLlxuXG5MZXQncyBjaGVjayB0aGUgcGF0Y2g6IEl0IGxvb2tzIGxpa2UgdGhlIG9yaWdpbmFsIGNvZGUgaGFkIGBhZGRfbm9tbXVfcmVnaW9uKHJlZ2lvbilgIHJpZ2h0IGFmdGVyIHRoZSBjYWxsIHRvIGBkb19tbWFwX3ByaXZhdGVgLCBidXQgbm93IGl0J3MgbW92ZWQgKmFmdGVyKiBhIGB2bWFfaXRlcl9wcmVhbGxvY2AgY2FsbC4gVGhpcyBzdWdnZXN0cyBhIGNoYW5nZSBpbiBob3cgbWVtb3J5IHJlZ2lvbnMgYXJlIG1hbmFnZWQgaW4gdGhlIG5vbW11IGVudmlyb25tZW50LCBwYXJ0aWN1bGFybHkgd2hlbiBoYW5kbGluZyBlcnJvcnMuIFRoZSBjb2RlIG5vdyBoYW5kbGVzIHRoZSBlcnJvcnMgd2l0aCBgdm1hX2l0ZXJfZnJlZShcdTAwMjZ2bWkpO2AsIGBmcHV0KHZtYS1cdTAwM2V2bV9maWxlKTtgIGFuZCBgdm1fYXJlYV9mcmVlKHZtYSk7YC4gSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBwcmVhbGxvY2F0aW9uLCBpdCBub3cgZnJlZXMgdGhlIHJlZ2lvbiBhbmQgY2FsbHMgYHZtYV9jbG9zZSh2bWEpO2AsIGFuZCB0aGVuIGNhbGxzIGBrbWVtX2NhY2hlX2ZyZWUodm1fcmVnaW9uX2phciwgcmVnaW9uKTtgLiBUaGUgcGF0Y2ggYWRkcyBzb21lIG5ldyBlcnJvcnMuXG5cblRoaXMgZnVuY3Rpb24gYGRvX21tYXBgIGl0c2VsZiBzZWVtcyB0byBiZSB0aGUgZm9jdXMgaGVyZS5cblxuU28sIGBkb19tbWFwYCBpcyB0aGUgcHJpbWFyeSB0YXJnZXQgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4NjgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI2OjIyLjE4MjEzMjA1NloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM1NTg2NDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl51bnNpZ25lZCBsb25nIGRvX21tYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vbm9tbXUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9ub21tdS5jPTkxND1zdGF0aWMgaW50IGRvX21tYXBfcHJpdmF0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbm1tL25vbW11LmMtMTAxMS0gKi9cXG5tbS9ub21tdS5jOjEwMTI6dW5zaWduZWQgbG9uZyBkb19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLFxcbm1tL25vbW11LmMtMTAxMy1cXHRcXHRcXHR1bnNpZ25lZCBsb25nIGFkZHIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDIxOjI2OjIyLjUxNzcyNTM1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMDM4MDU1MjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYXNvbmluZyB0aHJvdWdoIHRoZSBQYXRjaCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIHRoYXQgdGhlIG9ubHkgbW9kaWZpZWQgZnVuY3Rpb24gaXMgYGRvX21tYXBgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW5jbHVkZSBpdCBpbiBgRm9jdXNTeW1ib2xzYCwgYnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IGBkb19tbWFwYCBpcyBjYWxsZWQgZm9yIGV2ZXJ5IGBtbWFwYCBzeXNjYWxsLiBUaGF0IG1ha2VzIGl0IGEgc2VyaW91cyBob3QtcGF0aCBmdW5jdGlvbiwgYW5kIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gYXZvaWQgdGhvc2UgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLiBJIG5lZWQgdG8gZm9jdXMgb24gdGhlIGVycm9yIHBhdGhzLCBub3QgdGhlIGNvbW1vbiBleGVjdXRpb24uXG5cblNvLCBpZiBJIGRvbid0IHNwZWNpZnkgYGRvX21tYXBgLCB3aGF0ICpkbyogSSBzcGVjaWZ5PyBIbW0sIG1heWJlIGBkb19tbWFwX3ByaXZhdGVgPyBObywgdGhhdCdzIG5vdCBiZWVuIG1vZGlmaWVkLiBCdXQgdGhlIGVycm9yIHBhdGggSSAqd2FudCogdG8gdGVzdCBpcyB0cmlnZ2VyZWQgd2hlbiBgdm1hX2l0ZXJfcHJlYWxsb2NgIGZhaWxzLiBUaGF0J3MgYW4gZXJyb3IgaW5qZWN0aW9uIHNjZW5hcmlvLCBhbmQgdGhhdCdzIHRoZSBrZXkuIFNob3VsZCBJIGxpc3QgYW55IG90aGVyIGZ1bmN0aW9uPyBOb3BlLlxuXG5MZXQgbWUgZ28gYmFjayBhbmQgcmUtcmVhZCB0aGUgcHJvbXB0J3MgY3JpdGVyaWEgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBEb2N1bWVudGF0aW9uLCBsb2dnaW5nLCBkZWNvcmF0aXZlIGNoYW5nZXMsIGNvbnN0YW50cyB3aXRob3V0IGZ1bmN0aW9uYWwgaW1wYWN0LCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhz4oCmIG5vbmUgb2YgdGhvc2UgYXBwbHkgaGVyZS4gSSdtIGZvY3VzaW5nIG9uIGEgc3BlY2lmaWMgZXJyb3IgaGFuZGxpbmcgYnJhbmNoLCBub3QgdGhlIHByaW1hcnkgbW1hcCBwYXRoLlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcyBhYm91dCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIElzIHRoaXMgY29kZSByZWFjaGFibGUgaW4gUUVNVT8gWWVzLCBkZWZpbml0ZWx5LiBXZSBjYW4gZW11bGF0ZSBub21tdSBzeXN0ZW1zIHdpdGggUUVNVSAoQVJNIENvcnRleC1NLCBSSVNDLVYgbm9tbXUpLCBhbmQgU3l6a2FsbGVyIGV2ZW4gc3VwcG9ydHMgdGVzdGluZyB0aGVzZSB0eXBlcyBvZiBrZXJuZWxzLlxuXG5OZXh0LCBkbyBJIG5lZWQgYW55IHNwZWNpZmljIGBDT05GSUdfYCBvcHRpb25zPyBXZWxsLCBjbGVhcmx5LCBgQ09ORklHX01NVWAgbmVlZHMgdG8gYmUgZGlzYWJsZWQuIEJ1dCBJIGNhbid0IHNwZWNpZnkgYCFDT05GSUdfTU1VYCBpbiBgRW5hYmxlQ29uZmlnc2AuIElzIHRoZXJlIGFueSBvdGhlciBjb25maWc/IEknbGwgY2hlY2sgYG1tL0tjb25maWdgLCBhbmQgeWVzLCB0aGVyZSBpcyBgQ09ORklHX05PTU1VX0lOSVRJQUxfVFJJTV9FWENFU1NgLiBCdXQgdGhhdCdzIG5vdCByZXF1aXJlZCB0byB0ZXN0IHRoaXMuIFNvIGBFbmFibGVDb25maWdzYCBzaG91bGQgYmUgZW1wdHkuXG5cbkxldCBtZSBkb3VibGUtY2hlY2sgb25jZSBtb3JlOiBqdXN0IGBkb19tbWFwYCBpbiBgbW0vbm9tbXUuY2A/IFllcywgdGhhdCBpcyBjb3JyZWN0LlxuXG5Pa2F5LCBsZXQncyBjaXJjbGUgYmFjayB0byB0aGUgaG90LXBhdGggY29uY2Vybi4gYGRvX21tYXBgICppcyogdmVyeSBmcmVxdWVudCwgYSBnZW5lcmljIGhvdC1wYXRoLiBGdXp6aW5nIGl0IGRpcmVjdGx5IHdvdWxkIGxpa2VseSBqdXN0IGdlbmVyYXRlIGxvdHMgb2Ygc3RhbmRhcmQgYG1tYXBgIGNhbGxzIHRoYXQgU3l6a2FsbGVyIGlzIGFscmVhZHkgZ29vZCBhdCwgYW5kIEknZCBtaXNzIHRoZSBlcnJvciBjb25kaXRpb25zLiBUaGUgcHJvbXB0IHNheXMsIFwiQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXCIgTGVhdmluZyBgRm9jdXNTeW1ib2xzYCBlbXB0eSBzZWVtcyBsaWtlIHRoZSByaWdodCBjYWxsIGhlcmUuXG5cblNvLCBsZXQncyB3cml0ZSBvdXQgdGhlIGxvZ2ljOiBUaGUgcGF0Y2ggZml4ZXMgYW4gZXJyb3IgaW4gYGRvX21tYXBgIGZvciBub21tdSBhcmNoaXRlY3R1cmVzLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgYSBmYWlsdXJlIGluIGB2bWFfaXRlcl9wcmVhbGxvY2AuIEl0J3MgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYW5kIGBkb19tbWFwYCBpcyBhIGhvdC1wYXRoIGZ1bmN0aW9uLiAgRm9jdXNTeW1ib2xzIHNob3VsZCBzdGF5IGVtcHR5LiBObyBzcGVjaWZpYyBjb25maWdzIG5lZWQgdG8gYmUgZW5hYmxlZCBiZWNhdXNlIGl0IHJ1bnMgd2hlbiBgQ09ORklHX01NVWAgaXMgZGlzYWJsZWQuIFRoYXQncyB0aGUgY29ycmVjdCB3YXkgdG8gdGhpbmsgYWJvdXQgdGhpcy4gTGV0IG1lIHZlcmlmeSBhZ2FpbiB0aGF0IG9ubHkgYGRvX21tYXBgIGlzIGNoYW5nZWQuLi4gWWVwLCBvbmx5IGBkb19tbWFwYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI2NTUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6MjY6MzMuNTU1NzgyMjQ5WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTUxMzM5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlcnJvcl92bWFfaXRlcl9wcmVhbGxvY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9ub21tdS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL25vbW11LmM9MTAxMj11bnNpZ25lZCBsb25nIGRvX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5tbS9ub21tdS5jLTEyMDAtXFx0aWYgKHZtYV9pdGVyX3ByZWFsbG9jKFxcdTAwMjZ2bWksIHZtYSkpXFxubW0vbm9tbXUuYzoxMjAxOlxcdFxcdGdvdG8gZXJyb3Jfdm1hX2l0ZXJfcHJlYWxsb2M7XFxubW0vbm9tbXUuYy0xMjAyLVxcbi0tXFxubW0vbm9tbXUuYy0xMjQ2LVxcbm1tL25vbW11LmM6MTI0NzplcnJvcl92bWFfaXRlcl9wcmVhbGxvYzpcXG5tbS9ub21tdS5jLTEyNDgtXFx0cHJfd2FybihcXFwiQWxsb2NhdGlvbiBvZiB2bWEgaXRlcmF0b3IgZm9yIHByb2Nlc3MgJWQgZmFpbGVkXFxcXG5cXFwiLCBjdXJyZW50LVxcdTAwM2VwaWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQyMToyNjozMy42MzEzMDA0NDhaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcyOTk2ODI4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGV4cHJlc3NlZCBhcyB0aG91Z2ggdGhlc2Ugd2VyZSBteSBvd24gdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgdGhlIGNvcmUgcmVxdWlyZW1lbnQgaGVyZSBpcyBzdHJhaWdodGZvcndhcmQ6IGl0J3MgYWxsIGFib3V0IGBkb19tbWFwYC4gR290IGl0LiBMZXQncyBub3Qgb3ZlcmNvbXBsaWNhdGUgdGhpbmdzLlxuXG5Ob3csIGxldCBtZSBqdXN0IHF1aWNrbHkgc2NhbiBmb3IgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBvciBjb25kaXRpb25hbCBicmFuY2hlcyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGUgZmxvdy4gTm9wZSwgbm90aGluZyBlbHNlLiBKdXN0IGEgY2xlYW4sIGRpcmVjdCBwYXRoIGZvcndhcmQuXG5cblRoZXJlZm9yZSwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4gRG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ0MDQsIk91dHB1dFRva2VucyI6MTQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMjE6MjY6MzcuMzYxMjcwODQ0WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUwNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgYGRvX21tYXBgIGluIGBtbS9ub21tdS5jYCB0byBmaXggYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgdXNlLWFmdGVyLWZyZWUgd2hlbiBgdm1hX2l0ZXJfcHJlYWxsb2NgIGZhaWxzLiBUaGlzIGlzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgZm9yIG5vbW11IGFyY2hpdGVjdHVyZXMsIHdoaWNoIGNhbiBiZSB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gYGRvX21tYXBgIGlzIGEgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbiwgc28gaXQgaXMgb21pdHRlZCBmcm9tIEZvY3VzU3ltYm9scy4gVGhlIGNvZGUgaXMgY29tcGlsZWQgd2hlbiBgQ09ORklHX01NVWAgaXMgZGlzYWJsZWQsIHNvIG5vIHNwZWNpZmljIGNvbmZpZ3MgbmVlZCB0byBiZSBleHBsaWNpdGx5IGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIGBkb19tbWFwYCBpbiBgbW0vbm9tbXUuY2AgdG8gZml4IGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIHVzZS1hZnRlci1mcmVlIHdoZW4gYHZtYV9pdGVyX3ByZWFsbG9jYCBmYWlscy4gVGhpcyBpcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGZvciBub21tdSBhcmNoaXRlY3R1cmVzLCB3aGljaCBjYW4gYmUgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIGBkb19tbWFwYCBpcyBhIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb24sIHNvIGl0IGlzIG9taXR0ZWQgZnJvbSBGb2N1c1N5bWJvbHMuIFRoZSBjb2RlIGlzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19NTVVgIGlzIGRpc2FibGVkLCBzbyBubyBzcGVjaWZpYyBjb25maWdzIG5lZWQgdG8gYmUgZXhwbGljaXRseSBlbmFibGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowznttl[1] Phase: Succeeded StartedAt: 2026-07-08 21:26:48 +0000 UTC FinishedAt: 2026-07-08 21:26:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-08 21:26:48 +0000 UTC FinishedAt: 2026-07-08 21:26:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[2] Phase: Succeeded StartedAt: 2026-07-08 21:26:48 +0000 UTC FinishedAt: 2026-07-08 22:48:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-08 21:26:48 +0000 UTC FinishedAt: 2026-07-08 22:48:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-08 21:26:48 +0000 UTC FinishedAt: 2026-07-08 21:26:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-08 21:26:48 +0000 UTC FinishedAt: 2026-07-08 21:26:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowznttl/series-workflowznttl-convert-artifact-1114162976/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-08 21:26:59 +0000 UTC FinishedAt: 2026-07-08 22:03:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-08 21:26:59 +0000 UTC FinishedAt: 2026-07-08 22:03:52 +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:*5d6e46c9-b3b6-4912-a8f9-52458d207a19,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-workflowznttl/series-workflowznttl-convert-artifact-1114162976/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": "53fbcdea-d70d-4444-b788-ac15c0ca0753", "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-workflowznttl/series-workflowznttl-build-action-1507436006/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-08 21:26:59 +0000 UTC FinishedAt: 2026-07-08 22:03:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*5d6e46c9-b3b6-4912-a8f9-52458d207a19,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-workflowznttl/series-workflowznttl-convert-artifact-1114162976/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": "53fbcdea-d70d-4444-b788-ac15c0ca0753", "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-workflowznttl/series-workflowznttl-build-action-1507436006/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-08 22:03:52 +0000 UTC FinishedAt: 2026-07-08 22:03:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-08 22:03:52 +0000 UTC FinishedAt: 2026-07-08 22:03:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-08 22:03:52 +0000 UTC FinishedAt: 2026-07-08 22:04:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-08 22:03:52 +0000 UTC FinishedAt: 2026-07-08 22:04:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowznttl/series-workflowznttl-convert-artifact-729148743/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-08 22:04:18 +0000 UTC FinishedAt: 2026-07-08 22:06:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-08 22:04:18 +0000 UTC FinishedAt: 2026-07-08 22:06:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*53fbcdea-d70d-4444-b788-ac15c0ca0753,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-workflowznttl/series-workflowznttl-build-action-1507436006/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-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-08 22:06:33 +0000 UTC FinishedAt: 2026-07-08 22:06:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-08 22:06:33 +0000 UTC FinishedAt: 2026-07-08 22:06:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-08 22:06:33 +0000 UTC FinishedAt: 2026-07-08 22:43:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-08 22:06:33 +0000 UTC FinishedAt: 2026-07-08 22:43:04 +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:*5d6e46c9-b3b6-4912-a8f9-52458d207a19,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-workflowznttl/series-workflowznttl-convert-artifact-729148743/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": "776ad5ae-04ca-4741-87c8-92589dd9434b", "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-workflowznttl/series-workflowznttl-build-action-206712011/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-08 22:06:33 +0000 UTC FinishedAt: 2026-07-08 22:42:54 +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:*5d6e46c9-b3b6-4912-a8f9-52458d207a19,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-workflowznttl/series-workflowznttl-convert-artifact-729148743/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": "776ad5ae-04ca-4741-87c8-92589dd9434b", "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-workflowznttl/series-workflowznttl-build-action-206712011/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-08 22:43:04 +0000 UTC FinishedAt: 2026-07-08 22:43:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-08 22:43:04 +0000 UTC FinishedAt: 2026-07-08 22:43:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-08 22:43:04 +0000 UTC FinishedAt: 2026-07-08 22:45:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-08 22:43:04 +0000 UTC FinishedAt: 2026-07-08 22:45:14 +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:*776ad5ae-04ca-4741-87c8-92589dd9434b,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-workflowznttl/series-workflowznttl-build-action-206712011/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-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-08 22:45:24 +0000 UTC FinishedAt: 2026-07-08 22:48:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-08 22:45:24 +0000 UTC FinishedAt: 2026-07-08 22:48:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*53fbcdea-d70d-4444-b788-ac15c0ca0753,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*776ad5ae-04ca-4741-87c8-92589dd9434b,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-workflowznttl/series-workflowznttl-build-action-1507436006/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-workflowznttl/series-workflowznttl-build-action-206712011/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-08 22:45:24 +0000 UTC FinishedAt: 2026-07-08 22:45:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-08 22:45:24 +0000 UTC FinishedAt: 2026-07-08 22:45:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowznttl/series-workflowznttl-convert-artifact-931237408/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-08 22:45:24 +0000 UTC FinishedAt: 2026-07-08 22:45:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-08 22:45:24 +0000 UTC FinishedAt: 2026-07-08 22:45:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-08 22:45:24 +0000 UTC FinishedAt: 2026-07-08 22:45:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-08 22:45:34 +0000 UTC FinishedAt: 2026-07-08 22:48:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznttl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":[],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"302dfbff3e73be2ba5723237c6303244ec27cebb","config_name":"upstream-apparmor-kasan.config","series_id":"49ade4d9-a7bf-4c5a-aa55-c595265c91ea","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-08 22:45:34 +0000 UTC FinishedAt: 2026-07-08 22:47:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*53fbcdea-d70d-4444-b788-ac15c0ca0753,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*776ad5ae-04ca-4741-87c8-92589dd9434b,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-workflowznttl/series-workflowznttl-build-action-1507436006/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-workflowznttl/series-workflowznttl-build-action-206712011/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-workflowznttl/series-workflowznttl-convert-artifact-931237408/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,}