Name: series-workflow5c4mw Phase: Succeeded StartedAt: 2026-07-17 08:27:22 +0000 UTC FinishedAt: 2026-07-17 12:46:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[0] Phase: Succeeded StartedAt: 2026-07-17 08:27:22 +0000 UTC FinishedAt: 2026-07-17 08:44:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[0].run-triage Phase: Succeeded StartedAt: 2026-07-17 08:27:22 +0000 UTC FinishedAt: 2026-07-17 08:44:11 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "fce2dfa773ced15f27dd27cd0b482a7473cdcf2a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "UNIX" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "fce2dfa773ced15f27dd27cd0b482a7473cdcf2a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "UNIX" ], "series_id": "125996de-23ef-4fdc-ba93-52c6ed83675e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "unix_schedule_gc", "unix_release_sock", "unix_prepare_fpl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA4OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VOSVgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1bml4X3NjaGVkdWxlX2djJiMzNDssCiAgICAmIzM0O3VuaXhfcmVsZWFzZV9zb2NrJiMzNDssCiAgICAmIzM0O3VuaXhfcHJlcGFyZV9mcGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uIHNjaGVkdWxpbmcgbG9naWMuIEl0IHJlbW92ZXMgdGhlIHVzZXIgcGVuYWx0eSBhbmQgc3luY2hyb25vdXMgZmx1c2ggZnJvbSBgdW5peF9zY2hlZHVsZV9nY2AsIGFuZCBjaGFuZ2VzIGl0IHRvIGJlIGNhbGxlZCBmcm9tIGBkb19leGl0YCAoYWZ0ZXIgYGV4aXRfZmlsZXNgKSBpbnN0ZWFkIG9mIGB1bml4X3ByZXBhcmVfZnBsYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29yayAvIHByb2Nlc3MgZXhpdCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IGFuZCB3aGVuIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uIGlzIHRyaWdnZXJlZCwgd2hpY2ggY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucyBvciBtZW1vcnkgbGVha3MgaWYgbm90IHByb3Blcmx5IGhhbmRsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDg6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjMGQ0Y2E3MDVjMmYzZDcwMDdjMjc1ODE3YTlmY2JiMWZlNGQ4YjlhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMDg6NDM6MDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvYWZfdW5peC5oIGIvaW5jbHVkZS9uZXQvYWZfdW5peC5oXG5pbmRleCAzNGY1M2RkZTY1Y2VhMi4uMWRmZGMwNzIwMDUyY2YgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9hZl91bml4LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2FmX3VuaXguaFxuQEAgLTE0LDExICYjNDM7MTQsMTYgQEBcbiBcbiAjaWYgSVNfRU5BQkxFRChDT05GSUdfVU5JWClcbiBzdHJ1Y3QgdW5peF9zb2NrICp1bml4X2dldF9zb2NrZXQoc3RydWN0IGZpbGUgKmZpbHApO1xuJiM0Mzt2b2lkIHVuaXhfc2NoZWR1bGVfZ2Modm9pZCk7XG4gI2Vsc2VcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB1bml4X3NvY2sgKnVuaXhfZ2V0X3NvY2tldChzdHJ1Y3QgZmlsZSAqZmlscClcbiB7XG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgdW5peF9zY2hlZHVsZV9nYyh2b2lkKVxuJiM0Mzt7XG4mIzQzO31cbiAjZW5kaWZcbiBcbiBzdHJ1Y3QgdW5peF9hZGRyZXNzIHtcbmRpZmYgLS1naXQgYS9rZXJuZWwvZXhpdC5jIGIva2VybmVsL2V4aXQuY1xuaW5kZXggMmMwYjFjMDI5MjBmNDYuLjc2NGE5MTFmMTExZWNjIDEwMDY0NFxuLS0tIGEva2VybmVsL2V4aXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2V4aXQuY1xuQEAgLTcxLDYgJiM0Mzs3MSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdW53aW5kX2RlZmVycmVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91YWNjZXNzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9waWRmcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY25ldC9hZl91bml4LmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcdTAwM2N1YXBpL2xpbnV4L3dhaXQuaFx1MDAzZVxuIFxuQEAgLTEwMDIsNiAmIzQzOzEwMDMsNyBAQCB2b2lkIF9fbm9yZXR1cm4gZG9fZXhpdChsb25nIGNvZGUpXG4gXHRleGl0X3NlbSh0c2spO1xuIFx0ZXhpdF9zaG0odHNrKTtcbiBcdGV4aXRfZmlsZXModHNrKTtcbiYjNDM7XHR1bml4X3NjaGVkdWxlX2djKCk7IC8qIE11c3QgYmUgYWZ0ZXIgZXhpdF9maWxlcygpICovXG4gXHRleGl0X2ZzKHRzayk7XG4gXHRpZiAoZ3JvdXBfZGVhZClcbiBcdFx0ZGlzYXNzb2NpYXRlX2N0dHkoMSk7XG5kaWZmIC0tZ2l0IGEvbmV0L3VuaXgvYWZfdW5peC5jIGIvbmV0L3VuaXgvYWZfdW5peC5jXG5pbmRleCBmN2E5ZDU1ZWVlOGExMi4uNzU5ZGI3MzRhODY2NDYgMTAwNjQ0XG4tLS0gYS9uZXQvdW5peC9hZl91bml4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC91bml4L2FmX3VuaXguY1xuQEAgLTczMyw3ICYjNDM7NzMzLDcgQEAgc3RhdGljIHZvaWQgdW5peF9yZWxlYXNlX3NvY2soc3RydWN0IHNvY2sgKnNrLCBpbnQgZW1icmlvbilcbiBcbiBcdC8qIC0tLS0gU29ja2V0IGlzIGRlYWQgbm93IGFuZCBtb3N0IHByb2JhYmx5IGRlc3Ryb3llZCAtLS0tICovXG4gXG4tXHR1bml4X3NjaGVkdWxlX2djKE5VTEwpO1xuJiM0MztcdHVuaXhfc2NoZWR1bGVfZ2MoKTtcbiB9XG4gXG4gc3RydWN0IHVuaXhfcGVlcmNyZWQge1xuZGlmZiAtLWdpdCBhL25ldC91bml4L2FmX3VuaXguaCBiL25ldC91bml4L2FmX3VuaXguaFxuaW5kZXggODExOWRiZWVmM2EzYzYuLmZjNGM1OTg5MzEyNGNjIDEwMDY0NFxuLS0tIGEvbmV0L3VuaXgvYWZfdW5peC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvdW5peC9hZl91bml4LmhcbkBAIC0zMCw3ICYjNDM7MzAsNiBAQCB2b2lkIHVuaXhfdXBkYXRlX2VkZ2VzKHN0cnVjdCB1bml4X3NvY2sgKnJlY2VpdmVyKTtcbiBpbnQgdW5peF9wcmVwYXJlX2ZwbChzdHJ1Y3Qgc2NtX2ZwX2xpc3QgKmZwbCk7XG4gdm9pZCB1bml4X2Rlc3Ryb3lfZnBsKHN0cnVjdCBzY21fZnBfbGlzdCAqZnBsKTtcbiB2b2lkIHVuaXhfcGVla19mcGwoc3RydWN0IHNjbV9mcF9saXN0ICpmcGwpO1xuLXZvaWQgdW5peF9zY2hlZHVsZV9nYyhzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIpO1xuIFxuIC8qIFNPQ0tfRElBRyAqL1xuIGxvbmcgdW5peF9pbnFfbGVuKHN0cnVjdCBzb2NrICpzayk7XG5kaWZmIC0tZ2l0IGEvbmV0L3VuaXgvZ2FyYmFnZS5jIGIvbmV0L3VuaXgvZ2FyYmFnZS5jXG5pbmRleCAwNzgzNTU1ZTI1MjY2MC4uZDQ2YWViOWQyMDUxODkgMTAwNjQ0XG4tLS0gYS9uZXQvdW5peC9nYXJiYWdlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC91bml4L2dhcmJhZ2UuY1xuQEAgLTMwMCw4ICYjNDM7MzAwLDYgQEAgaW50IHVuaXhfcHJlcGFyZV9mcGwoc3RydWN0IHNjbV9mcF9saXN0ICpmcGwpXG4gXHRpZiAoIWZwbC1cdTAwM2VlZGdlcylcbiBcdFx0Z290byBlcnI7XG4gXG4tXHR1bml4X3NjaGVkdWxlX2djKGZwbC1cdTAwM2V1c2VyKTtcbi1cbiBcdHJldHVybiAwO1xuIFxuIGVycjpcbkBAIC02MzcsMjMgJiM0Mzs2MzUsMTEgQEAgc3RhdGljIHZvaWQgdW5peF9nYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXG4gc3RhdGljIERFQ0xBUkVfV09SSyh1bml4X2djX3dvcmssIHVuaXhfZ2MpO1xuIFxuLSNkZWZpbmUgVU5JWF9JTkZMSUdIVF9TQU5FX1VTRVJcdFx0KFNDTV9NQVhfRkQgKiA4KVxuLVxuLXZvaWQgdW5peF9zY2hlZHVsZV9nYyhzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIpXG4mIzQzO3ZvaWQgdW5peF9zY2hlZHVsZV9nYyh2b2lkKVxuIHtcbiBcdGlmIChSRUFEX09OQ0UodW5peF9ncmFwaF9zdGF0ZSkgPT0gVU5JWF9HUkFQSF9OT1RfQ1lDTElDKVxuIFx0XHRyZXR1cm47XG4gXG4tXHQvKiBQZW5hbGlzZSB1c2VycyB3aG8gd2FudCB0byBzZW5kIEFGX1VOSVggc29ja2V0c1xuLVx0ICogYnV0IHdob3NlIHNvY2tldHMgaGF2ZSBub3QgYmVlbiByZWNlaXZlZCB5ZXQuXG4tXHQgKi9cbi1cdGlmICh1c2VyIFx1MDAyNlx1MDAyNlxuLVx0ICAgIFJFQURfT05DRSh1c2VyLVx1MDAzZXVuaXhfaW5mbGlnaHQpIFx1MDAzYyBVTklYX0lORkxJR0hUX1NBTkVfVVNFUilcbi1cdFx0cmV0dXJuO1xuLVxuIFx0aWYgKCFSRUFEX09OQ0UoZ2NfaW5fcHJvZ3Jlc3MpKVxuIFx0XHRxdWV1ZV93b3JrKHN5c3RlbV9kZmxfd3EsIFx1MDAyNnVuaXhfZ2Nfd29yayk7XG4tXG4tXHRpZiAodXNlciBcdTAwMjZcdTAwMjYgUkVBRF9PTkNFKHVuaXhfZ3JhcGhfY3ljbGljX3NjY3MpKVxuLVx0XHRmbHVzaF93b3JrKFx1MDAyNnVuaXhfZ2Nfd29yayk7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA4OjQzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VOSVgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1bml4X3NjaGVkdWxlX2djJiMzNDssCiAgICAmIzM0O3VuaXhfcmVsZWFzZV9zb2NrJiMzNDssCiAgICAmIzM0O3VuaXhfcHJlcGFyZV9mcGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uIHNjaGVkdWxpbmcgbG9naWMuIEl0IHJlbW92ZXMgdGhlIHVzZXIgcGVuYWx0eSBhbmQgc3luY2hyb25vdXMgZmx1c2ggZnJvbSBgdW5peF9zY2hlZHVsZV9nY2AsIGFuZCBjaGFuZ2VzIGl0IHRvIGJlIGNhbGxlZCBmcm9tIGBkb19leGl0YCAoYWZ0ZXIgYGV4aXRfZmlsZXNgKSBpbnN0ZWFkIG9mIGB1bml4X3ByZXBhcmVfZnBsYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29yayAvIHByb2Nlc3MgZXhpdCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IGFuZCB3aGVuIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uIGlzIHRyaWdnZXJlZCwgd2hpY2ggY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucyBvciBtZW1vcnkgbGVha3MgaWYgbm90IHByb3Blcmx5IGhhbmRsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMwZDRjYTcwNWMyZjNkNzAwN2MyNzU4MTdhOWZjYmIxZmU0ZDhiOWEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxNyAwODo0MzowNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2FmX3VuaXguaCBiL2luY2x1ZGUvbmV0L2FmX3VuaXguaAppbmRleCAzNGY1M2RkZTY1Y2VhMi4uMWRmZGMwNzIwMDUyY2YgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2FmX3VuaXguaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9hZl91bml4LmgKQEAgLTE0LDExICYjNDM7MTQsMTYgQEAKIAogI2lmIElTX0VOQUJMRUQoQ09ORklHX1VOSVgpCiBzdHJ1Y3QgdW5peF9zb2NrICp1bml4X2dldF9zb2NrZXQoc3RydWN0IGZpbGUgKmZpbHApOwomIzQzO3ZvaWQgdW5peF9zY2hlZHVsZV9nYyh2b2lkKTsKICNlbHNlCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB1bml4X3NvY2sgKnVuaXhfZ2V0X3NvY2tldChzdHJ1Y3QgZmlsZSAqZmlscCkKIHsKIAlyZXR1cm4gTlVMTDsKIH0KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgdW5peF9zY2hlZHVsZV9nYyh2b2lkKQomIzQzO3sKJiM0Mzt9CiAjZW5kaWYKIAogc3RydWN0IHVuaXhfYWRkcmVzcyB7CmRpZmYgLS1naXQgYS9rZXJuZWwvZXhpdC5jIGIva2VybmVsL2V4aXQuYwppbmRleCAyYzBiMWMwMjkyMGY0Ni4uNzY0YTkxMWYxMTFlY2MgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9leGl0LmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2V4aXQuYwpAQCAtNzEsNiAmIzQzOzcxLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC91bndpbmRfZGVmZXJyZWQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91YWNjZXNzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGlkZnMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bmV0L2FmX3VuaXguaCZndDsKIAogI2luY2x1ZGUgJmx0O3VhcGkvbGludXgvd2FpdC5oJmd0OwogCkBAIC0xMDAyLDYgJiM0MzsxMDAzLDcgQEAgdm9pZCBfX25vcmV0dXJuIGRvX2V4aXQobG9uZyBjb2RlKQogCWV4aXRfc2VtKHRzayk7CiAJZXhpdF9zaG0odHNrKTsKIAlleGl0X2ZpbGVzKHRzayk7CiYjNDM7CXVuaXhfc2NoZWR1bGVfZ2MoKTsgLyogTXVzdCBiZSBhZnRlciBleGl0X2ZpbGVzKCkgKi8KIAlleGl0X2ZzKHRzayk7CiAJaWYgKGdyb3VwX2RlYWQpCiAJCWRpc2Fzc29jaWF0ZV9jdHR5KDEpOwpkaWZmIC0tZ2l0IGEvbmV0L3VuaXgvYWZfdW5peC5jIGIvbmV0L3VuaXgvYWZfdW5peC5jCmluZGV4IGY3YTlkNTVlZWU4YTEyLi43NTlkYjczNGE4NjY0NiAxMDA2NDQKLS0tIGEvbmV0L3VuaXgvYWZfdW5peC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC91bml4L2FmX3VuaXguYwpAQCAtNzMzLDcgJiM0Mzs3MzMsNyBAQCBzdGF0aWMgdm9pZCB1bml4X3JlbGVhc2Vfc29jayhzdHJ1Y3Qgc29jayAqc2ssIGludCBlbWJyaW9uKQogCiAJLyogLS0tLSBTb2NrZXQgaXMgZGVhZCBub3cgYW5kIG1vc3QgcHJvYmFibHkgZGVzdHJveWVkIC0tLS0gKi8KIAotCXVuaXhfc2NoZWR1bGVfZ2MoTlVMTCk7CiYjNDM7CXVuaXhfc2NoZWR1bGVfZ2MoKTsKIH0KIAogc3RydWN0IHVuaXhfcGVlcmNyZWQgewpkaWZmIC0tZ2l0IGEvbmV0L3VuaXgvYWZfdW5peC5oIGIvbmV0L3VuaXgvYWZfdW5peC5oCmluZGV4IDgxMTlkYmVlZjNhM2M2Li5mYzRjNTk4OTMxMjRjYyAxMDA2NDQKLS0tIGEvbmV0L3VuaXgvYWZfdW5peC5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC91bml4L2FmX3VuaXguaApAQCAtMzAsNyAmIzQzOzMwLDYgQEAgdm9pZCB1bml4X3VwZGF0ZV9lZGdlcyhzdHJ1Y3QgdW5peF9zb2NrICpyZWNlaXZlcik7CiBpbnQgdW5peF9wcmVwYXJlX2ZwbChzdHJ1Y3Qgc2NtX2ZwX2xpc3QgKmZwbCk7CiB2b2lkIHVuaXhfZGVzdHJveV9mcGwoc3RydWN0IHNjbV9mcF9saXN0ICpmcGwpOwogdm9pZCB1bml4X3BlZWtfZnBsKHN0cnVjdCBzY21fZnBfbGlzdCAqZnBsKTsKLXZvaWQgdW5peF9zY2hlZHVsZV9nYyhzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIpOwogCiAvKiBTT0NLX0RJQUcgKi8KIGxvbmcgdW5peF9pbnFfbGVuKHN0cnVjdCBzb2NrICpzayk7CmRpZmYgLS1naXQgYS9uZXQvdW5peC9nYXJiYWdlLmMgYi9uZXQvdW5peC9nYXJiYWdlLmMKaW5kZXggMDc4MzU1NWUyNTI2NjAuLmQ0NmFlYjlkMjA1MTg5IDEwMDY0NAotLS0gYS9uZXQvdW5peC9nYXJiYWdlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3VuaXgvZ2FyYmFnZS5jCkBAIC0zMDAsOCAmIzQzOzMwMCw2IEBAIGludCB1bml4X3ByZXBhcmVfZnBsKHN0cnVjdCBzY21fZnBfbGlzdCAqZnBsKQogCWlmICghZnBsLSZndDtlZGdlcykKIAkJZ290byBlcnI7CiAKLQl1bml4X3NjaGVkdWxlX2djKGZwbC0mZ3Q7dXNlcik7Ci0KIAlyZXR1cm4gMDsKIAogZXJyOgpAQCAtNjM3LDIzICYjNDM7NjM1LDExIEBAIHN0YXRpYyB2b2lkIHVuaXhfZ2Moc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCiBzdGF0aWMgREVDTEFSRV9XT1JLKHVuaXhfZ2Nfd29yaywgdW5peF9nYyk7CiAKLSNkZWZpbmUgVU5JWF9JTkZMSUdIVF9TQU5FX1VTRVIJCShTQ01fTUFYX0ZEICogOCkKLQotdm9pZCB1bml4X3NjaGVkdWxlX2djKHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcikKJiM0Mzt2b2lkIHVuaXhfc2NoZWR1bGVfZ2Modm9pZCkKIHsKIAlpZiAoUkVBRF9PTkNFKHVuaXhfZ3JhcGhfc3RhdGUpID09IFVOSVhfR1JBUEhfTk9UX0NZQ0xJQykKIAkJcmV0dXJuOwogCi0JLyogUGVuYWxpc2UgdXNlcnMgd2hvIHdhbnQgdG8gc2VuZCBBRl9VTklYIHNvY2tldHMKLQkgKiBidXQgd2hvc2Ugc29ja2V0cyBoYXZlIG5vdCBiZWVuIHJlY2VpdmVkIHlldC4KLQkgKi8KLQlpZiAodXNlciAmYW1wOyZhbXA7Ci0JICAgIFJFQURfT05DRSh1c2VyLSZndDt1bml4X2luZmxpZ2h0KSAmbHQ7IFVOSVhfSU5GTElHSFRfU0FORV9VU0VSKQotCQlyZXR1cm47Ci0KIAlpZiAoIVJFQURfT05DRShnY19pbl9wcm9ncmVzcykpCiAJCXF1ZXVlX3dvcmsoc3lzdGVtX2RmbF93cSwgJmFtcDt1bml4X2djX3dvcmspOwotCi0JaWYgKHVzZXIgJmFtcDsmYW1wOyBSRUFEX09OQ0UodW5peF9ncmFwaF9jeWNsaWNfc2NjcykpCi0JCWZsdXNoX3dvcmsoJmFtcDt1bml4X2djX3dvcmspOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTE0CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIHRvIEFGX1VOSVggR2FyYmFnZSBDb2xsZWN0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0d2Vha2luZyBob3cgdGhlIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uIHJ1bnMuIEluaXRpYWxseSwgYHVuaXhfc2NoZWR1bGVfZ2MoKWAgd2FzIGJlaW5nIGNhbGxlZCBmcm9tIGB1bml4X3ByZXBhcmVfZnBsKClgIGFuZCBgdW5peF9yZWxlYXNlX3NvY2soKWAuIE5vdywgaXQmIzM5O3MgYmVlbiBtb3ZlZCBhbmQgaXMgY2FsbGVkIGZyb20gYGRvX2V4aXQoKWAgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgZXhpdCByb3V0aW5lLCBhbmQgaXQmIzM5O3Mgc3RpbGwgY2FsbGVkIGZyb20gYHVuaXhfcmVsZWFzZV9zb2NrKClgLiBUaGUgc2lnbmF0dXJlIG9mIGB1bml4X3NjaGVkdWxlX2djKClgIGhhcyBiZWVuIGNoYW5nZWQgZnJvbSB0YWtpbmcgYSBgdXNlcl9zdHJ1Y3RgIGFyZ3VtZW50IHRvIGJlaW5nIHZvaWQuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIEluc2lkZSB0aGUgYWN0dWFsIGB1bml4X3NjaGVkdWxlX2djKClgIGZ1bmN0aW9uLCB0aGV5JiMzOTt2ZSBhbHNvIHJlbW92ZWQgc29tZSBsb2dpYyByZWxhdGVkIHRvIHVzZXIgcGVuYWx0aWVzIGFuZCBzeW5jaHJvbm91cyBmbHVzaGluZywgc2ltcGxpZnlpbmcgdGhpbmdzLgoKTGV0JiMzOTtzIGRpdmUgaW50byB0aGUgcGF0Y2ggZGV0YWlscy4gSSBjYW4gc2VlIHRoZSBoZWFkZXIgZmlsZSBgaW5jbHVkZS9uZXQvYWZfdW5peC5oYCB3YXMgdXBkYXRlZCB0byBpbmNsdWRlIHRoZSBuZXcgc2lnbmF0dXJlIG9mIGB1bml4X3NjaGVkdWxlX2djKHZvaWQpYC4gVGhlbiwgYGtlcm5lbC9leGl0LmNgIG5vdyBjYWxscyBgdW5peF9zY2hlZHVsZV9nYygpYCBpbiBgZG9fZXhpdCgpYCAqYWZ0ZXIqIHRoZSBgZXhpdF9maWxlcyh0c2spYCBjYWxsLiBHb29kIHBsYWNlbWVudCwgbWFraW5nIHN1cmUgdGhvc2UgZmlsZXMgYXJlIGZ1bGx5IGNsb3NlZC4gSW4gYG5ldC91bml4L2FmX3VuaXguY2AsIGB1bml4X3JlbGVhc2Vfc29jaygpYCBoYXMgYmVlbiB1cGRhdGVkIHRvIGNhbGwgdGhlIG5ldyBmdW5jdGlvbiBzaWduYXR1cmUuIFRoZSBvbGQgc2lnbmF0dXJlIGlzIHJlbW92ZWQgZnJvbSBgbmV0L3VuaXgvYWZfdW5peC5oYCwgYW5kIGBuZXQvdW5peC9nYXJiYWdlLmNgIHJlZmxlY3RzIHRoZSBsb2dpYyBjaGFuZ2VzIGJ5IHJlbW92aW5nIHRoZSBjYWxsIGluIGB1bml4X3ByZXBhcmVfZnBsKClgLCB1cGRhdGluZyB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlLCBhbmQgcmVtb3ZpbmcgdGhlIHVzZXIgcGVuYWx0eSBmcm9tIGluc2lkZSB0aGUgZnVuY3Rpb24gaXRzZWxmLgoKVGhpcyBpcyBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgQUZfVU5JWCBnYXJiYWdlIGNvbGxlY3Rpb24sIGFmZmVjdGluZyBjb3JlIGtlcm5lbCBiZWhhdmlvci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMgdG8gdGFyZ2V0LiBSaWdodCBub3cgSSYjMzk7bSB0aGlua2luZyBgdW5peF9zY2hlZHVsZV9nY2AsIGBkb19leGl0YCwgYHVuaXhfcmVsZWFzZV9zb2NrYCwgYW5kIGB1bml4X3ByZXBhcmVfZnBsYC4gV2FpdCwgYGRvX2V4aXRgIGlzIGEgdmVyeSBob3QgcGF0aDsgSSYjMzk7bSBnb2luZyB0byByZW1vdmUgaXQsIGFuZCBob25lIGluIG9uIGB1bml4X3NjaGVkdWxlX2djYC4gTWF5YmUgSSBzaG91bGQgY29uc2lkZXIgYHVuaXhfZ2NgIGFzIHdlbGw/IEkgd2lsbCBoYXZlIHRvIGludmVzdGlnYXRlIHRoYXQuCgpDb25maWctd2lzZSwgaXQgbG9va3MgbGlrZSBgQ09ORklHX1VOSVhgIGlzIHRoZSBtYWluIGVuYWJsZXIgZm9yIEFGX1VOSVgsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIHNob3VsZCB2ZXJpZnkgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjb25maWdzIHRoYXQgYXJlIHJlbGF0ZWQsIHRob3VnaC4gQmV0dGVyIGNoZWNrIGBuZXQvdW5peC9LY29uZmlnYCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVTklYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3VuaXgvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdW5peC9LY29uZmlnLTUtXG5uZXQvdW5peC9LY29uZmlnOjY6Y29uZmlnIFVOSVhcbm5ldC91bml4L0tjb25maWctNy1cdGJvb2wgXCYjMzQ7VW5peCBkb21haW4gc29ja2V0c1wmIzM0O1xuLS1cbm5ldC91bml4L0tjb25maWc9MTk9Y29uZmlnXHRBRl9VTklYX09PQlxuLS1cbm5ldC91bml4L0tjb25maWctMjUtXG5uZXQvdW5peC9LY29uZmlnOjI2OmNvbmZpZyBVTklYX0RJQUdcbm5ldC91bml4L0tjb25maWctMjctXHR0cmlzdGF0ZSBcJiMzNDtVTklYOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDcyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVU5JWCBTb2NrZXQgR2FyYmFnZSBDb2xsZWN0aW9uKioKCk9rYXksIHNvIHRoZSBgVU5JWGAgY29uZmlnIG9wdGlvbiBpcyB0aGUga2V5IGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZ2FyYmFnZSBjb2xsZWN0aW9uIGZvciBVTklYIHNvY2tldHMgaXMgc2NoZWR1bGVkLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayBga2VybmVsL2V4aXQuY2Agc2luY2UgaXQmIzM5O3MgaW52b2x2ZWQgd2l0aCBwcm9jZXNzIHRlcm1pbmF0aW9uLiBJIHdhbnQgdG8gc2VlIGlmIGB1bml4X3NjaGVkdWxlX2djKClgIGlzIHVuY29uZGl0aW9uYWxseSBpbnZva2VkLiBZZXAsIGl0JiMzOTtzIGNhbGxlZCB3aXRoaW4gYGRvX2V4aXQoKWAsIGFzIEkgZXhwZWN0ZWQuCgpIYW5nIG9uLi4uIEkmIzM5O20gZ2V0dGluZyBhIGxpdHRsZSBhaGVhZCBvZiBteXNlbGYuIEEgcXVpY2sgY2hlY2sgb2YgYGluY2x1ZGUvbmV0L2FmX3VuaXguaGAgcmV2ZWFscyB0aGF0IGB1bml4X3NjaGVkdWxlX2djKClgIGlzIGFjdHVhbGx5IGRlZmluZWQgdGhlcmUsIGJ1dCBpdCBhcHBlYXJzIHRvIGJlIGEgc3R1YiBpZiBgQ09ORklHX1VOSVhgIGlzbiYjMzk7dCBlbmFibGVkLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdy4gTm93IEkgbmVlZCB0byBhY3R1YWxseSBzZWUgdGhlIGdhcmJhZ2UgY29sbGVjdGlvbiBsb2dpYyBpdHNlbGYuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYG5ldC91bml4L2dhcmJhZ2UuY2AgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICpyZWFsbHkqIGhhcHBlbmluZyB3aGVuIGB1bml4X3NjaGVkdWxlX2djYCBpcyBhY3R1YWxseSB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZvaWQgdW5peF9zY2hlZHVsZV9nYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC91bml4L2dhcmJhZ2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdW5peC9nYXJiYWdlLmM9NjM2PXN0YXRpYyBERUNMQVJFX1dPUksodW5peF9nY193b3JrLCB1bml4X2djKTtcbm5ldC91bml4L2dhcmJhZ2UuYy02MzctXG5uZXQvdW5peC9nYXJiYWdlLmM6NjM4OnZvaWQgdW5peF9zY2hlZHVsZV9nYyh2b2lkKVxubmV0L3VuaXgvZ2FyYmFnZS5jLTYzOS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUxNgoJCQkJCQkJb3V0cHV0OiAxNTcKCQkJCQkJCXRob3VnaHRzOiA0NzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBRl9VTklYIEdhcmJhZ2UgQ29sbGVjdGlvbiBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHNjYW4gZmxhZ2dlZCBgdW5peF9zY2hlZHVsZV9nY2AsIGB1bml4X2djYCwgYHVuaXhfcmVsZWFzZV9zb2NrYCwgYW5kIGB1bml4X3ByZXBhcmVfZnBsYCBhcyBwb3RlbnRpYWwgYXJlYXMgb2YgaW50ZXJlc3QuIEhvd2V2ZXIsIEkgaW1tZWRpYXRlbHkgbm90ZWQgdGhhdCBgdW5peF9wcmVwYXJlX2ZwbGAgaGFkIGB1bml4X3NjaGVkdWxlX2djYCByZW1vdmVkLCBzbyB3aGlsZSBpdCYjMzk7cyBwYXJ0IG9mIHRoZSBkaWZmLCBpdCYjMzk7cyBwcm9iYWJseSBub3QgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZS4gSXQgc2VlbXMgYHVuaXhfc2NoZWR1bGVfZ2NgIGl0c2VsZiBpcyB0aGUga2V5IHNjaGVkdWxpbmcgZnVuY3Rpb24uIEFuZCwgeWVzLCBgdW5peF9yZWxlYXNlX3NvY2tgIGlzIGluZGVlZCBtb2RpZmllZCwgc28gaXQmIzM5O3MgcmVsZXZhbnQuIEkmIzM5O20gZXhjbHVkaW5nIGBkb19leGl0YCBiZWNhdXNlLCBldmVuIHRob3VnaCBpdCYjMzk7cyBtb2RpZmllZCwgaXQmIzM5O3MgYSBob3QgcGF0aCwgc28gZm9jdXNpbmcgb24gaXQgd291bGQgYmUgYSBkaXN0cmFjdGlvbi4KCk5vdywgYHVuaXhfZ2Ng4oCmIGxldCYjMzk7cyBzZWUuIEFoLCB5ZXMsIGB1bml4X2djYCBpcyB0aGUgYWN0dWFsIHdvcmtlciBmdW5jdGlvbiwgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIGl0c2VsZiwgY2FsbGVkIGJ5IGB1bml4X3NjaGVkdWxlX2djYC4gU2VlbXMgbGlrZSBhIHNlbnNpYmxlIGZvY3VzLCB0aGVuLgoKTGV0JiMzOTtzIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucyBpbnZvbHZlZC4gT25seSBgQ09ORklHX1VOSVhgIGFwcGVhcnMuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdmVyaWZ5IHJlYWNoYWJpbGl0eSBvZiBgdW5peF9zY2hlZHVsZV9nY2AuIFllcywgaXQmIzM5O3MgY2FsbGVkIGZyb20gYm90aCBgZG9fZXhpdGAgYW5kIGB1bml4X3JlbGVhc2Vfc29ja2AuIFNvLCBhIHByb2Nlc3MgZXhpdCBhbmQgQUZfVU5JWCBzb2NrZXQgcmVsZWFzZSBhcmUgdGhlIHRyaWdnZXJzLiBgZG9fZXhpdGAgaXMgY2FsbGVkIGFmdGVyIGBleGl0X2ZpbGVzYC4KClNvLCB0aGUgY3J1eCBvZiB0aGlzIHBhdGNoIGlzIHRoZSBtb2RpZmljYXRpb24gb2YgdGhlIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uIHNjaGVkdWxpbmcuIEl0JiMzOTtzIHJlbW92aW5nIHNvbWV0aGluZyBmcm9tIGB1bml4X3NjaGVkdWxlX2djYCBhbmQgY2hhbmdpbmcgaXQgdG8gYmUgY2FsbGVkIGZyb20gYGRvX2V4aXRgIChhZnRlciBgZXhpdF9maWxlc2ApIGluc3RlYWQgb2YgYHVuaXhfcHJlcGFyZV9mcGxgLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JrL3Byb2Nlc3MgZXhpdCBsb2dpYyB0aGF0IHNpZ25pZmljYW50bHkgYWZmZWN0cyB0aGUgdGltaW5nIGFuZCB0cmlnZ2VyIG9mIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uLiBQb3RlbnRpYWxseSwgdGhpcyBjb3VsZCBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zIG9yIG1lbW9yeSBsZWFrcyBpZiBub3QgaGFuZGxlZCB3aXRoIGV4dHJlbWUgY2FyZS4gVGhpcyBjaGFuZ2UgbmVlZHMgY2FyZWZ1bCBzY3J1dGlueS4KCk15IGNvbmZpcm1lZCBmb2N1cyBzeW1ib2xzIGFyZTogYHVuaXhfc2NoZWR1bGVfZ2NgLCBgdW5peF9yZWxlYXNlX3NvY2tgLCBhbmQgYHVuaXhfcHJlcGFyZV9mcGxgLiBUaGUgcmVsZXZhbnQgY29uZmlnIGlzIGBVTklYYC4gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYFVOSVhgIGlzIGEgYm9vbGVhbi4KCk9rYXksIEkmIzM5O20gcmVhZHkgdG8gYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VU5JWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VuaXhfc2NoZWR1bGVfZ2MmIzM0OywKICAgICYjMzQ7dW5peF9yZWxlYXNlX3NvY2smIzM0OywKICAgICYjMzQ7dW5peF9wcmVwYXJlX2ZwbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQUZfVU5JWCBnYXJiYWdlIGNvbGxlY3Rpb24gc2NoZWR1bGluZyBsb2dpYy4gSXQgcmVtb3ZlcyB0aGUgdXNlciBwZW5hbHR5IGFuZCBzeW5jaHJvbm91cyBmbHVzaCBmcm9tIGB1bml4X3NjaGVkdWxlX2djYCwgYW5kIGNoYW5nZXMgaXQgdG8gYmUgY2FsbGVkIGZyb20gYGRvX2V4aXRgIChhZnRlciBgZXhpdF9maWxlc2ApIGluc3RlYWQgb2YgYHVuaXhfcHJlcGFyZV9mcGxgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrIC8gcHJvY2VzcyBleGl0IGxvZ2ljIHRoYXQgYWZmZWN0cyBob3cgYW5kIHdoZW4gQUZfVU5JWCBnYXJiYWdlIGNvbGxlY3Rpb24gaXMgdHJpZ2dlcmVkLCB3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zIG9yIG1lbW9yeSBsZWFrcyBpZiBub3QgcHJvcGVybHkgaGFuZGxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VU5JWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VuaXhfc2NoZWR1bGVfZ2MmIzM0OywKICAgICYjMzQ7dW5peF9yZWxlYXNlX3NvY2smIzM0OywKICAgICYjMzQ7dW5peF9wcmVwYXJlX2ZwbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQUZfVU5JWCBnYXJiYWdlIGNvbGxlY3Rpb24gc2NoZWR1bGluZyBsb2dpYy4gSXQgcmVtb3ZlcyB0aGUgdXNlciBwZW5hbHR5IGFuZCBzeW5jaHJvbm91cyBmbHVzaCBmcm9tIGB1bml4X3NjaGVkdWxlX2djYCwgYW5kIGNoYW5nZXMgaXQgdG8gYmUgY2FsbGVkIGZyb20gYGRvX2V4aXRgIChhZnRlciBgZXhpdF9maWxlc2ApIGluc3RlYWQgb2YgYHVuaXhfcHJlcGFyZV9mcGxgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrIC8gcHJvY2VzcyBleGl0IGxvZ2ljIHRoYXQgYWZmZWN0cyBob3cgYW5kIHdoZW4gQUZfVU5JWCBnYXJiYWdlIGNvbGxlY3Rpb24gaXMgdHJpZ2dlcmVkLCB3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zIG9yIG1lbW9yeSBsZWFrcyBpZiBub3QgcHJvcGVybHkgaGFuZGxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA4OjQzOjA1Ljg3NjQ1NjkyOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNDYzMDQ1MjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVOSVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1bml4X3NjaGVkdWxlX2djXCIsXG4gICAgXCJ1bml4X3JlbGVhc2Vfc29ja1wiLFxuICAgIFwidW5peF9wcmVwYXJlX2ZwbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBRl9VTklYIGdhcmJhZ2UgY29sbGVjdGlvbiBzY2hlZHVsaW5nIGxvZ2ljLiBJdCByZW1vdmVzIHRoZSB1c2VyIHBlbmFsdHkgYW5kIHN5bmNocm9ub3VzIGZsdXNoIGZyb20gYHVuaXhfc2NoZWR1bGVfZ2NgLCBhbmQgY2hhbmdlcyBpdCB0byBiZSBjYWxsZWQgZnJvbSBgZG9fZXhpdGAgKGFmdGVyIGBleGl0X2ZpbGVzYCkgaW5zdGVhZCBvZiBgdW5peF9wcmVwYXJlX2ZwbGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmsgLyBwcm9jZXNzIGV4aXQgbG9naWMgdGhhdCBhZmZlY3RzIGhvdyBhbmQgd2hlbiBBRl9VTklYIGdhcmJhZ2UgY29sbGVjdGlvbiBpcyB0cmlnZ2VyZWQsIHdoaWNoIGNvdWxkIHBvdGVudGlhbGx5IGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMgb3IgbWVtb3J5IGxlYWtzIGlmIG5vdCBwcm9wZXJseSBoYW5kbGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwODo0MzowNS44NzY0NjMxOTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNDEyMDU1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGMwZDRjYTcwNWMyZjNkNzAwN2MyNzU4MTdhOWZjYmIxZmU0ZDhiOWFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTcgMDg6NDM6MDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvYWZfdW5peC5oIGIvaW5jbHVkZS9uZXQvYWZfdW5peC5oXFxuaW5kZXggMzRmNTNkZGU2NWNlYTIuLjFkZmRjMDcyMDA1MmNmIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L2FmX3VuaXguaFxcbisrKyBiL2luY2x1ZGUvbmV0L2FmX3VuaXguaFxcbkBAIC0xNCwxMSArMTQsMTYgQEBcXG4gXFxuICNpZiBJU19FTkFCTEVEKENPTkZJR19VTklYKVxcbiBzdHJ1Y3QgdW5peF9zb2NrICp1bml4X2dldF9zb2NrZXQoc3RydWN0IGZpbGUgKmZpbHApO1xcbit2b2lkIHVuaXhfc2NoZWR1bGVfZ2Modm9pZCk7XFxuICNlbHNlXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IHVuaXhfc29jayAqdW5peF9nZXRfc29ja2V0KHN0cnVjdCBmaWxlICpmaWxwKVxcbiB7XFxuIFxcdHJldHVybiBOVUxMO1xcbiB9XFxuK1xcbitzdGF0aWMgaW5saW5lIHZvaWQgdW5peF9zY2hlZHVsZV9nYyh2b2lkKVxcbit7XFxuK31cXG4gI2VuZGlmXFxuIFxcbiBzdHJ1Y3QgdW5peF9hZGRyZXNzIHtcXG5kaWZmIC0tZ2l0IGEva2VybmVsL2V4aXQuYyBiL2tlcm5lbC9leGl0LmNcXG5pbmRleCAyYzBiMWMwMjkyMGY0Ni4uNzY0YTkxMWYxMTFlY2MgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2V4aXQuY1xcbisrKyBiL2tlcm5lbC9leGl0LmNcXG5AQCAtNzEsNiArNzEsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvdW53aW5kX2RlZmVycmVkLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC91YWNjZXNzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9waWRmcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbmV0L2FmX3VuaXguaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2N1YXBpL2xpbnV4L3dhaXQuaFxcdTAwM2VcXG4gXFxuQEAgLTEwMDIsNiArMTAwMyw3IEBAIHZvaWQgX19ub3JldHVybiBkb19leGl0KGxvbmcgY29kZSlcXG4gXFx0ZXhpdF9zZW0odHNrKTtcXG4gXFx0ZXhpdF9zaG0odHNrKTtcXG4gXFx0ZXhpdF9maWxlcyh0c2spO1xcbitcXHR1bml4X3NjaGVkdWxlX2djKCk7IC8qIE11c3QgYmUgYWZ0ZXIgZXhpdF9maWxlcygpICovXFxuIFxcdGV4aXRfZnModHNrKTtcXG4gXFx0aWYgKGdyb3VwX2RlYWQpXFxuIFxcdFxcdGRpc2Fzc29jaWF0ZV9jdHR5KDEpO1xcbmRpZmYgLS1naXQgYS9uZXQvdW5peC9hZl91bml4LmMgYi9uZXQvdW5peC9hZl91bml4LmNcXG5pbmRleCBmN2E5ZDU1ZWVlOGExMi4uNzU5ZGI3MzRhODY2NDYgMTAwNjQ0XFxuLS0tIGEvbmV0L3VuaXgvYWZfdW5peC5jXFxuKysrIGIvbmV0L3VuaXgvYWZfdW5peC5jXFxuQEAgLTczMyw3ICs3MzMsNyBAQCBzdGF0aWMgdm9pZCB1bml4X3JlbGVhc2Vfc29jayhzdHJ1Y3Qgc29jayAqc2ssIGludCBlbWJyaW9uKVxcbiBcXG4gXFx0LyogLS0tLSBTb2NrZXQgaXMgZGVhZCBub3cgYW5kIG1vc3QgcHJvYmFibHkgZGVzdHJveWVkIC0tLS0gKi9cXG4gXFxuLVxcdHVuaXhfc2NoZWR1bGVfZ2MoTlVMTCk7XFxuK1xcdHVuaXhfc2NoZWR1bGVfZ2MoKTtcXG4gfVxcbiBcXG4gc3RydWN0IHVuaXhfcGVlcmNyZWQge1xcbmRpZmYgLS1naXQgYS9uZXQvdW5peC9hZl91bml4LmggYi9uZXQvdW5peC9hZl91bml4LmhcXG5pbmRleCA4MTE5ZGJlZWYzYTNjNi4uZmM0YzU5ODkzMTI0Y2MgMTAwNjQ0XFxuLS0tIGEvbmV0L3VuaXgvYWZfdW5peC5oXFxuKysrIGIvbmV0L3VuaXgvYWZfdW5peC5oXFxuQEAgLTMwLDcgKzMwLDYgQEAgdm9pZCB1bml4X3VwZGF0ZV9lZGdlcyhzdHJ1Y3QgdW5peF9zb2NrICpyZWNlaXZlcik7XFxuIGludCB1bml4X3ByZXBhcmVfZnBsKHN0cnVjdCBzY21fZnBfbGlzdCAqZnBsKTtcXG4gdm9pZCB1bml4X2Rlc3Ryb3lfZnBsKHN0cnVjdCBzY21fZnBfbGlzdCAqZnBsKTtcXG4gdm9pZCB1bml4X3BlZWtfZnBsKHN0cnVjdCBzY21fZnBfbGlzdCAqZnBsKTtcXG4tdm9pZCB1bml4X3NjaGVkdWxlX2djKHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcik7XFxuIFxcbiAvKiBTT0NLX0RJQUcgKi9cXG4gbG9uZyB1bml4X2lucV9sZW4oc3RydWN0IHNvY2sgKnNrKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L3VuaXgvZ2FyYmFnZS5jIGIvbmV0L3VuaXgvZ2FyYmFnZS5jXFxuaW5kZXggMDc4MzU1NWUyNTI2NjAuLmQ0NmFlYjlkMjA1MTg5IDEwMDY0NFxcbi0tLSBhL25ldC91bml4L2dhcmJhZ2UuY1xcbisrKyBiL25ldC91bml4L2dhcmJhZ2UuY1xcbkBAIC0zMDAsOCArMzAwLDYgQEAgaW50IHVuaXhfcHJlcGFyZV9mcGwoc3RydWN0IHNjbV9mcF9saXN0ICpmcGwpXFxuIFxcdGlmICghZnBsLVxcdTAwM2VlZGdlcylcXG4gXFx0XFx0Z290byBlcnI7XFxuIFxcbi1cXHR1bml4X3NjaGVkdWxlX2djKGZwbC1cXHUwMDNldXNlcik7XFxuLVxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuIGVycjpcXG5AQCAtNjM3LDIzICs2MzUsMTEgQEAgc3RhdGljIHZvaWQgdW5peF9nYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcbiBzdGF0aWMgREVDTEFSRV9XT1JLKHVuaXhfZ2Nfd29yaywgdW5peF9nYyk7XFxuIFxcbi0jZGVmaW5lIFVOSVhfSU5GTElHSFRfU0FORV9VU0VSXFx0XFx0KFNDTV9NQVhfRkQgKiA4KVxcbi1cXG4tdm9pZCB1bml4X3NjaGVkdWxlX2djKHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcilcXG4rdm9pZCB1bml4X3NjaGVkdWxlX2djKHZvaWQpXFxuIHtcXG4gXFx0aWYgKFJFQURfT05DRSh1bml4X2dyYXBoX3N0YXRlKSA9PSBVTklYX0dSQVBIX05PVF9DWUNMSUMpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdC8qIFBlbmFsaXNlIHVzZXJzIHdobyB3YW50IHRvIHNlbmQgQUZfVU5JWCBzb2NrZXRzXFxuLVxcdCAqIGJ1dCB3aG9zZSBzb2NrZXRzIGhhdmUgbm90IGJlZW4gcmVjZWl2ZWQgeWV0Llxcbi1cXHQgKi9cXG4tXFx0aWYgKHVzZXIgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgIFJFQURfT05DRSh1c2VyLVxcdTAwM2V1bml4X2luZmxpZ2h0KSBcXHUwMDNjIFVOSVhfSU5GTElHSFRfU0FORV9VU0VSKVxcbi1cXHRcXHRyZXR1cm47XFxuLVxcbiBcXHRpZiAoIVJFQURfT05DRShnY19pbl9wcm9ncmVzcykpXFxuIFxcdFxcdHF1ZXVlX3dvcmsoc3lzdGVtX2RmbF93cSwgXFx1MDAyNnVuaXhfZ2Nfd29yayk7XFxuLVxcbi1cXHRpZiAodXNlciBcXHUwMDI2XFx1MDAyNiBSRUFEX09OQ0UodW5peF9ncmFwaF9jeWNsaWNfc2NjcykpXFxuLVxcdFxcdGZsdXNoX3dvcmsoXFx1MDAyNnVuaXhfZ2Nfd29yayk7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDg6NDM6MDYuNzAxNTQ2MzIxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTYzNzkzMjY5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVTklYXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidW5peF9zY2hlZHVsZV9nY1wiLFxuICAgIFwidW5peF9yZWxlYXNlX3NvY2tcIixcbiAgICBcInVuaXhfcHJlcGFyZV9mcGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQUZfVU5JWCBnYXJiYWdlIGNvbGxlY3Rpb24gc2NoZWR1bGluZyBsb2dpYy4gSXQgcmVtb3ZlcyB0aGUgdXNlciBwZW5hbHR5IGFuZCBzeW5jaHJvbm91cyBmbHVzaCBmcm9tIGB1bml4X3NjaGVkdWxlX2djYCwgYW5kIGNoYW5nZXMgaXQgdG8gYmUgY2FsbGVkIGZyb20gYGRvX2V4aXRgIChhZnRlciBgZXhpdF9maWxlc2ApIGluc3RlYWQgb2YgYHVuaXhfcHJlcGFyZV9mcGxgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrIC8gcHJvY2VzcyBleGl0IGxvZ2ljIHRoYXQgYWZmZWN0cyBob3cgYW5kIHdoZW4gQUZfVU5JWCBnYXJiYWdlIGNvbGxlY3Rpb24gaXMgdHJpZ2dlcmVkLCB3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zIG9yIG1lbW9yeSBsZWFrcyBpZiBub3QgcHJvcGVybHkgaGFuZGxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjMGQ0Y2E3MDVjMmYzZDcwMDdjMjc1ODE3YTlmY2JiMWZlNGQ4YjlhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMDg6NDM6MDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9hZl91bml4LmggYi9pbmNsdWRlL25ldC9hZl91bml4LmhcbmluZGV4IDM0ZjUzZGRlNjVjZWEyLi4xZGZkYzA3MjAwNTJjZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2FmX3VuaXguaFxuKysrIGIvaW5jbHVkZS9uZXQvYWZfdW5peC5oXG5AQCAtMTQsMTEgKzE0LDE2IEBAXG4gXG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX1VOSVgpXG4gc3RydWN0IHVuaXhfc29jayAqdW5peF9nZXRfc29ja2V0KHN0cnVjdCBmaWxlICpmaWxwKTtcbit2b2lkIHVuaXhfc2NoZWR1bGVfZ2Modm9pZCk7XG4gI2Vsc2VcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB1bml4X3NvY2sgKnVuaXhfZ2V0X3NvY2tldChzdHJ1Y3QgZmlsZSAqZmlscClcbiB7XG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4rXG4rc3RhdGljIGlubGluZSB2b2lkIHVuaXhfc2NoZWR1bGVfZ2Modm9pZClcbit7XG4rfVxuICNlbmRpZlxuIFxuIHN0cnVjdCB1bml4X2FkZHJlc3Mge1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9leGl0LmMgYi9rZXJuZWwvZXhpdC5jXG5pbmRleCAyYzBiMWMwMjkyMGY0Ni4uNzY0YTkxMWYxMTFlY2MgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvZXhpdC5jXG4rKysgYi9rZXJuZWwvZXhpdC5jXG5AQCAtNzEsNiArNzEsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3Vud2luZF9kZWZlcnJlZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdWFjY2Vzcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGlkZnMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY25ldC9hZl91bml4LmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcdTAwM2N1YXBpL2xpbnV4L3dhaXQuaFx1MDAzZVxuIFxuQEAgLTEwMDIsNiArMTAwMyw3IEBAIHZvaWQgX19ub3JldHVybiBkb19leGl0KGxvbmcgY29kZSlcbiBcdGV4aXRfc2VtKHRzayk7XG4gXHRleGl0X3NobSh0c2spO1xuIFx0ZXhpdF9maWxlcyh0c2spO1xuK1x0dW5peF9zY2hlZHVsZV9nYygpOyAvKiBNdXN0IGJlIGFmdGVyIGV4aXRfZmlsZXMoKSAqL1xuIFx0ZXhpdF9mcyh0c2spO1xuIFx0aWYgKGdyb3VwX2RlYWQpXG4gXHRcdGRpc2Fzc29jaWF0ZV9jdHR5KDEpO1xuZGlmZiAtLWdpdCBhL25ldC91bml4L2FmX3VuaXguYyBiL25ldC91bml4L2FmX3VuaXguY1xuaW5kZXggZjdhOWQ1NWVlZThhMTIuLjc1OWRiNzM0YTg2NjQ2IDEwMDY0NFxuLS0tIGEvbmV0L3VuaXgvYWZfdW5peC5jXG4rKysgYi9uZXQvdW5peC9hZl91bml4LmNcbkBAIC03MzMsNyArNzMzLDcgQEAgc3RhdGljIHZvaWQgdW5peF9yZWxlYXNlX3NvY2soc3RydWN0IHNvY2sgKnNrLCBpbnQgZW1icmlvbilcbiBcbiBcdC8qIC0tLS0gU29ja2V0IGlzIGRlYWQgbm93IGFuZCBtb3N0IHByb2JhYmx5IGRlc3Ryb3llZCAtLS0tICovXG4gXG4tXHR1bml4X3NjaGVkdWxlX2djKE5VTEwpO1xuK1x0dW5peF9zY2hlZHVsZV9nYygpO1xuIH1cbiBcbiBzdHJ1Y3QgdW5peF9wZWVyY3JlZCB7XG5kaWZmIC0tZ2l0IGEvbmV0L3VuaXgvYWZfdW5peC5oIGIvbmV0L3VuaXgvYWZfdW5peC5oXG5pbmRleCA4MTE5ZGJlZWYzYTNjNi4uZmM0YzU5ODkzMTI0Y2MgMTAwNjQ0XG4tLS0gYS9uZXQvdW5peC9hZl91bml4LmhcbisrKyBiL25ldC91bml4L2FmX3VuaXguaFxuQEAgLTMwLDcgKzMwLDYgQEAgdm9pZCB1bml4X3VwZGF0ZV9lZGdlcyhzdHJ1Y3QgdW5peF9zb2NrICpyZWNlaXZlcik7XG4gaW50IHVuaXhfcHJlcGFyZV9mcGwoc3RydWN0IHNjbV9mcF9saXN0ICpmcGwpO1xuIHZvaWQgdW5peF9kZXN0cm95X2ZwbChzdHJ1Y3Qgc2NtX2ZwX2xpc3QgKmZwbCk7XG4gdm9pZCB1bml4X3BlZWtfZnBsKHN0cnVjdCBzY21fZnBfbGlzdCAqZnBsKTtcbi12b2lkIHVuaXhfc2NoZWR1bGVfZ2Moc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyKTtcbiBcbiAvKiBTT0NLX0RJQUcgKi9cbiBsb25nIHVuaXhfaW5xX2xlbihzdHJ1Y3Qgc29jayAqc2spO1xuZGlmZiAtLWdpdCBhL25ldC91bml4L2dhcmJhZ2UuYyBiL25ldC91bml4L2dhcmJhZ2UuY1xuaW5kZXggMDc4MzU1NWUyNTI2NjAuLmQ0NmFlYjlkMjA1MTg5IDEwMDY0NFxuLS0tIGEvbmV0L3VuaXgvZ2FyYmFnZS5jXG4rKysgYi9uZXQvdW5peC9nYXJiYWdlLmNcbkBAIC0zMDAsOCArMzAwLDYgQEAgaW50IHVuaXhfcHJlcGFyZV9mcGwoc3RydWN0IHNjbV9mcF9saXN0ICpmcGwpXG4gXHRpZiAoIWZwbC1cdTAwM2VlZGdlcylcbiBcdFx0Z290byBlcnI7XG4gXG4tXHR1bml4X3NjaGVkdWxlX2djKGZwbC1cdTAwM2V1c2VyKTtcbi1cbiBcdHJldHVybiAwO1xuIFxuIGVycjpcbkBAIC02MzcsMjMgKzYzNSwxMSBAQCBzdGF0aWMgdm9pZCB1bml4X2djKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcbiBzdGF0aWMgREVDTEFSRV9XT1JLKHVuaXhfZ2Nfd29yaywgdW5peF9nYyk7XG4gXG4tI2RlZmluZSBVTklYX0lORkxJR0hUX1NBTkVfVVNFUlx0XHQoU0NNX01BWF9GRCAqIDgpXG4tXG4tdm9pZCB1bml4X3NjaGVkdWxlX2djKHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcilcbit2b2lkIHVuaXhfc2NoZWR1bGVfZ2Modm9pZClcbiB7XG4gXHRpZiAoUkVBRF9PTkNFKHVuaXhfZ3JhcGhfc3RhdGUpID09IFVOSVhfR1JBUEhfTk9UX0NZQ0xJQylcbiBcdFx0cmV0dXJuO1xuIFxuLVx0LyogUGVuYWxpc2UgdXNlcnMgd2hvIHdhbnQgdG8gc2VuZCBBRl9VTklYIHNvY2tldHNcbi1cdCAqIGJ1dCB3aG9zZSBzb2NrZXRzIGhhdmUgbm90IGJlZW4gcmVjZWl2ZWQgeWV0LlxuLVx0ICovXG4tXHRpZiAodXNlciBcdTAwMjZcdTAwMjZcbi1cdCAgICBSRUFEX09OQ0UodXNlci1cdTAwM2V1bml4X2luZmxpZ2h0KSBcdTAwM2MgVU5JWF9JTkZMSUdIVF9TQU5FX1VTRVIpXG4tXHRcdHJldHVybjtcbi1cbiBcdGlmICghUkVBRF9PTkNFKGdjX2luX3Byb2dyZXNzKSlcbiBcdFx0cXVldWVfd29yayhzeXN0ZW1fZGZsX3dxLCBcdTAwMjZ1bml4X2djX3dvcmspO1xuLVxuLVx0aWYgKHVzZXIgXHUwMDI2XHUwMDI2IFJFQURfT05DRSh1bml4X2dyYXBoX2N5Y2xpY19zY2NzKSlcbi1cdFx0Zmx1c2hfd29yayhcdTAwMjZ1bml4X2djX3dvcmspO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA4OjQzOjA2LjcwMTU0ODYwMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzNjI5MDE4NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gQUZfVU5JWCBHYXJiYWdlIENvbGxlY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIHR3ZWFraW5nIGhvdyB0aGUgQUZfVU5JWCBnYXJiYWdlIGNvbGxlY3Rpb24gcnVucy4gSW5pdGlhbGx5LCBgdW5peF9zY2hlZHVsZV9nYygpYCB3YXMgYmVpbmcgY2FsbGVkIGZyb20gYHVuaXhfcHJlcGFyZV9mcGwoKWAgYW5kIGB1bml4X3JlbGVhc2Vfc29jaygpYC4gTm93LCBpdCdzIGJlZW4gbW92ZWQgYW5kIGlzIGNhbGxlZCBmcm9tIGBkb19leGl0KClgIHdpdGhpbiB0aGUga2VybmVsJ3MgZXhpdCByb3V0aW5lLCBhbmQgaXQncyBzdGlsbCBjYWxsZWQgZnJvbSBgdW5peF9yZWxlYXNlX3NvY2soKWAuIFRoZSBzaWduYXR1cmUgb2YgYHVuaXhfc2NoZWR1bGVfZ2MoKWAgaGFzIGJlZW4gY2hhbmdlZCBmcm9tIHRha2luZyBhIGB1c2VyX3N0cnVjdGAgYXJndW1lbnQgdG8gYmVpbmcgdm9pZC4gVGhpcyBpcyBpbnRlcmVzdGluZy4gSW5zaWRlIHRoZSBhY3R1YWwgYHVuaXhfc2NoZWR1bGVfZ2MoKWAgZnVuY3Rpb24sIHRoZXkndmUgYWxzbyByZW1vdmVkIHNvbWUgbG9naWMgcmVsYXRlZCB0byB1c2VyIHBlbmFsdGllcyBhbmQgc3luY2hyb25vdXMgZmx1c2hpbmcsIHNpbXBsaWZ5aW5nIHRoaW5ncy5cblxuTGV0J3MgZGl2ZSBpbnRvIHRoZSBwYXRjaCBkZXRhaWxzLiBJIGNhbiBzZWUgdGhlIGhlYWRlciBmaWxlIGBpbmNsdWRlL25ldC9hZl91bml4LmhgIHdhcyB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIG5ldyBzaWduYXR1cmUgb2YgYHVuaXhfc2NoZWR1bGVfZ2Modm9pZClgLiBUaGVuLCBga2VybmVsL2V4aXQuY2Agbm93IGNhbGxzIGB1bml4X3NjaGVkdWxlX2djKClgIGluIGBkb19leGl0KClgICphZnRlciogdGhlIGBleGl0X2ZpbGVzKHRzaylgIGNhbGwuIEdvb2QgcGxhY2VtZW50LCBtYWtpbmcgc3VyZSB0aG9zZSBmaWxlcyBhcmUgZnVsbHkgY2xvc2VkLiBJbiBgbmV0L3VuaXgvYWZfdW5peC5jYCwgYHVuaXhfcmVsZWFzZV9zb2NrKClgIGhhcyBiZWVuIHVwZGF0ZWQgdG8gY2FsbCB0aGUgbmV3IGZ1bmN0aW9uIHNpZ25hdHVyZS4gVGhlIG9sZCBzaWduYXR1cmUgaXMgcmVtb3ZlZCBmcm9tIGBuZXQvdW5peC9hZl91bml4LmhgLCBhbmQgYG5ldC91bml4L2dhcmJhZ2UuY2AgcmVmbGVjdHMgdGhlIGxvZ2ljIGNoYW5nZXMgYnkgcmVtb3ZpbmcgdGhlIGNhbGwgaW4gYHVuaXhfcHJlcGFyZV9mcGwoKWAsIHVwZGF0aW5nIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUsIGFuZCByZW1vdmluZyB0aGUgdXNlciBwZW5hbHR5IGZyb20gaW5zaWRlIHRoZSBmdW5jdGlvbiBpdHNlbGYuXG5cblRoaXMgaXMgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uLCBhZmZlY3RpbmcgY29yZSBrZXJuZWwgYmVoYXZpb3IuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGlzICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLiBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBzeW1ib2xzIHRvIHRhcmdldC4gUmlnaHQgbm93IEknbSB0aGlua2luZyBgdW5peF9zY2hlZHVsZV9nY2AsIGBkb19leGl0YCwgYHVuaXhfcmVsZWFzZV9zb2NrYCwgYW5kIGB1bml4X3ByZXBhcmVfZnBsYC4gV2FpdCwgYGRvX2V4aXRgIGlzIGEgdmVyeSBob3QgcGF0aDsgSSdtIGdvaW5nIHRvIHJlbW92ZSBpdCwgYW5kIGhvbmUgaW4gb24gYHVuaXhfc2NoZWR1bGVfZ2NgLiBNYXliZSBJIHNob3VsZCBjb25zaWRlciBgdW5peF9nY2AgYXMgd2VsbD8gSSB3aWxsIGhhdmUgdG8gaW52ZXN0aWdhdGUgdGhhdC5cblxuQ29uZmlnLXdpc2UsIGl0IGxvb2tzIGxpa2UgYENPTkZJR19VTklYYCBpcyB0aGUgbWFpbiBlbmFibGVyIGZvciBBRl9VTklYLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBzaG91bGQgdmVyaWZ5IHRoYXQgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjb25maWdzIHRoYXQgYXJlIHJlbGF0ZWQsIHRob3VnaC4gQmV0dGVyIGNoZWNrIGBuZXQvdW5peC9LY29uZmlnYCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTE0LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDg6NDM6MTUuMDY0NDUyNjcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzE2OTY5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVU5JWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdW5peC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC91bml4L0tjb25maWctNS1cXG5uZXQvdW5peC9LY29uZmlnOjY6Y29uZmlnIFVOSVhcXG5uZXQvdW5peC9LY29uZmlnLTctXFx0Ym9vbCBcXFwiVW5peCBkb21haW4gc29ja2V0c1xcXCJcXG4tLVxcbm5ldC91bml4L0tjb25maWc9MTk9Y29uZmlnXFx0QUZfVU5JWF9PT0JcXG4tLVxcbm5ldC91bml4L0tjb25maWctMjUtXFxubmV0L3VuaXgvS2NvbmZpZzoyNjpjb25maWcgVU5JWF9ESUFHXFxubmV0L3VuaXgvS2NvbmZpZy0yNy1cXHR0cmlzdGF0ZSBcXFwiVU5JWDogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwODo0MzoxNS4xNjc2MjgzMThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzg2OTYxNzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVU5JWCBTb2NrZXQgR2FyYmFnZSBDb2xsZWN0aW9uKipcblxuT2theSwgc28gdGhlIGBVTklYYCBjb25maWcgb3B0aW9uIGlzIHRoZSBrZXkgaGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBnYXJiYWdlIGNvbGxlY3Rpb24gZm9yIFVOSVggc29ja2V0cyBpcyBzY2hlZHVsZWQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNoZWNrIGBrZXJuZWwvZXhpdC5jYCBzaW5jZSBpdCdzIGludm9sdmVkIHdpdGggcHJvY2VzcyB0ZXJtaW5hdGlvbi4gSSB3YW50IHRvIHNlZSBpZiBgdW5peF9zY2hlZHVsZV9nYygpYCBpcyB1bmNvbmRpdGlvbmFsbHkgaW52b2tlZC4gWWVwLCBpdCdzIGNhbGxlZCB3aXRoaW4gYGRvX2V4aXQoKWAsIGFzIEkgZXhwZWN0ZWQuXG5cbkhhbmcgb24uLi4gSSdtIGdldHRpbmcgYSBsaXR0bGUgYWhlYWQgb2YgbXlzZWxmLiBBIHF1aWNrIGNoZWNrIG9mIGBpbmNsdWRlL25ldC9hZl91bml4LmhgIHJldmVhbHMgdGhhdCBgdW5peF9zY2hlZHVsZV9nYygpYCBpcyBhY3R1YWxseSBkZWZpbmVkIHRoZXJlLCBidXQgaXQgYXBwZWFycyB0byBiZSBhIHN0dWIgaWYgYENPTkZJR19VTklYYCBpc24ndCBlbmFibGVkLiBUaGF0J3MgZ29vZCB0byBrbm93LiBOb3cgSSBuZWVkIHRvIGFjdHVhbGx5IHNlZSB0aGUgZ2FyYmFnZSBjb2xsZWN0aW9uIGxvZ2ljIGl0c2VsZi4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGBuZXQvdW5peC9nYXJiYWdlLmNgIHRvIHVuZGVyc3RhbmQgd2hhdCdzICpyZWFsbHkqIGhhcHBlbmluZyB3aGVuIGB1bml4X3NjaGVkdWxlX2djYCBpcyBhY3R1YWxseSB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDcyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA4OjQzOjE4Ljk1NDU5MjU3NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjA4MDMxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2b2lkIHVuaXhfc2NoZWR1bGVfZ2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3VuaXgvZ2FyYmFnZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC91bml4L2dhcmJhZ2UuYz02MzY9c3RhdGljIERFQ0xBUkVfV09SSyh1bml4X2djX3dvcmssIHVuaXhfZ2MpO1xcbm5ldC91bml4L2dhcmJhZ2UuYy02MzctXFxubmV0L3VuaXgvZ2FyYmFnZS5jOjYzODp2b2lkIHVuaXhfc2NoZWR1bGVfZ2Modm9pZClcXG5uZXQvdW5peC9nYXJiYWdlLmMtNjM5LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDg6NDM6MTkuMDQwNjg0NzE1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTE2NDU0NjI4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEFGX1VOSVggR2FyYmFnZSBDb2xsZWN0aW9uIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHNjYW4gZmxhZ2dlZCBgdW5peF9zY2hlZHVsZV9nY2AsIGB1bml4X2djYCwgYHVuaXhfcmVsZWFzZV9zb2NrYCwgYW5kIGB1bml4X3ByZXBhcmVfZnBsYCBhcyBwb3RlbnRpYWwgYXJlYXMgb2YgaW50ZXJlc3QuIEhvd2V2ZXIsIEkgaW1tZWRpYXRlbHkgbm90ZWQgdGhhdCBgdW5peF9wcmVwYXJlX2ZwbGAgaGFkIGB1bml4X3NjaGVkdWxlX2djYCByZW1vdmVkLCBzbyB3aGlsZSBpdCdzIHBhcnQgb2YgdGhlIGRpZmYsIGl0J3MgcHJvYmFibHkgbm90IHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UuIEl0IHNlZW1zIGB1bml4X3NjaGVkdWxlX2djYCBpdHNlbGYgaXMgdGhlIGtleSBzY2hlZHVsaW5nIGZ1bmN0aW9uLiBBbmQsIHllcywgYHVuaXhfcmVsZWFzZV9zb2NrYCBpcyBpbmRlZWQgbW9kaWZpZWQsIHNvIGl0J3MgcmVsZXZhbnQuIEknbSBleGNsdWRpbmcgYGRvX2V4aXRgIGJlY2F1c2UsIGV2ZW4gdGhvdWdoIGl0J3MgbW9kaWZpZWQsIGl0J3MgYSBob3QgcGF0aCwgc28gZm9jdXNpbmcgb24gaXQgd291bGQgYmUgYSBkaXN0cmFjdGlvbi5cblxuTm93LCBgdW5peF9nY2DigKYgbGV0J3Mgc2VlLiBBaCwgeWVzLCBgdW5peF9nY2AgaXMgdGhlIGFjdHVhbCB3b3JrZXIgZnVuY3Rpb24sIHRoZSBnYXJiYWdlIGNvbGxlY3RvciBpdHNlbGYsIGNhbGxlZCBieSBgdW5peF9zY2hlZHVsZV9nY2AuIFNlZW1zIGxpa2UgYSBzZW5zaWJsZSBmb2N1cywgdGhlbi5cblxuTGV0J3MgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLiBPbmx5IGBDT05GSUdfVU5JWGAgYXBwZWFycy5cblxuQWxyaWdodCwgbGV0J3MgdmVyaWZ5IHJlYWNoYWJpbGl0eSBvZiBgdW5peF9zY2hlZHVsZV9nY2AuIFllcywgaXQncyBjYWxsZWQgZnJvbSBib3RoIGBkb19leGl0YCBhbmQgYHVuaXhfcmVsZWFzZV9zb2NrYC4gU28sIGEgcHJvY2VzcyBleGl0IGFuZCBBRl9VTklYIHNvY2tldCByZWxlYXNlIGFyZSB0aGUgdHJpZ2dlcnMuIGBkb19leGl0YCBpcyBjYWxsZWQgYWZ0ZXIgYGV4aXRfZmlsZXNgLlxuXG5TbywgdGhlIGNydXggb2YgdGhpcyBwYXRjaCBpcyB0aGUgbW9kaWZpY2F0aW9uIG9mIHRoZSBBRl9VTklYIGdhcmJhZ2UgY29sbGVjdGlvbiBzY2hlZHVsaW5nLiBJdCdzIHJlbW92aW5nIHNvbWV0aGluZyBmcm9tIGB1bml4X3NjaGVkdWxlX2djYCBhbmQgY2hhbmdpbmcgaXQgdG8gYmUgY2FsbGVkIGZyb20gYGRvX2V4aXRgIChhZnRlciBgZXhpdF9maWxlc2ApIGluc3RlYWQgb2YgYHVuaXhfcHJlcGFyZV9mcGxgLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JrL3Byb2Nlc3MgZXhpdCBsb2dpYyB0aGF0IHNpZ25pZmljYW50bHkgYWZmZWN0cyB0aGUgdGltaW5nIGFuZCB0cmlnZ2VyIG9mIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uLiBQb3RlbnRpYWxseSwgdGhpcyBjb3VsZCBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zIG9yIG1lbW9yeSBsZWFrcyBpZiBub3QgaGFuZGxlZCB3aXRoIGV4dHJlbWUgY2FyZS4gVGhpcyBjaGFuZ2UgbmVlZHMgY2FyZWZ1bCBzY3J1dGlueS5cblxuTXkgY29uZmlybWVkIGZvY3VzIHN5bWJvbHMgYXJlOiBgdW5peF9zY2hlZHVsZV9nY2AsIGB1bml4X3JlbGVhc2Vfc29ja2AsIGFuZCBgdW5peF9wcmVwYXJlX2ZwbGAuIFRoZSByZWxldmFudCBjb25maWcgaXMgYFVOSVhgLiBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBVTklYYCBpcyBhIGJvb2xlYW4uXG5cbk9rYXksIEknbSByZWFkeSB0byBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTE2LCJPdXRwdXRUb2tlbnMiOjE1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwODo0MzoyOC4yMDUyMzMyOTdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDI0MTQ0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVU5JWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVuaXhfc2NoZWR1bGVfZ2NcIixcbiAgICBcInVuaXhfcmVsZWFzZV9zb2NrXCIsXG4gICAgXCJ1bml4X3ByZXBhcmVfZnBsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uIHNjaGVkdWxpbmcgbG9naWMuIEl0IHJlbW92ZXMgdGhlIHVzZXIgcGVuYWx0eSBhbmQgc3luY2hyb25vdXMgZmx1c2ggZnJvbSBgdW5peF9zY2hlZHVsZV9nY2AsIGFuZCBjaGFuZ2VzIGl0IHRvIGJlIGNhbGxlZCBmcm9tIGBkb19leGl0YCAoYWZ0ZXIgYGV4aXRfZmlsZXNgKSBpbnN0ZWFkIG9mIGB1bml4X3ByZXBhcmVfZnBsYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29yayAvIHByb2Nlc3MgZXhpdCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IGFuZCB3aGVuIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uIGlzIHRyaWdnZXJlZCwgd2hpY2ggY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucyBvciBtZW1vcnkgbGVha3MgaWYgbm90IHByb3Blcmx5IGhhbmRsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVU5JWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVuaXhfc2NoZWR1bGVfZ2NcIixcbiAgICBcInVuaXhfcmVsZWFzZV9zb2NrXCIsXG4gICAgXCJ1bml4X3ByZXBhcmVfZnBsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uIHNjaGVkdWxpbmcgbG9naWMuIEl0IHJlbW92ZXMgdGhlIHVzZXIgcGVuYWx0eSBhbmQgc3luY2hyb25vdXMgZmx1c2ggZnJvbSBgdW5peF9zY2hlZHVsZV9nY2AsIGFuZCBjaGFuZ2VzIGl0IHRvIGJlIGNhbGxlZCBmcm9tIGBkb19leGl0YCAoYWZ0ZXIgYGV4aXRfZmlsZXNgKSBpbnN0ZWFkIG9mIGB1bml4X3ByZXBhcmVfZnBsYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29yayAvIHByb2Nlc3MgZXhpdCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IGFuZCB3aGVuIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uIGlzIHRyaWdnZXJlZCwgd2hpY2ggY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucyBvciBtZW1vcnkgbGVha3MgaWYgbm90IHByb3Blcmx5IGhhbmRsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5c4mw[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-17 08:27:22 +0000 UTC FinishedAt: 2026-07-17 08:43:29 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "fce2dfa773ced15f27dd27cd0b482a7473cdcf2a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "UNIX" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "fce2dfa773ced15f27dd27cd0b482a7473cdcf2a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "UNIX" ], "series_id": "125996de-23ef-4fdc-ba93-52c6ed83675e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "unix_schedule_gc", "unix_release_sock", "unix_prepare_fpl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA4OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VOSVgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1bml4X3NjaGVkdWxlX2djJiMzNDssCiAgICAmIzM0O3VuaXhfcmVsZWFzZV9zb2NrJiMzNDssCiAgICAmIzM0O3VuaXhfcHJlcGFyZV9mcGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uIHNjaGVkdWxpbmcgbG9naWMuIEl0IHJlbW92ZXMgdGhlIHVzZXIgcGVuYWx0eSBhbmQgc3luY2hyb25vdXMgZmx1c2ggZnJvbSBgdW5peF9zY2hlZHVsZV9nY2AsIGFuZCBjaGFuZ2VzIGl0IHRvIGJlIGNhbGxlZCBmcm9tIGBkb19leGl0YCAoYWZ0ZXIgYGV4aXRfZmlsZXNgKSBpbnN0ZWFkIG9mIGB1bml4X3ByZXBhcmVfZnBsYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29yayAvIHByb2Nlc3MgZXhpdCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IGFuZCB3aGVuIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uIGlzIHRyaWdnZXJlZCwgd2hpY2ggY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucyBvciBtZW1vcnkgbGVha3MgaWYgbm90IHByb3Blcmx5IGhhbmRsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDg6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjMGQ0Y2E3MDVjMmYzZDcwMDdjMjc1ODE3YTlmY2JiMWZlNGQ4YjlhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMDg6NDM6MDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvYWZfdW5peC5oIGIvaW5jbHVkZS9uZXQvYWZfdW5peC5oXG5pbmRleCAzNGY1M2RkZTY1Y2VhMi4uMWRmZGMwNzIwMDUyY2YgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9hZl91bml4LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2FmX3VuaXguaFxuQEAgLTE0LDExICYjNDM7MTQsMTYgQEBcbiBcbiAjaWYgSVNfRU5BQkxFRChDT05GSUdfVU5JWClcbiBzdHJ1Y3QgdW5peF9zb2NrICp1bml4X2dldF9zb2NrZXQoc3RydWN0IGZpbGUgKmZpbHApO1xuJiM0Mzt2b2lkIHVuaXhfc2NoZWR1bGVfZ2Modm9pZCk7XG4gI2Vsc2VcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB1bml4X3NvY2sgKnVuaXhfZ2V0X3NvY2tldChzdHJ1Y3QgZmlsZSAqZmlscClcbiB7XG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgdW5peF9zY2hlZHVsZV9nYyh2b2lkKVxuJiM0Mzt7XG4mIzQzO31cbiAjZW5kaWZcbiBcbiBzdHJ1Y3QgdW5peF9hZGRyZXNzIHtcbmRpZmYgLS1naXQgYS9rZXJuZWwvZXhpdC5jIGIva2VybmVsL2V4aXQuY1xuaW5kZXggMmMwYjFjMDI5MjBmNDYuLjc2NGE5MTFmMTExZWNjIDEwMDY0NFxuLS0tIGEva2VybmVsL2V4aXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2V4aXQuY1xuQEAgLTcxLDYgJiM0Mzs3MSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdW53aW5kX2RlZmVycmVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91YWNjZXNzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9waWRmcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY25ldC9hZl91bml4LmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcdTAwM2N1YXBpL2xpbnV4L3dhaXQuaFx1MDAzZVxuIFxuQEAgLTEwMDIsNiAmIzQzOzEwMDMsNyBAQCB2b2lkIF9fbm9yZXR1cm4gZG9fZXhpdChsb25nIGNvZGUpXG4gXHRleGl0X3NlbSh0c2spO1xuIFx0ZXhpdF9zaG0odHNrKTtcbiBcdGV4aXRfZmlsZXModHNrKTtcbiYjNDM7XHR1bml4X3NjaGVkdWxlX2djKCk7IC8qIE11c3QgYmUgYWZ0ZXIgZXhpdF9maWxlcygpICovXG4gXHRleGl0X2ZzKHRzayk7XG4gXHRpZiAoZ3JvdXBfZGVhZClcbiBcdFx0ZGlzYXNzb2NpYXRlX2N0dHkoMSk7XG5kaWZmIC0tZ2l0IGEvbmV0L3VuaXgvYWZfdW5peC5jIGIvbmV0L3VuaXgvYWZfdW5peC5jXG5pbmRleCBmN2E5ZDU1ZWVlOGExMi4uNzU5ZGI3MzRhODY2NDYgMTAwNjQ0XG4tLS0gYS9uZXQvdW5peC9hZl91bml4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC91bml4L2FmX3VuaXguY1xuQEAgLTczMyw3ICYjNDM7NzMzLDcgQEAgc3RhdGljIHZvaWQgdW5peF9yZWxlYXNlX3NvY2soc3RydWN0IHNvY2sgKnNrLCBpbnQgZW1icmlvbilcbiBcbiBcdC8qIC0tLS0gU29ja2V0IGlzIGRlYWQgbm93IGFuZCBtb3N0IHByb2JhYmx5IGRlc3Ryb3llZCAtLS0tICovXG4gXG4tXHR1bml4X3NjaGVkdWxlX2djKE5VTEwpO1xuJiM0MztcdHVuaXhfc2NoZWR1bGVfZ2MoKTtcbiB9XG4gXG4gc3RydWN0IHVuaXhfcGVlcmNyZWQge1xuZGlmZiAtLWdpdCBhL25ldC91bml4L2FmX3VuaXguaCBiL25ldC91bml4L2FmX3VuaXguaFxuaW5kZXggODExOWRiZWVmM2EzYzYuLmZjNGM1OTg5MzEyNGNjIDEwMDY0NFxuLS0tIGEvbmV0L3VuaXgvYWZfdW5peC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvdW5peC9hZl91bml4LmhcbkBAIC0zMCw3ICYjNDM7MzAsNiBAQCB2b2lkIHVuaXhfdXBkYXRlX2VkZ2VzKHN0cnVjdCB1bml4X3NvY2sgKnJlY2VpdmVyKTtcbiBpbnQgdW5peF9wcmVwYXJlX2ZwbChzdHJ1Y3Qgc2NtX2ZwX2xpc3QgKmZwbCk7XG4gdm9pZCB1bml4X2Rlc3Ryb3lfZnBsKHN0cnVjdCBzY21fZnBfbGlzdCAqZnBsKTtcbiB2b2lkIHVuaXhfcGVla19mcGwoc3RydWN0IHNjbV9mcF9saXN0ICpmcGwpO1xuLXZvaWQgdW5peF9zY2hlZHVsZV9nYyhzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIpO1xuIFxuIC8qIFNPQ0tfRElBRyAqL1xuIGxvbmcgdW5peF9pbnFfbGVuKHN0cnVjdCBzb2NrICpzayk7XG5kaWZmIC0tZ2l0IGEvbmV0L3VuaXgvZ2FyYmFnZS5jIGIvbmV0L3VuaXgvZ2FyYmFnZS5jXG5pbmRleCAwNzgzNTU1ZTI1MjY2MC4uZDQ2YWViOWQyMDUxODkgMTAwNjQ0XG4tLS0gYS9uZXQvdW5peC9nYXJiYWdlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC91bml4L2dhcmJhZ2UuY1xuQEAgLTMwMCw4ICYjNDM7MzAwLDYgQEAgaW50IHVuaXhfcHJlcGFyZV9mcGwoc3RydWN0IHNjbV9mcF9saXN0ICpmcGwpXG4gXHRpZiAoIWZwbC1cdTAwM2VlZGdlcylcbiBcdFx0Z290byBlcnI7XG4gXG4tXHR1bml4X3NjaGVkdWxlX2djKGZwbC1cdTAwM2V1c2VyKTtcbi1cbiBcdHJldHVybiAwO1xuIFxuIGVycjpcbkBAIC02MzcsMjMgJiM0Mzs2MzUsMTEgQEAgc3RhdGljIHZvaWQgdW5peF9nYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXG4gc3RhdGljIERFQ0xBUkVfV09SSyh1bml4X2djX3dvcmssIHVuaXhfZ2MpO1xuIFxuLSNkZWZpbmUgVU5JWF9JTkZMSUdIVF9TQU5FX1VTRVJcdFx0KFNDTV9NQVhfRkQgKiA4KVxuLVxuLXZvaWQgdW5peF9zY2hlZHVsZV9nYyhzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIpXG4mIzQzO3ZvaWQgdW5peF9zY2hlZHVsZV9nYyh2b2lkKVxuIHtcbiBcdGlmIChSRUFEX09OQ0UodW5peF9ncmFwaF9zdGF0ZSkgPT0gVU5JWF9HUkFQSF9OT1RfQ1lDTElDKVxuIFx0XHRyZXR1cm47XG4gXG4tXHQvKiBQZW5hbGlzZSB1c2VycyB3aG8gd2FudCB0byBzZW5kIEFGX1VOSVggc29ja2V0c1xuLVx0ICogYnV0IHdob3NlIHNvY2tldHMgaGF2ZSBub3QgYmVlbiByZWNlaXZlZCB5ZXQuXG4tXHQgKi9cbi1cdGlmICh1c2VyIFx1MDAyNlx1MDAyNlxuLVx0ICAgIFJFQURfT05DRSh1c2VyLVx1MDAzZXVuaXhfaW5mbGlnaHQpIFx1MDAzYyBVTklYX0lORkxJR0hUX1NBTkVfVVNFUilcbi1cdFx0cmV0dXJuO1xuLVxuIFx0aWYgKCFSRUFEX09OQ0UoZ2NfaW5fcHJvZ3Jlc3MpKVxuIFx0XHRxdWV1ZV93b3JrKHN5c3RlbV9kZmxfd3EsIFx1MDAyNnVuaXhfZ2Nfd29yayk7XG4tXG4tXHRpZiAodXNlciBcdTAwMjZcdTAwMjYgUkVBRF9PTkNFKHVuaXhfZ3JhcGhfY3ljbGljX3NjY3MpKVxuLVx0XHRmbHVzaF93b3JrKFx1MDAyNnVuaXhfZ2Nfd29yayk7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA4OjQzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VOSVgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1bml4X3NjaGVkdWxlX2djJiMzNDssCiAgICAmIzM0O3VuaXhfcmVsZWFzZV9zb2NrJiMzNDssCiAgICAmIzM0O3VuaXhfcHJlcGFyZV9mcGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uIHNjaGVkdWxpbmcgbG9naWMuIEl0IHJlbW92ZXMgdGhlIHVzZXIgcGVuYWx0eSBhbmQgc3luY2hyb25vdXMgZmx1c2ggZnJvbSBgdW5peF9zY2hlZHVsZV9nY2AsIGFuZCBjaGFuZ2VzIGl0IHRvIGJlIGNhbGxlZCBmcm9tIGBkb19leGl0YCAoYWZ0ZXIgYGV4aXRfZmlsZXNgKSBpbnN0ZWFkIG9mIGB1bml4X3ByZXBhcmVfZnBsYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29yayAvIHByb2Nlc3MgZXhpdCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IGFuZCB3aGVuIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uIGlzIHRyaWdnZXJlZCwgd2hpY2ggY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucyBvciBtZW1vcnkgbGVha3MgaWYgbm90IHByb3Blcmx5IGhhbmRsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMwZDRjYTcwNWMyZjNkNzAwN2MyNzU4MTdhOWZjYmIxZmU0ZDhiOWEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxNyAwODo0MzowNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2FmX3VuaXguaCBiL2luY2x1ZGUvbmV0L2FmX3VuaXguaAppbmRleCAzNGY1M2RkZTY1Y2VhMi4uMWRmZGMwNzIwMDUyY2YgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2FmX3VuaXguaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9hZl91bml4LmgKQEAgLTE0LDExICYjNDM7MTQsMTYgQEAKIAogI2lmIElTX0VOQUJMRUQoQ09ORklHX1VOSVgpCiBzdHJ1Y3QgdW5peF9zb2NrICp1bml4X2dldF9zb2NrZXQoc3RydWN0IGZpbGUgKmZpbHApOwomIzQzO3ZvaWQgdW5peF9zY2hlZHVsZV9nYyh2b2lkKTsKICNlbHNlCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB1bml4X3NvY2sgKnVuaXhfZ2V0X3NvY2tldChzdHJ1Y3QgZmlsZSAqZmlscCkKIHsKIAlyZXR1cm4gTlVMTDsKIH0KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgdW5peF9zY2hlZHVsZV9nYyh2b2lkKQomIzQzO3sKJiM0Mzt9CiAjZW5kaWYKIAogc3RydWN0IHVuaXhfYWRkcmVzcyB7CmRpZmYgLS1naXQgYS9rZXJuZWwvZXhpdC5jIGIva2VybmVsL2V4aXQuYwppbmRleCAyYzBiMWMwMjkyMGY0Ni4uNzY0YTkxMWYxMTFlY2MgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9leGl0LmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2V4aXQuYwpAQCAtNzEsNiAmIzQzOzcxLDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC91bndpbmRfZGVmZXJyZWQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91YWNjZXNzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGlkZnMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bmV0L2FmX3VuaXguaCZndDsKIAogI2luY2x1ZGUgJmx0O3VhcGkvbGludXgvd2FpdC5oJmd0OwogCkBAIC0xMDAyLDYgJiM0MzsxMDAzLDcgQEAgdm9pZCBfX25vcmV0dXJuIGRvX2V4aXQobG9uZyBjb2RlKQogCWV4aXRfc2VtKHRzayk7CiAJZXhpdF9zaG0odHNrKTsKIAlleGl0X2ZpbGVzKHRzayk7CiYjNDM7CXVuaXhfc2NoZWR1bGVfZ2MoKTsgLyogTXVzdCBiZSBhZnRlciBleGl0X2ZpbGVzKCkgKi8KIAlleGl0X2ZzKHRzayk7CiAJaWYgKGdyb3VwX2RlYWQpCiAJCWRpc2Fzc29jaWF0ZV9jdHR5KDEpOwpkaWZmIC0tZ2l0IGEvbmV0L3VuaXgvYWZfdW5peC5jIGIvbmV0L3VuaXgvYWZfdW5peC5jCmluZGV4IGY3YTlkNTVlZWU4YTEyLi43NTlkYjczNGE4NjY0NiAxMDA2NDQKLS0tIGEvbmV0L3VuaXgvYWZfdW5peC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC91bml4L2FmX3VuaXguYwpAQCAtNzMzLDcgJiM0Mzs3MzMsNyBAQCBzdGF0aWMgdm9pZCB1bml4X3JlbGVhc2Vfc29jayhzdHJ1Y3Qgc29jayAqc2ssIGludCBlbWJyaW9uKQogCiAJLyogLS0tLSBTb2NrZXQgaXMgZGVhZCBub3cgYW5kIG1vc3QgcHJvYmFibHkgZGVzdHJveWVkIC0tLS0gKi8KIAotCXVuaXhfc2NoZWR1bGVfZ2MoTlVMTCk7CiYjNDM7CXVuaXhfc2NoZWR1bGVfZ2MoKTsKIH0KIAogc3RydWN0IHVuaXhfcGVlcmNyZWQgewpkaWZmIC0tZ2l0IGEvbmV0L3VuaXgvYWZfdW5peC5oIGIvbmV0L3VuaXgvYWZfdW5peC5oCmluZGV4IDgxMTlkYmVlZjNhM2M2Li5mYzRjNTk4OTMxMjRjYyAxMDA2NDQKLS0tIGEvbmV0L3VuaXgvYWZfdW5peC5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC91bml4L2FmX3VuaXguaApAQCAtMzAsNyAmIzQzOzMwLDYgQEAgdm9pZCB1bml4X3VwZGF0ZV9lZGdlcyhzdHJ1Y3QgdW5peF9zb2NrICpyZWNlaXZlcik7CiBpbnQgdW5peF9wcmVwYXJlX2ZwbChzdHJ1Y3Qgc2NtX2ZwX2xpc3QgKmZwbCk7CiB2b2lkIHVuaXhfZGVzdHJveV9mcGwoc3RydWN0IHNjbV9mcF9saXN0ICpmcGwpOwogdm9pZCB1bml4X3BlZWtfZnBsKHN0cnVjdCBzY21fZnBfbGlzdCAqZnBsKTsKLXZvaWQgdW5peF9zY2hlZHVsZV9nYyhzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIpOwogCiAvKiBTT0NLX0RJQUcgKi8KIGxvbmcgdW5peF9pbnFfbGVuKHN0cnVjdCBzb2NrICpzayk7CmRpZmYgLS1naXQgYS9uZXQvdW5peC9nYXJiYWdlLmMgYi9uZXQvdW5peC9nYXJiYWdlLmMKaW5kZXggMDc4MzU1NWUyNTI2NjAuLmQ0NmFlYjlkMjA1MTg5IDEwMDY0NAotLS0gYS9uZXQvdW5peC9nYXJiYWdlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3VuaXgvZ2FyYmFnZS5jCkBAIC0zMDAsOCAmIzQzOzMwMCw2IEBAIGludCB1bml4X3ByZXBhcmVfZnBsKHN0cnVjdCBzY21fZnBfbGlzdCAqZnBsKQogCWlmICghZnBsLSZndDtlZGdlcykKIAkJZ290byBlcnI7CiAKLQl1bml4X3NjaGVkdWxlX2djKGZwbC0mZ3Q7dXNlcik7Ci0KIAlyZXR1cm4gMDsKIAogZXJyOgpAQCAtNjM3LDIzICYjNDM7NjM1LDExIEBAIHN0YXRpYyB2b2lkIHVuaXhfZ2Moc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCiBzdGF0aWMgREVDTEFSRV9XT1JLKHVuaXhfZ2Nfd29yaywgdW5peF9nYyk7CiAKLSNkZWZpbmUgVU5JWF9JTkZMSUdIVF9TQU5FX1VTRVIJCShTQ01fTUFYX0ZEICogOCkKLQotdm9pZCB1bml4X3NjaGVkdWxlX2djKHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcikKJiM0Mzt2b2lkIHVuaXhfc2NoZWR1bGVfZ2Modm9pZCkKIHsKIAlpZiAoUkVBRF9PTkNFKHVuaXhfZ3JhcGhfc3RhdGUpID09IFVOSVhfR1JBUEhfTk9UX0NZQ0xJQykKIAkJcmV0dXJuOwogCi0JLyogUGVuYWxpc2UgdXNlcnMgd2hvIHdhbnQgdG8gc2VuZCBBRl9VTklYIHNvY2tldHMKLQkgKiBidXQgd2hvc2Ugc29ja2V0cyBoYXZlIG5vdCBiZWVuIHJlY2VpdmVkIHlldC4KLQkgKi8KLQlpZiAodXNlciAmYW1wOyZhbXA7Ci0JICAgIFJFQURfT05DRSh1c2VyLSZndDt1bml4X2luZmxpZ2h0KSAmbHQ7IFVOSVhfSU5GTElHSFRfU0FORV9VU0VSKQotCQlyZXR1cm47Ci0KIAlpZiAoIVJFQURfT05DRShnY19pbl9wcm9ncmVzcykpCiAJCXF1ZXVlX3dvcmsoc3lzdGVtX2RmbF93cSwgJmFtcDt1bml4X2djX3dvcmspOwotCi0JaWYgKHVzZXIgJmFtcDsmYW1wOyBSRUFEX09OQ0UodW5peF9ncmFwaF9jeWNsaWNfc2NjcykpCi0JCWZsdXNoX3dvcmsoJmFtcDt1bml4X2djX3dvcmspOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTE0CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIHRvIEFGX1VOSVggR2FyYmFnZSBDb2xsZWN0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0d2Vha2luZyBob3cgdGhlIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uIHJ1bnMuIEluaXRpYWxseSwgYHVuaXhfc2NoZWR1bGVfZ2MoKWAgd2FzIGJlaW5nIGNhbGxlZCBmcm9tIGB1bml4X3ByZXBhcmVfZnBsKClgIGFuZCBgdW5peF9yZWxlYXNlX3NvY2soKWAuIE5vdywgaXQmIzM5O3MgYmVlbiBtb3ZlZCBhbmQgaXMgY2FsbGVkIGZyb20gYGRvX2V4aXQoKWAgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgZXhpdCByb3V0aW5lLCBhbmQgaXQmIzM5O3Mgc3RpbGwgY2FsbGVkIGZyb20gYHVuaXhfcmVsZWFzZV9zb2NrKClgLiBUaGUgc2lnbmF0dXJlIG9mIGB1bml4X3NjaGVkdWxlX2djKClgIGhhcyBiZWVuIGNoYW5nZWQgZnJvbSB0YWtpbmcgYSBgdXNlcl9zdHJ1Y3RgIGFyZ3VtZW50IHRvIGJlaW5nIHZvaWQuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIEluc2lkZSB0aGUgYWN0dWFsIGB1bml4X3NjaGVkdWxlX2djKClgIGZ1bmN0aW9uLCB0aGV5JiMzOTt2ZSBhbHNvIHJlbW92ZWQgc29tZSBsb2dpYyByZWxhdGVkIHRvIHVzZXIgcGVuYWx0aWVzIGFuZCBzeW5jaHJvbm91cyBmbHVzaGluZywgc2ltcGxpZnlpbmcgdGhpbmdzLgoKTGV0JiMzOTtzIGRpdmUgaW50byB0aGUgcGF0Y2ggZGV0YWlscy4gSSBjYW4gc2VlIHRoZSBoZWFkZXIgZmlsZSBgaW5jbHVkZS9uZXQvYWZfdW5peC5oYCB3YXMgdXBkYXRlZCB0byBpbmNsdWRlIHRoZSBuZXcgc2lnbmF0dXJlIG9mIGB1bml4X3NjaGVkdWxlX2djKHZvaWQpYC4gVGhlbiwgYGtlcm5lbC9leGl0LmNgIG5vdyBjYWxscyBgdW5peF9zY2hlZHVsZV9nYygpYCBpbiBgZG9fZXhpdCgpYCAqYWZ0ZXIqIHRoZSBgZXhpdF9maWxlcyh0c2spYCBjYWxsLiBHb29kIHBsYWNlbWVudCwgbWFraW5nIHN1cmUgdGhvc2UgZmlsZXMgYXJlIGZ1bGx5IGNsb3NlZC4gSW4gYG5ldC91bml4L2FmX3VuaXguY2AsIGB1bml4X3JlbGVhc2Vfc29jaygpYCBoYXMgYmVlbiB1cGRhdGVkIHRvIGNhbGwgdGhlIG5ldyBmdW5jdGlvbiBzaWduYXR1cmUuIFRoZSBvbGQgc2lnbmF0dXJlIGlzIHJlbW92ZWQgZnJvbSBgbmV0L3VuaXgvYWZfdW5peC5oYCwgYW5kIGBuZXQvdW5peC9nYXJiYWdlLmNgIHJlZmxlY3RzIHRoZSBsb2dpYyBjaGFuZ2VzIGJ5IHJlbW92aW5nIHRoZSBjYWxsIGluIGB1bml4X3ByZXBhcmVfZnBsKClgLCB1cGRhdGluZyB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlLCBhbmQgcmVtb3ZpbmcgdGhlIHVzZXIgcGVuYWx0eSBmcm9tIGluc2lkZSB0aGUgZnVuY3Rpb24gaXRzZWxmLgoKVGhpcyBpcyBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgQUZfVU5JWCBnYXJiYWdlIGNvbGxlY3Rpb24sIGFmZmVjdGluZyBjb3JlIGtlcm5lbCBiZWhhdmlvci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IHN5bWJvbHMgdG8gdGFyZ2V0LiBSaWdodCBub3cgSSYjMzk7bSB0aGlua2luZyBgdW5peF9zY2hlZHVsZV9nY2AsIGBkb19leGl0YCwgYHVuaXhfcmVsZWFzZV9zb2NrYCwgYW5kIGB1bml4X3ByZXBhcmVfZnBsYC4gV2FpdCwgYGRvX2V4aXRgIGlzIGEgdmVyeSBob3QgcGF0aDsgSSYjMzk7bSBnb2luZyB0byByZW1vdmUgaXQsIGFuZCBob25lIGluIG9uIGB1bml4X3NjaGVkdWxlX2djYC4gTWF5YmUgSSBzaG91bGQgY29uc2lkZXIgYHVuaXhfZ2NgIGFzIHdlbGw/IEkgd2lsbCBoYXZlIHRvIGludmVzdGlnYXRlIHRoYXQuCgpDb25maWctd2lzZSwgaXQgbG9va3MgbGlrZSBgQ09ORklHX1VOSVhgIGlzIHRoZSBtYWluIGVuYWJsZXIgZm9yIEFGX1VOSVgsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIHNob3VsZCB2ZXJpZnkgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjb25maWdzIHRoYXQgYXJlIHJlbGF0ZWQsIHRob3VnaC4gQmV0dGVyIGNoZWNrIGBuZXQvdW5peC9LY29uZmlnYCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVTklYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3VuaXgvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdW5peC9LY29uZmlnLTUtXG5uZXQvdW5peC9LY29uZmlnOjY6Y29uZmlnIFVOSVhcbm5ldC91bml4L0tjb25maWctNy1cdGJvb2wgXCYjMzQ7VW5peCBkb21haW4gc29ja2V0c1wmIzM0O1xuLS1cbm5ldC91bml4L0tjb25maWc9MTk9Y29uZmlnXHRBRl9VTklYX09PQlxuLS1cbm5ldC91bml4L0tjb25maWctMjUtXG5uZXQvdW5peC9LY29uZmlnOjI2OmNvbmZpZyBVTklYX0RJQUdcbm5ldC91bml4L0tjb25maWctMjctXHR0cmlzdGF0ZSBcJiMzNDtVTklYOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDcyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVU5JWCBTb2NrZXQgR2FyYmFnZSBDb2xsZWN0aW9uKioKCk9rYXksIHNvIHRoZSBgVU5JWGAgY29uZmlnIG9wdGlvbiBpcyB0aGUga2V5IGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZ2FyYmFnZSBjb2xsZWN0aW9uIGZvciBVTklYIHNvY2tldHMgaXMgc2NoZWR1bGVkLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayBga2VybmVsL2V4aXQuY2Agc2luY2UgaXQmIzM5O3MgaW52b2x2ZWQgd2l0aCBwcm9jZXNzIHRlcm1pbmF0aW9uLiBJIHdhbnQgdG8gc2VlIGlmIGB1bml4X3NjaGVkdWxlX2djKClgIGlzIHVuY29uZGl0aW9uYWxseSBpbnZva2VkLiBZZXAsIGl0JiMzOTtzIGNhbGxlZCB3aXRoaW4gYGRvX2V4aXQoKWAsIGFzIEkgZXhwZWN0ZWQuCgpIYW5nIG9uLi4uIEkmIzM5O20gZ2V0dGluZyBhIGxpdHRsZSBhaGVhZCBvZiBteXNlbGYuIEEgcXVpY2sgY2hlY2sgb2YgYGluY2x1ZGUvbmV0L2FmX3VuaXguaGAgcmV2ZWFscyB0aGF0IGB1bml4X3NjaGVkdWxlX2djKClgIGlzIGFjdHVhbGx5IGRlZmluZWQgdGhlcmUsIGJ1dCBpdCBhcHBlYXJzIHRvIGJlIGEgc3R1YiBpZiBgQ09ORklHX1VOSVhgIGlzbiYjMzk7dCBlbmFibGVkLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdy4gTm93IEkgbmVlZCB0byBhY3R1YWxseSBzZWUgdGhlIGdhcmJhZ2UgY29sbGVjdGlvbiBsb2dpYyBpdHNlbGYuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYG5ldC91bml4L2dhcmJhZ2UuY2AgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICpyZWFsbHkqIGhhcHBlbmluZyB3aGVuIGB1bml4X3NjaGVkdWxlX2djYCBpcyBhY3R1YWxseSB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZvaWQgdW5peF9zY2hlZHVsZV9nYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC91bml4L2dhcmJhZ2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdW5peC9nYXJiYWdlLmM9NjM2PXN0YXRpYyBERUNMQVJFX1dPUksodW5peF9nY193b3JrLCB1bml4X2djKTtcbm5ldC91bml4L2dhcmJhZ2UuYy02MzctXG5uZXQvdW5peC9nYXJiYWdlLmM6NjM4OnZvaWQgdW5peF9zY2hlZHVsZV9nYyh2b2lkKVxubmV0L3VuaXgvZ2FyYmFnZS5jLTYzOS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUxNgoJCQkJCQkJb3V0cHV0OiAxNTcKCQkJCQkJCXRob3VnaHRzOiA0NzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBRl9VTklYIEdhcmJhZ2UgQ29sbGVjdGlvbiBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHNjYW4gZmxhZ2dlZCBgdW5peF9zY2hlZHVsZV9nY2AsIGB1bml4X2djYCwgYHVuaXhfcmVsZWFzZV9zb2NrYCwgYW5kIGB1bml4X3ByZXBhcmVfZnBsYCBhcyBwb3RlbnRpYWwgYXJlYXMgb2YgaW50ZXJlc3QuIEhvd2V2ZXIsIEkgaW1tZWRpYXRlbHkgbm90ZWQgdGhhdCBgdW5peF9wcmVwYXJlX2ZwbGAgaGFkIGB1bml4X3NjaGVkdWxlX2djYCByZW1vdmVkLCBzbyB3aGlsZSBpdCYjMzk7cyBwYXJ0IG9mIHRoZSBkaWZmLCBpdCYjMzk7cyBwcm9iYWJseSBub3QgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZS4gSXQgc2VlbXMgYHVuaXhfc2NoZWR1bGVfZ2NgIGl0c2VsZiBpcyB0aGUga2V5IHNjaGVkdWxpbmcgZnVuY3Rpb24uIEFuZCwgeWVzLCBgdW5peF9yZWxlYXNlX3NvY2tgIGlzIGluZGVlZCBtb2RpZmllZCwgc28gaXQmIzM5O3MgcmVsZXZhbnQuIEkmIzM5O20gZXhjbHVkaW5nIGBkb19leGl0YCBiZWNhdXNlLCBldmVuIHRob3VnaCBpdCYjMzk7cyBtb2RpZmllZCwgaXQmIzM5O3MgYSBob3QgcGF0aCwgc28gZm9jdXNpbmcgb24gaXQgd291bGQgYmUgYSBkaXN0cmFjdGlvbi4KCk5vdywgYHVuaXhfZ2Ng4oCmIGxldCYjMzk7cyBzZWUuIEFoLCB5ZXMsIGB1bml4X2djYCBpcyB0aGUgYWN0dWFsIHdvcmtlciBmdW5jdGlvbiwgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIGl0c2VsZiwgY2FsbGVkIGJ5IGB1bml4X3NjaGVkdWxlX2djYC4gU2VlbXMgbGlrZSBhIHNlbnNpYmxlIGZvY3VzLCB0aGVuLgoKTGV0JiMzOTtzIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucyBpbnZvbHZlZC4gT25seSBgQ09ORklHX1VOSVhgIGFwcGVhcnMuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdmVyaWZ5IHJlYWNoYWJpbGl0eSBvZiBgdW5peF9zY2hlZHVsZV9nY2AuIFllcywgaXQmIzM5O3MgY2FsbGVkIGZyb20gYm90aCBgZG9fZXhpdGAgYW5kIGB1bml4X3JlbGVhc2Vfc29ja2AuIFNvLCBhIHByb2Nlc3MgZXhpdCBhbmQgQUZfVU5JWCBzb2NrZXQgcmVsZWFzZSBhcmUgdGhlIHRyaWdnZXJzLiBgZG9fZXhpdGAgaXMgY2FsbGVkIGFmdGVyIGBleGl0X2ZpbGVzYC4KClNvLCB0aGUgY3J1eCBvZiB0aGlzIHBhdGNoIGlzIHRoZSBtb2RpZmljYXRpb24gb2YgdGhlIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uIHNjaGVkdWxpbmcuIEl0JiMzOTtzIHJlbW92aW5nIHNvbWV0aGluZyBmcm9tIGB1bml4X3NjaGVkdWxlX2djYCBhbmQgY2hhbmdpbmcgaXQgdG8gYmUgY2FsbGVkIGZyb20gYGRvX2V4aXRgIChhZnRlciBgZXhpdF9maWxlc2ApIGluc3RlYWQgb2YgYHVuaXhfcHJlcGFyZV9mcGxgLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JrL3Byb2Nlc3MgZXhpdCBsb2dpYyB0aGF0IHNpZ25pZmljYW50bHkgYWZmZWN0cyB0aGUgdGltaW5nIGFuZCB0cmlnZ2VyIG9mIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uLiBQb3RlbnRpYWxseSwgdGhpcyBjb3VsZCBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zIG9yIG1lbW9yeSBsZWFrcyBpZiBub3QgaGFuZGxlZCB3aXRoIGV4dHJlbWUgY2FyZS4gVGhpcyBjaGFuZ2UgbmVlZHMgY2FyZWZ1bCBzY3J1dGlueS4KCk15IGNvbmZpcm1lZCBmb2N1cyBzeW1ib2xzIGFyZTogYHVuaXhfc2NoZWR1bGVfZ2NgLCBgdW5peF9yZWxlYXNlX3NvY2tgLCBhbmQgYHVuaXhfcHJlcGFyZV9mcGxgLiBUaGUgcmVsZXZhbnQgY29uZmlnIGlzIGBVTklYYC4gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYFVOSVhgIGlzIGEgYm9vbGVhbi4KCk9rYXksIEkmIzM5O20gcmVhZHkgdG8gYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VU5JWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VuaXhfc2NoZWR1bGVfZ2MmIzM0OywKICAgICYjMzQ7dW5peF9yZWxlYXNlX3NvY2smIzM0OywKICAgICYjMzQ7dW5peF9wcmVwYXJlX2ZwbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQUZfVU5JWCBnYXJiYWdlIGNvbGxlY3Rpb24gc2NoZWR1bGluZyBsb2dpYy4gSXQgcmVtb3ZlcyB0aGUgdXNlciBwZW5hbHR5IGFuZCBzeW5jaHJvbm91cyBmbHVzaCBmcm9tIGB1bml4X3NjaGVkdWxlX2djYCwgYW5kIGNoYW5nZXMgaXQgdG8gYmUgY2FsbGVkIGZyb20gYGRvX2V4aXRgIChhZnRlciBgZXhpdF9maWxlc2ApIGluc3RlYWQgb2YgYHVuaXhfcHJlcGFyZV9mcGxgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrIC8gcHJvY2VzcyBleGl0IGxvZ2ljIHRoYXQgYWZmZWN0cyBob3cgYW5kIHdoZW4gQUZfVU5JWCBnYXJiYWdlIGNvbGxlY3Rpb24gaXMgdHJpZ2dlcmVkLCB3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zIG9yIG1lbW9yeSBsZWFrcyBpZiBub3QgcHJvcGVybHkgaGFuZGxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VU5JWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VuaXhfc2NoZWR1bGVfZ2MmIzM0OywKICAgICYjMzQ7dW5peF9yZWxlYXNlX3NvY2smIzM0OywKICAgICYjMzQ7dW5peF9wcmVwYXJlX2ZwbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQUZfVU5JWCBnYXJiYWdlIGNvbGxlY3Rpb24gc2NoZWR1bGluZyBsb2dpYy4gSXQgcmVtb3ZlcyB0aGUgdXNlciBwZW5hbHR5IGFuZCBzeW5jaHJvbm91cyBmbHVzaCBmcm9tIGB1bml4X3NjaGVkdWxlX2djYCwgYW5kIGNoYW5nZXMgaXQgdG8gYmUgY2FsbGVkIGZyb20gYGRvX2V4aXRgIChhZnRlciBgZXhpdF9maWxlc2ApIGluc3RlYWQgb2YgYHVuaXhfcHJlcGFyZV9mcGxgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrIC8gcHJvY2VzcyBleGl0IGxvZ2ljIHRoYXQgYWZmZWN0cyBob3cgYW5kIHdoZW4gQUZfVU5JWCBnYXJiYWdlIGNvbGxlY3Rpb24gaXMgdHJpZ2dlcmVkLCB3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zIG9yIG1lbW9yeSBsZWFrcyBpZiBub3QgcHJvcGVybHkgaGFuZGxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA4OjQzOjA1Ljg3NjQ1NjkyOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNDYzMDQ1MjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVOSVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1bml4X3NjaGVkdWxlX2djXCIsXG4gICAgXCJ1bml4X3JlbGVhc2Vfc29ja1wiLFxuICAgIFwidW5peF9wcmVwYXJlX2ZwbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBBRl9VTklYIGdhcmJhZ2UgY29sbGVjdGlvbiBzY2hlZHVsaW5nIGxvZ2ljLiBJdCByZW1vdmVzIHRoZSB1c2VyIHBlbmFsdHkgYW5kIHN5bmNocm9ub3VzIGZsdXNoIGZyb20gYHVuaXhfc2NoZWR1bGVfZ2NgLCBhbmQgY2hhbmdlcyBpdCB0byBiZSBjYWxsZWQgZnJvbSBgZG9fZXhpdGAgKGFmdGVyIGBleGl0X2ZpbGVzYCkgaW5zdGVhZCBvZiBgdW5peF9wcmVwYXJlX2ZwbGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmsgLyBwcm9jZXNzIGV4aXQgbG9naWMgdGhhdCBhZmZlY3RzIGhvdyBhbmQgd2hlbiBBRl9VTklYIGdhcmJhZ2UgY29sbGVjdGlvbiBpcyB0cmlnZ2VyZWQsIHdoaWNoIGNvdWxkIHBvdGVudGlhbGx5IGludHJvZHVjZSByYWNlIGNvbmRpdGlvbnMgb3IgbWVtb3J5IGxlYWtzIGlmIG5vdCBwcm9wZXJseSBoYW5kbGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwODo0MzowNS44NzY0NjMxOTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNDEyMDU1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGMwZDRjYTcwNWMyZjNkNzAwN2MyNzU4MTdhOWZjYmIxZmU0ZDhiOWFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTcgMDg6NDM6MDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvYWZfdW5peC5oIGIvaW5jbHVkZS9uZXQvYWZfdW5peC5oXFxuaW5kZXggMzRmNTNkZGU2NWNlYTIuLjFkZmRjMDcyMDA1MmNmIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L2FmX3VuaXguaFxcbisrKyBiL2luY2x1ZGUvbmV0L2FmX3VuaXguaFxcbkBAIC0xNCwxMSArMTQsMTYgQEBcXG4gXFxuICNpZiBJU19FTkFCTEVEKENPTkZJR19VTklYKVxcbiBzdHJ1Y3QgdW5peF9zb2NrICp1bml4X2dldF9zb2NrZXQoc3RydWN0IGZpbGUgKmZpbHApO1xcbit2b2lkIHVuaXhfc2NoZWR1bGVfZ2Modm9pZCk7XFxuICNlbHNlXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IHVuaXhfc29jayAqdW5peF9nZXRfc29ja2V0KHN0cnVjdCBmaWxlICpmaWxwKVxcbiB7XFxuIFxcdHJldHVybiBOVUxMO1xcbiB9XFxuK1xcbitzdGF0aWMgaW5saW5lIHZvaWQgdW5peF9zY2hlZHVsZV9nYyh2b2lkKVxcbit7XFxuK31cXG4gI2VuZGlmXFxuIFxcbiBzdHJ1Y3QgdW5peF9hZGRyZXNzIHtcXG5kaWZmIC0tZ2l0IGEva2VybmVsL2V4aXQuYyBiL2tlcm5lbC9leGl0LmNcXG5pbmRleCAyYzBiMWMwMjkyMGY0Ni4uNzY0YTkxMWYxMTFlY2MgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2V4aXQuY1xcbisrKyBiL2tlcm5lbC9leGl0LmNcXG5AQCAtNzEsNiArNzEsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvdW53aW5kX2RlZmVycmVkLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC91YWNjZXNzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9waWRmcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbmV0L2FmX3VuaXguaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2N1YXBpL2xpbnV4L3dhaXQuaFxcdTAwM2VcXG4gXFxuQEAgLTEwMDIsNiArMTAwMyw3IEBAIHZvaWQgX19ub3JldHVybiBkb19leGl0KGxvbmcgY29kZSlcXG4gXFx0ZXhpdF9zZW0odHNrKTtcXG4gXFx0ZXhpdF9zaG0odHNrKTtcXG4gXFx0ZXhpdF9maWxlcyh0c2spO1xcbitcXHR1bml4X3NjaGVkdWxlX2djKCk7IC8qIE11c3QgYmUgYWZ0ZXIgZXhpdF9maWxlcygpICovXFxuIFxcdGV4aXRfZnModHNrKTtcXG4gXFx0aWYgKGdyb3VwX2RlYWQpXFxuIFxcdFxcdGRpc2Fzc29jaWF0ZV9jdHR5KDEpO1xcbmRpZmYgLS1naXQgYS9uZXQvdW5peC9hZl91bml4LmMgYi9uZXQvdW5peC9hZl91bml4LmNcXG5pbmRleCBmN2E5ZDU1ZWVlOGExMi4uNzU5ZGI3MzRhODY2NDYgMTAwNjQ0XFxuLS0tIGEvbmV0L3VuaXgvYWZfdW5peC5jXFxuKysrIGIvbmV0L3VuaXgvYWZfdW5peC5jXFxuQEAgLTczMyw3ICs3MzMsNyBAQCBzdGF0aWMgdm9pZCB1bml4X3JlbGVhc2Vfc29jayhzdHJ1Y3Qgc29jayAqc2ssIGludCBlbWJyaW9uKVxcbiBcXG4gXFx0LyogLS0tLSBTb2NrZXQgaXMgZGVhZCBub3cgYW5kIG1vc3QgcHJvYmFibHkgZGVzdHJveWVkIC0tLS0gKi9cXG4gXFxuLVxcdHVuaXhfc2NoZWR1bGVfZ2MoTlVMTCk7XFxuK1xcdHVuaXhfc2NoZWR1bGVfZ2MoKTtcXG4gfVxcbiBcXG4gc3RydWN0IHVuaXhfcGVlcmNyZWQge1xcbmRpZmYgLS1naXQgYS9uZXQvdW5peC9hZl91bml4LmggYi9uZXQvdW5peC9hZl91bml4LmhcXG5pbmRleCA4MTE5ZGJlZWYzYTNjNi4uZmM0YzU5ODkzMTI0Y2MgMTAwNjQ0XFxuLS0tIGEvbmV0L3VuaXgvYWZfdW5peC5oXFxuKysrIGIvbmV0L3VuaXgvYWZfdW5peC5oXFxuQEAgLTMwLDcgKzMwLDYgQEAgdm9pZCB1bml4X3VwZGF0ZV9lZGdlcyhzdHJ1Y3QgdW5peF9zb2NrICpyZWNlaXZlcik7XFxuIGludCB1bml4X3ByZXBhcmVfZnBsKHN0cnVjdCBzY21fZnBfbGlzdCAqZnBsKTtcXG4gdm9pZCB1bml4X2Rlc3Ryb3lfZnBsKHN0cnVjdCBzY21fZnBfbGlzdCAqZnBsKTtcXG4gdm9pZCB1bml4X3BlZWtfZnBsKHN0cnVjdCBzY21fZnBfbGlzdCAqZnBsKTtcXG4tdm9pZCB1bml4X3NjaGVkdWxlX2djKHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcik7XFxuIFxcbiAvKiBTT0NLX0RJQUcgKi9cXG4gbG9uZyB1bml4X2lucV9sZW4oc3RydWN0IHNvY2sgKnNrKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L3VuaXgvZ2FyYmFnZS5jIGIvbmV0L3VuaXgvZ2FyYmFnZS5jXFxuaW5kZXggMDc4MzU1NWUyNTI2NjAuLmQ0NmFlYjlkMjA1MTg5IDEwMDY0NFxcbi0tLSBhL25ldC91bml4L2dhcmJhZ2UuY1xcbisrKyBiL25ldC91bml4L2dhcmJhZ2UuY1xcbkBAIC0zMDAsOCArMzAwLDYgQEAgaW50IHVuaXhfcHJlcGFyZV9mcGwoc3RydWN0IHNjbV9mcF9saXN0ICpmcGwpXFxuIFxcdGlmICghZnBsLVxcdTAwM2VlZGdlcylcXG4gXFx0XFx0Z290byBlcnI7XFxuIFxcbi1cXHR1bml4X3NjaGVkdWxlX2djKGZwbC1cXHUwMDNldXNlcik7XFxuLVxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuIGVycjpcXG5AQCAtNjM3LDIzICs2MzUsMTEgQEAgc3RhdGljIHZvaWQgdW5peF9nYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcbiBzdGF0aWMgREVDTEFSRV9XT1JLKHVuaXhfZ2Nfd29yaywgdW5peF9nYyk7XFxuIFxcbi0jZGVmaW5lIFVOSVhfSU5GTElHSFRfU0FORV9VU0VSXFx0XFx0KFNDTV9NQVhfRkQgKiA4KVxcbi1cXG4tdm9pZCB1bml4X3NjaGVkdWxlX2djKHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcilcXG4rdm9pZCB1bml4X3NjaGVkdWxlX2djKHZvaWQpXFxuIHtcXG4gXFx0aWYgKFJFQURfT05DRSh1bml4X2dyYXBoX3N0YXRlKSA9PSBVTklYX0dSQVBIX05PVF9DWUNMSUMpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdC8qIFBlbmFsaXNlIHVzZXJzIHdobyB3YW50IHRvIHNlbmQgQUZfVU5JWCBzb2NrZXRzXFxuLVxcdCAqIGJ1dCB3aG9zZSBzb2NrZXRzIGhhdmUgbm90IGJlZW4gcmVjZWl2ZWQgeWV0Llxcbi1cXHQgKi9cXG4tXFx0aWYgKHVzZXIgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgIFJFQURfT05DRSh1c2VyLVxcdTAwM2V1bml4X2luZmxpZ2h0KSBcXHUwMDNjIFVOSVhfSU5GTElHSFRfU0FORV9VU0VSKVxcbi1cXHRcXHRyZXR1cm47XFxuLVxcbiBcXHRpZiAoIVJFQURfT05DRShnY19pbl9wcm9ncmVzcykpXFxuIFxcdFxcdHF1ZXVlX3dvcmsoc3lzdGVtX2RmbF93cSwgXFx1MDAyNnVuaXhfZ2Nfd29yayk7XFxuLVxcbi1cXHRpZiAodXNlciBcXHUwMDI2XFx1MDAyNiBSRUFEX09OQ0UodW5peF9ncmFwaF9jeWNsaWNfc2NjcykpXFxuLVxcdFxcdGZsdXNoX3dvcmsoXFx1MDAyNnVuaXhfZ2Nfd29yayk7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDg6NDM6MDYuNzAxNTQ2MzIxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTYzNzkzMjY5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVTklYXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidW5peF9zY2hlZHVsZV9nY1wiLFxuICAgIFwidW5peF9yZWxlYXNlX3NvY2tcIixcbiAgICBcInVuaXhfcHJlcGFyZV9mcGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQUZfVU5JWCBnYXJiYWdlIGNvbGxlY3Rpb24gc2NoZWR1bGluZyBsb2dpYy4gSXQgcmVtb3ZlcyB0aGUgdXNlciBwZW5hbHR5IGFuZCBzeW5jaHJvbm91cyBmbHVzaCBmcm9tIGB1bml4X3NjaGVkdWxlX2djYCwgYW5kIGNoYW5nZXMgaXQgdG8gYmUgY2FsbGVkIGZyb20gYGRvX2V4aXRgIChhZnRlciBgZXhpdF9maWxlc2ApIGluc3RlYWQgb2YgYHVuaXhfcHJlcGFyZV9mcGxgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JrIC8gcHJvY2VzcyBleGl0IGxvZ2ljIHRoYXQgYWZmZWN0cyBob3cgYW5kIHdoZW4gQUZfVU5JWCBnYXJiYWdlIGNvbGxlY3Rpb24gaXMgdHJpZ2dlcmVkLCB3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zIG9yIG1lbW9yeSBsZWFrcyBpZiBub3QgcHJvcGVybHkgaGFuZGxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjMGQ0Y2E3MDVjMmYzZDcwMDdjMjc1ODE3YTlmY2JiMWZlNGQ4YjlhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMDg6NDM6MDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9hZl91bml4LmggYi9pbmNsdWRlL25ldC9hZl91bml4LmhcbmluZGV4IDM0ZjUzZGRlNjVjZWEyLi4xZGZkYzA3MjAwNTJjZiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2FmX3VuaXguaFxuKysrIGIvaW5jbHVkZS9uZXQvYWZfdW5peC5oXG5AQCAtMTQsMTEgKzE0LDE2IEBAXG4gXG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX1VOSVgpXG4gc3RydWN0IHVuaXhfc29jayAqdW5peF9nZXRfc29ja2V0KHN0cnVjdCBmaWxlICpmaWxwKTtcbit2b2lkIHVuaXhfc2NoZWR1bGVfZ2Modm9pZCk7XG4gI2Vsc2VcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCB1bml4X3NvY2sgKnVuaXhfZ2V0X3NvY2tldChzdHJ1Y3QgZmlsZSAqZmlscClcbiB7XG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4rXG4rc3RhdGljIGlubGluZSB2b2lkIHVuaXhfc2NoZWR1bGVfZ2Modm9pZClcbit7XG4rfVxuICNlbmRpZlxuIFxuIHN0cnVjdCB1bml4X2FkZHJlc3Mge1xuZGlmZiAtLWdpdCBhL2tlcm5lbC9leGl0LmMgYi9rZXJuZWwvZXhpdC5jXG5pbmRleCAyYzBiMWMwMjkyMGY0Ni4uNzY0YTkxMWYxMTFlY2MgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvZXhpdC5jXG4rKysgYi9rZXJuZWwvZXhpdC5jXG5AQCAtNzEsNiArNzEsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3Vud2luZF9kZWZlcnJlZC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdWFjY2Vzcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcGlkZnMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY25ldC9hZl91bml4LmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcdTAwM2N1YXBpL2xpbnV4L3dhaXQuaFx1MDAzZVxuIFxuQEAgLTEwMDIsNiArMTAwMyw3IEBAIHZvaWQgX19ub3JldHVybiBkb19leGl0KGxvbmcgY29kZSlcbiBcdGV4aXRfc2VtKHRzayk7XG4gXHRleGl0X3NobSh0c2spO1xuIFx0ZXhpdF9maWxlcyh0c2spO1xuK1x0dW5peF9zY2hlZHVsZV9nYygpOyAvKiBNdXN0IGJlIGFmdGVyIGV4aXRfZmlsZXMoKSAqL1xuIFx0ZXhpdF9mcyh0c2spO1xuIFx0aWYgKGdyb3VwX2RlYWQpXG4gXHRcdGRpc2Fzc29jaWF0ZV9jdHR5KDEpO1xuZGlmZiAtLWdpdCBhL25ldC91bml4L2FmX3VuaXguYyBiL25ldC91bml4L2FmX3VuaXguY1xuaW5kZXggZjdhOWQ1NWVlZThhMTIuLjc1OWRiNzM0YTg2NjQ2IDEwMDY0NFxuLS0tIGEvbmV0L3VuaXgvYWZfdW5peC5jXG4rKysgYi9uZXQvdW5peC9hZl91bml4LmNcbkBAIC03MzMsNyArNzMzLDcgQEAgc3RhdGljIHZvaWQgdW5peF9yZWxlYXNlX3NvY2soc3RydWN0IHNvY2sgKnNrLCBpbnQgZW1icmlvbilcbiBcbiBcdC8qIC0tLS0gU29ja2V0IGlzIGRlYWQgbm93IGFuZCBtb3N0IHByb2JhYmx5IGRlc3Ryb3llZCAtLS0tICovXG4gXG4tXHR1bml4X3NjaGVkdWxlX2djKE5VTEwpO1xuK1x0dW5peF9zY2hlZHVsZV9nYygpO1xuIH1cbiBcbiBzdHJ1Y3QgdW5peF9wZWVyY3JlZCB7XG5kaWZmIC0tZ2l0IGEvbmV0L3VuaXgvYWZfdW5peC5oIGIvbmV0L3VuaXgvYWZfdW5peC5oXG5pbmRleCA4MTE5ZGJlZWYzYTNjNi4uZmM0YzU5ODkzMTI0Y2MgMTAwNjQ0XG4tLS0gYS9uZXQvdW5peC9hZl91bml4LmhcbisrKyBiL25ldC91bml4L2FmX3VuaXguaFxuQEAgLTMwLDcgKzMwLDYgQEAgdm9pZCB1bml4X3VwZGF0ZV9lZGdlcyhzdHJ1Y3QgdW5peF9zb2NrICpyZWNlaXZlcik7XG4gaW50IHVuaXhfcHJlcGFyZV9mcGwoc3RydWN0IHNjbV9mcF9saXN0ICpmcGwpO1xuIHZvaWQgdW5peF9kZXN0cm95X2ZwbChzdHJ1Y3Qgc2NtX2ZwX2xpc3QgKmZwbCk7XG4gdm9pZCB1bml4X3BlZWtfZnBsKHN0cnVjdCBzY21fZnBfbGlzdCAqZnBsKTtcbi12b2lkIHVuaXhfc2NoZWR1bGVfZ2Moc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyKTtcbiBcbiAvKiBTT0NLX0RJQUcgKi9cbiBsb25nIHVuaXhfaW5xX2xlbihzdHJ1Y3Qgc29jayAqc2spO1xuZGlmZiAtLWdpdCBhL25ldC91bml4L2dhcmJhZ2UuYyBiL25ldC91bml4L2dhcmJhZ2UuY1xuaW5kZXggMDc4MzU1NWUyNTI2NjAuLmQ0NmFlYjlkMjA1MTg5IDEwMDY0NFxuLS0tIGEvbmV0L3VuaXgvZ2FyYmFnZS5jXG4rKysgYi9uZXQvdW5peC9nYXJiYWdlLmNcbkBAIC0zMDAsOCArMzAwLDYgQEAgaW50IHVuaXhfcHJlcGFyZV9mcGwoc3RydWN0IHNjbV9mcF9saXN0ICpmcGwpXG4gXHRpZiAoIWZwbC1cdTAwM2VlZGdlcylcbiBcdFx0Z290byBlcnI7XG4gXG4tXHR1bml4X3NjaGVkdWxlX2djKGZwbC1cdTAwM2V1c2VyKTtcbi1cbiBcdHJldHVybiAwO1xuIFxuIGVycjpcbkBAIC02MzcsMjMgKzYzNSwxMSBAQCBzdGF0aWMgdm9pZCB1bml4X2djKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcbiBzdGF0aWMgREVDTEFSRV9XT1JLKHVuaXhfZ2Nfd29yaywgdW5peF9nYyk7XG4gXG4tI2RlZmluZSBVTklYX0lORkxJR0hUX1NBTkVfVVNFUlx0XHQoU0NNX01BWF9GRCAqIDgpXG4tXG4tdm9pZCB1bml4X3NjaGVkdWxlX2djKHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcilcbit2b2lkIHVuaXhfc2NoZWR1bGVfZ2Modm9pZClcbiB7XG4gXHRpZiAoUkVBRF9PTkNFKHVuaXhfZ3JhcGhfc3RhdGUpID09IFVOSVhfR1JBUEhfTk9UX0NZQ0xJQylcbiBcdFx0cmV0dXJuO1xuIFxuLVx0LyogUGVuYWxpc2UgdXNlcnMgd2hvIHdhbnQgdG8gc2VuZCBBRl9VTklYIHNvY2tldHNcbi1cdCAqIGJ1dCB3aG9zZSBzb2NrZXRzIGhhdmUgbm90IGJlZW4gcmVjZWl2ZWQgeWV0LlxuLVx0ICovXG4tXHRpZiAodXNlciBcdTAwMjZcdTAwMjZcbi1cdCAgICBSRUFEX09OQ0UodXNlci1cdTAwM2V1bml4X2luZmxpZ2h0KSBcdTAwM2MgVU5JWF9JTkZMSUdIVF9TQU5FX1VTRVIpXG4tXHRcdHJldHVybjtcbi1cbiBcdGlmICghUkVBRF9PTkNFKGdjX2luX3Byb2dyZXNzKSlcbiBcdFx0cXVldWVfd29yayhzeXN0ZW1fZGZsX3dxLCBcdTAwMjZ1bml4X2djX3dvcmspO1xuLVxuLVx0aWYgKHVzZXIgXHUwMDI2XHUwMDI2IFJFQURfT05DRSh1bml4X2dyYXBoX2N5Y2xpY19zY2NzKSlcbi1cdFx0Zmx1c2hfd29yayhcdTAwMjZ1bml4X2djX3dvcmspO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA4OjQzOjA2LjcwMTU0ODYwMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzNjI5MDE4NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gQUZfVU5JWCBHYXJiYWdlIENvbGxlY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIHR3ZWFraW5nIGhvdyB0aGUgQUZfVU5JWCBnYXJiYWdlIGNvbGxlY3Rpb24gcnVucy4gSW5pdGlhbGx5LCBgdW5peF9zY2hlZHVsZV9nYygpYCB3YXMgYmVpbmcgY2FsbGVkIGZyb20gYHVuaXhfcHJlcGFyZV9mcGwoKWAgYW5kIGB1bml4X3JlbGVhc2Vfc29jaygpYC4gTm93LCBpdCdzIGJlZW4gbW92ZWQgYW5kIGlzIGNhbGxlZCBmcm9tIGBkb19leGl0KClgIHdpdGhpbiB0aGUga2VybmVsJ3MgZXhpdCByb3V0aW5lLCBhbmQgaXQncyBzdGlsbCBjYWxsZWQgZnJvbSBgdW5peF9yZWxlYXNlX3NvY2soKWAuIFRoZSBzaWduYXR1cmUgb2YgYHVuaXhfc2NoZWR1bGVfZ2MoKWAgaGFzIGJlZW4gY2hhbmdlZCBmcm9tIHRha2luZyBhIGB1c2VyX3N0cnVjdGAgYXJndW1lbnQgdG8gYmVpbmcgdm9pZC4gVGhpcyBpcyBpbnRlcmVzdGluZy4gSW5zaWRlIHRoZSBhY3R1YWwgYHVuaXhfc2NoZWR1bGVfZ2MoKWAgZnVuY3Rpb24sIHRoZXkndmUgYWxzbyByZW1vdmVkIHNvbWUgbG9naWMgcmVsYXRlZCB0byB1c2VyIHBlbmFsdGllcyBhbmQgc3luY2hyb25vdXMgZmx1c2hpbmcsIHNpbXBsaWZ5aW5nIHRoaW5ncy5cblxuTGV0J3MgZGl2ZSBpbnRvIHRoZSBwYXRjaCBkZXRhaWxzLiBJIGNhbiBzZWUgdGhlIGhlYWRlciBmaWxlIGBpbmNsdWRlL25ldC9hZl91bml4LmhgIHdhcyB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIG5ldyBzaWduYXR1cmUgb2YgYHVuaXhfc2NoZWR1bGVfZ2Modm9pZClgLiBUaGVuLCBga2VybmVsL2V4aXQuY2Agbm93IGNhbGxzIGB1bml4X3NjaGVkdWxlX2djKClgIGluIGBkb19leGl0KClgICphZnRlciogdGhlIGBleGl0X2ZpbGVzKHRzaylgIGNhbGwuIEdvb2QgcGxhY2VtZW50LCBtYWtpbmcgc3VyZSB0aG9zZSBmaWxlcyBhcmUgZnVsbHkgY2xvc2VkLiBJbiBgbmV0L3VuaXgvYWZfdW5peC5jYCwgYHVuaXhfcmVsZWFzZV9zb2NrKClgIGhhcyBiZWVuIHVwZGF0ZWQgdG8gY2FsbCB0aGUgbmV3IGZ1bmN0aW9uIHNpZ25hdHVyZS4gVGhlIG9sZCBzaWduYXR1cmUgaXMgcmVtb3ZlZCBmcm9tIGBuZXQvdW5peC9hZl91bml4LmhgLCBhbmQgYG5ldC91bml4L2dhcmJhZ2UuY2AgcmVmbGVjdHMgdGhlIGxvZ2ljIGNoYW5nZXMgYnkgcmVtb3ZpbmcgdGhlIGNhbGwgaW4gYHVuaXhfcHJlcGFyZV9mcGwoKWAsIHVwZGF0aW5nIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUsIGFuZCByZW1vdmluZyB0aGUgdXNlciBwZW5hbHR5IGZyb20gaW5zaWRlIHRoZSBmdW5jdGlvbiBpdHNlbGYuXG5cblRoaXMgaXMgYSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uLCBhZmZlY3RpbmcgY29yZSBrZXJuZWwgYmVoYXZpb3IuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGlzICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLiBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBzeW1ib2xzIHRvIHRhcmdldC4gUmlnaHQgbm93IEknbSB0aGlua2luZyBgdW5peF9zY2hlZHVsZV9nY2AsIGBkb19leGl0YCwgYHVuaXhfcmVsZWFzZV9zb2NrYCwgYW5kIGB1bml4X3ByZXBhcmVfZnBsYC4gV2FpdCwgYGRvX2V4aXRgIGlzIGEgdmVyeSBob3QgcGF0aDsgSSdtIGdvaW5nIHRvIHJlbW92ZSBpdCwgYW5kIGhvbmUgaW4gb24gYHVuaXhfc2NoZWR1bGVfZ2NgLiBNYXliZSBJIHNob3VsZCBjb25zaWRlciBgdW5peF9nY2AgYXMgd2VsbD8gSSB3aWxsIGhhdmUgdG8gaW52ZXN0aWdhdGUgdGhhdC5cblxuQ29uZmlnLXdpc2UsIGl0IGxvb2tzIGxpa2UgYENPTkZJR19VTklYYCBpcyB0aGUgbWFpbiBlbmFibGVyIGZvciBBRl9VTklYLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBzaG91bGQgdmVyaWZ5IHRoYXQgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjb25maWdzIHRoYXQgYXJlIHJlbGF0ZWQsIHRob3VnaC4gQmV0dGVyIGNoZWNrIGBuZXQvdW5peC9LY29uZmlnYCB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTE0LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDg6NDM6MTUuMDY0NDUyNjcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzE2OTY5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVU5JWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdW5peC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC91bml4L0tjb25maWctNS1cXG5uZXQvdW5peC9LY29uZmlnOjY6Y29uZmlnIFVOSVhcXG5uZXQvdW5peC9LY29uZmlnLTctXFx0Ym9vbCBcXFwiVW5peCBkb21haW4gc29ja2V0c1xcXCJcXG4tLVxcbm5ldC91bml4L0tjb25maWc9MTk9Y29uZmlnXFx0QUZfVU5JWF9PT0JcXG4tLVxcbm5ldC91bml4L0tjb25maWctMjUtXFxubmV0L3VuaXgvS2NvbmZpZzoyNjpjb25maWcgVU5JWF9ESUFHXFxubmV0L3VuaXgvS2NvbmZpZy0yNy1cXHR0cmlzdGF0ZSBcXFwiVU5JWDogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwODo0MzoxNS4xNjc2MjgzMThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzg2OTYxNzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVU5JWCBTb2NrZXQgR2FyYmFnZSBDb2xsZWN0aW9uKipcblxuT2theSwgc28gdGhlIGBVTklYYCBjb25maWcgb3B0aW9uIGlzIHRoZSBrZXkgaGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBnYXJiYWdlIGNvbGxlY3Rpb24gZm9yIFVOSVggc29ja2V0cyBpcyBzY2hlZHVsZWQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNoZWNrIGBrZXJuZWwvZXhpdC5jYCBzaW5jZSBpdCdzIGludm9sdmVkIHdpdGggcHJvY2VzcyB0ZXJtaW5hdGlvbi4gSSB3YW50IHRvIHNlZSBpZiBgdW5peF9zY2hlZHVsZV9nYygpYCBpcyB1bmNvbmRpdGlvbmFsbHkgaW52b2tlZC4gWWVwLCBpdCdzIGNhbGxlZCB3aXRoaW4gYGRvX2V4aXQoKWAsIGFzIEkgZXhwZWN0ZWQuXG5cbkhhbmcgb24uLi4gSSdtIGdldHRpbmcgYSBsaXR0bGUgYWhlYWQgb2YgbXlzZWxmLiBBIHF1aWNrIGNoZWNrIG9mIGBpbmNsdWRlL25ldC9hZl91bml4LmhgIHJldmVhbHMgdGhhdCBgdW5peF9zY2hlZHVsZV9nYygpYCBpcyBhY3R1YWxseSBkZWZpbmVkIHRoZXJlLCBidXQgaXQgYXBwZWFycyB0byBiZSBhIHN0dWIgaWYgYENPTkZJR19VTklYYCBpc24ndCBlbmFibGVkLiBUaGF0J3MgZ29vZCB0byBrbm93LiBOb3cgSSBuZWVkIHRvIGFjdHVhbGx5IHNlZSB0aGUgZ2FyYmFnZSBjb2xsZWN0aW9uIGxvZ2ljIGl0c2VsZi4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGBuZXQvdW5peC9nYXJiYWdlLmNgIHRvIHVuZGVyc3RhbmQgd2hhdCdzICpyZWFsbHkqIGhhcHBlbmluZyB3aGVuIGB1bml4X3NjaGVkdWxlX2djYCBpcyBhY3R1YWxseSB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDcyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA4OjQzOjE4Ljk1NDU5MjU3NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjA4MDMxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2b2lkIHVuaXhfc2NoZWR1bGVfZ2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3VuaXgvZ2FyYmFnZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC91bml4L2dhcmJhZ2UuYz02MzY9c3RhdGljIERFQ0xBUkVfV09SSyh1bml4X2djX3dvcmssIHVuaXhfZ2MpO1xcbm5ldC91bml4L2dhcmJhZ2UuYy02MzctXFxubmV0L3VuaXgvZ2FyYmFnZS5jOjYzODp2b2lkIHVuaXhfc2NoZWR1bGVfZ2Modm9pZClcXG5uZXQvdW5peC9nYXJiYWdlLmMtNjM5LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDg6NDM6MTkuMDQwNjg0NzE1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTE2NDU0NjI4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEFGX1VOSVggR2FyYmFnZSBDb2xsZWN0aW9uIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHNjYW4gZmxhZ2dlZCBgdW5peF9zY2hlZHVsZV9nY2AsIGB1bml4X2djYCwgYHVuaXhfcmVsZWFzZV9zb2NrYCwgYW5kIGB1bml4X3ByZXBhcmVfZnBsYCBhcyBwb3RlbnRpYWwgYXJlYXMgb2YgaW50ZXJlc3QuIEhvd2V2ZXIsIEkgaW1tZWRpYXRlbHkgbm90ZWQgdGhhdCBgdW5peF9wcmVwYXJlX2ZwbGAgaGFkIGB1bml4X3NjaGVkdWxlX2djYCByZW1vdmVkLCBzbyB3aGlsZSBpdCdzIHBhcnQgb2YgdGhlIGRpZmYsIGl0J3MgcHJvYmFibHkgbm90IHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UuIEl0IHNlZW1zIGB1bml4X3NjaGVkdWxlX2djYCBpdHNlbGYgaXMgdGhlIGtleSBzY2hlZHVsaW5nIGZ1bmN0aW9uLiBBbmQsIHllcywgYHVuaXhfcmVsZWFzZV9zb2NrYCBpcyBpbmRlZWQgbW9kaWZpZWQsIHNvIGl0J3MgcmVsZXZhbnQuIEknbSBleGNsdWRpbmcgYGRvX2V4aXRgIGJlY2F1c2UsIGV2ZW4gdGhvdWdoIGl0J3MgbW9kaWZpZWQsIGl0J3MgYSBob3QgcGF0aCwgc28gZm9jdXNpbmcgb24gaXQgd291bGQgYmUgYSBkaXN0cmFjdGlvbi5cblxuTm93LCBgdW5peF9nY2DigKYgbGV0J3Mgc2VlLiBBaCwgeWVzLCBgdW5peF9nY2AgaXMgdGhlIGFjdHVhbCB3b3JrZXIgZnVuY3Rpb24sIHRoZSBnYXJiYWdlIGNvbGxlY3RvciBpdHNlbGYsIGNhbGxlZCBieSBgdW5peF9zY2hlZHVsZV9nY2AuIFNlZW1zIGxpa2UgYSBzZW5zaWJsZSBmb2N1cywgdGhlbi5cblxuTGV0J3MgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLiBPbmx5IGBDT05GSUdfVU5JWGAgYXBwZWFycy5cblxuQWxyaWdodCwgbGV0J3MgdmVyaWZ5IHJlYWNoYWJpbGl0eSBvZiBgdW5peF9zY2hlZHVsZV9nY2AuIFllcywgaXQncyBjYWxsZWQgZnJvbSBib3RoIGBkb19leGl0YCBhbmQgYHVuaXhfcmVsZWFzZV9zb2NrYC4gU28sIGEgcHJvY2VzcyBleGl0IGFuZCBBRl9VTklYIHNvY2tldCByZWxlYXNlIGFyZSB0aGUgdHJpZ2dlcnMuIGBkb19leGl0YCBpcyBjYWxsZWQgYWZ0ZXIgYGV4aXRfZmlsZXNgLlxuXG5TbywgdGhlIGNydXggb2YgdGhpcyBwYXRjaCBpcyB0aGUgbW9kaWZpY2F0aW9uIG9mIHRoZSBBRl9VTklYIGdhcmJhZ2UgY29sbGVjdGlvbiBzY2hlZHVsaW5nLiBJdCdzIHJlbW92aW5nIHNvbWV0aGluZyBmcm9tIGB1bml4X3NjaGVkdWxlX2djYCBhbmQgY2hhbmdpbmcgaXQgdG8gYmUgY2FsbGVkIGZyb20gYGRvX2V4aXRgIChhZnRlciBgZXhpdF9maWxlc2ApIGluc3RlYWQgb2YgYHVuaXhfcHJlcGFyZV9mcGxgLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JrL3Byb2Nlc3MgZXhpdCBsb2dpYyB0aGF0IHNpZ25pZmljYW50bHkgYWZmZWN0cyB0aGUgdGltaW5nIGFuZCB0cmlnZ2VyIG9mIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uLiBQb3RlbnRpYWxseSwgdGhpcyBjb3VsZCBpbnRyb2R1Y2UgcmFjZSBjb25kaXRpb25zIG9yIG1lbW9yeSBsZWFrcyBpZiBub3QgaGFuZGxlZCB3aXRoIGV4dHJlbWUgY2FyZS4gVGhpcyBjaGFuZ2UgbmVlZHMgY2FyZWZ1bCBzY3J1dGlueS5cblxuTXkgY29uZmlybWVkIGZvY3VzIHN5bWJvbHMgYXJlOiBgdW5peF9zY2hlZHVsZV9nY2AsIGB1bml4X3JlbGVhc2Vfc29ja2AsIGFuZCBgdW5peF9wcmVwYXJlX2ZwbGAuIFRoZSByZWxldmFudCBjb25maWcgaXMgYFVOSVhgLiBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBVTklYYCBpcyBhIGJvb2xlYW4uXG5cbk9rYXksIEknbSByZWFkeSB0byBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTE2LCJPdXRwdXRUb2tlbnMiOjE1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwODo0MzoyOC4yMDUyMzMyOTdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDI0MTQ0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVU5JWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVuaXhfc2NoZWR1bGVfZ2NcIixcbiAgICBcInVuaXhfcmVsZWFzZV9zb2NrXCIsXG4gICAgXCJ1bml4X3ByZXBhcmVfZnBsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uIHNjaGVkdWxpbmcgbG9naWMuIEl0IHJlbW92ZXMgdGhlIHVzZXIgcGVuYWx0eSBhbmQgc3luY2hyb25vdXMgZmx1c2ggZnJvbSBgdW5peF9zY2hlZHVsZV9nY2AsIGFuZCBjaGFuZ2VzIGl0IHRvIGJlIGNhbGxlZCBmcm9tIGBkb19leGl0YCAoYWZ0ZXIgYGV4aXRfZmlsZXNgKSBpbnN0ZWFkIG9mIGB1bml4X3ByZXBhcmVfZnBsYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29yayAvIHByb2Nlc3MgZXhpdCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IGFuZCB3aGVuIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uIGlzIHRyaWdnZXJlZCwgd2hpY2ggY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucyBvciBtZW1vcnkgbGVha3MgaWYgbm90IHByb3Blcmx5IGhhbmRsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVU5JWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVuaXhfc2NoZWR1bGVfZ2NcIixcbiAgICBcInVuaXhfcmVsZWFzZV9zb2NrXCIsXG4gICAgXCJ1bml4X3ByZXBhcmVfZnBsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uIHNjaGVkdWxpbmcgbG9naWMuIEl0IHJlbW92ZXMgdGhlIHVzZXIgcGVuYWx0eSBhbmQgc3luY2hyb25vdXMgZmx1c2ggZnJvbSBgdW5peF9zY2hlZHVsZV9nY2AsIGFuZCBjaGFuZ2VzIGl0IHRvIGJlIGNhbGxlZCBmcm9tIGBkb19leGl0YCAoYWZ0ZXIgYGV4aXRfZmlsZXNgKSBpbnN0ZWFkIG9mIGB1bml4X3ByZXBhcmVfZnBsYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29yayAvIHByb2Nlc3MgZXhpdCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IGFuZCB3aGVuIEFGX1VOSVggZ2FyYmFnZSBjb2xsZWN0aW9uIGlzIHRyaWdnZXJlZCwgd2hpY2ggY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIHJhY2UgY29uZGl0aW9ucyBvciBtZW1vcnkgbGVha3MgaWYgbm90IHByb3Blcmx5IGhhbmRsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5c4mw[1] Phase: Succeeded StartedAt: 2026-07-17 08:44:11 +0000 UTC FinishedAt: 2026-07-17 08:44:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-17 08:44:11 +0000 UTC FinishedAt: 2026-07-17 08:44:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[2] Phase: Succeeded StartedAt: 2026-07-17 08:44:11 +0000 UTC FinishedAt: 2026-07-17 12:46:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-17 08:44:11 +0000 UTC FinishedAt: 2026-07-17 12:46:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-17 08:44:11 +0000 UTC FinishedAt: 2026-07-17 08:44:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-17 08:44:11 +0000 UTC FinishedAt: 2026-07-17 08:44:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5c4mw/series-workflow5c4mw-convert-artifact-2610747982/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-17 08:44:31 +0000 UTC FinishedAt: 2026-07-17 09:07:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-17 08:44:31 +0000 UTC FinishedAt: 2026-07-17 09:07:11 +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:*11a710ff-d085-4784-a5fb-411f590a6364,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-workflow5c4mw/series-workflow5c4mw-convert-artifact-2610747982/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": "2e7a8465-ef85-48cc-91b8-542af2cf781c", "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-workflow5c4mw/series-workflow5c4mw-build-action-77808308/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-17 08:44:31 +0000 UTC FinishedAt: 2026-07-17 09:07:01 +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:*11a710ff-d085-4784-a5fb-411f590a6364,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-workflow5c4mw/series-workflow5c4mw-convert-artifact-2610747982/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": "2e7a8465-ef85-48cc-91b8-542af2cf781c", "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-workflow5c4mw/series-workflow5c4mw-build-action-77808308/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-17 09:07:11 +0000 UTC FinishedAt: 2026-07-17 09:07:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-17 09:07:11 +0000 UTC FinishedAt: 2026-07-17 09:07:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-17 09:07:11 +0000 UTC FinishedAt: 2026-07-17 09:07:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-17 09:07:11 +0000 UTC FinishedAt: 2026-07-17 09:07:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5c4mw/series-workflow5c4mw-convert-artifact-2770980929/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-17 09:07:21 +0000 UTC FinishedAt: 2026-07-17 09:09:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-17 09:07:21 +0000 UTC FinishedAt: 2026-07-17 09:09:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2e7a8465-ef85-48cc-91b8-542af2cf781c,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-workflow5c4mw/series-workflow5c4mw-build-action-77808308/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-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-17 09:09:28 +0000 UTC FinishedAt: 2026-07-17 09:09:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-17 09:09:28 +0000 UTC FinishedAt: 2026-07-17 09:09:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-17 09:09:28 +0000 UTC FinishedAt: 2026-07-17 09:42:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-17 09:09:28 +0000 UTC FinishedAt: 2026-07-17 09:42:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*11a710ff-d085-4784-a5fb-411f590a6364,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-workflow5c4mw/series-workflow5c4mw-convert-artifact-2770980929/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": "5b1d01b2-3e46-4414-8502-96b763dc9263", "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-workflow5c4mw/series-workflow5c4mw-build-action-1259071949/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-17 09:09:28 +0000 UTC FinishedAt: 2026-07-17 09:42:12 +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:*11a710ff-d085-4784-a5fb-411f590a6364,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-workflow5c4mw/series-workflow5c4mw-convert-artifact-2770980929/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": "5b1d01b2-3e46-4414-8502-96b763dc9263", "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-workflow5c4mw/series-workflow5c4mw-build-action-1259071949/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-17 09:42:22 +0000 UTC FinishedAt: 2026-07-17 09:42:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-17 09:42:22 +0000 UTC FinishedAt: 2026-07-17 09:42:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-17 09:42:22 +0000 UTC FinishedAt: 2026-07-17 09:44:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-17 09:42:22 +0000 UTC FinishedAt: 2026-07-17 09:43:58 +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:*5b1d01b2-3e46-4414-8502-96b763dc9263,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-workflow5c4mw/series-workflow5c4mw-build-action-1259071949/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-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-17 09:44:08 +0000 UTC FinishedAt: 2026-07-17 12:46:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-17 09:44:08 +0000 UTC FinishedAt: 2026-07-17 12:46:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*2e7a8465-ef85-48cc-91b8-542af2cf781c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5b1d01b2-3e46-4414-8502-96b763dc9263,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-workflow5c4mw/series-workflow5c4mw-build-action-77808308/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-workflow5c4mw/series-workflow5c4mw-build-action-1259071949/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-17 09:44:08 +0000 UTC FinishedAt: 2026-07-17 09:44:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-17 09:44:08 +0000 UTC FinishedAt: 2026-07-17 09:44:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5c4mw/series-workflow5c4mw-convert-artifact-176163798/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-17 09:44:08 +0000 UTC FinishedAt: 2026-07-17 09:44:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-17 09:44:08 +0000 UTC FinishedAt: 2026-07-17 09:44:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-17 09:44:08 +0000 UTC FinishedAt: 2026-07-17 09:44:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-17 09:44:18 +0000 UTC FinishedAt: 2026-07-17 12:46:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5c4mw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["unix_schedule_gc","unix_release_sock","unix_prepare_fpl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fce2dfa773ced15f27dd27cd0b482a7473cdcf2a","config_name":"upstream-apparmor-kasan.config","enable_configs":["UNIX"],"series_id":"125996de-23ef-4fdc-ba93-52c6ed83675e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-17 09:44:18 +0000 UTC FinishedAt: 2026-07-17 12:45:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2e7a8465-ef85-48cc-91b8-542af2cf781c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5b1d01b2-3e46-4414-8502-96b763dc9263,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-workflow5c4mw/series-workflow5c4mw-build-action-77808308/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-workflow5c4mw/series-workflow5c4mw-build-action-1259071949/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-workflow5c4mw/series-workflow5c4mw-convert-artifact-176163798/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,}