Name: series-workflow7wd7m Phase: Succeeded StartedAt: 2026-07-06 20:49:34 +0000 UTC FinishedAt: 2026-07-07 01:18:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[0] Phase: Succeeded StartedAt: 2026-07-06 20:49:34 +0000 UTC FinishedAt: 2026-07-06 21:09:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[0].run-triage Phase: Succeeded StartedAt: 2026-07-06 20:49:34 +0000 UTC FinishedAt: 2026-07-06 21:09:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_VADDR", "DAMON_PADDR", "DAMON_SYSFS", "DAMON_RECLAIM", "DAMON_LRU_SORT", "SAMPLE_DAMON_WSSE", "SAMPLE_DAMON_PRCL", "SAMPLE_DAMON_MTIER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_VADDR", "DAMON_PADDR", "DAMON_SYSFS", "DAMON_RECLAIM", "DAMON_LRU_SORT", "SAMPLE_DAMON_WSSE", "SAMPLE_DAMON_PRCL", "SAMPLE_DAMON_MTIER" ], "series_id": "b1da44b7-5270-4ee2-9560-b707989dc9ae" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_start", "damon_stop", "damon_call", "damon_lru_sort_turn", "damon_reclaim_turn", "damon_sysfs_turn_damon_off" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1JFQ0xBSU0mIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX1dTU0UmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX1BSQ0wmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX01USUVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fc3RvcCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jYWxsJiMzNDssCiAgICAmIzM0O2RhbW9uX2xydV9zb3J0X3R1cm4mIzM0OywKICAgICYjMzQ7ZGFtb25fcmVjbGFpbV90dXJuJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIERBTU9OIChEYXRhIEFjY2VzcyBNT05pdG9yKSBsb2dpYywgY2hhbmdpbmcgdGhlIHJldHVybiB0eXBlIG9mIGBkYW1vbl9zdG9wYCB0byBgdm9pZGAgYW5kIHVwZGF0aW5nIGl0cyBjYWxsZXJzLiBJdCBhbHNvIG1vZGlmaWVzIGBkYW1vbl9jYWxsYCB0byB3YWl0IGZvciB0aGUgY29udGV4dCB0byBzdG9wIGlmIHRoZSBjYWxsIGlzIGNhbmNlbGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMTowNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGRiMTg4ZDkyNjc5Mjc3ZWQ4MGM3OTIxZDE5ODc5YmY1MzE5MjFmYzhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCA2IDIxOjA1OjQ2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGFtb24uaCBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxuaW5kZXggMjY2MTIzMWMwYWU4MmUuLjE5YjdlODM5YmRlMGI0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9kYW1vbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbkBAIC0xMDcwLDcgJiM0MzsxMDcwLDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZGFtb25fbWF4X25yX2FjY2Vzc2VzKGNvbnN0IHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnNcbiBcbiBib29sIGRhbW9uX2luaXRpYWxpemVkKHZvaWQpO1xuIGludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKTtcbi1pbnQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpO1xuJiM0Mzt2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKTtcbiBib29sIGRhbW9uX2lzX3J1bm5pbmcoc3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcbiBpbnQgZGFtb25fa2RhbW9uZF9waWQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcbiBcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcbmluZGV4IDNjNWE0NmUxYzA3OWEzLi4zOTBlMDBiMzY4NWVmYyAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jXG5AQCAtMTkxNywxNiAmIzQzOzE5MTcsMTcgQEAgaW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpXG4gXHRcdHJ1bm5pbmdfZXhjbHVzaXZlX2N0eHMgPSB0cnVlO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRhbW9uX2xvY2spO1xuIFxuJiM0MztcdGlmIChpICE9IG5yX2N0eHMpXG4mIzQzO1x0XHRkYW1vbl9zdG9wKGN0eHMsIGkpO1xuJiM0MztcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuIC8qXG4gICogX19kYW1vbl9zdG9wKCkgLSBTdG9wcyBtb25pdG9yaW5nIG9mIGEgZ2l2ZW4gY29udGV4dC5cbiAgKiBAY3R4Olx0bW9uaXRvcmluZyBjb250ZXh0XG4tICpcbi0gKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXG4gICovXG4tc3RhdGljIGludCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuJiM0MztzdGF0aWMgdm9pZCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuIHtcbiBcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrO1xuIFxuQEAgLTE5MzYsMzEgJiM0MzsxOTM3LDIzIEBAIHN0YXRpYyBpbnQgX19kYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbiBcdFx0Z2V0X3Rhc2tfc3RydWN0KHRzayk7XG4gXHRcdG11dGV4X3VubG9jayhcdTAwMjZjdHgtXHUwMDNla2RhbW9uZF9sb2NrKTtcbiBcdFx0a3RocmVhZF9zdG9wX3B1dCh0c2spO1xuLVx0XHRyZXR1cm4gMDtcbiYjNDM7XHRcdHJldHVybjtcbiBcdH1cbiBcdG11dGV4X3VubG9jayhcdTAwMjZjdHgtXHUwMDNla2RhbW9uZF9sb2NrKTtcbi1cbi1cdHJldHVybiAtRVBFUk07XG4gfVxuIFxuIC8qKlxuICAqIGRhbW9uX3N0b3AoKSAtIFN0b3BzIHRoZSBtb25pdG9yaW5ncyBmb3IgYSBnaXZlbiBncm91cCBvZiBjb250ZXh0cy5cbiAgKiBAY3R4czpcdGFuIGFycmF5IG9mIHRoZSBwb2ludGVycyBmb3IgY29udGV4dHMgdG8gc3RvcCBtb25pdG9yaW5nXG4gICogQG5yX2N0eHM6XHRzaXplIG9mIEBjdHhzXG4tICpcbi0gKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXG4gICovXG4taW50IGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxuJiM0Mzt2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxuIHtcbi1cdGludCBpLCBlcnIgPSAwO1xuJiM0MztcdGludCBpO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfY3R4czsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9jdHhzOyBpJiM0MzsmIzQzOylcbiBcdFx0LyogbnJfcnVubmluZ19jdHhzIGlzIGRlY3JlbWVudGVkIGluIGtkYW1vbmRfZm4gKi9cbi1cdFx0ZXJyID0gX19kYW1vbl9zdG9wKGN0eHNbaV0pO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdGJyZWFrO1xuLVx0fVxuLVx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdF9fZGFtb25fc3RvcChjdHhzW2ldKTtcbiB9XG4gXG4gLyoqXG5AQCAtMjAxNyw2ICYjNDM7MjAxMCw4IEBAIGludCBkYW1vbl9rZGFtb25kX3BpZChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4gICogQGN0eCBoYXMgc3VjY2VlZGVkLiAgT3RoZXJ3aXNlLCB0aGlzIGZ1bmN0aW9uIGNvdWxkIGZhbGwgaW50byBhbiBpbmRlZmluaXRlXG4gICogd2FpdC5cbiAgKlxuJiM0MzsgKiBXaGVuIHRoaXMgZnVuY3Rpb24gaXMgZmFpbGVkLCB0aGUgQGN0eCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0b3BwZWQuXG4mIzQzOyAqXG4gICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxuICAqL1xuIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcbkBAIC0yMDI5LDcgJiM0MzsyMDI0LDcgQEAgaW50IGRhbW9uX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sKVxuIFx0bXV0ZXhfbG9jayhcdTAwMjZjdHgtXHUwMDNlY2FsbF9jb250cm9sc19sb2NrKTtcbiBcdGlmIChjdHgtXHUwMDNlY2FsbF9jb250cm9sc19vYnNvbGV0ZSkge1xuIFx0XHRtdXRleF91bmxvY2soXHUwMDI2Y3R4LVx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XG4tXHRcdHJldHVybiAtRUNBTkNFTEVEO1xuJiM0MztcdFx0Z290byBjYW5jZWxlZDtcbiBcdH1cbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2Y29udHJvbC1cdTAwM2VsaXN0LCBcdTAwMjZjdHgtXHUwMDNlY2FsbF9jb250cm9scyk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2Y3R4LVx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XG5AQCAtMjAzNyw4ICYjNDM7MjAzMiwxNCBAQCBpbnQgZGFtb25fY2FsbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgKmNvbnRyb2wpXG4gXHRcdHJldHVybiAwO1xuIFx0d2FpdF9mb3JfY29tcGxldGlvbihcdTAwMjZjb250cm9sLVx1MDAzZWNvbXBsZXRpb24pO1xuIFx0aWYgKGNvbnRyb2wtXHUwMDNlY2FuY2VsZWQpXG4tXHRcdHJldHVybiAtRUNBTkNFTEVEO1xuJiM0MztcdFx0Z290byBjYW5jZWxlZDtcbiBcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7Y2FuY2VsZWQ6XG4mIzQzO1x0d2hpbGUgKGRhbW9uX2lzX3J1bm5pbmcoY3R4KSlcbiYjNDM7XHRcdHNjaGVkdWxlX3RpbWVvdXRfaWRsZShtc2Vjc190b19qaWZmaWVzKDEwMCkpO1xuJiM0MztcdHJldHVybiAtRUNBTkNFTEVEO1xuJiM0MztcbiB9XG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vbHJ1X3NvcnQuYyBiL21tL2RhbW9uL2xydV9zb3J0LmNcbmluZGV4IDJkZDBjZDBkMjYyNzMxLi5lOGMzODlhZDMyMjZmNyAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2xydV9zb3J0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2xydV9zb3J0LmNcbkBAIC00MDksOCAmIzQzOzQwOSwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X3R1cm4oYm9vbCBvbilcbiB7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKCFvbilcbi1cdFx0cmV0dXJuIGRhbW9uX3N0b3AoXHUwMDI2Y3R4LCAxKTtcbiYjNDM7XHRpZiAoIW9uKSB7XG4mIzQzO1x0XHRkYW1vbl9zdG9wKFx1MDAyNmN0eCwgMSk7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4gXG4gXHRlcnIgPSBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzKCk7XG4gXHRpZiAoZXJyKVxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3JlY2xhaW0uYyBiL21tL2RhbW9uL3JlY2xhaW0uY1xuaW5kZXggNjQ2OWIyNWNjMzRmOTIuLjA5ZTk0MWQ3NWY2N2RkIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vcmVjbGFpbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9yZWNsYWltLmNcbkBAIC0zMzIsOCAmIzQzOzMzMiwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX3JlY2xhaW1fdHVybihib29sIG9uKVxuIHtcbiBcdGludCBlcnI7XG4gXG4tXHRpZiAoIW9uKVxuLVx0XHRyZXR1cm4gZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuJiM0MztcdGlmICghb24pIHtcbiYjNDM7XHRcdGRhbW9uX3N0b3AoXHUwMDI2Y3R4LCAxKTtcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiBcbiBcdGVyciA9IGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycygpO1xuIFx0aWYgKGVycilcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9zeXNmcy5jIGIvbW0vZGFtb24vc3lzZnMuY1xuaW5kZXggYjY1NjUxNDk4ZTBkMTQuLjZkN2UzNmM5ZTUwOWQyIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vc3lzZnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vc3lzZnMuY1xuQEAgLTIyNjIsMTIgJiM0MzsyMjYyLDEzIEBAIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmYoc3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKmtkYW1vbmQpXG4ge1xuIFx0aWYgKCFrZGFtb25kLVx1MDAzZWRhbW9uX2N0eClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHRyZXR1cm4gZGFtb25fc3RvcChcdTAwMjZrZGFtb25kLVx1MDAzZWRhbW9uX2N0eCwgMSk7XG4mIzQzO1x0ZGFtb25fc3RvcChcdTAwMjZrZGFtb25kLVx1MDAzZWRhbW9uX2N0eCwgMSk7XG4gXHQvKlxuIFx0ICogVG8gYWxsb3cgdXNlcnMgc2hvdyBmaW5hbCBtb25pdG9yaW5nIHJlc3VsdHMgb2YgYWxyZWFkeSB0dXJuZWQtb2ZmXG4gXHQgKiBEQU1PTiwgd2UgZnJlZSBrZGFtb25kLVx1MDAzZWRhbW9uX2N0eCBpbiBuZXh0XG4gXHQgKiBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29uKCksIG9yIGtkYW1vbmRzX25yX3N0b3JlKClcbiBcdCAqL1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoaW50ICgqZm4pKHZvaWQgKmRhdGEpLFxuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuaW5kZXggZTU2N2Y0ZWRkODBlYTcuLmFjOWMyNGI5MmVhZDg0IDEwMDY0NFxuLS0tIGEvc2FtcGxlcy9kYW1vbi9tdGllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9zYW1wbGVzL2RhbW9uL210aWVyLmNcbkBAIC0xOTMsOCAmIzQzOzE5Myw2IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KHZvaWQpXG4gXHRpZiAoIWVycilcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHRpZiAoZGFtb25faXNfcnVubmluZyhjdHhzWzBdKSlcbi1cdFx0ZGFtb25fc3RvcChjdHhzLCAxKTtcbiBcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMF0pO1xuIFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4c1sxXSk7XG4gXHRyZXR1cm4gZXJyO1xuQEAgLTIwMiw4ICYjNDM7MjAwLDcgQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZClcbiBcbiBzdGF0aWMgdm9pZCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RvcCh2b2lkKVxuIHtcbi1cdGRhbW9uX3N0b3AoY3R4cywgMSk7XG4tXHRkYW1vbl9zdG9wKFx1MDAyNmN0eHNbMV0sIDEpO1xuJiM0MztcdGRhbW9uX3N0b3AoY3R4cywgMik7XG4gXHRkYW1vbl9kZXN0cm95X2N0eChjdHhzWzBdKTtcbiBcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMV0pO1xuIH1cbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3ByY2wuYyBiL3NhbXBsZXMvZGFtb24vcHJjbC5jXG5pbmRleCBlZGVhZTE0NWM0YThhZi4uODQyMDk5YmQ2MjI4NjEgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL2RhbW9uL3ByY2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcbkBAIC0xMTMsMTAgJiM0MzsxMTMsOCBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9wcmNsX3N0YXJ0KHZvaWQpXG4gXG4gXHRyZXBlYXRfY2FsbF9jb250cm9sLmRhdGEgPSBjdHg7XG4gXHRlcnIgPSBkYW1vbl9jYWxsKGN0eCwgXHUwMDI2cmVwZWF0X2NhbGxfY29udHJvbCk7XG4tXHRpZiAoZXJyKSB7XG4tXHRcdGRhbW9uX3N0b3AoXHUwMDI2Y3R4LCAxKTtcbiYjNDM7XHRpZiAoZXJyKVxuIFx0XHRkYW1vbl9kZXN0cm95X2N0eChjdHgpO1xuLVx0fVxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi93c3NlLmMgYi9zYW1wbGVzL2RhbW9uL3dzc2UuY1xuaW5kZXggZmY1ZThhODkwZjQ0OGMuLjM3ZmQ1ZGEyMDE1ODg1IDEwMDY0NFxuLS0tIGEvc2FtcGxlcy9kYW1vbi93c3NlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvZGFtb24vd3NzZS5jXG5AQCAtOTMsMTAgJiM0Mzs5Myw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3dzc2Vfc3RhcnQodm9pZClcbiBcdH1cbiBcdHJlcGVhdF9jYWxsX2NvbnRyb2wuZGF0YSA9IGN0eDtcbiBcdGVyciA9IGRhbW9uX2NhbGwoY3R4LCBcdTAwMjZyZXBlYXRfY2FsbF9jb250cm9sKTtcbi1cdGlmIChlcnIpIHtcbi1cdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuJiM0MztcdGlmIChlcnIpXG4gXHRcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eCk7XG4tXHR9XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMTowNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9WQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7LAogICAgJiMzNDtEQU1PTl9SRUNMQUlNJiMzNDssCiAgICAmIzM0O0RBTU9OX0xSVV9TT1JUJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9XU1NFJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9QUkNMJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9NVElFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9uX3N0YXJ0JiMzNDssCiAgICAmIzM0O2RhbW9uX3N0b3AmIzM0OywKICAgICYjMzQ7ZGFtb25fY2FsbCYjMzQ7LAogICAgJiMzNDtkYW1vbl9scnVfc29ydF90dXJuJiMzNDssCiAgICAmIzM0O2RhbW9uX3JlY2xhaW1fdHVybiYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBEQU1PTiAoRGF0YSBBY2Nlc3MgTU9OaXRvcikgbG9naWMsIGNoYW5naW5nIHRoZSByZXR1cm4gdHlwZSBvZiBgZGFtb25fc3RvcGAgdG8gYHZvaWRgIGFuZCB1cGRhdGluZyBpdHMgY2FsbGVycy4gSXQgYWxzbyBtb2RpZmllcyBgZGFtb25fY2FsbGAgdG8gd2FpdCBmb3IgdGhlIGNvbnRleHQgdG8gc3RvcCBpZiB0aGUgY2FsbCBpcyBjYW5jZWxlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRiMTg4ZDkyNjc5Mjc3ZWQ4MGM3OTIxZDE5ODc5YmY1MzE5MjFmYzgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCA2IDIxOjA1OjQ2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kYW1vbi5oIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oCmluZGV4IDI2NjEyMzFjMGFlODJlLi4xOWI3ZTgzOWJkZTBiNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9kYW1vbi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZGFtb24uaApAQCAtMTA3MCw3ICYjNDM7MTA3MCw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGRhbW9uX21heF9ucl9hY2Nlc3Nlcyhjb25zdCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzCiAKIGJvb2wgZGFtb25faW5pdGlhbGl6ZWQodm9pZCk7CiBpbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSk7Ci1pbnQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpOwomIzQzO3ZvaWQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpOwogYm9vbCBkYW1vbl9pc19ydW5uaW5nKHN0cnVjdCBkYW1vbl9jdHggKmN0eCk7CiBpbnQgZGFtb25fa2RhbW9uZF9waWQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KTsKIApkaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jCmluZGV4IDNjNWE0NmUxYzA3OWEzLi4zOTBlMDBiMzY4NWVmYyAxMDA2NDQKLS0tIGEvbW0vZGFtb24vY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2NvcmUuYwpAQCAtMTkxNywxNiAmIzQzOzE5MTcsMTcgQEAgaW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpCiAJCXJ1bm5pbmdfZXhjbHVzaXZlX2N0eHMgPSB0cnVlOwogCW11dGV4X3VubG9jaygmYW1wO2RhbW9uX2xvY2spOwogCiYjNDM7CWlmIChpICE9IG5yX2N0eHMpCiYjNDM7CQlkYW1vbl9zdG9wKGN0eHMsIGkpOwomIzQzOwogCXJldHVybiBlcnI7CiB9CiAKIC8qCiAgKiBfX2RhbW9uX3N0b3AoKSAtIFN0b3BzIG1vbml0b3Jpbmcgb2YgYSBnaXZlbiBjb250ZXh0LgogICogQGN0eDoJbW9uaXRvcmluZyBjb250ZXh0Ci0gKgotICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLgogICovCi1zdGF0aWMgaW50IF9fZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpCiYjNDM7c3RhdGljIHZvaWQgX19kYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKmN0eCkKIHsKIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzazsKIApAQCAtMTkzNiwzMSAmIzQzOzE5MzcsMjMgQEAgc3RhdGljIGludCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KQogCQlnZXRfdGFza19zdHJ1Y3QodHNrKTsKIAkJbXV0ZXhfdW5sb2NrKCZhbXA7Y3R4LSZndDtrZGFtb25kX2xvY2spOwogCQlrdGhyZWFkX3N0b3BfcHV0KHRzayk7Ci0JCXJldHVybiAwOwomIzQzOwkJcmV0dXJuOwogCX0KIAltdXRleF91bmxvY2soJmFtcDtjdHgtJmd0O2tkYW1vbmRfbG9jayk7Ci0KLQlyZXR1cm4gLUVQRVJNOwogfQogCiAvKioKICAqIGRhbW9uX3N0b3AoKSAtIFN0b3BzIHRoZSBtb25pdG9yaW5ncyBmb3IgYSBnaXZlbiBncm91cCBvZiBjb250ZXh0cy4KICAqIEBjdHhzOglhbiBhcnJheSBvZiB0aGUgcG9pbnRlcnMgZm9yIGNvbnRleHRzIHRvIHN0b3AgbW9uaXRvcmluZwogICogQG5yX2N0eHM6CXNpemUgb2YgQGN0eHMKLSAqCi0gKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuCiAgKi8KLWludCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cykKJiM0Mzt2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKQogewotCWludCBpLCBlcnIgPSAwOwomIzQzOwlpbnQgaTsKIAotCWZvciAoaSA9IDA7IGkgJmx0OyBucl9jdHhzOyBpJiM0MzsmIzQzOykgewomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgbnJfY3R4czsgaSYjNDM7JiM0MzspCiAJCS8qIG5yX3J1bm5pbmdfY3R4cyBpcyBkZWNyZW1lbnRlZCBpbiBrZGFtb25kX2ZuICovCi0JCWVyciA9IF9fZGFtb25fc3RvcChjdHhzW2ldKTsKLQkJaWYgKGVycikKLQkJCWJyZWFrOwotCX0KLQlyZXR1cm4gZXJyOwomIzQzOwkJX19kYW1vbl9zdG9wKGN0eHNbaV0pOwogfQogCiAvKioKQEAgLTIwMTcsNiAmIzQzOzIwMTAsOCBAQCBpbnQgZGFtb25fa2RhbW9uZF9waWQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KQogICogQGN0eCBoYXMgc3VjY2VlZGVkLiAgT3RoZXJ3aXNlLCB0aGlzIGZ1bmN0aW9uIGNvdWxkIGZhbGwgaW50byBhbiBpbmRlZmluaXRlCiAgKiB3YWl0LgogICoKJiM0MzsgKiBXaGVuIHRoaXMgZnVuY3Rpb24gaXMgZmFpbGVkLCB0aGUgQGN0eCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0b3BwZWQuCiYjNDM7ICoKICAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZS4KICAqLwogaW50IGRhbW9uX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sKQpAQCAtMjAyOSw3ICYjNDM7MjAyNCw3IEBAIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbCkKIAltdXRleF9sb2NrKCZhbXA7Y3R4LSZndDtjYWxsX2NvbnRyb2xzX2xvY2spOwogCWlmIChjdHgtJmd0O2NhbGxfY29udHJvbHNfb2Jzb2xldGUpIHsKIAkJbXV0ZXhfdW5sb2NrKCZhbXA7Y3R4LSZndDtjYWxsX2NvbnRyb2xzX2xvY2spOwotCQlyZXR1cm4gLUVDQU5DRUxFRDsKJiM0MzsJCWdvdG8gY2FuY2VsZWQ7CiAJfQogCWxpc3RfYWRkX3RhaWwoJmFtcDtjb250cm9sLSZndDtsaXN0LCAmYW1wO2N0eC0mZ3Q7Y2FsbF9jb250cm9scyk7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7Y3R4LSZndDtjYWxsX2NvbnRyb2xzX2xvY2spOwpAQCAtMjAzNyw4ICYjNDM7MjAzMiwxNCBAQCBpbnQgZGFtb25fY2FsbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgKmNvbnRyb2wpCiAJCXJldHVybiAwOwogCXdhaXRfZm9yX2NvbXBsZXRpb24oJmFtcDtjb250cm9sLSZndDtjb21wbGV0aW9uKTsKIAlpZiAoY29udHJvbC0mZ3Q7Y2FuY2VsZWQpCi0JCXJldHVybiAtRUNBTkNFTEVEOwomIzQzOwkJZ290byBjYW5jZWxlZDsKIAlyZXR1cm4gMDsKJiM0MzsKJiM0MztjYW5jZWxlZDoKJiM0MzsJd2hpbGUgKGRhbW9uX2lzX3J1bm5pbmcoY3R4KSkKJiM0MzsJCXNjaGVkdWxlX3RpbWVvdXRfaWRsZShtc2Vjc190b19qaWZmaWVzKDEwMCkpOwomIzQzOwlyZXR1cm4gLUVDQU5DRUxFRDsKJiM0MzsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuYwppbmRleCAyZGQwY2QwZDI2MjczMS4uZThjMzg5YWQzMjI2ZjcgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2xydV9zb3J0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vbHJ1X3NvcnQuYwpAQCAtNDA5LDggJiM0Mzs0MDksMTAgQEAgc3RhdGljIGludCBkYW1vbl9scnVfc29ydF90dXJuKGJvb2wgb24pCiB7CiAJaW50IGVycjsKIAotCWlmICghb24pCi0JCXJldHVybiBkYW1vbl9zdG9wKCZhbXA7Y3R4LCAxKTsKJiM0MzsJaWYgKCFvbikgewomIzQzOwkJZGFtb25fc3RvcCgmYW1wO2N0eCwgMSk7CiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJfQogCiAJZXJyID0gZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycygpOwogCWlmIChlcnIpCmRpZmYgLS1naXQgYS9tbS9kYW1vbi9yZWNsYWltLmMgYi9tbS9kYW1vbi9yZWNsYWltLmMKaW5kZXggNjQ2OWIyNWNjMzRmOTIuLjA5ZTk0MWQ3NWY2N2RkIDEwMDY0NAotLS0gYS9tbS9kYW1vbi9yZWNsYWltLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vcmVjbGFpbS5jCkBAIC0zMzIsOCAmIzQzOzMzMiwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX3JlY2xhaW1fdHVybihib29sIG9uKQogewogCWludCBlcnI7CiAKLQlpZiAoIW9uKQotCQlyZXR1cm4gZGFtb25fc3RvcCgmYW1wO2N0eCwgMSk7CiYjNDM7CWlmICghb24pIHsKJiM0MzsJCWRhbW9uX3N0b3AoJmFtcDtjdHgsIDEpOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KIAogCWVyciA9IGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycygpOwogCWlmIChlcnIpCmRpZmYgLS1naXQgYS9tbS9kYW1vbi9zeXNmcy5jIGIvbW0vZGFtb24vc3lzZnMuYwppbmRleCBiNjU2NTE0OThlMGQxNC4uNmQ3ZTM2YzllNTA5ZDIgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL3N5c2ZzLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vc3lzZnMuYwpAQCAtMjI2MiwxMiAmIzQzOzIyNjIsMTMgQEAgc3RhdGljIGludCBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZihzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZCkKIHsKIAlpZiAoIWtkYW1vbmQtJmd0O2RhbW9uX2N0eCkKIAkJcmV0dXJuIC1FSU5WQUw7Ci0JcmV0dXJuIGRhbW9uX3N0b3AoJmFtcDtrZGFtb25kLSZndDtkYW1vbl9jdHgsIDEpOwomIzQzOwlkYW1vbl9zdG9wKCZhbXA7a2RhbW9uZC0mZ3Q7ZGFtb25fY3R4LCAxKTsKIAkvKgogCSAqIFRvIGFsbG93IHVzZXJzIHNob3cgZmluYWwgbW9uaXRvcmluZyByZXN1bHRzIG9mIGFscmVhZHkgdHVybmVkLW9mZgogCSAqIERBTU9OLCB3ZSBmcmVlIGtkYW1vbmQtJmd0O2RhbW9uX2N0eCBpbiBuZXh0CiAJICogZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vbigpLCBvciBrZGFtb25kc19ucl9zdG9yZSgpCiAJICovCiYjNDM7CXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoaW50ICgqZm4pKHZvaWQgKmRhdGEpLApkaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi9tdGllci5jIGIvc2FtcGxlcy9kYW1vbi9tdGllci5jCmluZGV4IGU1NjdmNGVkZDgwZWE3Li5hYzljMjRiOTJlYWQ4NCAxMDA2NDQKLS0tIGEvc2FtcGxlcy9kYW1vbi9tdGllci5jCiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuYwpAQCAtMTkzLDggJiM0MzsxOTMsNiBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCh2b2lkKQogCWlmICghZXJyKQogCQlyZXR1cm4gMDsKIAotCWlmIChkYW1vbl9pc19ydW5uaW5nKGN0eHNbMF0pKQotCQlkYW1vbl9zdG9wKGN0eHMsIDEpOwogCWRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMF0pOwogCWRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMV0pOwogCXJldHVybiBlcnI7CkBAIC0yMDIsOCAmIzQzOzIwMCw3IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KHZvaWQpCiAKIHN0YXRpYyB2b2lkIGRhbW9uX3NhbXBsZV9tdGllcl9zdG9wKHZvaWQpCiB7Ci0JZGFtb25fc3RvcChjdHhzLCAxKTsKLQlkYW1vbl9zdG9wKCZhbXA7Y3R4c1sxXSwgMSk7CiYjNDM7CWRhbW9uX3N0b3AoY3R4cywgMik7CiAJZGFtb25fZGVzdHJveV9jdHgoY3R4c1swXSk7CiAJZGFtb25fZGVzdHJveV9jdHgoY3R4c1sxXSk7CiB9CmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3ByY2wuYyBiL3NhbXBsZXMvZGFtb24vcHJjbC5jCmluZGV4IGVkZWFlMTQ1YzRhOGFmLi44NDIwOTliZDYyMjg2MSAxMDA2NDQKLS0tIGEvc2FtcGxlcy9kYW1vbi9wcmNsLmMKJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi9wcmNsLmMKQEAgLTExMywxMCAmIzQzOzExMyw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3ByY2xfc3RhcnQodm9pZCkKIAogCXJlcGVhdF9jYWxsX2NvbnRyb2wuZGF0YSA9IGN0eDsKIAllcnIgPSBkYW1vbl9jYWxsKGN0eCwgJmFtcDtyZXBlYXRfY2FsbF9jb250cm9sKTsKLQlpZiAoZXJyKSB7Ci0JCWRhbW9uX3N0b3AoJmFtcDtjdHgsIDEpOwomIzQzOwlpZiAoZXJyKQogCQlkYW1vbl9kZXN0cm95X2N0eChjdHgpOwotCX0KIAlyZXR1cm4gZXJyOwogfQogCmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3dzc2UuYyBiL3NhbXBsZXMvZGFtb24vd3NzZS5jCmluZGV4IGZmNWU4YTg5MGY0NDhjLi4zN2ZkNWRhMjAxNTg4NSAxMDA2NDQKLS0tIGEvc2FtcGxlcy9kYW1vbi93c3NlLmMKJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi93c3NlLmMKQEAgLTkzLDEwICYjNDM7OTMsOCBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV93c3NlX3N0YXJ0KHZvaWQpCiAJfQogCXJlcGVhdF9jYWxsX2NvbnRyb2wuZGF0YSA9IGN0eDsKIAllcnIgPSBkYW1vbl9jYWxsKGN0eCwgJmFtcDtyZXBlYXRfY2FsbF9jb250cm9sKTsKLQlpZiAoZXJyKSB7Ci0JCWRhbW9uX3N0b3AoJmFtcDtjdHgsIDEpOwomIzQzOwlpZiAoZXJyKQogCQlkYW1vbl9kZXN0cm95X2N0eChjdHgpOwotCX0KIAlyZXR1cm4gZXJyOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MDgKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAyNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgREFNT04gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF04oCZcyB0d2Vha2luZyB0aGUgRGF0YSBBY2Nlc3MgTW9uaXRvciAoREFNT04pIHN1YnN5c3RlbSB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbC4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhleSYjMzk7cmUgY2hhbmdpbmcgdGhlIHJldHVybiB0eXBlIG9mIGBkYW1vbl9zdG9wYCB0byBgdm9pZGAgaW5zdGVhZCBvZiBgaW50YCwgYW5kIGFkanVzdGluZyBgZGFtb25fY2FsbGAgdG8gaGFuZGxlIGNvbnRleHQgc3RvcHBpbmcgbW9yZSBncmFjZWZ1bGx5IGlmIHRoZSBjYWxsIGlzIGNhbmNlbGVkLiBGaW5lLiBUaGV5JiMzOTt2ZSBhbHNvIHVwZGF0ZWQgdGhlIGNhbGxlcnMgb2YgYGRhbW9uX3N0b3BgIGFjcm9zcyB0aGUgY29kZWJhc2Ug4oCTIGBscnVfc29ydC5jYCwgYHJlY2xhaW0uY2AsIGBzeXNmcy5jYCwgYW5kIHNldmVyYWwgc2FtcGxlIGZpbGVzLgoKR2l2ZW4gbXkga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwsIEkgY2FuIGNvbmZpcm0gdGhhdCBEQU1PTiBpdHNlbGYgaXMgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWw7IGl0JiMzOTtzIGEgY3JpdGljYWwgY29tcG9uZW50IGluIG1lbW9yeSBtYW5hZ2VtZW50LCBzbyBpdCBoYXMgdG8gYmUuIFRoZSBjaGFuZ2VzICphcmUqIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBhcyB0aGUgcGF0Y2ggc3VtbWFyeSBpbmRpY2F0ZXMuCgpNeSBndXQgZmVlbGluZyBpcyB0aGlzIGlzIGEgcmVsYXRpdmVseSBsb3ctcmlzayBtb2RpZmljYXRpb24sIGJ1dCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggYSBjb3JlIGNvbXBvbmVudCwgc28gd2UgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSYjMzk7ZCBkZWZpbml0ZWx5IHdhbnQgdG8gZnV6eiB0aGlzLiBJdCYjMzk7cyB0aW1lIHRvIGNoZWNrIHdoYXQgdGhlIHJlbGV2YW50IENPTkZJRyBvcHRpb25zIGFyZSBmb3IgREFNT04uIE15IGJlc3QgYmV0IGlzIHRvIHVzZSBgZ3JlcHBlcmAgYW5kIHNlYXJjaCBgbW0vZGFtb24vS2NvbmZpZ2Agb3IgYG1tL0tjb25maWdgIGZvciBgQ09ORklHX0RBTU9OYCBvciBhbnl0aGluZyBzaW1pbGFyIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgY29uZmlndXJhdGlvbiBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEQU1PTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTM9bWVudSBcJiMzNDtEYXRhIEFjY2VzcyBNb25pdG9yaW5nXCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnLTQtXG5tbS9kYW1vbi9LY29uZmlnOjU6Y29uZmlnIERBTU9OXG5tbS9kYW1vbi9LY29uZmlnLTYtXHRib29sIFwmIzM0O0RBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTQtXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcbm1tL2RhbW9uL0tjb25maWctMTYtXHRib29sIFwmIzM0O0NoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0yNS1cbm1tL2RhbW9uL0tjb25maWc6MjY6Y29uZmlnIERBTU9OX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctMjctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTM3LVxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcbm1tL2RhbW9uL0tjb25maWctMzktXHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNDYtXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxubW0vZGFtb24vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNTUtXG5tbS9kYW1vbi9LY29uZmlnOjU2OmNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTU3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTY3LVxubW0vZGFtb24vS2NvbmZpZzo2ODpjb25maWcgREFNT05fU1lTRlNcbm1tL2RhbW9uL0tjb25maWctNjktXHRib29sIFwmIzM0O0RBTU9OIHN5c2ZzIGludGVyZmFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNzUtXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctODctXG5tbS9kYW1vbi9LY29uZmlnOjg4OmNvbmZpZyBEQU1PTl9SRUNMQUlNXG5tbS9kYW1vbi9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCByZWNsYWltIChEQU1PTl9SRUNMQUlNKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctOTktXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcbm1tL2RhbW9uL0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xMDctXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxubW0vZGFtb24vS2NvbmZpZy0xMDktXHRib29sIFwmIzM0O0J1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cbm1tL2RhbW9uL0tjb25maWc6MTE2OmNvbmZpZyBEQU1PTl9TVEFUX0VOQUJMRURfREVGQVVMVFxubW0vZGFtb24vS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0VuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzE5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgREFNT04gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgREFNT04gcGF0Y2gsIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGJlaW5nIHR3ZWFrZWQuIEkgc2VlIHdlIGhhdmUgREFNT04gaXRzZWxmLCBhbmQgdGhlbiBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHZpcnR1YWwgYW5kIHBoeXNpY2FsIGFkZHJlc3NlcyAoYERBTU9OX1ZBRERSYCwgYERBTU9OX1BBRERSYCksIHRoZSBzeXN0ZW0gZmlsZSBzeXN0ZW0gaW50ZXJmYWNlIChgREFNT05fU1lTRlNgKSwgcmVjbGFpbSBiZWhhdmlvciAoYERBTU9OX1JFQ0xBSU1gKSwgYW5kIExSVSBzb3J0aW5nIChgREFNT05fTFJVX1NPUlRgKS4gVGhpcyBnaXZlcyBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gYXNzZXNzIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlcy4KCk5leHQsIEkgbmVlZCB0byBsb29rIGF0IHRoZSBtZWF0IG9mIHRoZSBjb2RlLiBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG9uIHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQuIFRoZSBwYXRjaCB0b3VjaGVzIGBkYW1vbl9zdGFydGAsIGBfX2RhbW9uX3N0b3BgLCBgZGFtb25fc3RvcGAsIGBkYW1vbl9jYWxsYCwgYGRhbW9uX2xydV9zb3J0X3R1cm5gLCBgZGFtb25fcmVjbGFpbV90dXJuYCwgYW5kIGBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZmAuIEkmIzM5O2xsIHdhbnQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGVzZSBmdW5jdGlvbnMuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBkYW1vbl9jYWxsYCBhbmQgYGRhbW9uX3N0b3BgIGFuZCB0aGVuIHNlZSBob3cgdGhleSBhcmUgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vbl9jYWxsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz05NTk9c3RhdGljIGJvb2wgZGFtb25fdmFsaWRfaW50ZXJ2YWxzX2dvYWwoc3RydWN0IGRhbW9uX2F0dHJzICphdHRycylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtOTg1LSAqIHNldHVwIG9mIGRhbW9uX2N0eCBiZWZvcmUgY2FsbGluZyBkYW1vbl9zdGFydCgpLiAgU29tZSBvZiB0aGUgQVBJIGNhbGxlcnNcbm1tL2RhbW9uL2NvcmUuYzo5ODY6ICogYWxzbyBpbmRpcmVjdGx5IGNhbGwgdGhpcyBmdW5jdGlvbiB2aWEgZGFtb25fY2FsbCgpIC1cdTAwM2UgZGFtb25fY29tbWl0KCkgZm9yXG5tbS9kYW1vbi9jb3JlLmMtOTg3LSAqIG9ubGluZSBwYXJhbWV0ZXJzIHVwZGF0ZXMuICBGaW5hbGx5LCBrZGFtb25kX2ZuKCkgaXRzZWxmIHVzZSB0aGlzIGZvclxuLS1cbm1tL2RhbW9uL2NvcmUuYz0xMDg1PXN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTA1LSAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBmcm9tIHBhcmFtZXRlcnMtdXBkYXRlIHNhZmUgY29udGV4dCwgbGlrZVxubW0vZGFtb24vY29yZS5jOjExMDY6ICogZGFtb25fY2FsbCgpLlxubW0vZGFtb24vY29yZS5jLTExMDctICovXG4tLVxubW0vZGFtb24vY29yZS5jPTE3MjI9c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX25ld190ZXN0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QpXG4tLVxubW0vZGFtb24vY29yZS5jLTE3NDgtICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGZyb20gcGFyYW1ldGVycy11cGRhdGUgc2FmZSBjb250ZXh0LCBsaWtlXG5tbS9kYW1vbi9jb3JlLmM6MTc0OTogKiBkYW1vbl9jYWxsKCkuXG5tbS9kYW1vbi9jb3JlLmMtMTc1MC0gKi9cbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTk4MT1pbnQgZGFtb25fa2RhbW9uZF9waWQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xOTkyLS8qKlxubW0vZGFtb24vY29yZS5jOjE5OTM6ICogZGFtb25fY2FsbCgpIC0gSW52b2tlIGEgZ2l2ZW4gZnVuY3Rpb24gb24gREFNT04gd29ya2VyIHRocmVhZCAoa2RhbW9uZCkuXG5tbS9kYW1vbi9jb3JlLmMtMTk5NC0gKiBAY3R4Olx0REFNT04gY29udGV4dCB0byBjYWxsIHRoZSBmdW5jdGlvbiBmb3IuXG4tLVxubW0vZGFtb24vY29yZS5jLTE5OTctICogQXNrIERBTU9OIHdvcmtlciB0aHJlYWQgKGtkYW1vbmQpIG9mIEBjdHggdG8gY2FsbCBhIGZ1bmN0aW9uIHdpdGggYW5cbm1tL2RhbW9uL2NvcmUuYzoxOTk4OiAqIGFyZ3VtZW50IGRhdGEgdGhhdCByZXNwZWN0aXZlbHkgcGFzc2VkIHZpYSBcdTAwMjZkYW1vbl9jYWxsX2NvbnRyb2wtXHUwMDNlZm4gYW5kXG5tbS9kYW1vbi9jb3JlLmM6MTk5OTogKiBcdTAwMjZkYW1vbl9jYWxsX2NvbnRyb2wtXHUwMDNlZGF0YSBvZiBAY29udHJvbC4gIElmIFx1MDAyNmRhbW9uX2NhbGxfY29udHJvbC1cdTAwM2VyZXBlYXQgb2Zcbm1tL2RhbW9uL2NvcmUuYy0yMDAwLSAqIEBjb250cm9sIGlzIHVuc2V0LCBmdXJ0aGVyIHdhaXQgdW50aWwgdGhlIGtkYW1vbmQgZmluaXNoZXMgaGFuZGxpbmcgb2YgdGhlXG4tLVxubW0vZGFtb24vY29yZS5jLTIwMDYtICogc3luY2hyb25pemF0aW9uLiAgVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gd2lsbCBiZSBzYXZlZCBpblxubW0vZGFtb24vY29yZS5jOjIwMDc6ICogXHUwMDI2ZGFtb25fY2FsbF9jb250cm9sLVx1MDAzZXJldHVybl9jb2RlLlxubW0vZGFtb24vY29yZS5jLTIwMDgtICpcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjAxNi0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyMDE3OmludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcbm1tL2RhbW9uL2NvcmUuYy0yMDE4LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzUyNz1zdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTM1MzItLypcbm1tL2RhbW9uL2NvcmUuYzozNTMzOiAqIGtkYW1vbmRfY2FsbCgpIC0gaGFuZGxlIGRhbW9uX2NhbGxfY29udHJvbCBvYmplY3RzLlxubW0vZGFtb24vY29yZS5jLTM1MzQtICogQGN0eDpcdFRoZSBcdTAwMjZzdHJ1Y3QgZGFtb25fY3R4IG9mIHRoZSBrZGFtb25kLlxuLS1cbm1tL2RhbW9uL2NvcmUuYy0zNTM2LSAqXG5tbS9kYW1vbi9jb3JlLmM6MzUzNzogKiBJZiB0aGVyZSBhcmUgXHUwMDI2c3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCByZXF1ZXN0cyB0aGF0IHJlZ2lzdGVyZWQgdmlhXG5tbS9kYW1vbi9jb3JlLmM6MzUzODogKiBcdTAwMjZkYW1vbl9jYWxsKCkgb24gQGN0eCwgZG8gb3IgY2FuY2VsIHRoZSBpbnZvY2F0aW9uIG9mIHRoZSBmdW5jdGlvbiBkZXBlbmRpbmdcbm1tL2RhbW9uL2NvcmUuYy0zNTM5LSAqIG9uIEBjYW5jZWwuICBAY2FuY2VsIGlzIHNldCB3aGVuIHRoZSBrZGFtb25kIGlzIGFscmVhZHkgb3V0IG9mIHRoZSBtYWluIGxvb3Bcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzU0Mj1zdGF0aWMgdm9pZCBrZGFtb25kX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBib29sIGNhbmNlbClcbm1tL2RhbW9uL2NvcmUuYy0zNTQzLXtcbm1tL2RhbW9uL2NvcmUuYzozNTQ0Olx0c3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbCwgKm5leHQ7XG5tbS9kYW1vbi9jb3JlLmMtMzU0NS1cdExJU1RfSEVBRChjb250cm9scyk7XG4tLVxubW0vZGFtb24vY29yZS5jPTM2MjY9c3RhdGljIGludCBrZGFtb25kX2ZuKHZvaWQgKmRhdGEpXG4tLVxubW0vZGFtb24vY29yZS5jLTM2OTUtXHRcdFx0a2RhbW9uZF91c2xlZXAoY3R4LVx1MDAzZWF0dHJzLnNhbXBsZV9pbnRlcnZhbCk7XG5tbS9kYW1vbi9jb3JlLmM6MzY5NjpcdFx0XHQvKiBhbGxvdyBjYWxsZXIgdW5zZXQgcGF1c2UgdmlhIGRhbW9uX2NhbGwoKSAqL1xubW0vZGFtb24vY29yZS5jLTM2OTctXHRcdFx0a2RhbW9uZF9jYWxsKGN0eCwgZmFsc2UpO1xuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmM9MzQ3PXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19zdG9yZShjb25zdCBjaGFyICp2YWwsXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy0zNTEtXHRpbnQgZXJyO1xubW0vZGFtb24vbHJ1X3NvcnQuYzozNTI6XHRzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sIGNvbnRyb2wgPSB7XG5tbS9kYW1vbi9scnVfc29ydC5jLTM1My1cdFx0LmZuID0gZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19mbixcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTM2Ny1cdC8qXG5tbS9kYW1vbi9scnVfc29ydC5jOjM2ODpcdCAqIFNraXAgZGFtb25fY2FsbCgpIGlmIGN0eCBpcyBub3QgaW5pdGlhbGl6ZWQgdG8gYXZvaWRcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzY5LVx0ICogTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLlxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtMzczLVxubW0vZGFtb24vbHJ1X3NvcnQuYzozNzQ6XHRlcnIgPSBkYW1vbl9jYWxsKGN0eCwgXHUwMDI2Y29udHJvbCk7XG5tbS9kYW1vbi9scnVfc29ydC5jLTM3NS1cbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jPTM4NT1tb2R1bGVfcGFyYW1fY2IoY29tbWl0X2lucHV0cywgXHUwMDI2Y29tbWl0X2lucHV0c19wYXJhbV9vcHMsIFx1MDAyNmNvbW1pdF9pbnB1dHMsIDA2MDApO1xubW0vZGFtb24vbHJ1X3NvcnQuYy0zODYtXG5tbS9kYW1vbi9scnVfc29ydC5jOjM4NzpzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2RhbW9uX2NhbGxfZm4odm9pZCAqYXJnKVxubW0vZGFtb24vbHJ1X3NvcnQuYy0zODgte1xuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtNDAyLVxubW0vZGFtb24vbHJ1X3NvcnQuYzo0MDM6c3RhdGljIHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgY2FsbF9jb250cm9sID0ge1xubW0vZGFtb24vbHJ1X3NvcnQuYzo0MDQ6XHQuZm4gPSBkYW1vbl9scnVfc29ydF9kYW1vbl9jYWxsX2ZuLFxubW0vZGFtb24vbHJ1X3NvcnQuYy00MDUtXHQucmVwZWF0ID0gdHJ1ZSxcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jPTQwOD1zdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X3R1cm4oYm9vbCBvbilcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTQyMy1cdFx0cmV0dXJuIGVycjtcbm1tL2RhbW9uL2xydV9zb3J0LmM6NDI0Olx0cmV0dXJuIGRhbW9uX2NhbGwoY3R4LCBcdTAwMjZjYWxsX2NvbnRyb2wpO1xubW0vZGFtb24vbHJ1X3NvcnQuYy00MjUtfVxuLS1cbm1tL2RhbW9uL3JlY2xhaW0uYz0yNzQ9c3RhdGljIGludCBkYW1vbl9yZWNsYWltX2NvbW1pdF9pbnB1dHNfc3RvcmUoY29uc3QgY2hhciAqdmFsLFxuLS1cbm1tL2RhbW9uL3JlY2xhaW0uYy0yNzgtXHRpbnQgZXJyO1xubW0vZGFtb24vcmVjbGFpbS5jOjI3OTpcdHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgY29udHJvbCA9IHtcbm1tL2RhbW9uL3JlY2xhaW0uYy0yODAtXHRcdC5mbiA9IGRhbW9uX3JlY2xhaW1fY29tbWl0X2lucHV0c19mbixcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmMtMjk0LVx0Lypcbm1tL2RhbW9uL3JlY2xhaW0uYzoyOTU6XHQgKiBTa2lwIGRhbW9uX2NhbGwoKSBpZiBjdHggaXMgbm90IGluaXRpYWxpemVkIHRvIGF2b2lkXG5tbS9kYW1vbi9yZWNsYWltLmMtMjk2LVx0ICogTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLlxuLS1cbm1tL2RhbW9uL3JlY2xhaW0uYy0zMDAtXG5tbS9kYW1vbi9yZWNsYWltLmM6MzAxOlx0ZXJyID0gZGFtb25fY2FsbChjdHgsIFx1MDAyNmNvbnRyb2wpO1xubW0vZGFtb24vcmVjbGFpbS5jLTMwMi1cbi0tXG5tbS9kYW1vbi9yZWNsYWltLmM9MzEyPW1vZHVsZV9wYXJhbV9jYihjb21taXRfaW5wdXRzLCBcdTAwMjZjb21taXRfaW5wdXRzX3BhcmFtX29wcywgXHUwMDI2Y29tbWl0X2lucHV0cywgMDYwMCk7XG5tbS9kYW1vbi9yZWNsYWltLmMtMzEzLVxubW0vZGFtb24vcmVjbGFpbS5jOjMxNDpzdGF0aWMgaW50IGRhbW9uX3JlY2xhaW1fZGFtb25fY2FsbF9mbih2b2lkICphcmcpXG5tbS9kYW1vbi9yZWNsYWltLmMtMzE1LXtcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmMtMzI1LVxubW0vZGFtb24vcmVjbGFpbS5jOjMyNjpzdGF0aWMgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCBjYWxsX2NvbnRyb2wgPSB7XG5tbS9kYW1vbi9yZWNsYWltLmM6MzI3Olx0LmZuID0gZGFtb25fcmVjbGFpbV9kYW1vbl9jYWxsX2ZuLFxubW0vZGFtb24vcmVjbGFpbS5jLTMyOC1cdC5yZXBlYXQgPSB0cnVlLFxuLS1cbm1tL2RhbW9uL3JlY2xhaW0uYz0zMzE9c3RhdGljIGludCBkYW1vbl9yZWNsYWltX3R1cm4oYm9vbCBvbilcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmMtMzQ2LVx0XHRyZXR1cm4gZXJyO1xubW0vZGFtb24vcmVjbGFpbS5jOjM0NzpcdHJldHVybiBkYW1vbl9jYWxsKGN0eCwgXHUwMDI2Y2FsbF9jb250cm9sKTtcbm1tL2RhbW9uL3JlY2xhaW0uYy0zNDgtfVxuLS1cbm1tL2RhbW9uL3N0YXQuYz0xMTM9c3RhdGljIHZvaWQgZGFtb25fc3RhdF9zZXRfaWRsZXRpbWVfcGVyY2VudGlsZXMoc3RydWN0IGRhbW9uX2N0eCAqYylcbi0tXG5tbS9kYW1vbi9zdGF0LmMtMTM0LVxubW0vZGFtb24vc3RhdC5jOjEzNTpzdGF0aWMgaW50IGRhbW9uX3N0YXRfZGFtb25fY2FsbF9mbih2b2lkICpkYXRhKVxubW0vZGFtb24vc3RhdC5jLTEzNi17XG4tLVxubW0vZGFtb24vc3RhdC5jPTE1MT1zdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc3RhdF9idWlsZF9jdHgodm9pZClcbi0tXG5tbS9kYW1vbi9zdGF0LmMtMTk0LVxubW0vZGFtb24vc3RhdC5jOjE5NTpzdGF0aWMgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCBjYWxsX2NvbnRyb2wgPSB7XG5tbS9kYW1vbi9zdGF0LmM6MTk2Olx0LmZuID0gZGFtb25fc3RhdF9kYW1vbl9jYWxsX2ZuLFxubW0vZGFtb24vc3RhdC5jLTE5Ny1cdC5yZXBlYXQgPSB0cnVlLFxuLS1cbm1tL2RhbW9uL3N0YXQuYz0yMDA9c3RhdGljIGludCBkYW1vbl9zdGF0X3N0YXJ0KHZvaWQpXG4tLVxubW0vZGFtb24vc3RhdC5jLTIyMS1cdGNhbGxfY29udHJvbC5kYXRhID0gZGFtb25fc3RhdF9jb250ZXh0O1xubW0vZGFtb24vc3RhdC5jOjIyMjpcdHJldHVybiBkYW1vbl9jYWxsKGRhbW9uX3N0YXRfY29udGV4dCwgXHUwMDI2Y2FsbF9jb250cm9sKTtcbm1tL2RhbW9uL3N0YXQuYy0yMjMtfVxuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MjIxNj1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb24oc3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKmtkYW1vbmQpXG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMjE4LVx0c3RydWN0IGRhbW9uX2N0eCAqY3R4O1xubW0vZGFtb24vc3lzZnMuYzoyMjE5Olx0c3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqcmVwZWF0X2NhbGxfY29udHJvbDtcbm1tL2RhbW9uL3N5c2ZzLmMtMjIyMC1cdGludCBlcnI7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMjU1LVx0cmVwZWF0X2NhbGxfY29udHJvbC1cdTAwM2VkZWFsbG9jX29uX2NhbmNlbCA9IHRydWU7XG5tbS9kYW1vbi9zeXNmcy5jOjIyNTY6XHRpZiAoZGFtb25fY2FsbChjdHgsIHJlcGVhdF9jYWxsX2NvbnRyb2wpKVxubW0vZGFtb24vc3lzZnMuYy0yMjU3LVx0XHRrZnJlZShyZXBlYXRfY2FsbF9jb250cm9sKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTIyNjE9c3RhdGljIGludCBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZihzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZClcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTIyNzMtXG5tbS9kYW1vbi9zeXNmcy5jOjIyNzQ6c3RhdGljIGludCBkYW1vbl9zeXNmc19kYW1vbl9jYWxsKGludCAoKmZuKSh2b2lkICpkYXRhKSxcbm1tL2RhbW9uL3N5c2ZzLmMtMjI3NS1cdFx0c3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKmtkYW1vbmQpXG5tbS9kYW1vbi9zeXNmcy5jLTIyNzYte1xubW0vZGFtb24vc3lzZnMuYzoyMjc3Olx0c3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCBjYWxsX2NvbnRyb2wgPSB7fTtcbm1tL2RhbW9uL3N5c2ZzLmMtMjI3OC1cdGludCBlcnI7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMjgzLVx0Y2FsbF9jb250cm9sLmRhdGEgPSBrZGFtb25kO1xubW0vZGFtb24vc3lzZnMuYzoyMjg0Olx0ZXJyID0gZGFtb25fY2FsbChrZGFtb25kLVx1MDAzZWRhbW9uX2N0eCwgXHUwMDI2Y2FsbF9jb250cm9sKTtcbm1tL2RhbW9uL3N5c2ZzLmMtMjI4NS1cdHJldHVybiBlcnIgPyBlcnIgOiBjYWxsX2NvbnRyb2wucmV0dXJuX2NvZGU7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0yMzM3PXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfaGFuZGxlX2NtZChlbnVtIGRhbW9uX3N5c2ZzX2NtZCBjbWQsXG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMzQ4LVx0Y2FzZSBEQU1PTl9TWVNGU19DTURfQ09NTUlUOlxubW0vZGFtb24vc3lzZnMuYzoyMzQ5Olx0XHRyZXR1cm4gZGFtb25fc3lzZnNfZGFtb25fY2FsbChcbm1tL2RhbW9uL3N5c2ZzLmMtMjM1MC1cdFx0XHRcdGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCwga2RhbW9uZCk7XG5tbS9kYW1vbi9zeXNmcy5jLTIzNTEtXHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9DT01NSVRfU0NIRU1FU19RVU9UQV9HT0FMUzpcbm1tL2RhbW9uL3N5c2ZzLmM6MjM1MjpcdFx0cmV0dXJuIGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoXG5tbS9kYW1vbi9zeXNmcy5jLTIzNTMtXHRcdFx0XHRkYW1vbl9zeXNmc19jb21taXRfc2NoZW1lc19xdW90YV9nb2Fscyxcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTIzNTUtXHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19TVEFUUzpcbm1tL2RhbW9uL3N5c2ZzLmM6MjM1NjpcdFx0cmV0dXJuIGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoXG5tbS9kYW1vbi9zeXNmcy5jLTIzNTctXHRcdFx0XHRkYW1vbl9zeXNmc191cGRfc2NoZW1lc19zdGF0cywga2RhbW9uZCk7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMzY1LVx0Y2FzZSBEQU1PTl9TWVNGU19DTURfVVBEQVRFX1NDSEVNRVNfRUZGRUNUSVZFX1FVT1RBUzpcbm1tL2RhbW9uL3N5c2ZzLmM6MjM2NjpcdFx0cmV0dXJuIGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoXG5tbS9kYW1vbi9zeXNmcy5jLTIzNjctXHRcdFx0XHRkYW1vbl9zeXNmc191cGRfc2NoZW1lc19lZmZlY3RpdmVfcXVvdGFzLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjM2OS1cdGNhc2UgREFNT05fU1lTRlNfQ01EX1VQREFURV9UVU5FRF9JTlRFUlZBTFM6XG5tbS9kYW1vbi9zeXNmcy5jOjIzNzA6XHRcdHJldHVybiBkYW1vbl9zeXNmc19kYW1vbl9jYWxsKFxubW0vZGFtb24vc3lzZnMuYy0yMzcxLVx0XHRcdFx0ZGFtb25fc3lzZnNfdXBkX3R1bmVkX2ludGVydmFscywga2RhbW9uZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMjE6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTg5MwoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDE3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEQU1PTiBLZXJuZWwgTW9kdWxlIFVwZGF0ZSAtIEluaXRpYWwgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJIHNlZSB3ZSBoYXZlIHNvbWUgdXBkYXRlcyBjb25jZW50cmF0ZWQgd2l0aGluIHRoZSBEQU1PTiBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSB0b3VjaGluZyBgbW0vZGFtb24vY29yZS5jYCwgYG1tL2RhbW9uL2xydV9zb3J0LmNgLCBgbW0vZGFtb24vcmVjbGFpbS5jYCwgYW5kIGBtbS9kYW1vbi9zeXNmcy5jYC4gTG9va3MgbGlrZSB3ZSYjMzk7cmUgcmVmaW5pbmcgREFNT04mIzM5O3MgY29yZSBmdW5jdGlvbmFsaXR5LgoKVGhlIG1vZGlmaWNhdGlvbnMgYXJlIHNwcmVhZCBhY3Jvc3MgdGhlIGxpZmVjeWNsZSBtYW5hZ2VtZW50LCB3aXRoIGNoYW5nZXMgdG8gYGRhbW9uX3N0YXJ0YCwgYF9fZGFtb25fc3RvcGAsIGBkYW1vbl9zdG9wYCwgYW5kIGBkYW1vbl9jYWxsYC4gV2UmIzM5O3ZlIGFsc28gZ290IHNvbWUgdHVuaW5nIGluIHRoZSBvcGVyYXRpb25hbCBsb29wIHdpdGggYGRhbW9uX2xydV9zb3J0X3R1cm5gLCBgZGFtb25fcmVjbGFpbV90dXJuYCwgYW5kIGEgc3lzZnMgdXBkYXRlLCBgZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmZgLiBJbnRlcmVzdGluZy4gTG9va3MgbGlrZSB3ZSYjMzk7cmUgZ2V0dGluZyBtb3JlIGNvbnRyb2wgYW5kIHBvdGVudGlhbGx5IG1vcmUgZWZmaWNpZW50IG1lbW9yeSBtb25pdG9yaW5nIGFuZCBtYW5hZ2VtZW50LgoKTm93LCBsZXQmIzM5O3Mgc2VlIHdoaWNoIGZlYXR1cmVzIHdlJiMzOTtyZSBicmluZ2luZyBvbmxpbmUuIFRoZSBjb25maWcgY2hhbmdlcyBpbmNsdWRlIGVuYWJsaW5nIGBEQU1PTmAsIGBEQU1PTl9WQUREUmAsIGBEQU1PTl9QQUREUmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9SRUNMQUlNYCwgYW5kIGBEQU1PTl9MUlVfU09SVGAuIFRoaXMgY29uZmlybXMgd2UmIzM5O3JlIGFpbWluZyBmb3IgYSBjb21wcmVoZW5zaXZlIERBTU9OIGltcGxlbWVudGF0aW9uLCBoYW5kbGluZyBib3RoIHZpcnR1YWwgYW5kIHBoeXNpY2FsIGFkZHJlc3NlcywgaW50ZWdyYXRlZCB3aXRoIHRoZSBzeXNmcyBpbnRlcmZhY2UsIGFuZCBlbXBsb3lpbmcgcmVjbGFpbSBhbmQgTFJVLWJhc2VkIHNvcnRpbmcgc3RyYXRlZ2llcy4KCkJlZm9yZSBkaXZpbmcgaW50byB0aGUgY29kZSBpdHNlbGYsIGxldCBtZSBxdWlja2x5IGdsYW5jZSBhdCB0aGUgYHNhbXBsZXMvZGFtb24vYCBkaXJlY3RvcnkuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlc2UgbmV3IGNvbmZpZ3VyYXRpb25zIGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIGFuZCBhbnkgZXhhbXBsZSB3b3JrZmxvd3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMjE6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNBTVBMRV9EQU1PTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vS2NvbmZpZz0zPW1lbnUgXCYjMzQ7REFNT04gU2FtcGxlc1wmIzM0O1xuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTQtXG5zYW1wbGVzL2RhbW9uL0tjb25maWc6NTpjb25maWcgU0FNUExFX0RBTU9OX1dTU0VcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy02LVx0Ym9vbCBcJiMzNDtEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciB3b3JraW5nIHNldCBzaXplIGVzdGltYXRpb25cJiMzNDtcbi0tXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMTYtXG5zYW1wbGVzL2RhbW9uL0tjb25maWc6MTc6Y29uZmlnIFNBTVBMRV9EQU1PTl9QUkNMXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMTgtXHRib29sIFwmIzM0O0RBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIGFjY2Vzcy1hd2FyZSBwcm9hY3RpdmUgcmVjbGFtYXRpb25cJiMzNDtcbi0tXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMjktXG5zYW1wbGVzL2RhbW9uL0tjb25maWc6MzA6Y29uZmlnIFNBTVBMRV9EQU1PTl9NVElFUlxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTMxLVx0Ym9vbCBcJiMzNDtEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjQyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IERBTU9OIENvbmZpZ3VyYXRpb24gQ2hlY2sqKgoKT2theSwgc28gSSBuZWVkIHRvIHVwZGF0ZSB0aGUgREFNT04gY29uZmlncy4gSSYjMzk7bSBnb2luZyB0byBhZGQgYFNBTVBMRV9EQU1PTl9XU1NFYCwgYFNBTVBMRV9EQU1PTl9QUkNMYCwgYW5kIGBTQU1QTEVfREFNT05fTVRJRVJgLgoKTm93LCByZWdhcmRpbmcgdGhlIGZvY3VzIHN5bWJvbHMsIEkmIzM5O20gZ29pbmcgdG8gd29yayB3aXRoIGBkYW1vbl9zdGFydGAsIGBkYW1vbl9zdG9wYCwgYGRhbW9uX2NhbGxgLCBgZGFtb25fbHJ1X3NvcnRfdHVybmAsIGBkYW1vbl9yZWNsYWltX3R1cm5gLCBhbmQgYGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmYC4gSSYjMzk7bGwga2VlcCBhbiBleWUgb3V0IGZvciBvdGhlciByZWxldmFudCBmdW5jdGlvbnMsIGFsdGhvdWdoIEkga25vdyBgX19kYW1vbl9zdG9wYCBpcyBzdGF0aWMgYW5kIGlzbiYjMzk7dCBzb21ldGhpbmcgSSBjYW4gZGlyZWN0bHkgZm9jdXMgb24uIGBkYW1vbl9zdG9wYCBjYWxscyB0aGF0IGZ1bmN0aW9uLCBzbyBJJiMzOTttIG5vdCBvdmVybG9va2luZyBpdC4KCkkmIzM5O20gYWxzbyBsb29raW5nIGF0IHRoZSBleGlzdGluZyBjb25maWdzLiBJIG5vdGljZWQgYERBTU9OX1NUQVRgLCBidXQgdGhlIHBhdGNoIGRpZG4mIzM5O3QgdG91Y2ggYG1tL2RhbW9uL3N0YXQuY2AgZXZlbiB0aG91Z2ggYGRhbW9uX3N0YXRfc3RhcnRgIGNhbGxzIGBkYW1vbl9jYWxsYC4gVGhlIHBhdGNoIGNoYW5nZXM6IGBpbmNsdWRlL2xpbnV4L2RhbW9uLmhgLCBgbW0vZGFtb24vY29yZS5jYCwgYG1tL2RhbW9uL2xydV9zb3J0LmNgLCBgbW0vZGFtb24vcmVjbGFpbS5jYCwgYG1tL2RhbW9uL3N5c2ZzLmNgLCBhbmQgdGhlIHNhbXBsZXMgKGBzYW1wbGVzL2RhbW9uL210aWVyLmNgLCBgc2FtcGxlcy9kYW1vbi9wcmNsLmNgLCBgc2FtcGxlcy9kYW1vbi93c3NlLmNgKS4KClNvLCBJJiMzOTttIGRlYWxpbmcgd2l0aCBgREFNT05gLCBgREFNT05fVkFERFJgLCBgREFNT05fUEFERFJgLCBgREFNT05fU1lTRlNgLCBgREFNT05fUkVDTEFJTWAsIGBEQU1PTl9MUlVfU09SVGAsIGFsb25nIHdpdGggdGhlIG5ldyBzYW1wbGVzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgREFNT05fVkFERFJgIGFuZCBgREFNT05fUEFERFJgIGFyZSBzdGlsbCByZXF1aXJlZCwgc2luY2UgdGhleSBhcmUgZXNzZW50aWFsIGZvciB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlIG9wZXJhdGlvbnMsIGFuZCBhcmUgdXN1YWxseSBuZWVkZWQgZm9yIERBTU9OIHRvIGZ1bmN0aW9uLiBJJiMzOTtsbCBkbyBhIGZpbmFsIGNoZWNrIHRvIG1ha2Ugc3VyZSBJJiMzOTt2ZSBnb3QgZXZlcnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMjE6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiBEQU1PTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZz0xNT1jb25maWcgREFNT05fREVCVUdfU0FOSVRZXG5tbS9kYW1vbi9LY29uZmlnLTE2LVx0Ym9vbCBcJiMzNDtDaGVjayBzYW5pdHkgb2YgREFNT04gY29kZVwmIzM0O1xubW0vZGFtb24vS2NvbmZpZzoxNzpcdGRlcGVuZHMgb24gREFNT05cbm1tL2RhbW9uL0tjb25maWctMTgtXHRoZWxwXG4tLVxubW0vZGFtb24vS2NvbmZpZz0yNj1jb25maWcgREFNT05fS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy0yNy1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb25cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xubW0vZGFtb24vS2NvbmZpZzoyODpcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IEtVTklUPXlcbm1tL2RhbW9uL0tjb25maWctMjktXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWc9Mzg9Y29uZmlnIERBTU9OX1ZBRERSXG5tbS9kYW1vbi9LY29uZmlnLTM5LVx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcJiMzNDtcbm1tL2RhbW9uL0tjb25maWc6NDA6XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBNTVVcbm1tL2RhbW9uL0tjb25maWctNDEtXHRzZWxlY3QgUEFHRV9JRExFX0ZMQUdcbi0tXG5tbS9kYW1vbi9LY29uZmlnPTQ3PWNvbmZpZyBEQU1PTl9QQUREUlxubW0vZGFtb24vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVwmIzM0O1xubW0vZGFtb24vS2NvbmZpZzo0OTpcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IE1NVVxubW0vZGFtb24vS2NvbmZpZy01MC1cdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xuLS1cbm1tL2RhbW9uL0tjb25maWc9NTY9Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNTctXHRib29sIFwmIzM0O1Rlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xubW0vZGFtb24vS2NvbmZpZzo1ODpcdGRlcGVuZHMgb24gREFNT05fVkFERFIgXHUwMDI2XHUwMDI2IEtVTklUPXlcbm1tL2RhbW9uL0tjb25maWctNTktXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWc9Njg9Y29uZmlnIERBTU9OX1NZU0ZTXG5tbS9kYW1vbi9LY29uZmlnLTY5LVx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbm1tL2RhbW9uL0tjb25maWc6NzA6XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBTWVNGU1xubW0vZGFtb24vS2NvbmZpZy03MS1cdGRlZmF1bHQgREFNT05cbi0tXG5tbS9kYW1vbi9LY29uZmlnPTc2PWNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xubW0vZGFtb24vS2NvbmZpZzo3ODpcdGRlcGVuZHMgb24gREFNT05fU1lTRlMgXHUwMDI2XHUwMDI2IEtVTklUPXlcbm1tL2RhbW9uL0tjb25maWctNzktXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWc9ODg9Y29uZmlnIERBTU9OX1JFQ0xBSU1cbm1tL2RhbW9uL0tjb25maWctODktXHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnOjkwOlx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxubW0vZGFtb24vS2NvbmZpZy05MS1cdGhlbHBcbi0tXG5tbS9kYW1vbi9LY29uZmlnPTEwMD1jb25maWcgREFNT05fTFJVX1NPUlRcbm1tL2RhbW9uL0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnOjEwMjpcdGRlcGVuZHMgb24gREFNT05fUEFERFJcbm1tL2RhbW9uL0tjb25maWctMTAzLVx0aGVscFxuLS1cbm1tL2RhbW9uL0tjb25maWc9MTA4PWNvbmZpZyBEQU1PTl9TVEFUXG5tbS9kYW1vbi9LY29uZmlnLTEwOS1cdGJvb2wgXCYjMzQ7QnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVwmIzM0O1xubW0vZGFtb24vS2NvbmZpZzoxMTA6XHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXG5tbS9kYW1vbi9LY29uZmlnLTExMS1cdGhlbHBcbi0tXG5tbS9kYW1vbi9LY29uZmlnPTExNj1jb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcbm1tL2RhbW9uL0tjb25maWctMTE3LVx0Ym9vbCBcJiMzNDtFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnOjExODpcdGRlcGVuZHMgb24gREFNT05fU1RBVFxubW0vZGFtb24vS2NvbmZpZy0xMTktXHRkZWZhdWx0IERBTU9OX1NUQVRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMjE6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1MjUKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGFuIGV4cGVydCBpbiB0aGlzIGFyZWE6CgoqKkFuYWx5emluZyBEQU1PTiBLY29uZmlnIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGVzZSBEQU1PTiBLY29uZmlnIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgY2xlYXIgdGhhdCBib3RoIGBEQU1PTl9SRUNMQUlNYCBhbmQgYERBTU9OX0xSVV9TT1JUYCBhcmUgYnVpbHQgdXBvbiB0aGUgZm91bmRhdGlvbiBvZiBgREFNT05fUEFERFJgLiBUaGlzIG1ha2VzIHNlbnNlIOKAkyByZWNsYWltaW5nIGFuZCBzb3J0aW5nIGJhc2VkIG9uIExSVSB0eXBpY2FsbHkgcmVxdWlyZSBwaHlzaWNhbCBhZGRyZXNzIGNvbnNpZGVyYXRpb25zLiBNb3Zpbmcgb24sIHRoZSBwcmVzZW5jZSBvZiBgREFNT05fU1lTRlNgIGlzIGNvbnRpbmdlbnQgb24gdGhlIGF2YWlsYWJpbGl0eSBvZiBib3RoIGBEQU1PTmAgaXRzZWxmIGFuZCB0aGUgYFNZU0ZTYCBpbmZyYXN0cnVjdHVyZS4gVGhhdCYjMzk7cyBzdGFuZGFyZCBwcmFjdGljZSBmb3IgZXhwb3NpbmcgY29udHJvbCBpbnRlcmZhY2VzLiBOb3csIGBEQU1PTl9WQUREUmAgYW5kIGBEQU1PTl9QQUREUmAgYm90aCBzZWVtIHRvIGRlcGVuZCBvbiBgREFNT05gIGFuZCB0aGUgYE1NVWAuIFRoaXMgc3VnZ2VzdHMgdGhhdCB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzIG1hbmlwdWxhdGlvbiB3aXRoaW4gREFNT04gcmVxdWlyZXMgdGhlIE1NVSYjMzk7cyBmdW5jdGlvbmFsaXR5LCB3aGljaCBpcyBubyBzdXJwcmlzZSByZWFsbHkuIFRvIGdhaW4gZnVydGhlciBpbnNpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIHRvIHNlZSB0aGUgY29tcGxldGUgcGljdHVyZSBvZiBob3cgZXZlcnl0aGluZyBmaXRzIHRvZ2V0aGVyIGluIHRoZSBhY3R1YWwga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9LY29uZmlnPTU9Y29uZmlnIFNBTVBMRV9EQU1PTl9XU1NFXG5zYW1wbGVzL2RhbW9uL0tjb25maWctNi1cdGJvb2wgXCYjMzQ7REFNT04gc2FtcGxlIG1vZHVsZSBmb3Igd29ya2luZyBzZXQgc2l6ZSBlc3RpbWF0aW9uXCYjMzQ7XG5zYW1wbGVzL2RhbW9uL0tjb25maWc6NzpcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IERBTU9OX1ZBRERSXG5zYW1wbGVzL2RhbW9uL0tjb25maWctOC1cdGhlbHBcbi0tXG5zYW1wbGVzL2RhbW9uL0tjb25maWc9MTc9Y29uZmlnIFNBTVBMRV9EQU1PTl9QUkNMXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMTgtXHRib29sIFwmIzM0O0RBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIGFjY2Vzcy1hd2FyZSBwcm9hY3RpdmUgcmVjbGFtYXRpb25cJiMzNDtcbnNhbXBsZXMvZGFtb24vS2NvbmZpZzoxOTpcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IERBTU9OX1ZBRERSXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMjAtXHRoZWxwXG4tLVxuc2FtcGxlcy9kYW1vbi9LY29uZmlnPTMwPWNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7REFNT04gc2FtcGxlIG1vZHVsZSBmb3IgbWVtb3J5IHRpZXJpbmdcJiMzNDtcbnNhbXBsZXMvZGFtb24vS2NvbmZpZzozMjpcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IERBTU9OX1BBRERSXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMzMtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMTMwCgkJCQkJCQlvdXRwdXQ6IDIzNwoJCQkJCQkJdGhvdWdodHM6IDIxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERBTU9OIENvbmZpZ3VyYXRpb24gYW5kIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJiMzOTttIHNlZWluZyBhIGxpc3Qgb2YgREFNT04gY29uZmlndXJhdGlvbiBzeW1ib2xzOiBgREFNT05gLCBgREFNT05fVkFERFJgLCBgREFNT05fUEFERFJgLCBgREFNT05fU1lTRlNgLCBgREFNT05fUkVDTEFJTWAsIGBEQU1PTl9MUlVfU09SVGAsIGFuZCB0aGVuIGEgZmV3IHNhbXBsZSBzeW1ib2xzOiBgU0FNUExFX0RBTU9OX1dTU0VgLCBgU0FNUExFX0RBTU9OX1BSQ0xgLCBhbmQgYFNBTVBMRV9EQU1PTl9NVElFUmAuIE5vdGhpbmcgdW5leHBlY3RlZCB0aGVyZSDigJMgdGhlc2UgYXJlIHRoZSBrbm9icyB3ZSYjMzk7ZCBleHBlY3QgdG8gc2VlIHRvIGNvbnRyb2wgREFNT04mIzM5O3MgYmVoYXZpb3IgYW5kIGZlYXR1cmVzLgoKTm93LCBmb2N1c2luZyBvbiB0aGUgY29yZSBzeW1ib2xzOiBgZGFtb25fc3RhcnRgLCBgZGFtb25fc3RvcGAsIGBkYW1vbl9jYWxsYCwgYGRhbW9uX2xydV9zb3J0X3R1cm5gLCBgZGFtb25fcmVjbGFpbV90dXJuYCwgYW5kIGBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZmAuIFRoZXNlIGFyZSB0aGUgZW50cnkgcG9pbnRzIGFuZCBjb250cm9sIHBvaW50cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBwYXRjaCBpcyBpbXBhY3RpbmcgdGhlc2Ugc3BlY2lmaWMgZnVuY3Rpb25zLgoKQWhhISBUaGUgcGF0Y2ggbW9kaWZpZXMgYGRhbW9uX3N0b3BgLiBJdCBjaGFuZ2VzIHRoZSByZXR1cm4gdHlwZSB0byBgdm9pZGAsIG1lYW5pbmcgbm8gZXJyb3IgY29kZSBpcyBiZWluZyByZXR1cm5lZCBhbnltb3JlLiBGdXJ0aGVybW9yZSwgdGhlIGJlaGF2aW9yIGhhcyBiZWVuIGFsdGVyZWQgaW4gc3VjaCBhIHdheSB0aGF0IGl0IG5vIGxvbmdlciByZXR1cm5zIGFuIGVycm9yIGNvZGUsIHdoaWNoIGltcGxpZXMgYSBjaGFuZ2UgaW4gaG93IGVycm9ycyBhcmUgaGFuZGxlZCwgb3IgcGVyaGFwcyBhIHNpbXBsaWZpY2F0aW9uIG9mIHRoZSBlcnJvciBoYW5kbGluZyBzdHJhdGVneS4gSXQgYWxzbyBzdGF0ZXMgdGhhdCBgZGFtb25fY2FsbGAgbm93IHdhaXRzIGZvciB0aGUgY29udGV4dCB0byBzdG9wIGlmIHRoZSBjYWxsIGlzIGNhbmNlbGxlZC4KClllcywgdGhpcyByZXByZXNlbnRzIGEgc2lnbmlmaWNhbnQsIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSB2ZXJ5IGNvcmUgb2YgREFNT04mIzM5O3MgbG9naWMuIEl0IGNvdWxkIGFmZmVjdCBob3cgd2UgbWFuYWdlIGVycm9yIHN0YXRlcyBhbmQgaG93IHdlIGhhbmRsZSBhc3luY2hyb25vdXMgb3BlcmF0aW9ucy4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIGRlZXBseSBhbmFseXplIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2Ugb24gdGhlIG92ZXJhbGwgc3lzdGVtIGJlaGF2aW9yLCBlcnJvciBwcm9wYWdhdGlvbiwgYW5kIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGludHJvZHVjZWQgYnkgdGhlIGNoYW5nZXMuIE5vdyB0aGF0IEkgdW5kZXJzdGFuZCB0aGUgY29yZSBvZiB0aGUgY2hhbmdlLCBJJiMzOTttIGdvaW5nIHRvIHByb2NlZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fUkVDTEFJTSYjMzQ7LAogICAgJiMzNDtEQU1PTl9MUlVfU09SVCYjMzQ7LAogICAgJiMzNDtTQU1QTEVfREFNT05fV1NTRSYjMzQ7LAogICAgJiMzNDtTQU1QTEVfREFNT05fUFJDTCYjMzQ7LAogICAgJiMzNDtTQU1QTEVfREFNT05fTVRJRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zdG9wJiMzNDssCiAgICAmIzM0O2RhbW9uX2NhbGwmIzM0OywKICAgICYjMzQ7ZGFtb25fbHJ1X3NvcnRfdHVybiYjMzQ7LAogICAgJiMzNDtkYW1vbl9yZWNsYWltX3R1cm4mIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgREFNT04gKERhdGEgQWNjZXNzIE1PTml0b3IpIGxvZ2ljLCBjaGFuZ2luZyB0aGUgcmV0dXJuIHR5cGUgb2YgYGRhbW9uX3N0b3BgIHRvIGB2b2lkYCBhbmQgdXBkYXRpbmcgaXRzIGNhbGxlcnMuIEl0IGFsc28gbW9kaWZpZXMgYGRhbW9uX2NhbGxgIHRvIHdhaXQgZm9yIHRoZSBjb250ZXh0IHRvIHN0b3AgaWYgdGhlIGNhbGwgaXMgY2FuY2VsZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9WQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7LAogICAgJiMzNDtEQU1PTl9SRUNMQUlNJiMzNDssCiAgICAmIzM0O0RBTU9OX0xSVV9TT1JUJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9XU1NFJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9QUkNMJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9NVElFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9uX3N0YXJ0JiMzNDssCiAgICAmIzM0O2RhbW9uX3N0b3AmIzM0OywKICAgICYjMzQ7ZGFtb25fY2FsbCYjMzQ7LAogICAgJiMzNDtkYW1vbl9scnVfc29ydF90dXJuJiMzNDssCiAgICAmIzM0O2RhbW9uX3JlY2xhaW1fdHVybiYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBEQU1PTiAoRGF0YSBBY2Nlc3MgTU9OaXRvcikgbG9naWMsIGNoYW5naW5nIHRoZSByZXR1cm4gdHlwZSBvZiBgZGFtb25fc3RvcGAgdG8gYHZvaWRgIGFuZCB1cGRhdGluZyBpdHMgY2FsbGVycy4gSXQgYWxzbyBtb2RpZmllcyBgZGFtb25fY2FsbGAgdG8gd2FpdCBmb3IgdGhlIGNvbnRleHQgdG8gc3RvcCBpZiB0aGUgY2FsbCBpcyBjYW5jZWxlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNTo0OS41NjA1MTYzNzVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDAyNDI5OTk1NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREFNT05cIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX1JFQ0xBSU1cIixcbiAgICBcIkRBTU9OX0xSVV9TT1JUXCIsXG4gICAgXCJTQU1QTEVfREFNT05fV1NTRVwiLFxuICAgIFwiU0FNUExFX0RBTU9OX1BSQ0xcIixcbiAgICBcIlNBTVBMRV9EQU1PTl9NVElFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9zdG9wXCIsXG4gICAgXCJkYW1vbl9jYWxsXCIsXG4gICAgXCJkYW1vbl9scnVfc29ydF90dXJuXCIsXG4gICAgXCJkYW1vbl9yZWNsYWltX3R1cm5cIixcbiAgICBcImRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgREFNT04gKERhdGEgQWNjZXNzIE1PTml0b3IpIGxvZ2ljLCBjaGFuZ2luZyB0aGUgcmV0dXJuIHR5cGUgb2YgYGRhbW9uX3N0b3BgIHRvIGB2b2lkYCBhbmQgdXBkYXRpbmcgaXRzIGNhbGxlcnMuIEl0IGFsc28gbW9kaWZpZXMgYGRhbW9uX2NhbGxgIHRvIHdhaXQgZm9yIHRoZSBjb250ZXh0IHRvIHN0b3AgaWYgdGhlIGNhbGwgaXMgY2FuY2VsZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNTo0OS41NjA1MzQ2NzVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNzA1NTI1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGRiMTg4ZDkyNjc5Mjc3ZWQ4MGM3OTIxZDE5ODc5YmY1MzE5MjFmYzhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgNiAyMTowNTo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmggYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcXG5pbmRleCAyNjYxMjMxYzBhZTgyZS4uMTliN2U4MzliZGUwYjQgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9kYW1vbi5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXFxuQEAgLTEwNzAsNyArMTA3MCw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGRhbW9uX21heF9ucl9hY2Nlc3Nlcyhjb25zdCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzXFxuIFxcbiBib29sIGRhbW9uX2luaXRpYWxpemVkKHZvaWQpO1xcbiBpbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSk7XFxuLWludCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cyk7XFxuK3ZvaWQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpO1xcbiBib29sIGRhbW9uX2lzX3J1bm5pbmcoc3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcXG4gaW50IGRhbW9uX2tkYW1vbmRfcGlkKHN0cnVjdCBkYW1vbl9jdHggKmN0eCk7XFxuIFxcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcXG5pbmRleCAzYzVhNDZlMWMwNzlhMy4uMzkwZTAwYjM2ODVlZmMgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXFxuKysrIGIvbW0vZGFtb24vY29yZS5jXFxuQEAgLTE5MTcsMTYgKzE5MTcsMTcgQEAgaW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpXFxuIFxcdFxcdHJ1bm5pbmdfZXhjbHVzaXZlX2N0eHMgPSB0cnVlO1xcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmRhbW9uX2xvY2spO1xcbiBcXG4rXFx0aWYgKGkgIT0gbnJfY3R4cylcXG4rXFx0XFx0ZGFtb25fc3RvcChjdHhzLCBpKTtcXG4rXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuIC8qXFxuICAqIF9fZGFtb25fc3RvcCgpIC0gU3RvcHMgbW9uaXRvcmluZyBvZiBhIGdpdmVuIGNvbnRleHQuXFxuICAqIEBjdHg6XFx0bW9uaXRvcmluZyBjb250ZXh0XFxuLSAqXFxuLSAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZS5cXG4gICovXFxuLXN0YXRpYyBpbnQgX19kYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4rc3RhdGljIHZvaWQgX19kYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4ge1xcbiBcXHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaztcXG4gXFxuQEAgLTE5MzYsMzEgKzE5MzcsMjMgQEAgc3RhdGljIGludCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbiBcXHRcXHRnZXRfdGFza19zdHJ1Y3QodHNrKTtcXG4gXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjdHgtXFx1MDAzZWtkYW1vbmRfbG9jayk7XFxuIFxcdFxcdGt0aHJlYWRfc3RvcF9wdXQodHNrKTtcXG4tXFx0XFx0cmV0dXJuIDA7XFxuK1xcdFxcdHJldHVybjtcXG4gXFx0fVxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmN0eC1cXHUwMDNla2RhbW9uZF9sb2NrKTtcXG4tXFxuLVxcdHJldHVybiAtRVBFUk07XFxuIH1cXG4gXFxuIC8qKlxcbiAgKiBkYW1vbl9zdG9wKCkgLSBTdG9wcyB0aGUgbW9uaXRvcmluZ3MgZm9yIGEgZ2l2ZW4gZ3JvdXAgb2YgY29udGV4dHMuXFxuICAqIEBjdHhzOlxcdGFuIGFycmF5IG9mIHRoZSBwb2ludGVycyBmb3IgY29udGV4dHMgdG8gc3RvcCBtb25pdG9yaW5nXFxuICAqIEBucl9jdHhzOlxcdHNpemUgb2YgQGN0eHNcXG4tICpcXG4tICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxcbiAgKi9cXG4taW50IGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxcbit2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxcbiB7XFxuLVxcdGludCBpLCBlcnIgPSAwO1xcbitcXHRpbnQgaTtcXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl9jdHhzOyBpKyspIHtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX2N0eHM7IGkrKylcXG4gXFx0XFx0LyogbnJfcnVubmluZ19jdHhzIGlzIGRlY3JlbWVudGVkIGluIGtkYW1vbmRfZm4gKi9cXG4tXFx0XFx0ZXJyID0gX19kYW1vbl9zdG9wKGN0eHNbaV0pO1xcbi1cXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRicmVhaztcXG4tXFx0fVxcbi1cXHRyZXR1cm4gZXJyO1xcbitcXHRcXHRfX2RhbW9uX3N0b3AoY3R4c1tpXSk7XFxuIH1cXG4gXFxuIC8qKlxcbkBAIC0yMDE3LDYgKzIwMTAsOCBAQCBpbnQgZGFtb25fa2RhbW9uZF9waWQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbiAgKiBAY3R4IGhhcyBzdWNjZWVkZWQuICBPdGhlcndpc2UsIHRoaXMgZnVuY3Rpb24gY291bGQgZmFsbCBpbnRvIGFuIGluZGVmaW5pdGVcXG4gICogd2FpdC5cXG4gICpcXG4rICogV2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGZhaWxlZCwgdGhlIEBjdHggaXMgZ3VhcmFudGVlZCB0byBiZSBzdG9wcGVkLlxcbisgKlxcbiAgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXFxuICAqL1xcbiBpbnQgZGFtb25fY2FsbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgKmNvbnRyb2wpXFxuQEAgLTIwMjksNyArMjAyNCw3IEBAIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2Y3R4LVxcdTAwM2VjYWxsX2NvbnRyb2xzX2xvY2spO1xcbiBcXHRpZiAoY3R4LVxcdTAwM2VjYWxsX2NvbnRyb2xzX29ic29sZXRlKSB7XFxuIFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2Y3R4LVxcdTAwM2VjYWxsX2NvbnRyb2xzX2xvY2spO1xcbi1cXHRcXHRyZXR1cm4gLUVDQU5DRUxFRDtcXG4rXFx0XFx0Z290byBjYW5jZWxlZDtcXG4gXFx0fVxcbiBcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZjb250cm9sLVxcdTAwM2VsaXN0LCBcXHUwMDI2Y3R4LVxcdTAwM2VjYWxsX2NvbnRyb2xzKTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjdHgtXFx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XFxuQEAgLTIwMzcsOCArMjAzMiwxNCBAQCBpbnQgZGFtb25fY2FsbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgKmNvbnRyb2wpXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXHR3YWl0X2Zvcl9jb21wbGV0aW9uKFxcdTAwMjZjb250cm9sLVxcdTAwM2Vjb21wbGV0aW9uKTtcXG4gXFx0aWYgKGNvbnRyb2wtXFx1MDAzZWNhbmNlbGVkKVxcbi1cXHRcXHRyZXR1cm4gLUVDQU5DRUxFRDtcXG4rXFx0XFx0Z290byBjYW5jZWxlZDtcXG4gXFx0cmV0dXJuIDA7XFxuK1xcbitjYW5jZWxlZDpcXG4rXFx0d2hpbGUgKGRhbW9uX2lzX3J1bm5pbmcoY3R4KSlcXG4rXFx0XFx0c2NoZWR1bGVfdGltZW91dF9pZGxlKG1zZWNzX3RvX2ppZmZpZXMoMTAwKSk7XFxuK1xcdHJldHVybiAtRUNBTkNFTEVEO1xcbitcXG4gfVxcbiBcXG4gLyoqXFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2xydV9zb3J0LmMgYi9tbS9kYW1vbi9scnVfc29ydC5jXFxuaW5kZXggMmRkMGNkMGQyNjI3MzEuLmU4YzM4OWFkMzIyNmY3IDEwMDY0NFxcbi0tLSBhL21tL2RhbW9uL2xydV9zb3J0LmNcXG4rKysgYi9tbS9kYW1vbi9scnVfc29ydC5jXFxuQEAgLTQwOSw4ICs0MDksMTAgQEAgc3RhdGljIGludCBkYW1vbl9scnVfc29ydF90dXJuKGJvb2wgb24pXFxuIHtcXG4gXFx0aW50IGVycjtcXG4gXFxuLVxcdGlmICghb24pXFxuLVxcdFxcdHJldHVybiBkYW1vbl9zdG9wKFxcdTAwMjZjdHgsIDEpO1xcbitcXHRpZiAoIW9uKSB7XFxuK1xcdFxcdGRhbW9uX3N0b3AoXFx1MDAyNmN0eCwgMSk7XFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHR9XFxuIFxcbiBcXHRlcnIgPSBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzKCk7XFxuIFxcdGlmIChlcnIpXFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3JlY2xhaW0uYyBiL21tL2RhbW9uL3JlY2xhaW0uY1xcbmluZGV4IDY0NjliMjVjYzM0ZjkyLi4wOWU5NDFkNzVmNjdkZCAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi9yZWNsYWltLmNcXG4rKysgYi9tbS9kYW1vbi9yZWNsYWltLmNcXG5AQCAtMzMyLDggKzMzMiwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX3JlY2xhaW1fdHVybihib29sIG9uKVxcbiB7XFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRpZiAoIW9uKVxcbi1cXHRcXHRyZXR1cm4gZGFtb25fc3RvcChcXHUwMDI2Y3R4LCAxKTtcXG4rXFx0aWYgKCFvbikge1xcbitcXHRcXHRkYW1vbl9zdG9wKFxcdTAwMjZjdHgsIDEpO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbiBcXG4gXFx0ZXJyID0gZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzKCk7XFxuIFxcdGlmIChlcnIpXFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3N5c2ZzLmMgYi9tbS9kYW1vbi9zeXNmcy5jXFxuaW5kZXggYjY1NjUxNDk4ZTBkMTQuLjZkN2UzNmM5ZTUwOWQyIDEwMDY0NFxcbi0tLSBhL21tL2RhbW9uL3N5c2ZzLmNcXG4rKysgYi9tbS9kYW1vbi9zeXNmcy5jXFxuQEAgLTIyNjIsMTIgKzIyNjIsMTMgQEAgc3RhdGljIGludCBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZihzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZClcXG4ge1xcbiBcXHRpZiAoIWtkYW1vbmQtXFx1MDAzZWRhbW9uX2N0eClcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLVxcdHJldHVybiBkYW1vbl9zdG9wKFxcdTAwMjZrZGFtb25kLVxcdTAwM2VkYW1vbl9jdHgsIDEpO1xcbitcXHRkYW1vbl9zdG9wKFxcdTAwMjZrZGFtb25kLVxcdTAwM2VkYW1vbl9jdHgsIDEpO1xcbiBcXHQvKlxcbiBcXHQgKiBUbyBhbGxvdyB1c2VycyBzaG93IGZpbmFsIG1vbml0b3JpbmcgcmVzdWx0cyBvZiBhbHJlYWR5IHR1cm5lZC1vZmZcXG4gXFx0ICogREFNT04sIHdlIGZyZWUga2RhbW9uZC1cXHUwMDNlZGFtb25fY3R4IGluIG5leHRcXG4gXFx0ICogZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vbigpLCBvciBrZGFtb25kc19ucl9zdG9yZSgpXFxuIFxcdCAqL1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBkYW1vbl9zeXNmc19kYW1vbl9jYWxsKGludCAoKmZuKSh2b2lkICpkYXRhKSxcXG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi9tdGllci5jIGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXFxuaW5kZXggZTU2N2Y0ZWRkODBlYTcuLmFjOWMyNGI5MmVhZDg0IDEwMDY0NFxcbi0tLSBhL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xcbisrKyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xcbkBAIC0xOTMsOCArMTkzLDYgQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZClcXG4gXFx0aWYgKCFlcnIpXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG4tXFx0aWYgKGRhbW9uX2lzX3J1bm5pbmcoY3R4c1swXSkpXFxuLVxcdFxcdGRhbW9uX3N0b3AoY3R4cywgMSk7XFxuIFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMF0pO1xcbiBcXHRkYW1vbl9kZXN0cm95X2N0eChjdHhzWzFdKTtcXG4gXFx0cmV0dXJuIGVycjtcXG5AQCAtMjAyLDggKzIwMCw3IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KHZvaWQpXFxuIFxcbiBzdGF0aWMgdm9pZCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RvcCh2b2lkKVxcbiB7XFxuLVxcdGRhbW9uX3N0b3AoY3R4cywgMSk7XFxuLVxcdGRhbW9uX3N0b3AoXFx1MDAyNmN0eHNbMV0sIDEpO1xcbitcXHRkYW1vbl9zdG9wKGN0eHMsIDIpO1xcbiBcXHRkYW1vbl9kZXN0cm95X2N0eChjdHhzWzBdKTtcXG4gXFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4c1sxXSk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi9wcmNsLmMgYi9zYW1wbGVzL2RhbW9uL3ByY2wuY1xcbmluZGV4IGVkZWFlMTQ1YzRhOGFmLi44NDIwOTliZDYyMjg2MSAxMDA2NDRcXG4tLS0gYS9zYW1wbGVzL2RhbW9uL3ByY2wuY1xcbisrKyBiL3NhbXBsZXMvZGFtb24vcHJjbC5jXFxuQEAgLTExMywxMCArMTEzLDggQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfcHJjbF9zdGFydCh2b2lkKVxcbiBcXG4gXFx0cmVwZWF0X2NhbGxfY29udHJvbC5kYXRhID0gY3R4O1xcbiBcXHRlcnIgPSBkYW1vbl9jYWxsKGN0eCwgXFx1MDAyNnJlcGVhdF9jYWxsX2NvbnRyb2wpO1xcbi1cXHRpZiAoZXJyKSB7XFxuLVxcdFxcdGRhbW9uX3N0b3AoXFx1MDAyNmN0eCwgMSk7XFxuK1xcdGlmIChlcnIpXFxuIFxcdFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eCk7XFxuLVxcdH1cXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi93c3NlLmMgYi9zYW1wbGVzL2RhbW9uL3dzc2UuY1xcbmluZGV4IGZmNWU4YTg5MGY0NDhjLi4zN2ZkNWRhMjAxNTg4NSAxMDA2NDRcXG4tLS0gYS9zYW1wbGVzL2RhbW9uL3dzc2UuY1xcbisrKyBiL3NhbXBsZXMvZGFtb24vd3NzZS5jXFxuQEAgLTkzLDEwICs5Myw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3dzc2Vfc3RhcnQodm9pZClcXG4gXFx0fVxcbiBcXHRyZXBlYXRfY2FsbF9jb250cm9sLmRhdGEgPSBjdHg7XFxuIFxcdGVyciA9IGRhbW9uX2NhbGwoY3R4LCBcXHUwMDI2cmVwZWF0X2NhbGxfY29udHJvbCk7XFxuLVxcdGlmIChlcnIpIHtcXG4tXFx0XFx0ZGFtb25fc3RvcChcXHUwMDI2Y3R4LCAxKTtcXG4rXFx0aWYgKGVycilcXG4gXFx0XFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcXG4tXFx0fVxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNTo1MC4zODg1NzcxMTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzOTQxNDkyMzQyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1BBRERSXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUkVDTEFJTVwiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIixcbiAgICBcIlNBTVBMRV9EQU1PTl9XU1NFXCIsXG4gICAgXCJTQU1QTEVfREFNT05fUFJDTFwiLFxuICAgIFwiU0FNUExFX0RBTU9OX01USUVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb25fc3RhcnRcIixcbiAgICBcImRhbW9uX3N0b3BcIixcbiAgICBcImRhbW9uX2NhbGxcIixcbiAgICBcImRhbW9uX2xydV9zb3J0X3R1cm5cIixcbiAgICBcImRhbW9uX3JlY2xhaW1fdHVyblwiLFxuICAgIFwiZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBEQU1PTiAoRGF0YSBBY2Nlc3MgTU9OaXRvcikgbG9naWMsIGNoYW5naW5nIHRoZSByZXR1cm4gdHlwZSBvZiBgZGFtb25fc3RvcGAgdG8gYHZvaWRgIGFuZCB1cGRhdGluZyBpdHMgY2FsbGVycy4gSXQgYWxzbyBtb2RpZmllcyBgZGFtb25fY2FsbGAgdG8gd2FpdCBmb3IgdGhlIGNvbnRleHQgdG8gc3RvcCBpZiB0aGUgY2FsbCBpcyBjYW5jZWxlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGIxODhkOTI2NzkyNzdlZDgwYzc5MjFkMTk4NzliZjUzMTkyMWZjOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDYgMjE6MDU6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmggYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbmluZGV4IDI2NjEyMzFjMGFlODJlLi4xOWI3ZTgzOWJkZTBiNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaFxuKysrIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXG5AQCAtMTA3MCw3ICsxMDcwLDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZGFtb25fbWF4X25yX2FjY2Vzc2VzKGNvbnN0IHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnNcbiBcbiBib29sIGRhbW9uX2luaXRpYWxpemVkKHZvaWQpO1xuIGludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKTtcbi1pbnQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpO1xuK3ZvaWQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpO1xuIGJvb2wgZGFtb25faXNfcnVubmluZyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xuIGludCBkYW1vbl9rZGFtb25kX3BpZChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xuIFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggM2M1YTQ2ZTFjMDc5YTMuLjM5MGUwMGIzNjg1ZWZjIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0xOTE3LDE2ICsxOTE3LDE3IEBAIGludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKVxuIFx0XHRydW5uaW5nX2V4Y2x1c2l2ZV9jdHhzID0gdHJ1ZTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZkYW1vbl9sb2NrKTtcbiBcbitcdGlmIChpICE9IG5yX2N0eHMpXG4rXHRcdGRhbW9uX3N0b3AoY3R4cywgaSk7XG4rXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiAvKlxuICAqIF9fZGFtb25fc3RvcCgpIC0gU3RvcHMgbW9uaXRvcmluZyBvZiBhIGdpdmVuIGNvbnRleHQuXG4gICogQGN0eDpcdG1vbml0b3JpbmcgY29udGV4dFxuLSAqXG4tICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxuICAqL1xuLXN0YXRpYyBpbnQgX19kYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbitzdGF0aWMgdm9pZCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuIHtcbiBcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrO1xuIFxuQEAgLTE5MzYsMzEgKzE5MzcsMjMgQEAgc3RhdGljIGludCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuIFx0XHRnZXRfdGFza19zdHJ1Y3QodHNrKTtcbiBcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmN0eC1cdTAwM2VrZGFtb25kX2xvY2spO1xuIFx0XHRrdGhyZWFkX3N0b3BfcHV0KHRzayk7XG4tXHRcdHJldHVybiAwO1xuK1x0XHRyZXR1cm47XG4gXHR9XG4gXHRtdXRleF91bmxvY2soXHUwMDI2Y3R4LVx1MDAzZWtkYW1vbmRfbG9jayk7XG4tXG4tXHRyZXR1cm4gLUVQRVJNO1xuIH1cbiBcbiAvKipcbiAgKiBkYW1vbl9zdG9wKCkgLSBTdG9wcyB0aGUgbW9uaXRvcmluZ3MgZm9yIGEgZ2l2ZW4gZ3JvdXAgb2YgY29udGV4dHMuXG4gICogQGN0eHM6XHRhbiBhcnJheSBvZiB0aGUgcG9pbnRlcnMgZm9yIGNvbnRleHRzIHRvIHN0b3AgbW9uaXRvcmluZ1xuICAqIEBucl9jdHhzOlx0c2l6ZSBvZiBAY3R4c1xuLSAqXG4tICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxuICAqL1xuLWludCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cylcbit2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxuIHtcbi1cdGludCBpLCBlcnIgPSAwO1xuK1x0aW50IGk7XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9jdHhzOyBpKyspIHtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX2N0eHM7IGkrKylcbiBcdFx0LyogbnJfcnVubmluZ19jdHhzIGlzIGRlY3JlbWVudGVkIGluIGtkYW1vbmRfZm4gKi9cbi1cdFx0ZXJyID0gX19kYW1vbl9zdG9wKGN0eHNbaV0pO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdGJyZWFrO1xuLVx0fVxuLVx0cmV0dXJuIGVycjtcbitcdFx0X19kYW1vbl9zdG9wKGN0eHNbaV0pO1xuIH1cbiBcbiAvKipcbkBAIC0yMDE3LDYgKzIwMTAsOCBAQCBpbnQgZGFtb25fa2RhbW9uZF9waWQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuICAqIEBjdHggaGFzIHN1Y2NlZWRlZC4gIE90aGVyd2lzZSwgdGhpcyBmdW5jdGlvbiBjb3VsZCBmYWxsIGludG8gYW4gaW5kZWZpbml0ZVxuICAqIHdhaXQuXG4gICpcbisgKiBXaGVuIHRoaXMgZnVuY3Rpb24gaXMgZmFpbGVkLCB0aGUgQGN0eCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0b3BwZWQuXG4rICpcbiAgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXG4gICovXG4gaW50IGRhbW9uX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sKVxuQEAgLTIwMjksNyArMjAyNCw3IEBAIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcbiBcdG11dGV4X2xvY2soXHUwMDI2Y3R4LVx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XG4gXHRpZiAoY3R4LVx1MDAzZWNhbGxfY29udHJvbHNfb2Jzb2xldGUpIHtcbiBcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmN0eC1cdTAwM2VjYWxsX2NvbnRyb2xzX2xvY2spO1xuLVx0XHRyZXR1cm4gLUVDQU5DRUxFRDtcbitcdFx0Z290byBjYW5jZWxlZDtcbiBcdH1cbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2Y29udHJvbC1cdTAwM2VsaXN0LCBcdTAwMjZjdHgtXHUwMDNlY2FsbF9jb250cm9scyk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2Y3R4LVx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XG5AQCAtMjAzNyw4ICsyMDMyLDE0IEBAIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcbiBcdFx0cmV0dXJuIDA7XG4gXHR3YWl0X2Zvcl9jb21wbGV0aW9uKFx1MDAyNmNvbnRyb2wtXHUwMDNlY29tcGxldGlvbik7XG4gXHRpZiAoY29udHJvbC1cdTAwM2VjYW5jZWxlZClcbi1cdFx0cmV0dXJuIC1FQ0FOQ0VMRUQ7XG4rXHRcdGdvdG8gY2FuY2VsZWQ7XG4gXHRyZXR1cm4gMDtcbitcbitjYW5jZWxlZDpcbitcdHdoaWxlIChkYW1vbl9pc19ydW5uaW5nKGN0eCkpXG4rXHRcdHNjaGVkdWxlX3RpbWVvdXRfaWRsZShtc2Vjc190b19qaWZmaWVzKDEwMCkpO1xuK1x0cmV0dXJuIC1FQ0FOQ0VMRUQ7XG4rXG4gfVxuIFxuIC8qKlxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2xydV9zb3J0LmMgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5pbmRleCAyZGQwY2QwZDI2MjczMS4uZThjMzg5YWQzMjI2ZjcgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9scnVfc29ydC5jXG4rKysgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5AQCAtNDA5LDggKzQwOSwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X3R1cm4oYm9vbCBvbilcbiB7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKCFvbilcbi1cdFx0cmV0dXJuIGRhbW9uX3N0b3AoXHUwMDI2Y3R4LCAxKTtcbitcdGlmICghb24pIHtcbitcdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbiBcbiBcdGVyciA9IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnMoKTtcbiBcdGlmIChlcnIpXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vcmVjbGFpbS5jIGIvbW0vZGFtb24vcmVjbGFpbS5jXG5pbmRleCA2NDY5YjI1Y2MzNGY5Mi4uMDllOTQxZDc1ZjY3ZGQgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9yZWNsYWltLmNcbisrKyBiL21tL2RhbW9uL3JlY2xhaW0uY1xuQEAgLTMzMiw4ICszMzIsMTAgQEAgc3RhdGljIGludCBkYW1vbl9yZWNsYWltX3R1cm4oYm9vbCBvbilcbiB7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKCFvbilcbi1cdFx0cmV0dXJuIGRhbW9uX3N0b3AoXHUwMDI2Y3R4LCAxKTtcbitcdGlmICghb24pIHtcbitcdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbiBcbiBcdGVyciA9IGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycygpO1xuIFx0aWYgKGVycilcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9zeXNmcy5jIGIvbW0vZGFtb24vc3lzZnMuY1xuaW5kZXggYjY1NjUxNDk4ZTBkMTQuLjZkN2UzNmM5ZTUwOWQyIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vc3lzZnMuY1xuKysrIGIvbW0vZGFtb24vc3lzZnMuY1xuQEAgLTIyNjIsMTIgKzIyNjIsMTMgQEAgc3RhdGljIGludCBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZihzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZClcbiB7XG4gXHRpZiAoIWtkYW1vbmQtXHUwMDNlZGFtb25fY3R4KVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdHJldHVybiBkYW1vbl9zdG9wKFx1MDAyNmtkYW1vbmQtXHUwMDNlZGFtb25fY3R4LCAxKTtcbitcdGRhbW9uX3N0b3AoXHUwMDI2a2RhbW9uZC1cdTAwM2VkYW1vbl9jdHgsIDEpO1xuIFx0LypcbiBcdCAqIFRvIGFsbG93IHVzZXJzIHNob3cgZmluYWwgbW9uaXRvcmluZyByZXN1bHRzIG9mIGFscmVhZHkgdHVybmVkLW9mZlxuIFx0ICogREFNT04sIHdlIGZyZWUga2RhbW9uZC1cdTAwM2VkYW1vbl9jdHggaW4gbmV4dFxuIFx0ICogZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vbigpLCBvciBrZGFtb25kc19ucl9zdG9yZSgpXG4gXHQgKi9cbitcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoaW50ICgqZm4pKHZvaWQgKmRhdGEpLFxuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuaW5kZXggZTU2N2Y0ZWRkODBlYTcuLmFjOWMyNGI5MmVhZDg0IDEwMDY0NFxuLS0tIGEvc2FtcGxlcy9kYW1vbi9tdGllci5jXG4rKysgYi9zYW1wbGVzL2RhbW9uL210aWVyLmNcbkBAIC0xOTMsOCArMTkzLDYgQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZClcbiBcdGlmICghZXJyKVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdGlmIChkYW1vbl9pc19ydW5uaW5nKGN0eHNbMF0pKVxuLVx0XHRkYW1vbl9zdG9wKGN0eHMsIDEpO1xuIFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4c1swXSk7XG4gXHRkYW1vbl9kZXN0cm95X2N0eChjdHhzWzFdKTtcbiBcdHJldHVybiBlcnI7XG5AQCAtMjAyLDggKzIwMCw3IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KHZvaWQpXG4gXG4gc3RhdGljIHZvaWQgZGFtb25fc2FtcGxlX210aWVyX3N0b3Aodm9pZClcbiB7XG4tXHRkYW1vbl9zdG9wKGN0eHMsIDEpO1xuLVx0ZGFtb25fc3RvcChcdTAwMjZjdHhzWzFdLCAxKTtcbitcdGRhbW9uX3N0b3AoY3R4cywgMik7XG4gXHRkYW1vbl9kZXN0cm95X2N0eChjdHhzWzBdKTtcbiBcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMV0pO1xuIH1cbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3ByY2wuYyBiL3NhbXBsZXMvZGFtb24vcHJjbC5jXG5pbmRleCBlZGVhZTE0NWM0YThhZi4uODQyMDk5YmQ2MjI4NjEgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL2RhbW9uL3ByY2wuY1xuKysrIGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcbkBAIC0xMTMsMTAgKzExMyw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3ByY2xfc3RhcnQodm9pZClcbiBcbiBcdHJlcGVhdF9jYWxsX2NvbnRyb2wuZGF0YSA9IGN0eDtcbiBcdGVyciA9IGRhbW9uX2NhbGwoY3R4LCBcdTAwMjZyZXBlYXRfY2FsbF9jb250cm9sKTtcbi1cdGlmIChlcnIpIHtcbi1cdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuK1x0aWYgKGVycilcbiBcdFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcbi1cdH1cbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vd3NzZS5jIGIvc2FtcGxlcy9kYW1vbi93c3NlLmNcbmluZGV4IGZmNWU4YTg5MGY0NDhjLi4zN2ZkNWRhMjAxNTg4NSAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvZGFtb24vd3NzZS5jXG4rKysgYi9zYW1wbGVzL2RhbW9uL3dzc2UuY1xuQEAgLTkzLDEwICs5Myw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3dzc2Vfc3RhcnQodm9pZClcbiBcdH1cbiBcdHJlcGVhdF9jYWxsX2NvbnRyb2wuZGF0YSA9IGN0eDtcbiBcdGVyciA9IGRhbW9uX2NhbGwoY3R4LCBcdTAwMjZyZXBlYXRfY2FsbF9jb250cm9sKTtcbi1cdGlmIChlcnIpIHtcbi1cdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuK1x0aWYgKGVycilcbiBcdFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcbi1cdH1cbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjE6MDU6NTAuMzg4NTc5MjYzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ5MTE3NDE4ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgREFNT04gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdOKAmXMgdHdlYWtpbmcgdGhlIERhdGEgQWNjZXNzIE1vbml0b3IgKERBTU9OKSBzdWJzeXN0ZW0gd2l0aGluIHRoZSBMaW51eCBrZXJuZWwuIFNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoZXkncmUgY2hhbmdpbmcgdGhlIHJldHVybiB0eXBlIG9mIGBkYW1vbl9zdG9wYCB0byBgdm9pZGAgaW5zdGVhZCBvZiBgaW50YCwgYW5kIGFkanVzdGluZyBgZGFtb25fY2FsbGAgdG8gaGFuZGxlIGNvbnRleHQgc3RvcHBpbmcgbW9yZSBncmFjZWZ1bGx5IGlmIHRoZSBjYWxsIGlzIGNhbmNlbGVkLiBGaW5lLiBUaGV5J3ZlIGFsc28gdXBkYXRlZCB0aGUgY2FsbGVycyBvZiBgZGFtb25fc3RvcGAgYWNyb3NzIHRoZSBjb2RlYmFzZSDigJMgYGxydV9zb3J0LmNgLCBgcmVjbGFpbS5jYCwgYHN5c2ZzLmNgLCBhbmQgc2V2ZXJhbCBzYW1wbGUgZmlsZXMuXG5cbkdpdmVuIG15IGtub3dsZWRnZSBvZiB0aGUga2VybmVsLCBJIGNhbiBjb25maXJtIHRoYXQgREFNT04gaXRzZWxmIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsOyBpdCdzIGEgY3JpdGljYWwgY29tcG9uZW50IGluIG1lbW9yeSBtYW5hZ2VtZW50LCBzbyBpdCBoYXMgdG8gYmUuIFRoZSBjaGFuZ2VzICphcmUqIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBhcyB0aGUgcGF0Y2ggc3VtbWFyeSBpbmRpY2F0ZXMuXG5cbk15IGd1dCBmZWVsaW5nIGlzIHRoaXMgaXMgYSByZWxhdGl2ZWx5IGxvdy1yaXNrIG1vZGlmaWNhdGlvbiwgYnV0IGl0J3MgZGVhbGluZyB3aXRoIGEgY29yZSBjb21wb25lbnQsIHNvIHdlIG5lZWQgdG8gYmUgdGhvcm91Z2guIEknZCBkZWZpbml0ZWx5IHdhbnQgdG8gZnV6eiB0aGlzLiBJdCdzIHRpbWUgdG8gY2hlY2sgd2hhdCB0aGUgcmVsZXZhbnQgQ09ORklHIG9wdGlvbnMgYXJlIGZvciBEQU1PTi4gTXkgYmVzdCBiZXQgaXMgdG8gdXNlIGBncmVwcGVyYCBhbmQgc2VhcmNoIGBtbS9kYW1vbi9LY29uZmlnYCBvciBgbW0vS2NvbmZpZ2AgZm9yIGBDT05GSUdfREFNT05gIG9yIGFueXRoaW5nIHNpbWlsYXIgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBjb25maWd1cmF0aW9uIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MDgsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNjowNS4zMDAzMjQ1OThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3OTkzNzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEQU1PTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz0zPW1lbnUgXFxcIkRhdGEgQWNjZXNzIE1vbml0b3JpbmdcXFwiXFxubW0vZGFtb24vS2NvbmZpZy00LVxcbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cXG5tbS9kYW1vbi9LY29uZmlnLTYtXFx0Ym9vbCBcXFwiREFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xNC1cXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9LY29uZmlnLTE2LVxcdGJvb2wgXFxcIkNoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0yNS1cXG5tbS9kYW1vbi9LY29uZmlnOjI2OmNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy0yNy1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vblxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0zNy1cXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxcbm1tL2RhbW9uL0tjb25maWctMzktXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy00Ni1cXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNTUtXFxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNTctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy02Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xcbm1tL2RhbW9uL0tjb25maWctNjktXFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy03NS1cXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy03Ny1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctODctXFxubW0vZGFtb24vS2NvbmZpZzo4ODpjb25maWcgREFNT05fUkVDTEFJTVxcbm1tL2RhbW9uL0tjb25maWctODktXFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxcbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbm1tL2RhbW9uL0tjb25maWctMTAxLVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxcbm1tL2RhbW9uL0tjb25maWctMTA5LVxcdGJvb2wgXFxcIkJ1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cXG5tbS9kYW1vbi9LY29uZmlnOjExNjpjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cXHRib29sIFxcXCJFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNjowNS40NjgzMjcyODVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjE2NDc1OTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgREFNT04gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIERBTU9OIHBhdGNoLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGtleSBjb25maWd1cmF0aW9ucyBpbnZvbHZlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGJlaW5nIHR3ZWFrZWQuIEkgc2VlIHdlIGhhdmUgREFNT04gaXRzZWxmLCBhbmQgdGhlbiBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHZpcnR1YWwgYW5kIHBoeXNpY2FsIGFkZHJlc3NlcyAoYERBTU9OX1ZBRERSYCwgYERBTU9OX1BBRERSYCksIHRoZSBzeXN0ZW0gZmlsZSBzeXN0ZW0gaW50ZXJmYWNlIChgREFNT05fU1lTRlNgKSwgcmVjbGFpbSBiZWhhdmlvciAoYERBTU9OX1JFQ0xBSU1gKSwgYW5kIExSVSBzb3J0aW5nIChgREFNT05fTFJVX1NPUlRgKS4gVGhpcyBnaXZlcyBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gYXNzZXNzIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlcy5cblxuTmV4dCwgSSBuZWVkIHRvIGxvb2sgYXQgdGhlIG1lYXQgb2YgdGhlIGNvZGUuIEknbGwgbmVlZCB0byBmb2N1cyBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkLiBUaGUgcGF0Y2ggdG91Y2hlcyBgZGFtb25fc3RhcnRgLCBgX19kYW1vbl9zdG9wYCwgYGRhbW9uX3N0b3BgLCBgZGFtb25fY2FsbGAsIGBkYW1vbl9scnVfc29ydF90dXJuYCwgYGRhbW9uX3JlY2xhaW1fdHVybmAsIGFuZCBgZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmZgLiBJJ2xsIHdhbnQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGVzZSBmdW5jdGlvbnMuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBkYW1vbl9jYWxsYCBhbmQgYGRhbW9uX3N0b3BgIGFuZCB0aGVuIHNlZSBob3cgdGhleSBhcmUgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcxOSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNjowOS4wODQ4MDY0MzNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4NTg5OTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX2NhbGxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL2NvcmUuYz05NTk9c3RhdGljIGJvb2wgZGFtb25fdmFsaWRfaW50ZXJ2YWxzX2dvYWwoc3RydWN0IGRhbW9uX2F0dHJzICphdHRycylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05ODUtICogc2V0dXAgb2YgZGFtb25fY3R4IGJlZm9yZSBjYWxsaW5nIGRhbW9uX3N0YXJ0KCkuICBTb21lIG9mIHRoZSBBUEkgY2FsbGVyc1xcbm1tL2RhbW9uL2NvcmUuYzo5ODY6ICogYWxzbyBpbmRpcmVjdGx5IGNhbGwgdGhpcyBmdW5jdGlvbiB2aWEgZGFtb25fY2FsbCgpIC1cXHUwMDNlIGRhbW9uX2NvbW1pdCgpIGZvclxcbm1tL2RhbW9uL2NvcmUuYy05ODctICogb25saW5lIHBhcmFtZXRlcnMgdXBkYXRlcy4gIEZpbmFsbHksIGtkYW1vbmRfZm4oKSBpdHNlbGYgdXNlIHRoaXMgZm9yXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTA4NT1zdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbChcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMTA1LSAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBmcm9tIHBhcmFtZXRlcnMtdXBkYXRlIHNhZmUgY29udGV4dCwgbGlrZVxcbm1tL2RhbW9uL2NvcmUuYzoxMTA2OiAqIGRhbW9uX2NhbGwoKS5cXG5tbS9kYW1vbi9jb3JlLmMtMTEwNy0gKi9cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xNzIyPXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfdGVzdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3NDgtICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGZyb20gcGFyYW1ldGVycy11cGRhdGUgc2FmZSBjb250ZXh0LCBsaWtlXFxubW0vZGFtb24vY29yZS5jOjE3NDk6ICogZGFtb25fY2FsbCgpLlxcbm1tL2RhbW9uL2NvcmUuYy0xNzUwLSAqL1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTE5ODE9aW50IGRhbW9uX2tkYW1vbmRfcGlkKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xOTkyLS8qKlxcbm1tL2RhbW9uL2NvcmUuYzoxOTkzOiAqIGRhbW9uX2NhbGwoKSAtIEludm9rZSBhIGdpdmVuIGZ1bmN0aW9uIG9uIERBTU9OIHdvcmtlciB0aHJlYWQgKGtkYW1vbmQpLlxcbm1tL2RhbW9uL2NvcmUuYy0xOTk0LSAqIEBjdHg6XFx0REFNT04gY29udGV4dCB0byBjYWxsIHRoZSBmdW5jdGlvbiBmb3IuXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk5Ny0gKiBBc2sgREFNT04gd29ya2VyIHRocmVhZCAoa2RhbW9uZCkgb2YgQGN0eCB0byBjYWxsIGEgZnVuY3Rpb24gd2l0aCBhblxcbm1tL2RhbW9uL2NvcmUuYzoxOTk4OiAqIGFyZ3VtZW50IGRhdGEgdGhhdCByZXNwZWN0aXZlbHkgcGFzc2VkIHZpYSBcXHUwMDI2ZGFtb25fY2FsbF9jb250cm9sLVxcdTAwM2VmbiBhbmRcXG5tbS9kYW1vbi9jb3JlLmM6MTk5OTogKiBcXHUwMDI2ZGFtb25fY2FsbF9jb250cm9sLVxcdTAwM2VkYXRhIG9mIEBjb250cm9sLiAgSWYgXFx1MDAyNmRhbW9uX2NhbGxfY29udHJvbC1cXHUwMDNlcmVwZWF0IG9mXFxubW0vZGFtb24vY29yZS5jLTIwMDAtICogQGNvbnRyb2wgaXMgdW5zZXQsIGZ1cnRoZXIgd2FpdCB1bnRpbCB0aGUga2RhbW9uZCBmaW5pc2hlcyBoYW5kbGluZyBvZiB0aGVcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMDA2LSAqIHN5bmNocm9uaXphdGlvbi4gIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIHdpbGwgYmUgc2F2ZWQgaW5cXG5tbS9kYW1vbi9jb3JlLmM6MjAwNzogKiBcXHUwMDI2ZGFtb25fY2FsbF9jb250cm9sLVxcdTAwM2VyZXR1cm5fY29kZS5cXG5tbS9kYW1vbi9jb3JlLmMtMjAwOC0gKlxcbi0tXFxubW0vZGFtb24vY29yZS5jLTIwMTYtICovXFxubW0vZGFtb24vY29yZS5jOjIwMTc6aW50IGRhbW9uX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sKVxcbm1tL2RhbW9uL2NvcmUuYy0yMDE4LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zNTI3PXN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9jdHgoc3RydWN0IGRhbW9uX2N0eCAqYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zNTMyLS8qXFxubW0vZGFtb24vY29yZS5jOjM1MzM6ICoga2RhbW9uZF9jYWxsKCkgLSBoYW5kbGUgZGFtb25fY2FsbF9jb250cm9sIG9iamVjdHMuXFxubW0vZGFtb24vY29yZS5jLTM1MzQtICogQGN0eDpcXHRUaGUgXFx1MDAyNnN0cnVjdCBkYW1vbl9jdHggb2YgdGhlIGtkYW1vbmQuXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzUzNi0gKlxcbm1tL2RhbW9uL2NvcmUuYzozNTM3OiAqIElmIHRoZXJlIGFyZSBcXHUwMDI2c3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCByZXF1ZXN0cyB0aGF0IHJlZ2lzdGVyZWQgdmlhXFxubW0vZGFtb24vY29yZS5jOjM1Mzg6ICogXFx1MDAyNmRhbW9uX2NhbGwoKSBvbiBAY3R4LCBkbyBvciBjYW5jZWwgdGhlIGludm9jYXRpb24gb2YgdGhlIGZ1bmN0aW9uIGRlcGVuZGluZ1xcbm1tL2RhbW9uL2NvcmUuYy0zNTM5LSAqIG9uIEBjYW5jZWwuICBAY2FuY2VsIGlzIHNldCB3aGVuIHRoZSBrZGFtb25kIGlzIGFscmVhZHkgb3V0IG9mIHRoZSBtYWluIGxvb3BcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zNTQyPXN0YXRpYyB2b2lkIGtkYW1vbmRfY2FsbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIGJvb2wgY2FuY2VsKVxcbm1tL2RhbW9uL2NvcmUuYy0zNTQzLXtcXG5tbS9kYW1vbi9jb3JlLmM6MzU0NDpcXHRzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sLCAqbmV4dDtcXG5tbS9kYW1vbi9jb3JlLmMtMzU0NS1cXHRMSVNUX0hFQUQoY29udHJvbHMpO1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTM2MjY9c3RhdGljIGludCBrZGFtb25kX2ZuKHZvaWQgKmRhdGEpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzY5NS1cXHRcXHRcXHRrZGFtb25kX3VzbGVlcChjdHgtXFx1MDAzZWF0dHJzLnNhbXBsZV9pbnRlcnZhbCk7XFxubW0vZGFtb24vY29yZS5jOjM2OTY6XFx0XFx0XFx0LyogYWxsb3cgY2FsbGVyIHVuc2V0IHBhdXNlIHZpYSBkYW1vbl9jYWxsKCkgKi9cXG5tbS9kYW1vbi9jb3JlLmMtMzY5Ny1cXHRcXHRcXHRrZGFtb25kX2NhbGwoY3R4LCBmYWxzZSk7XFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jPTM0Nz1zdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmUoY29uc3QgY2hhciAqdmFsLFxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zNTEtXFx0aW50IGVycjtcXG5tbS9kYW1vbi9scnVfc29ydC5jOjM1MjpcXHRzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sIGNvbnRyb2wgPSB7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zNTMtXFx0XFx0LmZuID0gZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19mbixcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzY3LVxcdC8qXFxubW0vZGFtb24vbHJ1X3NvcnQuYzozNjg6XFx0ICogU2tpcCBkYW1vbl9jYWxsKCkgaWYgY3R4IGlzIG5vdCBpbml0aWFsaXplZCB0byBhdm9pZFxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzY5LVxcdCAqIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS5cXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzczLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM6Mzc0OlxcdGVyciA9IGRhbW9uX2NhbGwoY3R4LCBcXHUwMDI2Y29udHJvbCk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zNzUtXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jPTM4NT1tb2R1bGVfcGFyYW1fY2IoY29tbWl0X2lucHV0cywgXFx1MDAyNmNvbW1pdF9pbnB1dHNfcGFyYW1fb3BzLCBcXHUwMDI2Y29tbWl0X2lucHV0cywgMDYwMCk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zODYtXFxubW0vZGFtb24vbHJ1X3NvcnQuYzozODc6c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9kYW1vbl9jYWxsX2ZuKHZvaWQgKmFyZylcXG5tbS9kYW1vbi9scnVfc29ydC5jLTM4OC17XFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTQwMi1cXG5tbS9kYW1vbi9scnVfc29ydC5jOjQwMzpzdGF0aWMgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCBjYWxsX2NvbnRyb2wgPSB7XFxubW0vZGFtb24vbHJ1X3NvcnQuYzo0MDQ6XFx0LmZuID0gZGFtb25fbHJ1X3NvcnRfZGFtb25fY2FsbF9mbixcXG5tbS9kYW1vbi9scnVfc29ydC5jLTQwNS1cXHQucmVwZWF0ID0gdHJ1ZSxcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM9NDA4PXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfdHVybihib29sIG9uKVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy00MjMtXFx0XFx0cmV0dXJuIGVycjtcXG5tbS9kYW1vbi9scnVfc29ydC5jOjQyNDpcXHRyZXR1cm4gZGFtb25fY2FsbChjdHgsIFxcdTAwMjZjYWxsX2NvbnRyb2wpO1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtNDI1LX1cXG4tLVxcbm1tL2RhbW9uL3JlY2xhaW0uYz0yNzQ9c3RhdGljIGludCBkYW1vbl9yZWNsYWltX2NvbW1pdF9pbnB1dHNfc3RvcmUoY29uc3QgY2hhciAqdmFsLFxcbi0tXFxubW0vZGFtb24vcmVjbGFpbS5jLTI3OC1cXHRpbnQgZXJyO1xcbm1tL2RhbW9uL3JlY2xhaW0uYzoyNzk6XFx0c3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCBjb250cm9sID0ge1xcbm1tL2RhbW9uL3JlY2xhaW0uYy0yODAtXFx0XFx0LmZuID0gZGFtb25fcmVjbGFpbV9jb21taXRfaW5wdXRzX2ZuLFxcbi0tXFxubW0vZGFtb24vcmVjbGFpbS5jLTI5NC1cXHQvKlxcbm1tL2RhbW9uL3JlY2xhaW0uYzoyOTU6XFx0ICogU2tpcCBkYW1vbl9jYWxsKCkgaWYgY3R4IGlzIG5vdCBpbml0aWFsaXplZCB0byBhdm9pZFxcbm1tL2RhbW9uL3JlY2xhaW0uYy0yOTYtXFx0ICogTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLlxcbi0tXFxubW0vZGFtb24vcmVjbGFpbS5jLTMwMC1cXG5tbS9kYW1vbi9yZWNsYWltLmM6MzAxOlxcdGVyciA9IGRhbW9uX2NhbGwoY3R4LCBcXHUwMDI2Y29udHJvbCk7XFxubW0vZGFtb24vcmVjbGFpbS5jLTMwMi1cXG4tLVxcbm1tL2RhbW9uL3JlY2xhaW0uYz0zMTI9bW9kdWxlX3BhcmFtX2NiKGNvbW1pdF9pbnB1dHMsIFxcdTAwMjZjb21taXRfaW5wdXRzX3BhcmFtX29wcywgXFx1MDAyNmNvbW1pdF9pbnB1dHMsIDA2MDApO1xcbm1tL2RhbW9uL3JlY2xhaW0uYy0zMTMtXFxubW0vZGFtb24vcmVjbGFpbS5jOjMxNDpzdGF0aWMgaW50IGRhbW9uX3JlY2xhaW1fZGFtb25fY2FsbF9mbih2b2lkICphcmcpXFxubW0vZGFtb24vcmVjbGFpbS5jLTMxNS17XFxuLS1cXG5tbS9kYW1vbi9yZWNsYWltLmMtMzI1LVxcbm1tL2RhbW9uL3JlY2xhaW0uYzozMjY6c3RhdGljIHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgY2FsbF9jb250cm9sID0ge1xcbm1tL2RhbW9uL3JlY2xhaW0uYzozMjc6XFx0LmZuID0gZGFtb25fcmVjbGFpbV9kYW1vbl9jYWxsX2ZuLFxcbm1tL2RhbW9uL3JlY2xhaW0uYy0zMjgtXFx0LnJlcGVhdCA9IHRydWUsXFxuLS1cXG5tbS9kYW1vbi9yZWNsYWltLmM9MzMxPXN0YXRpYyBpbnQgZGFtb25fcmVjbGFpbV90dXJuKGJvb2wgb24pXFxuLS1cXG5tbS9kYW1vbi9yZWNsYWltLmMtMzQ2LVxcdFxcdHJldHVybiBlcnI7XFxubW0vZGFtb24vcmVjbGFpbS5jOjM0NzpcXHRyZXR1cm4gZGFtb25fY2FsbChjdHgsIFxcdTAwMjZjYWxsX2NvbnRyb2wpO1xcbm1tL2RhbW9uL3JlY2xhaW0uYy0zNDgtfVxcbi0tXFxubW0vZGFtb24vc3RhdC5jPTExMz1zdGF0aWMgdm9pZCBkYW1vbl9zdGF0X3NldF9pZGxldGltZV9wZXJjZW50aWxlcyhzdHJ1Y3QgZGFtb25fY3R4ICpjKVxcbi0tXFxubW0vZGFtb24vc3RhdC5jLTEzNC1cXG5tbS9kYW1vbi9zdGF0LmM6MTM1OnN0YXRpYyBpbnQgZGFtb25fc3RhdF9kYW1vbl9jYWxsX2ZuKHZvaWQgKmRhdGEpXFxubW0vZGFtb24vc3RhdC5jLTEzNi17XFxuLS1cXG5tbS9kYW1vbi9zdGF0LmM9MTUxPXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zdGF0X2J1aWxkX2N0eCh2b2lkKVxcbi0tXFxubW0vZGFtb24vc3RhdC5jLTE5NC1cXG5tbS9kYW1vbi9zdGF0LmM6MTk1OnN0YXRpYyBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sIGNhbGxfY29udHJvbCA9IHtcXG5tbS9kYW1vbi9zdGF0LmM6MTk2OlxcdC5mbiA9IGRhbW9uX3N0YXRfZGFtb25fY2FsbF9mbixcXG5tbS9kYW1vbi9zdGF0LmMtMTk3LVxcdC5yZXBlYXQgPSB0cnVlLFxcbi0tXFxubW0vZGFtb24vc3RhdC5jPTIwMD1zdGF0aWMgaW50IGRhbW9uX3N0YXRfc3RhcnQodm9pZClcXG4tLVxcbm1tL2RhbW9uL3N0YXQuYy0yMjEtXFx0Y2FsbF9jb250cm9sLmRhdGEgPSBkYW1vbl9zdGF0X2NvbnRleHQ7XFxubW0vZGFtb24vc3RhdC5jOjIyMjpcXHRyZXR1cm4gZGFtb25fY2FsbChkYW1vbl9zdGF0X2NvbnRleHQsIFxcdTAwMjZjYWxsX2NvbnRyb2wpO1xcbm1tL2RhbW9uL3N0YXQuYy0yMjMtfVxcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0yMjE2PXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vbihzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZClcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjIxOC1cXHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHg7XFxubW0vZGFtb24vc3lzZnMuYzoyMjE5OlxcdHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgKnJlcGVhdF9jYWxsX2NvbnRyb2w7XFxubW0vZGFtb24vc3lzZnMuYy0yMjIwLVxcdGludCBlcnI7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIyNTUtXFx0cmVwZWF0X2NhbGxfY29udHJvbC1cXHUwMDNlZGVhbGxvY19vbl9jYW5jZWwgPSB0cnVlO1xcbm1tL2RhbW9uL3N5c2ZzLmM6MjI1NjpcXHRpZiAoZGFtb25fY2FsbChjdHgsIHJlcGVhdF9jYWxsX2NvbnRyb2wpKVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjI1Ny1cXHRcXHRrZnJlZShyZXBlYXRfY2FsbF9jb250cm9sKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MjI2MT1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmKHN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kICprZGFtb25kKVxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMjczLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MjI3NDpzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoaW50ICgqZm4pKHZvaWQgKmRhdGEpLFxcbm1tL2RhbW9uL3N5c2ZzLmMtMjI3NS1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZClcXG5tbS9kYW1vbi9zeXNmcy5jLTIyNzYte1xcbm1tL2RhbW9uL3N5c2ZzLmM6MjI3NzpcXHRzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sIGNhbGxfY29udHJvbCA9IHt9O1xcbm1tL2RhbW9uL3N5c2ZzLmMtMjI3OC1cXHRpbnQgZXJyO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMjgzLVxcdGNhbGxfY29udHJvbC5kYXRhID0ga2RhbW9uZDtcXG5tbS9kYW1vbi9zeXNmcy5jOjIyODQ6XFx0ZXJyID0gZGFtb25fY2FsbChrZGFtb25kLVxcdTAwM2VkYW1vbl9jdHgsIFxcdTAwMjZjYWxsX2NvbnRyb2wpO1xcbm1tL2RhbW9uL3N5c2ZzLmMtMjI4NS1cXHRyZXR1cm4gZXJyID8gZXJyIDogY2FsbF9jb250cm9sLnJldHVybl9jb2RlO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0yMzM3PXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfaGFuZGxlX2NtZChlbnVtIGRhbW9uX3N5c2ZzX2NtZCBjbWQsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIzNDgtXFx0Y2FzZSBEQU1PTl9TWVNGU19DTURfQ09NTUlUOlxcbm1tL2RhbW9uL3N5c2ZzLmM6MjM0OTpcXHRcXHRyZXR1cm4gZGFtb25fc3lzZnNfZGFtb25fY2FsbChcXG5tbS9kYW1vbi9zeXNmcy5jLTIzNTAtXFx0XFx0XFx0XFx0ZGFtb25fc3lzZnNfY29tbWl0X2lucHV0LCBrZGFtb25kKTtcXG5tbS9kYW1vbi9zeXNmcy5jLTIzNTEtXFx0Y2FzZSBEQU1PTl9TWVNGU19DTURfQ09NTUlUX1NDSEVNRVNfUVVPVEFfR09BTFM6XFxubW0vZGFtb24vc3lzZnMuYzoyMzUyOlxcdFxcdHJldHVybiBkYW1vbl9zeXNmc19kYW1vbl9jYWxsKFxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM1My1cXHRcXHRcXHRcXHRkYW1vbl9zeXNmc19jb21taXRfc2NoZW1lc19xdW90YV9nb2FscyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM1NS1cXHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19TVEFUUzpcXG5tbS9kYW1vbi9zeXNmcy5jOjIzNTY6XFx0XFx0cmV0dXJuIGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoXFxubW0vZGFtb24vc3lzZnMuYy0yMzU3LVxcdFxcdFxcdFxcdGRhbW9uX3N5c2ZzX3VwZF9zY2hlbWVzX3N0YXRzLCBrZGFtb25kKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM2NS1cXHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19FRkZFQ1RJVkVfUVVPVEFTOlxcbm1tL2RhbW9uL3N5c2ZzLmM6MjM2NjpcXHRcXHRyZXR1cm4gZGFtb25fc3lzZnNfZGFtb25fY2FsbChcXG5tbS9kYW1vbi9zeXNmcy5jLTIzNjctXFx0XFx0XFx0XFx0ZGFtb25fc3lzZnNfdXBkX3NjaGVtZXNfZWZmZWN0aXZlX3F1b3RhcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM2OS1cXHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfVFVORURfSU5URVJWQUxTOlxcbm1tL2RhbW9uL3N5c2ZzLmM6MjM3MDpcXHRcXHRyZXR1cm4gZGFtb25fc3lzZnNfZGFtb25fY2FsbChcXG5tbS9kYW1vbi9zeXNmcy5jLTIzNzEtXFx0XFx0XFx0XFx0ZGFtb25fc3lzZnNfdXBkX3R1bmVkX2ludGVydmFscywga2RhbW9uZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDIxOjA2OjA5LjI3MzQwMjQwOFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMjQ3MjI2MzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRBTU9OIEtlcm5lbCBNb2R1bGUgVXBkYXRlIC0gSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSBzZWUgd2UgaGF2ZSBzb21lIHVwZGF0ZXMgY29uY2VudHJhdGVkIHdpdGhpbiB0aGUgREFNT04gc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYG1tL2RhbW9uL2NvcmUuY2AsIGBtbS9kYW1vbi9scnVfc29ydC5jYCwgYG1tL2RhbW9uL3JlY2xhaW0uY2AsIGFuZCBgbW0vZGFtb24vc3lzZnMuY2AuIExvb2tzIGxpa2Ugd2UncmUgcmVmaW5pbmcgREFNT04ncyBjb3JlIGZ1bmN0aW9uYWxpdHkuXG5cblRoZSBtb2RpZmljYXRpb25zIGFyZSBzcHJlYWQgYWNyb3NzIHRoZSBsaWZlY3ljbGUgbWFuYWdlbWVudCwgd2l0aCBjaGFuZ2VzIHRvIGBkYW1vbl9zdGFydGAsIGBfX2RhbW9uX3N0b3BgLCBgZGFtb25fc3RvcGAsIGFuZCBgZGFtb25fY2FsbGAuIFdlJ3ZlIGFsc28gZ290IHNvbWUgdHVuaW5nIGluIHRoZSBvcGVyYXRpb25hbCBsb29wIHdpdGggYGRhbW9uX2xydV9zb3J0X3R1cm5gLCBgZGFtb25fcmVjbGFpbV90dXJuYCwgYW5kIGEgc3lzZnMgdXBkYXRlLCBgZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmZgLiBJbnRlcmVzdGluZy4gTG9va3MgbGlrZSB3ZSdyZSBnZXR0aW5nIG1vcmUgY29udHJvbCBhbmQgcG90ZW50aWFsbHkgbW9yZSBlZmZpY2llbnQgbWVtb3J5IG1vbml0b3JpbmcgYW5kIG1hbmFnZW1lbnQuXG5cbk5vdywgbGV0J3Mgc2VlIHdoaWNoIGZlYXR1cmVzIHdlJ3JlIGJyaW5naW5nIG9ubGluZS4gVGhlIGNvbmZpZyBjaGFuZ2VzIGluY2x1ZGUgZW5hYmxpbmcgYERBTU9OYCwgYERBTU9OX1ZBRERSYCwgYERBTU9OX1BBRERSYCwgYERBTU9OX1NZU0ZTYCwgYERBTU9OX1JFQ0xBSU1gLCBhbmQgYERBTU9OX0xSVV9TT1JUYC4gVGhpcyBjb25maXJtcyB3ZSdyZSBhaW1pbmcgZm9yIGEgY29tcHJlaGVuc2l2ZSBEQU1PTiBpbXBsZW1lbnRhdGlvbiwgaGFuZGxpbmcgYm90aCB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzZXMsIGludGVncmF0ZWQgd2l0aCB0aGUgc3lzZnMgaW50ZXJmYWNlLCBhbmQgZW1wbG95aW5nIHJlY2xhaW0gYW5kIExSVS1iYXNlZCBzb3J0aW5nIHN0cmF0ZWdpZXMuXG5cbkJlZm9yZSBkaXZpbmcgaW50byB0aGUgY29kZSBpdHNlbGYsIGxldCBtZSBxdWlja2x5IGdsYW5jZSBhdCB0aGUgYHNhbXBsZXMvZGFtb24vYCBkaXJlY3RvcnkuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlc2UgbmV3IGNvbmZpZ3VyYXRpb25zIGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIGFuZCBhbnkgZXhhbXBsZSB3b3JrZmxvd3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4OTMsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjE6MDY6MjAuNTIwNjMxODZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5NjcxOTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTQU1QTEVfREFNT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic2FtcGxlcy9kYW1vbi9LY29uZmlnPTM9bWVudSBcXFwiREFNT04gU2FtcGxlc1xcXCJcXG5zYW1wbGVzL2RhbW9uL0tjb25maWctNC1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWc6NTpjb25maWcgU0FNUExFX0RBTU9OX1dTU0VcXG5zYW1wbGVzL2RhbW9uL0tjb25maWctNi1cXHRib29sIFxcXCJEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciB3b3JraW5nIHNldCBzaXplIGVzdGltYXRpb25cXFwiXFxuLS1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMTYtXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnOjE3OmNvbmZpZyBTQU1QTEVfREFNT05fUFJDTFxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0xOC1cXHRib29sIFxcXCJEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlIHJlY2xhbWF0aW9uXFxcIlxcbi0tXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTI5LVxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZzozMDpjb25maWcgU0FNUExFX0RBTU9OX01USUVSXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNjoyMC43NTAzMTAzMjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjU5NTAwNDIyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBEQU1PTiBDb25maWd1cmF0aW9uIENoZWNrKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVwZGF0ZSB0aGUgREFNT04gY29uZmlncy4gSSdtIGdvaW5nIHRvIGFkZCBgU0FNUExFX0RBTU9OX1dTU0VgLCBgU0FNUExFX0RBTU9OX1BSQ0xgLCBhbmQgYFNBTVBMRV9EQU1PTl9NVElFUmAuXG5cbk5vdywgcmVnYXJkaW5nIHRoZSBmb2N1cyBzeW1ib2xzLCBJJ20gZ29pbmcgdG8gd29yayB3aXRoIGBkYW1vbl9zdGFydGAsIGBkYW1vbl9zdG9wYCwgYGRhbW9uX2NhbGxgLCBgZGFtb25fbHJ1X3NvcnRfdHVybmAsIGBkYW1vbl9yZWNsYWltX3R1cm5gLCBhbmQgYGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmYC4gSSdsbCBrZWVwIGFuIGV5ZSBvdXQgZm9yIG90aGVyIHJlbGV2YW50IGZ1bmN0aW9ucywgYWx0aG91Z2ggSSBrbm93IGBfX2RhbW9uX3N0b3BgIGlzIHN0YXRpYyBhbmQgaXNuJ3Qgc29tZXRoaW5nIEkgY2FuIGRpcmVjdGx5IGZvY3VzIG9uLiBgZGFtb25fc3RvcGAgY2FsbHMgdGhhdCBmdW5jdGlvbiwgc28gSSdtIG5vdCBvdmVybG9va2luZyBpdC5cblxuSSdtIGFsc28gbG9va2luZyBhdCB0aGUgZXhpc3RpbmcgY29uZmlncy4gSSBub3RpY2VkIGBEQU1PTl9TVEFUYCwgYnV0IHRoZSBwYXRjaCBkaWRuJ3QgdG91Y2ggYG1tL2RhbW9uL3N0YXQuY2AgZXZlbiB0aG91Z2ggYGRhbW9uX3N0YXRfc3RhcnRgIGNhbGxzIGBkYW1vbl9jYWxsYC4gVGhlIHBhdGNoIGNoYW5nZXM6IGBpbmNsdWRlL2xpbnV4L2RhbW9uLmhgLCBgbW0vZGFtb24vY29yZS5jYCwgYG1tL2RhbW9uL2xydV9zb3J0LmNgLCBgbW0vZGFtb24vcmVjbGFpbS5jYCwgYG1tL2RhbW9uL3N5c2ZzLmNgLCBhbmQgdGhlIHNhbXBsZXMgKGBzYW1wbGVzL2RhbW9uL210aWVyLmNgLCBgc2FtcGxlcy9kYW1vbi9wcmNsLmNgLCBgc2FtcGxlcy9kYW1vbi93c3NlLmNgKS5cblxuU28sIEknbSBkZWFsaW5nIHdpdGggYERBTU9OYCwgYERBTU9OX1ZBRERSYCwgYERBTU9OX1BBRERSYCwgYERBTU9OX1NZU0ZTYCwgYERBTU9OX1JFQ0xBSU1gLCBgREFNT05fTFJVX1NPUlRgLCBhbG9uZyB3aXRoIHRoZSBuZXcgc2FtcGxlcy4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgREFNT05fVkFERFJgIGFuZCBgREFNT05fUEFERFJgIGFyZSBzdGlsbCByZXF1aXJlZCwgc2luY2UgdGhleSBhcmUgZXNzZW50aWFsIGZvciB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlIG9wZXJhdGlvbnMsIGFuZCBhcmUgdXN1YWxseSBuZWVkZWQgZm9yIERBTU9OIHRvIGZ1bmN0aW9uLiBJJ2xsIGRvIGEgZmluYWwgY2hlY2sgdG8gbWFrZSBzdXJlIEkndmUgZ290IGV2ZXJ5dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjQyLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDIxOjA2OjQ3LjM0NTMxODMxN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI2MzY1NzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb24gREFNT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9LY29uZmlnPTE1PWNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9LY29uZmlnLTE2LVxcdGJvb2wgXFxcIkNoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXFxcIlxcbm1tL2RhbW9uL0tjb25maWc6MTc6XFx0ZGVwZW5kcyBvbiBEQU1PTlxcbm1tL2RhbW9uL0tjb25maWctMTgtXFx0aGVscFxcbi0tXFxubW0vZGFtb24vS2NvbmZpZz0yNj1jb25maWcgREFNT05fS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctMjctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb25cXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5tbS9kYW1vbi9LY29uZmlnOjI4OlxcdGRlcGVuZHMgb24gREFNT04gXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbm1tL2RhbW9uL0tjb25maWctMjktXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWc9Mzg9Y29uZmlnIERBTU9OX1ZBRERSXFxubW0vZGFtb24vS2NvbmZpZy0zOS1cXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcXFwiXFxubW0vZGFtb24vS2NvbmZpZzo0MDpcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IE1NVVxcbm1tL2RhbW9uL0tjb25maWctNDEtXFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnPTQ3PWNvbmZpZyBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVxcXCJcXG5tbS9kYW1vbi9LY29uZmlnOjQ5OlxcdGRlcGVuZHMgb24gREFNT04gXFx1MDAyNlxcdTAwMjYgTU1VXFxubW0vZGFtb24vS2NvbmZpZy01MC1cXHRzZWxlY3QgUEFHRV9JRExFX0ZMQUdcXG4tLVxcbm1tL2RhbW9uL0tjb25maWc9NTY9Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1RcXG5tbS9kYW1vbi9LY29uZmlnLTU3LVxcdGJvb2wgXFxcIlRlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5tbS9kYW1vbi9LY29uZmlnOjU4OlxcdGRlcGVuZHMgb24gREFNT05fVkFERFIgXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbm1tL2RhbW9uL0tjb25maWctNTktXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWc9Njg9Y29uZmlnIERBTU9OX1NZU0ZTXFxubW0vZGFtb24vS2NvbmZpZy02OS1cXHRib29sIFxcXCJEQU1PTiBzeXNmcyBpbnRlcmZhY2VcXFwiXFxubW0vZGFtb24vS2NvbmZpZzo3MDpcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IFNZU0ZTXFxubW0vZGFtb24vS2NvbmZpZy03MS1cXHRkZWZhdWx0IERBTU9OXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnPTc2PWNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy03Ny1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5tbS9kYW1vbi9LY29uZmlnOjc4OlxcdGRlcGVuZHMgb24gREFNT05fU1lTRlMgXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbm1tL2RhbW9uL0tjb25maWctNzktXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWc9ODg9Y29uZmlnIERBTU9OX1JFQ0xBSU1cXG5tbS9kYW1vbi9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXFxcIlxcbm1tL2RhbW9uL0tjb25maWc6OTA6XFx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctOTEtXFx0aGVscFxcbi0tXFxubW0vZGFtb24vS2NvbmZpZz0xMDA9Y29uZmlnIERBTU9OX0xSVV9TT1JUXFxubW0vZGFtb24vS2NvbmZpZy0xMDEtXFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVxcXCJcXG5tbS9kYW1vbi9LY29uZmlnOjEwMjpcXHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXFxubW0vZGFtb24vS2NvbmZpZy0xMDMtXFx0aGVscFxcbi0tXFxubW0vZGFtb24vS2NvbmZpZz0xMDg9Y29uZmlnIERBTU9OX1NUQVRcXG5tbS9kYW1vbi9LY29uZmlnLTEwOS1cXHRib29sIFxcXCJCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXFxcIlxcbm1tL2RhbW9uL0tjb25maWc6MTEwOlxcdGRlcGVuZHMgb24gREFNT05fUEFERFJcXG5tbS9kYW1vbi9LY29uZmlnLTExMS1cXHRoZWxwXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnPTExNj1jb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cXHRib29sIFxcXCJFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XFxcIlxcbm1tL2RhbW9uL0tjb25maWc6MTE4OlxcdGRlcGVuZHMgb24gREFNT05fU1RBVFxcbm1tL2RhbW9uL0tjb25maWctMTE5LVxcdGRlZmF1bHQgREFNT05fU1RBVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNjo0Ny40NzE2OTMwOThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzIxMDQwODE0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgYW4gZXhwZXJ0IGluIHRoaXMgYXJlYTpcblxuKipBbmFseXppbmcgREFNT04gS2NvbmZpZyBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayBkb3duIHRoZXNlIERBTU9OIEtjb25maWcgZGVwZW5kZW5jaWVzLiBJdCdzIGNsZWFyIHRoYXQgYm90aCBgREFNT05fUkVDTEFJTWAgYW5kIGBEQU1PTl9MUlVfU09SVGAgYXJlIGJ1aWx0IHVwb24gdGhlIGZvdW5kYXRpb24gb2YgYERBTU9OX1BBRERSYC4gVGhpcyBtYWtlcyBzZW5zZSDigJMgcmVjbGFpbWluZyBhbmQgc29ydGluZyBiYXNlZCBvbiBMUlUgdHlwaWNhbGx5IHJlcXVpcmUgcGh5c2ljYWwgYWRkcmVzcyBjb25zaWRlcmF0aW9ucy4gTW92aW5nIG9uLCB0aGUgcHJlc2VuY2Ugb2YgYERBTU9OX1NZU0ZTYCBpcyBjb250aW5nZW50IG9uIHRoZSBhdmFpbGFiaWxpdHkgb2YgYm90aCBgREFNT05gIGl0c2VsZiBhbmQgdGhlIGBTWVNGU2AgaW5mcmFzdHJ1Y3R1cmUuIFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSBmb3IgZXhwb3NpbmcgY29udHJvbCBpbnRlcmZhY2VzLiBOb3csIGBEQU1PTl9WQUREUmAgYW5kIGBEQU1PTl9QQUREUmAgYm90aCBzZWVtIHRvIGRlcGVuZCBvbiBgREFNT05gIGFuZCB0aGUgYE1NVWAuIFRoaXMgc3VnZ2VzdHMgdGhhdCB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzIG1hbmlwdWxhdGlvbiB3aXRoaW4gREFNT04gcmVxdWlyZXMgdGhlIE1NVSdzIGZ1bmN0aW9uYWxpdHksIHdoaWNoIGlzIG5vIHN1cnByaXNlIHJlYWxseS4gVG8gZ2FpbiBmdXJ0aGVyIGluc2lnaHQsIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgc2FtcGxlcy9kYW1vbi9LY29uZmlnYCB0byBzZWUgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2YgaG93IGV2ZXJ5dGhpbmcgZml0cyB0b2dldGhlciBpbiB0aGUgYWN0dWFsIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjUyNSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDIxOjA2OjU0LjY4MjEwNDMyNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxNjg1MzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9kYW1vbi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNhbXBsZXMvZGFtb24vS2NvbmZpZz01PWNvbmZpZyBTQU1QTEVfREFNT05fV1NTRVxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy02LVxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIHdvcmtpbmcgc2V0IHNpemUgZXN0aW1hdGlvblxcXCJcXG5zYW1wbGVzL2RhbW9uL0tjb25maWc6NzpcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IERBTU9OX1ZBRERSXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTgtXFx0aGVscFxcbi0tXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnPTE3PWNvbmZpZyBTQU1QTEVfREFNT05fUFJDTFxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0xOC1cXHRib29sIFxcXCJEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlIHJlY2xhbWF0aW9uXFxcIlxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZzoxOTpcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IERBTU9OX1ZBRERSXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTIwLVxcdGhlbHBcXG4tLVxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZz0zMD1jb25maWcgU0FNUExFX0RBTU9OX01USUVSXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXFxcIlxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZzozMjpcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IERBTU9OX1BBRERSXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTMzLVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjE6MDY6NTQuNzgzNzk1NzY2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0NTI3NzQwMjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgREFNT04gQ29uZmlndXJhdGlvbiBhbmQgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJ20gc2VlaW5nIGEgbGlzdCBvZiBEQU1PTiBjb25maWd1cmF0aW9uIHN5bWJvbHM6IGBEQU1PTmAsIGBEQU1PTl9WQUREUmAsIGBEQU1PTl9QQUREUmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9SRUNMQUlNYCwgYERBTU9OX0xSVV9TT1JUYCwgYW5kIHRoZW4gYSBmZXcgc2FtcGxlIHN5bWJvbHM6IGBTQU1QTEVfREFNT05fV1NTRWAsIGBTQU1QTEVfREFNT05fUFJDTGAsIGFuZCBgU0FNUExFX0RBTU9OX01USUVSYC4gTm90aGluZyB1bmV4cGVjdGVkIHRoZXJlIOKAkyB0aGVzZSBhcmUgdGhlIGtub2JzIHdlJ2QgZXhwZWN0IHRvIHNlZSB0byBjb250cm9sIERBTU9OJ3MgYmVoYXZpb3IgYW5kIGZlYXR1cmVzLlxuXG5Ob3csIGZvY3VzaW5nIG9uIHRoZSBjb3JlIHN5bWJvbHM6IGBkYW1vbl9zdGFydGAsIGBkYW1vbl9zdG9wYCwgYGRhbW9uX2NhbGxgLCBgZGFtb25fbHJ1X3NvcnRfdHVybmAsIGBkYW1vbl9yZWNsYWltX3R1cm5gLCBhbmQgYGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmYC4gVGhlc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMgYW5kIGNvbnRyb2wgcG9pbnRzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHBhdGNoIGlzIGltcGFjdGluZyB0aGVzZSBzcGVjaWZpYyBmdW5jdGlvbnMuXG5cbkFoYSEgVGhlIHBhdGNoIG1vZGlmaWVzIGBkYW1vbl9zdG9wYC4gSXQgY2hhbmdlcyB0aGUgcmV0dXJuIHR5cGUgdG8gYHZvaWRgLCBtZWFuaW5nIG5vIGVycm9yIGNvZGUgaXMgYmVpbmcgcmV0dXJuZWQgYW55bW9yZS4gRnVydGhlcm1vcmUsIHRoZSBiZWhhdmlvciBoYXMgYmVlbiBhbHRlcmVkIGluIHN1Y2ggYSB3YXkgdGhhdCBpdCBubyBsb25nZXIgcmV0dXJucyBhbiBlcnJvciBjb2RlLCB3aGljaCBpbXBsaWVzIGEgY2hhbmdlIGluIGhvdyBlcnJvcnMgYXJlIGhhbmRsZWQsIG9yIHBlcmhhcHMgYSBzaW1wbGlmaWNhdGlvbiBvZiB0aGUgZXJyb3IgaGFuZGxpbmcgc3RyYXRlZ3kuIEl0IGFsc28gc3RhdGVzIHRoYXQgYGRhbW9uX2NhbGxgIG5vdyB3YWl0cyBmb3IgdGhlIGNvbnRleHQgdG8gc3RvcCBpZiB0aGUgY2FsbCBpcyBjYW5jZWxsZWQuXG5cblllcywgdGhpcyByZXByZXNlbnRzIGEgc2lnbmlmaWNhbnQsIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSB2ZXJ5IGNvcmUgb2YgREFNT04ncyBsb2dpYy4gSXQgY291bGQgYWZmZWN0IGhvdyB3ZSBtYW5hZ2UgZXJyb3Igc3RhdGVzIGFuZCBob3cgd2UgaGFuZGxlIGFzeW5jaHJvbm91cyBvcGVyYXRpb25zLiBJJ20gZ29pbmcgdG8gd2FudCB0byBkZWVwbHkgYW5hbHl6ZSB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlIG9uIHRoZSBvdmVyYWxsIHN5c3RlbSBiZWhhdmlvciwgZXJyb3IgcHJvcGFnYXRpb24sIGFuZCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBjaGFuZ2VzLiBOb3cgdGhhdCBJIHVuZGVyc3RhbmQgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSwgSSdtIGdvaW5nIHRvIHByb2NlZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzEzMCwiT3V0cHV0VG9rZW5zIjoyMzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjE6MDg6MDkuMzExNTM5NjI2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxOTUzNjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1BBRERSXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUkVDTEFJTVwiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIixcbiAgICBcIlNBTVBMRV9EQU1PTl9XU1NFXCIsXG4gICAgXCJTQU1QTEVfREFNT05fUFJDTFwiLFxuICAgIFwiU0FNUExFX0RBTU9OX01USUVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb25fc3RhcnRcIixcbiAgICBcImRhbW9uX3N0b3BcIixcbiAgICBcImRhbW9uX2NhbGxcIixcbiAgICBcImRhbW9uX2xydV9zb3J0X3R1cm5cIixcbiAgICBcImRhbW9uX3JlY2xhaW1fdHVyblwiLFxuICAgIFwiZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBEQU1PTiAoRGF0YSBBY2Nlc3MgTU9OaXRvcikgbG9naWMsIGNoYW5naW5nIHRoZSByZXR1cm4gdHlwZSBvZiBgZGFtb25fc3RvcGAgdG8gYHZvaWRgIGFuZCB1cGRhdGluZyBpdHMgY2FsbGVycy4gSXQgYWxzbyBtb2RpZmllcyBgZGFtb25fY2FsbGAgdG8gd2FpdCBmb3IgdGhlIGNvbnRleHQgdG8gc3RvcCBpZiB0aGUgY2FsbCBpcyBjYW5jZWxlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREFNT05cIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX1JFQ0xBSU1cIixcbiAgICBcIkRBTU9OX0xSVV9TT1JUXCIsXG4gICAgXCJTQU1QTEVfREFNT05fV1NTRVwiLFxuICAgIFwiU0FNUExFX0RBTU9OX1BSQ0xcIixcbiAgICBcIlNBTVBMRV9EQU1PTl9NVElFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9zdG9wXCIsXG4gICAgXCJkYW1vbl9jYWxsXCIsXG4gICAgXCJkYW1vbl9scnVfc29ydF90dXJuXCIsXG4gICAgXCJkYW1vbl9yZWNsYWltX3R1cm5cIixcbiAgICBcImRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgREFNT04gKERhdGEgQWNjZXNzIE1PTml0b3IpIGxvZ2ljLCBjaGFuZ2luZyB0aGUgcmV0dXJuIHR5cGUgb2YgYGRhbW9uX3N0b3BgIHRvIGB2b2lkYCBhbmQgdXBkYXRpbmcgaXRzIGNhbGxlcnMuIEl0IGFsc28gbW9kaWZpZXMgYGRhbW9uX2NhbGxgIHRvIHdhaXQgZm9yIHRoZSBjb250ZXh0IHRvIHN0b3AgaWYgdGhlIGNhbGwgaXMgY2FuY2VsZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wd7m[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-06 20:49:34 +0000 UTC FinishedAt: 2026-07-06 21:08:11 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_VADDR", "DAMON_PADDR", "DAMON_SYSFS", "DAMON_RECLAIM", "DAMON_LRU_SORT", "SAMPLE_DAMON_WSSE", "SAMPLE_DAMON_PRCL", "SAMPLE_DAMON_MTIER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_VADDR", "DAMON_PADDR", "DAMON_SYSFS", "DAMON_RECLAIM", "DAMON_LRU_SORT", "SAMPLE_DAMON_WSSE", "SAMPLE_DAMON_PRCL", "SAMPLE_DAMON_MTIER" ], "series_id": "b1da44b7-5270-4ee2-9560-b707989dc9ae" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damon_start", "damon_stop", "damon_call", "damon_lru_sort_turn", "damon_reclaim_turn", "damon_sysfs_turn_damon_off" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1BBRERSJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1JFQ0xBSU0mIzM0OywKICAgICYjMzQ7REFNT05fTFJVX1NPUlQmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX1dTU0UmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX1BSQ0wmIzM0OywKICAgICYjMzQ7U0FNUExFX0RBTU9OX01USUVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb25fc3RhcnQmIzM0OywKICAgICYjMzQ7ZGFtb25fc3RvcCYjMzQ7LAogICAgJiMzNDtkYW1vbl9jYWxsJiMzNDssCiAgICAmIzM0O2RhbW9uX2xydV9zb3J0X3R1cm4mIzM0OywKICAgICYjMzQ7ZGFtb25fcmVjbGFpbV90dXJuJiMzNDssCiAgICAmIzM0O2RhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIERBTU9OIChEYXRhIEFjY2VzcyBNT05pdG9yKSBsb2dpYywgY2hhbmdpbmcgdGhlIHJldHVybiB0eXBlIG9mIGBkYW1vbl9zdG9wYCB0byBgdm9pZGAgYW5kIHVwZGF0aW5nIGl0cyBjYWxsZXJzLiBJdCBhbHNvIG1vZGlmaWVzIGBkYW1vbl9jYWxsYCB0byB3YWl0IGZvciB0aGUgY29udGV4dCB0byBzdG9wIGlmIHRoZSBjYWxsIGlzIGNhbmNlbGVkLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMTowNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGRiMTg4ZDkyNjc5Mjc3ZWQ4MGM3OTIxZDE5ODc5YmY1MzE5MjFmYzhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCA2IDIxOjA1OjQ2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGFtb24uaCBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxuaW5kZXggMjY2MTIzMWMwYWU4MmUuLjE5YjdlODM5YmRlMGI0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9kYW1vbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbkBAIC0xMDcwLDcgJiM0MzsxMDcwLDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZGFtb25fbWF4X25yX2FjY2Vzc2VzKGNvbnN0IHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnNcbiBcbiBib29sIGRhbW9uX2luaXRpYWxpemVkKHZvaWQpO1xuIGludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKTtcbi1pbnQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpO1xuJiM0Mzt2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKTtcbiBib29sIGRhbW9uX2lzX3J1bm5pbmcoc3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcbiBpbnQgZGFtb25fa2RhbW9uZF9waWQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcbiBcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcbmluZGV4IDNjNWE0NmUxYzA3OWEzLi4zOTBlMDBiMzY4NWVmYyAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vY29yZS5jXG5AQCAtMTkxNywxNiAmIzQzOzE5MTcsMTcgQEAgaW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpXG4gXHRcdHJ1bm5pbmdfZXhjbHVzaXZlX2N0eHMgPSB0cnVlO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRhbW9uX2xvY2spO1xuIFxuJiM0MztcdGlmIChpICE9IG5yX2N0eHMpXG4mIzQzO1x0XHRkYW1vbl9zdG9wKGN0eHMsIGkpO1xuJiM0MztcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuIC8qXG4gICogX19kYW1vbl9zdG9wKCkgLSBTdG9wcyBtb25pdG9yaW5nIG9mIGEgZ2l2ZW4gY29udGV4dC5cbiAgKiBAY3R4Olx0bW9uaXRvcmluZyBjb250ZXh0XG4tICpcbi0gKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXG4gICovXG4tc3RhdGljIGludCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuJiM0MztzdGF0aWMgdm9pZCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuIHtcbiBcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrO1xuIFxuQEAgLTE5MzYsMzEgJiM0MzsxOTM3LDIzIEBAIHN0YXRpYyBpbnQgX19kYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbiBcdFx0Z2V0X3Rhc2tfc3RydWN0KHRzayk7XG4gXHRcdG11dGV4X3VubG9jayhcdTAwMjZjdHgtXHUwMDNla2RhbW9uZF9sb2NrKTtcbiBcdFx0a3RocmVhZF9zdG9wX3B1dCh0c2spO1xuLVx0XHRyZXR1cm4gMDtcbiYjNDM7XHRcdHJldHVybjtcbiBcdH1cbiBcdG11dGV4X3VubG9jayhcdTAwMjZjdHgtXHUwMDNla2RhbW9uZF9sb2NrKTtcbi1cbi1cdHJldHVybiAtRVBFUk07XG4gfVxuIFxuIC8qKlxuICAqIGRhbW9uX3N0b3AoKSAtIFN0b3BzIHRoZSBtb25pdG9yaW5ncyBmb3IgYSBnaXZlbiBncm91cCBvZiBjb250ZXh0cy5cbiAgKiBAY3R4czpcdGFuIGFycmF5IG9mIHRoZSBwb2ludGVycyBmb3IgY29udGV4dHMgdG8gc3RvcCBtb25pdG9yaW5nXG4gICogQG5yX2N0eHM6XHRzaXplIG9mIEBjdHhzXG4tICpcbi0gKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXG4gICovXG4taW50IGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxuJiM0Mzt2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxuIHtcbi1cdGludCBpLCBlcnIgPSAwO1xuJiM0MztcdGludCBpO1xuIFxuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfY3R4czsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9jdHhzOyBpJiM0MzsmIzQzOylcbiBcdFx0LyogbnJfcnVubmluZ19jdHhzIGlzIGRlY3JlbWVudGVkIGluIGtkYW1vbmRfZm4gKi9cbi1cdFx0ZXJyID0gX19kYW1vbl9zdG9wKGN0eHNbaV0pO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdGJyZWFrO1xuLVx0fVxuLVx0cmV0dXJuIGVycjtcbiYjNDM7XHRcdF9fZGFtb25fc3RvcChjdHhzW2ldKTtcbiB9XG4gXG4gLyoqXG5AQCAtMjAxNyw2ICYjNDM7MjAxMCw4IEBAIGludCBkYW1vbl9rZGFtb25kX3BpZChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpXG4gICogQGN0eCBoYXMgc3VjY2VlZGVkLiAgT3RoZXJ3aXNlLCB0aGlzIGZ1bmN0aW9uIGNvdWxkIGZhbGwgaW50byBhbiBpbmRlZmluaXRlXG4gICogd2FpdC5cbiAgKlxuJiM0MzsgKiBXaGVuIHRoaXMgZnVuY3Rpb24gaXMgZmFpbGVkLCB0aGUgQGN0eCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0b3BwZWQuXG4mIzQzOyAqXG4gICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxuICAqL1xuIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcbkBAIC0yMDI5LDcgJiM0MzsyMDI0LDcgQEAgaW50IGRhbW9uX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sKVxuIFx0bXV0ZXhfbG9jayhcdTAwMjZjdHgtXHUwMDNlY2FsbF9jb250cm9sc19sb2NrKTtcbiBcdGlmIChjdHgtXHUwMDNlY2FsbF9jb250cm9sc19vYnNvbGV0ZSkge1xuIFx0XHRtdXRleF91bmxvY2soXHUwMDI2Y3R4LVx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XG4tXHRcdHJldHVybiAtRUNBTkNFTEVEO1xuJiM0MztcdFx0Z290byBjYW5jZWxlZDtcbiBcdH1cbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2Y29udHJvbC1cdTAwM2VsaXN0LCBcdTAwMjZjdHgtXHUwMDNlY2FsbF9jb250cm9scyk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2Y3R4LVx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XG5AQCAtMjAzNyw4ICYjNDM7MjAzMiwxNCBAQCBpbnQgZGFtb25fY2FsbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgKmNvbnRyb2wpXG4gXHRcdHJldHVybiAwO1xuIFx0d2FpdF9mb3JfY29tcGxldGlvbihcdTAwMjZjb250cm9sLVx1MDAzZWNvbXBsZXRpb24pO1xuIFx0aWYgKGNvbnRyb2wtXHUwMDNlY2FuY2VsZWQpXG4tXHRcdHJldHVybiAtRUNBTkNFTEVEO1xuJiM0MztcdFx0Z290byBjYW5jZWxlZDtcbiBcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7Y2FuY2VsZWQ6XG4mIzQzO1x0d2hpbGUgKGRhbW9uX2lzX3J1bm5pbmcoY3R4KSlcbiYjNDM7XHRcdHNjaGVkdWxlX3RpbWVvdXRfaWRsZShtc2Vjc190b19qaWZmaWVzKDEwMCkpO1xuJiM0MztcdHJldHVybiAtRUNBTkNFTEVEO1xuJiM0MztcbiB9XG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vbHJ1X3NvcnQuYyBiL21tL2RhbW9uL2xydV9zb3J0LmNcbmluZGV4IDJkZDBjZDBkMjYyNzMxLi5lOGMzODlhZDMyMjZmNyAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL2xydV9zb3J0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2xydV9zb3J0LmNcbkBAIC00MDksOCAmIzQzOzQwOSwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X3R1cm4oYm9vbCBvbilcbiB7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKCFvbilcbi1cdFx0cmV0dXJuIGRhbW9uX3N0b3AoXHUwMDI2Y3R4LCAxKTtcbiYjNDM7XHRpZiAoIW9uKSB7XG4mIzQzO1x0XHRkYW1vbl9zdG9wKFx1MDAyNmN0eCwgMSk7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4gXG4gXHRlcnIgPSBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzKCk7XG4gXHRpZiAoZXJyKVxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3JlY2xhaW0uYyBiL21tL2RhbW9uL3JlY2xhaW0uY1xuaW5kZXggNjQ2OWIyNWNjMzRmOTIuLjA5ZTk0MWQ3NWY2N2RkIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vcmVjbGFpbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9yZWNsYWltLmNcbkBAIC0zMzIsOCAmIzQzOzMzMiwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX3JlY2xhaW1fdHVybihib29sIG9uKVxuIHtcbiBcdGludCBlcnI7XG4gXG4tXHRpZiAoIW9uKVxuLVx0XHRyZXR1cm4gZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuJiM0MztcdGlmICghb24pIHtcbiYjNDM7XHRcdGRhbW9uX3N0b3AoXHUwMDI2Y3R4LCAxKTtcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiBcbiBcdGVyciA9IGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycygpO1xuIFx0aWYgKGVycilcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9zeXNmcy5jIGIvbW0vZGFtb24vc3lzZnMuY1xuaW5kZXggYjY1NjUxNDk4ZTBkMTQuLjZkN2UzNmM5ZTUwOWQyIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vc3lzZnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vc3lzZnMuY1xuQEAgLTIyNjIsMTIgJiM0MzsyMjYyLDEzIEBAIHN0YXRpYyBpbnQgZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmYoc3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKmtkYW1vbmQpXG4ge1xuIFx0aWYgKCFrZGFtb25kLVx1MDAzZWRhbW9uX2N0eClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHRyZXR1cm4gZGFtb25fc3RvcChcdTAwMjZrZGFtb25kLVx1MDAzZWRhbW9uX2N0eCwgMSk7XG4mIzQzO1x0ZGFtb25fc3RvcChcdTAwMjZrZGFtb25kLVx1MDAzZWRhbW9uX2N0eCwgMSk7XG4gXHQvKlxuIFx0ICogVG8gYWxsb3cgdXNlcnMgc2hvdyBmaW5hbCBtb25pdG9yaW5nIHJlc3VsdHMgb2YgYWxyZWFkeSB0dXJuZWQtb2ZmXG4gXHQgKiBEQU1PTiwgd2UgZnJlZSBrZGFtb25kLVx1MDAzZWRhbW9uX2N0eCBpbiBuZXh0XG4gXHQgKiBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29uKCksIG9yIGtkYW1vbmRzX25yX3N0b3JlKClcbiBcdCAqL1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoaW50ICgqZm4pKHZvaWQgKmRhdGEpLFxuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuaW5kZXggZTU2N2Y0ZWRkODBlYTcuLmFjOWMyNGI5MmVhZDg0IDEwMDY0NFxuLS0tIGEvc2FtcGxlcy9kYW1vbi9tdGllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9zYW1wbGVzL2RhbW9uL210aWVyLmNcbkBAIC0xOTMsOCAmIzQzOzE5Myw2IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KHZvaWQpXG4gXHRpZiAoIWVycilcbiBcdFx0cmV0dXJuIDA7XG4gXG4tXHRpZiAoZGFtb25faXNfcnVubmluZyhjdHhzWzBdKSlcbi1cdFx0ZGFtb25fc3RvcChjdHhzLCAxKTtcbiBcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMF0pO1xuIFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4c1sxXSk7XG4gXHRyZXR1cm4gZXJyO1xuQEAgLTIwMiw4ICYjNDM7MjAwLDcgQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZClcbiBcbiBzdGF0aWMgdm9pZCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RvcCh2b2lkKVxuIHtcbi1cdGRhbW9uX3N0b3AoY3R4cywgMSk7XG4tXHRkYW1vbl9zdG9wKFx1MDAyNmN0eHNbMV0sIDEpO1xuJiM0MztcdGRhbW9uX3N0b3AoY3R4cywgMik7XG4gXHRkYW1vbl9kZXN0cm95X2N0eChjdHhzWzBdKTtcbiBcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMV0pO1xuIH1cbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3ByY2wuYyBiL3NhbXBsZXMvZGFtb24vcHJjbC5jXG5pbmRleCBlZGVhZTE0NWM0YThhZi4uODQyMDk5YmQ2MjI4NjEgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL2RhbW9uL3ByY2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcbkBAIC0xMTMsMTAgJiM0MzsxMTMsOCBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9wcmNsX3N0YXJ0KHZvaWQpXG4gXG4gXHRyZXBlYXRfY2FsbF9jb250cm9sLmRhdGEgPSBjdHg7XG4gXHRlcnIgPSBkYW1vbl9jYWxsKGN0eCwgXHUwMDI2cmVwZWF0X2NhbGxfY29udHJvbCk7XG4tXHRpZiAoZXJyKSB7XG4tXHRcdGRhbW9uX3N0b3AoXHUwMDI2Y3R4LCAxKTtcbiYjNDM7XHRpZiAoZXJyKVxuIFx0XHRkYW1vbl9kZXN0cm95X2N0eChjdHgpO1xuLVx0fVxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi93c3NlLmMgYi9zYW1wbGVzL2RhbW9uL3dzc2UuY1xuaW5kZXggZmY1ZThhODkwZjQ0OGMuLjM3ZmQ1ZGEyMDE1ODg1IDEwMDY0NFxuLS0tIGEvc2FtcGxlcy9kYW1vbi93c3NlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvZGFtb24vd3NzZS5jXG5AQCAtOTMsMTAgJiM0Mzs5Myw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3dzc2Vfc3RhcnQodm9pZClcbiBcdH1cbiBcdHJlcGVhdF9jYWxsX2NvbnRyb2wuZGF0YSA9IGN0eDtcbiBcdGVyciA9IGRhbW9uX2NhbGwoY3R4LCBcdTAwMjZyZXBlYXRfY2FsbF9jb250cm9sKTtcbi1cdGlmIChlcnIpIHtcbi1cdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuJiM0MztcdGlmIChlcnIpXG4gXHRcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eCk7XG4tXHR9XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMTowNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9WQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7LAogICAgJiMzNDtEQU1PTl9SRUNMQUlNJiMzNDssCiAgICAmIzM0O0RBTU9OX0xSVV9TT1JUJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9XU1NFJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9QUkNMJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9NVElFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9uX3N0YXJ0JiMzNDssCiAgICAmIzM0O2RhbW9uX3N0b3AmIzM0OywKICAgICYjMzQ7ZGFtb25fY2FsbCYjMzQ7LAogICAgJiMzNDtkYW1vbl9scnVfc29ydF90dXJuJiMzNDssCiAgICAmIzM0O2RhbW9uX3JlY2xhaW1fdHVybiYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBEQU1PTiAoRGF0YSBBY2Nlc3MgTU9OaXRvcikgbG9naWMsIGNoYW5naW5nIHRoZSByZXR1cm4gdHlwZSBvZiBgZGFtb25fc3RvcGAgdG8gYHZvaWRgIGFuZCB1cGRhdGluZyBpdHMgY2FsbGVycy4gSXQgYWxzbyBtb2RpZmllcyBgZGFtb25fY2FsbGAgdG8gd2FpdCBmb3IgdGhlIGNvbnRleHQgdG8gc3RvcCBpZiB0aGUgY2FsbCBpcyBjYW5jZWxlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRiMTg4ZDkyNjc5Mjc3ZWQ4MGM3OTIxZDE5ODc5YmY1MzE5MjFmYzgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCA2IDIxOjA1OjQ2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kYW1vbi5oIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oCmluZGV4IDI2NjEyMzFjMGFlODJlLi4xOWI3ZTgzOWJkZTBiNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9kYW1vbi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZGFtb24uaApAQCAtMTA3MCw3ICYjNDM7MTA3MCw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGRhbW9uX21heF9ucl9hY2Nlc3Nlcyhjb25zdCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzCiAKIGJvb2wgZGFtb25faW5pdGlhbGl6ZWQodm9pZCk7CiBpbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSk7Ci1pbnQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpOwomIzQzO3ZvaWQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpOwogYm9vbCBkYW1vbl9pc19ydW5uaW5nKHN0cnVjdCBkYW1vbl9jdHggKmN0eCk7CiBpbnQgZGFtb25fa2RhbW9uZF9waWQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KTsKIApkaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jCmluZGV4IDNjNWE0NmUxYzA3OWEzLi4zOTBlMDBiMzY4NWVmYyAxMDA2NDQKLS0tIGEvbW0vZGFtb24vY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2NvcmUuYwpAQCAtMTkxNywxNiAmIzQzOzE5MTcsMTcgQEAgaW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpCiAJCXJ1bm5pbmdfZXhjbHVzaXZlX2N0eHMgPSB0cnVlOwogCW11dGV4X3VubG9jaygmYW1wO2RhbW9uX2xvY2spOwogCiYjNDM7CWlmIChpICE9IG5yX2N0eHMpCiYjNDM7CQlkYW1vbl9zdG9wKGN0eHMsIGkpOwomIzQzOwogCXJldHVybiBlcnI7CiB9CiAKIC8qCiAgKiBfX2RhbW9uX3N0b3AoKSAtIFN0b3BzIG1vbml0b3Jpbmcgb2YgYSBnaXZlbiBjb250ZXh0LgogICogQGN0eDoJbW9uaXRvcmluZyBjb250ZXh0Ci0gKgotICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLgogICovCi1zdGF0aWMgaW50IF9fZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpCiYjNDM7c3RhdGljIHZvaWQgX19kYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKmN0eCkKIHsKIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzazsKIApAQCAtMTkzNiwzMSAmIzQzOzE5MzcsMjMgQEAgc3RhdGljIGludCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KQogCQlnZXRfdGFza19zdHJ1Y3QodHNrKTsKIAkJbXV0ZXhfdW5sb2NrKCZhbXA7Y3R4LSZndDtrZGFtb25kX2xvY2spOwogCQlrdGhyZWFkX3N0b3BfcHV0KHRzayk7Ci0JCXJldHVybiAwOwomIzQzOwkJcmV0dXJuOwogCX0KIAltdXRleF91bmxvY2soJmFtcDtjdHgtJmd0O2tkYW1vbmRfbG9jayk7Ci0KLQlyZXR1cm4gLUVQRVJNOwogfQogCiAvKioKICAqIGRhbW9uX3N0b3AoKSAtIFN0b3BzIHRoZSBtb25pdG9yaW5ncyBmb3IgYSBnaXZlbiBncm91cCBvZiBjb250ZXh0cy4KICAqIEBjdHhzOglhbiBhcnJheSBvZiB0aGUgcG9pbnRlcnMgZm9yIGNvbnRleHRzIHRvIHN0b3AgbW9uaXRvcmluZwogICogQG5yX2N0eHM6CXNpemUgb2YgQGN0eHMKLSAqCi0gKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuCiAgKi8KLWludCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cykKJiM0Mzt2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKQogewotCWludCBpLCBlcnIgPSAwOwomIzQzOwlpbnQgaTsKIAotCWZvciAoaSA9IDA7IGkgJmx0OyBucl9jdHhzOyBpJiM0MzsmIzQzOykgewomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgbnJfY3R4czsgaSYjNDM7JiM0MzspCiAJCS8qIG5yX3J1bm5pbmdfY3R4cyBpcyBkZWNyZW1lbnRlZCBpbiBrZGFtb25kX2ZuICovCi0JCWVyciA9IF9fZGFtb25fc3RvcChjdHhzW2ldKTsKLQkJaWYgKGVycikKLQkJCWJyZWFrOwotCX0KLQlyZXR1cm4gZXJyOwomIzQzOwkJX19kYW1vbl9zdG9wKGN0eHNbaV0pOwogfQogCiAvKioKQEAgLTIwMTcsNiAmIzQzOzIwMTAsOCBAQCBpbnQgZGFtb25fa2RhbW9uZF9waWQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KQogICogQGN0eCBoYXMgc3VjY2VlZGVkLiAgT3RoZXJ3aXNlLCB0aGlzIGZ1bmN0aW9uIGNvdWxkIGZhbGwgaW50byBhbiBpbmRlZmluaXRlCiAgKiB3YWl0LgogICoKJiM0MzsgKiBXaGVuIHRoaXMgZnVuY3Rpb24gaXMgZmFpbGVkLCB0aGUgQGN0eCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0b3BwZWQuCiYjNDM7ICoKICAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZS4KICAqLwogaW50IGRhbW9uX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sKQpAQCAtMjAyOSw3ICYjNDM7MjAyNCw3IEBAIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbCkKIAltdXRleF9sb2NrKCZhbXA7Y3R4LSZndDtjYWxsX2NvbnRyb2xzX2xvY2spOwogCWlmIChjdHgtJmd0O2NhbGxfY29udHJvbHNfb2Jzb2xldGUpIHsKIAkJbXV0ZXhfdW5sb2NrKCZhbXA7Y3R4LSZndDtjYWxsX2NvbnRyb2xzX2xvY2spOwotCQlyZXR1cm4gLUVDQU5DRUxFRDsKJiM0MzsJCWdvdG8gY2FuY2VsZWQ7CiAJfQogCWxpc3RfYWRkX3RhaWwoJmFtcDtjb250cm9sLSZndDtsaXN0LCAmYW1wO2N0eC0mZ3Q7Y2FsbF9jb250cm9scyk7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7Y3R4LSZndDtjYWxsX2NvbnRyb2xzX2xvY2spOwpAQCAtMjAzNyw4ICYjNDM7MjAzMiwxNCBAQCBpbnQgZGFtb25fY2FsbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgKmNvbnRyb2wpCiAJCXJldHVybiAwOwogCXdhaXRfZm9yX2NvbXBsZXRpb24oJmFtcDtjb250cm9sLSZndDtjb21wbGV0aW9uKTsKIAlpZiAoY29udHJvbC0mZ3Q7Y2FuY2VsZWQpCi0JCXJldHVybiAtRUNBTkNFTEVEOwomIzQzOwkJZ290byBjYW5jZWxlZDsKIAlyZXR1cm4gMDsKJiM0MzsKJiM0MztjYW5jZWxlZDoKJiM0MzsJd2hpbGUgKGRhbW9uX2lzX3J1bm5pbmcoY3R4KSkKJiM0MzsJCXNjaGVkdWxlX3RpbWVvdXRfaWRsZShtc2Vjc190b19qaWZmaWVzKDEwMCkpOwomIzQzOwlyZXR1cm4gLUVDQU5DRUxFRDsKJiM0MzsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9tbS9kYW1vbi9scnVfc29ydC5jIGIvbW0vZGFtb24vbHJ1X3NvcnQuYwppbmRleCAyZGQwY2QwZDI2MjczMS4uZThjMzg5YWQzMjI2ZjcgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2xydV9zb3J0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vbHJ1X3NvcnQuYwpAQCAtNDA5LDggJiM0Mzs0MDksMTAgQEAgc3RhdGljIGludCBkYW1vbl9scnVfc29ydF90dXJuKGJvb2wgb24pCiB7CiAJaW50IGVycjsKIAotCWlmICghb24pCi0JCXJldHVybiBkYW1vbl9zdG9wKCZhbXA7Y3R4LCAxKTsKJiM0MzsJaWYgKCFvbikgewomIzQzOwkJZGFtb25fc3RvcCgmYW1wO2N0eCwgMSk7CiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJfQogCiAJZXJyID0gZGFtb25fbHJ1X3NvcnRfYXBwbHlfcGFyYW1ldGVycygpOwogCWlmIChlcnIpCmRpZmYgLS1naXQgYS9tbS9kYW1vbi9yZWNsYWltLmMgYi9tbS9kYW1vbi9yZWNsYWltLmMKaW5kZXggNjQ2OWIyNWNjMzRmOTIuLjA5ZTk0MWQ3NWY2N2RkIDEwMDY0NAotLS0gYS9tbS9kYW1vbi9yZWNsYWltLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vcmVjbGFpbS5jCkBAIC0zMzIsOCAmIzQzOzMzMiwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX3JlY2xhaW1fdHVybihib29sIG9uKQogewogCWludCBlcnI7CiAKLQlpZiAoIW9uKQotCQlyZXR1cm4gZGFtb25fc3RvcCgmYW1wO2N0eCwgMSk7CiYjNDM7CWlmICghb24pIHsKJiM0MzsJCWRhbW9uX3N0b3AoJmFtcDtjdHgsIDEpOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KIAogCWVyciA9IGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycygpOwogCWlmIChlcnIpCmRpZmYgLS1naXQgYS9tbS9kYW1vbi9zeXNmcy5jIGIvbW0vZGFtb24vc3lzZnMuYwppbmRleCBiNjU2NTE0OThlMGQxNC4uNmQ3ZTM2YzllNTA5ZDIgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL3N5c2ZzLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vZGFtb24vc3lzZnMuYwpAQCAtMjI2MiwxMiAmIzQzOzIyNjIsMTMgQEAgc3RhdGljIGludCBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZihzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZCkKIHsKIAlpZiAoIWtkYW1vbmQtJmd0O2RhbW9uX2N0eCkKIAkJcmV0dXJuIC1FSU5WQUw7Ci0JcmV0dXJuIGRhbW9uX3N0b3AoJmFtcDtrZGFtb25kLSZndDtkYW1vbl9jdHgsIDEpOwomIzQzOwlkYW1vbl9zdG9wKCZhbXA7a2RhbW9uZC0mZ3Q7ZGFtb25fY3R4LCAxKTsKIAkvKgogCSAqIFRvIGFsbG93IHVzZXJzIHNob3cgZmluYWwgbW9uaXRvcmluZyByZXN1bHRzIG9mIGFscmVhZHkgdHVybmVkLW9mZgogCSAqIERBTU9OLCB3ZSBmcmVlIGtkYW1vbmQtJmd0O2RhbW9uX2N0eCBpbiBuZXh0CiAJICogZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vbigpLCBvciBrZGFtb25kc19ucl9zdG9yZSgpCiAJICovCiYjNDM7CXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoaW50ICgqZm4pKHZvaWQgKmRhdGEpLApkaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi9tdGllci5jIGIvc2FtcGxlcy9kYW1vbi9tdGllci5jCmluZGV4IGU1NjdmNGVkZDgwZWE3Li5hYzljMjRiOTJlYWQ4NCAxMDA2NDQKLS0tIGEvc2FtcGxlcy9kYW1vbi9tdGllci5jCiYjNDM7JiM0MzsmIzQzOyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuYwpAQCAtMTkzLDggJiM0MzsxOTMsNiBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV9tdGllcl9zdGFydCh2b2lkKQogCWlmICghZXJyKQogCQlyZXR1cm4gMDsKIAotCWlmIChkYW1vbl9pc19ydW5uaW5nKGN0eHNbMF0pKQotCQlkYW1vbl9zdG9wKGN0eHMsIDEpOwogCWRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMF0pOwogCWRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMV0pOwogCXJldHVybiBlcnI7CkBAIC0yMDIsOCAmIzQzOzIwMCw3IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KHZvaWQpCiAKIHN0YXRpYyB2b2lkIGRhbW9uX3NhbXBsZV9tdGllcl9zdG9wKHZvaWQpCiB7Ci0JZGFtb25fc3RvcChjdHhzLCAxKTsKLQlkYW1vbl9zdG9wKCZhbXA7Y3R4c1sxXSwgMSk7CiYjNDM7CWRhbW9uX3N0b3AoY3R4cywgMik7CiAJZGFtb25fZGVzdHJveV9jdHgoY3R4c1swXSk7CiAJZGFtb25fZGVzdHJveV9jdHgoY3R4c1sxXSk7CiB9CmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3ByY2wuYyBiL3NhbXBsZXMvZGFtb24vcHJjbC5jCmluZGV4IGVkZWFlMTQ1YzRhOGFmLi44NDIwOTliZDYyMjg2MSAxMDA2NDQKLS0tIGEvc2FtcGxlcy9kYW1vbi9wcmNsLmMKJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi9wcmNsLmMKQEAgLTExMywxMCAmIzQzOzExMyw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3ByY2xfc3RhcnQodm9pZCkKIAogCXJlcGVhdF9jYWxsX2NvbnRyb2wuZGF0YSA9IGN0eDsKIAllcnIgPSBkYW1vbl9jYWxsKGN0eCwgJmFtcDtyZXBlYXRfY2FsbF9jb250cm9sKTsKLQlpZiAoZXJyKSB7Ci0JCWRhbW9uX3N0b3AoJmFtcDtjdHgsIDEpOwomIzQzOwlpZiAoZXJyKQogCQlkYW1vbl9kZXN0cm95X2N0eChjdHgpOwotCX0KIAlyZXR1cm4gZXJyOwogfQogCmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3dzc2UuYyBiL3NhbXBsZXMvZGFtb24vd3NzZS5jCmluZGV4IGZmNWU4YTg5MGY0NDhjLi4zN2ZkNWRhMjAxNTg4NSAxMDA2NDQKLS0tIGEvc2FtcGxlcy9kYW1vbi93c3NlLmMKJiM0MzsmIzQzOyYjNDM7IGIvc2FtcGxlcy9kYW1vbi93c3NlLmMKQEAgLTkzLDEwICYjNDM7OTMsOCBAQCBzdGF0aWMgaW50IGRhbW9uX3NhbXBsZV93c3NlX3N0YXJ0KHZvaWQpCiAJfQogCXJlcGVhdF9jYWxsX2NvbnRyb2wuZGF0YSA9IGN0eDsKIAllcnIgPSBkYW1vbl9jYWxsKGN0eCwgJmFtcDtyZXBlYXRfY2FsbF9jb250cm9sKTsKLQlpZiAoZXJyKSB7Ci0JCWRhbW9uX3N0b3AoJmFtcDtjdHgsIDEpOwomIzQzOwlpZiAoZXJyKQogCQlkYW1vbl9kZXN0cm95X2N0eChjdHgpOwotCX0KIAlyZXR1cm4gZXJyOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MDgKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAyNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgREFNT04gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF04oCZcyB0d2Vha2luZyB0aGUgRGF0YSBBY2Nlc3MgTW9uaXRvciAoREFNT04pIHN1YnN5c3RlbSB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbC4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhleSYjMzk7cmUgY2hhbmdpbmcgdGhlIHJldHVybiB0eXBlIG9mIGBkYW1vbl9zdG9wYCB0byBgdm9pZGAgaW5zdGVhZCBvZiBgaW50YCwgYW5kIGFkanVzdGluZyBgZGFtb25fY2FsbGAgdG8gaGFuZGxlIGNvbnRleHQgc3RvcHBpbmcgbW9yZSBncmFjZWZ1bGx5IGlmIHRoZSBjYWxsIGlzIGNhbmNlbGVkLiBGaW5lLiBUaGV5JiMzOTt2ZSBhbHNvIHVwZGF0ZWQgdGhlIGNhbGxlcnMgb2YgYGRhbW9uX3N0b3BgIGFjcm9zcyB0aGUgY29kZWJhc2Ug4oCTIGBscnVfc29ydC5jYCwgYHJlY2xhaW0uY2AsIGBzeXNmcy5jYCwgYW5kIHNldmVyYWwgc2FtcGxlIGZpbGVzLgoKR2l2ZW4gbXkga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwsIEkgY2FuIGNvbmZpcm0gdGhhdCBEQU1PTiBpdHNlbGYgaXMgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWw7IGl0JiMzOTtzIGEgY3JpdGljYWwgY29tcG9uZW50IGluIG1lbW9yeSBtYW5hZ2VtZW50LCBzbyBpdCBoYXMgdG8gYmUuIFRoZSBjaGFuZ2VzICphcmUqIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBhcyB0aGUgcGF0Y2ggc3VtbWFyeSBpbmRpY2F0ZXMuCgpNeSBndXQgZmVlbGluZyBpcyB0aGlzIGlzIGEgcmVsYXRpdmVseSBsb3ctcmlzayBtb2RpZmljYXRpb24sIGJ1dCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggYSBjb3JlIGNvbXBvbmVudCwgc28gd2UgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSYjMzk7ZCBkZWZpbml0ZWx5IHdhbnQgdG8gZnV6eiB0aGlzLiBJdCYjMzk7cyB0aW1lIHRvIGNoZWNrIHdoYXQgdGhlIHJlbGV2YW50IENPTkZJRyBvcHRpb25zIGFyZSBmb3IgREFNT04uIE15IGJlc3QgYmV0IGlzIHRvIHVzZSBgZ3JlcHBlcmAgYW5kIHNlYXJjaCBgbW0vZGFtb24vS2NvbmZpZ2Agb3IgYG1tL0tjb25maWdgIGZvciBgQ09ORklHX0RBTU9OYCBvciBhbnl0aGluZyBzaW1pbGFyIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgY29uZmlndXJhdGlvbiBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEQU1PTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9LY29uZmlnPTM9bWVudSBcJiMzNDtEYXRhIEFjY2VzcyBNb25pdG9yaW5nXCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnLTQtXG5tbS9kYW1vbi9LY29uZmlnOjU6Y29uZmlnIERBTU9OXG5tbS9kYW1vbi9LY29uZmlnLTYtXHRib29sIFwmIzM0O0RBTU9OOiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nIEZyYW1ld29ya1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctMTQtXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcbm1tL2RhbW9uL0tjb25maWctMTYtXHRib29sIFwmIzM0O0NoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0yNS1cbm1tL2RhbW9uL0tjb25maWc6MjY6Y29uZmlnIERBTU9OX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctMjctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTM3LVxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcbm1tL2RhbW9uL0tjb25maWctMzktXHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNDYtXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxubW0vZGFtb24vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNTUtXG5tbS9kYW1vbi9LY29uZmlnOjU2OmNvbmZpZyBEQU1PTl9WQUREUl9LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTU3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBEQU1PTiBvcGVyYXRpb25zXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTY3LVxubW0vZGFtb24vS2NvbmZpZzo2ODpjb25maWcgREFNT05fU1lTRlNcbm1tL2RhbW9uL0tjb25maWctNjktXHRib29sIFwmIzM0O0RBTU9OIHN5c2ZzIGludGVyZmFjZVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctNzUtXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWctODctXG5tbS9kYW1vbi9LY29uZmlnOjg4OmNvbmZpZyBEQU1PTl9SRUNMQUlNXG5tbS9kYW1vbi9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCByZWNsYWltIChEQU1PTl9SRUNMQUlNKVwmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWctOTktXG5tbS9kYW1vbi9LY29uZmlnOjEwMDpjb25maWcgREFNT05fTFJVX1NPUlRcbm1tL2RhbW9uL0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy0xMDctXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxubW0vZGFtb24vS2NvbmZpZy0xMDktXHRib29sIFwmIzM0O0J1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcJiMzNDtcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cbm1tL2RhbW9uL0tjb25maWc6MTE2OmNvbmZpZyBEQU1PTl9TVEFUX0VOQUJMRURfREVGQVVMVFxubW0vZGFtb24vS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0VuYWJsZSBEQU1PTl9TVEFUIGJ5IGRlZmF1bHRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMTowNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzE5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgREFNT04gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgREFNT04gcGF0Y2gsIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGJlaW5nIHR3ZWFrZWQuIEkgc2VlIHdlIGhhdmUgREFNT04gaXRzZWxmLCBhbmQgdGhlbiBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHZpcnR1YWwgYW5kIHBoeXNpY2FsIGFkZHJlc3NlcyAoYERBTU9OX1ZBRERSYCwgYERBTU9OX1BBRERSYCksIHRoZSBzeXN0ZW0gZmlsZSBzeXN0ZW0gaW50ZXJmYWNlIChgREFNT05fU1lTRlNgKSwgcmVjbGFpbSBiZWhhdmlvciAoYERBTU9OX1JFQ0xBSU1gKSwgYW5kIExSVSBzb3J0aW5nIChgREFNT05fTFJVX1NPUlRgKS4gVGhpcyBnaXZlcyBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gYXNzZXNzIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlcy4KCk5leHQsIEkgbmVlZCB0byBsb29rIGF0IHRoZSBtZWF0IG9mIHRoZSBjb2RlLiBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG9uIHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQuIFRoZSBwYXRjaCB0b3VjaGVzIGBkYW1vbl9zdGFydGAsIGBfX2RhbW9uX3N0b3BgLCBgZGFtb25fc3RvcGAsIGBkYW1vbl9jYWxsYCwgYGRhbW9uX2xydV9zb3J0X3R1cm5gLCBgZGFtb25fcmVjbGFpbV90dXJuYCwgYW5kIGBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZmAuIEkmIzM5O2xsIHdhbnQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGVzZSBmdW5jdGlvbnMuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBkYW1vbl9jYWxsYCBhbmQgYGRhbW9uX3N0b3BgIGFuZCB0aGVuIHNlZSBob3cgdGhleSBhcmUgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMTowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vbl9jYWxsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZGFtb24vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL2NvcmUuYz05NTk9c3RhdGljIGJvb2wgZGFtb25fdmFsaWRfaW50ZXJ2YWxzX2dvYWwoc3RydWN0IGRhbW9uX2F0dHJzICphdHRycylcbi0tXG5tbS9kYW1vbi9jb3JlLmMtOTg1LSAqIHNldHVwIG9mIGRhbW9uX2N0eCBiZWZvcmUgY2FsbGluZyBkYW1vbl9zdGFydCgpLiAgU29tZSBvZiB0aGUgQVBJIGNhbGxlcnNcbm1tL2RhbW9uL2NvcmUuYzo5ODY6ICogYWxzbyBpbmRpcmVjdGx5IGNhbGwgdGhpcyBmdW5jdGlvbiB2aWEgZGFtb25fY2FsbCgpIC1cdTAwM2UgZGFtb25fY29tbWl0KCkgZm9yXG5tbS9kYW1vbi9jb3JlLmMtOTg3LSAqIG9ubGluZSBwYXJhbWV0ZXJzIHVwZGF0ZXMuICBGaW5hbGx5LCBrZGFtb25kX2ZuKCkgaXRzZWxmIHVzZSB0aGlzIGZvclxuLS1cbm1tL2RhbW9uL2NvcmUuYz0xMDg1PXN0YXRpYyB2b2lkIGRhbW9zX2NvbW1pdF9xdW90YV9nb2FsKFxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xMTA1LSAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBmcm9tIHBhcmFtZXRlcnMtdXBkYXRlIHNhZmUgY29udGV4dCwgbGlrZVxubW0vZGFtb24vY29yZS5jOjExMDY6ICogZGFtb25fY2FsbCgpLlxubW0vZGFtb24vY29yZS5jLTExMDctICovXG4tLVxubW0vZGFtb24vY29yZS5jPTE3MjI9c3RhdGljIHN0cnVjdCBkYW1vbl9jdHggKmRhbW9uX25ld190ZXN0X2N0eChzdHJ1Y3QgZGFtb25fY3R4ICpkc3QpXG4tLVxubW0vZGFtb24vY29yZS5jLTE3NDgtICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGZyb20gcGFyYW1ldGVycy11cGRhdGUgc2FmZSBjb250ZXh0LCBsaWtlXG5tbS9kYW1vbi9jb3JlLmM6MTc0OTogKiBkYW1vbl9jYWxsKCkuXG5tbS9kYW1vbi9jb3JlLmMtMTc1MC0gKi9cbi0tXG5tbS9kYW1vbi9jb3JlLmM9MTk4MT1pbnQgZGFtb25fa2RhbW9uZF9waWQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuLS1cbm1tL2RhbW9uL2NvcmUuYy0xOTkyLS8qKlxubW0vZGFtb24vY29yZS5jOjE5OTM6ICogZGFtb25fY2FsbCgpIC0gSW52b2tlIGEgZ2l2ZW4gZnVuY3Rpb24gb24gREFNT04gd29ya2VyIHRocmVhZCAoa2RhbW9uZCkuXG5tbS9kYW1vbi9jb3JlLmMtMTk5NC0gKiBAY3R4Olx0REFNT04gY29udGV4dCB0byBjYWxsIHRoZSBmdW5jdGlvbiBmb3IuXG4tLVxubW0vZGFtb24vY29yZS5jLTE5OTctICogQXNrIERBTU9OIHdvcmtlciB0aHJlYWQgKGtkYW1vbmQpIG9mIEBjdHggdG8gY2FsbCBhIGZ1bmN0aW9uIHdpdGggYW5cbm1tL2RhbW9uL2NvcmUuYzoxOTk4OiAqIGFyZ3VtZW50IGRhdGEgdGhhdCByZXNwZWN0aXZlbHkgcGFzc2VkIHZpYSBcdTAwMjZkYW1vbl9jYWxsX2NvbnRyb2wtXHUwMDNlZm4gYW5kXG5tbS9kYW1vbi9jb3JlLmM6MTk5OTogKiBcdTAwMjZkYW1vbl9jYWxsX2NvbnRyb2wtXHUwMDNlZGF0YSBvZiBAY29udHJvbC4gIElmIFx1MDAyNmRhbW9uX2NhbGxfY29udHJvbC1cdTAwM2VyZXBlYXQgb2Zcbm1tL2RhbW9uL2NvcmUuYy0yMDAwLSAqIEBjb250cm9sIGlzIHVuc2V0LCBmdXJ0aGVyIHdhaXQgdW50aWwgdGhlIGtkYW1vbmQgZmluaXNoZXMgaGFuZGxpbmcgb2YgdGhlXG4tLVxubW0vZGFtb24vY29yZS5jLTIwMDYtICogc3luY2hyb25pemF0aW9uLiAgVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gd2lsbCBiZSBzYXZlZCBpblxubW0vZGFtb24vY29yZS5jOjIwMDc6ICogXHUwMDI2ZGFtb25fY2FsbF9jb250cm9sLVx1MDAzZXJldHVybl9jb2RlLlxubW0vZGFtb24vY29yZS5jLTIwMDgtICpcbi0tXG5tbS9kYW1vbi9jb3JlLmMtMjAxNi0gKi9cbm1tL2RhbW9uL2NvcmUuYzoyMDE3OmludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcbm1tL2RhbW9uL2NvcmUuYy0yMDE4LXtcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzUyNz1zdGF0aWMgdm9pZCBkYW1vbl92ZXJpZnlfY3R4KHN0cnVjdCBkYW1vbl9jdHggKmMpXG4tLVxubW0vZGFtb24vY29yZS5jLTM1MzItLypcbm1tL2RhbW9uL2NvcmUuYzozNTMzOiAqIGtkYW1vbmRfY2FsbCgpIC0gaGFuZGxlIGRhbW9uX2NhbGxfY29udHJvbCBvYmplY3RzLlxubW0vZGFtb24vY29yZS5jLTM1MzQtICogQGN0eDpcdFRoZSBcdTAwMjZzdHJ1Y3QgZGFtb25fY3R4IG9mIHRoZSBrZGFtb25kLlxuLS1cbm1tL2RhbW9uL2NvcmUuYy0zNTM2LSAqXG5tbS9kYW1vbi9jb3JlLmM6MzUzNzogKiBJZiB0aGVyZSBhcmUgXHUwMDI2c3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCByZXF1ZXN0cyB0aGF0IHJlZ2lzdGVyZWQgdmlhXG5tbS9kYW1vbi9jb3JlLmM6MzUzODogKiBcdTAwMjZkYW1vbl9jYWxsKCkgb24gQGN0eCwgZG8gb3IgY2FuY2VsIHRoZSBpbnZvY2F0aW9uIG9mIHRoZSBmdW5jdGlvbiBkZXBlbmRpbmdcbm1tL2RhbW9uL2NvcmUuYy0zNTM5LSAqIG9uIEBjYW5jZWwuICBAY2FuY2VsIGlzIHNldCB3aGVuIHRoZSBrZGFtb25kIGlzIGFscmVhZHkgb3V0IG9mIHRoZSBtYWluIGxvb3Bcbi0tXG5tbS9kYW1vbi9jb3JlLmM9MzU0Mj1zdGF0aWMgdm9pZCBrZGFtb25kX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBib29sIGNhbmNlbClcbm1tL2RhbW9uL2NvcmUuYy0zNTQzLXtcbm1tL2RhbW9uL2NvcmUuYzozNTQ0Olx0c3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbCwgKm5leHQ7XG5tbS9kYW1vbi9jb3JlLmMtMzU0NS1cdExJU1RfSEVBRChjb250cm9scyk7XG4tLVxubW0vZGFtb24vY29yZS5jPTM2MjY9c3RhdGljIGludCBrZGFtb25kX2ZuKHZvaWQgKmRhdGEpXG4tLVxubW0vZGFtb24vY29yZS5jLTM2OTUtXHRcdFx0a2RhbW9uZF91c2xlZXAoY3R4LVx1MDAzZWF0dHJzLnNhbXBsZV9pbnRlcnZhbCk7XG5tbS9kYW1vbi9jb3JlLmM6MzY5NjpcdFx0XHQvKiBhbGxvdyBjYWxsZXIgdW5zZXQgcGF1c2UgdmlhIGRhbW9uX2NhbGwoKSAqL1xubW0vZGFtb24vY29yZS5jLTM2OTctXHRcdFx0a2RhbW9uZF9jYWxsKGN0eCwgZmFsc2UpO1xuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmM9MzQ3PXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19zdG9yZShjb25zdCBjaGFyICp2YWwsXG4tLVxubW0vZGFtb24vbHJ1X3NvcnQuYy0zNTEtXHRpbnQgZXJyO1xubW0vZGFtb24vbHJ1X3NvcnQuYzozNTI6XHRzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sIGNvbnRyb2wgPSB7XG5tbS9kYW1vbi9scnVfc29ydC5jLTM1My1cdFx0LmZuID0gZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19mbixcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTM2Ny1cdC8qXG5tbS9kYW1vbi9scnVfc29ydC5jOjM2ODpcdCAqIFNraXAgZGFtb25fY2FsbCgpIGlmIGN0eCBpcyBub3QgaW5pdGlhbGl6ZWQgdG8gYXZvaWRcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzY5LVx0ICogTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLlxuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtMzczLVxubW0vZGFtb24vbHJ1X3NvcnQuYzozNzQ6XHRlcnIgPSBkYW1vbl9jYWxsKGN0eCwgXHUwMDI2Y29udHJvbCk7XG5tbS9kYW1vbi9scnVfc29ydC5jLTM3NS1cbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jPTM4NT1tb2R1bGVfcGFyYW1fY2IoY29tbWl0X2lucHV0cywgXHUwMDI2Y29tbWl0X2lucHV0c19wYXJhbV9vcHMsIFx1MDAyNmNvbW1pdF9pbnB1dHMsIDA2MDApO1xubW0vZGFtb24vbHJ1X3NvcnQuYy0zODYtXG5tbS9kYW1vbi9scnVfc29ydC5jOjM4NzpzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2RhbW9uX2NhbGxfZm4odm9pZCAqYXJnKVxubW0vZGFtb24vbHJ1X3NvcnQuYy0zODgte1xuLS1cbm1tL2RhbW9uL2xydV9zb3J0LmMtNDAyLVxubW0vZGFtb24vbHJ1X3NvcnQuYzo0MDM6c3RhdGljIHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgY2FsbF9jb250cm9sID0ge1xubW0vZGFtb24vbHJ1X3NvcnQuYzo0MDQ6XHQuZm4gPSBkYW1vbl9scnVfc29ydF9kYW1vbl9jYWxsX2ZuLFxubW0vZGFtb24vbHJ1X3NvcnQuYy00MDUtXHQucmVwZWF0ID0gdHJ1ZSxcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jPTQwOD1zdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X3R1cm4oYm9vbCBvbilcbi0tXG5tbS9kYW1vbi9scnVfc29ydC5jLTQyMy1cdFx0cmV0dXJuIGVycjtcbm1tL2RhbW9uL2xydV9zb3J0LmM6NDI0Olx0cmV0dXJuIGRhbW9uX2NhbGwoY3R4LCBcdTAwMjZjYWxsX2NvbnRyb2wpO1xubW0vZGFtb24vbHJ1X3NvcnQuYy00MjUtfVxuLS1cbm1tL2RhbW9uL3JlY2xhaW0uYz0yNzQ9c3RhdGljIGludCBkYW1vbl9yZWNsYWltX2NvbW1pdF9pbnB1dHNfc3RvcmUoY29uc3QgY2hhciAqdmFsLFxuLS1cbm1tL2RhbW9uL3JlY2xhaW0uYy0yNzgtXHRpbnQgZXJyO1xubW0vZGFtb24vcmVjbGFpbS5jOjI3OTpcdHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgY29udHJvbCA9IHtcbm1tL2RhbW9uL3JlY2xhaW0uYy0yODAtXHRcdC5mbiA9IGRhbW9uX3JlY2xhaW1fY29tbWl0X2lucHV0c19mbixcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmMtMjk0LVx0Lypcbm1tL2RhbW9uL3JlY2xhaW0uYzoyOTU6XHQgKiBTa2lwIGRhbW9uX2NhbGwoKSBpZiBjdHggaXMgbm90IGluaXRpYWxpemVkIHRvIGF2b2lkXG5tbS9kYW1vbi9yZWNsYWltLmMtMjk2LVx0ICogTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLlxuLS1cbm1tL2RhbW9uL3JlY2xhaW0uYy0zMDAtXG5tbS9kYW1vbi9yZWNsYWltLmM6MzAxOlx0ZXJyID0gZGFtb25fY2FsbChjdHgsIFx1MDAyNmNvbnRyb2wpO1xubW0vZGFtb24vcmVjbGFpbS5jLTMwMi1cbi0tXG5tbS9kYW1vbi9yZWNsYWltLmM9MzEyPW1vZHVsZV9wYXJhbV9jYihjb21taXRfaW5wdXRzLCBcdTAwMjZjb21taXRfaW5wdXRzX3BhcmFtX29wcywgXHUwMDI2Y29tbWl0X2lucHV0cywgMDYwMCk7XG5tbS9kYW1vbi9yZWNsYWltLmMtMzEzLVxubW0vZGFtb24vcmVjbGFpbS5jOjMxNDpzdGF0aWMgaW50IGRhbW9uX3JlY2xhaW1fZGFtb25fY2FsbF9mbih2b2lkICphcmcpXG5tbS9kYW1vbi9yZWNsYWltLmMtMzE1LXtcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmMtMzI1LVxubW0vZGFtb24vcmVjbGFpbS5jOjMyNjpzdGF0aWMgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCBjYWxsX2NvbnRyb2wgPSB7XG5tbS9kYW1vbi9yZWNsYWltLmM6MzI3Olx0LmZuID0gZGFtb25fcmVjbGFpbV9kYW1vbl9jYWxsX2ZuLFxubW0vZGFtb24vcmVjbGFpbS5jLTMyOC1cdC5yZXBlYXQgPSB0cnVlLFxuLS1cbm1tL2RhbW9uL3JlY2xhaW0uYz0zMzE9c3RhdGljIGludCBkYW1vbl9yZWNsYWltX3R1cm4oYm9vbCBvbilcbi0tXG5tbS9kYW1vbi9yZWNsYWltLmMtMzQ2LVx0XHRyZXR1cm4gZXJyO1xubW0vZGFtb24vcmVjbGFpbS5jOjM0NzpcdHJldHVybiBkYW1vbl9jYWxsKGN0eCwgXHUwMDI2Y2FsbF9jb250cm9sKTtcbm1tL2RhbW9uL3JlY2xhaW0uYy0zNDgtfVxuLS1cbm1tL2RhbW9uL3N0YXQuYz0xMTM9c3RhdGljIHZvaWQgZGFtb25fc3RhdF9zZXRfaWRsZXRpbWVfcGVyY2VudGlsZXMoc3RydWN0IGRhbW9uX2N0eCAqYylcbi0tXG5tbS9kYW1vbi9zdGF0LmMtMTM0LVxubW0vZGFtb24vc3RhdC5jOjEzNTpzdGF0aWMgaW50IGRhbW9uX3N0YXRfZGFtb25fY2FsbF9mbih2b2lkICpkYXRhKVxubW0vZGFtb24vc3RhdC5jLTEzNi17XG4tLVxubW0vZGFtb24vc3RhdC5jPTE1MT1zdGF0aWMgc3RydWN0IGRhbW9uX2N0eCAqZGFtb25fc3RhdF9idWlsZF9jdHgodm9pZClcbi0tXG5tbS9kYW1vbi9zdGF0LmMtMTk0LVxubW0vZGFtb24vc3RhdC5jOjE5NTpzdGF0aWMgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCBjYWxsX2NvbnRyb2wgPSB7XG5tbS9kYW1vbi9zdGF0LmM6MTk2Olx0LmZuID0gZGFtb25fc3RhdF9kYW1vbl9jYWxsX2ZuLFxubW0vZGFtb24vc3RhdC5jLTE5Ny1cdC5yZXBlYXQgPSB0cnVlLFxuLS1cbm1tL2RhbW9uL3N0YXQuYz0yMDA9c3RhdGljIGludCBkYW1vbl9zdGF0X3N0YXJ0KHZvaWQpXG4tLVxubW0vZGFtb24vc3RhdC5jLTIyMS1cdGNhbGxfY29udHJvbC5kYXRhID0gZGFtb25fc3RhdF9jb250ZXh0O1xubW0vZGFtb24vc3RhdC5jOjIyMjpcdHJldHVybiBkYW1vbl9jYWxsKGRhbW9uX3N0YXRfY29udGV4dCwgXHUwMDI2Y2FsbF9jb250cm9sKTtcbm1tL2RhbW9uL3N0YXQuYy0yMjMtfVxuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MjIxNj1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb24oc3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKmtkYW1vbmQpXG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMjE4LVx0c3RydWN0IGRhbW9uX2N0eCAqY3R4O1xubW0vZGFtb24vc3lzZnMuYzoyMjE5Olx0c3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqcmVwZWF0X2NhbGxfY29udHJvbDtcbm1tL2RhbW9uL3N5c2ZzLmMtMjIyMC1cdGludCBlcnI7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMjU1LVx0cmVwZWF0X2NhbGxfY29udHJvbC1cdTAwM2VkZWFsbG9jX29uX2NhbmNlbCA9IHRydWU7XG5tbS9kYW1vbi9zeXNmcy5jOjIyNTY6XHRpZiAoZGFtb25fY2FsbChjdHgsIHJlcGVhdF9jYWxsX2NvbnRyb2wpKVxubW0vZGFtb24vc3lzZnMuYy0yMjU3LVx0XHRrZnJlZShyZXBlYXRfY2FsbF9jb250cm9sKTtcbi0tXG5tbS9kYW1vbi9zeXNmcy5jPTIyNjE9c3RhdGljIGludCBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZihzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZClcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTIyNzMtXG5tbS9kYW1vbi9zeXNmcy5jOjIyNzQ6c3RhdGljIGludCBkYW1vbl9zeXNmc19kYW1vbl9jYWxsKGludCAoKmZuKSh2b2lkICpkYXRhKSxcbm1tL2RhbW9uL3N5c2ZzLmMtMjI3NS1cdFx0c3RydWN0IGRhbW9uX3N5c2ZzX2tkYW1vbmQgKmtkYW1vbmQpXG5tbS9kYW1vbi9zeXNmcy5jLTIyNzYte1xubW0vZGFtb24vc3lzZnMuYzoyMjc3Olx0c3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCBjYWxsX2NvbnRyb2wgPSB7fTtcbm1tL2RhbW9uL3N5c2ZzLmMtMjI3OC1cdGludCBlcnI7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMjgzLVx0Y2FsbF9jb250cm9sLmRhdGEgPSBrZGFtb25kO1xubW0vZGFtb24vc3lzZnMuYzoyMjg0Olx0ZXJyID0gZGFtb25fY2FsbChrZGFtb25kLVx1MDAzZWRhbW9uX2N0eCwgXHUwMDI2Y2FsbF9jb250cm9sKTtcbm1tL2RhbW9uL3N5c2ZzLmMtMjI4NS1cdHJldHVybiBlcnIgPyBlcnIgOiBjYWxsX2NvbnRyb2wucmV0dXJuX2NvZGU7XG4tLVxubW0vZGFtb24vc3lzZnMuYz0yMzM3PXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfaGFuZGxlX2NtZChlbnVtIGRhbW9uX3N5c2ZzX2NtZCBjbWQsXG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMzQ4LVx0Y2FzZSBEQU1PTl9TWVNGU19DTURfQ09NTUlUOlxubW0vZGFtb24vc3lzZnMuYzoyMzQ5Olx0XHRyZXR1cm4gZGFtb25fc3lzZnNfZGFtb25fY2FsbChcbm1tL2RhbW9uL3N5c2ZzLmMtMjM1MC1cdFx0XHRcdGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCwga2RhbW9uZCk7XG5tbS9kYW1vbi9zeXNmcy5jLTIzNTEtXHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9DT01NSVRfU0NIRU1FU19RVU9UQV9HT0FMUzpcbm1tL2RhbW9uL3N5c2ZzLmM6MjM1MjpcdFx0cmV0dXJuIGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoXG5tbS9kYW1vbi9zeXNmcy5jLTIzNTMtXHRcdFx0XHRkYW1vbl9zeXNmc19jb21taXRfc2NoZW1lc19xdW90YV9nb2Fscyxcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTIzNTUtXHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19TVEFUUzpcbm1tL2RhbW9uL3N5c2ZzLmM6MjM1NjpcdFx0cmV0dXJuIGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoXG5tbS9kYW1vbi9zeXNmcy5jLTIzNTctXHRcdFx0XHRkYW1vbl9zeXNmc191cGRfc2NoZW1lc19zdGF0cywga2RhbW9uZCk7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMzY1LVx0Y2FzZSBEQU1PTl9TWVNGU19DTURfVVBEQVRFX1NDSEVNRVNfRUZGRUNUSVZFX1FVT1RBUzpcbm1tL2RhbW9uL3N5c2ZzLmM6MjM2NjpcdFx0cmV0dXJuIGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoXG5tbS9kYW1vbi9zeXNmcy5jLTIzNjctXHRcdFx0XHRkYW1vbl9zeXNmc191cGRfc2NoZW1lc19lZmZlY3RpdmVfcXVvdGFzLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjM2OS1cdGNhc2UgREFNT05fU1lTRlNfQ01EX1VQREFURV9UVU5FRF9JTlRFUlZBTFM6XG5tbS9kYW1vbi9zeXNmcy5jOjIzNzA6XHRcdHJldHVybiBkYW1vbl9zeXNmc19kYW1vbl9jYWxsKFxubW0vZGFtb24vc3lzZnMuYy0yMzcxLVx0XHRcdFx0ZGFtb25fc3lzZnNfdXBkX3R1bmVkX2ludGVydmFscywga2RhbW9uZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMjE6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTg5MwoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDE3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEQU1PTiBLZXJuZWwgTW9kdWxlIFVwZGF0ZSAtIEluaXRpYWwgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJIHNlZSB3ZSBoYXZlIHNvbWUgdXBkYXRlcyBjb25jZW50cmF0ZWQgd2l0aGluIHRoZSBEQU1PTiBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSB0b3VjaGluZyBgbW0vZGFtb24vY29yZS5jYCwgYG1tL2RhbW9uL2xydV9zb3J0LmNgLCBgbW0vZGFtb24vcmVjbGFpbS5jYCwgYW5kIGBtbS9kYW1vbi9zeXNmcy5jYC4gTG9va3MgbGlrZSB3ZSYjMzk7cmUgcmVmaW5pbmcgREFNT04mIzM5O3MgY29yZSBmdW5jdGlvbmFsaXR5LgoKVGhlIG1vZGlmaWNhdGlvbnMgYXJlIHNwcmVhZCBhY3Jvc3MgdGhlIGxpZmVjeWNsZSBtYW5hZ2VtZW50LCB3aXRoIGNoYW5nZXMgdG8gYGRhbW9uX3N0YXJ0YCwgYF9fZGFtb25fc3RvcGAsIGBkYW1vbl9zdG9wYCwgYW5kIGBkYW1vbl9jYWxsYC4gV2UmIzM5O3ZlIGFsc28gZ290IHNvbWUgdHVuaW5nIGluIHRoZSBvcGVyYXRpb25hbCBsb29wIHdpdGggYGRhbW9uX2xydV9zb3J0X3R1cm5gLCBgZGFtb25fcmVjbGFpbV90dXJuYCwgYW5kIGEgc3lzZnMgdXBkYXRlLCBgZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmZgLiBJbnRlcmVzdGluZy4gTG9va3MgbGlrZSB3ZSYjMzk7cmUgZ2V0dGluZyBtb3JlIGNvbnRyb2wgYW5kIHBvdGVudGlhbGx5IG1vcmUgZWZmaWNpZW50IG1lbW9yeSBtb25pdG9yaW5nIGFuZCBtYW5hZ2VtZW50LgoKTm93LCBsZXQmIzM5O3Mgc2VlIHdoaWNoIGZlYXR1cmVzIHdlJiMzOTtyZSBicmluZ2luZyBvbmxpbmUuIFRoZSBjb25maWcgY2hhbmdlcyBpbmNsdWRlIGVuYWJsaW5nIGBEQU1PTmAsIGBEQU1PTl9WQUREUmAsIGBEQU1PTl9QQUREUmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9SRUNMQUlNYCwgYW5kIGBEQU1PTl9MUlVfU09SVGAuIFRoaXMgY29uZmlybXMgd2UmIzM5O3JlIGFpbWluZyBmb3IgYSBjb21wcmVoZW5zaXZlIERBTU9OIGltcGxlbWVudGF0aW9uLCBoYW5kbGluZyBib3RoIHZpcnR1YWwgYW5kIHBoeXNpY2FsIGFkZHJlc3NlcywgaW50ZWdyYXRlZCB3aXRoIHRoZSBzeXNmcyBpbnRlcmZhY2UsIGFuZCBlbXBsb3lpbmcgcmVjbGFpbSBhbmQgTFJVLWJhc2VkIHNvcnRpbmcgc3RyYXRlZ2llcy4KCkJlZm9yZSBkaXZpbmcgaW50byB0aGUgY29kZSBpdHNlbGYsIGxldCBtZSBxdWlja2x5IGdsYW5jZSBhdCB0aGUgYHNhbXBsZXMvZGFtb24vYCBkaXJlY3RvcnkuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlc2UgbmV3IGNvbmZpZ3VyYXRpb25zIGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIGFuZCBhbnkgZXhhbXBsZSB3b3JrZmxvd3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMjE6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNBTVBMRV9EQU1PTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3NhbXBsZXMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NhbXBsZXMvZGFtb24vS2NvbmZpZz0zPW1lbnUgXCYjMzQ7REFNT04gU2FtcGxlc1wmIzM0O1xuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTQtXG5zYW1wbGVzL2RhbW9uL0tjb25maWc6NTpjb25maWcgU0FNUExFX0RBTU9OX1dTU0VcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy02LVx0Ym9vbCBcJiMzNDtEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciB3b3JraW5nIHNldCBzaXplIGVzdGltYXRpb25cJiMzNDtcbi0tXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMTYtXG5zYW1wbGVzL2RhbW9uL0tjb25maWc6MTc6Y29uZmlnIFNBTVBMRV9EQU1PTl9QUkNMXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMTgtXHRib29sIFwmIzM0O0RBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIGFjY2Vzcy1hd2FyZSBwcm9hY3RpdmUgcmVjbGFtYXRpb25cJiMzNDtcbi0tXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMjktXG5zYW1wbGVzL2RhbW9uL0tjb25maWc6MzA6Y29uZmlnIFNBTVBMRV9EQU1PTl9NVElFUlxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTMxLVx0Ym9vbCBcJiMzNDtEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBtZW1vcnkgdGllcmluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjQyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IERBTU9OIENvbmZpZ3VyYXRpb24gQ2hlY2sqKgoKT2theSwgc28gSSBuZWVkIHRvIHVwZGF0ZSB0aGUgREFNT04gY29uZmlncy4gSSYjMzk7bSBnb2luZyB0byBhZGQgYFNBTVBMRV9EQU1PTl9XU1NFYCwgYFNBTVBMRV9EQU1PTl9QUkNMYCwgYW5kIGBTQU1QTEVfREFNT05fTVRJRVJgLgoKTm93LCByZWdhcmRpbmcgdGhlIGZvY3VzIHN5bWJvbHMsIEkmIzM5O20gZ29pbmcgdG8gd29yayB3aXRoIGBkYW1vbl9zdGFydGAsIGBkYW1vbl9zdG9wYCwgYGRhbW9uX2NhbGxgLCBgZGFtb25fbHJ1X3NvcnRfdHVybmAsIGBkYW1vbl9yZWNsYWltX3R1cm5gLCBhbmQgYGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmYC4gSSYjMzk7bGwga2VlcCBhbiBleWUgb3V0IGZvciBvdGhlciByZWxldmFudCBmdW5jdGlvbnMsIGFsdGhvdWdoIEkga25vdyBgX19kYW1vbl9zdG9wYCBpcyBzdGF0aWMgYW5kIGlzbiYjMzk7dCBzb21ldGhpbmcgSSBjYW4gZGlyZWN0bHkgZm9jdXMgb24uIGBkYW1vbl9zdG9wYCBjYWxscyB0aGF0IGZ1bmN0aW9uLCBzbyBJJiMzOTttIG5vdCBvdmVybG9va2luZyBpdC4KCkkmIzM5O20gYWxzbyBsb29raW5nIGF0IHRoZSBleGlzdGluZyBjb25maWdzLiBJIG5vdGljZWQgYERBTU9OX1NUQVRgLCBidXQgdGhlIHBhdGNoIGRpZG4mIzM5O3QgdG91Y2ggYG1tL2RhbW9uL3N0YXQuY2AgZXZlbiB0aG91Z2ggYGRhbW9uX3N0YXRfc3RhcnRgIGNhbGxzIGBkYW1vbl9jYWxsYC4gVGhlIHBhdGNoIGNoYW5nZXM6IGBpbmNsdWRlL2xpbnV4L2RhbW9uLmhgLCBgbW0vZGFtb24vY29yZS5jYCwgYG1tL2RhbW9uL2xydV9zb3J0LmNgLCBgbW0vZGFtb24vcmVjbGFpbS5jYCwgYG1tL2RhbW9uL3N5c2ZzLmNgLCBhbmQgdGhlIHNhbXBsZXMgKGBzYW1wbGVzL2RhbW9uL210aWVyLmNgLCBgc2FtcGxlcy9kYW1vbi9wcmNsLmNgLCBgc2FtcGxlcy9kYW1vbi93c3NlLmNgKS4KClNvLCBJJiMzOTttIGRlYWxpbmcgd2l0aCBgREFNT05gLCBgREFNT05fVkFERFJgLCBgREFNT05fUEFERFJgLCBgREFNT05fU1lTRlNgLCBgREFNT05fUkVDTEFJTWAsIGBEQU1PTl9MUlVfU09SVGAsIGFsb25nIHdpdGggdGhlIG5ldyBzYW1wbGVzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgREFNT05fVkFERFJgIGFuZCBgREFNT05fUEFERFJgIGFyZSBzdGlsbCByZXF1aXJlZCwgc2luY2UgdGhleSBhcmUgZXNzZW50aWFsIGZvciB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlIG9wZXJhdGlvbnMsIGFuZCBhcmUgdXN1YWxseSBuZWVkZWQgZm9yIERBTU9OIHRvIGZ1bmN0aW9uLiBJJiMzOTtsbCBkbyBhIGZpbmFsIGNoZWNrIHRvIG1ha2Ugc3VyZSBJJiMzOTt2ZSBnb3QgZXZlcnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMjE6MDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiBEQU1PTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZGFtb24vS2NvbmZpZz0xNT1jb25maWcgREFNT05fREVCVUdfU0FOSVRZXG5tbS9kYW1vbi9LY29uZmlnLTE2LVx0Ym9vbCBcJiMzNDtDaGVjayBzYW5pdHkgb2YgREFNT04gY29kZVwmIzM0O1xubW0vZGFtb24vS2NvbmZpZzoxNzpcdGRlcGVuZHMgb24gREFNT05cbm1tL2RhbW9uL0tjb25maWctMTgtXHRoZWxwXG4tLVxubW0vZGFtb24vS2NvbmZpZz0yNj1jb25maWcgREFNT05fS1VOSVRfVEVTVFxubW0vZGFtb24vS2NvbmZpZy0yNy1cdGJvb2wgXCYjMzQ7VGVzdCBmb3IgZGFtb25cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xubW0vZGFtb24vS2NvbmZpZzoyODpcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IEtVTklUPXlcbm1tL2RhbW9uL0tjb25maWctMjktXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWc9Mzg9Y29uZmlnIERBTU9OX1ZBRERSXG5tbS9kYW1vbi9LY29uZmlnLTM5LVx0Ym9vbCBcJiMzNDtEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcJiMzNDtcbm1tL2RhbW9uL0tjb25maWc6NDA6XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBNTVVcbm1tL2RhbW9uL0tjb25maWctNDEtXHRzZWxlY3QgUEFHRV9JRExFX0ZMQUdcbi0tXG5tbS9kYW1vbi9LY29uZmlnPTQ3PWNvbmZpZyBEQU1PTl9QQUREUlxubW0vZGFtb24vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7RGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVwmIzM0O1xubW0vZGFtb24vS2NvbmZpZzo0OTpcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IE1NVVxubW0vZGFtb24vS2NvbmZpZy01MC1cdHNlbGVjdCBQQUdFX0lETEVfRkxBR1xuLS1cbm1tL2RhbW9uL0tjb25maWc9NTY9Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNTctXHRib29sIFwmIzM0O1Rlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xubW0vZGFtb24vS2NvbmZpZzo1ODpcdGRlcGVuZHMgb24gREFNT05fVkFERFIgXHUwMDI2XHUwMDI2IEtVTklUPXlcbm1tL2RhbW9uL0tjb25maWctNTktXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWc9Njg9Y29uZmlnIERBTU9OX1NZU0ZTXG5tbS9kYW1vbi9LY29uZmlnLTY5LVx0Ym9vbCBcJiMzNDtEQU1PTiBzeXNmcyBpbnRlcmZhY2VcJiMzNDtcbm1tL2RhbW9uL0tjb25maWc6NzA6XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBTWVNGU1xubW0vZGFtb24vS2NvbmZpZy03MS1cdGRlZmF1bHQgREFNT05cbi0tXG5tbS9kYW1vbi9LY29uZmlnPTc2PWNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXG5tbS9kYW1vbi9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xubW0vZGFtb24vS2NvbmZpZzo3ODpcdGRlcGVuZHMgb24gREFNT05fU1lTRlMgXHUwMDI2XHUwMDI2IEtVTklUPXlcbm1tL2RhbW9uL0tjb25maWctNzktXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL0tjb25maWc9ODg9Y29uZmlnIERBTU9OX1JFQ0xBSU1cbm1tL2RhbW9uL0tjb25maWctODktXHRib29sIFwmIzM0O0J1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnOjkwOlx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxubW0vZGFtb24vS2NvbmZpZy05MS1cdGhlbHBcbi0tXG5tbS9kYW1vbi9LY29uZmlnPTEwMD1jb25maWcgREFNT05fTFJVX1NPUlRcbm1tL2RhbW9uL0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtCdWlsZCBEQU1PTi1iYXNlZCBMUlUtbGlzdHMgc29ydGluZyAoREFNT05fTFJVX1NPUlQpXCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnOjEwMjpcdGRlcGVuZHMgb24gREFNT05fUEFERFJcbm1tL2RhbW9uL0tjb25maWctMTAzLVx0aGVscFxuLS1cbm1tL2RhbW9uL0tjb25maWc9MTA4PWNvbmZpZyBEQU1PTl9TVEFUXG5tbS9kYW1vbi9LY29uZmlnLTEwOS1cdGJvb2wgXCYjMzQ7QnVpbGQgZGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBzdGF0IChEQU1PTl9TVEFUKVwmIzM0O1xubW0vZGFtb24vS2NvbmZpZzoxMTA6XHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXG5tbS9kYW1vbi9LY29uZmlnLTExMS1cdGhlbHBcbi0tXG5tbS9kYW1vbi9LY29uZmlnPTExNj1jb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcbm1tL2RhbW9uL0tjb25maWctMTE3LVx0Ym9vbCBcJiMzNDtFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XCYjMzQ7XG5tbS9kYW1vbi9LY29uZmlnOjExODpcdGRlcGVuZHMgb24gREFNT05fU1RBVFxubW0vZGFtb24vS2NvbmZpZy0xMTktXHRkZWZhdWx0IERBTU9OX1NUQVRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMjE6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1MjUKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGFuIGV4cGVydCBpbiB0aGlzIGFyZWE6CgoqKkFuYWx5emluZyBEQU1PTiBLY29uZmlnIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGVzZSBEQU1PTiBLY29uZmlnIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgY2xlYXIgdGhhdCBib3RoIGBEQU1PTl9SRUNMQUlNYCBhbmQgYERBTU9OX0xSVV9TT1JUYCBhcmUgYnVpbHQgdXBvbiB0aGUgZm91bmRhdGlvbiBvZiBgREFNT05fUEFERFJgLiBUaGlzIG1ha2VzIHNlbnNlIOKAkyByZWNsYWltaW5nIGFuZCBzb3J0aW5nIGJhc2VkIG9uIExSVSB0eXBpY2FsbHkgcmVxdWlyZSBwaHlzaWNhbCBhZGRyZXNzIGNvbnNpZGVyYXRpb25zLiBNb3Zpbmcgb24sIHRoZSBwcmVzZW5jZSBvZiBgREFNT05fU1lTRlNgIGlzIGNvbnRpbmdlbnQgb24gdGhlIGF2YWlsYWJpbGl0eSBvZiBib3RoIGBEQU1PTmAgaXRzZWxmIGFuZCB0aGUgYFNZU0ZTYCBpbmZyYXN0cnVjdHVyZS4gVGhhdCYjMzk7cyBzdGFuZGFyZCBwcmFjdGljZSBmb3IgZXhwb3NpbmcgY29udHJvbCBpbnRlcmZhY2VzLiBOb3csIGBEQU1PTl9WQUREUmAgYW5kIGBEQU1PTl9QQUREUmAgYm90aCBzZWVtIHRvIGRlcGVuZCBvbiBgREFNT05gIGFuZCB0aGUgYE1NVWAuIFRoaXMgc3VnZ2VzdHMgdGhhdCB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzIG1hbmlwdWxhdGlvbiB3aXRoaW4gREFNT04gcmVxdWlyZXMgdGhlIE1NVSYjMzk7cyBmdW5jdGlvbmFsaXR5LCB3aGljaCBpcyBubyBzdXJwcmlzZSByZWFsbHkuIFRvIGdhaW4gZnVydGhlciBpbnNpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBzYW1wbGVzL2RhbW9uL0tjb25maWdgIHRvIHNlZSB0aGUgY29tcGxldGUgcGljdHVyZSBvZiBob3cgZXZlcnl0aGluZyBmaXRzIHRvZ2V0aGVyIGluIHRoZSBhY3R1YWwga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzYW1wbGVzL2RhbW9uL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c2FtcGxlcy9kYW1vbi9LY29uZmlnPTU9Y29uZmlnIFNBTVBMRV9EQU1PTl9XU1NFXG5zYW1wbGVzL2RhbW9uL0tjb25maWctNi1cdGJvb2wgXCYjMzQ7REFNT04gc2FtcGxlIG1vZHVsZSBmb3Igd29ya2luZyBzZXQgc2l6ZSBlc3RpbWF0aW9uXCYjMzQ7XG5zYW1wbGVzL2RhbW9uL0tjb25maWc6NzpcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IERBTU9OX1ZBRERSXG5zYW1wbGVzL2RhbW9uL0tjb25maWctOC1cdGhlbHBcbi0tXG5zYW1wbGVzL2RhbW9uL0tjb25maWc9MTc9Y29uZmlnIFNBTVBMRV9EQU1PTl9QUkNMXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMTgtXHRib29sIFwmIzM0O0RBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIGFjY2Vzcy1hd2FyZSBwcm9hY3RpdmUgcmVjbGFtYXRpb25cJiMzNDtcbnNhbXBsZXMvZGFtb24vS2NvbmZpZzoxOTpcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IERBTU9OX1ZBRERSXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMjAtXHRoZWxwXG4tLVxuc2FtcGxlcy9kYW1vbi9LY29uZmlnPTMwPWNvbmZpZyBTQU1QTEVfREFNT05fTVRJRVJcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7REFNT04gc2FtcGxlIG1vZHVsZSBmb3IgbWVtb3J5IHRpZXJpbmdcJiMzNDtcbnNhbXBsZXMvZGFtb24vS2NvbmZpZzozMjpcdGRlcGVuZHMgb24gREFNT04gXHUwMDI2XHUwMDI2IERBTU9OX1BBRERSXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMzMtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDIxOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMTMwCgkJCQkJCQlvdXRwdXQ6IDIzNwoJCQkJCQkJdGhvdWdodHM6IDIxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERBTU9OIENvbmZpZ3VyYXRpb24gYW5kIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJiMzOTttIHNlZWluZyBhIGxpc3Qgb2YgREFNT04gY29uZmlndXJhdGlvbiBzeW1ib2xzOiBgREFNT05gLCBgREFNT05fVkFERFJgLCBgREFNT05fUEFERFJgLCBgREFNT05fU1lTRlNgLCBgREFNT05fUkVDTEFJTWAsIGBEQU1PTl9MUlVfU09SVGAsIGFuZCB0aGVuIGEgZmV3IHNhbXBsZSBzeW1ib2xzOiBgU0FNUExFX0RBTU9OX1dTU0VgLCBgU0FNUExFX0RBTU9OX1BSQ0xgLCBhbmQgYFNBTVBMRV9EQU1PTl9NVElFUmAuIE5vdGhpbmcgdW5leHBlY3RlZCB0aGVyZSDigJMgdGhlc2UgYXJlIHRoZSBrbm9icyB3ZSYjMzk7ZCBleHBlY3QgdG8gc2VlIHRvIGNvbnRyb2wgREFNT04mIzM5O3MgYmVoYXZpb3IgYW5kIGZlYXR1cmVzLgoKTm93LCBmb2N1c2luZyBvbiB0aGUgY29yZSBzeW1ib2xzOiBgZGFtb25fc3RhcnRgLCBgZGFtb25fc3RvcGAsIGBkYW1vbl9jYWxsYCwgYGRhbW9uX2xydV9zb3J0X3R1cm5gLCBgZGFtb25fcmVjbGFpbV90dXJuYCwgYW5kIGBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZmAuIFRoZXNlIGFyZSB0aGUgZW50cnkgcG9pbnRzIGFuZCBjb250cm9sIHBvaW50cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBwYXRjaCBpcyBpbXBhY3RpbmcgdGhlc2Ugc3BlY2lmaWMgZnVuY3Rpb25zLgoKQWhhISBUaGUgcGF0Y2ggbW9kaWZpZXMgYGRhbW9uX3N0b3BgLiBJdCBjaGFuZ2VzIHRoZSByZXR1cm4gdHlwZSB0byBgdm9pZGAsIG1lYW5pbmcgbm8gZXJyb3IgY29kZSBpcyBiZWluZyByZXR1cm5lZCBhbnltb3JlLiBGdXJ0aGVybW9yZSwgdGhlIGJlaGF2aW9yIGhhcyBiZWVuIGFsdGVyZWQgaW4gc3VjaCBhIHdheSB0aGF0IGl0IG5vIGxvbmdlciByZXR1cm5zIGFuIGVycm9yIGNvZGUsIHdoaWNoIGltcGxpZXMgYSBjaGFuZ2UgaW4gaG93IGVycm9ycyBhcmUgaGFuZGxlZCwgb3IgcGVyaGFwcyBhIHNpbXBsaWZpY2F0aW9uIG9mIHRoZSBlcnJvciBoYW5kbGluZyBzdHJhdGVneS4gSXQgYWxzbyBzdGF0ZXMgdGhhdCBgZGFtb25fY2FsbGAgbm93IHdhaXRzIGZvciB0aGUgY29udGV4dCB0byBzdG9wIGlmIHRoZSBjYWxsIGlzIGNhbmNlbGxlZC4KClllcywgdGhpcyByZXByZXNlbnRzIGEgc2lnbmlmaWNhbnQsIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSB2ZXJ5IGNvcmUgb2YgREFNT04mIzM5O3MgbG9naWMuIEl0IGNvdWxkIGFmZmVjdCBob3cgd2UgbWFuYWdlIGVycm9yIHN0YXRlcyBhbmQgaG93IHdlIGhhbmRsZSBhc3luY2hyb25vdXMgb3BlcmF0aW9ucy4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIGRlZXBseSBhbmFseXplIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2Ugb24gdGhlIG92ZXJhbGwgc3lzdGVtIGJlaGF2aW9yLCBlcnJvciBwcm9wYWdhdGlvbiwgYW5kIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGludHJvZHVjZWQgYnkgdGhlIGNoYW5nZXMuIE5vdyB0aGF0IEkgdW5kZXJzdGFuZCB0aGUgY29yZSBvZiB0aGUgY2hhbmdlLCBJJiMzOTttIGdvaW5nIHRvIHByb2NlZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAyMTowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OywKICAgICYjMzQ7REFNT05fUEFERFImIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fUkVDTEFJTSYjMzQ7LAogICAgJiMzNDtEQU1PTl9MUlVfU09SVCYjMzQ7LAogICAgJiMzNDtTQU1QTEVfREFNT05fV1NTRSYjMzQ7LAogICAgJiMzNDtTQU1QTEVfREFNT05fUFJDTCYjMzQ7LAogICAgJiMzNDtTQU1QTEVfREFNT05fTVRJRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vbl9zdGFydCYjMzQ7LAogICAgJiMzNDtkYW1vbl9zdG9wJiMzNDssCiAgICAmIzM0O2RhbW9uX2NhbGwmIzM0OywKICAgICYjMzQ7ZGFtb25fbHJ1X3NvcnRfdHVybiYjMzQ7LAogICAgJiMzNDtkYW1vbl9yZWNsYWltX3R1cm4mIzM0OywKICAgICYjMzQ7ZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgREFNT04gKERhdGEgQWNjZXNzIE1PTml0b3IpIGxvZ2ljLCBjaGFuZ2luZyB0aGUgcmV0dXJuIHR5cGUgb2YgYGRhbW9uX3N0b3BgIHRvIGB2b2lkYCBhbmQgdXBkYXRpbmcgaXRzIGNhbGxlcnMuIEl0IGFsc28gbW9kaWZpZXMgYGRhbW9uX2NhbGxgIHRvIHdhaXQgZm9yIHRoZSBjb250ZXh0IHRvIHN0b3AgaWYgdGhlIGNhbGwgaXMgY2FuY2VsZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEQU1PTiYjMzQ7LAogICAgJiMzNDtEQU1PTl9WQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9QQUREUiYjMzQ7LAogICAgJiMzNDtEQU1PTl9TWVNGUyYjMzQ7LAogICAgJiMzNDtEQU1PTl9SRUNMQUlNJiMzNDssCiAgICAmIzM0O0RBTU9OX0xSVV9TT1JUJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9XU1NFJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9QUkNMJiMzNDssCiAgICAmIzM0O1NBTVBMRV9EQU1PTl9NVElFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RhbW9uX3N0YXJ0JiMzNDssCiAgICAmIzM0O2RhbW9uX3N0b3AmIzM0OywKICAgICYjMzQ7ZGFtb25fY2FsbCYjMzQ7LAogICAgJiMzNDtkYW1vbl9scnVfc29ydF90dXJuJiMzNDssCiAgICAmIzM0O2RhbW9uX3JlY2xhaW1fdHVybiYjMzQ7LAogICAgJiMzNDtkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBEQU1PTiAoRGF0YSBBY2Nlc3MgTU9OaXRvcikgbG9naWMsIGNoYW5naW5nIHRoZSByZXR1cm4gdHlwZSBvZiBgZGFtb25fc3RvcGAgdG8gYHZvaWRgIGFuZCB1cGRhdGluZyBpdHMgY2FsbGVycy4gSXQgYWxzbyBtb2RpZmllcyBgZGFtb25fY2FsbGAgdG8gd2FpdCBmb3IgdGhlIGNvbnRleHQgdG8gc3RvcCBpZiB0aGUgY2FsbCBpcyBjYW5jZWxlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNTo0OS41NjA1MTYzNzVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDAyNDI5OTk1NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREFNT05cIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX1JFQ0xBSU1cIixcbiAgICBcIkRBTU9OX0xSVV9TT1JUXCIsXG4gICAgXCJTQU1QTEVfREFNT05fV1NTRVwiLFxuICAgIFwiU0FNUExFX0RBTU9OX1BSQ0xcIixcbiAgICBcIlNBTVBMRV9EQU1PTl9NVElFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9zdG9wXCIsXG4gICAgXCJkYW1vbl9jYWxsXCIsXG4gICAgXCJkYW1vbl9scnVfc29ydF90dXJuXCIsXG4gICAgXCJkYW1vbl9yZWNsYWltX3R1cm5cIixcbiAgICBcImRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgREFNT04gKERhdGEgQWNjZXNzIE1PTml0b3IpIGxvZ2ljLCBjaGFuZ2luZyB0aGUgcmV0dXJuIHR5cGUgb2YgYGRhbW9uX3N0b3BgIHRvIGB2b2lkYCBhbmQgdXBkYXRpbmcgaXRzIGNhbGxlcnMuIEl0IGFsc28gbW9kaWZpZXMgYGRhbW9uX2NhbGxgIHRvIHdhaXQgZm9yIHRoZSBjb250ZXh0IHRvIHN0b3AgaWYgdGhlIGNhbGwgaXMgY2FuY2VsZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNTo0OS41NjA1MzQ2NzVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyNzA1NTI1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGRiMTg4ZDkyNjc5Mjc3ZWQ4MGM3OTIxZDE5ODc5YmY1MzE5MjFmYzhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgNiAyMTowNTo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmggYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcXG5pbmRleCAyNjYxMjMxYzBhZTgyZS4uMTliN2U4MzliZGUwYjQgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9kYW1vbi5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXFxuQEAgLTEwNzAsNyArMTA3MCw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGRhbW9uX21heF9ucl9hY2Nlc3Nlcyhjb25zdCBzdHJ1Y3QgZGFtb25fYXR0cnMgKmF0dHJzXFxuIFxcbiBib29sIGRhbW9uX2luaXRpYWxpemVkKHZvaWQpO1xcbiBpbnQgZGFtb25fc3RhcnQoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzLCBib29sIGV4Y2x1c2l2ZSk7XFxuLWludCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cyk7XFxuK3ZvaWQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpO1xcbiBib29sIGRhbW9uX2lzX3J1bm5pbmcoc3RydWN0IGRhbW9uX2N0eCAqY3R4KTtcXG4gaW50IGRhbW9uX2tkYW1vbmRfcGlkKHN0cnVjdCBkYW1vbl9jdHggKmN0eCk7XFxuIFxcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9jb3JlLmMgYi9tbS9kYW1vbi9jb3JlLmNcXG5pbmRleCAzYzVhNDZlMWMwNzlhMy4uMzkwZTAwYjM2ODVlZmMgMTAwNjQ0XFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXFxuKysrIGIvbW0vZGFtb24vY29yZS5jXFxuQEAgLTE5MTcsMTYgKzE5MTcsMTcgQEAgaW50IGRhbW9uX3N0YXJ0KHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cywgYm9vbCBleGNsdXNpdmUpXFxuIFxcdFxcdHJ1bm5pbmdfZXhjbHVzaXZlX2N0eHMgPSB0cnVlO1xcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmRhbW9uX2xvY2spO1xcbiBcXG4rXFx0aWYgKGkgIT0gbnJfY3R4cylcXG4rXFx0XFx0ZGFtb25fc3RvcChjdHhzLCBpKTtcXG4rXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuIC8qXFxuICAqIF9fZGFtb25fc3RvcCgpIC0gU3RvcHMgbW9uaXRvcmluZyBvZiBhIGdpdmVuIGNvbnRleHQuXFxuICAqIEBjdHg6XFx0bW9uaXRvcmluZyBjb250ZXh0XFxuLSAqXFxuLSAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZS5cXG4gICovXFxuLXN0YXRpYyBpbnQgX19kYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4rc3RhdGljIHZvaWQgX19kYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4ge1xcbiBcXHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaztcXG4gXFxuQEAgLTE5MzYsMzEgKzE5MzcsMjMgQEAgc3RhdGljIGludCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbiBcXHRcXHRnZXRfdGFza19zdHJ1Y3QodHNrKTtcXG4gXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjdHgtXFx1MDAzZWtkYW1vbmRfbG9jayk7XFxuIFxcdFxcdGt0aHJlYWRfc3RvcF9wdXQodHNrKTtcXG4tXFx0XFx0cmV0dXJuIDA7XFxuK1xcdFxcdHJldHVybjtcXG4gXFx0fVxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmN0eC1cXHUwMDNla2RhbW9uZF9sb2NrKTtcXG4tXFxuLVxcdHJldHVybiAtRVBFUk07XFxuIH1cXG4gXFxuIC8qKlxcbiAgKiBkYW1vbl9zdG9wKCkgLSBTdG9wcyB0aGUgbW9uaXRvcmluZ3MgZm9yIGEgZ2l2ZW4gZ3JvdXAgb2YgY29udGV4dHMuXFxuICAqIEBjdHhzOlxcdGFuIGFycmF5IG9mIHRoZSBwb2ludGVycyBmb3IgY29udGV4dHMgdG8gc3RvcCBtb25pdG9yaW5nXFxuICAqIEBucl9jdHhzOlxcdHNpemUgb2YgQGN0eHNcXG4tICpcXG4tICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxcbiAgKi9cXG4taW50IGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxcbit2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxcbiB7XFxuLVxcdGludCBpLCBlcnIgPSAwO1xcbitcXHRpbnQgaTtcXG4gXFxuLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl9jdHhzOyBpKyspIHtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5yX2N0eHM7IGkrKylcXG4gXFx0XFx0LyogbnJfcnVubmluZ19jdHhzIGlzIGRlY3JlbWVudGVkIGluIGtkYW1vbmRfZm4gKi9cXG4tXFx0XFx0ZXJyID0gX19kYW1vbl9zdG9wKGN0eHNbaV0pO1xcbi1cXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRicmVhaztcXG4tXFx0fVxcbi1cXHRyZXR1cm4gZXJyO1xcbitcXHRcXHRfX2RhbW9uX3N0b3AoY3R4c1tpXSk7XFxuIH1cXG4gXFxuIC8qKlxcbkBAIC0yMDE3LDYgKzIwMTAsOCBAQCBpbnQgZGFtb25fa2RhbW9uZF9waWQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxcbiAgKiBAY3R4IGhhcyBzdWNjZWVkZWQuICBPdGhlcndpc2UsIHRoaXMgZnVuY3Rpb24gY291bGQgZmFsbCBpbnRvIGFuIGluZGVmaW5pdGVcXG4gICogd2FpdC5cXG4gICpcXG4rICogV2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGZhaWxlZCwgdGhlIEBjdHggaXMgZ3VhcmFudGVlZCB0byBiZSBzdG9wcGVkLlxcbisgKlxcbiAgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXFxuICAqL1xcbiBpbnQgZGFtb25fY2FsbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgKmNvbnRyb2wpXFxuQEAgLTIwMjksNyArMjAyNCw3IEBAIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2Y3R4LVxcdTAwM2VjYWxsX2NvbnRyb2xzX2xvY2spO1xcbiBcXHRpZiAoY3R4LVxcdTAwM2VjYWxsX2NvbnRyb2xzX29ic29sZXRlKSB7XFxuIFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2Y3R4LVxcdTAwM2VjYWxsX2NvbnRyb2xzX2xvY2spO1xcbi1cXHRcXHRyZXR1cm4gLUVDQU5DRUxFRDtcXG4rXFx0XFx0Z290byBjYW5jZWxlZDtcXG4gXFx0fVxcbiBcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZjb250cm9sLVxcdTAwM2VsaXN0LCBcXHUwMDI2Y3R4LVxcdTAwM2VjYWxsX2NvbnRyb2xzKTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjdHgtXFx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XFxuQEAgLTIwMzcsOCArMjAzMiwxNCBAQCBpbnQgZGFtb25fY2FsbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgKmNvbnRyb2wpXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXHR3YWl0X2Zvcl9jb21wbGV0aW9uKFxcdTAwMjZjb250cm9sLVxcdTAwM2Vjb21wbGV0aW9uKTtcXG4gXFx0aWYgKGNvbnRyb2wtXFx1MDAzZWNhbmNlbGVkKVxcbi1cXHRcXHRyZXR1cm4gLUVDQU5DRUxFRDtcXG4rXFx0XFx0Z290byBjYW5jZWxlZDtcXG4gXFx0cmV0dXJuIDA7XFxuK1xcbitjYW5jZWxlZDpcXG4rXFx0d2hpbGUgKGRhbW9uX2lzX3J1bm5pbmcoY3R4KSlcXG4rXFx0XFx0c2NoZWR1bGVfdGltZW91dF9pZGxlKG1zZWNzX3RvX2ppZmZpZXMoMTAwKSk7XFxuK1xcdHJldHVybiAtRUNBTkNFTEVEO1xcbitcXG4gfVxcbiBcXG4gLyoqXFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2xydV9zb3J0LmMgYi9tbS9kYW1vbi9scnVfc29ydC5jXFxuaW5kZXggMmRkMGNkMGQyNjI3MzEuLmU4YzM4OWFkMzIyNmY3IDEwMDY0NFxcbi0tLSBhL21tL2RhbW9uL2xydV9zb3J0LmNcXG4rKysgYi9tbS9kYW1vbi9scnVfc29ydC5jXFxuQEAgLTQwOSw4ICs0MDksMTAgQEAgc3RhdGljIGludCBkYW1vbl9scnVfc29ydF90dXJuKGJvb2wgb24pXFxuIHtcXG4gXFx0aW50IGVycjtcXG4gXFxuLVxcdGlmICghb24pXFxuLVxcdFxcdHJldHVybiBkYW1vbl9zdG9wKFxcdTAwMjZjdHgsIDEpO1xcbitcXHRpZiAoIW9uKSB7XFxuK1xcdFxcdGRhbW9uX3N0b3AoXFx1MDAyNmN0eCwgMSk7XFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHR9XFxuIFxcbiBcXHRlcnIgPSBkYW1vbl9scnVfc29ydF9hcHBseV9wYXJhbWV0ZXJzKCk7XFxuIFxcdGlmIChlcnIpXFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3JlY2xhaW0uYyBiL21tL2RhbW9uL3JlY2xhaW0uY1xcbmluZGV4IDY0NjliMjVjYzM0ZjkyLi4wOWU5NDFkNzVmNjdkZCAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi9yZWNsYWltLmNcXG4rKysgYi9tbS9kYW1vbi9yZWNsYWltLmNcXG5AQCAtMzMyLDggKzMzMiwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX3JlY2xhaW1fdHVybihib29sIG9uKVxcbiB7XFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRpZiAoIW9uKVxcbi1cXHRcXHRyZXR1cm4gZGFtb25fc3RvcChcXHUwMDI2Y3R4LCAxKTtcXG4rXFx0aWYgKCFvbikge1xcbitcXHRcXHRkYW1vbl9zdG9wKFxcdTAwMjZjdHgsIDEpO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbiBcXG4gXFx0ZXJyID0gZGFtb25fcmVjbGFpbV9hcHBseV9wYXJhbWV0ZXJzKCk7XFxuIFxcdGlmIChlcnIpXFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3N5c2ZzLmMgYi9tbS9kYW1vbi9zeXNmcy5jXFxuaW5kZXggYjY1NjUxNDk4ZTBkMTQuLjZkN2UzNmM5ZTUwOWQyIDEwMDY0NFxcbi0tLSBhL21tL2RhbW9uL3N5c2ZzLmNcXG4rKysgYi9tbS9kYW1vbi9zeXNmcy5jXFxuQEAgLTIyNjIsMTIgKzIyNjIsMTMgQEAgc3RhdGljIGludCBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZihzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZClcXG4ge1xcbiBcXHRpZiAoIWtkYW1vbmQtXFx1MDAzZWRhbW9uX2N0eClcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLVxcdHJldHVybiBkYW1vbl9zdG9wKFxcdTAwMjZrZGFtb25kLVxcdTAwM2VkYW1vbl9jdHgsIDEpO1xcbitcXHRkYW1vbl9zdG9wKFxcdTAwMjZrZGFtb25kLVxcdTAwM2VkYW1vbl9jdHgsIDEpO1xcbiBcXHQvKlxcbiBcXHQgKiBUbyBhbGxvdyB1c2VycyBzaG93IGZpbmFsIG1vbml0b3JpbmcgcmVzdWx0cyBvZiBhbHJlYWR5IHR1cm5lZC1vZmZcXG4gXFx0ICogREFNT04sIHdlIGZyZWUga2RhbW9uZC1cXHUwMDNlZGFtb25fY3R4IGluIG5leHRcXG4gXFx0ICogZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vbigpLCBvciBrZGFtb25kc19ucl9zdG9yZSgpXFxuIFxcdCAqL1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBkYW1vbl9zeXNmc19kYW1vbl9jYWxsKGludCAoKmZuKSh2b2lkICpkYXRhKSxcXG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi9tdGllci5jIGIvc2FtcGxlcy9kYW1vbi9tdGllci5jXFxuaW5kZXggZTU2N2Y0ZWRkODBlYTcuLmFjOWMyNGI5MmVhZDg0IDEwMDY0NFxcbi0tLSBhL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xcbisrKyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xcbkBAIC0xOTMsOCArMTkzLDYgQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZClcXG4gXFx0aWYgKCFlcnIpXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG4tXFx0aWYgKGRhbW9uX2lzX3J1bm5pbmcoY3R4c1swXSkpXFxuLVxcdFxcdGRhbW9uX3N0b3AoY3R4cywgMSk7XFxuIFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMF0pO1xcbiBcXHRkYW1vbl9kZXN0cm95X2N0eChjdHhzWzFdKTtcXG4gXFx0cmV0dXJuIGVycjtcXG5AQCAtMjAyLDggKzIwMCw3IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KHZvaWQpXFxuIFxcbiBzdGF0aWMgdm9pZCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RvcCh2b2lkKVxcbiB7XFxuLVxcdGRhbW9uX3N0b3AoY3R4cywgMSk7XFxuLVxcdGRhbW9uX3N0b3AoXFx1MDAyNmN0eHNbMV0sIDEpO1xcbitcXHRkYW1vbl9zdG9wKGN0eHMsIDIpO1xcbiBcXHRkYW1vbl9kZXN0cm95X2N0eChjdHhzWzBdKTtcXG4gXFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4c1sxXSk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi9wcmNsLmMgYi9zYW1wbGVzL2RhbW9uL3ByY2wuY1xcbmluZGV4IGVkZWFlMTQ1YzRhOGFmLi44NDIwOTliZDYyMjg2MSAxMDA2NDRcXG4tLS0gYS9zYW1wbGVzL2RhbW9uL3ByY2wuY1xcbisrKyBiL3NhbXBsZXMvZGFtb24vcHJjbC5jXFxuQEAgLTExMywxMCArMTEzLDggQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfcHJjbF9zdGFydCh2b2lkKVxcbiBcXG4gXFx0cmVwZWF0X2NhbGxfY29udHJvbC5kYXRhID0gY3R4O1xcbiBcXHRlcnIgPSBkYW1vbl9jYWxsKGN0eCwgXFx1MDAyNnJlcGVhdF9jYWxsX2NvbnRyb2wpO1xcbi1cXHRpZiAoZXJyKSB7XFxuLVxcdFxcdGRhbW9uX3N0b3AoXFx1MDAyNmN0eCwgMSk7XFxuK1xcdGlmIChlcnIpXFxuIFxcdFxcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eCk7XFxuLVxcdH1cXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvc2FtcGxlcy9kYW1vbi93c3NlLmMgYi9zYW1wbGVzL2RhbW9uL3dzc2UuY1xcbmluZGV4IGZmNWU4YTg5MGY0NDhjLi4zN2ZkNWRhMjAxNTg4NSAxMDA2NDRcXG4tLS0gYS9zYW1wbGVzL2RhbW9uL3dzc2UuY1xcbisrKyBiL3NhbXBsZXMvZGFtb24vd3NzZS5jXFxuQEAgLTkzLDEwICs5Myw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3dzc2Vfc3RhcnQodm9pZClcXG4gXFx0fVxcbiBcXHRyZXBlYXRfY2FsbF9jb250cm9sLmRhdGEgPSBjdHg7XFxuIFxcdGVyciA9IGRhbW9uX2NhbGwoY3R4LCBcXHUwMDI2cmVwZWF0X2NhbGxfY29udHJvbCk7XFxuLVxcdGlmIChlcnIpIHtcXG4tXFx0XFx0ZGFtb25fc3RvcChcXHUwMDI2Y3R4LCAxKTtcXG4rXFx0aWYgKGVycilcXG4gXFx0XFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcXG4tXFx0fVxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNTo1MC4zODg1NzcxMTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzOTQxNDkyMzQyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1BBRERSXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUkVDTEFJTVwiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIixcbiAgICBcIlNBTVBMRV9EQU1PTl9XU1NFXCIsXG4gICAgXCJTQU1QTEVfREFNT05fUFJDTFwiLFxuICAgIFwiU0FNUExFX0RBTU9OX01USUVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb25fc3RhcnRcIixcbiAgICBcImRhbW9uX3N0b3BcIixcbiAgICBcImRhbW9uX2NhbGxcIixcbiAgICBcImRhbW9uX2xydV9zb3J0X3R1cm5cIixcbiAgICBcImRhbW9uX3JlY2xhaW1fdHVyblwiLFxuICAgIFwiZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBEQU1PTiAoRGF0YSBBY2Nlc3MgTU9OaXRvcikgbG9naWMsIGNoYW5naW5nIHRoZSByZXR1cm4gdHlwZSBvZiBgZGFtb25fc3RvcGAgdG8gYHZvaWRgIGFuZCB1cGRhdGluZyBpdHMgY2FsbGVycy4gSXQgYWxzbyBtb2RpZmllcyBgZGFtb25fY2FsbGAgdG8gd2FpdCBmb3IgdGhlIGNvbnRleHQgdG8gc3RvcCBpZiB0aGUgY2FsbCBpcyBjYW5jZWxlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGIxODhkOTI2NzkyNzdlZDgwYzc5MjFkMTk4NzliZjUzMTkyMWZjOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDYgMjE6MDU6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmggYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbmluZGV4IDI2NjEyMzFjMGFlODJlLi4xOWI3ZTgzOWJkZTBiNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaFxuKysrIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXG5AQCAtMTA3MCw3ICsxMDcwLDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZGFtb25fbWF4X25yX2FjY2Vzc2VzKGNvbnN0IHN0cnVjdCBkYW1vbl9hdHRycyAqYXR0cnNcbiBcbiBib29sIGRhbW9uX2luaXRpYWxpemVkKHZvaWQpO1xuIGludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKTtcbi1pbnQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpO1xuK3ZvaWQgZGFtb25fc3RvcChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMpO1xuIGJvb2wgZGFtb25faXNfcnVubmluZyhzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xuIGludCBkYW1vbl9rZGFtb25kX3BpZChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgpO1xuIFxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggM2M1YTQ2ZTFjMDc5YTMuLjM5MGUwMGIzNjg1ZWZjIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC0xOTE3LDE2ICsxOTE3LDE3IEBAIGludCBkYW1vbl9zdGFydChzdHJ1Y3QgZGFtb25fY3R4ICoqY3R4cywgaW50IG5yX2N0eHMsIGJvb2wgZXhjbHVzaXZlKVxuIFx0XHRydW5uaW5nX2V4Y2x1c2l2ZV9jdHhzID0gdHJ1ZTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZkYW1vbl9sb2NrKTtcbiBcbitcdGlmIChpICE9IG5yX2N0eHMpXG4rXHRcdGRhbW9uX3N0b3AoY3R4cywgaSk7XG4rXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiAvKlxuICAqIF9fZGFtb25fc3RvcCgpIC0gU3RvcHMgbW9uaXRvcmluZyBvZiBhIGdpdmVuIGNvbnRleHQuXG4gICogQGN0eDpcdG1vbml0b3JpbmcgY29udGV4dFxuLSAqXG4tICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxuICAqL1xuLXN0YXRpYyBpbnQgX19kYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcbitzdGF0aWMgdm9pZCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuIHtcbiBcdHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrO1xuIFxuQEAgLTE5MzYsMzEgKzE5MzcsMjMgQEAgc3RhdGljIGludCBfX2RhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuIFx0XHRnZXRfdGFza19zdHJ1Y3QodHNrKTtcbiBcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmN0eC1cdTAwM2VrZGFtb25kX2xvY2spO1xuIFx0XHRrdGhyZWFkX3N0b3BfcHV0KHRzayk7XG4tXHRcdHJldHVybiAwO1xuK1x0XHRyZXR1cm47XG4gXHR9XG4gXHRtdXRleF91bmxvY2soXHUwMDI2Y3R4LVx1MDAzZWtkYW1vbmRfbG9jayk7XG4tXG4tXHRyZXR1cm4gLUVQRVJNO1xuIH1cbiBcbiAvKipcbiAgKiBkYW1vbl9zdG9wKCkgLSBTdG9wcyB0aGUgbW9uaXRvcmluZ3MgZm9yIGEgZ2l2ZW4gZ3JvdXAgb2YgY29udGV4dHMuXG4gICogQGN0eHM6XHRhbiBhcnJheSBvZiB0aGUgcG9pbnRlcnMgZm9yIGNvbnRleHRzIHRvIHN0b3AgbW9uaXRvcmluZ1xuICAqIEBucl9jdHhzOlx0c2l6ZSBvZiBAY3R4c1xuLSAqXG4tICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLlxuICAqL1xuLWludCBkYW1vbl9zdG9wKHN0cnVjdCBkYW1vbl9jdHggKipjdHhzLCBpbnQgbnJfY3R4cylcbit2b2lkIGRhbW9uX3N0b3Aoc3RydWN0IGRhbW9uX2N0eCAqKmN0eHMsIGludCBucl9jdHhzKVxuIHtcbi1cdGludCBpLCBlcnIgPSAwO1xuK1x0aW50IGk7XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9jdHhzOyBpKyspIHtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX2N0eHM7IGkrKylcbiBcdFx0LyogbnJfcnVubmluZ19jdHhzIGlzIGRlY3JlbWVudGVkIGluIGtkYW1vbmRfZm4gKi9cbi1cdFx0ZXJyID0gX19kYW1vbl9zdG9wKGN0eHNbaV0pO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdGJyZWFrO1xuLVx0fVxuLVx0cmV0dXJuIGVycjtcbitcdFx0X19kYW1vbl9zdG9wKGN0eHNbaV0pO1xuIH1cbiBcbiAvKipcbkBAIC0yMDE3LDYgKzIwMTAsOCBAQCBpbnQgZGFtb25fa2RhbW9uZF9waWQoc3RydWN0IGRhbW9uX2N0eCAqY3R4KVxuICAqIEBjdHggaGFzIHN1Y2NlZWRlZC4gIE90aGVyd2lzZSwgdGhpcyBmdW5jdGlvbiBjb3VsZCBmYWxsIGludG8gYW4gaW5kZWZpbml0ZVxuICAqIHdhaXQuXG4gICpcbisgKiBXaGVuIHRoaXMgZnVuY3Rpb24gaXMgZmFpbGVkLCB0aGUgQGN0eCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0b3BwZWQuXG4rICpcbiAgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuXG4gICovXG4gaW50IGRhbW9uX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sKVxuQEAgLTIwMjksNyArMjAyNCw3IEBAIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcbiBcdG11dGV4X2xvY2soXHUwMDI2Y3R4LVx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XG4gXHRpZiAoY3R4LVx1MDAzZWNhbGxfY29udHJvbHNfb2Jzb2xldGUpIHtcbiBcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmN0eC1cdTAwM2VjYWxsX2NvbnRyb2xzX2xvY2spO1xuLVx0XHRyZXR1cm4gLUVDQU5DRUxFRDtcbitcdFx0Z290byBjYW5jZWxlZDtcbiBcdH1cbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2Y29udHJvbC1cdTAwM2VsaXN0LCBcdTAwMjZjdHgtXHUwMDNlY2FsbF9jb250cm9scyk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2Y3R4LVx1MDAzZWNhbGxfY29udHJvbHNfbG9jayk7XG5AQCAtMjAzNyw4ICsyMDMyLDE0IEBAIGludCBkYW1vbl9jYWxsKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCAqY29udHJvbClcbiBcdFx0cmV0dXJuIDA7XG4gXHR3YWl0X2Zvcl9jb21wbGV0aW9uKFx1MDAyNmNvbnRyb2wtXHUwMDNlY29tcGxldGlvbik7XG4gXHRpZiAoY29udHJvbC1cdTAwM2VjYW5jZWxlZClcbi1cdFx0cmV0dXJuIC1FQ0FOQ0VMRUQ7XG4rXHRcdGdvdG8gY2FuY2VsZWQ7XG4gXHRyZXR1cm4gMDtcbitcbitjYW5jZWxlZDpcbitcdHdoaWxlIChkYW1vbl9pc19ydW5uaW5nKGN0eCkpXG4rXHRcdHNjaGVkdWxlX3RpbWVvdXRfaWRsZShtc2Vjc190b19qaWZmaWVzKDEwMCkpO1xuK1x0cmV0dXJuIC1FQ0FOQ0VMRUQ7XG4rXG4gfVxuIFxuIC8qKlxuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2xydV9zb3J0LmMgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5pbmRleCAyZGQwY2QwZDI2MjczMS4uZThjMzg5YWQzMjI2ZjcgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9scnVfc29ydC5jXG4rKysgYi9tbS9kYW1vbi9scnVfc29ydC5jXG5AQCAtNDA5LDggKzQwOSwxMCBAQCBzdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X3R1cm4oYm9vbCBvbilcbiB7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKCFvbilcbi1cdFx0cmV0dXJuIGRhbW9uX3N0b3AoXHUwMDI2Y3R4LCAxKTtcbitcdGlmICghb24pIHtcbitcdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbiBcbiBcdGVyciA9IGRhbW9uX2xydV9zb3J0X2FwcGx5X3BhcmFtZXRlcnMoKTtcbiBcdGlmIChlcnIpXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vcmVjbGFpbS5jIGIvbW0vZGFtb24vcmVjbGFpbS5jXG5pbmRleCA2NDY5YjI1Y2MzNGY5Mi4uMDllOTQxZDc1ZjY3ZGQgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9yZWNsYWltLmNcbisrKyBiL21tL2RhbW9uL3JlY2xhaW0uY1xuQEAgLTMzMiw4ICszMzIsMTAgQEAgc3RhdGljIGludCBkYW1vbl9yZWNsYWltX3R1cm4oYm9vbCBvbilcbiB7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKCFvbilcbi1cdFx0cmV0dXJuIGRhbW9uX3N0b3AoXHUwMDI2Y3R4LCAxKTtcbitcdGlmICghb24pIHtcbitcdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbiBcbiBcdGVyciA9IGRhbW9uX3JlY2xhaW1fYXBwbHlfcGFyYW1ldGVycygpO1xuIFx0aWYgKGVycilcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi9zeXNmcy5jIGIvbW0vZGFtb24vc3lzZnMuY1xuaW5kZXggYjY1NjUxNDk4ZTBkMTQuLjZkN2UzNmM5ZTUwOWQyIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vc3lzZnMuY1xuKysrIGIvbW0vZGFtb24vc3lzZnMuY1xuQEAgLTIyNjIsMTIgKzIyNjIsMTMgQEAgc3RhdGljIGludCBkYW1vbl9zeXNmc190dXJuX2RhbW9uX29mZihzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZClcbiB7XG4gXHRpZiAoIWtkYW1vbmQtXHUwMDNlZGFtb25fY3R4KVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdHJldHVybiBkYW1vbl9zdG9wKFx1MDAyNmtkYW1vbmQtXHUwMDNlZGFtb25fY3R4LCAxKTtcbitcdGRhbW9uX3N0b3AoXHUwMDI2a2RhbW9uZC1cdTAwM2VkYW1vbl9jdHgsIDEpO1xuIFx0LypcbiBcdCAqIFRvIGFsbG93IHVzZXJzIHNob3cgZmluYWwgbW9uaXRvcmluZyByZXN1bHRzIG9mIGFscmVhZHkgdHVybmVkLW9mZlxuIFx0ICogREFNT04sIHdlIGZyZWUga2RhbW9uZC1cdTAwM2VkYW1vbl9jdHggaW4gbmV4dFxuIFx0ICogZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vbigpLCBvciBrZGFtb25kc19ucl9zdG9yZSgpXG4gXHQgKi9cbitcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoaW50ICgqZm4pKHZvaWQgKmRhdGEpLFxuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vbXRpZXIuYyBiL3NhbXBsZXMvZGFtb24vbXRpZXIuY1xuaW5kZXggZTU2N2Y0ZWRkODBlYTcuLmFjOWMyNGI5MmVhZDg0IDEwMDY0NFxuLS0tIGEvc2FtcGxlcy9kYW1vbi9tdGllci5jXG4rKysgYi9zYW1wbGVzL2RhbW9uL210aWVyLmNcbkBAIC0xOTMsOCArMTkzLDYgQEAgc3RhdGljIGludCBkYW1vbl9zYW1wbGVfbXRpZXJfc3RhcnQodm9pZClcbiBcdGlmICghZXJyKVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdGlmIChkYW1vbl9pc19ydW5uaW5nKGN0eHNbMF0pKVxuLVx0XHRkYW1vbl9zdG9wKGN0eHMsIDEpO1xuIFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4c1swXSk7XG4gXHRkYW1vbl9kZXN0cm95X2N0eChjdHhzWzFdKTtcbiBcdHJldHVybiBlcnI7XG5AQCAtMjAyLDggKzIwMCw3IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX210aWVyX3N0YXJ0KHZvaWQpXG4gXG4gc3RhdGljIHZvaWQgZGFtb25fc2FtcGxlX210aWVyX3N0b3Aodm9pZClcbiB7XG4tXHRkYW1vbl9zdG9wKGN0eHMsIDEpO1xuLVx0ZGFtb25fc3RvcChcdTAwMjZjdHhzWzFdLCAxKTtcbitcdGRhbW9uX3N0b3AoY3R4cywgMik7XG4gXHRkYW1vbl9kZXN0cm95X2N0eChjdHhzWzBdKTtcbiBcdGRhbW9uX2Rlc3Ryb3lfY3R4KGN0eHNbMV0pO1xuIH1cbmRpZmYgLS1naXQgYS9zYW1wbGVzL2RhbW9uL3ByY2wuYyBiL3NhbXBsZXMvZGFtb24vcHJjbC5jXG5pbmRleCBlZGVhZTE0NWM0YThhZi4uODQyMDk5YmQ2MjI4NjEgMTAwNjQ0XG4tLS0gYS9zYW1wbGVzL2RhbW9uL3ByY2wuY1xuKysrIGIvc2FtcGxlcy9kYW1vbi9wcmNsLmNcbkBAIC0xMTMsMTAgKzExMyw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3ByY2xfc3RhcnQodm9pZClcbiBcbiBcdHJlcGVhdF9jYWxsX2NvbnRyb2wuZGF0YSA9IGN0eDtcbiBcdGVyciA9IGRhbW9uX2NhbGwoY3R4LCBcdTAwMjZyZXBlYXRfY2FsbF9jb250cm9sKTtcbi1cdGlmIChlcnIpIHtcbi1cdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuK1x0aWYgKGVycilcbiBcdFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcbi1cdH1cbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL3NhbXBsZXMvZGFtb24vd3NzZS5jIGIvc2FtcGxlcy9kYW1vbi93c3NlLmNcbmluZGV4IGZmNWU4YTg5MGY0NDhjLi4zN2ZkNWRhMjAxNTg4NSAxMDA2NDRcbi0tLSBhL3NhbXBsZXMvZGFtb24vd3NzZS5jXG4rKysgYi9zYW1wbGVzL2RhbW9uL3dzc2UuY1xuQEAgLTkzLDEwICs5Myw4IEBAIHN0YXRpYyBpbnQgZGFtb25fc2FtcGxlX3dzc2Vfc3RhcnQodm9pZClcbiBcdH1cbiBcdHJlcGVhdF9jYWxsX2NvbnRyb2wuZGF0YSA9IGN0eDtcbiBcdGVyciA9IGRhbW9uX2NhbGwoY3R4LCBcdTAwMjZyZXBlYXRfY2FsbF9jb250cm9sKTtcbi1cdGlmIChlcnIpIHtcbi1cdFx0ZGFtb25fc3RvcChcdTAwMjZjdHgsIDEpO1xuK1x0aWYgKGVycilcbiBcdFx0ZGFtb25fZGVzdHJveV9jdHgoY3R4KTtcbi1cdH1cbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjE6MDU6NTAuMzg4NTc5MjYzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ5MTE3NDE4ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgREFNT04gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdOKAmXMgdHdlYWtpbmcgdGhlIERhdGEgQWNjZXNzIE1vbml0b3IgKERBTU9OKSBzdWJzeXN0ZW0gd2l0aGluIHRoZSBMaW51eCBrZXJuZWwuIFNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoZXkncmUgY2hhbmdpbmcgdGhlIHJldHVybiB0eXBlIG9mIGBkYW1vbl9zdG9wYCB0byBgdm9pZGAgaW5zdGVhZCBvZiBgaW50YCwgYW5kIGFkanVzdGluZyBgZGFtb25fY2FsbGAgdG8gaGFuZGxlIGNvbnRleHQgc3RvcHBpbmcgbW9yZSBncmFjZWZ1bGx5IGlmIHRoZSBjYWxsIGlzIGNhbmNlbGVkLiBGaW5lLiBUaGV5J3ZlIGFsc28gdXBkYXRlZCB0aGUgY2FsbGVycyBvZiBgZGFtb25fc3RvcGAgYWNyb3NzIHRoZSBjb2RlYmFzZSDigJMgYGxydV9zb3J0LmNgLCBgcmVjbGFpbS5jYCwgYHN5c2ZzLmNgLCBhbmQgc2V2ZXJhbCBzYW1wbGUgZmlsZXMuXG5cbkdpdmVuIG15IGtub3dsZWRnZSBvZiB0aGUga2VybmVsLCBJIGNhbiBjb25maXJtIHRoYXQgREFNT04gaXRzZWxmIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsOyBpdCdzIGEgY3JpdGljYWwgY29tcG9uZW50IGluIG1lbW9yeSBtYW5hZ2VtZW50LCBzbyBpdCBoYXMgdG8gYmUuIFRoZSBjaGFuZ2VzICphcmUqIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBhcyB0aGUgcGF0Y2ggc3VtbWFyeSBpbmRpY2F0ZXMuXG5cbk15IGd1dCBmZWVsaW5nIGlzIHRoaXMgaXMgYSByZWxhdGl2ZWx5IGxvdy1yaXNrIG1vZGlmaWNhdGlvbiwgYnV0IGl0J3MgZGVhbGluZyB3aXRoIGEgY29yZSBjb21wb25lbnQsIHNvIHdlIG5lZWQgdG8gYmUgdGhvcm91Z2guIEknZCBkZWZpbml0ZWx5IHdhbnQgdG8gZnV6eiB0aGlzLiBJdCdzIHRpbWUgdG8gY2hlY2sgd2hhdCB0aGUgcmVsZXZhbnQgQ09ORklHIG9wdGlvbnMgYXJlIGZvciBEQU1PTi4gTXkgYmVzdCBiZXQgaXMgdG8gdXNlIGBncmVwcGVyYCBhbmQgc2VhcmNoIGBtbS9kYW1vbi9LY29uZmlnYCBvciBgbW0vS2NvbmZpZ2AgZm9yIGBDT05GSUdfREFNT05gIG9yIGFueXRoaW5nIHNpbWlsYXIgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBjb25maWd1cmF0aW9uIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MDgsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNjowNS4zMDAzMjQ1OThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3OTkzNzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEQU1PTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz0zPW1lbnUgXFxcIkRhdGEgQWNjZXNzIE1vbml0b3JpbmdcXFwiXFxubW0vZGFtb24vS2NvbmZpZy00LVxcbm1tL2RhbW9uL0tjb25maWc6NTpjb25maWcgREFNT05cXG5tbS9kYW1vbi9LY29uZmlnLTYtXFx0Ym9vbCBcXFwiREFNT046IERhdGEgQWNjZXNzIE1vbml0b3JpbmcgRnJhbWV3b3JrXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0xNC1cXG5tbS9kYW1vbi9LY29uZmlnOjE1OmNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9LY29uZmlnLTE2LVxcdGJvb2wgXFxcIkNoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0yNS1cXG5tbS9kYW1vbi9LY29uZmlnOjI2OmNvbmZpZyBEQU1PTl9LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy0yNy1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vblxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0zNy1cXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxcbm1tL2RhbW9uL0tjb25maWctMzktXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy00Ni1cXG5tbS9kYW1vbi9LY29uZmlnOjQ3OmNvbmZpZyBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNTUtXFxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNTctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vS2NvbmZpZy02Ny1cXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xcbm1tL2RhbW9uL0tjb25maWctNjktXFx0Ym9vbCBcXFwiREFNT04gc3lzZnMgaW50ZXJmYWNlXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy03NS1cXG5tbS9kYW1vbi9LY29uZmlnOjc2OmNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy03Ny1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctODctXFxubW0vZGFtb24vS2NvbmZpZzo4ODpjb25maWcgREFNT05fUkVDTEFJTVxcbm1tL2RhbW9uL0tjb25maWctODktXFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgcmVjbGFpbSAoREFNT05fUkVDTEFJTSlcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTk5LVxcbm1tL2RhbW9uL0tjb25maWc6MTAwOmNvbmZpZyBEQU1PTl9MUlVfU09SVFxcbm1tL2RhbW9uL0tjb25maWctMTAxLVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIExSVS1saXN0cyBzb3J0aW5nIChEQU1PTl9MUlVfU09SVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTEwNy1cXG5tbS9kYW1vbi9LY29uZmlnOjEwODpjb25maWcgREFNT05fU1RBVFxcbm1tL2RhbW9uL0tjb25maWctMTA5LVxcdGJvb2wgXFxcIkJ1aWxkIGRhdGEgYWNjZXNzIG1vbml0b3Jpbmcgc3RhdCAoREFNT05fU1RBVClcXFwiXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnLTExNS1cXG5tbS9kYW1vbi9LY29uZmlnOjExNjpjb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cXHRib29sIFxcXCJFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNjowNS40NjgzMjcyODVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjE2NDc1OTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgREFNT04gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIERBTU9OIHBhdGNoLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGtleSBjb25maWd1cmF0aW9ucyBpbnZvbHZlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGJlaW5nIHR3ZWFrZWQuIEkgc2VlIHdlIGhhdmUgREFNT04gaXRzZWxmLCBhbmQgdGhlbiBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHZpcnR1YWwgYW5kIHBoeXNpY2FsIGFkZHJlc3NlcyAoYERBTU9OX1ZBRERSYCwgYERBTU9OX1BBRERSYCksIHRoZSBzeXN0ZW0gZmlsZSBzeXN0ZW0gaW50ZXJmYWNlIChgREFNT05fU1lTRlNgKSwgcmVjbGFpbSBiZWhhdmlvciAoYERBTU9OX1JFQ0xBSU1gKSwgYW5kIExSVSBzb3J0aW5nIChgREFNT05fTFJVX1NPUlRgKS4gVGhpcyBnaXZlcyBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gYXNzZXNzIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlcy5cblxuTmV4dCwgSSBuZWVkIHRvIGxvb2sgYXQgdGhlIG1lYXQgb2YgdGhlIGNvZGUuIEknbGwgbmVlZCB0byBmb2N1cyBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkLiBUaGUgcGF0Y2ggdG91Y2hlcyBgZGFtb25fc3RhcnRgLCBgX19kYW1vbl9zdG9wYCwgYGRhbW9uX3N0b3BgLCBgZGFtb25fY2FsbGAsIGBkYW1vbl9scnVfc29ydF90dXJuYCwgYGRhbW9uX3JlY2xhaW1fdHVybmAsIGFuZCBgZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmZgLiBJJ2xsIHdhbnQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGVzZSBmdW5jdGlvbnMuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBkYW1vbl9jYWxsYCBhbmQgYGRhbW9uX3N0b3BgIGFuZCB0aGVuIHNlZSBob3cgdGhleSBhcmUgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcxOSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNjowOS4wODQ4MDY0MzNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4NTg5OTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9uX2NhbGxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL2NvcmUuYz05NTk9c3RhdGljIGJvb2wgZGFtb25fdmFsaWRfaW50ZXJ2YWxzX2dvYWwoc3RydWN0IGRhbW9uX2F0dHJzICphdHRycylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy05ODUtICogc2V0dXAgb2YgZGFtb25fY3R4IGJlZm9yZSBjYWxsaW5nIGRhbW9uX3N0YXJ0KCkuICBTb21lIG9mIHRoZSBBUEkgY2FsbGVyc1xcbm1tL2RhbW9uL2NvcmUuYzo5ODY6ICogYWxzbyBpbmRpcmVjdGx5IGNhbGwgdGhpcyBmdW5jdGlvbiB2aWEgZGFtb25fY2FsbCgpIC1cXHUwMDNlIGRhbW9uX2NvbW1pdCgpIGZvclxcbm1tL2RhbW9uL2NvcmUuYy05ODctICogb25saW5lIHBhcmFtZXRlcnMgdXBkYXRlcy4gIEZpbmFsbHksIGtkYW1vbmRfZm4oKSBpdHNlbGYgdXNlIHRoaXMgZm9yXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmM9MTA4NT1zdGF0aWMgdm9pZCBkYW1vc19jb21taXRfcXVvdGFfZ29hbChcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xMTA1LSAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBmcm9tIHBhcmFtZXRlcnMtdXBkYXRlIHNhZmUgY29udGV4dCwgbGlrZVxcbm1tL2RhbW9uL2NvcmUuYzoxMTA2OiAqIGRhbW9uX2NhbGwoKS5cXG5tbS9kYW1vbi9jb3JlLmMtMTEwNy0gKi9cXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0xNzIyPXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9uZXdfdGVzdF9jdHgoc3RydWN0IGRhbW9uX2N0eCAqZHN0KVxcbi0tXFxubW0vZGFtb24vY29yZS5jLTE3NDgtICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGZyb20gcGFyYW1ldGVycy11cGRhdGUgc2FmZSBjb250ZXh0LCBsaWtlXFxubW0vZGFtb24vY29yZS5jOjE3NDk6ICogZGFtb25fY2FsbCgpLlxcbm1tL2RhbW9uL2NvcmUuYy0xNzUwLSAqL1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTE5ODE9aW50IGRhbW9uX2tkYW1vbmRfcGlkKHN0cnVjdCBkYW1vbl9jdHggKmN0eClcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0xOTkyLS8qKlxcbm1tL2RhbW9uL2NvcmUuYzoxOTkzOiAqIGRhbW9uX2NhbGwoKSAtIEludm9rZSBhIGdpdmVuIGZ1bmN0aW9uIG9uIERBTU9OIHdvcmtlciB0aHJlYWQgKGtkYW1vbmQpLlxcbm1tL2RhbW9uL2NvcmUuYy0xOTk0LSAqIEBjdHg6XFx0REFNT04gY29udGV4dCB0byBjYWxsIHRoZSBmdW5jdGlvbiBmb3IuXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMTk5Ny0gKiBBc2sgREFNT04gd29ya2VyIHRocmVhZCAoa2RhbW9uZCkgb2YgQGN0eCB0byBjYWxsIGEgZnVuY3Rpb24gd2l0aCBhblxcbm1tL2RhbW9uL2NvcmUuYzoxOTk4OiAqIGFyZ3VtZW50IGRhdGEgdGhhdCByZXNwZWN0aXZlbHkgcGFzc2VkIHZpYSBcXHUwMDI2ZGFtb25fY2FsbF9jb250cm9sLVxcdTAwM2VmbiBhbmRcXG5tbS9kYW1vbi9jb3JlLmM6MTk5OTogKiBcXHUwMDI2ZGFtb25fY2FsbF9jb250cm9sLVxcdTAwM2VkYXRhIG9mIEBjb250cm9sLiAgSWYgXFx1MDAyNmRhbW9uX2NhbGxfY29udHJvbC1cXHUwMDNlcmVwZWF0IG9mXFxubW0vZGFtb24vY29yZS5jLTIwMDAtICogQGNvbnRyb2wgaXMgdW5zZXQsIGZ1cnRoZXIgd2FpdCB1bnRpbCB0aGUga2RhbW9uZCBmaW5pc2hlcyBoYW5kbGluZyBvZiB0aGVcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0yMDA2LSAqIHN5bmNocm9uaXphdGlvbi4gIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIHdpbGwgYmUgc2F2ZWQgaW5cXG5tbS9kYW1vbi9jb3JlLmM6MjAwNzogKiBcXHUwMDI2ZGFtb25fY2FsbF9jb250cm9sLVxcdTAwM2VyZXR1cm5fY29kZS5cXG5tbS9kYW1vbi9jb3JlLmMtMjAwOC0gKlxcbi0tXFxubW0vZGFtb24vY29yZS5jLTIwMTYtICovXFxubW0vZGFtb24vY29yZS5jOjIwMTc6aW50IGRhbW9uX2NhbGwoc3RydWN0IGRhbW9uX2N0eCAqY3R4LCBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sKVxcbm1tL2RhbW9uL2NvcmUuYy0yMDE4LXtcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zNTI3PXN0YXRpYyB2b2lkIGRhbW9uX3ZlcmlmeV9jdHgoc3RydWN0IGRhbW9uX2N0eCAqYylcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYy0zNTMyLS8qXFxubW0vZGFtb24vY29yZS5jOjM1MzM6ICoga2RhbW9uZF9jYWxsKCkgLSBoYW5kbGUgZGFtb25fY2FsbF9jb250cm9sIG9iamVjdHMuXFxubW0vZGFtb24vY29yZS5jLTM1MzQtICogQGN0eDpcXHRUaGUgXFx1MDAyNnN0cnVjdCBkYW1vbl9jdHggb2YgdGhlIGtkYW1vbmQuXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzUzNi0gKlxcbm1tL2RhbW9uL2NvcmUuYzozNTM3OiAqIElmIHRoZXJlIGFyZSBcXHUwMDI2c3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCByZXF1ZXN0cyB0aGF0IHJlZ2lzdGVyZWQgdmlhXFxubW0vZGFtb24vY29yZS5jOjM1Mzg6ICogXFx1MDAyNmRhbW9uX2NhbGwoKSBvbiBAY3R4LCBkbyBvciBjYW5jZWwgdGhlIGludm9jYXRpb24gb2YgdGhlIGZ1bmN0aW9uIGRlcGVuZGluZ1xcbm1tL2RhbW9uL2NvcmUuYy0zNTM5LSAqIG9uIEBjYW5jZWwuICBAY2FuY2VsIGlzIHNldCB3aGVuIHRoZSBrZGFtb25kIGlzIGFscmVhZHkgb3V0IG9mIHRoZSBtYWluIGxvb3BcXG4tLVxcbm1tL2RhbW9uL2NvcmUuYz0zNTQyPXN0YXRpYyB2b2lkIGtkYW1vbmRfY2FsbChzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsIGJvb2wgY2FuY2VsKVxcbm1tL2RhbW9uL2NvcmUuYy0zNTQzLXtcXG5tbS9kYW1vbi9jb3JlLmM6MzU0NDpcXHRzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sICpjb250cm9sLCAqbmV4dDtcXG5tbS9kYW1vbi9jb3JlLmMtMzU0NS1cXHRMSVNUX0hFQUQoY29udHJvbHMpO1xcbi0tXFxubW0vZGFtb24vY29yZS5jPTM2MjY9c3RhdGljIGludCBrZGFtb25kX2ZuKHZvaWQgKmRhdGEpXFxuLS1cXG5tbS9kYW1vbi9jb3JlLmMtMzY5NS1cXHRcXHRcXHRrZGFtb25kX3VzbGVlcChjdHgtXFx1MDAzZWF0dHJzLnNhbXBsZV9pbnRlcnZhbCk7XFxubW0vZGFtb24vY29yZS5jOjM2OTY6XFx0XFx0XFx0LyogYWxsb3cgY2FsbGVyIHVuc2V0IHBhdXNlIHZpYSBkYW1vbl9jYWxsKCkgKi9cXG5tbS9kYW1vbi9jb3JlLmMtMzY5Ny1cXHRcXHRcXHRrZGFtb25kX2NhbGwoY3R4LCBmYWxzZSk7XFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jPTM0Nz1zdGF0aWMgaW50IGRhbW9uX2xydV9zb3J0X2NvbW1pdF9pbnB1dHNfc3RvcmUoY29uc3QgY2hhciAqdmFsLFxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zNTEtXFx0aW50IGVycjtcXG5tbS9kYW1vbi9scnVfc29ydC5jOjM1MjpcXHRzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sIGNvbnRyb2wgPSB7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zNTMtXFx0XFx0LmZuID0gZGFtb25fbHJ1X3NvcnRfY29tbWl0X2lucHV0c19mbixcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzY3LVxcdC8qXFxubW0vZGFtb24vbHJ1X3NvcnQuYzozNjg6XFx0ICogU2tpcCBkYW1vbl9jYWxsKCkgaWYgY3R4IGlzIG5vdCBpbml0aWFsaXplZCB0byBhdm9pZFxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzY5LVxcdCAqIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZS5cXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmMtMzczLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM6Mzc0OlxcdGVyciA9IGRhbW9uX2NhbGwoY3R4LCBcXHUwMDI2Y29udHJvbCk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zNzUtXFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jPTM4NT1tb2R1bGVfcGFyYW1fY2IoY29tbWl0X2lucHV0cywgXFx1MDAyNmNvbW1pdF9pbnB1dHNfcGFyYW1fb3BzLCBcXHUwMDI2Y29tbWl0X2lucHV0cywgMDYwMCk7XFxubW0vZGFtb24vbHJ1X3NvcnQuYy0zODYtXFxubW0vZGFtb24vbHJ1X3NvcnQuYzozODc6c3RhdGljIGludCBkYW1vbl9scnVfc29ydF9kYW1vbl9jYWxsX2ZuKHZvaWQgKmFyZylcXG5tbS9kYW1vbi9scnVfc29ydC5jLTM4OC17XFxuLS1cXG5tbS9kYW1vbi9scnVfc29ydC5jLTQwMi1cXG5tbS9kYW1vbi9scnVfc29ydC5jOjQwMzpzdGF0aWMgc3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCBjYWxsX2NvbnRyb2wgPSB7XFxubW0vZGFtb24vbHJ1X3NvcnQuYzo0MDQ6XFx0LmZuID0gZGFtb25fbHJ1X3NvcnRfZGFtb25fY2FsbF9mbixcXG5tbS9kYW1vbi9scnVfc29ydC5jLTQwNS1cXHQucmVwZWF0ID0gdHJ1ZSxcXG4tLVxcbm1tL2RhbW9uL2xydV9zb3J0LmM9NDA4PXN0YXRpYyBpbnQgZGFtb25fbHJ1X3NvcnRfdHVybihib29sIG9uKVxcbi0tXFxubW0vZGFtb24vbHJ1X3NvcnQuYy00MjMtXFx0XFx0cmV0dXJuIGVycjtcXG5tbS9kYW1vbi9scnVfc29ydC5jOjQyNDpcXHRyZXR1cm4gZGFtb25fY2FsbChjdHgsIFxcdTAwMjZjYWxsX2NvbnRyb2wpO1xcbm1tL2RhbW9uL2xydV9zb3J0LmMtNDI1LX1cXG4tLVxcbm1tL2RhbW9uL3JlY2xhaW0uYz0yNzQ9c3RhdGljIGludCBkYW1vbl9yZWNsYWltX2NvbW1pdF9pbnB1dHNfc3RvcmUoY29uc3QgY2hhciAqdmFsLFxcbi0tXFxubW0vZGFtb24vcmVjbGFpbS5jLTI3OC1cXHRpbnQgZXJyO1xcbm1tL2RhbW9uL3JlY2xhaW0uYzoyNzk6XFx0c3RydWN0IGRhbW9uX2NhbGxfY29udHJvbCBjb250cm9sID0ge1xcbm1tL2RhbW9uL3JlY2xhaW0uYy0yODAtXFx0XFx0LmZuID0gZGFtb25fcmVjbGFpbV9jb21taXRfaW5wdXRzX2ZuLFxcbi0tXFxubW0vZGFtb24vcmVjbGFpbS5jLTI5NC1cXHQvKlxcbm1tL2RhbW9uL3JlY2xhaW0uYzoyOTU6XFx0ICogU2tpcCBkYW1vbl9jYWxsKCkgaWYgY3R4IGlzIG5vdCBpbml0aWFsaXplZCB0byBhdm9pZFxcbm1tL2RhbW9uL3JlY2xhaW0uYy0yOTYtXFx0ICogTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLlxcbi0tXFxubW0vZGFtb24vcmVjbGFpbS5jLTMwMC1cXG5tbS9kYW1vbi9yZWNsYWltLmM6MzAxOlxcdGVyciA9IGRhbW9uX2NhbGwoY3R4LCBcXHUwMDI2Y29udHJvbCk7XFxubW0vZGFtb24vcmVjbGFpbS5jLTMwMi1cXG4tLVxcbm1tL2RhbW9uL3JlY2xhaW0uYz0zMTI9bW9kdWxlX3BhcmFtX2NiKGNvbW1pdF9pbnB1dHMsIFxcdTAwMjZjb21taXRfaW5wdXRzX3BhcmFtX29wcywgXFx1MDAyNmNvbW1pdF9pbnB1dHMsIDA2MDApO1xcbm1tL2RhbW9uL3JlY2xhaW0uYy0zMTMtXFxubW0vZGFtb24vcmVjbGFpbS5jOjMxNDpzdGF0aWMgaW50IGRhbW9uX3JlY2xhaW1fZGFtb25fY2FsbF9mbih2b2lkICphcmcpXFxubW0vZGFtb24vcmVjbGFpbS5jLTMxNS17XFxuLS1cXG5tbS9kYW1vbi9yZWNsYWltLmMtMzI1LVxcbm1tL2RhbW9uL3JlY2xhaW0uYzozMjY6c3RhdGljIHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgY2FsbF9jb250cm9sID0ge1xcbm1tL2RhbW9uL3JlY2xhaW0uYzozMjc6XFx0LmZuID0gZGFtb25fcmVjbGFpbV9kYW1vbl9jYWxsX2ZuLFxcbm1tL2RhbW9uL3JlY2xhaW0uYy0zMjgtXFx0LnJlcGVhdCA9IHRydWUsXFxuLS1cXG5tbS9kYW1vbi9yZWNsYWltLmM9MzMxPXN0YXRpYyBpbnQgZGFtb25fcmVjbGFpbV90dXJuKGJvb2wgb24pXFxuLS1cXG5tbS9kYW1vbi9yZWNsYWltLmMtMzQ2LVxcdFxcdHJldHVybiBlcnI7XFxubW0vZGFtb24vcmVjbGFpbS5jOjM0NzpcXHRyZXR1cm4gZGFtb25fY2FsbChjdHgsIFxcdTAwMjZjYWxsX2NvbnRyb2wpO1xcbm1tL2RhbW9uL3JlY2xhaW0uYy0zNDgtfVxcbi0tXFxubW0vZGFtb24vc3RhdC5jPTExMz1zdGF0aWMgdm9pZCBkYW1vbl9zdGF0X3NldF9pZGxldGltZV9wZXJjZW50aWxlcyhzdHJ1Y3QgZGFtb25fY3R4ICpjKVxcbi0tXFxubW0vZGFtb24vc3RhdC5jLTEzNC1cXG5tbS9kYW1vbi9zdGF0LmM6MTM1OnN0YXRpYyBpbnQgZGFtb25fc3RhdF9kYW1vbl9jYWxsX2ZuKHZvaWQgKmRhdGEpXFxubW0vZGFtb24vc3RhdC5jLTEzNi17XFxuLS1cXG5tbS9kYW1vbi9zdGF0LmM9MTUxPXN0YXRpYyBzdHJ1Y3QgZGFtb25fY3R4ICpkYW1vbl9zdGF0X2J1aWxkX2N0eCh2b2lkKVxcbi0tXFxubW0vZGFtb24vc3RhdC5jLTE5NC1cXG5tbS9kYW1vbi9zdGF0LmM6MTk1OnN0YXRpYyBzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sIGNhbGxfY29udHJvbCA9IHtcXG5tbS9kYW1vbi9zdGF0LmM6MTk2OlxcdC5mbiA9IGRhbW9uX3N0YXRfZGFtb25fY2FsbF9mbixcXG5tbS9kYW1vbi9zdGF0LmMtMTk3LVxcdC5yZXBlYXQgPSB0cnVlLFxcbi0tXFxubW0vZGFtb24vc3RhdC5jPTIwMD1zdGF0aWMgaW50IGRhbW9uX3N0YXRfc3RhcnQodm9pZClcXG4tLVxcbm1tL2RhbW9uL3N0YXQuYy0yMjEtXFx0Y2FsbF9jb250cm9sLmRhdGEgPSBkYW1vbl9zdGF0X2NvbnRleHQ7XFxubW0vZGFtb24vc3RhdC5jOjIyMjpcXHRyZXR1cm4gZGFtb25fY2FsbChkYW1vbl9zdGF0X2NvbnRleHQsIFxcdTAwMjZjYWxsX2NvbnRyb2wpO1xcbm1tL2RhbW9uL3N0YXQuYy0yMjMtfVxcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0yMjE2PXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vbihzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZClcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjIxOC1cXHRzdHJ1Y3QgZGFtb25fY3R4ICpjdHg7XFxubW0vZGFtb24vc3lzZnMuYzoyMjE5OlxcdHN0cnVjdCBkYW1vbl9jYWxsX2NvbnRyb2wgKnJlcGVhdF9jYWxsX2NvbnRyb2w7XFxubW0vZGFtb24vc3lzZnMuYy0yMjIwLVxcdGludCBlcnI7XFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIyNTUtXFx0cmVwZWF0X2NhbGxfY29udHJvbC1cXHUwMDNlZGVhbGxvY19vbl9jYW5jZWwgPSB0cnVlO1xcbm1tL2RhbW9uL3N5c2ZzLmM6MjI1NjpcXHRpZiAoZGFtb25fY2FsbChjdHgsIHJlcGVhdF9jYWxsX2NvbnRyb2wpKVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjI1Ny1cXHRcXHRrZnJlZShyZXBlYXRfY2FsbF9jb250cm9sKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MjI2MT1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmKHN0cnVjdCBkYW1vbl9zeXNmc19rZGFtb25kICprZGFtb25kKVxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMjczLVxcbm1tL2RhbW9uL3N5c2ZzLmM6MjI3NDpzdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoaW50ICgqZm4pKHZvaWQgKmRhdGEpLFxcbm1tL2RhbW9uL3N5c2ZzLmMtMjI3NS1cXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfa2RhbW9uZCAqa2RhbW9uZClcXG5tbS9kYW1vbi9zeXNmcy5jLTIyNzYte1xcbm1tL2RhbW9uL3N5c2ZzLmM6MjI3NzpcXHRzdHJ1Y3QgZGFtb25fY2FsbF9jb250cm9sIGNhbGxfY29udHJvbCA9IHt9O1xcbm1tL2RhbW9uL3N5c2ZzLmMtMjI3OC1cXHRpbnQgZXJyO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMjgzLVxcdGNhbGxfY29udHJvbC5kYXRhID0ga2RhbW9uZDtcXG5tbS9kYW1vbi9zeXNmcy5jOjIyODQ6XFx0ZXJyID0gZGFtb25fY2FsbChrZGFtb25kLVxcdTAwM2VkYW1vbl9jdHgsIFxcdTAwMjZjYWxsX2NvbnRyb2wpO1xcbm1tL2RhbW9uL3N5c2ZzLmMtMjI4NS1cXHRyZXR1cm4gZXJyID8gZXJyIDogY2FsbF9jb250cm9sLnJldHVybl9jb2RlO1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0yMzM3PXN0YXRpYyBpbnQgZGFtb25fc3lzZnNfaGFuZGxlX2NtZChlbnVtIGRhbW9uX3N5c2ZzX2NtZCBjbWQsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIzNDgtXFx0Y2FzZSBEQU1PTl9TWVNGU19DTURfQ09NTUlUOlxcbm1tL2RhbW9uL3N5c2ZzLmM6MjM0OTpcXHRcXHRyZXR1cm4gZGFtb25fc3lzZnNfZGFtb25fY2FsbChcXG5tbS9kYW1vbi9zeXNmcy5jLTIzNTAtXFx0XFx0XFx0XFx0ZGFtb25fc3lzZnNfY29tbWl0X2lucHV0LCBrZGFtb25kKTtcXG5tbS9kYW1vbi9zeXNmcy5jLTIzNTEtXFx0Y2FzZSBEQU1PTl9TWVNGU19DTURfQ09NTUlUX1NDSEVNRVNfUVVPVEFfR09BTFM6XFxubW0vZGFtb24vc3lzZnMuYzoyMzUyOlxcdFxcdHJldHVybiBkYW1vbl9zeXNmc19kYW1vbl9jYWxsKFxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM1My1cXHRcXHRcXHRcXHRkYW1vbl9zeXNmc19jb21taXRfc2NoZW1lc19xdW90YV9nb2FscyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM1NS1cXHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19TVEFUUzpcXG5tbS9kYW1vbi9zeXNmcy5jOjIzNTY6XFx0XFx0cmV0dXJuIGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoXFxubW0vZGFtb24vc3lzZnMuYy0yMzU3LVxcdFxcdFxcdFxcdGRhbW9uX3N5c2ZzX3VwZF9zY2hlbWVzX3N0YXRzLCBrZGFtb25kKTtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM2NS1cXHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19FRkZFQ1RJVkVfUVVPVEFTOlxcbm1tL2RhbW9uL3N5c2ZzLmM6MjM2NjpcXHRcXHRyZXR1cm4gZGFtb25fc3lzZnNfZGFtb25fY2FsbChcXG5tbS9kYW1vbi9zeXNmcy5jLTIzNjctXFx0XFx0XFx0XFx0ZGFtb25fc3lzZnNfdXBkX3NjaGVtZXNfZWZmZWN0aXZlX3F1b3RhcyxcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM2OS1cXHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfVFVORURfSU5URVJWQUxTOlxcbm1tL2RhbW9uL3N5c2ZzLmM6MjM3MDpcXHRcXHRyZXR1cm4gZGFtb25fc3lzZnNfZGFtb25fY2FsbChcXG5tbS9kYW1vbi9zeXNmcy5jLTIzNzEtXFx0XFx0XFx0XFx0ZGFtb25fc3lzZnNfdXBkX3R1bmVkX2ludGVydmFscywga2RhbW9uZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDIxOjA2OjA5LjI3MzQwMjQwOFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMjQ3MjI2MzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRBTU9OIEtlcm5lbCBNb2R1bGUgVXBkYXRlIC0gSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSBzZWUgd2UgaGF2ZSBzb21lIHVwZGF0ZXMgY29uY2VudHJhdGVkIHdpdGhpbiB0aGUgREFNT04gc3Vic3lzdGVtLCBzcGVjaWZpY2FsbHkgdG91Y2hpbmcgYG1tL2RhbW9uL2NvcmUuY2AsIGBtbS9kYW1vbi9scnVfc29ydC5jYCwgYG1tL2RhbW9uL3JlY2xhaW0uY2AsIGFuZCBgbW0vZGFtb24vc3lzZnMuY2AuIExvb2tzIGxpa2Ugd2UncmUgcmVmaW5pbmcgREFNT04ncyBjb3JlIGZ1bmN0aW9uYWxpdHkuXG5cblRoZSBtb2RpZmljYXRpb25zIGFyZSBzcHJlYWQgYWNyb3NzIHRoZSBsaWZlY3ljbGUgbWFuYWdlbWVudCwgd2l0aCBjaGFuZ2VzIHRvIGBkYW1vbl9zdGFydGAsIGBfX2RhbW9uX3N0b3BgLCBgZGFtb25fc3RvcGAsIGFuZCBgZGFtb25fY2FsbGAuIFdlJ3ZlIGFsc28gZ290IHNvbWUgdHVuaW5nIGluIHRoZSBvcGVyYXRpb25hbCBsb29wIHdpdGggYGRhbW9uX2xydV9zb3J0X3R1cm5gLCBgZGFtb25fcmVjbGFpbV90dXJuYCwgYW5kIGEgc3lzZnMgdXBkYXRlLCBgZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmZgLiBJbnRlcmVzdGluZy4gTG9va3MgbGlrZSB3ZSdyZSBnZXR0aW5nIG1vcmUgY29udHJvbCBhbmQgcG90ZW50aWFsbHkgbW9yZSBlZmZpY2llbnQgbWVtb3J5IG1vbml0b3JpbmcgYW5kIG1hbmFnZW1lbnQuXG5cbk5vdywgbGV0J3Mgc2VlIHdoaWNoIGZlYXR1cmVzIHdlJ3JlIGJyaW5naW5nIG9ubGluZS4gVGhlIGNvbmZpZyBjaGFuZ2VzIGluY2x1ZGUgZW5hYmxpbmcgYERBTU9OYCwgYERBTU9OX1ZBRERSYCwgYERBTU9OX1BBRERSYCwgYERBTU9OX1NZU0ZTYCwgYERBTU9OX1JFQ0xBSU1gLCBhbmQgYERBTU9OX0xSVV9TT1JUYC4gVGhpcyBjb25maXJtcyB3ZSdyZSBhaW1pbmcgZm9yIGEgY29tcHJlaGVuc2l2ZSBEQU1PTiBpbXBsZW1lbnRhdGlvbiwgaGFuZGxpbmcgYm90aCB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzZXMsIGludGVncmF0ZWQgd2l0aCB0aGUgc3lzZnMgaW50ZXJmYWNlLCBhbmQgZW1wbG95aW5nIHJlY2xhaW0gYW5kIExSVS1iYXNlZCBzb3J0aW5nIHN0cmF0ZWdpZXMuXG5cbkJlZm9yZSBkaXZpbmcgaW50byB0aGUgY29kZSBpdHNlbGYsIGxldCBtZSBxdWlja2x5IGdsYW5jZSBhdCB0aGUgYHNhbXBsZXMvZGFtb24vYCBkaXJlY3RvcnkuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBob3cgdGhlc2UgbmV3IGNvbmZpZ3VyYXRpb25zIGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIGFuZCBhbnkgZXhhbXBsZSB3b3JrZmxvd3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4OTMsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjE6MDY6MjAuNTIwNjMxODZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5NjcxOTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTQU1QTEVfREFNT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic2FtcGxlcy9kYW1vbi9LY29uZmlnPTM9bWVudSBcXFwiREFNT04gU2FtcGxlc1xcXCJcXG5zYW1wbGVzL2RhbW9uL0tjb25maWctNC1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWc6NTpjb25maWcgU0FNUExFX0RBTU9OX1dTU0VcXG5zYW1wbGVzL2RhbW9uL0tjb25maWctNi1cXHRib29sIFxcXCJEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciB3b3JraW5nIHNldCBzaXplIGVzdGltYXRpb25cXFwiXFxuLS1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMTYtXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnOjE3OmNvbmZpZyBTQU1QTEVfREFNT05fUFJDTFxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0xOC1cXHRib29sIFxcXCJEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlIHJlY2xhbWF0aW9uXFxcIlxcbi0tXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTI5LVxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZzozMDpjb25maWcgU0FNUExFX0RBTU9OX01USUVSXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNjoyMC43NTAzMTAzMjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjU5NTAwNDIyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBEQU1PTiBDb25maWd1cmF0aW9uIENoZWNrKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVwZGF0ZSB0aGUgREFNT04gY29uZmlncy4gSSdtIGdvaW5nIHRvIGFkZCBgU0FNUExFX0RBTU9OX1dTU0VgLCBgU0FNUExFX0RBTU9OX1BSQ0xgLCBhbmQgYFNBTVBMRV9EQU1PTl9NVElFUmAuXG5cbk5vdywgcmVnYXJkaW5nIHRoZSBmb2N1cyBzeW1ib2xzLCBJJ20gZ29pbmcgdG8gd29yayB3aXRoIGBkYW1vbl9zdGFydGAsIGBkYW1vbl9zdG9wYCwgYGRhbW9uX2NhbGxgLCBgZGFtb25fbHJ1X3NvcnRfdHVybmAsIGBkYW1vbl9yZWNsYWltX3R1cm5gLCBhbmQgYGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmYC4gSSdsbCBrZWVwIGFuIGV5ZSBvdXQgZm9yIG90aGVyIHJlbGV2YW50IGZ1bmN0aW9ucywgYWx0aG91Z2ggSSBrbm93IGBfX2RhbW9uX3N0b3BgIGlzIHN0YXRpYyBhbmQgaXNuJ3Qgc29tZXRoaW5nIEkgY2FuIGRpcmVjdGx5IGZvY3VzIG9uLiBgZGFtb25fc3RvcGAgY2FsbHMgdGhhdCBmdW5jdGlvbiwgc28gSSdtIG5vdCBvdmVybG9va2luZyBpdC5cblxuSSdtIGFsc28gbG9va2luZyBhdCB0aGUgZXhpc3RpbmcgY29uZmlncy4gSSBub3RpY2VkIGBEQU1PTl9TVEFUYCwgYnV0IHRoZSBwYXRjaCBkaWRuJ3QgdG91Y2ggYG1tL2RhbW9uL3N0YXQuY2AgZXZlbiB0aG91Z2ggYGRhbW9uX3N0YXRfc3RhcnRgIGNhbGxzIGBkYW1vbl9jYWxsYC4gVGhlIHBhdGNoIGNoYW5nZXM6IGBpbmNsdWRlL2xpbnV4L2RhbW9uLmhgLCBgbW0vZGFtb24vY29yZS5jYCwgYG1tL2RhbW9uL2xydV9zb3J0LmNgLCBgbW0vZGFtb24vcmVjbGFpbS5jYCwgYG1tL2RhbW9uL3N5c2ZzLmNgLCBhbmQgdGhlIHNhbXBsZXMgKGBzYW1wbGVzL2RhbW9uL210aWVyLmNgLCBgc2FtcGxlcy9kYW1vbi9wcmNsLmNgLCBgc2FtcGxlcy9kYW1vbi93c3NlLmNgKS5cblxuU28sIEknbSBkZWFsaW5nIHdpdGggYERBTU9OYCwgYERBTU9OX1ZBRERSYCwgYERBTU9OX1BBRERSYCwgYERBTU9OX1NZU0ZTYCwgYERBTU9OX1JFQ0xBSU1gLCBgREFNT05fTFJVX1NPUlRgLCBhbG9uZyB3aXRoIHRoZSBuZXcgc2FtcGxlcy4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgREFNT05fVkFERFJgIGFuZCBgREFNT05fUEFERFJgIGFyZSBzdGlsbCByZXF1aXJlZCwgc2luY2UgdGhleSBhcmUgZXNzZW50aWFsIGZvciB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlIG9wZXJhdGlvbnMsIGFuZCBhcmUgdXN1YWxseSBuZWVkZWQgZm9yIERBTU9OIHRvIGZ1bmN0aW9uLiBJJ2xsIGRvIGEgZmluYWwgY2hlY2sgdG8gbWFrZSBzdXJlIEkndmUgZ290IGV2ZXJ5dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjQyLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDIxOjA2OjQ3LjM0NTMxODMxN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI2MzY1NzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb24gREFNT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZGFtb24vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi9LY29uZmlnPTE1PWNvbmZpZyBEQU1PTl9ERUJVR19TQU5JVFlcXG5tbS9kYW1vbi9LY29uZmlnLTE2LVxcdGJvb2wgXFxcIkNoZWNrIHNhbml0eSBvZiBEQU1PTiBjb2RlXFxcIlxcbm1tL2RhbW9uL0tjb25maWc6MTc6XFx0ZGVwZW5kcyBvbiBEQU1PTlxcbm1tL2RhbW9uL0tjb25maWctMTgtXFx0aGVscFxcbi0tXFxubW0vZGFtb24vS2NvbmZpZz0yNj1jb25maWcgREFNT05fS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctMjctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb25cXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5tbS9kYW1vbi9LY29uZmlnOjI4OlxcdGRlcGVuZHMgb24gREFNT04gXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbm1tL2RhbW9uL0tjb25maWctMjktXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWc9Mzg9Y29uZmlnIERBTU9OX1ZBRERSXFxubW0vZGFtb24vS2NvbmZpZy0zOS1cXHRib29sIFxcXCJEYXRhIGFjY2VzcyBtb25pdG9yaW5nIG9wZXJhdGlvbnMgZm9yIHZpcnR1YWwgYWRkcmVzcyBzcGFjZXNcXFwiXFxubW0vZGFtb24vS2NvbmZpZzo0MDpcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IE1NVVxcbm1tL2RhbW9uL0tjb25maWctNDEtXFx0c2VsZWN0IFBBR0VfSURMRV9GTEFHXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnPTQ3PWNvbmZpZyBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZVxcXCJcXG5tbS9kYW1vbi9LY29uZmlnOjQ5OlxcdGRlcGVuZHMgb24gREFNT04gXFx1MDAyNlxcdTAwMjYgTU1VXFxubW0vZGFtb24vS2NvbmZpZy01MC1cXHRzZWxlY3QgUEFHRV9JRExFX0ZMQUdcXG4tLVxcbm1tL2RhbW9uL0tjb25maWc9NTY9Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1RcXG5tbS9kYW1vbi9LY29uZmlnLTU3LVxcdGJvb2wgXFxcIlRlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5tbS9kYW1vbi9LY29uZmlnOjU4OlxcdGRlcGVuZHMgb24gREFNT05fVkFERFIgXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbm1tL2RhbW9uL0tjb25maWctNTktXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWc9Njg9Y29uZmlnIERBTU9OX1NZU0ZTXFxubW0vZGFtb24vS2NvbmZpZy02OS1cXHRib29sIFxcXCJEQU1PTiBzeXNmcyBpbnRlcmZhY2VcXFwiXFxubW0vZGFtb24vS2NvbmZpZzo3MDpcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IFNZU0ZTXFxubW0vZGFtb24vS2NvbmZpZy03MS1cXHRkZWZhdWx0IERBTU9OXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnPTc2PWNvbmZpZyBEQU1PTl9TWVNGU19LVU5JVF9URVNUXFxubW0vZGFtb24vS2NvbmZpZy03Ny1cXHRib29sIFxcXCJUZXN0IGZvciBkYW1vbiBzeXNmcyBpbnRlcmZhY2VcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5tbS9kYW1vbi9LY29uZmlnOjc4OlxcdGRlcGVuZHMgb24gREFNT05fU1lTRlMgXFx1MDAyNlxcdTAwMjYgS1VOSVQ9eVxcbm1tL2RhbW9uL0tjb25maWctNzktXFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4tLVxcbm1tL2RhbW9uL0tjb25maWc9ODg9Y29uZmlnIERBTU9OX1JFQ0xBSU1cXG5tbS9kYW1vbi9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkJ1aWxkIERBTU9OLWJhc2VkIHJlY2xhaW0gKERBTU9OX1JFQ0xBSU0pXFxcIlxcbm1tL2RhbW9uL0tjb25maWc6OTA6XFx0ZGVwZW5kcyBvbiBEQU1PTl9QQUREUlxcbm1tL2RhbW9uL0tjb25maWctOTEtXFx0aGVscFxcbi0tXFxubW0vZGFtb24vS2NvbmZpZz0xMDA9Y29uZmlnIERBTU9OX0xSVV9TT1JUXFxubW0vZGFtb24vS2NvbmZpZy0xMDEtXFx0Ym9vbCBcXFwiQnVpbGQgREFNT04tYmFzZWQgTFJVLWxpc3RzIHNvcnRpbmcgKERBTU9OX0xSVV9TT1JUKVxcXCJcXG5tbS9kYW1vbi9LY29uZmlnOjEwMjpcXHRkZXBlbmRzIG9uIERBTU9OX1BBRERSXFxubW0vZGFtb24vS2NvbmZpZy0xMDMtXFx0aGVscFxcbi0tXFxubW0vZGFtb24vS2NvbmZpZz0xMDg9Y29uZmlnIERBTU9OX1NUQVRcXG5tbS9kYW1vbi9LY29uZmlnLTEwOS1cXHRib29sIFxcXCJCdWlsZCBkYXRhIGFjY2VzcyBtb25pdG9yaW5nIHN0YXQgKERBTU9OX1NUQVQpXFxcIlxcbm1tL2RhbW9uL0tjb25maWc6MTEwOlxcdGRlcGVuZHMgb24gREFNT05fUEFERFJcXG5tbS9kYW1vbi9LY29uZmlnLTExMS1cXHRoZWxwXFxuLS1cXG5tbS9kYW1vbi9LY29uZmlnPTExNj1jb25maWcgREFNT05fU1RBVF9FTkFCTEVEX0RFRkFVTFRcXG5tbS9kYW1vbi9LY29uZmlnLTExNy1cXHRib29sIFxcXCJFbmFibGUgREFNT05fU1RBVCBieSBkZWZhdWx0XFxcIlxcbm1tL2RhbW9uL0tjb25maWc6MTE4OlxcdGRlcGVuZHMgb24gREFNT05fU1RBVFxcbm1tL2RhbW9uL0tjb25maWctMTE5LVxcdGRlZmF1bHQgREFNT05fU1RBVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQyMTowNjo0Ny40NzE2OTMwOThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzIxMDQwODE0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgYW4gZXhwZXJ0IGluIHRoaXMgYXJlYTpcblxuKipBbmFseXppbmcgREFNT04gS2NvbmZpZyBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayBkb3duIHRoZXNlIERBTU9OIEtjb25maWcgZGVwZW5kZW5jaWVzLiBJdCdzIGNsZWFyIHRoYXQgYm90aCBgREFNT05fUkVDTEFJTWAgYW5kIGBEQU1PTl9MUlVfU09SVGAgYXJlIGJ1aWx0IHVwb24gdGhlIGZvdW5kYXRpb24gb2YgYERBTU9OX1BBRERSYC4gVGhpcyBtYWtlcyBzZW5zZSDigJMgcmVjbGFpbWluZyBhbmQgc29ydGluZyBiYXNlZCBvbiBMUlUgdHlwaWNhbGx5IHJlcXVpcmUgcGh5c2ljYWwgYWRkcmVzcyBjb25zaWRlcmF0aW9ucy4gTW92aW5nIG9uLCB0aGUgcHJlc2VuY2Ugb2YgYERBTU9OX1NZU0ZTYCBpcyBjb250aW5nZW50IG9uIHRoZSBhdmFpbGFiaWxpdHkgb2YgYm90aCBgREFNT05gIGl0c2VsZiBhbmQgdGhlIGBTWVNGU2AgaW5mcmFzdHJ1Y3R1cmUuIFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSBmb3IgZXhwb3NpbmcgY29udHJvbCBpbnRlcmZhY2VzLiBOb3csIGBEQU1PTl9WQUREUmAgYW5kIGBEQU1PTl9QQUREUmAgYm90aCBzZWVtIHRvIGRlcGVuZCBvbiBgREFNT05gIGFuZCB0aGUgYE1NVWAuIFRoaXMgc3VnZ2VzdHMgdGhhdCB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzIG1hbmlwdWxhdGlvbiB3aXRoaW4gREFNT04gcmVxdWlyZXMgdGhlIE1NVSdzIGZ1bmN0aW9uYWxpdHksIHdoaWNoIGlzIG5vIHN1cnByaXNlIHJlYWxseS4gVG8gZ2FpbiBmdXJ0aGVyIGluc2lnaHQsIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgc2FtcGxlcy9kYW1vbi9LY29uZmlnYCB0byBzZWUgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2YgaG93IGV2ZXJ5dGhpbmcgZml0cyB0b2dldGhlciBpbiB0aGUgYWN0dWFsIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjUyNSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDIxOjA2OjU0LjY4MjEwNDMyNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxNjg1MzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic2FtcGxlcy9kYW1vbi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNhbXBsZXMvZGFtb24vS2NvbmZpZz01PWNvbmZpZyBTQU1QTEVfREFNT05fV1NTRVxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy02LVxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIHdvcmtpbmcgc2V0IHNpemUgZXN0aW1hdGlvblxcXCJcXG5zYW1wbGVzL2RhbW9uL0tjb25maWc6NzpcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IERBTU9OX1ZBRERSXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTgtXFx0aGVscFxcbi0tXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnPTE3PWNvbmZpZyBTQU1QTEVfREFNT05fUFJDTFxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZy0xOC1cXHRib29sIFxcXCJEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlIHJlY2xhbWF0aW9uXFxcIlxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZzoxOTpcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IERBTU9OX1ZBRERSXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTIwLVxcdGhlbHBcXG4tLVxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZz0zMD1jb25maWcgU0FNUExFX0RBTU9OX01USUVSXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIG1lbW9yeSB0aWVyaW5nXFxcIlxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZzozMjpcXHRkZXBlbmRzIG9uIERBTU9OIFxcdTAwMjZcXHUwMDI2IERBTU9OX1BBRERSXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTMzLVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjE6MDY6NTQuNzgzNzk1NzY2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0NTI3NzQwMjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgREFNT04gQ29uZmlndXJhdGlvbiBhbmQgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJ20gc2VlaW5nIGEgbGlzdCBvZiBEQU1PTiBjb25maWd1cmF0aW9uIHN5bWJvbHM6IGBEQU1PTmAsIGBEQU1PTl9WQUREUmAsIGBEQU1PTl9QQUREUmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9SRUNMQUlNYCwgYERBTU9OX0xSVV9TT1JUYCwgYW5kIHRoZW4gYSBmZXcgc2FtcGxlIHN5bWJvbHM6IGBTQU1QTEVfREFNT05fV1NTRWAsIGBTQU1QTEVfREFNT05fUFJDTGAsIGFuZCBgU0FNUExFX0RBTU9OX01USUVSYC4gTm90aGluZyB1bmV4cGVjdGVkIHRoZXJlIOKAkyB0aGVzZSBhcmUgdGhlIGtub2JzIHdlJ2QgZXhwZWN0IHRvIHNlZSB0byBjb250cm9sIERBTU9OJ3MgYmVoYXZpb3IgYW5kIGZlYXR1cmVzLlxuXG5Ob3csIGZvY3VzaW5nIG9uIHRoZSBjb3JlIHN5bWJvbHM6IGBkYW1vbl9zdGFydGAsIGBkYW1vbl9zdG9wYCwgYGRhbW9uX2NhbGxgLCBgZGFtb25fbHJ1X3NvcnRfdHVybmAsIGBkYW1vbl9yZWNsYWltX3R1cm5gLCBhbmQgYGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmYC4gVGhlc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMgYW5kIGNvbnRyb2wgcG9pbnRzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHBhdGNoIGlzIGltcGFjdGluZyB0aGVzZSBzcGVjaWZpYyBmdW5jdGlvbnMuXG5cbkFoYSEgVGhlIHBhdGNoIG1vZGlmaWVzIGBkYW1vbl9zdG9wYC4gSXQgY2hhbmdlcyB0aGUgcmV0dXJuIHR5cGUgdG8gYHZvaWRgLCBtZWFuaW5nIG5vIGVycm9yIGNvZGUgaXMgYmVpbmcgcmV0dXJuZWQgYW55bW9yZS4gRnVydGhlcm1vcmUsIHRoZSBiZWhhdmlvciBoYXMgYmVlbiBhbHRlcmVkIGluIHN1Y2ggYSB3YXkgdGhhdCBpdCBubyBsb25nZXIgcmV0dXJucyBhbiBlcnJvciBjb2RlLCB3aGljaCBpbXBsaWVzIGEgY2hhbmdlIGluIGhvdyBlcnJvcnMgYXJlIGhhbmRsZWQsIG9yIHBlcmhhcHMgYSBzaW1wbGlmaWNhdGlvbiBvZiB0aGUgZXJyb3IgaGFuZGxpbmcgc3RyYXRlZ3kuIEl0IGFsc28gc3RhdGVzIHRoYXQgYGRhbW9uX2NhbGxgIG5vdyB3YWl0cyBmb3IgdGhlIGNvbnRleHQgdG8gc3RvcCBpZiB0aGUgY2FsbCBpcyBjYW5jZWxsZWQuXG5cblllcywgdGhpcyByZXByZXNlbnRzIGEgc2lnbmlmaWNhbnQsIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSB2ZXJ5IGNvcmUgb2YgREFNT04ncyBsb2dpYy4gSXQgY291bGQgYWZmZWN0IGhvdyB3ZSBtYW5hZ2UgZXJyb3Igc3RhdGVzIGFuZCBob3cgd2UgaGFuZGxlIGFzeW5jaHJvbm91cyBvcGVyYXRpb25zLiBJJ20gZ29pbmcgdG8gd2FudCB0byBkZWVwbHkgYW5hbHl6ZSB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlIG9uIHRoZSBvdmVyYWxsIHN5c3RlbSBiZWhhdmlvciwgZXJyb3IgcHJvcGFnYXRpb24sIGFuZCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBjaGFuZ2VzLiBOb3cgdGhhdCBJIHVuZGVyc3RhbmQgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSwgSSdtIGdvaW5nIHRvIHByb2NlZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzEzMCwiT3V0cHV0VG9rZW5zIjoyMzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMjE6MDg6MDkuMzExNTM5NjI2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxOTUzNjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIkRBTU9OX1BBRERSXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fUkVDTEFJTVwiLFxuICAgIFwiREFNT05fTFJVX1NPUlRcIixcbiAgICBcIlNBTVBMRV9EQU1PTl9XU1NFXCIsXG4gICAgXCJTQU1QTEVfREFNT05fUFJDTFwiLFxuICAgIFwiU0FNUExFX0RBTU9OX01USUVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb25fc3RhcnRcIixcbiAgICBcImRhbW9uX3N0b3BcIixcbiAgICBcImRhbW9uX2NhbGxcIixcbiAgICBcImRhbW9uX2xydV9zb3J0X3R1cm5cIixcbiAgICBcImRhbW9uX3JlY2xhaW1fdHVyblwiLFxuICAgIFwiZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vZmZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBEQU1PTiAoRGF0YSBBY2Nlc3MgTU9OaXRvcikgbG9naWMsIGNoYW5naW5nIHRoZSByZXR1cm4gdHlwZSBvZiBgZGFtb25fc3RvcGAgdG8gYHZvaWRgIGFuZCB1cGRhdGluZyBpdHMgY2FsbGVycy4gSXQgYWxzbyBtb2RpZmllcyBgZGFtb25fY2FsbGAgdG8gd2FpdCBmb3IgdGhlIGNvbnRleHQgdG8gc3RvcCBpZiB0aGUgY2FsbCBpcyBjYW5jZWxlZC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREFNT05cIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJEQU1PTl9QQUREUlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX1JFQ0xBSU1cIixcbiAgICBcIkRBTU9OX0xSVV9TT1JUXCIsXG4gICAgXCJTQU1QTEVfREFNT05fV1NTRVwiLFxuICAgIFwiU0FNUExFX0RBTU9OX1BSQ0xcIixcbiAgICBcIlNBTVBMRV9EQU1PTl9NVElFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9uX3N0YXJ0XCIsXG4gICAgXCJkYW1vbl9zdG9wXCIsXG4gICAgXCJkYW1vbl9jYWxsXCIsXG4gICAgXCJkYW1vbl9scnVfc29ydF90dXJuXCIsXG4gICAgXCJkYW1vbl9yZWNsYWltX3R1cm5cIixcbiAgICBcImRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgREFNT04gKERhdGEgQWNjZXNzIE1PTml0b3IpIGxvZ2ljLCBjaGFuZ2luZyB0aGUgcmV0dXJuIHR5cGUgb2YgYGRhbW9uX3N0b3BgIHRvIGB2b2lkYCBhbmQgdXBkYXRpbmcgaXRzIGNhbGxlcnMuIEl0IGFsc28gbW9kaWZpZXMgYGRhbW9uX2NhbGxgIHRvIHdhaXQgZm9yIHRoZSBjb250ZXh0IHRvIHN0b3AgaWYgdGhlIGNhbGwgaXMgY2FuY2VsZWQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wd7m[1] Phase: Succeeded StartedAt: 2026-07-06 21:09:19 +0000 UTC FinishedAt: 2026-07-06 21:09:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-06 21:09:19 +0000 UTC FinishedAt: 2026-07-06 21:09:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[2] Phase: Succeeded StartedAt: 2026-07-06 21:09:19 +0000 UTC FinishedAt: 2026-07-07 01:18:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-06 21:09:19 +0000 UTC FinishedAt: 2026-07-07 01:18:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-06 21:09:19 +0000 UTC FinishedAt: 2026-07-06 21:09:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-06 21:09:19 +0000 UTC FinishedAt: 2026-07-06 21:09:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7wd7m/series-workflow7wd7m-convert-artifact-2179611077/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-06 21:09:49 +0000 UTC FinishedAt: 2026-07-06 21:46:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-06 21:09:49 +0000 UTC FinishedAt: 2026-07-06 21:46:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*bfd32650-0c22-4c36-96f9-e7a8b5a08775,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-workflow7wd7m/series-workflow7wd7m-convert-artifact-2179611077/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": "817565bd-cd5b-473d-a403-6eb9abc2882e", "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-workflow7wd7m/series-workflow7wd7m-build-action-686481515/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-06 21:09:49 +0000 UTC FinishedAt: 2026-07-06 21:46:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*bfd32650-0c22-4c36-96f9-e7a8b5a08775,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-workflow7wd7m/series-workflow7wd7m-convert-artifact-2179611077/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": "817565bd-cd5b-473d-a403-6eb9abc2882e", "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-workflow7wd7m/series-workflow7wd7m-build-action-686481515/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-06 21:46:12 +0000 UTC FinishedAt: 2026-07-06 21:46:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-06 21:46:12 +0000 UTC FinishedAt: 2026-07-06 21:46:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-06 21:46:12 +0000 UTC FinishedAt: 2026-07-06 21:46:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-06 21:46:12 +0000 UTC FinishedAt: 2026-07-06 21:46:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7wd7m/series-workflow7wd7m-convert-artifact-3037114528/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-06 21:46:32 +0000 UTC FinishedAt: 2026-07-06 21:48:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-06 21:46:32 +0000 UTC FinishedAt: 2026-07-06 21:48:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*817565bd-cd5b-473d-a403-6eb9abc2882e,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-workflow7wd7m/series-workflow7wd7m-build-action-686481515/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-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-06 21:48:45 +0000 UTC FinishedAt: 2026-07-06 21:48:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-06 21:48:45 +0000 UTC FinishedAt: 2026-07-06 21:48:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-06 21:48:45 +0000 UTC FinishedAt: 2026-07-06 22:13:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-06 21:48:45 +0000 UTC FinishedAt: 2026-07-06 22:13:18 +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:*bfd32650-0c22-4c36-96f9-e7a8b5a08775,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-workflow7wd7m/series-workflow7wd7m-convert-artifact-3037114528/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": "e3d08296-f098-4430-8d9d-c03870472395", "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-workflow7wd7m/series-workflow7wd7m-build-action-3710363228/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-06 21:48:45 +0000 UTC FinishedAt: 2026-07-06 22:13:08 +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:*bfd32650-0c22-4c36-96f9-e7a8b5a08775,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-workflow7wd7m/series-workflow7wd7m-convert-artifact-3037114528/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": "e3d08296-f098-4430-8d9d-c03870472395", "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-workflow7wd7m/series-workflow7wd7m-build-action-3710363228/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-06 22:13:18 +0000 UTC FinishedAt: 2026-07-06 22:13:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-06 22:13:18 +0000 UTC FinishedAt: 2026-07-06 22:13:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-06 22:13:18 +0000 UTC FinishedAt: 2026-07-06 22:15:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-06 22:13:18 +0000 UTC FinishedAt: 2026-07-06 22:15:19 +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:*e3d08296-f098-4430-8d9d-c03870472395,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-workflow7wd7m/series-workflow7wd7m-build-action-3710363228/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-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-06 22:15:29 +0000 UTC FinishedAt: 2026-07-07 01:18:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-06 22:15:29 +0000 UTC FinishedAt: 2026-07-07 01:18:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*817565bd-cd5b-473d-a403-6eb9abc2882e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e3d08296-f098-4430-8d9d-c03870472395,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-workflow7wd7m/series-workflow7wd7m-build-action-686481515/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-workflow7wd7m/series-workflow7wd7m-build-action-3710363228/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-06 22:15:29 +0000 UTC FinishedAt: 2026-07-06 22:15:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-06 22:15:29 +0000 UTC FinishedAt: 2026-07-06 22:15:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7wd7m/series-workflow7wd7m-convert-artifact-2546921465/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-06 22:15:29 +0000 UTC FinishedAt: 2026-07-06 22:15:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-06 22:15:29 +0000 UTC FinishedAt: 2026-07-06 22:15:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-06 22:15:29 +0000 UTC FinishedAt: 2026-07-06 22:15:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-06 22:15:39 +0000 UTC FinishedAt: 2026-07-07 01:18:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wd7m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damon_start","damon_stop","damon_call","damon_lru_sort_turn","damon_reclaim_turn","damon_sysfs_turn_damon_off"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"820d5dfede0cd55dcbc89ce96fcfbb11b7c457ba","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_VADDR","DAMON_PADDR","DAMON_SYSFS","DAMON_RECLAIM","DAMON_LRU_SORT","SAMPLE_DAMON_WSSE","SAMPLE_DAMON_PRCL","SAMPLE_DAMON_MTIER"],"series_id":"b1da44b7-5270-4ee2-9560-b707989dc9ae","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-06 22:15:39 +0000 UTC FinishedAt: 2026-07-07 01:17:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*817565bd-cd5b-473d-a403-6eb9abc2882e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e3d08296-f098-4430-8d9d-c03870472395,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-workflow7wd7m/series-workflow7wd7m-build-action-686481515/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-workflow7wd7m/series-workflow7wd7m-build-action-3710363228/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-workflow7wd7m/series-workflow7wd7m-convert-artifact-2546921465/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,}