Name: series-workflowvbgs5 Phase: Succeeded StartedAt: 2026-07-17 22:19:08 +0000 UTC FinishedAt: 2026-07-18 03:06:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[0] Phase: Succeeded StartedAt: 2026-07-17 22:19:08 +0000 UTC FinishedAt: 2026-07-17 22:51:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[0].run-triage Phase: Succeeded StartedAt: 2026-07-17 22:19:08 +0000 UTC FinishedAt: 2026-07-17 22:51:23 +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": "f4513f332d035a6168418e99820d0f2c7420fc77", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMCG", "NUMA", "SYSFS" ], "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": "f4513f332d035a6168418e99820d0f2c7420fc77", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMCG", "NUMA", "SYSFS" ], "series_id": "c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "user_proactive_reclaim", "should_abort_scan", "memory_reclaim", "reclaim_store" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE3IDIyOjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTUNHJiMzNDssCiAgICAmIzM0O05VTUEmIzM0OywKICAgICYjMzQ7U1lTRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1c2VyX3Byb2FjdGl2ZV9yZWNsYWltJiMzNDssCiAgICAmIzM0O3Nob3VsZF9hYm9ydF9zY2FuJiMzNDssCiAgICAmIzM0O21lbW9yeV9yZWNsYWltJiMzNDssCiAgICAmIzM0O3JlY2xhaW1fc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgYmVoYXZpb3Igb2YgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbSBhbmQgc2hvdWxkX2Fib3J0X3NjYW4gdG8gaGFuZGxlIHNpZ25hbHMgYnkgcmV0dXJuaW5nIC1FUkVTVEFSVFNZUyBhbmQgYWJvcnRpbmcgdGhlIHNjYW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBjZ3JvdXAgdjIgbWVtb3J5LnJlY2xhaW0gb3Igc3lzZnMgcmVjbGFpbSBpbnRlcmZhY2UuIEZ1enppbmcgdGhlc2UgcGF0aHMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGUgbmV3IHNpZ25hbCBoYW5kbGluZyBsb2dpYyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIyOjUwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjlkMjQ5ZTFmMjUxOWFlN2RlOTJkOWZhMWRlYzA4YWMyMjVhNzEyZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDE3IDIyOjUwOjMzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmNcbmluZGV4IDM1YzNiYjE1YWU5NmEzLi4wZmRhODExZmNiMDUxNyAxMDA2NDRcbi0tLSBhL21tL3Ztc2Nhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS92bXNjYW4uY1xuQEAgLTQ5MjksNiAmIzQzOzQ5MjksOSBAQCBzdGF0aWMgYm9vbCBzaG91bGRfYWJvcnRfc2NhbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxuIFx0aW50IGk7XG4gXHRlbnVtIHpvbmVfd2F0ZXJtYXJrcyBtYXJrO1xuIFxuJiM0MztcdGlmICh1bmxpa2VseShzYy1cdTAwM2Vwcm9hY3RpdmUgXHUwMDI2XHUwMDI2IHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSlcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcbiBcdGlmIChzYy1cdTAwM2Vucl9yZWNsYWltZWQgXHUwMDNlPSBtYXgoc2MtXHUwMDNlbnJfdG9fcmVjbGFpbSwgY29tcGFjdF9nYXAoc2MtXHUwMDNlb3JkZXIpKSlcbiBcdFx0cmV0dXJuIHRydWU7XG4gXG5AQCAtNzkwOSw4ICYjNDM7NzkxMiwxNCBAQCBpbnQgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbShjaGFyICpidWYsXG4gXHRcdHVuc2lnbmVkIGxvbmcgYmF0Y2hfc2l6ZSA9IChucl90b19yZWNsYWltIC0gbnJfcmVjbGFpbWVkKSAvIDQ7XG4gXHRcdHVuc2lnbmVkIGxvbmcgcmVjbGFpbWVkO1xuIFxuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIFJldHVybiAtRVJFU1RBUlRTWVMgdG8gYWxsb3cgdGhlIGZyZWV6ZXIgdG8gaW50ZXJydXB0IHRoZVxuJiM0MztcdFx0ICogdGFzay4gVGhlIHN5c2NhbGwgd2lsbCBiZSB0cmFuc3BhcmVudGx5IHJlc3RhcnRlZCB1cG9uXG4mIzQzO1x0XHQgKiByZXN1bWUuIFJlYWwgc2lnbmFscyAoZS5nLiBTSUdJTlQpIHdpbGwgYmUgYXV0b21hdGljYWxseVxuJiM0MztcdFx0ICogY29udmVydGVkIHRvIC1FSU5UUiBieSB0aGUgc2lnbmFsIGxheWVyLlxuJiM0MztcdFx0ICovXG4gXHRcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSlcbi1cdFx0XHRyZXR1cm4gLUVJTlRSO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVSRVNUQVJUU1lTO1xuIFxuIFx0XHQvKlxuIFx0XHQgKiBUaGlzIGlzIHRoZSBmaW5hbCBhdHRlbXB0LCBkcmFpbiBwZXJjcHUgbHJ1IGNhY2hlcyBpbiB0aGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMjo1MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRU1DRyYjMzQ7LAogICAgJiMzNDtOVU1BJiMzNDssCiAgICAmIzM0O1NZU0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXNlcl9wcm9hY3RpdmVfcmVjbGFpbSYjMzQ7LAogICAgJiMzNDtzaG91bGRfYWJvcnRfc2NhbiYjMzQ7LAogICAgJiMzNDttZW1vcnlfcmVjbGFpbSYjMzQ7LAogICAgJiMzNDtyZWNsYWltX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIGJlaGF2aW9yIG9mIHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0gYW5kIHNob3VsZF9hYm9ydF9zY2FuIHRvIGhhbmRsZSBzaWduYWxzIGJ5IHJldHVybmluZyAtRVJFU1RBUlRTWVMgYW5kIGFib3J0aW5nIHRoZSBzY2FuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgY2dyb3VwIHYyIG1lbW9yeS5yZWNsYWltIG9yIHN5c2ZzIHJlY2xhaW0gaW50ZXJmYWNlLiBGdXp6aW5nIHRoZXNlIHBhdGhzIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG5ldyBzaWduYWwgaGFuZGxpbmcgbG9naWMgd29ya3MgY29ycmVjdGx5IGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjlkMjQ5ZTFmMjUxOWFlN2RlOTJkOWZhMWRlYzA4YWMyMjVhNzEyZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDE3IDIyOjUwOjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uYwppbmRleCAzNWMzYmIxNWFlOTZhMy4uMGZkYTgxMWZjYjA1MTcgMTAwNjQ0Ci0tLSBhL21tL3Ztc2Nhbi5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL3Ztc2Nhbi5jCkBAIC00OTI5LDYgJiM0Mzs0OTI5LDkgQEAgc3RhdGljIGJvb2wgc2hvdWxkX2Fib3J0X3NjYW4oc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYykKIAlpbnQgaTsKIAllbnVtIHpvbmVfd2F0ZXJtYXJrcyBtYXJrOwogCiYjNDM7CWlmICh1bmxpa2VseShzYy0mZ3Q7cHJvYWN0aXZlICZhbXA7JmFtcDsgc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpKQomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CiAJaWYgKHNjLSZndDtucl9yZWNsYWltZWQgJmd0Oz0gbWF4KHNjLSZndDtucl90b19yZWNsYWltLCBjb21wYWN0X2dhcChzYy0mZ3Q7b3JkZXIpKSkKIAkJcmV0dXJuIHRydWU7CiAKQEAgLTc5MDksOCAmIzQzOzc5MTIsMTQgQEAgaW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLAogCQl1bnNpZ25lZCBsb25nIGJhdGNoX3NpemUgPSAobnJfdG9fcmVjbGFpbSAtIG5yX3JlY2xhaW1lZCkgLyA0OwogCQl1bnNpZ25lZCBsb25nIHJlY2xhaW1lZDsKIAomIzQzOwkJLyoKJiM0MzsJCSAqIFJldHVybiAtRVJFU1RBUlRTWVMgdG8gYWxsb3cgdGhlIGZyZWV6ZXIgdG8gaW50ZXJydXB0IHRoZQomIzQzOwkJICogdGFzay4gVGhlIHN5c2NhbGwgd2lsbCBiZSB0cmFuc3BhcmVudGx5IHJlc3RhcnRlZCB1cG9uCiYjNDM7CQkgKiByZXN1bWUuIFJlYWwgc2lnbmFscyAoZS5nLiBTSUdJTlQpIHdpbGwgYmUgYXV0b21hdGljYWxseQomIzQzOwkJICogY29udmVydGVkIHRvIC1FSU5UUiBieSB0aGUgc2lnbmFsIGxheWVyLgomIzQzOwkJICovCiAJCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkKLQkJCXJldHVybiAtRUlOVFI7CiYjNDM7CQkJcmV0dXJuIC1FUkVTVEFSVFNZUzsKIAogCQkvKgogCQkgKiBUaGlzIGlzIHRoZSBmaW5hbCBhdHRlbXB0LCBkcmFpbiBwZXJjcHUgbHJ1IGNhY2hlcyBpbiB0aGUKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxMQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBWTSBTY2FuIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbW0vdm1zY2FuLmNgLiBJdCYjMzk7cyBwcmV0dHkgZm9jdXNlZDsgdGhlIGNoYW5nZXMgemVybyBpbiBvbiBgc2hvdWxkX2Fib3J0X3NjYW5gIGFuZCBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAuIFJpZ2h0IGF3YXksIHRoZSBhZGRpdGlvbiB0byBgc2hvdWxkX2Fib3J0X3NjYW5gIGNhdGNoZXMgbXkgZXllOiBhIGNoZWNrIGZvciBgc2lnbmFsX3BlbmRpbmcoY3VycmVudClgICpvbmx5KiB3aGVuIHRoZSBzY2FuIGlzICYjMzQ7cHJvYWN0aXZlJiMzNDsuIFNvLCBpZiBhIHNpZ25hbCBpcyBwZW5kaW5nIG9uIHRoZSBjdXJyZW50IHByb2Nlc3MgYW5kIHRoZSBzY2FuIGlzIHByb2FjdGl2ZSwgd2UmIzM5O3JlIGJhaWxpbmcgb3V0LiBUaGlzIHNlZW1zIHRvIGJlIHNvbWUgZm9ybSBvZiBlYXJseSB0ZXJtaW5hdGlvbiBvciBwcmlvcml0aXphdGlvbiwgbGlrZWx5IGluIHJlc3BvbnNlIHRvIGEgdXNlci1pbml0aWF0ZWQgYWN0aW9uLiBXZSYjMzk7cmUgcmV0dXJuaW5nIHRydWUuCgpOb3csIGxldCYjMzk7cyBkaWcgaW50byBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAuIFRoZSBrZXkgaGVyZSBpcyB0aGUgY2hhbmdlIGZyb20gYC1FSU5UUmAgdG8gYC1FUkVTVEFSVFNZU2Agd2hlbiBhIHNpZ25hbCBpcyBwZW5kaW5nLiBUaGUgY29tbWVudCBjbGFyaWZpZXMgdGhpczogYC1FUkVTVEFSVFNZU2AgaXMgYmVpbmcgcmV0dXJuZWQgc3BlY2lmaWNhbGx5IHRvIGFsbG93IHRoZSBmcmVlemVyIHRvIGludGVycnVwdCB0aGUgdGFzayBjbGVhbmx5LiBUaGUgcGF0Y2ggYXV0aG9yIGlzIGJlaW5nIHZlcnkgdGhvdWdodGZ1bCBoZXJlLCBleHBsYWluaW5nIGhvdyByZWFsIHNpZ25hbHMgYXJlIGhhbmRsZWQgYnkgdGhlIHNpZ25hbCBsYXllci4gVGhpcyBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgc2l0dWF0aW9uIHdoZXJlIGEgdGFzayBtaWdodCBiZSBwcm9hY3RpdmVseSByZWNsYWltaW5nIG1lbW9yeSwgYW5kIGEgdXNlciBvciBzeXN0ZW0tbGV2ZWwgc2lnbmFsIChsaWtlIGEgZnJlZXplIG9yIGEgdGVybWluYXRpb24gcmVxdWVzdCkgbmVlZHMgdG8gdGFrZSBwcmVjZWRlbmNlICp3aXRob3V0KiBsb3NpbmcgdGhlIG9yaWdpbmFsIHN5c2NhbGwuIEl04oCZcyBhbHNvIGludGVyZXN0aW5nIHRoYXQgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgc2lnbmFsIGhhbmRsaW5nIGluIHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9ucy4KClRoZSBmYWN0IHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgaW4gdGhlIHNjYW5uaW5nIGFuZCByZWNsYWltaW5nIGNvZGUgbWFrZXMgbWUgdGhpbmsgdGhhdCBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAgaXMgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgY2dyb3VwIHYyIGBtZW1vcnkucmVjbGFpbWAgaW50ZXJmYWNlLiBUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIHJlZmluaW5nIGhvdyBwcm9hY3RpdmUgbWVtb3J5IHJlY2xhbWF0aW9uIGlzIGhhbmRsZWQgaW4gdGhlIHByZXNlbmNlIG9mIHNpZ25hbHMgYW5kIHVzZXIgaW50ZXJhY3Rpb24sIHBhcnRpY3VsYXJseSB3aGVuIHRob3NlIHNpZ25hbHMgbWlnaHQgaW52b2x2ZSBmcmVlemluZyBvciBpbnRlcnJ1cHRpbmcgYSBwcm9jZXNzLiBUaGlzIGlzIGEgc29saWQgcGllY2Ugb2Ygd29yazsgdGhlIGxvZ2ljIGlzIHByZXR0eSBjbGVhci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMjo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2VyX3Byb2FjdGl2ZV9yZWNsYWltJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2ludGVybmFsLmg9NjI0PWV4dGVybiB2b2lkIHJlY2xhaW1fdGhyb3R0bGUocGdfZGF0YV90ICpwZ2RhdCwgZW51bSB2bXNjYW5fdGhyb3R0bGVfc3RhdGUgcmVhc29uKTtcbm1tL2ludGVybmFsLmg6NjI1OmludCB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltKGNoYXIgKmJ1Zixcbm1tL2ludGVybmFsLmgtNjI2LVx0XHRcdCAgIHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgcGdfZGF0YV90ICpwZ2RhdCk7XG4tLVxubW0vbWVtY29udHJvbC5jPTQ5ODk9c3RhdGljIHNzaXplX3QgbWVtb3J5X3JlY2xhaW0oc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBjaGFyICpidWYsXG4tLVxubW0vbWVtY29udHJvbC5jLTQ5OTQtXG5tbS9tZW1jb250cm9sLmM6NDk5NTpcdHJldCA9IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oYnVmLCBtZW1jZywgTlVMTCk7XG5tbS9tZW1jb250cm9sLmMtNDk5Ni1cdGlmIChyZXQpXG4tLVxubW0vdm1zY2FuLmM9Nzg2Mz1zdGF0aWMgY29uc3QgbWF0Y2hfdGFibGVfdCB0b2tlbnMgPSB7XG4tLVxubW0vdm1zY2FuLmMtNzg2OC1cbm1tL3Ztc2Nhbi5jOjc4Njk6aW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLFxubW0vdm1zY2FuLmMtNzg3MC1cdFx0XHQgICBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHBnX2RhdGFfdCAqcGdkYXQpXG4tLVxubW0vdm1zY2FuLmM9ODAxOD1zdGF0aWMgc3NpemVfdCByZWNsYWltX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5tbS92bXNjYW4uYy04MDIzLVxubW0vdm1zY2FuLmM6ODAyNDpcdHJldCA9IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oKGNoYXIgKilidWYsIE5VTEwsIE5PREVfREFUQShuaWQpKTtcbm1tL3Ztc2Nhbi5jLTgwMjUtXHRyZXR1cm4gcmV0ID8gLUVBR0FJTiA6IGNvdW50O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIyOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTcKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAzMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLZXJuZWwmIzM5O3MgTWVtb3J5IFJlY2xhaW0gQmVoYXZpb3IqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhvdyBpdCBjaGFuZ2VzIHRoZSBtZW1vcnkgcmVjbGFpbSBwcm9jZXNzIGluIHRoZSBrZXJuZWwsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIHVzZXItaW5pdGlhdGVkIHByb2FjdGl2ZSByZWNsYWltLiBJdCBzZWVtcyBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLCBjYWxsZWQgZnJvbSBgbWVtb3J5X3JlY2xhaW1gIGluIGBtbS9tZW1jb250cm9sLmNgIGFuZCBhbHNvIGZyb20gYHJlY2xhaW1fc3RvcmVgIGluIGBtbS92bXNjYW4uY2AuICBgbWVtb3J5X3JlY2xhaW1gIGhhbmRsZXMgdGhlIGBtZW1vcnkucmVjbGFpbWAgY2dyb3VwIHYyIGZpbGUsIHdoaWxlIGByZWNsYWltX3N0b3JlYCBtYW5hZ2VzIHRoZSBgL3N5cy9kZXZpY2VzL3N5c3RlbS9ub2RlL25vZGVYL3JlY2xhaW1gIHN5c2ZzIGZpbGUuCgpUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGhpbmdlIG9uIGhvdyBpdCBoYW5kbGVzIHNpZ25hbHMgZHVyaW5nIHRoZSByZWNsYWltIHByb2Nlc3MuICBTcGVjaWZpY2FsbHksIGl0IG1ha2VzIGBzaG91bGRfYWJvcnRfc2NhbmAgYWJvcnQgaWYgYSBwcm9hY3RpdmUgc2NhbiBpcyBoYXBwZW5pbmcgKGBzYy0mZ3Q7cHJvYWN0aXZlYCkgYW5kIHRoZSBjdXJyZW50IHRhc2sgaGFzIGEgcGVuZGluZyBzaWduYWwgKGBzaWduYWxfcGVuZGluZyhjdXJyZW50KWApLiAgRnVydGhlcm1vcmUsIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCBpcyBub3cgc2V0IHRvIHJldHVybiBgLUVSRVNUQVJUU1lTYCBpbnN0ZWFkIG9mIGAtRUlOVFJgIGluIHRoZSBzYW1lIHNpZ25hbCBwZW5kaW5nIHNjZW5hcmlvLgoKVGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlIG5vdyBpdCYjMzk7cyBwb3NzaWJsZSBmb3IgdGhlIGZyZWV6ZXIgdG8gaW50ZXJydXB0IHRoZSB0YXNrLiBUaGlzIGFsc28gbWVhbnMgdGhhdCBzeXNjYWxscyB3aWxsIGJlIHJlc3RhcnRlZCwgYSBwcmV0dHkgaW1wb3J0YW50IGRpc3RpbmN0aW9uIHRoYXQgaGFzIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgZm9yIHN0YWJpbGl0eSBhbmQgcmVzcG9uc2l2ZW5lc3MuIEdpdmVuIHRoZSBjaGFuZ2UgaW4gcmV0dXJuIGNvZGUgYW5kIHRoZSBwb3RlbnRpYWwgZm9yIGludGVycnVwdGlvbnMsIHRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBuZWVkcyB0aG9yb3VnaCBmdXp6aW5nIHRvIGVuc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSB1bmV4cGVjdGVkIHNpZGUgZWZmZWN0cyBvciByYWNlIGNvbmRpdGlvbnMuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIGBtbS92bXNjYW4uY2AgaXMgYWx3YXlzIGNvbXBpbGVkLCB3aGljaCBjb3ZlcnMgdGhlIGByZWNsYWltX3N0b3JlYCBjb2RlLiBgbW0vbWVtY29udHJvbC5jYCBpcyBvbmx5IGNvbXBpbGVkIGlmIGBDT05GSUdfTUVNQ0dgIGlzIGVuYWJsZWQsIGFuZCB0aGVyZWZvcmUgdGhlIGZ1bmN0aW9uIGNhbGxlZCBgbWVtb3J5X3JlY2xhaW1gIGlzIGNvbmRpdGlvbmFsLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIGRldGFpbHMgZm9yIGBtbS92bXNjYW4uY2AsIGxpa2VseSBOVU1BIG9yIHNvbWV0aGluZyByZWxhdGVkLCB0byBzZWUgd2hlbiBgcmVjbGFpbV9zdG9yZWAgaXMgaW5jbHVkZWQuIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBpbmZvcm0gbXkgdGVzdGluZyBhcHByb2FjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMjo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZWNsYWltX3N0b3JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2J0cmZzL3N5c2ZzLmM9OTUyPXN0YXRpYyBzc2l6ZV90IGJ0cmZzX3NpbmZvX2R5bmFtaWNfcmVjbGFpbV9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbmZzL2J0cmZzL3N5c2ZzLmMtOTYwLVxuZnMvYnRyZnMvc3lzZnMuYzo5NjE6c3RhdGljIHNzaXplX3QgYnRyZnNfc2luZm9fZHluYW1pY19yZWNsYWltX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuZnMvYnRyZnMvc3lzZnMuYy05NjItXHRcdFx0XHRcdFx0IHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYSxcbi0tXG5mcy9idHJmcy9zeXNmcy5jPTk4MT1CVFJGU19BVFRSX1JXKHNwYWNlX2luZm8sIGR5bmFtaWNfcmVjbGFpbSxcbmZzL2J0cmZzL3N5c2ZzLmMtOTgyLVx0ICAgICAgYnRyZnNfc2luZm9fZHluYW1pY19yZWNsYWltX3Nob3csXG5mcy9idHJmcy9zeXNmcy5jOjk4MzpcdCAgICAgIGJ0cmZzX3NpbmZvX2R5bmFtaWNfcmVjbGFpbV9zdG9yZSk7XG5mcy9idHJmcy9zeXNmcy5jLTk4NC1cbmZzL2J0cmZzL3N5c2ZzLmM9OTg1PXN0YXRpYyBzc2l6ZV90IGJ0cmZzX3NpbmZvX3BlcmlvZGljX3JlY2xhaW1fc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5mcy9idHJmcy9zeXNmcy5jLTk5My1cbmZzL2J0cmZzL3N5c2ZzLmM6OTk0OnN0YXRpYyBzc2l6ZV90IGJ0cmZzX3NpbmZvX3BlcmlvZGljX3JlY2xhaW1fc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG5mcy9idHJmcy9zeXNmcy5jLTk5NS1cdFx0XHRcdFx0XHQgc3RydWN0IGtvYmpfYXR0cmlidXRlICphLFxuLS1cbmZzL2J0cmZzL3N5c2ZzLmM9MTAxND1CVFJGU19BVFRSX1JXKHNwYWNlX2luZm8sIHBlcmlvZGljX3JlY2xhaW0sXG5mcy9idHJmcy9zeXNmcy5jLTEwMTUtXHQgICAgICBidHJmc19zaW5mb19wZXJpb2RpY19yZWNsYWltX3Nob3csXG5mcy9idHJmcy9zeXNmcy5jOjEwMTY6XHQgICAgICBidHJmc19zaW5mb19wZXJpb2RpY19yZWNsYWltX3N0b3JlKTtcbmZzL2J0cmZzL3N5c2ZzLmMtMTAxNy1cbi0tXG5tbS92bXNjYW4uYz04MDE1PUVYUE9SVF9TWU1CT0xfR1BMKGNoZWNrX21vdmVfdW5ldmljdGFibGVfZm9saW9zKTtcbi0tXG5tbS92bXNjYW4uYy04MDE3LSNpZiBkZWZpbmVkKENPTkZJR19TWVNGUykgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX05VTUEpXG5tbS92bXNjYW4uYzo4MDE4OnN0YXRpYyBzc2l6ZV90IHJlY2xhaW1fc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxubW0vdm1zY2FuLmMtODAxOS1cdFx0XHQgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIyOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NTUKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIE1lbW9yeSBSZWNsYWltIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgc28gYHJlY2xhaW1fc3RvcmVgIGlzIGRlZmluaXRlbHkgdGllZCB0byBgQ09ORklHX1NZU0ZTYCBhbmQgYENPTkZJR19OVU1BYC4gVGhhdCBtYWtlcyBzZW5zZTsgc3RvcmluZyByZWNsYWltIGluZm9ybWF0aW9uIGluIHN5c2ZzIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCBOVU1BIGFyY2hpdGVjdHVyZXMgaXMgbG9naWNhbC4gTm93LCB0aGUgYG1lbW9yeV9yZWNsYWltYCBmdW5jdGlvbiBpcyBjb250cm9sbGVkIGJ5IGBDT05GSUdfTUVNQ0dgLiBSaWdodCwgdGhhdCYjMzk7cyB3aGF0IEkgZXhwZWN0ZWTigJRtZW1vcnkgY2dyb3VwcyBhbmQgcmVjbGFpbSBhcmUgaW50cmluc2ljYWxseSBsaW5rZWQuIFRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaG93IHRoYXQgcGxheXMgb3V0LCBJIHJlYWxseSBzaG91bGQgZGl2ZSBpbnRvIHRoZSBhY3R1YWwgY29kZS4gTG9va3MgbGlrZSBgbW0vbWVtY29udHJvbC5jYCBpcyB0aGUgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBkZXRhaWxzIG9mIHRoZSBgbWVtb3J5X3JlY2xhaW1gIGZ1bmN0aW9uLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGluIHJlbGF0aW9uIHRvIG1lbW9yeSBjZ3JvdXBzIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlY2xhaW0gcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMjo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZW1vcnlfcmVjbGFpbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oPTEzNT1LVk1fWDg2X09QX09QVElPTkFMKHZtX21vdmVfZW5jX2NvbnRleHRfZnJvbSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTM2OktWTV9YODZfT1BfT1BUSU9OQUwoZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTM3LUtWTV9YODZfT1AoZ2V0X2ZlYXR1cmVfbXNyKVxuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg9MTc4NT1zdHJ1Y3Qga3ZtX3g4Nl9vcHMge1xuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTk4Ni1cdGludCAoKnZtX21vdmVfZW5jX2NvbnRleHRfZnJvbSkoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgc291cmNlX2ZkKTtcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MTk4NzpcdHZvaWQgKCpndWVzdF9tZW1vcnlfcmVjbGFpbWVkKShzdHJ1Y3Qga3ZtICprdm0pO1xuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xOTg4LVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9MzI1Nz1zdGF0aWMgdm9pZCBzZXZfZmx1c2hfZW5jcnlwdGVkX3BhZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB2b2lkICp2YSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyOTItXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMyOTM6dm9pZCBzZXZfZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZChzdHJ1Y3Qga3ZtICprdm0pXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyOTQte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NTMyNT1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgc3ZtX3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU0NDYtXHQubWVtX2VuY191bnJlZ2lzdGVyX3JlZ2lvbiA9IHNldl9tZW1fZW5jX3VucmVnaXN0ZXJfcmVnaW9uLFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1NDQ3Olx0Lmd1ZXN0X21lbW9yeV9yZWNsYWltZWQgPSBzZXZfZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZCxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQ0OC1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oPTk4Nz1pbnQgc2V2X3ZtX21vdmVfZW5jX2NvbnRleHRfZnJvbShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBzb3VyY2VfZmQpO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDo5ODg6dm9pZCBzZXZfZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZChzdHJ1Y3Qga3ZtICprdm0pO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uaC05ODktaW50IHNldl9oYW5kbGVfdm1nZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xMTA3Mz1zdGF0aWMgdm9pZCB2Y3B1X2xvYWRfZW9pX2V4aXRtYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xMTA5Mi1cbmFyY2gveDg2L2t2bS94ODYuYzoxMTA5Mzp2b2lkIGt2bV9hcmNoX2d1ZXN0X21lbW9yeV9yZWNsYWltZWQoc3RydWN0IGt2bSAqa3ZtKVxuYXJjaC94ODYva3ZtL3g4Ni5jLTExMDk0LXtcbmFyY2gveDg2L2t2bS94ODYuYzoxMTA5NTpcdGt2bV94ODZfY2FsbChndWVzdF9tZW1vcnlfcmVjbGFpbWVkKShrdm0pO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTExMDk2LX1cbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvZHJpdmVyLmM9Nzg4PXN0YXRpYyBpbnQgZmZhX21lbW9yeV9vcHModTMyIGZ1bmNfaWQsIHN0cnVjdCBmZmFfbWVtX29wc19hcmdzICphcmdzKVxuLS1cbmRyaXZlcnMvZmlybXdhcmUvYXJtX2ZmYS9kcml2ZXIuYy04MTItXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvZHJpdmVyLmM6ODEzOnN0YXRpYyBpbnQgZmZhX21lbW9yeV9yZWNsYWltKHU2NCBnX2hhbmRsZSwgdTMyIGZsYWdzKVxuZHJpdmVycy9maXJtd2FyZS9hcm1fZmZhL2RyaXZlci5jLTgxNC17XG4tLVxuZHJpdmVycy9maXJtd2FyZS9hcm1fZmZhL2RyaXZlci5jPTE2MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBmZmFfbWVtX29wcyBmZmFfZHJ2X21lbV9vcHMgPSB7XG5kcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvZHJpdmVyLmM6MTYxMjpcdC5tZW1vcnlfcmVjbGFpbSA9IGZmYV9tZW1vcnlfcmVjbGFpbSxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX2ZmYS9kcml2ZXIuYy0xNjEzLVx0Lm1lbW9yeV9zaGFyZSA9IGZmYV9tZW1vcnlfc2hhcmUsXG4tLVxuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jPTI3MD1zdGF0aWMgaW50IG9wdGVlX2ZmYV9zaG1fcmVnaXN0ZXIoc3RydWN0IHRlZV9jb250ZXh0ICpjdHgsIHN0cnVjdCB0ZWVfc2htICpzaG0sXG4tLVxuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jLTMwNC1cdGlmIChyYykge1xuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jOjMwNTpcdFx0bWVtX29wcy1cdTAwM2VtZW1vcnlfcmVjbGFpbShhcmdzLmdfaGFuZGxlLCAwKTtcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYy0zMDYtXHRcdHJldHVybiByYztcbi0tXG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmM9MzE0PXN0YXRpYyBpbnQgb3B0ZWVfZmZhX3NobV91bnJlZ2lzdGVyKHN0cnVjdCB0ZWVfY29udGV4dCAqY3R4LFxuLS1cbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYy0zMzUtXG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmM6MzM2Olx0cmMgPSBtZW1fb3BzLVx1MDAzZW1lbW9yeV9yZWNsYWltKGdsb2JhbF9oYW5kbGUsIDApO1xuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jLTMzNy1cdGlmIChyYylcbi0tXG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmM9MzQzPXN0YXRpYyBpbnQgb3B0ZWVfZmZhX3NobV91bnJlZ2lzdGVyX3N1cHAoc3RydWN0IHRlZV9jb250ZXh0ICpjdHgsXG4tLVxuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jLTM1OC1cdG1lbV9vcHMgPSBvcHRlZS1cdTAwM2VmZmEuZmZhX2Rldi1cdTAwM2VvcHMtXHUwMDNlbWVtX29wcztcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYzozNTk6XHRyYyA9IG1lbV9vcHMtXHUwMDNlbWVtb3J5X3JlY2xhaW0oZ2xvYmFsX2hhbmRsZSwgMCk7XG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmMtMzYwLVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYz02ODI9c3RhdGljIGludCBvcHRlZV9mZmFfbGVuZF9wcm90bWVtKHN0cnVjdCBvcHRlZSAqb3B0ZWUsIHN0cnVjdCB0ZWVfc2htICpwcm90bWVtLFxuLS1cbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYy03MzctZXJyX3JlY2xhaW06XG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmM6NzM4Olx0bWVtX29wcy1cdTAwM2VtZW1vcnlfcmVjbGFpbShhcmdzLmdfaGFuZGxlLCAwKTtcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYy03MzktXHRyZXR1cm4gcmM7XG4tLVxuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jPTc0Mj1zdGF0aWMgaW50IG9wdGVlX2ZmYV9yZWNsYWltX3Byb3RtZW0oc3RydWN0IG9wdGVlICpvcHRlZSxcbi0tXG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmMtNzYyLVxuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jOjc2MzpcdHJjID0gbWVtX29wcy1cdTAwM2VtZW1vcnlfcmVjbGFpbShnbG9iYWxfaGFuZGxlLCAwKTtcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYy03NjQtXHRpZiAocmMpXG4tLVxuZHJpdmVycy90ZWUvdHN0ZWUvY29yZS5jPTI0Mj1zdGF0aWMgaW50IHRzdGVlX3NobV9yZWdpc3RlcihzdHJ1Y3QgdGVlX2NvbnRleHQgKmN0eCwgc3RydWN0IHRlZV9zaG0gKnNobSxcbi0tXG5kcml2ZXJzL3RlZS90c3RlZS9jb3JlLmMtMjg5LVx0aWYgKHJjKSB7XG5kcml2ZXJzL3RlZS90c3RlZS9jb3JlLmM6MjkwOlx0XHQodm9pZClmZmFfZGV2LVx1MDAzZW9wcy1cdTAwM2VtZW1fb3BzLVx1MDAzZW1lbW9yeV9yZWNsYWltKHNobS1cdTAwM2VzZWNfd29ybGRfaWQsXG5kcml2ZXJzL3RlZS90c3RlZS9jb3JlLmMtMjkxLVx0XHRcdFx0XHRcdFx0ICAgIDApO1xuLS1cbmRyaXZlcnMvdGVlL3RzdGVlL2NvcmUuYy0yOTktXHRcdFx0ZmZhX2FyZ3NbVFNfUlBDX1JFVFJJRVZFX01FTV9SUENfU1RBVFVTXSk7XG5kcml2ZXJzL3RlZS90c3RlZS9jb3JlLmM6MzAwOlx0XHRmZmFfZGV2LVx1MDAzZW9wcy1cdTAwM2VtZW1fb3BzLVx1MDAzZW1lbW9yeV9yZWNsYWltKHNobS1cdTAwM2VzZWNfd29ybGRfaWQsIDApO1xuZHJpdmVycy90ZWUvdHN0ZWUvY29yZS5jLTMwMS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy90ZWUvdHN0ZWUvY29yZS5jPTMwNz1zdGF0aWMgaW50IHRzdGVlX3NobV91bnJlZ2lzdGVyKHN0cnVjdCB0ZWVfY29udGV4dCAqY3R4LCBzdHJ1Y3QgdGVlX3NobSAqc2htKVxuLS1cbmRyaXZlcnMvdGVlL3RzdGVlL2NvcmUuYy0zMzQtXG5kcml2ZXJzL3RlZS90c3RlZS9jb3JlLmM6MzM1Olx0cmMgPSBmZmFfZGV2LVx1MDAzZW9wcy1cdTAwM2VtZW1fb3BzLVx1MDAzZW1lbW9yeV9yZWNsYWltKHNobS1cdTAwM2VzZWNfd29ybGRfaWQsIDApO1xuZHJpdmVycy90ZWUvdHN0ZWUvY29yZS5jLTMzNi1cbi0tXG5pbmNsdWRlL2xpbnV4L2FybV9mZmEuaD00Nzg9c3RydWN0IGZmYV9tZW1fb3BzIHtcbmluY2x1ZGUvbGludXgvYXJtX2ZmYS5oOjQ3OTpcdGludCAoKm1lbW9yeV9yZWNsYWltKSh1NjQgZ19oYW5kbGUsIHUzMiBmbGFncyk7XG5pbmNsdWRlL2xpbnV4L2FybV9mZmEuaC00ODAtXHRpbnQgKCptZW1vcnlfc2hhcmUpKHN0cnVjdCBmZmFfbWVtX29wc19hcmdzICphcmdzKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MjQ1ND1zdGF0aWMgaW5saW5lIGJvb2wga3ZtX2FyY2hfbm9fcG9sbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NTktXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MjQ2MDp2b2lkIGt2bV9hcmNoX2d1ZXN0X21lbW9yeV9yZWNsYWltZWQoc3RydWN0IGt2bSAqa3ZtKTtcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0yNDYxLVxuLS1cbm1tL21lbWNvbnRyb2wuYz00OTY3PXN0YXRpYyBzc2l6ZV90IG1lbW9yeV9vb21fZ3JvdXBfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLFxuLS1cbm1tL21lbWNvbnRyb2wuYy00OTg4LVxubW0vbWVtY29udHJvbC5jOjQ5ODk6c3RhdGljIHNzaXplX3QgbWVtb3J5X3JlY2xhaW0oc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBjaGFyICpidWYsXG5tbS9tZW1jb250cm9sLmMtNDk5MC1cdFx0XHQgICAgICBzaXplX3QgbmJ5dGVzLCBsb2ZmX3Qgb2ZmKVxuLS1cbm1tL21lbWNvbnRyb2wuYz01MDAyPXN0YXRpYyBzdHJ1Y3QgY2Z0eXBlIG1lbW9yeV9maWxlc1tdID0ge1xuLS1cbm1tL21lbWNvbnRyb2wuYy01MDcwLVx0XHQuZmxhZ3MgPSBDRlRZUEVfTlNfREVMRUdBVEFCTEUsXG5tbS9tZW1jb250cm9sLmM6NTA3MTpcdFx0LndyaXRlID0gbWVtb3J5X3JlY2xhaW0sXG5tbS9tZW1jb250cm9sLmMtNTA3Mi1cdH0sXG4tLVxuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5jPTM5MT1pbnQgYXZzX2lwY19nZXRfZndfY29uZmlnKHN0cnVjdCBhdnNfZGV2ICphZGV2LCBzdHJ1Y3QgYXZzX2Z3X2NmZyAqY2ZnKVxuLS1cbnNvdW5kL3NvYy9pbnRlbC9hdnMvbWVzc2FnZXMuYy00MTgtXHRcdGNhc2UgQVZTX0ZXX0NGR19NRU1PUllfUkVDTEFJTUVEOlxuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5jOjQxOTpcdFx0XHRjZmctXHUwMDNlbWVtb3J5X3JlY2xhaW1lZCA9ICp0bHYtXHUwMDNldmFsdWU7XG5zb3VuZC9zb2MvaW50ZWwvYXZzL21lc3NhZ2VzLmMtNDIwLVx0XHRcdGJyZWFrO1xuLS1cbnNvdW5kL3NvYy9pbnRlbC9hdnMvbWVzc2FnZXMuaD00NjA9c3RydWN0IGF2c19md19jZmcge1xuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5oLTQ2MS1cdHN0cnVjdCBhdnNfZndfdmVyc2lvbiBmd192ZXJzaW9uO1xuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5oOjQ2MjpcdHUzMiBtZW1vcnlfcmVjbGFpbWVkO1xuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5oLTQ2My1cdHUzMiBzbG93X2Nsb2NrX2ZyZXFfaHo7XG4tLVxudmlydC9rdm0va3ZtX21haW4uYz0xNTU9c3RhdGljIERFRklORV9QRVJfQ1BVKGNwdW1hc2tfdmFyX3QsIGNwdV9raWNrX21hc2spO1xudmlydC9rdm0va3ZtX21haW4uYy0xNTYtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjE1NzpfX3dlYWsgdm9pZCBrdm1fYXJjaF9ndWVzdF9tZW1vcnlfcmVjbGFpbWVkKHN0cnVjdCBrdm0gKmt2bSlcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTU4LXtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTM0MT1zdGF0aWMgdm9pZCBrdm1fZmx1c2hfc2hhZG93X2FsbChzdHJ1Y3Qga3ZtICprdm0pXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0zNDMtXHRrdm1fYXJjaF9mbHVzaF9zaGFkb3dfYWxsKGt2bSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjM0NDpcdGt2bV9hcmNoX2d1ZXN0X21lbW9yeV9yZWNsYWltZWQoa3ZtKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzQ1LX1cbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTcyMT1zdGF0aWMgaW50IGt2bV9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVyICptbixcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTc2NS1cdGlmIChrdm1faGFuZGxlX2h2YV9yYW5nZShrdm0sIFx1MDAyNmh2YV9yYW5nZSkuZm91bmRfbWVtc2xvdClcbnZpcnQva3ZtL2t2bV9tYWluLmM6NzY2Olx0XHRrdm1fYXJjaF9ndWVzdF9tZW1vcnlfcmVjbGFpbWVkKGt2bSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTc2Ny1cbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTE3OTg9c3RhdGljIHZvaWQga3ZtX2ludmFsaWRhdGVfbWVtc2xvdChzdHJ1Y3Qga3ZtICprdm0sXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0xODI0LVx0a3ZtX2FyY2hfZmx1c2hfc2hhZG93X21lbXNsb3Qoa3ZtLCBvbGQpO1xudmlydC9rdm0va3ZtX21haW4uYzoxODI1Olx0a3ZtX2FyY2hfZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZChrdm0pO1xudmlydC9rdm0va3ZtX21haW4uYy0xODI2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIyOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwMzAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gTWVtb3J5IE1hbmFnZW1lbnQgLSBBIFF1aWNrIENoZWNrKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBtZW1vcnlfcmVjbGFpbWAgZnVuY3Rpb24uIFRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGRvaW5nIGlzIGNvbmZpcm1pbmcgaXQgbGl2ZXMgd2l0aGluIGBtbS9tZW1jb250cm9sLmNgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYW5kIEkgaGF2ZSBhIGZhaXJseSBnb29kIG1lbnRhbCBtYXAgb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbS4gTm93LCBsZXQmIzM5O3Mgc2VlLi4uIGlzIGBDT05GSUdfTUVNQ0dgIHRoZSBvbmx5IGNvbmZpZ3VyYXRpb24ga25vYiBJIG5lZWQgdG8gYmUgY29uY2VybmVkIHdpdGggaGVyZT8gU29tZXRpbWVzLCB0aGVyZSBhcmUgc3VidGxlIGRlcGVuZGVuY2llcyBvciBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBmZWF0dXJlcy4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC4gSSBjYW4gYWxyZWFkeSBpbWFnaW5lIGFsbCB0aGUgcGxhY2VzIHRoaXMgc2luZ2xlIGNvbmZpZyBtaWdodCBpbXBhY3QsIGZyb20ga2VybmVsIG1lbW9yeSBhbGxvY2F0aW9uIHRvIHRoZSB1c2Ugb2YgY2dyb3Vwcy4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIG9uZSBjb25maWcgaXMgaW5kZWVkIGFsbCB0aGF0IGFwcGxpZXMgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX01FTUNHJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vbWVtY29udHJvbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21lbWNvbnRyb2wuYz0yMDk9c3RhdGljIGlubGluZSBzdHJ1Y3Qgb2JqX2Nncm91cCAqX19tZW1jZ19yZXBhcmVudF9vYmpjZ3Moc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxuLS1cbm1tL21lbWNvbnRyb2wuYy0yMjgtXG5tbS9tZW1jb250cm9sLmM6MjI5OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy0yMzAtc3RhdGljIHZvaWQgX19tZW1fY2dyb3VwX2ZsdXNoX3N0YXRzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgYm9vbCBmb3JjZSk7XG4tLVxubW0vbWVtY29udHJvbC5jPTUwNT11bnNpZ25lZCBsb25nIGxydXZlY19wYWdlX3N0YXRlX2xvY2FsKHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcbi0tXG5tbS9tZW1jb250cm9sLmMtNTI3LVxubW0vbWVtY29udHJvbC5jOjUyODojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5tbS9tZW1jb250cm9sLmMtNTI5LXN0YXRpYyB2b2lkIF9fbW9kX21lbWNnX2xydXZlY19zdGF0ZShzdHJ1Y3QgbWVtX2Nncm91cF9wZXJfbm9kZSAqcG4sXG4tLVxubW0vbWVtY29udHJvbC5jPTU1Mz1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1lbWNnX3ZtX2V2ZW50X3N0YXRbXSA9IHtcbm1tL21lbWNvbnRyb2wuYzo1NTQ6I2lmZGVmIENPTkZJR19NRU1DR19WMVxubW0vbWVtY29udHJvbC5jLTU1NS1cdFBHUEdJTixcbi0tXG5tbS9tZW1jb250cm9sLmM9Nzg3PXN0YXRpYyBsb25nIG1lbWNnX3N0YXRlX3ZhbF9pbl9wYWdlcyhpbnQgaWR4LCBsb25nIHZhbClcbi0tXG5tbS9tZW1jb250cm9sLmMtODAyLVxubW0vbWVtY29udHJvbC5jOjgwMzojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5tbS9tZW1jb250cm9sLmMtODA0LS8qXG4tLVxubW0vbWVtY29udHJvbC5jPTg3MT12b2lkIG1vZF9tZW1jZ19zdGF0ZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGVudW0gbWVtY2dfc3RhdF9pdGVtIGlkeCxcbi0tXG5tbS9tZW1jb250cm9sLmMtODgzLVxubW0vbWVtY29udHJvbC5jOjg4NDojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5tbS9tZW1jb250cm9sLmMtODg1LS8qIGlkeCBjYW4gYmUgb2YgdHlwZSBlbnVtIG1lbWNnX3N0YXRfaXRlbSBvciBub2RlX3N0YXRfaXRlbS4gKi9cbi0tXG5tbS9tZW1jb250cm9sLmM9MTA1OT1ib29sIG1lbWNnX3ZtX2V2ZW50X2l0ZW1fdmFsaWQoZW51bSB2bV9ldmVudF9pdGVtIGlkeClcbi0tXG5tbS9tZW1jb250cm9sLmMtMTA2Ni1cbm1tL21lbWNvbnRyb2wuYzoxMDY3OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy0xMDY4LXVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzX2xvY2FsKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KVxuLS1cbm1tL21lbWNvbnRyb2wuYz0xNjY3PXVuc2lnbmVkIGxvbmcgbWVtY2dfcGFnZV9zdGF0ZV9vdXRwdXQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgaXRlbSlcbi0tXG5tbS9tZW1jb250cm9sLmMtMTY3Mi1cbm1tL21lbWNvbnRyb2wuYzoxNjczOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy0xNjc0LXVuc2lnbmVkIGxvbmcgbWVtY2dfcGFnZV9zdGF0ZV9sb2NhbF9vdXRwdXQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgaXRlbSlcbi0tXG5tbS9tZW1jb250cm9sLmM9MTY5Mz1zdGF0aWMgdm9pZCBtZW1jZ19zdGF0X2Zvcm1hdChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHN0cnVjdCBzZXFfYnVmICpzKVxuLS1cbm1tL21lbWNvbnRyb2wuYy0xNzM5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShtZW1jZ192bV9ldmVudF9zdGF0KTsgaSYjNDM7JiM0MzspIHtcbm1tL21lbWNvbnRyb2wuYzoxNzQwOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy0xNzQxLVx0XHRpZiAobWVtY2dfdm1fZXZlbnRfc3RhdFtpXSA9PSBQR1BHSU4gfHxcbi0tXG5tbS9tZW1jb250cm9sLmM9MTc5MT12b2lkIG1lbV9jZ3JvdXBfcHJpbnRfb29tX21lbWluZm8oc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxuLS1cbm1tL21lbWNvbnRyb2wuYy0xODEyLVx0XHRcdGF0b21pY19sb25nX3JlYWQoXHUwMDI2bWVtY2ctXHUwMDNlbWVtb3J5X2V2ZW50c1tNRU1DR19TV0FQX01BWF0pKTtcbm1tL21lbWNvbnRyb2wuYzoxODEzOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy0xODE0LVx0ZWxzZSB7XG4tLVxubW0vbWVtY29udHJvbC5jPTI4MDA9c3RhdGljIHZvaWQgY29tbWl0X2NoYXJnZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgb2JqX2Nncm91cCAqb2JqY2cpXG4tLVxubW0vbWVtY29udHJvbC5jLTI4MTItXG5tbS9tZW1jb250cm9sLmM6MjgxMzojaWZkZWYgQ09ORklHX01FTUNHX05NSV9TQUZFVFlfUkVRVUlSRVNfQVRPTUlDXG5tbS9tZW1jb250cm9sLmMtMjgxNC1zdGF0aWMgaW5saW5lIHZvaWQgYWNjb3VudF9zbGFiX25taV9zYWZlKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcbi0tXG5tbS9tZW1jb250cm9sLmM9Mjk4Nj1fX2Fsd2F5c19pbmxpbmUgc3RydWN0IG9ial9jZ3JvdXAgKmN1cnJlbnRfb2JqX2Nncm91cCh2b2lkKVxuLS1cbm1tL21lbWNvbnRyb2wuYy0yOTkxLVxubW0vbWVtY29udHJvbC5jOjI5OTI6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTUVNQ0dfTk1JX1VOU0FGRSkgXHUwMDI2XHUwMDI2IGluX25taSgpKVxubW0vbWVtY29udHJvbC5jLTI5OTMtXHRcdHJldHVybiBOVUxMO1xuLS1cbm1tL21lbWNvbnRyb2wuYz0zMDMyPXN0cnVjdCBvYmpfY2dyb3VwICpnZXRfb2JqX2Nncm91cF9mcm9tX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vbWVtY29udHJvbC5jLTMwNDItXG5tbS9tZW1jb250cm9sLmM6MzA0MzojaWZkZWYgQ09ORklHX01FTUNHX05NSV9TQUZFVFlfUkVRVUlSRVNfQVRPTUlDXG5tbS9tZW1jb250cm9sLmMtMzA0NC1zdGF0aWMgaW5saW5lIHZvaWQgYWNjb3VudF9rbWVtX25taV9zYWZlKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IHZhbClcbi0tXG5tbS9tZW1jb250cm9sLmM9NDE1Nz1tZW1fY2dyb3VwX2Nzc19hbGxvYyhzdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqcGFyZW50X2Nzcylcbi0tXG5tbS9tZW1jb250cm9sLmMtNDE4MC1cdFx0cGFnZV9jb3VudGVyX2luaXQoXHUwMDI2bWVtY2ctXHUwMDNlc3dhcCwgXHUwMDI2cGFyZW50LVx1MDAzZXN3YXAsIGZhbHNlKTtcbm1tL21lbWNvbnRyb2wuYzo0MTgxOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy00MTgyLVx0XHRtZW1jZy1cdTAwM2VtZW1vcnkudHJhY2tfZmFpbGNudCA9ICFtZW1jZ19vbl9kZmw7XG4tLVxubW0vbWVtY29udHJvbC5jLTQxOTEtXHRcdHBhZ2VfY291bnRlcl9pbml0KFx1MDAyNm1lbWNnLVx1MDAzZXN3YXAsIE5VTEwsIGZhbHNlKTtcbm1tL21lbWNvbnRyb2wuYzo0MTkyOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy00MTkzLVx0XHRwYWdlX2NvdW50ZXJfaW5pdChcdTAwMjZtZW1jZy1cdTAwM2VrbWVtLCBOVUxMLCBmYWxzZSk7XG4tLVxubW0vbWVtY29udHJvbC5jPTQzNTk9c3RhdGljIHZvaWQgbWVtX2Nncm91cF9jc3NfcmVzZXQoc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUgKmNzcylcbi0tXG5tbS9tZW1jb250cm9sLmMtNDM2NC1cdHBhZ2VfY291bnRlcl9zZXRfbWF4KFx1MDAyNm1lbWNnLVx1MDAzZXN3YXAsIFBBR0VfQ09VTlRFUl9NQVgpO1xubW0vbWVtY29udHJvbC5jOjQzNjU6I2lmZGVmIENPTkZJR19NRU1DR19WMVxubW0vbWVtY29udHJvbC5jLTQzNjYtXHRwYWdlX2NvdW50ZXJfc2V0X21heChcdTAwMjZtZW1jZy1cdTAwM2VrbWVtLCBQQUdFX0NPVU5URVJfTUFYKTtcbi0tXG5tbS9tZW1jb250cm9sLmM9NDM5ND1zdGF0aWMgdm9pZCBtZW1fY2dyb3VwX3N0YXRfYWdncmVnYXRlKHN0cnVjdCBhZ2dyZWdhdGVfY29udHJvbCAqYWMpXG4tLVxubW0vbWVtY29udHJvbC5jLTQ0MjktXG5tbS9tZW1jb250cm9sLmM6NDQzMDojaWZkZWYgQ09ORklHX01FTUNHX05NSV9TQUZFVFlfUkVRVUlSRVNfQVRPTUlDXG5tbS9tZW1jb250cm9sLmMtNDQzMS1zdGF0aWMgdm9pZCBmbHVzaF9ubWlfc3RhdHMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBzdHJ1Y3QgbWVtX2Nncm91cCAqcGFyZW50LFxuLS1cbm1tL21lbWNvbnRyb2wuYz01MDc2PXN0cnVjdCBjZ3JvdXBfc3Vic3lzIG1lbW9yeV9jZ3JwX3N1YnN5cyA9IHtcbi0tXG5tbS9tZW1jb250cm9sLmMtNTA4Ny1cdC5kZmxfY2Z0eXBlcyA9IG1lbW9yeV9maWxlcyxcbm1tL21lbWNvbnRyb2wuYzo1MDg4OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy01MDg5LVx0LmxlZ2FjeV9jZnR5cGVzID0gbWVtX2Nncm91cF9sZWdhY3lfZmlsZXMsXG4tLVxubW0vbWVtY29udHJvbC5jPTYwMjI9c3RhdGljIGludCBfX2luaXQgbWVtX2Nncm91cF9zd2FwX2luaXQodm9pZClcbi0tXG5tbS9tZW1jb250cm9sLmMtNjAyNy1cdFdBUk5fT04oY2dyb3VwX2FkZF9kZmxfY2Z0eXBlcyhcdTAwMjZtZW1vcnlfY2dycF9zdWJzeXMsIHN3YXBfZmlsZXMpKTtcbm1tL21lbWNvbnRyb2wuYzo2MDI4OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy02MDI5LVx0V0FSTl9PTihjZ3JvdXBfYWRkX2xlZ2FjeV9jZnR5cGVzKFx1MDAyNm1lbW9yeV9jZ3JwX3N1YnN5cywgbWVtc3dfZmlsZXMpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyNDMKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIE1lbW9yeSBDb250cm9sIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkZWFsaW5nIHdpdGggYG1tL21lbWNvbnRyb2wuY2AgYW5kIGtub3cgaXQgb25seSBnZXRzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19NRU1DR2AgaXMgc2V0LiBOb3cgSSBuZWVkIHRvIHNlZSAqaG93KiB0aGF0IGxpbmthZ2UgaXMgZXN0YWJsaXNoZWQgd2l0aGluIHRoZSBidWlsZCBzeXN0ZW0uIFRoZSBuYXR1cmFsIHBsYWNlIHRvIGxvb2sgaXMgdGhlIGBtbS9NYWtlZmlsZWAuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBjb21waWxhdGlvbiBydWxlcyBhbmQgZGVwZW5kZW5jaWVzIGZvciBtZW1vcnkgbWFuYWdlbWVudCBzb3VyY2UgZmlsZXMgYXJlIGRlZmluZWQuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZSBwcmVjaXNlbHkgaG93IHRoYXQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gaXMgaGFuZGxlZC4gSSBleHBlY3QgdG8gZmluZCBhIGBvYmotJChDT05GSUdfTUVNQ0cpICYjNDM7PSBtZW1jb250cm9sLm9gIG9yIHNvbWV0aGluZyBzaW1pbGFyIGluIHRoYXQgYE1ha2VmaWxlYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBhbmQgbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMjo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZW1jb250cm9sJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGU9Mjc9S0NPVl9JTlNUUlVNRU5UX2ttZW1sZWFrLm8gOj0gblxubW0vTWFrZWZpbGU6Mjg6S0NPVl9JTlNUUlVNRU5UX21lbWNvbnRyb2wubyA6PSBuXG5tbS9NYWtlZmlsZToyOTpLQ09WX0lOU1RSVU1FTlRfbWVtY29udHJvbC12MS5vIDo9IG5cbm1tL01ha2VmaWxlLTMwLUtDT1ZfSU5TVFJVTUVOVF9tbXpvbmUubyA6PSBuXG4tLVxubW0vTWFrZWZpbGU9MTAzPW9iai0kKENPTkZJR19MSVZFVVBEQVRFX01FTUZEKSAmIzQzOz0gbWVtZmRfbHVvLm9cbm1tL01ha2VmaWxlOjEwNDpvYmotJChDT05GSUdfTUVNQ0dfVjEpICYjNDM7PSBtZW1jb250cm9sLXYxLm9cbm1tL01ha2VmaWxlOjEwNTpvYmotJChDT05GSUdfTUVNQ0cpICYjNDM7PSBtZW1jb250cm9sLm8gdm1wcmVzc3VyZS5vXG5tbS9NYWtlZmlsZS0xMDYtaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5tbS9NYWtlZmlsZToxMDc6b2JqLSQoQ09ORklHX01FTUNHKSAmIzQzOz0gYnBmX21lbWNvbnRyb2wub1xubW0vTWFrZWZpbGUtMTA4LWVuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIyOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjk1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2VybmVsIENvbmZpZ3VyYXRpb24gQ29udW5kcnVtKioKCkFscmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYENPTkZJR19NRU1DR2AgaXMgZGVmaW5pdGVseSB0aGUga2V5IGhlcmUsIG5vIGRvdWJ0IGFib3V0IHRoYXQuIEJ1dCBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBwaWVjZXMuIFdoYXQgYWJvdXQgYENPTkZJR19TWVNGU2AgYW5kIGBDT05GSUdfTlVNQWA/IERvIHRob3NlIGNvbWUgaW50byBwbGF5IGZvciB0aGUgYHJlY2xhaW1fc3RvcmVgIGZ1bmN0aW9uPyBJIGtub3cgdGhleSYjMzk7cmUgb2Z0ZW4gaW50ZXJjb25uZWN0ZWQgd2l0aCBtZW1vcnkgbWFuYWdlbWVudCwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBCZXN0IHdheSB0byBmaWd1cmUgdGhpcyBvdXQgaXMgdG8gZGlnIGludG8gdGhlIGNvZGUgaXRzZWxmLiBUaW1lIHRvIGNoZWNrIGBtbS92bXNjYW4uY2AuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiBpbiB0aGVyZSBhbmQgbWFrZSBzdXJlIEkgaGF2ZSBhbGwgdGhlIHJlbGV2YW50IGNvbmZpZ3MgY292ZXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVjbGFpbV9zdG9yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jPTgwMTU9RVhQT1JUX1NZTUJPTF9HUEwoY2hlY2tfbW92ZV91bmV2aWN0YWJsZV9mb2xpb3MpO1xuLS1cbm1tL3Ztc2Nhbi5jLTgwMTctI2lmIGRlZmluZWQoQ09ORklHX1NZU0ZTKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfTlVNQSlcbm1tL3Ztc2Nhbi5jOjgwMTg6c3RhdGljIHNzaXplX3QgcmVjbGFpbV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG5tbS92bXNjYW4uYy04MDE5LVx0XHRcdCAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIyOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDM4CgkJCQkJCQlvdXRwdXQ6IDE2NwoJCQkJCQkJdGhvdWdodHM6IDE5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgZnV6emluZyBzdHJhdGVneS4gVGhlIGtleSBoZXJlIGlzIHRoZSBjb21iaW5hdGlvbiBvZiBgQ09ORklHX1NZU0ZTYCBhbmQgYENPTkZJR19OVU1BYCwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyB0YXJnZXRzIGEgZmFpcmx5IHNwZWNpZmljLCBidXQgY3JpdGljYWwsIHNlY3Rpb24gb2YgdGhlIGtlcm5lbC4KCkxldCYjMzk7cyBicmVhayB0aGlzIGRvd246IGBXb3J0aEZ1enppbmdgIGlzIHNldCB0byBgdHJ1ZWAsIHdoaWNoIGlzIHRoZSBjb3JyZWN0IGFzc2Vzc21lbnQgZ2l2ZW4gdGhlIGNoYW5nZXMuIFRoZSBgRm9jdXNTeW1ib2xzYCBhcmUgc3BvdCBvbiDigJMgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gLCBgc2hvdWxkX2Fib3J0X3NjYW5gLCBgbWVtb3J5X3JlY2xhaW1gLCBhbmQgYHJlY2xhaW1fc3RvcmVgIGFyZSBkaXJlY3RseSBpbXBhY3RlZCBieSB0aGUgcGF0Y2guIFRob3NlIGFyZSAqZXhhY3RseSogdGhlIGZ1bmN0aW9ucyBJIHdvdWxkIHRhcmdldC4gVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhhdCBsaXN0IG9mIGZ1bmN0aW9ucyBpcyBjb3JyZWN0LgoKTm93LCB0aGUgYEVuYWJsZUNvbmZpZ3NgOiBgTUVNQ0dgLCBgTlVNQWAsIGFuZCBgU1lTRlNgIGFyZSBhbGwgZXNzZW50aWFsIGZvciB0cmlnZ2VyaW5nIHRoZSBjb2RlIHBhdGhzIG9mIGludGVyZXN0LiBUaGUgcmVhc29uaW5nIGhpdHMgdGhlIG5haWwgb24gdGhlIGhlYWQ6IHRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyBob3cgdGhlc2UgZnVuY3Rpb25zIGhhbmRsZSBzaWduYWxzIGFuZCBpbnRlcmFjdCB3aXRoIHRoZSBjZ3JvdXAgdjIgbWVtb3J5IHJlY2xhaW0gbWVjaGFuaXNtIGFuZCB0aGUgc3lzZnMgcmVjbGFpbSBpbnRlcmZhY2UuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHNpZ25hbCBoYW5kbGluZyBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LCB3aGljaCBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gVGhlIGdvYWwgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIG5ldyBzaWduYWwgaGFuZGxpbmcgbG9naWMgZnVuY3Rpb25zIGNvcnJlY3RseSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGluc3RhYmlsaXR5IG9yIHZ1bG5lcmFiaWxpdGllcy4gVGhpcyBpcyBhIHZlcnkgdGFyZ2V0ZWQgYW5kIGludGVsbGlnZW50IGFwcHJvYWNoIHRvIGZ1enppbmcgYSBjcml0aWNhbCBrZXJuZWwgZnVuY3Rpb24uIFdlIHNob3VsZCBkZWZpbml0ZWx5IHByaW9yaXRpemUgdGhpcyBzdHJhdGVneS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTUNHJiMzNDssCiAgICAmIzM0O05VTUEmIzM0OywKICAgICYjMzQ7U1lTRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1c2VyX3Byb2FjdGl2ZV9yZWNsYWltJiMzNDssCiAgICAmIzM0O3Nob3VsZF9hYm9ydF9zY2FuJiMzNDssCiAgICAmIzM0O21lbW9yeV9yZWNsYWltJiMzNDssCiAgICAmIzM0O3JlY2xhaW1fc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgYmVoYXZpb3Igb2YgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbSBhbmQgc2hvdWxkX2Fib3J0X3NjYW4gdG8gaGFuZGxlIHNpZ25hbHMgYnkgcmV0dXJuaW5nIC1FUkVTVEFSVFNZUyBhbmQgYWJvcnRpbmcgdGhlIHNjYW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBjZ3JvdXAgdjIgbWVtb3J5LnJlY2xhaW0gb3Igc3lzZnMgcmVjbGFpbSBpbnRlcmZhY2UuIEZ1enppbmcgdGhlc2UgcGF0aHMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGUgbmV3IHNpZ25hbCBoYW5kbGluZyBsb2dpYyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRU1DRyYjMzQ7LAogICAgJiMzNDtOVU1BJiMzNDssCiAgICAmIzM0O1NZU0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXNlcl9wcm9hY3RpdmVfcmVjbGFpbSYjMzQ7LAogICAgJiMzNDtzaG91bGRfYWJvcnRfc2NhbiYjMzQ7LAogICAgJiMzNDttZW1vcnlfcmVjbGFpbSYjMzQ7LAogICAgJiMzNDtyZWNsYWltX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIGJlaGF2aW9yIG9mIHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0gYW5kIHNob3VsZF9hYm9ydF9zY2FuIHRvIGhhbmRsZSBzaWduYWxzIGJ5IHJldHVybmluZyAtRVJFU1RBUlRTWVMgYW5kIGFib3J0aW5nIHRoZSBzY2FuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgY2dyb3VwIHYyIG1lbW9yeS5yZWNsYWltIG9yIHN5c2ZzIHJlY2xhaW0gaW50ZXJmYWNlLiBGdXp6aW5nIHRoZXNlIHBhdGhzIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG5ldyBzaWduYWwgaGFuZGxpbmcgbG9naWMgd29ya3MgY29ycmVjdGx5IGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjM0LjQ3OTk1MDQzM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3NDEwMzQwOTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FTUNHXCIsXG4gICAgXCJOVU1BXCIsXG4gICAgXCJTWVNGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVzZXJfcHJvYWN0aXZlX3JlY2xhaW1cIixcbiAgICBcInNob3VsZF9hYm9ydF9zY2FuXCIsXG4gICAgXCJtZW1vcnlfcmVjbGFpbVwiLFxuICAgIFwicmVjbGFpbV9zdG9yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGJlaGF2aW9yIG9mIHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0gYW5kIHNob3VsZF9hYm9ydF9zY2FuIHRvIGhhbmRsZSBzaWduYWxzIGJ5IHJldHVybmluZyAtRVJFU1RBUlRTWVMgYW5kIGFib3J0aW5nIHRoZSBzY2FuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgY2dyb3VwIHYyIG1lbW9yeS5yZWNsYWltIG9yIHN5c2ZzIHJlY2xhaW0gaW50ZXJmYWNlLiBGdXp6aW5nIHRoZXNlIHBhdGhzIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG5ldyBzaWduYWwgaGFuZGxpbmcgbG9naWMgd29ya3MgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMjo1MDozNC40Nzk5NTU4NjNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMjg3MjU0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGY5ZDI0OWUxZjI1MTlhZTdkZTkyZDlmYTFkZWMwOGFjMjI1YTcxMmRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTcgMjI6NTA6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uY1xcbmluZGV4IDM1YzNiYjE1YWU5NmEzLi4wZmRhODExZmNiMDUxNyAxMDA2NDRcXG4tLS0gYS9tbS92bXNjYW4uY1xcbisrKyBiL21tL3Ztc2Nhbi5jXFxuQEAgLTQ5MjksNiArNDkyOSw5IEBAIHN0YXRpYyBib29sIHNob3VsZF9hYm9ydF9zY2FuKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXFxuIFxcdGludCBpO1xcbiBcXHRlbnVtIHpvbmVfd2F0ZXJtYXJrcyBtYXJrO1xcbiBcXG4rXFx0aWYgKHVubGlrZWx5KHNjLVxcdTAwM2Vwcm9hY3RpdmUgXFx1MDAyNlxcdTAwMjYgc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpKVxcbitcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFxuIFxcdGlmIChzYy1cXHUwMDNlbnJfcmVjbGFpbWVkIFxcdTAwM2U9IG1heChzYy1cXHUwMDNlbnJfdG9fcmVjbGFpbSwgY29tcGFjdF9nYXAoc2MtXFx1MDAzZW9yZGVyKSkpXFxuIFxcdFxcdHJldHVybiB0cnVlO1xcbiBcXG5AQCAtNzkwOSw4ICs3OTEyLDE0IEBAIGludCB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltKGNoYXIgKmJ1ZixcXG4gXFx0XFx0dW5zaWduZWQgbG9uZyBiYXRjaF9zaXplID0gKG5yX3RvX3JlY2xhaW0gLSBucl9yZWNsYWltZWQpIC8gNDtcXG4gXFx0XFx0dW5zaWduZWQgbG9uZyByZWNsYWltZWQ7XFxuIFxcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBSZXR1cm4gLUVSRVNUQVJUU1lTIHRvIGFsbG93IHRoZSBmcmVlemVyIHRvIGludGVycnVwdCB0aGVcXG4rXFx0XFx0ICogdGFzay4gVGhlIHN5c2NhbGwgd2lsbCBiZSB0cmFuc3BhcmVudGx5IHJlc3RhcnRlZCB1cG9uXFxuK1xcdFxcdCAqIHJlc3VtZS4gUmVhbCBzaWduYWxzIChlLmcuIFNJR0lOVCkgd2lsbCBiZSBhdXRvbWF0aWNhbGx5XFxuK1xcdFxcdCAqIGNvbnZlcnRlZCB0byAtRUlOVFIgYnkgdGhlIHNpZ25hbCBsYXllci5cXG4rXFx0XFx0ICovXFxuIFxcdFxcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSlcXG4tXFx0XFx0XFx0cmV0dXJuIC1FSU5UUjtcXG4rXFx0XFx0XFx0cmV0dXJuIC1FUkVTVEFSVFNZUztcXG4gXFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIFRoaXMgaXMgdGhlIGZpbmFsIGF0dGVtcHQsIGRyYWluIHBlcmNwdSBscnUgY2FjaGVzIGluIHRoZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMjo1MDozNC45MTM0MTg0NDRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2OTc2ODYzNzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FTUNHXCIsXG4gICAgXCJOVU1BXCIsXG4gICAgXCJTWVNGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVzZXJfcHJvYWN0aXZlX3JlY2xhaW1cIixcbiAgICBcInNob3VsZF9hYm9ydF9zY2FuXCIsXG4gICAgXCJtZW1vcnlfcmVjbGFpbVwiLFxuICAgIFwicmVjbGFpbV9zdG9yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGJlaGF2aW9yIG9mIHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0gYW5kIHNob3VsZF9hYm9ydF9zY2FuIHRvIGhhbmRsZSBzaWduYWxzIGJ5IHJldHVybmluZyAtRVJFU1RBUlRTWVMgYW5kIGFib3J0aW5nIHRoZSBzY2FuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgY2dyb3VwIHYyIG1lbW9yeS5yZWNsYWltIG9yIHN5c2ZzIHJlY2xhaW0gaW50ZXJmYWNlLiBGdXp6aW5nIHRoZXNlIHBhdGhzIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG5ldyBzaWduYWwgaGFuZGxpbmcgbG9naWMgd29ya3MgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGY5ZDI0OWUxZjI1MTlhZTdkZTkyZDlmYTFkZWMwOGFjMjI1YTcxMmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxNyAyMjo1MDozMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmNcbmluZGV4IDM1YzNiYjE1YWU5NmEzLi4wZmRhODExZmNiMDUxNyAxMDA2NDRcbi0tLSBhL21tL3Ztc2Nhbi5jXG4rKysgYi9tbS92bXNjYW4uY1xuQEAgLTQ5MjksNiArNDkyOSw5IEBAIHN0YXRpYyBib29sIHNob3VsZF9hYm9ydF9zY2FuKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXG4gXHRpbnQgaTtcbiBcdGVudW0gem9uZV93YXRlcm1hcmtzIG1hcms7XG4gXG4rXHRpZiAodW5saWtlbHkoc2MtXHUwMDNlcHJvYWN0aXZlIFx1MDAyNlx1MDAyNiBzaWduYWxfcGVuZGluZyhjdXJyZW50KSkpXG4rXHRcdHJldHVybiB0cnVlO1xuK1xuIFx0aWYgKHNjLVx1MDAzZW5yX3JlY2xhaW1lZCBcdTAwM2U9IG1heChzYy1cdTAwM2Vucl90b19yZWNsYWltLCBjb21wYWN0X2dhcChzYy1cdTAwM2VvcmRlcikpKVxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcbkBAIC03OTA5LDggKzc5MTIsMTQgQEAgaW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLFxuIFx0XHR1bnNpZ25lZCBsb25nIGJhdGNoX3NpemUgPSAobnJfdG9fcmVjbGFpbSAtIG5yX3JlY2xhaW1lZCkgLyA0O1xuIFx0XHR1bnNpZ25lZCBsb25nIHJlY2xhaW1lZDtcbiBcbitcdFx0LypcbitcdFx0ICogUmV0dXJuIC1FUkVTVEFSVFNZUyB0byBhbGxvdyB0aGUgZnJlZXplciB0byBpbnRlcnJ1cHQgdGhlXG4rXHRcdCAqIHRhc2suIFRoZSBzeXNjYWxsIHdpbGwgYmUgdHJhbnNwYXJlbnRseSByZXN0YXJ0ZWQgdXBvblxuK1x0XHQgKiByZXN1bWUuIFJlYWwgc2lnbmFscyAoZS5nLiBTSUdJTlQpIHdpbGwgYmUgYXV0b21hdGljYWxseVxuK1x0XHQgKiBjb252ZXJ0ZWQgdG8gLUVJTlRSIGJ5IHRoZSBzaWduYWwgbGF5ZXIuXG4rXHRcdCAqL1xuIFx0XHRpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpXG4tXHRcdFx0cmV0dXJuIC1FSU5UUjtcbitcdFx0XHRyZXR1cm4gLUVSRVNUQVJUU1lTO1xuIFxuIFx0XHQvKlxuIFx0XHQgKiBUaGlzIGlzIHRoZSBmaW5hbCBhdHRlbXB0LCBkcmFpbiBwZXJjcHUgbHJ1IGNhY2hlcyBpbiB0aGVcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjM0LjkxMzQxOTkzNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNTI0NzUzNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVk0gU2NhbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBtbS92bXNjYW4uY2AuIEl0J3MgcHJldHR5IGZvY3VzZWQ7IHRoZSBjaGFuZ2VzIHplcm8gaW4gb24gYHNob3VsZF9hYm9ydF9zY2FuYCBhbmQgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gLiBSaWdodCBhd2F5LCB0aGUgYWRkaXRpb24gdG8gYHNob3VsZF9hYm9ydF9zY2FuYCBjYXRjaGVzIG15IGV5ZTogYSBjaGVjayBmb3IgYHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpYCAqb25seSogd2hlbiB0aGUgc2NhbiBpcyBcInByb2FjdGl2ZVwiLiBTbywgaWYgYSBzaWduYWwgaXMgcGVuZGluZyBvbiB0aGUgY3VycmVudCBwcm9jZXNzIGFuZCB0aGUgc2NhbiBpcyBwcm9hY3RpdmUsIHdlJ3JlIGJhaWxpbmcgb3V0LiBUaGlzIHNlZW1zIHRvIGJlIHNvbWUgZm9ybSBvZiBlYXJseSB0ZXJtaW5hdGlvbiBvciBwcmlvcml0aXphdGlvbiwgbGlrZWx5IGluIHJlc3BvbnNlIHRvIGEgdXNlci1pbml0aWF0ZWQgYWN0aW9uLiBXZSdyZSByZXR1cm5pbmcgdHJ1ZS5cblxuTm93LCBsZXQncyBkaWcgaW50byBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAuIFRoZSBrZXkgaGVyZSBpcyB0aGUgY2hhbmdlIGZyb20gYC1FSU5UUmAgdG8gYC1FUkVTVEFSVFNZU2Agd2hlbiBhIHNpZ25hbCBpcyBwZW5kaW5nLiBUaGUgY29tbWVudCBjbGFyaWZpZXMgdGhpczogYC1FUkVTVEFSVFNZU2AgaXMgYmVpbmcgcmV0dXJuZWQgc3BlY2lmaWNhbGx5IHRvIGFsbG93IHRoZSBmcmVlemVyIHRvIGludGVycnVwdCB0aGUgdGFzayBjbGVhbmx5LiBUaGUgcGF0Y2ggYXV0aG9yIGlzIGJlaW5nIHZlcnkgdGhvdWdodGZ1bCBoZXJlLCBleHBsYWluaW5nIGhvdyByZWFsIHNpZ25hbHMgYXJlIGhhbmRsZWQgYnkgdGhlIHNpZ25hbCBsYXllci4gVGhpcyBzdWdnZXN0cyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBzaXR1YXRpb24gd2hlcmUgYSB0YXNrIG1pZ2h0IGJlIHByb2FjdGl2ZWx5IHJlY2xhaW1pbmcgbWVtb3J5LCBhbmQgYSB1c2VyIG9yIHN5c3RlbS1sZXZlbCBzaWduYWwgKGxpa2UgYSBmcmVlemUgb3IgYSB0ZXJtaW5hdGlvbiByZXF1ZXN0KSBuZWVkcyB0byB0YWtlIHByZWNlZGVuY2UgKndpdGhvdXQqIGxvc2luZyB0aGUgb3JpZ2luYWwgc3lzY2FsbC4gSXTigJlzIGFsc28gaW50ZXJlc3RpbmcgdGhhdCB3ZSdyZSB0YWxraW5nIGFib3V0IHNpZ25hbCBoYW5kbGluZyBpbiB0aGVzZSBzcGVjaWZpYyBmdW5jdGlvbnMuXG5cblRoZSBmYWN0IHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgaW4gdGhlIHNjYW5uaW5nIGFuZCByZWNsYWltaW5nIGNvZGUgbWFrZXMgbWUgdGhpbmsgdGhhdCBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAgaXMgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgY2dyb3VwIHYyIGBtZW1vcnkucmVjbGFpbWAgaW50ZXJmYWNlLiBUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIHJlZmluaW5nIGhvdyBwcm9hY3RpdmUgbWVtb3J5IHJlY2xhbWF0aW9uIGlzIGhhbmRsZWQgaW4gdGhlIHByZXNlbmNlIG9mIHNpZ25hbHMgYW5kIHVzZXIgaW50ZXJhY3Rpb24sIHBhcnRpY3VsYXJseSB3aGVuIHRob3NlIHNpZ25hbHMgbWlnaHQgaW52b2x2ZSBmcmVlemluZyBvciBpbnRlcnJ1cHRpbmcgYSBwcm9jZXNzLiBUaGlzIGlzIGEgc29saWQgcGllY2Ugb2Ygd29yazsgdGhlIGxvZ2ljIGlzIHByZXR0eSBjbGVhci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxMSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjQwLjA2NTg5NzA5OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjE0MDQ3MDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVzZXJfcHJvYWN0aXZlX3JlY2xhaW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaW50ZXJuYWwuaD02MjQ9ZXh0ZXJuIHZvaWQgcmVjbGFpbV90aHJvdHRsZShwZ19kYXRhX3QgKnBnZGF0LCBlbnVtIHZtc2Nhbl90aHJvdHRsZV9zdGF0ZSByZWFzb24pO1xcbm1tL2ludGVybmFsLmg6NjI1OmludCB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltKGNoYXIgKmJ1ZixcXG5tbS9pbnRlcm5hbC5oLTYyNi1cXHRcXHRcXHQgICBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHBnX2RhdGFfdCAqcGdkYXQpO1xcbi0tXFxubW0vbWVtY29udHJvbC5jPTQ5ODk9c3RhdGljIHNzaXplX3QgbWVtb3J5X3JlY2xhaW0oc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBjaGFyICpidWYsXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtNDk5NC1cXG5tbS9tZW1jb250cm9sLmM6NDk5NTpcXHRyZXQgPSB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltKGJ1ZiwgbWVtY2csIE5VTEwpO1xcbm1tL21lbWNvbnRyb2wuYy00OTk2LVxcdGlmIChyZXQpXFxuLS1cXG5tbS92bXNjYW4uYz03ODYzPXN0YXRpYyBjb25zdCBtYXRjaF90YWJsZV90IHRva2VucyA9IHtcXG4tLVxcbm1tL3Ztc2Nhbi5jLTc4NjgtXFxubW0vdm1zY2FuLmM6Nzg2OTppbnQgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbShjaGFyICpidWYsXFxubW0vdm1zY2FuLmMtNzg3MC1cXHRcXHRcXHQgICBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHBnX2RhdGFfdCAqcGdkYXQpXFxuLS1cXG5tbS92bXNjYW4uYz04MDE4PXN0YXRpYyBzc2l6ZV90IHJlY2xhaW1fc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxubW0vdm1zY2FuLmMtODAyMy1cXG5tbS92bXNjYW4uYzo4MDI0OlxcdHJldCA9IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oKGNoYXIgKilidWYsIE5VTEwsIE5PREVfREFUQShuaWQpKTtcXG5tbS92bXNjYW4uYy04MDI1LVxcdHJldHVybiByZXQgPyAtRUFHQUlOIDogY291bnQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjQ0LjY3OTk1MDc1NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMjA3MzA4MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLZXJuZWwncyBNZW1vcnkgUmVjbGFpbSBCZWhhdmlvcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhvdyBpdCBjaGFuZ2VzIHRoZSBtZW1vcnkgcmVjbGFpbSBwcm9jZXNzIGluIHRoZSBrZXJuZWwsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIHVzZXItaW5pdGlhdGVkIHByb2FjdGl2ZSByZWNsYWltLiBJdCBzZWVtcyBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLCBjYWxsZWQgZnJvbSBgbWVtb3J5X3JlY2xhaW1gIGluIGBtbS9tZW1jb250cm9sLmNgIGFuZCBhbHNvIGZyb20gYHJlY2xhaW1fc3RvcmVgIGluIGBtbS92bXNjYW4uY2AuICBgbWVtb3J5X3JlY2xhaW1gIGhhbmRsZXMgdGhlIGBtZW1vcnkucmVjbGFpbWAgY2dyb3VwIHYyIGZpbGUsIHdoaWxlIGByZWNsYWltX3N0b3JlYCBtYW5hZ2VzIHRoZSBgL3N5cy9kZXZpY2VzL3N5c3RlbS9ub2RlL25vZGVYL3JlY2xhaW1gIHN5c2ZzIGZpbGUuXG5cblRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggc2VlbXMgdG8gaGluZ2Ugb24gaG93IGl0IGhhbmRsZXMgc2lnbmFscyBkdXJpbmcgdGhlIHJlY2xhaW0gcHJvY2Vzcy4gIFNwZWNpZmljYWxseSwgaXQgbWFrZXMgYHNob3VsZF9hYm9ydF9zY2FuYCBhYm9ydCBpZiBhIHByb2FjdGl2ZSBzY2FuIGlzIGhhcHBlbmluZyAoYHNjLVx1MDAzZXByb2FjdGl2ZWApIGFuZCB0aGUgY3VycmVudCB0YXNrIGhhcyBhIHBlbmRpbmcgc2lnbmFsIChgc2lnbmFsX3BlbmRpbmcoY3VycmVudClgKS4gIEZ1cnRoZXJtb3JlLCBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAgaXMgbm93IHNldCB0byByZXR1cm4gYC1FUkVTVEFSVFNZU2AgaW5zdGVhZCBvZiBgLUVJTlRSYCBpbiB0aGUgc2FtZSBzaWduYWwgcGVuZGluZyBzY2VuYXJpby5cblxuVGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlIG5vdyBpdCdzIHBvc3NpYmxlIGZvciB0aGUgZnJlZXplciB0byBpbnRlcnJ1cHQgdGhlIHRhc2suIFRoaXMgYWxzbyBtZWFucyB0aGF0IHN5c2NhbGxzIHdpbGwgYmUgcmVzdGFydGVkLCBhIHByZXR0eSBpbXBvcnRhbnQgZGlzdGluY3Rpb24gdGhhdCBoYXMgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBmb3Igc3RhYmlsaXR5IGFuZCByZXNwb25zaXZlbmVzcy4gR2l2ZW4gdGhlIGNoYW5nZSBpbiByZXR1cm4gY29kZSBhbmQgdGhlIHBvdGVudGlhbCBmb3IgaW50ZXJydXB0aW9ucywgdGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0IG5lZWRzIHRob3JvdWdoIGZ1enppbmcgdG8gZW5zdXJlIHRoZXJlIGFyZW4ndCBhbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMgb3IgcmFjZSBjb25kaXRpb25zLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gYG1tL3Ztc2Nhbi5jYCBpcyBhbHdheXMgY29tcGlsZWQsIHdoaWNoIGNvdmVycyB0aGUgYHJlY2xhaW1fc3RvcmVgIGNvZGUuIGBtbS9tZW1jb250cm9sLmNgIGlzIG9ubHkgY29tcGlsZWQgaWYgYENPTkZJR19NRU1DR2AgaXMgZW5hYmxlZCwgYW5kIHRoZXJlZm9yZSB0aGUgZnVuY3Rpb24gY2FsbGVkIGBtZW1vcnlfcmVjbGFpbWAgaXMgY29uZGl0aW9uYWwuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBkZXRhaWxzIGZvciBgbW0vdm1zY2FuLmNgLCBsaWtlbHkgTlVNQSBvciBzb21ldGhpbmcgcmVsYXRlZCwgdG8gc2VlIHdoZW4gYHJlY2xhaW1fc3RvcmVgIGlzIGluY2x1ZGVkLiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5mb3JtIG15IHRlc3RpbmcgYXBwcm9hY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwOTcsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjI6NTA6NTAuMDAwNjgzMzU2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwODQyMzkyODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVjbGFpbV9zdG9yZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9idHJmcy9zeXNmcy5jPTk1Mj1zdGF0aWMgc3NpemVfdCBidHJmc19zaW5mb19keW5hbWljX3JlY2xhaW1fc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbmZzL2J0cmZzL3N5c2ZzLmMtOTYwLVxcbmZzL2J0cmZzL3N5c2ZzLmM6OTYxOnN0YXRpYyBzc2l6ZV90IGJ0cmZzX3NpbmZvX2R5bmFtaWNfcmVjbGFpbV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG5mcy9idHJmcy9zeXNmcy5jLTk2Mi1cXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGtvYmpfYXR0cmlidXRlICphLFxcbi0tXFxuZnMvYnRyZnMvc3lzZnMuYz05ODE9QlRSRlNfQVRUUl9SVyhzcGFjZV9pbmZvLCBkeW5hbWljX3JlY2xhaW0sXFxuZnMvYnRyZnMvc3lzZnMuYy05ODItXFx0ICAgICAgYnRyZnNfc2luZm9fZHluYW1pY19yZWNsYWltX3Nob3csXFxuZnMvYnRyZnMvc3lzZnMuYzo5ODM6XFx0ICAgICAgYnRyZnNfc2luZm9fZHluYW1pY19yZWNsYWltX3N0b3JlKTtcXG5mcy9idHJmcy9zeXNmcy5jLTk4NC1cXG5mcy9idHJmcy9zeXNmcy5jPTk4NT1zdGF0aWMgc3NpemVfdCBidHJmc19zaW5mb19wZXJpb2RpY19yZWNsYWltX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5mcy9idHJmcy9zeXNmcy5jLTk5My1cXG5mcy9idHJmcy9zeXNmcy5jOjk5NDpzdGF0aWMgc3NpemVfdCBidHJmc19zaW5mb19wZXJpb2RpY19yZWNsYWltX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbmZzL2J0cmZzL3N5c2ZzLmMtOTk1LVxcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmEsXFxuLS1cXG5mcy9idHJmcy9zeXNmcy5jPTEwMTQ9QlRSRlNfQVRUUl9SVyhzcGFjZV9pbmZvLCBwZXJpb2RpY19yZWNsYWltLFxcbmZzL2J0cmZzL3N5c2ZzLmMtMTAxNS1cXHQgICAgICBidHJmc19zaW5mb19wZXJpb2RpY19yZWNsYWltX3Nob3csXFxuZnMvYnRyZnMvc3lzZnMuYzoxMDE2OlxcdCAgICAgIGJ0cmZzX3NpbmZvX3BlcmlvZGljX3JlY2xhaW1fc3RvcmUpO1xcbmZzL2J0cmZzL3N5c2ZzLmMtMTAxNy1cXG4tLVxcbm1tL3Ztc2Nhbi5jPTgwMTU9RVhQT1JUX1NZTUJPTF9HUEwoY2hlY2tfbW92ZV91bmV2aWN0YWJsZV9mb2xpb3MpO1xcbi0tXFxubW0vdm1zY2FuLmMtODAxNy0jaWYgZGVmaW5lZChDT05GSUdfU1lTRlMpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX05VTUEpXFxubW0vdm1zY2FuLmM6ODAxODpzdGF0aWMgc3NpemVfdCByZWNsYWltX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG5tbS92bXNjYW4uYy04MDE5LVxcdFxcdFxcdCAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjUyLjA4NDkyNzIzM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NDcxOTM1NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgTWVtb3J5IFJlY2xhaW0gQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIGByZWNsYWltX3N0b3JlYCBpcyBkZWZpbml0ZWx5IHRpZWQgdG8gYENPTkZJR19TWVNGU2AgYW5kIGBDT05GSUdfTlVNQWAuIFRoYXQgbWFrZXMgc2Vuc2U7IHN0b3JpbmcgcmVjbGFpbSBpbmZvcm1hdGlvbiBpbiBzeXNmcyBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggTlVNQSBhcmNoaXRlY3R1cmVzIGlzIGxvZ2ljYWwuIE5vdywgdGhlIGBtZW1vcnlfcmVjbGFpbWAgZnVuY3Rpb24gaXMgY29udHJvbGxlZCBieSBgQ09ORklHX01FTUNHYC4gUmlnaHQsIHRoYXQncyB3aGF0IEkgZXhwZWN0ZWTigJRtZW1vcnkgY2dyb3VwcyBhbmQgcmVjbGFpbSBhcmUgaW50cmluc2ljYWxseSBsaW5rZWQuIFRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaG93IHRoYXQgcGxheXMgb3V0LCBJIHJlYWxseSBzaG91bGQgZGl2ZSBpbnRvIHRoZSBhY3R1YWwgY29kZS4gTG9va3MgbGlrZSBgbW0vbWVtY29udHJvbC5jYCBpcyB0aGUgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBkZXRhaWxzIG9mIHRoZSBgbWVtb3J5X3JlY2xhaW1gIGZ1bmN0aW9uLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGluIHJlbGF0aW9uIHRvIG1lbW9yeSBjZ3JvdXBzIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlY2xhaW0gcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ1NSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjU1LjAzMjEyMjU2NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODEwMzAwODk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbW9yeV9yZWNsYWltXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg9MTM1PUtWTV9YODZfT1BfT1BUSU9OQUwodm1fbW92ZV9lbmNfY29udGV4dF9mcm9tKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTM2OktWTV9YODZfT1BfT1BUSU9OQUwoZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTEzNy1LVk1fWDg2X09QKGdldF9mZWF0dXJlX21zcilcXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg9MTc4NT1zdHJ1Y3Qga3ZtX3g4Nl9vcHMge1xcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xOTg2LVxcdGludCAoKnZtX21vdmVfZW5jX2NvbnRleHRfZnJvbSkoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgc291cmNlX2ZkKTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjE5ODc6XFx0dm9pZCAoKmd1ZXN0X21lbW9yeV9yZWNsYWltZWQpKHN0cnVjdCBrdm0gKmt2bSk7XFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xOTg4LVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0zMjU3PXN0YXRpYyB2b2lkIHNldl9mbHVzaF9lbmNyeXB0ZWRfcGFnZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHZvaWQgKnZhKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjkyLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzI5Mzp2b2lkIHNldl9ndWVzdF9tZW1vcnlfcmVjbGFpbWVkKHN0cnVjdCBrdm0gKmt2bSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyOTQte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzI1PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NDQ2LVxcdC5tZW1fZW5jX3VucmVnaXN0ZXJfcmVnaW9uID0gc2V2X21lbV9lbmNfdW5yZWdpc3Rlcl9yZWdpb24sXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1NDQ3OlxcdC5ndWVzdF9tZW1vcnlfcmVjbGFpbWVkID0gc2V2X2d1ZXN0X21lbW9yeV9yZWNsYWltZWQsXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NDQ4LVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaD05ODc9aW50IHNldl92bV9tb3ZlX2VuY19jb250ZXh0X2Zyb20oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgc291cmNlX2ZkKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oOjk4ODp2b2lkIHNldl9ndWVzdF9tZW1vcnlfcmVjbGFpbWVkKHN0cnVjdCBrdm0gKmt2bSk7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaC05ODktaW50IHNldl9oYW5kbGVfdm1nZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTExMDczPXN0YXRpYyB2b2lkIHZjcHVfbG9hZF9lb2lfZXhpdG1hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTEwOTItXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjExMDkzOnZvaWQga3ZtX2FyY2hfZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZChzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTExMDk0LXtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTEwOTU6XFx0a3ZtX3g4Nl9jYWxsKGd1ZXN0X21lbW9yeV9yZWNsYWltZWQpKGt2bSk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTExMDk2LX1cXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX2ZmYS9kcml2ZXIuYz03ODg9c3RhdGljIGludCBmZmFfbWVtb3J5X29wcyh1MzIgZnVuY19pZCwgc3RydWN0IGZmYV9tZW1fb3BzX2FyZ3MgKmFyZ3MpXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvZHJpdmVyLmMtODEyLVxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX2ZmYS9kcml2ZXIuYzo4MTM6c3RhdGljIGludCBmZmFfbWVtb3J5X3JlY2xhaW0odTY0IGdfaGFuZGxlLCB1MzIgZmxhZ3MpXFxuZHJpdmVycy9maXJtd2FyZS9hcm1fZmZhL2RyaXZlci5jLTgxNC17XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvZHJpdmVyLmM9MTYxMT1zdGF0aWMgY29uc3Qgc3RydWN0IGZmYV9tZW1fb3BzIGZmYV9kcnZfbWVtX29wcyA9IHtcXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvZHJpdmVyLmM6MTYxMjpcXHQubWVtb3J5X3JlY2xhaW0gPSBmZmFfbWVtb3J5X3JlY2xhaW0sXFxuZHJpdmVycy9maXJtd2FyZS9hcm1fZmZhL2RyaXZlci5jLTE2MTMtXFx0Lm1lbW9yeV9zaGFyZSA9IGZmYV9tZW1vcnlfc2hhcmUsXFxuLS1cXG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmM9MjcwPXN0YXRpYyBpbnQgb3B0ZWVfZmZhX3NobV9yZWdpc3RlcihzdHJ1Y3QgdGVlX2NvbnRleHQgKmN0eCwgc3RydWN0IHRlZV9zaG0gKnNobSxcXG4tLVxcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYy0zMDQtXFx0aWYgKHJjKSB7XFxuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jOjMwNTpcXHRcXHRtZW1fb3BzLVxcdTAwM2VtZW1vcnlfcmVjbGFpbShhcmdzLmdfaGFuZGxlLCAwKTtcXG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmMtMzA2LVxcdFxcdHJldHVybiByYztcXG4tLVxcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYz0zMTQ9c3RhdGljIGludCBvcHRlZV9mZmFfc2htX3VucmVnaXN0ZXIoc3RydWN0IHRlZV9jb250ZXh0ICpjdHgsXFxuLS1cXG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmMtMzM1LVxcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYzozMzY6XFx0cmMgPSBtZW1fb3BzLVxcdTAwM2VtZW1vcnlfcmVjbGFpbShnbG9iYWxfaGFuZGxlLCAwKTtcXG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmMtMzM3LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYz0zNDM9c3RhdGljIGludCBvcHRlZV9mZmFfc2htX3VucmVnaXN0ZXJfc3VwcChzdHJ1Y3QgdGVlX2NvbnRleHQgKmN0eCxcXG4tLVxcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYy0zNTgtXFx0bWVtX29wcyA9IG9wdGVlLVxcdTAwM2VmZmEuZmZhX2Rldi1cXHUwMDNlb3BzLVxcdTAwM2VtZW1fb3BzO1xcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYzozNTk6XFx0cmMgPSBtZW1fb3BzLVxcdTAwM2VtZW1vcnlfcmVjbGFpbShnbG9iYWxfaGFuZGxlLCAwKTtcXG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmMtMzYwLVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYz02ODI9c3RhdGljIGludCBvcHRlZV9mZmFfbGVuZF9wcm90bWVtKHN0cnVjdCBvcHRlZSAqb3B0ZWUsIHN0cnVjdCB0ZWVfc2htICpwcm90bWVtLFxcbi0tXFxuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jLTczNy1lcnJfcmVjbGFpbTpcXG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmM6NzM4OlxcdG1lbV9vcHMtXFx1MDAzZW1lbW9yeV9yZWNsYWltKGFyZ3MuZ19oYW5kbGUsIDApO1xcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYy03MzktXFx0cmV0dXJuIHJjO1xcbi0tXFxuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jPTc0Mj1zdGF0aWMgaW50IG9wdGVlX2ZmYV9yZWNsYWltX3Byb3RtZW0oc3RydWN0IG9wdGVlICpvcHRlZSxcXG4tLVxcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYy03NjItXFxuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jOjc2MzpcXHRyYyA9IG1lbV9vcHMtXFx1MDAzZW1lbW9yeV9yZWNsYWltKGdsb2JhbF9oYW5kbGUsIDApO1xcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYy03NjQtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy90ZWUvdHN0ZWUvY29yZS5jPTI0Mj1zdGF0aWMgaW50IHRzdGVlX3NobV9yZWdpc3RlcihzdHJ1Y3QgdGVlX2NvbnRleHQgKmN0eCwgc3RydWN0IHRlZV9zaG0gKnNobSxcXG4tLVxcbmRyaXZlcnMvdGVlL3RzdGVlL2NvcmUuYy0yODktXFx0aWYgKHJjKSB7XFxuZHJpdmVycy90ZWUvdHN0ZWUvY29yZS5jOjI5MDpcXHRcXHQodm9pZClmZmFfZGV2LVxcdTAwM2VvcHMtXFx1MDAzZW1lbV9vcHMtXFx1MDAzZW1lbW9yeV9yZWNsYWltKHNobS1cXHUwMDNlc2VjX3dvcmxkX2lkLFxcbmRyaXZlcnMvdGVlL3RzdGVlL2NvcmUuYy0yOTEtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIDApO1xcbi0tXFxuZHJpdmVycy90ZWUvdHN0ZWUvY29yZS5jLTI5OS1cXHRcXHRcXHRmZmFfYXJnc1tUU19SUENfUkVUUklFVkVfTUVNX1JQQ19TVEFUVVNdKTtcXG5kcml2ZXJzL3RlZS90c3RlZS9jb3JlLmM6MzAwOlxcdFxcdGZmYV9kZXYtXFx1MDAzZW9wcy1cXHUwMDNlbWVtX29wcy1cXHUwMDNlbWVtb3J5X3JlY2xhaW0oc2htLVxcdTAwM2VzZWNfd29ybGRfaWQsIDApO1xcbmRyaXZlcnMvdGVlL3RzdGVlL2NvcmUuYy0zMDEtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL3RlZS90c3RlZS9jb3JlLmM9MzA3PXN0YXRpYyBpbnQgdHN0ZWVfc2htX3VucmVnaXN0ZXIoc3RydWN0IHRlZV9jb250ZXh0ICpjdHgsIHN0cnVjdCB0ZWVfc2htICpzaG0pXFxuLS1cXG5kcml2ZXJzL3RlZS90c3RlZS9jb3JlLmMtMzM0LVxcbmRyaXZlcnMvdGVlL3RzdGVlL2NvcmUuYzozMzU6XFx0cmMgPSBmZmFfZGV2LVxcdTAwM2VvcHMtXFx1MDAzZW1lbV9vcHMtXFx1MDAzZW1lbW9yeV9yZWNsYWltKHNobS1cXHUwMDNlc2VjX3dvcmxkX2lkLCAwKTtcXG5kcml2ZXJzL3RlZS90c3RlZS9jb3JlLmMtMzM2LVxcbi0tXFxuaW5jbHVkZS9saW51eC9hcm1fZmZhLmg9NDc4PXN0cnVjdCBmZmFfbWVtX29wcyB7XFxuaW5jbHVkZS9saW51eC9hcm1fZmZhLmg6NDc5OlxcdGludCAoKm1lbW9yeV9yZWNsYWltKSh1NjQgZ19oYW5kbGUsIHUzMiBmbGFncyk7XFxuaW5jbHVkZS9saW51eC9hcm1fZmZhLmgtNDgwLVxcdGludCAoKm1lbW9yeV9zaGFyZSkoc3RydWN0IGZmYV9tZW1fb3BzX2FyZ3MgKmFyZ3MpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTI0NTQ9c3RhdGljIGlubGluZSBib29sIGt2bV9hcmNoX25vX3BvbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NTktXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjI0NjA6dm9pZCBrdm1fYXJjaF9ndWVzdF9tZW1vcnlfcmVjbGFpbWVkKHN0cnVjdCBrdm0gKmt2bSk7XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NjEtXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9NDk2Nz1zdGF0aWMgc3NpemVfdCBtZW1vcnlfb29tX2dyb3VwX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy00OTg4LVxcbm1tL21lbWNvbnRyb2wuYzo0OTg5OnN0YXRpYyBzc2l6ZV90IG1lbW9yeV9yZWNsYWltKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZiwgY2hhciAqYnVmLFxcbm1tL21lbWNvbnRyb2wuYy00OTkwLVxcdFxcdFxcdCAgICAgIHNpemVfdCBuYnl0ZXMsIGxvZmZfdCBvZmYpXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9NTAwMj1zdGF0aWMgc3RydWN0IGNmdHlwZSBtZW1vcnlfZmlsZXNbXSA9IHtcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy01MDcwLVxcdFxcdC5mbGFncyA9IENGVFlQRV9OU19ERUxFR0FUQUJMRSxcXG5tbS9tZW1jb250cm9sLmM6NTA3MTpcXHRcXHQud3JpdGUgPSBtZW1vcnlfcmVjbGFpbSxcXG5tbS9tZW1jb250cm9sLmMtNTA3Mi1cXHR9LFxcbi0tXFxuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5jPTM5MT1pbnQgYXZzX2lwY19nZXRfZndfY29uZmlnKHN0cnVjdCBhdnNfZGV2ICphZGV2LCBzdHJ1Y3QgYXZzX2Z3X2NmZyAqY2ZnKVxcbi0tXFxuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5jLTQxOC1cXHRcXHRjYXNlIEFWU19GV19DRkdfTUVNT1JZX1JFQ0xBSU1FRDpcXG5zb3VuZC9zb2MvaW50ZWwvYXZzL21lc3NhZ2VzLmM6NDE5OlxcdFxcdFxcdGNmZy1cXHUwMDNlbWVtb3J5X3JlY2xhaW1lZCA9ICp0bHYtXFx1MDAzZXZhbHVlO1xcbnNvdW5kL3NvYy9pbnRlbC9hdnMvbWVzc2FnZXMuYy00MjAtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5zb3VuZC9zb2MvaW50ZWwvYXZzL21lc3NhZ2VzLmg9NDYwPXN0cnVjdCBhdnNfZndfY2ZnIHtcXG5zb3VuZC9zb2MvaW50ZWwvYXZzL21lc3NhZ2VzLmgtNDYxLVxcdHN0cnVjdCBhdnNfZndfdmVyc2lvbiBmd192ZXJzaW9uO1xcbnNvdW5kL3NvYy9pbnRlbC9hdnMvbWVzc2FnZXMuaDo0NjI6XFx0dTMyIG1lbW9yeV9yZWNsYWltZWQ7XFxuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5oLTQ2My1cXHR1MzIgc2xvd19jbG9ja19mcmVxX2h6O1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz0xNTU9c3RhdGljIERFRklORV9QRVJfQ1BVKGNwdW1hc2tfdmFyX3QsIGNwdV9raWNrX21hc2spO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTU2LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MTU3Ol9fd2VhayB2b2lkIGt2bV9hcmNoX2d1ZXN0X21lbW9yeV9yZWNsYWltZWQoc3RydWN0IGt2bSAqa3ZtKVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTU4LXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9MzQxPXN0YXRpYyB2b2lkIGt2bV9mbHVzaF9zaGFkb3dfYWxsKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzQzLVxcdGt2bV9hcmNoX2ZsdXNoX3NoYWRvd19hbGwoa3ZtKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjM0NDpcXHRrdm1fYXJjaF9ndWVzdF9tZW1vcnlfcmVjbGFpbWVkKGt2bSk7XFxudmlydC9rdm0va3ZtX21haW4uYy0zNDUtfVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz03MjE9c3RhdGljIGludCBrdm1fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTc2NS1cXHRpZiAoa3ZtX2hhbmRsZV9odmFfcmFuZ2Uoa3ZtLCBcXHUwMDI2aHZhX3JhbmdlKS5mb3VuZF9tZW1zbG90KVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NzY2OlxcdFxcdGt2bV9hcmNoX2d1ZXN0X21lbW9yeV9yZWNsYWltZWQoa3ZtKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTc2Ny1cXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9MTc5OD1zdGF0aWMgdm9pZCBrdm1faW52YWxpZGF0ZV9tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTgyNC1cXHRrdm1fYXJjaF9mbHVzaF9zaGFkb3dfbWVtc2xvdChrdm0sIG9sZCk7XFxudmlydC9rdm0va3ZtX21haW4uYzoxODI1OlxcdGt2bV9hcmNoX2d1ZXN0X21lbW9yeV9yZWNsYWltZWQoa3ZtKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE4MjYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjU2Ljg0MjQyODAwN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzQ5MzAyMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byBNZW1vcnkgTWFuYWdlbWVudCAtIEEgUXVpY2sgQ2hlY2sqKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgbWVtb3J5X3JlY2xhaW1gIGZ1bmN0aW9uLiBUaGUgZmlyc3QgdGhpbmcgSSdtIGRvaW5nIGlzIGNvbmZpcm1pbmcgaXQgbGl2ZXMgd2l0aGluIGBtbS9tZW1jb250cm9sLmNgLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhbmQgSSBoYXZlIGEgZmFpcmx5IGdvb2QgbWVudGFsIG1hcCBvZiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLiBOb3csIGxldCdzIHNlZS4uLiBpcyBgQ09ORklHX01FTUNHYCB0aGUgb25seSBjb25maWd1cmF0aW9uIGtub2IgSSBuZWVkIHRvIGJlIGNvbmNlcm5lZCB3aXRoIGhlcmU/IFNvbWV0aW1lcywgdGhlcmUgYXJlIHN1YnRsZSBkZXBlbmRlbmNpZXMgb3IgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgZmVhdHVyZXMuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC4gSSBjYW4gYWxyZWFkeSBpbWFnaW5lIGFsbCB0aGUgcGxhY2VzIHRoaXMgc2luZ2xlIGNvbmZpZyBtaWdodCBpbXBhY3QsIGZyb20ga2VybmVsIG1lbW9yeSBhbGxvY2F0aW9uIHRvIHRoZSB1c2Ugb2YgY2dyb3Vwcy4gTGV0J3Mgc2VlIGlmIHRoaXMgb25lIGNvbmZpZyBpcyBpbmRlZWQgYWxsIHRoYXQgYXBwbGllcyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDMwLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjI6NTE6MDAuMDE3MzYwNDEyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjAxNzUxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfTUVNQ0dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vbWVtY29udHJvbC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL21lbWNvbnRyb2wuYz0yMDk9c3RhdGljIGlubGluZSBzdHJ1Y3Qgb2JqX2Nncm91cCAqX19tZW1jZ19yZXBhcmVudF9vYmpjZ3Moc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxcbi0tXFxubW0vbWVtY29udHJvbC5jLTIyOC1cXG5tbS9tZW1jb250cm9sLmM6MjI5OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5tbS9tZW1jb250cm9sLmMtMjMwLXN0YXRpYyB2b2lkIF9fbWVtX2Nncm91cF9mbHVzaF9zdGF0cyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGJvb2wgZm9yY2UpO1xcbi0tXFxubW0vbWVtY29udHJvbC5jPTUwNT11bnNpZ25lZCBsb25nIGxydXZlY19wYWdlX3N0YXRlX2xvY2FsKHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy01MjctXFxubW0vbWVtY29udHJvbC5jOjUyODojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxubW0vbWVtY29udHJvbC5jLTUyOS1zdGF0aWMgdm9pZCBfX21vZF9tZW1jZ19scnV2ZWNfc3RhdGUoc3RydWN0IG1lbV9jZ3JvdXBfcGVyX25vZGUgKnBuLFxcbi0tXFxubW0vbWVtY29udHJvbC5jPTU1Mz1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1lbWNnX3ZtX2V2ZW50X3N0YXRbXSA9IHtcXG5tbS9tZW1jb250cm9sLmM6NTU0OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5tbS9tZW1jb250cm9sLmMtNTU1LVxcdFBHUEdJTixcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz03ODc9c3RhdGljIGxvbmcgbWVtY2dfc3RhdGVfdmFsX2luX3BhZ2VzKGludCBpZHgsIGxvbmcgdmFsKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTgwMi1cXG5tbS9tZW1jb250cm9sLmM6ODAzOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5tbS9tZW1jb250cm9sLmMtODA0LS8qXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9ODcxPXZvaWQgbW9kX21lbWNnX3N0YXRlKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgZW51bSBtZW1jZ19zdGF0X2l0ZW0gaWR4LFxcbi0tXFxubW0vbWVtY29udHJvbC5jLTg4My1cXG5tbS9tZW1jb250cm9sLmM6ODg0OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5tbS9tZW1jb250cm9sLmMtODg1LS8qIGlkeCBjYW4gYmUgb2YgdHlwZSBlbnVtIG1lbWNnX3N0YXRfaXRlbSBvciBub2RlX3N0YXRfaXRlbS4gKi9cXG4tLVxcbm1tL21lbWNvbnRyb2wuYz0xMDU5PWJvb2wgbWVtY2dfdm1fZXZlbnRfaXRlbV92YWxpZChlbnVtIHZtX2V2ZW50X2l0ZW0gaWR4KVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTEwNjYtXFxubW0vbWVtY29udHJvbC5jOjEwNjc6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYy0xMDY4LXVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzX2xvY2FsKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KVxcbi0tXFxubW0vbWVtY29udHJvbC5jPTE2Njc9dW5zaWduZWQgbG9uZyBtZW1jZ19wYWdlX3N0YXRlX291dHB1dChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGludCBpdGVtKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTE2NzItXFxubW0vbWVtY29udHJvbC5jOjE2NzM6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYy0xNjc0LXVuc2lnbmVkIGxvbmcgbWVtY2dfcGFnZV9zdGF0ZV9sb2NhbF9vdXRwdXQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgaXRlbSlcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz0xNjkzPXN0YXRpYyB2b2lkIG1lbWNnX3N0YXRfZm9ybWF0KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgc3RydWN0IHNlcV9idWYgKnMpXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtMTczOS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShtZW1jZ192bV9ldmVudF9zdGF0KTsgaSsrKSB7XFxubW0vbWVtY29udHJvbC5jOjE3NDA6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYy0xNzQxLVxcdFxcdGlmIChtZW1jZ192bV9ldmVudF9zdGF0W2ldID09IFBHUEdJTiB8fFxcbi0tXFxubW0vbWVtY29udHJvbC5jPTE3OTE9dm9pZCBtZW1fY2dyb3VwX3ByaW50X29vbV9tZW1pbmZvKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZylcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0xODEyLVxcdFxcdFxcdGF0b21pY19sb25nX3JlYWQoXFx1MDAyNm1lbWNnLVxcdTAwM2VtZW1vcnlfZXZlbnRzW01FTUNHX1NXQVBfTUFYXSkpO1xcbm1tL21lbWNvbnRyb2wuYzoxODEzOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5tbS9tZW1jb250cm9sLmMtMTgxNC1cXHRlbHNlIHtcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz0yODAwPXN0YXRpYyB2b2lkIGNvbW1pdF9jaGFyZ2Uoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IG9ial9jZ3JvdXAgKm9iamNnKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTI4MTItXFxubW0vbWVtY29udHJvbC5jOjI4MTM6I2lmZGVmIENPTkZJR19NRU1DR19OTUlfU0FGRVRZX1JFUVVJUkVTX0FUT01JQ1xcbm1tL21lbWNvbnRyb2wuYy0yODE0LXN0YXRpYyBpbmxpbmUgdm9pZCBhY2NvdW50X3NsYWJfbm1pX3NhZmUoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxcbi0tXFxubW0vbWVtY29udHJvbC5jPTI5ODY9X19hbHdheXNfaW5saW5lIHN0cnVjdCBvYmpfY2dyb3VwICpjdXJyZW50X29ial9jZ3JvdXAodm9pZClcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0yOTkxLVxcbm1tL21lbWNvbnRyb2wuYzoyOTkyOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19NRU1DR19OTUlfVU5TQUZFKSBcXHUwMDI2XFx1MDAyNiBpbl9ubWkoKSlcXG5tbS9tZW1jb250cm9sLmMtMjk5My1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz0zMDMyPXN0cnVjdCBvYmpfY2dyb3VwICpnZXRfb2JqX2Nncm91cF9mcm9tX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtMzA0Mi1cXG5tbS9tZW1jb250cm9sLmM6MzA0MzojaWZkZWYgQ09ORklHX01FTUNHX05NSV9TQUZFVFlfUkVRVUlSRVNfQVRPTUlDXFxubW0vbWVtY29udHJvbC5jLTMwNDQtc3RhdGljIGlubGluZSB2b2lkIGFjY291bnRfa21lbV9ubWlfc2FmZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGludCB2YWwpXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9NDE1Nz1tZW1fY2dyb3VwX2Nzc19hbGxvYyhzdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqcGFyZW50X2NzcylcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy00MTgwLVxcdFxcdHBhZ2VfY291bnRlcl9pbml0KFxcdTAwMjZtZW1jZy1cXHUwMDNlc3dhcCwgXFx1MDAyNnBhcmVudC1cXHUwMDNlc3dhcCwgZmFsc2UpO1xcbm1tL21lbWNvbnRyb2wuYzo0MTgxOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5tbS9tZW1jb250cm9sLmMtNDE4Mi1cXHRcXHRtZW1jZy1cXHUwMDNlbWVtb3J5LnRyYWNrX2ZhaWxjbnQgPSAhbWVtY2dfb25fZGZsO1xcbi0tXFxubW0vbWVtY29udHJvbC5jLTQxOTEtXFx0XFx0cGFnZV9jb3VudGVyX2luaXQoXFx1MDAyNm1lbWNnLVxcdTAwM2Vzd2FwLCBOVUxMLCBmYWxzZSk7XFxubW0vbWVtY29udHJvbC5jOjQxOTI6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYy00MTkzLVxcdFxcdHBhZ2VfY291bnRlcl9pbml0KFxcdTAwMjZtZW1jZy1cXHUwMDNla21lbSwgTlVMTCwgZmFsc2UpO1xcbi0tXFxubW0vbWVtY29udHJvbC5jPTQzNTk9c3RhdGljIHZvaWQgbWVtX2Nncm91cF9jc3NfcmVzZXQoc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUgKmNzcylcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy00MzY0LVxcdHBhZ2VfY291bnRlcl9zZXRfbWF4KFxcdTAwMjZtZW1jZy1cXHUwMDNlc3dhcCwgUEFHRV9DT1VOVEVSX01BWCk7XFxubW0vbWVtY29udHJvbC5jOjQzNjU6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYy00MzY2LVxcdHBhZ2VfY291bnRlcl9zZXRfbWF4KFxcdTAwMjZtZW1jZy1cXHUwMDNla21lbSwgUEFHRV9DT1VOVEVSX01BWCk7XFxuLS1cXG5tbS9tZW1jb250cm9sLmM9NDM5ND1zdGF0aWMgdm9pZCBtZW1fY2dyb3VwX3N0YXRfYWdncmVnYXRlKHN0cnVjdCBhZ2dyZWdhdGVfY29udHJvbCAqYWMpXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtNDQyOS1cXG5tbS9tZW1jb250cm9sLmM6NDQzMDojaWZkZWYgQ09ORklHX01FTUNHX05NSV9TQUZFVFlfUkVRVUlSRVNfQVRPTUlDXFxubW0vbWVtY29udHJvbC5jLTQ0MzEtc3RhdGljIHZvaWQgZmx1c2hfbm1pX3N0YXRzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgc3RydWN0IG1lbV9jZ3JvdXAgKnBhcmVudCxcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz01MDc2PXN0cnVjdCBjZ3JvdXBfc3Vic3lzIG1lbW9yeV9jZ3JwX3N1YnN5cyA9IHtcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy01MDg3LVxcdC5kZmxfY2Z0eXBlcyA9IG1lbW9yeV9maWxlcyxcXG5tbS9tZW1jb250cm9sLmM6NTA4ODojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxubW0vbWVtY29udHJvbC5jLTUwODktXFx0LmxlZ2FjeV9jZnR5cGVzID0gbWVtX2Nncm91cF9sZWdhY3lfZmlsZXMsXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9NjAyMj1zdGF0aWMgaW50IF9faW5pdCBtZW1fY2dyb3VwX3N3YXBfaW5pdCh2b2lkKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTYwMjctXFx0V0FSTl9PTihjZ3JvdXBfYWRkX2RmbF9jZnR5cGVzKFxcdTAwMjZtZW1vcnlfY2dycF9zdWJzeXMsIHN3YXBfZmlsZXMpKTtcXG5tbS9tZW1jb250cm9sLmM6NjAyODojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxubW0vbWVtY29udHJvbC5jLTYwMjktXFx0V0FSTl9PTihjZ3JvdXBfYWRkX2xlZ2FjeV9jZnR5cGVzKFxcdTAwMjZtZW1vcnlfY2dycF9zdWJzeXMsIG1lbXN3X2ZpbGVzKSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUxOjAwLjA5OTM4MzQ5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MjU0MzUzMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgTWVtb3J5IENvbnRyb2wgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkZWFsaW5nIHdpdGggYG1tL21lbWNvbnRyb2wuY2AgYW5kIGtub3cgaXQgb25seSBnZXRzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19NRU1DR2AgaXMgc2V0LiBOb3cgSSBuZWVkIHRvIHNlZSAqaG93KiB0aGF0IGxpbmthZ2UgaXMgZXN0YWJsaXNoZWQgd2l0aGluIHRoZSBidWlsZCBzeXN0ZW0uIFRoZSBuYXR1cmFsIHBsYWNlIHRvIGxvb2sgaXMgdGhlIGBtbS9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSBhbGwgdGhlIGNvbXBpbGF0aW9uIHJ1bGVzIGFuZCBkZXBlbmRlbmNpZXMgZm9yIG1lbW9yeSBtYW5hZ2VtZW50IHNvdXJjZSBmaWxlcyBhcmUgZGVmaW5lZC4gTGV0J3MgZGlnIGluIGFuZCBzZWUgcHJlY2lzZWx5IGhvdyB0aGF0IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGlzIGhhbmRsZWQuIEkgZXhwZWN0IHRvIGZpbmQgYSBgb2JqLSQoQ09ORklHX01FTUNHKSArPSBtZW1jb250cm9sLm9gIG9yIHNvbWV0aGluZyBzaW1pbGFyIGluIHRoYXQgYE1ha2VmaWxlYC4gTGV0J3MgY29uZmlybSB0aGF0IGFuZCBtb3ZlIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjQzLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjI6NTE6MDMuMDI0ODIxMTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3ODgyMTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbWNvbnRyb2xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vTWFrZWZpbGU9Mjc9S0NPVl9JTlNUUlVNRU5UX2ttZW1sZWFrLm8gOj0gblxcbm1tL01ha2VmaWxlOjI4OktDT1ZfSU5TVFJVTUVOVF9tZW1jb250cm9sLm8gOj0gblxcbm1tL01ha2VmaWxlOjI5OktDT1ZfSU5TVFJVTUVOVF9tZW1jb250cm9sLXYxLm8gOj0gblxcbm1tL01ha2VmaWxlLTMwLUtDT1ZfSU5TVFJVTUVOVF9tbXpvbmUubyA6PSBuXFxuLS1cXG5tbS9NYWtlZmlsZT0xMDM9b2JqLSQoQ09ORklHX0xJVkVVUERBVEVfTUVNRkQpICs9IG1lbWZkX2x1by5vXFxubW0vTWFrZWZpbGU6MTA0Om9iai0kKENPTkZJR19NRU1DR19WMSkgKz0gbWVtY29udHJvbC12MS5vXFxubW0vTWFrZWZpbGU6MTA1Om9iai0kKENPTkZJR19NRU1DRykgKz0gbWVtY29udHJvbC5vIHZtcHJlc3N1cmUub1xcbm1tL01ha2VmaWxlLTEwNi1pZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5tbS9NYWtlZmlsZToxMDc6b2JqLSQoQ09ORklHX01FTUNHKSArPSBicGZfbWVtY29udHJvbC5vXFxubW0vTWFrZWZpbGUtMTA4LWVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUxOjAzLjA4MjcwNzQ2OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzc5OTMyMTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnVuZHJ1bSoqXG5cbkFscmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYENPTkZJR19NRU1DR2AgaXMgZGVmaW5pdGVseSB0aGUga2V5IGhlcmUsIG5vIGRvdWJ0IGFib3V0IHRoYXQuIEJ1dCBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBwaWVjZXMuIFdoYXQgYWJvdXQgYENPTkZJR19TWVNGU2AgYW5kIGBDT05GSUdfTlVNQWA/IERvIHRob3NlIGNvbWUgaW50byBwbGF5IGZvciB0aGUgYHJlY2xhaW1fc3RvcmVgIGZ1bmN0aW9uPyBJIGtub3cgdGhleSdyZSBvZnRlbiBpbnRlcmNvbm5lY3RlZCB3aXRoIG1lbW9yeSBtYW5hZ2VtZW50LCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy4gQmVzdCB3YXkgdG8gZmlndXJlIHRoaXMgb3V0IGlzIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGl0c2VsZi4gVGltZSB0byBjaGVjayBgbW0vdm1zY2FuLmNgLiBMZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIGluIHRoZXJlIGFuZCBtYWtlIHN1cmUgSSBoYXZlIGFsbCB0aGUgcmVsZXZhbnQgY29uZmlncyBjb3ZlcmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDY5NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUxOjA2LjQ2MjY0MjExWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njk3NTcxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZWNsYWltX3N0b3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3Ztc2Nhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3Ztc2Nhbi5jPTgwMTU9RVhQT1JUX1NZTUJPTF9HUEwoY2hlY2tfbW92ZV91bmV2aWN0YWJsZV9mb2xpb3MpO1xcbi0tXFxubW0vdm1zY2FuLmMtODAxNy0jaWYgZGVmaW5lZChDT05GSUdfU1lTRlMpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX05VTUEpXFxubW0vdm1zY2FuLmM6ODAxODpzdGF0aWMgc3NpemVfdCByZWNsYWltX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG5tbS92bXNjYW4uYy04MDE5LVxcdFxcdFxcdCAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUxOjA2LjUxOTYyMzEwOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mjg5MjY4OTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgU3RyYXRlZ3kqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGEgZnV6emluZyBzdHJhdGVneS4gVGhlIGtleSBoZXJlIGlzIHRoZSBjb21iaW5hdGlvbiBvZiBgQ09ORklHX1NZU0ZTYCBhbmQgYENPTkZJR19OVU1BYCwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyB0YXJnZXRzIGEgZmFpcmx5IHNwZWNpZmljLCBidXQgY3JpdGljYWwsIHNlY3Rpb24gb2YgdGhlIGtlcm5lbC5cblxuTGV0J3MgYnJlYWsgdGhpcyBkb3duOiBgV29ydGhGdXp6aW5nYCBpcyBzZXQgdG8gYHRydWVgLCB3aGljaCBpcyB0aGUgY29ycmVjdCBhc3Nlc3NtZW50IGdpdmVuIHRoZSBjaGFuZ2VzLiBUaGUgYEZvY3VzU3ltYm9sc2AgYXJlIHNwb3Qgb24g4oCTIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCwgYHNob3VsZF9hYm9ydF9zY2FuYCwgYG1lbW9yeV9yZWNsYWltYCwgYW5kIGByZWNsYWltX3N0b3JlYCBhcmUgZGlyZWN0bHkgaW1wYWN0ZWQgYnkgdGhlIHBhdGNoLiBUaG9zZSBhcmUgKmV4YWN0bHkqIHRoZSBmdW5jdGlvbnMgSSB3b3VsZCB0YXJnZXQuIFRoZSByYXRpb25hbGUgYmVoaW5kIHRoYXQgbGlzdCBvZiBmdW5jdGlvbnMgaXMgY29ycmVjdC5cblxuTm93LCB0aGUgYEVuYWJsZUNvbmZpZ3NgOiBgTUVNQ0dgLCBgTlVNQWAsIGFuZCBgU1lTRlNgIGFyZSBhbGwgZXNzZW50aWFsIGZvciB0cmlnZ2VyaW5nIHRoZSBjb2RlIHBhdGhzIG9mIGludGVyZXN0LiBUaGUgcmVhc29uaW5nIGhpdHMgdGhlIG5haWwgb24gdGhlIGhlYWQ6IHRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyBob3cgdGhlc2UgZnVuY3Rpb25zIGhhbmRsZSBzaWduYWxzIGFuZCBpbnRlcmFjdCB3aXRoIHRoZSBjZ3JvdXAgdjIgbWVtb3J5IHJlY2xhaW0gbWVjaGFuaXNtIGFuZCB0aGUgc3lzZnMgcmVjbGFpbSBpbnRlcmZhY2UuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgc2lnbmFsIGhhbmRsaW5nIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQsIHdoaWNoIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgZ29hbCBpcyB0byBlbnN1cmUgdGhhdCB0aGUgbmV3IHNpZ25hbCBoYW5kbGluZyBsb2dpYyBmdW5jdGlvbnMgY29ycmVjdGx5IGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgaW5zdGFiaWxpdHkgb3IgdnVsbmVyYWJpbGl0aWVzLiBUaGlzIGlzIGEgdmVyeSB0YXJnZXRlZCBhbmQgaW50ZWxsaWdlbnQgYXBwcm9hY2ggdG8gZnV6emluZyBhIGNyaXRpY2FsIGtlcm5lbCBmdW5jdGlvbi4gV2Ugc2hvdWxkIGRlZmluaXRlbHkgcHJpb3JpdGl6ZSB0aGlzIHN0cmF0ZWd5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTAzOCwiT3V0cHV0VG9rZW5zIjoxNjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjI6NTE6MTEuODA4ODk0MjkxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODEzODM1ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FTUNHXCIsXG4gICAgXCJOVU1BXCIsXG4gICAgXCJTWVNGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVzZXJfcHJvYWN0aXZlX3JlY2xhaW1cIixcbiAgICBcInNob3VsZF9hYm9ydF9zY2FuXCIsXG4gICAgXCJtZW1vcnlfcmVjbGFpbVwiLFxuICAgIFwicmVjbGFpbV9zdG9yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGJlaGF2aW9yIG9mIHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0gYW5kIHNob3VsZF9hYm9ydF9zY2FuIHRvIGhhbmRsZSBzaWduYWxzIGJ5IHJldHVybmluZyAtRVJFU1RBUlRTWVMgYW5kIGFib3J0aW5nIHRoZSBzY2FuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgY2dyb3VwIHYyIG1lbW9yeS5yZWNsYWltIG9yIHN5c2ZzIHJlY2xhaW0gaW50ZXJmYWNlLiBGdXp6aW5nIHRoZXNlIHBhdGhzIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG5ldyBzaWduYWwgaGFuZGxpbmcgbG9naWMgd29ya3MgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FTUNHXCIsXG4gICAgXCJOVU1BXCIsXG4gICAgXCJTWVNGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVzZXJfcHJvYWN0aXZlX3JlY2xhaW1cIixcbiAgICBcInNob3VsZF9hYm9ydF9zY2FuXCIsXG4gICAgXCJtZW1vcnlfcmVjbGFpbVwiLFxuICAgIFwicmVjbGFpbV9zdG9yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGJlaGF2aW9yIG9mIHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0gYW5kIHNob3VsZF9hYm9ydF9zY2FuIHRvIGhhbmRsZSBzaWduYWxzIGJ5IHJldHVybmluZyAtRVJFU1RBUlRTWVMgYW5kIGFib3J0aW5nIHRoZSBzY2FuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgY2dyb3VwIHYyIG1lbW9yeS5yZWNsYWltIG9yIHN5c2ZzIHJlY2xhaW0gaW50ZXJmYWNlLiBGdXp6aW5nIHRoZXNlIHBhdGhzIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG5ldyBzaWduYWwgaGFuZGxpbmcgbG9naWMgd29ya3MgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowvbgs5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-17 22:19:08 +0000 UTC FinishedAt: 2026-07-17 22:51:13 +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": "f4513f332d035a6168418e99820d0f2c7420fc77", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMCG", "NUMA", "SYSFS" ], "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": "f4513f332d035a6168418e99820d0f2c7420fc77", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMCG", "NUMA", "SYSFS" ], "series_id": "c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "user_proactive_reclaim", "should_abort_scan", "memory_reclaim", "reclaim_store" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE3IDIyOjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTUNHJiMzNDssCiAgICAmIzM0O05VTUEmIzM0OywKICAgICYjMzQ7U1lTRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1c2VyX3Byb2FjdGl2ZV9yZWNsYWltJiMzNDssCiAgICAmIzM0O3Nob3VsZF9hYm9ydF9zY2FuJiMzNDssCiAgICAmIzM0O21lbW9yeV9yZWNsYWltJiMzNDssCiAgICAmIzM0O3JlY2xhaW1fc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgYmVoYXZpb3Igb2YgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbSBhbmQgc2hvdWxkX2Fib3J0X3NjYW4gdG8gaGFuZGxlIHNpZ25hbHMgYnkgcmV0dXJuaW5nIC1FUkVTVEFSVFNZUyBhbmQgYWJvcnRpbmcgdGhlIHNjYW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBjZ3JvdXAgdjIgbWVtb3J5LnJlY2xhaW0gb3Igc3lzZnMgcmVjbGFpbSBpbnRlcmZhY2UuIEZ1enppbmcgdGhlc2UgcGF0aHMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGUgbmV3IHNpZ25hbCBoYW5kbGluZyBsb2dpYyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIyOjUwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjlkMjQ5ZTFmMjUxOWFlN2RlOTJkOWZhMWRlYzA4YWMyMjVhNzEyZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDE3IDIyOjUwOjMzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmNcbmluZGV4IDM1YzNiYjE1YWU5NmEzLi4wZmRhODExZmNiMDUxNyAxMDA2NDRcbi0tLSBhL21tL3Ztc2Nhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS92bXNjYW4uY1xuQEAgLTQ5MjksNiAmIzQzOzQ5MjksOSBAQCBzdGF0aWMgYm9vbCBzaG91bGRfYWJvcnRfc2NhbihzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjKVxuIFx0aW50IGk7XG4gXHRlbnVtIHpvbmVfd2F0ZXJtYXJrcyBtYXJrO1xuIFxuJiM0MztcdGlmICh1bmxpa2VseShzYy1cdTAwM2Vwcm9hY3RpdmUgXHUwMDI2XHUwMDI2IHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSlcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcbiBcdGlmIChzYy1cdTAwM2Vucl9yZWNsYWltZWQgXHUwMDNlPSBtYXgoc2MtXHUwMDNlbnJfdG9fcmVjbGFpbSwgY29tcGFjdF9nYXAoc2MtXHUwMDNlb3JkZXIpKSlcbiBcdFx0cmV0dXJuIHRydWU7XG4gXG5AQCAtNzkwOSw4ICYjNDM7NzkxMiwxNCBAQCBpbnQgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbShjaGFyICpidWYsXG4gXHRcdHVuc2lnbmVkIGxvbmcgYmF0Y2hfc2l6ZSA9IChucl90b19yZWNsYWltIC0gbnJfcmVjbGFpbWVkKSAvIDQ7XG4gXHRcdHVuc2lnbmVkIGxvbmcgcmVjbGFpbWVkO1xuIFxuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIFJldHVybiAtRVJFU1RBUlRTWVMgdG8gYWxsb3cgdGhlIGZyZWV6ZXIgdG8gaW50ZXJydXB0IHRoZVxuJiM0MztcdFx0ICogdGFzay4gVGhlIHN5c2NhbGwgd2lsbCBiZSB0cmFuc3BhcmVudGx5IHJlc3RhcnRlZCB1cG9uXG4mIzQzO1x0XHQgKiByZXN1bWUuIFJlYWwgc2lnbmFscyAoZS5nLiBTSUdJTlQpIHdpbGwgYmUgYXV0b21hdGljYWxseVxuJiM0MztcdFx0ICogY29udmVydGVkIHRvIC1FSU5UUiBieSB0aGUgc2lnbmFsIGxheWVyLlxuJiM0MztcdFx0ICovXG4gXHRcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSlcbi1cdFx0XHRyZXR1cm4gLUVJTlRSO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVSRVNUQVJUU1lTO1xuIFxuIFx0XHQvKlxuIFx0XHQgKiBUaGlzIGlzIHRoZSBmaW5hbCBhdHRlbXB0LCBkcmFpbiBwZXJjcHUgbHJ1IGNhY2hlcyBpbiB0aGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMjo1MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRU1DRyYjMzQ7LAogICAgJiMzNDtOVU1BJiMzNDssCiAgICAmIzM0O1NZU0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXNlcl9wcm9hY3RpdmVfcmVjbGFpbSYjMzQ7LAogICAgJiMzNDtzaG91bGRfYWJvcnRfc2NhbiYjMzQ7LAogICAgJiMzNDttZW1vcnlfcmVjbGFpbSYjMzQ7LAogICAgJiMzNDtyZWNsYWltX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIGJlaGF2aW9yIG9mIHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0gYW5kIHNob3VsZF9hYm9ydF9zY2FuIHRvIGhhbmRsZSBzaWduYWxzIGJ5IHJldHVybmluZyAtRVJFU1RBUlRTWVMgYW5kIGFib3J0aW5nIHRoZSBzY2FuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgY2dyb3VwIHYyIG1lbW9yeS5yZWNsYWltIG9yIHN5c2ZzIHJlY2xhaW0gaW50ZXJmYWNlLiBGdXp6aW5nIHRoZXNlIHBhdGhzIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG5ldyBzaWduYWwgaGFuZGxpbmcgbG9naWMgd29ya3MgY29ycmVjdGx5IGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjlkMjQ5ZTFmMjUxOWFlN2RlOTJkOWZhMWRlYzA4YWMyMjVhNzEyZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDE3IDIyOjUwOjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uYwppbmRleCAzNWMzYmIxNWFlOTZhMy4uMGZkYTgxMWZjYjA1MTcgMTAwNjQ0Ci0tLSBhL21tL3Ztc2Nhbi5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL3Ztc2Nhbi5jCkBAIC00OTI5LDYgJiM0Mzs0OTI5LDkgQEAgc3RhdGljIGJvb2wgc2hvdWxkX2Fib3J0X3NjYW4oc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYykKIAlpbnQgaTsKIAllbnVtIHpvbmVfd2F0ZXJtYXJrcyBtYXJrOwogCiYjNDM7CWlmICh1bmxpa2VseShzYy0mZ3Q7cHJvYWN0aXZlICZhbXA7JmFtcDsgc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpKQomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CiAJaWYgKHNjLSZndDtucl9yZWNsYWltZWQgJmd0Oz0gbWF4KHNjLSZndDtucl90b19yZWNsYWltLCBjb21wYWN0X2dhcChzYy0mZ3Q7b3JkZXIpKSkKIAkJcmV0dXJuIHRydWU7CiAKQEAgLTc5MDksOCAmIzQzOzc5MTIsMTQgQEAgaW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLAogCQl1bnNpZ25lZCBsb25nIGJhdGNoX3NpemUgPSAobnJfdG9fcmVjbGFpbSAtIG5yX3JlY2xhaW1lZCkgLyA0OwogCQl1bnNpZ25lZCBsb25nIHJlY2xhaW1lZDsKIAomIzQzOwkJLyoKJiM0MzsJCSAqIFJldHVybiAtRVJFU1RBUlRTWVMgdG8gYWxsb3cgdGhlIGZyZWV6ZXIgdG8gaW50ZXJydXB0IHRoZQomIzQzOwkJICogdGFzay4gVGhlIHN5c2NhbGwgd2lsbCBiZSB0cmFuc3BhcmVudGx5IHJlc3RhcnRlZCB1cG9uCiYjNDM7CQkgKiByZXN1bWUuIFJlYWwgc2lnbmFscyAoZS5nLiBTSUdJTlQpIHdpbGwgYmUgYXV0b21hdGljYWxseQomIzQzOwkJICogY29udmVydGVkIHRvIC1FSU5UUiBieSB0aGUgc2lnbmFsIGxheWVyLgomIzQzOwkJICovCiAJCWlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkKLQkJCXJldHVybiAtRUlOVFI7CiYjNDM7CQkJcmV0dXJuIC1FUkVTVEFSVFNZUzsKIAogCQkvKgogCQkgKiBUaGlzIGlzIHRoZSBmaW5hbCBhdHRlbXB0LCBkcmFpbiBwZXJjcHUgbHJ1IGNhY2hlcyBpbiB0aGUKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxMQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBWTSBTY2FuIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbW0vdm1zY2FuLmNgLiBJdCYjMzk7cyBwcmV0dHkgZm9jdXNlZDsgdGhlIGNoYW5nZXMgemVybyBpbiBvbiBgc2hvdWxkX2Fib3J0X3NjYW5gIGFuZCBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAuIFJpZ2h0IGF3YXksIHRoZSBhZGRpdGlvbiB0byBgc2hvdWxkX2Fib3J0X3NjYW5gIGNhdGNoZXMgbXkgZXllOiBhIGNoZWNrIGZvciBgc2lnbmFsX3BlbmRpbmcoY3VycmVudClgICpvbmx5KiB3aGVuIHRoZSBzY2FuIGlzICYjMzQ7cHJvYWN0aXZlJiMzNDsuIFNvLCBpZiBhIHNpZ25hbCBpcyBwZW5kaW5nIG9uIHRoZSBjdXJyZW50IHByb2Nlc3MgYW5kIHRoZSBzY2FuIGlzIHByb2FjdGl2ZSwgd2UmIzM5O3JlIGJhaWxpbmcgb3V0LiBUaGlzIHNlZW1zIHRvIGJlIHNvbWUgZm9ybSBvZiBlYXJseSB0ZXJtaW5hdGlvbiBvciBwcmlvcml0aXphdGlvbiwgbGlrZWx5IGluIHJlc3BvbnNlIHRvIGEgdXNlci1pbml0aWF0ZWQgYWN0aW9uLiBXZSYjMzk7cmUgcmV0dXJuaW5nIHRydWUuCgpOb3csIGxldCYjMzk7cyBkaWcgaW50byBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAuIFRoZSBrZXkgaGVyZSBpcyB0aGUgY2hhbmdlIGZyb20gYC1FSU5UUmAgdG8gYC1FUkVTVEFSVFNZU2Agd2hlbiBhIHNpZ25hbCBpcyBwZW5kaW5nLiBUaGUgY29tbWVudCBjbGFyaWZpZXMgdGhpczogYC1FUkVTVEFSVFNZU2AgaXMgYmVpbmcgcmV0dXJuZWQgc3BlY2lmaWNhbGx5IHRvIGFsbG93IHRoZSBmcmVlemVyIHRvIGludGVycnVwdCB0aGUgdGFzayBjbGVhbmx5LiBUaGUgcGF0Y2ggYXV0aG9yIGlzIGJlaW5nIHZlcnkgdGhvdWdodGZ1bCBoZXJlLCBleHBsYWluaW5nIGhvdyByZWFsIHNpZ25hbHMgYXJlIGhhbmRsZWQgYnkgdGhlIHNpZ25hbCBsYXllci4gVGhpcyBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgc2l0dWF0aW9uIHdoZXJlIGEgdGFzayBtaWdodCBiZSBwcm9hY3RpdmVseSByZWNsYWltaW5nIG1lbW9yeSwgYW5kIGEgdXNlciBvciBzeXN0ZW0tbGV2ZWwgc2lnbmFsIChsaWtlIGEgZnJlZXplIG9yIGEgdGVybWluYXRpb24gcmVxdWVzdCkgbmVlZHMgdG8gdGFrZSBwcmVjZWRlbmNlICp3aXRob3V0KiBsb3NpbmcgdGhlIG9yaWdpbmFsIHN5c2NhbGwuIEl04oCZcyBhbHNvIGludGVyZXN0aW5nIHRoYXQgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgc2lnbmFsIGhhbmRsaW5nIGluIHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9ucy4KClRoZSBmYWN0IHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgaW4gdGhlIHNjYW5uaW5nIGFuZCByZWNsYWltaW5nIGNvZGUgbWFrZXMgbWUgdGhpbmsgdGhhdCBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAgaXMgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgY2dyb3VwIHYyIGBtZW1vcnkucmVjbGFpbWAgaW50ZXJmYWNlLiBUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIHJlZmluaW5nIGhvdyBwcm9hY3RpdmUgbWVtb3J5IHJlY2xhbWF0aW9uIGlzIGhhbmRsZWQgaW4gdGhlIHByZXNlbmNlIG9mIHNpZ25hbHMgYW5kIHVzZXIgaW50ZXJhY3Rpb24sIHBhcnRpY3VsYXJseSB3aGVuIHRob3NlIHNpZ25hbHMgbWlnaHQgaW52b2x2ZSBmcmVlemluZyBvciBpbnRlcnJ1cHRpbmcgYSBwcm9jZXNzLiBUaGlzIGlzIGEgc29saWQgcGllY2Ugb2Ygd29yazsgdGhlIGxvZ2ljIGlzIHByZXR0eSBjbGVhci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMjo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1c2VyX3Byb2FjdGl2ZV9yZWNsYWltJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2ludGVybmFsLmg9NjI0PWV4dGVybiB2b2lkIHJlY2xhaW1fdGhyb3R0bGUocGdfZGF0YV90ICpwZ2RhdCwgZW51bSB2bXNjYW5fdGhyb3R0bGVfc3RhdGUgcmVhc29uKTtcbm1tL2ludGVybmFsLmg6NjI1OmludCB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltKGNoYXIgKmJ1Zixcbm1tL2ludGVybmFsLmgtNjI2LVx0XHRcdCAgIHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgcGdfZGF0YV90ICpwZ2RhdCk7XG4tLVxubW0vbWVtY29udHJvbC5jPTQ5ODk9c3RhdGljIHNzaXplX3QgbWVtb3J5X3JlY2xhaW0oc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBjaGFyICpidWYsXG4tLVxubW0vbWVtY29udHJvbC5jLTQ5OTQtXG5tbS9tZW1jb250cm9sLmM6NDk5NTpcdHJldCA9IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oYnVmLCBtZW1jZywgTlVMTCk7XG5tbS9tZW1jb250cm9sLmMtNDk5Ni1cdGlmIChyZXQpXG4tLVxubW0vdm1zY2FuLmM9Nzg2Mz1zdGF0aWMgY29uc3QgbWF0Y2hfdGFibGVfdCB0b2tlbnMgPSB7XG4tLVxubW0vdm1zY2FuLmMtNzg2OC1cbm1tL3Ztc2Nhbi5jOjc4Njk6aW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLFxubW0vdm1zY2FuLmMtNzg3MC1cdFx0XHQgICBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHBnX2RhdGFfdCAqcGdkYXQpXG4tLVxubW0vdm1zY2FuLmM9ODAxOD1zdGF0aWMgc3NpemVfdCByZWNsYWltX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5tbS92bXNjYW4uYy04MDIzLVxubW0vdm1zY2FuLmM6ODAyNDpcdHJldCA9IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oKGNoYXIgKilidWYsIE5VTEwsIE5PREVfREFUQShuaWQpKTtcbm1tL3Ztc2Nhbi5jLTgwMjUtXHRyZXR1cm4gcmV0ID8gLUVBR0FJTiA6IGNvdW50O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIyOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTcKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAzMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLZXJuZWwmIzM5O3MgTWVtb3J5IFJlY2xhaW0gQmVoYXZpb3IqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhvdyBpdCBjaGFuZ2VzIHRoZSBtZW1vcnkgcmVjbGFpbSBwcm9jZXNzIGluIHRoZSBrZXJuZWwsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIHVzZXItaW5pdGlhdGVkIHByb2FjdGl2ZSByZWNsYWltLiBJdCBzZWVtcyBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLCBjYWxsZWQgZnJvbSBgbWVtb3J5X3JlY2xhaW1gIGluIGBtbS9tZW1jb250cm9sLmNgIGFuZCBhbHNvIGZyb20gYHJlY2xhaW1fc3RvcmVgIGluIGBtbS92bXNjYW4uY2AuICBgbWVtb3J5X3JlY2xhaW1gIGhhbmRsZXMgdGhlIGBtZW1vcnkucmVjbGFpbWAgY2dyb3VwIHYyIGZpbGUsIHdoaWxlIGByZWNsYWltX3N0b3JlYCBtYW5hZ2VzIHRoZSBgL3N5cy9kZXZpY2VzL3N5c3RlbS9ub2RlL25vZGVYL3JlY2xhaW1gIHN5c2ZzIGZpbGUuCgpUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGhpbmdlIG9uIGhvdyBpdCBoYW5kbGVzIHNpZ25hbHMgZHVyaW5nIHRoZSByZWNsYWltIHByb2Nlc3MuICBTcGVjaWZpY2FsbHksIGl0IG1ha2VzIGBzaG91bGRfYWJvcnRfc2NhbmAgYWJvcnQgaWYgYSBwcm9hY3RpdmUgc2NhbiBpcyBoYXBwZW5pbmcgKGBzYy0mZ3Q7cHJvYWN0aXZlYCkgYW5kIHRoZSBjdXJyZW50IHRhc2sgaGFzIGEgcGVuZGluZyBzaWduYWwgKGBzaWduYWxfcGVuZGluZyhjdXJyZW50KWApLiAgRnVydGhlcm1vcmUsIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCBpcyBub3cgc2V0IHRvIHJldHVybiBgLUVSRVNUQVJUU1lTYCBpbnN0ZWFkIG9mIGAtRUlOVFJgIGluIHRoZSBzYW1lIHNpZ25hbCBwZW5kaW5nIHNjZW5hcmlvLgoKVGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlIG5vdyBpdCYjMzk7cyBwb3NzaWJsZSBmb3IgdGhlIGZyZWV6ZXIgdG8gaW50ZXJydXB0IHRoZSB0YXNrLiBUaGlzIGFsc28gbWVhbnMgdGhhdCBzeXNjYWxscyB3aWxsIGJlIHJlc3RhcnRlZCwgYSBwcmV0dHkgaW1wb3J0YW50IGRpc3RpbmN0aW9uIHRoYXQgaGFzIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgZm9yIHN0YWJpbGl0eSBhbmQgcmVzcG9uc2l2ZW5lc3MuIEdpdmVuIHRoZSBjaGFuZ2UgaW4gcmV0dXJuIGNvZGUgYW5kIHRoZSBwb3RlbnRpYWwgZm9yIGludGVycnVwdGlvbnMsIHRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBuZWVkcyB0aG9yb3VnaCBmdXp6aW5nIHRvIGVuc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSB1bmV4cGVjdGVkIHNpZGUgZWZmZWN0cyBvciByYWNlIGNvbmRpdGlvbnMuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIGBtbS92bXNjYW4uY2AgaXMgYWx3YXlzIGNvbXBpbGVkLCB3aGljaCBjb3ZlcnMgdGhlIGByZWNsYWltX3N0b3JlYCBjb2RlLiBgbW0vbWVtY29udHJvbC5jYCBpcyBvbmx5IGNvbXBpbGVkIGlmIGBDT05GSUdfTUVNQ0dgIGlzIGVuYWJsZWQsIGFuZCB0aGVyZWZvcmUgdGhlIGZ1bmN0aW9uIGNhbGxlZCBgbWVtb3J5X3JlY2xhaW1gIGlzIGNvbmRpdGlvbmFsLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIGRldGFpbHMgZm9yIGBtbS92bXNjYW4uY2AsIGxpa2VseSBOVU1BIG9yIHNvbWV0aGluZyByZWxhdGVkLCB0byBzZWUgd2hlbiBgcmVjbGFpbV9zdG9yZWAgaXMgaW5jbHVkZWQuIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBpbmZvcm0gbXkgdGVzdGluZyBhcHByb2FjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMjo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZWNsYWltX3N0b3JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2J0cmZzL3N5c2ZzLmM9OTUyPXN0YXRpYyBzc2l6ZV90IGJ0cmZzX3NpbmZvX2R5bmFtaWNfcmVjbGFpbV9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuLS1cbmZzL2J0cmZzL3N5c2ZzLmMtOTYwLVxuZnMvYnRyZnMvc3lzZnMuYzo5NjE6c3RhdGljIHNzaXplX3QgYnRyZnNfc2luZm9fZHluYW1pY19yZWNsYWltX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuZnMvYnRyZnMvc3lzZnMuYy05NjItXHRcdFx0XHRcdFx0IHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYSxcbi0tXG5mcy9idHJmcy9zeXNmcy5jPTk4MT1CVFJGU19BVFRSX1JXKHNwYWNlX2luZm8sIGR5bmFtaWNfcmVjbGFpbSxcbmZzL2J0cmZzL3N5c2ZzLmMtOTgyLVx0ICAgICAgYnRyZnNfc2luZm9fZHluYW1pY19yZWNsYWltX3Nob3csXG5mcy9idHJmcy9zeXNmcy5jOjk4MzpcdCAgICAgIGJ0cmZzX3NpbmZvX2R5bmFtaWNfcmVjbGFpbV9zdG9yZSk7XG5mcy9idHJmcy9zeXNmcy5jLTk4NC1cbmZzL2J0cmZzL3N5c2ZzLmM9OTg1PXN0YXRpYyBzc2l6ZV90IGJ0cmZzX3NpbmZvX3BlcmlvZGljX3JlY2xhaW1fc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5mcy9idHJmcy9zeXNmcy5jLTk5My1cbmZzL2J0cmZzL3N5c2ZzLmM6OTk0OnN0YXRpYyBzc2l6ZV90IGJ0cmZzX3NpbmZvX3BlcmlvZGljX3JlY2xhaW1fc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG5mcy9idHJmcy9zeXNmcy5jLTk5NS1cdFx0XHRcdFx0XHQgc3RydWN0IGtvYmpfYXR0cmlidXRlICphLFxuLS1cbmZzL2J0cmZzL3N5c2ZzLmM9MTAxND1CVFJGU19BVFRSX1JXKHNwYWNlX2luZm8sIHBlcmlvZGljX3JlY2xhaW0sXG5mcy9idHJmcy9zeXNmcy5jLTEwMTUtXHQgICAgICBidHJmc19zaW5mb19wZXJpb2RpY19yZWNsYWltX3Nob3csXG5mcy9idHJmcy9zeXNmcy5jOjEwMTY6XHQgICAgICBidHJmc19zaW5mb19wZXJpb2RpY19yZWNsYWltX3N0b3JlKTtcbmZzL2J0cmZzL3N5c2ZzLmMtMTAxNy1cbi0tXG5tbS92bXNjYW4uYz04MDE1PUVYUE9SVF9TWU1CT0xfR1BMKGNoZWNrX21vdmVfdW5ldmljdGFibGVfZm9saW9zKTtcbi0tXG5tbS92bXNjYW4uYy04MDE3LSNpZiBkZWZpbmVkKENPTkZJR19TWVNGUykgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX05VTUEpXG5tbS92bXNjYW4uYzo4MDE4OnN0YXRpYyBzc2l6ZV90IHJlY2xhaW1fc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxubW0vdm1zY2FuLmMtODAxOS1cdFx0XHQgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIyOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NTUKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIE1lbW9yeSBSZWNsYWltIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgc28gYHJlY2xhaW1fc3RvcmVgIGlzIGRlZmluaXRlbHkgdGllZCB0byBgQ09ORklHX1NZU0ZTYCBhbmQgYENPTkZJR19OVU1BYC4gVGhhdCBtYWtlcyBzZW5zZTsgc3RvcmluZyByZWNsYWltIGluZm9ybWF0aW9uIGluIHN5c2ZzIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCBOVU1BIGFyY2hpdGVjdHVyZXMgaXMgbG9naWNhbC4gTm93LCB0aGUgYG1lbW9yeV9yZWNsYWltYCBmdW5jdGlvbiBpcyBjb250cm9sbGVkIGJ5IGBDT05GSUdfTUVNQ0dgLiBSaWdodCwgdGhhdCYjMzk7cyB3aGF0IEkgZXhwZWN0ZWTigJRtZW1vcnkgY2dyb3VwcyBhbmQgcmVjbGFpbSBhcmUgaW50cmluc2ljYWxseSBsaW5rZWQuIFRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaG93IHRoYXQgcGxheXMgb3V0LCBJIHJlYWxseSBzaG91bGQgZGl2ZSBpbnRvIHRoZSBhY3R1YWwgY29kZS4gTG9va3MgbGlrZSBgbW0vbWVtY29udHJvbC5jYCBpcyB0aGUgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBkZXRhaWxzIG9mIHRoZSBgbWVtb3J5X3JlY2xhaW1gIGZ1bmN0aW9uLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGluIHJlbGF0aW9uIHRvIG1lbW9yeSBjZ3JvdXBzIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlY2xhaW0gcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMjo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZW1vcnlfcmVjbGFpbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oPTEzNT1LVk1fWDg2X09QX09QVElPTkFMKHZtX21vdmVfZW5jX2NvbnRleHRfZnJvbSlcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTM2OktWTV9YODZfT1BfT1BUSU9OQUwoZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZClcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmgtMTM3LUtWTV9YODZfT1AoZ2V0X2ZlYXR1cmVfbXNyKVxuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg9MTc4NT1zdHJ1Y3Qga3ZtX3g4Nl9vcHMge1xuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgtMTk4Ni1cdGludCAoKnZtX21vdmVfZW5jX2NvbnRleHRfZnJvbSkoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgc291cmNlX2ZkKTtcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg6MTk4NzpcdHZvaWQgKCpndWVzdF9tZW1vcnlfcmVjbGFpbWVkKShzdHJ1Y3Qga3ZtICprdm0pO1xuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xOTg4LVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM9MzI1Nz1zdGF0aWMgdm9pZCBzZXZfZmx1c2hfZW5jcnlwdGVkX3BhZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB2b2lkICp2YSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyOTItXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jOjMyOTM6dm9pZCBzZXZfZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZChzdHJ1Y3Qga3ZtICprdm0pXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyOTQte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NTMyNT1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgc3ZtX3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU0NDYtXHQubWVtX2VuY191bnJlZ2lzdGVyX3JlZ2lvbiA9IHNldl9tZW1fZW5jX3VucmVnaXN0ZXJfcmVnaW9uLFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1NDQ3Olx0Lmd1ZXN0X21lbW9yeV9yZWNsYWltZWQgPSBzZXZfZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZCxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTQ0OC1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oPTk4Nz1pbnQgc2V2X3ZtX21vdmVfZW5jX2NvbnRleHRfZnJvbShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGludCBzb3VyY2VfZmQpO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDo5ODg6dm9pZCBzZXZfZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZChzdHJ1Y3Qga3ZtICprdm0pO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uaC05ODktaW50IHNldl9oYW5kbGVfdm1nZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xMTA3Mz1zdGF0aWMgdm9pZCB2Y3B1X2xvYWRfZW9pX2V4aXRtYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xMTA5Mi1cbmFyY2gveDg2L2t2bS94ODYuYzoxMTA5Mzp2b2lkIGt2bV9hcmNoX2d1ZXN0X21lbW9yeV9yZWNsYWltZWQoc3RydWN0IGt2bSAqa3ZtKVxuYXJjaC94ODYva3ZtL3g4Ni5jLTExMDk0LXtcbmFyY2gveDg2L2t2bS94ODYuYzoxMTA5NTpcdGt2bV94ODZfY2FsbChndWVzdF9tZW1vcnlfcmVjbGFpbWVkKShrdm0pO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTExMDk2LX1cbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvZHJpdmVyLmM9Nzg4PXN0YXRpYyBpbnQgZmZhX21lbW9yeV9vcHModTMyIGZ1bmNfaWQsIHN0cnVjdCBmZmFfbWVtX29wc19hcmdzICphcmdzKVxuLS1cbmRyaXZlcnMvZmlybXdhcmUvYXJtX2ZmYS9kcml2ZXIuYy04MTItXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvZHJpdmVyLmM6ODEzOnN0YXRpYyBpbnQgZmZhX21lbW9yeV9yZWNsYWltKHU2NCBnX2hhbmRsZSwgdTMyIGZsYWdzKVxuZHJpdmVycy9maXJtd2FyZS9hcm1fZmZhL2RyaXZlci5jLTgxNC17XG4tLVxuZHJpdmVycy9maXJtd2FyZS9hcm1fZmZhL2RyaXZlci5jPTE2MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBmZmFfbWVtX29wcyBmZmFfZHJ2X21lbV9vcHMgPSB7XG5kcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvZHJpdmVyLmM6MTYxMjpcdC5tZW1vcnlfcmVjbGFpbSA9IGZmYV9tZW1vcnlfcmVjbGFpbSxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX2ZmYS9kcml2ZXIuYy0xNjEzLVx0Lm1lbW9yeV9zaGFyZSA9IGZmYV9tZW1vcnlfc2hhcmUsXG4tLVxuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jPTI3MD1zdGF0aWMgaW50IG9wdGVlX2ZmYV9zaG1fcmVnaXN0ZXIoc3RydWN0IHRlZV9jb250ZXh0ICpjdHgsIHN0cnVjdCB0ZWVfc2htICpzaG0sXG4tLVxuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jLTMwNC1cdGlmIChyYykge1xuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jOjMwNTpcdFx0bWVtX29wcy1cdTAwM2VtZW1vcnlfcmVjbGFpbShhcmdzLmdfaGFuZGxlLCAwKTtcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYy0zMDYtXHRcdHJldHVybiByYztcbi0tXG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmM9MzE0PXN0YXRpYyBpbnQgb3B0ZWVfZmZhX3NobV91bnJlZ2lzdGVyKHN0cnVjdCB0ZWVfY29udGV4dCAqY3R4LFxuLS1cbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYy0zMzUtXG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmM6MzM2Olx0cmMgPSBtZW1fb3BzLVx1MDAzZW1lbW9yeV9yZWNsYWltKGdsb2JhbF9oYW5kbGUsIDApO1xuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jLTMzNy1cdGlmIChyYylcbi0tXG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmM9MzQzPXN0YXRpYyBpbnQgb3B0ZWVfZmZhX3NobV91bnJlZ2lzdGVyX3N1cHAoc3RydWN0IHRlZV9jb250ZXh0ICpjdHgsXG4tLVxuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jLTM1OC1cdG1lbV9vcHMgPSBvcHRlZS1cdTAwM2VmZmEuZmZhX2Rldi1cdTAwM2VvcHMtXHUwMDNlbWVtX29wcztcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYzozNTk6XHRyYyA9IG1lbV9vcHMtXHUwMDNlbWVtb3J5X3JlY2xhaW0oZ2xvYmFsX2hhbmRsZSwgMCk7XG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmMtMzYwLVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYz02ODI9c3RhdGljIGludCBvcHRlZV9mZmFfbGVuZF9wcm90bWVtKHN0cnVjdCBvcHRlZSAqb3B0ZWUsIHN0cnVjdCB0ZWVfc2htICpwcm90bWVtLFxuLS1cbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYy03MzctZXJyX3JlY2xhaW06XG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmM6NzM4Olx0bWVtX29wcy1cdTAwM2VtZW1vcnlfcmVjbGFpbShhcmdzLmdfaGFuZGxlLCAwKTtcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYy03MzktXHRyZXR1cm4gcmM7XG4tLVxuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jPTc0Mj1zdGF0aWMgaW50IG9wdGVlX2ZmYV9yZWNsYWltX3Byb3RtZW0oc3RydWN0IG9wdGVlICpvcHRlZSxcbi0tXG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmMtNzYyLVxuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jOjc2MzpcdHJjID0gbWVtX29wcy1cdTAwM2VtZW1vcnlfcmVjbGFpbShnbG9iYWxfaGFuZGxlLCAwKTtcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYy03NjQtXHRpZiAocmMpXG4tLVxuZHJpdmVycy90ZWUvdHN0ZWUvY29yZS5jPTI0Mj1zdGF0aWMgaW50IHRzdGVlX3NobV9yZWdpc3RlcihzdHJ1Y3QgdGVlX2NvbnRleHQgKmN0eCwgc3RydWN0IHRlZV9zaG0gKnNobSxcbi0tXG5kcml2ZXJzL3RlZS90c3RlZS9jb3JlLmMtMjg5LVx0aWYgKHJjKSB7XG5kcml2ZXJzL3RlZS90c3RlZS9jb3JlLmM6MjkwOlx0XHQodm9pZClmZmFfZGV2LVx1MDAzZW9wcy1cdTAwM2VtZW1fb3BzLVx1MDAzZW1lbW9yeV9yZWNsYWltKHNobS1cdTAwM2VzZWNfd29ybGRfaWQsXG5kcml2ZXJzL3RlZS90c3RlZS9jb3JlLmMtMjkxLVx0XHRcdFx0XHRcdFx0ICAgIDApO1xuLS1cbmRyaXZlcnMvdGVlL3RzdGVlL2NvcmUuYy0yOTktXHRcdFx0ZmZhX2FyZ3NbVFNfUlBDX1JFVFJJRVZFX01FTV9SUENfU1RBVFVTXSk7XG5kcml2ZXJzL3RlZS90c3RlZS9jb3JlLmM6MzAwOlx0XHRmZmFfZGV2LVx1MDAzZW9wcy1cdTAwM2VtZW1fb3BzLVx1MDAzZW1lbW9yeV9yZWNsYWltKHNobS1cdTAwM2VzZWNfd29ybGRfaWQsIDApO1xuZHJpdmVycy90ZWUvdHN0ZWUvY29yZS5jLTMwMS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy90ZWUvdHN0ZWUvY29yZS5jPTMwNz1zdGF0aWMgaW50IHRzdGVlX3NobV91bnJlZ2lzdGVyKHN0cnVjdCB0ZWVfY29udGV4dCAqY3R4LCBzdHJ1Y3QgdGVlX3NobSAqc2htKVxuLS1cbmRyaXZlcnMvdGVlL3RzdGVlL2NvcmUuYy0zMzQtXG5kcml2ZXJzL3RlZS90c3RlZS9jb3JlLmM6MzM1Olx0cmMgPSBmZmFfZGV2LVx1MDAzZW9wcy1cdTAwM2VtZW1fb3BzLVx1MDAzZW1lbW9yeV9yZWNsYWltKHNobS1cdTAwM2VzZWNfd29ybGRfaWQsIDApO1xuZHJpdmVycy90ZWUvdHN0ZWUvY29yZS5jLTMzNi1cbi0tXG5pbmNsdWRlL2xpbnV4L2FybV9mZmEuaD00Nzg9c3RydWN0IGZmYV9tZW1fb3BzIHtcbmluY2x1ZGUvbGludXgvYXJtX2ZmYS5oOjQ3OTpcdGludCAoKm1lbW9yeV9yZWNsYWltKSh1NjQgZ19oYW5kbGUsIHUzMiBmbGFncyk7XG5pbmNsdWRlL2xpbnV4L2FybV9mZmEuaC00ODAtXHRpbnQgKCptZW1vcnlfc2hhcmUpKHN0cnVjdCBmZmFfbWVtX29wc19hcmdzICphcmdzKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MjQ1ND1zdGF0aWMgaW5saW5lIGJvb2wga3ZtX2FyY2hfbm9fcG9sbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NTktXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MjQ2MDp2b2lkIGt2bV9hcmNoX2d1ZXN0X21lbW9yeV9yZWNsYWltZWQoc3RydWN0IGt2bSAqa3ZtKTtcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0yNDYxLVxuLS1cbm1tL21lbWNvbnRyb2wuYz00OTY3PXN0YXRpYyBzc2l6ZV90IG1lbW9yeV9vb21fZ3JvdXBfd3JpdGUoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLFxuLS1cbm1tL21lbWNvbnRyb2wuYy00OTg4LVxubW0vbWVtY29udHJvbC5jOjQ5ODk6c3RhdGljIHNzaXplX3QgbWVtb3J5X3JlY2xhaW0oc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBjaGFyICpidWYsXG5tbS9tZW1jb250cm9sLmMtNDk5MC1cdFx0XHQgICAgICBzaXplX3QgbmJ5dGVzLCBsb2ZmX3Qgb2ZmKVxuLS1cbm1tL21lbWNvbnRyb2wuYz01MDAyPXN0YXRpYyBzdHJ1Y3QgY2Z0eXBlIG1lbW9yeV9maWxlc1tdID0ge1xuLS1cbm1tL21lbWNvbnRyb2wuYy01MDcwLVx0XHQuZmxhZ3MgPSBDRlRZUEVfTlNfREVMRUdBVEFCTEUsXG5tbS9tZW1jb250cm9sLmM6NTA3MTpcdFx0LndyaXRlID0gbWVtb3J5X3JlY2xhaW0sXG5tbS9tZW1jb250cm9sLmMtNTA3Mi1cdH0sXG4tLVxuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5jPTM5MT1pbnQgYXZzX2lwY19nZXRfZndfY29uZmlnKHN0cnVjdCBhdnNfZGV2ICphZGV2LCBzdHJ1Y3QgYXZzX2Z3X2NmZyAqY2ZnKVxuLS1cbnNvdW5kL3NvYy9pbnRlbC9hdnMvbWVzc2FnZXMuYy00MTgtXHRcdGNhc2UgQVZTX0ZXX0NGR19NRU1PUllfUkVDTEFJTUVEOlxuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5jOjQxOTpcdFx0XHRjZmctXHUwMDNlbWVtb3J5X3JlY2xhaW1lZCA9ICp0bHYtXHUwMDNldmFsdWU7XG5zb3VuZC9zb2MvaW50ZWwvYXZzL21lc3NhZ2VzLmMtNDIwLVx0XHRcdGJyZWFrO1xuLS1cbnNvdW5kL3NvYy9pbnRlbC9hdnMvbWVzc2FnZXMuaD00NjA9c3RydWN0IGF2c19md19jZmcge1xuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5oLTQ2MS1cdHN0cnVjdCBhdnNfZndfdmVyc2lvbiBmd192ZXJzaW9uO1xuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5oOjQ2MjpcdHUzMiBtZW1vcnlfcmVjbGFpbWVkO1xuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5oLTQ2My1cdHUzMiBzbG93X2Nsb2NrX2ZyZXFfaHo7XG4tLVxudmlydC9rdm0va3ZtX21haW4uYz0xNTU9c3RhdGljIERFRklORV9QRVJfQ1BVKGNwdW1hc2tfdmFyX3QsIGNwdV9raWNrX21hc2spO1xudmlydC9rdm0va3ZtX21haW4uYy0xNTYtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjE1NzpfX3dlYWsgdm9pZCBrdm1fYXJjaF9ndWVzdF9tZW1vcnlfcmVjbGFpbWVkKHN0cnVjdCBrdm0gKmt2bSlcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTU4LXtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTM0MT1zdGF0aWMgdm9pZCBrdm1fZmx1c2hfc2hhZG93X2FsbChzdHJ1Y3Qga3ZtICprdm0pXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0zNDMtXHRrdm1fYXJjaF9mbHVzaF9zaGFkb3dfYWxsKGt2bSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jOjM0NDpcdGt2bV9hcmNoX2d1ZXN0X21lbW9yeV9yZWNsYWltZWQoa3ZtKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzQ1LX1cbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTcyMT1zdGF0aWMgaW50IGt2bV9tbXVfbm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVyICptbixcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTc2NS1cdGlmIChrdm1faGFuZGxlX2h2YV9yYW5nZShrdm0sIFx1MDAyNmh2YV9yYW5nZSkuZm91bmRfbWVtc2xvdClcbnZpcnQva3ZtL2t2bV9tYWluLmM6NzY2Olx0XHRrdm1fYXJjaF9ndWVzdF9tZW1vcnlfcmVjbGFpbWVkKGt2bSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTc2Ny1cbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTE3OTg9c3RhdGljIHZvaWQga3ZtX2ludmFsaWRhdGVfbWVtc2xvdChzdHJ1Y3Qga3ZtICprdm0sXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy0xODI0LVx0a3ZtX2FyY2hfZmx1c2hfc2hhZG93X21lbXNsb3Qoa3ZtLCBvbGQpO1xudmlydC9rdm0va3ZtX21haW4uYzoxODI1Olx0a3ZtX2FyY2hfZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZChrdm0pO1xudmlydC9rdm0va3ZtX21haW4uYy0xODI2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIyOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwMzAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gTWVtb3J5IE1hbmFnZW1lbnQgLSBBIFF1aWNrIENoZWNrKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBtZW1vcnlfcmVjbGFpbWAgZnVuY3Rpb24uIFRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGRvaW5nIGlzIGNvbmZpcm1pbmcgaXQgbGl2ZXMgd2l0aGluIGBtbS9tZW1jb250cm9sLmNgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYW5kIEkgaGF2ZSBhIGZhaXJseSBnb29kIG1lbnRhbCBtYXAgb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbS4gTm93LCBsZXQmIzM5O3Mgc2VlLi4uIGlzIGBDT05GSUdfTUVNQ0dgIHRoZSBvbmx5IGNvbmZpZ3VyYXRpb24ga25vYiBJIG5lZWQgdG8gYmUgY29uY2VybmVkIHdpdGggaGVyZT8gU29tZXRpbWVzLCB0aGVyZSBhcmUgc3VidGxlIGRlcGVuZGVuY2llcyBvciBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBmZWF0dXJlcy4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC4gSSBjYW4gYWxyZWFkeSBpbWFnaW5lIGFsbCB0aGUgcGxhY2VzIHRoaXMgc2luZ2xlIGNvbmZpZyBtaWdodCBpbXBhY3QsIGZyb20ga2VybmVsIG1lbW9yeSBhbGxvY2F0aW9uIHRvIHRoZSB1c2Ugb2YgY2dyb3Vwcy4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIG9uZSBjb25maWcgaXMgaW5kZWVkIGFsbCB0aGF0IGFwcGxpZXMgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX01FTUNHJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vbWVtY29udHJvbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21lbWNvbnRyb2wuYz0yMDk9c3RhdGljIGlubGluZSBzdHJ1Y3Qgb2JqX2Nncm91cCAqX19tZW1jZ19yZXBhcmVudF9vYmpjZ3Moc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxuLS1cbm1tL21lbWNvbnRyb2wuYy0yMjgtXG5tbS9tZW1jb250cm9sLmM6MjI5OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy0yMzAtc3RhdGljIHZvaWQgX19tZW1fY2dyb3VwX2ZsdXNoX3N0YXRzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgYm9vbCBmb3JjZSk7XG4tLVxubW0vbWVtY29udHJvbC5jPTUwNT11bnNpZ25lZCBsb25nIGxydXZlY19wYWdlX3N0YXRlX2xvY2FsKHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcbi0tXG5tbS9tZW1jb250cm9sLmMtNTI3LVxubW0vbWVtY29udHJvbC5jOjUyODojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5tbS9tZW1jb250cm9sLmMtNTI5LXN0YXRpYyB2b2lkIF9fbW9kX21lbWNnX2xydXZlY19zdGF0ZShzdHJ1Y3QgbWVtX2Nncm91cF9wZXJfbm9kZSAqcG4sXG4tLVxubW0vbWVtY29udHJvbC5jPTU1Mz1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1lbWNnX3ZtX2V2ZW50X3N0YXRbXSA9IHtcbm1tL21lbWNvbnRyb2wuYzo1NTQ6I2lmZGVmIENPTkZJR19NRU1DR19WMVxubW0vbWVtY29udHJvbC5jLTU1NS1cdFBHUEdJTixcbi0tXG5tbS9tZW1jb250cm9sLmM9Nzg3PXN0YXRpYyBsb25nIG1lbWNnX3N0YXRlX3ZhbF9pbl9wYWdlcyhpbnQgaWR4LCBsb25nIHZhbClcbi0tXG5tbS9tZW1jb250cm9sLmMtODAyLVxubW0vbWVtY29udHJvbC5jOjgwMzojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5tbS9tZW1jb250cm9sLmMtODA0LS8qXG4tLVxubW0vbWVtY29udHJvbC5jPTg3MT12b2lkIG1vZF9tZW1jZ19zdGF0ZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGVudW0gbWVtY2dfc3RhdF9pdGVtIGlkeCxcbi0tXG5tbS9tZW1jb250cm9sLmMtODgzLVxubW0vbWVtY29udHJvbC5jOjg4NDojaWZkZWYgQ09ORklHX01FTUNHX1YxXG5tbS9tZW1jb250cm9sLmMtODg1LS8qIGlkeCBjYW4gYmUgb2YgdHlwZSBlbnVtIG1lbWNnX3N0YXRfaXRlbSBvciBub2RlX3N0YXRfaXRlbS4gKi9cbi0tXG5tbS9tZW1jb250cm9sLmM9MTA1OT1ib29sIG1lbWNnX3ZtX2V2ZW50X2l0ZW1fdmFsaWQoZW51bSB2bV9ldmVudF9pdGVtIGlkeClcbi0tXG5tbS9tZW1jb250cm9sLmMtMTA2Ni1cbm1tL21lbWNvbnRyb2wuYzoxMDY3OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy0xMDY4LXVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzX2xvY2FsKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KVxuLS1cbm1tL21lbWNvbnRyb2wuYz0xNjY3PXVuc2lnbmVkIGxvbmcgbWVtY2dfcGFnZV9zdGF0ZV9vdXRwdXQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgaXRlbSlcbi0tXG5tbS9tZW1jb250cm9sLmMtMTY3Mi1cbm1tL21lbWNvbnRyb2wuYzoxNjczOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy0xNjc0LXVuc2lnbmVkIGxvbmcgbWVtY2dfcGFnZV9zdGF0ZV9sb2NhbF9vdXRwdXQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgaXRlbSlcbi0tXG5tbS9tZW1jb250cm9sLmM9MTY5Mz1zdGF0aWMgdm9pZCBtZW1jZ19zdGF0X2Zvcm1hdChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHN0cnVjdCBzZXFfYnVmICpzKVxuLS1cbm1tL21lbWNvbnRyb2wuYy0xNzM5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShtZW1jZ192bV9ldmVudF9zdGF0KTsgaSYjNDM7JiM0MzspIHtcbm1tL21lbWNvbnRyb2wuYzoxNzQwOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy0xNzQxLVx0XHRpZiAobWVtY2dfdm1fZXZlbnRfc3RhdFtpXSA9PSBQR1BHSU4gfHxcbi0tXG5tbS9tZW1jb250cm9sLmM9MTc5MT12b2lkIG1lbV9jZ3JvdXBfcHJpbnRfb29tX21lbWluZm8oc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxuLS1cbm1tL21lbWNvbnRyb2wuYy0xODEyLVx0XHRcdGF0b21pY19sb25nX3JlYWQoXHUwMDI2bWVtY2ctXHUwMDNlbWVtb3J5X2V2ZW50c1tNRU1DR19TV0FQX01BWF0pKTtcbm1tL21lbWNvbnRyb2wuYzoxODEzOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy0xODE0LVx0ZWxzZSB7XG4tLVxubW0vbWVtY29udHJvbC5jPTI4MDA9c3RhdGljIHZvaWQgY29tbWl0X2NoYXJnZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgb2JqX2Nncm91cCAqb2JqY2cpXG4tLVxubW0vbWVtY29udHJvbC5jLTI4MTItXG5tbS9tZW1jb250cm9sLmM6MjgxMzojaWZkZWYgQ09ORklHX01FTUNHX05NSV9TQUZFVFlfUkVRVUlSRVNfQVRPTUlDXG5tbS9tZW1jb250cm9sLmMtMjgxNC1zdGF0aWMgaW5saW5lIHZvaWQgYWNjb3VudF9zbGFiX25taV9zYWZlKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcbi0tXG5tbS9tZW1jb250cm9sLmM9Mjk4Nj1fX2Fsd2F5c19pbmxpbmUgc3RydWN0IG9ial9jZ3JvdXAgKmN1cnJlbnRfb2JqX2Nncm91cCh2b2lkKVxuLS1cbm1tL21lbWNvbnRyb2wuYy0yOTkxLVxubW0vbWVtY29udHJvbC5jOjI5OTI6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTUVNQ0dfTk1JX1VOU0FGRSkgXHUwMDI2XHUwMDI2IGluX25taSgpKVxubW0vbWVtY29udHJvbC5jLTI5OTMtXHRcdHJldHVybiBOVUxMO1xuLS1cbm1tL21lbWNvbnRyb2wuYz0zMDMyPXN0cnVjdCBvYmpfY2dyb3VwICpnZXRfb2JqX2Nncm91cF9mcm9tX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vbWVtY29udHJvbC5jLTMwNDItXG5tbS9tZW1jb250cm9sLmM6MzA0MzojaWZkZWYgQ09ORklHX01FTUNHX05NSV9TQUZFVFlfUkVRVUlSRVNfQVRPTUlDXG5tbS9tZW1jb250cm9sLmMtMzA0NC1zdGF0aWMgaW5saW5lIHZvaWQgYWNjb3VudF9rbWVtX25taV9zYWZlKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IHZhbClcbi0tXG5tbS9tZW1jb250cm9sLmM9NDE1Nz1tZW1fY2dyb3VwX2Nzc19hbGxvYyhzdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqcGFyZW50X2Nzcylcbi0tXG5tbS9tZW1jb250cm9sLmMtNDE4MC1cdFx0cGFnZV9jb3VudGVyX2luaXQoXHUwMDI2bWVtY2ctXHUwMDNlc3dhcCwgXHUwMDI2cGFyZW50LVx1MDAzZXN3YXAsIGZhbHNlKTtcbm1tL21lbWNvbnRyb2wuYzo0MTgxOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy00MTgyLVx0XHRtZW1jZy1cdTAwM2VtZW1vcnkudHJhY2tfZmFpbGNudCA9ICFtZW1jZ19vbl9kZmw7XG4tLVxubW0vbWVtY29udHJvbC5jLTQxOTEtXHRcdHBhZ2VfY291bnRlcl9pbml0KFx1MDAyNm1lbWNnLVx1MDAzZXN3YXAsIE5VTEwsIGZhbHNlKTtcbm1tL21lbWNvbnRyb2wuYzo0MTkyOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy00MTkzLVx0XHRwYWdlX2NvdW50ZXJfaW5pdChcdTAwMjZtZW1jZy1cdTAwM2VrbWVtLCBOVUxMLCBmYWxzZSk7XG4tLVxubW0vbWVtY29udHJvbC5jPTQzNTk9c3RhdGljIHZvaWQgbWVtX2Nncm91cF9jc3NfcmVzZXQoc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUgKmNzcylcbi0tXG5tbS9tZW1jb250cm9sLmMtNDM2NC1cdHBhZ2VfY291bnRlcl9zZXRfbWF4KFx1MDAyNm1lbWNnLVx1MDAzZXN3YXAsIFBBR0VfQ09VTlRFUl9NQVgpO1xubW0vbWVtY29udHJvbC5jOjQzNjU6I2lmZGVmIENPTkZJR19NRU1DR19WMVxubW0vbWVtY29udHJvbC5jLTQzNjYtXHRwYWdlX2NvdW50ZXJfc2V0X21heChcdTAwMjZtZW1jZy1cdTAwM2VrbWVtLCBQQUdFX0NPVU5URVJfTUFYKTtcbi0tXG5tbS9tZW1jb250cm9sLmM9NDM5ND1zdGF0aWMgdm9pZCBtZW1fY2dyb3VwX3N0YXRfYWdncmVnYXRlKHN0cnVjdCBhZ2dyZWdhdGVfY29udHJvbCAqYWMpXG4tLVxubW0vbWVtY29udHJvbC5jLTQ0MjktXG5tbS9tZW1jb250cm9sLmM6NDQzMDojaWZkZWYgQ09ORklHX01FTUNHX05NSV9TQUZFVFlfUkVRVUlSRVNfQVRPTUlDXG5tbS9tZW1jb250cm9sLmMtNDQzMS1zdGF0aWMgdm9pZCBmbHVzaF9ubWlfc3RhdHMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBzdHJ1Y3QgbWVtX2Nncm91cCAqcGFyZW50LFxuLS1cbm1tL21lbWNvbnRyb2wuYz01MDc2PXN0cnVjdCBjZ3JvdXBfc3Vic3lzIG1lbW9yeV9jZ3JwX3N1YnN5cyA9IHtcbi0tXG5tbS9tZW1jb250cm9sLmMtNTA4Ny1cdC5kZmxfY2Z0eXBlcyA9IG1lbW9yeV9maWxlcyxcbm1tL21lbWNvbnRyb2wuYzo1MDg4OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy01MDg5LVx0LmxlZ2FjeV9jZnR5cGVzID0gbWVtX2Nncm91cF9sZWdhY3lfZmlsZXMsXG4tLVxubW0vbWVtY29udHJvbC5jPTYwMjI9c3RhdGljIGludCBfX2luaXQgbWVtX2Nncm91cF9zd2FwX2luaXQodm9pZClcbi0tXG5tbS9tZW1jb250cm9sLmMtNjAyNy1cdFdBUk5fT04oY2dyb3VwX2FkZF9kZmxfY2Z0eXBlcyhcdTAwMjZtZW1vcnlfY2dycF9zdWJzeXMsIHN3YXBfZmlsZXMpKTtcbm1tL21lbWNvbnRyb2wuYzo2MDI4OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYy02MDI5LVx0V0FSTl9PTihjZ3JvdXBfYWRkX2xlZ2FjeV9jZnR5cGVzKFx1MDAyNm1lbW9yeV9jZ3JwX3N1YnN5cywgbWVtc3dfZmlsZXMpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyNDMKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIE1lbW9yeSBDb250cm9sIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBkZWFsaW5nIHdpdGggYG1tL21lbWNvbnRyb2wuY2AgYW5kIGtub3cgaXQgb25seSBnZXRzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19NRU1DR2AgaXMgc2V0LiBOb3cgSSBuZWVkIHRvIHNlZSAqaG93KiB0aGF0IGxpbmthZ2UgaXMgZXN0YWJsaXNoZWQgd2l0aGluIHRoZSBidWlsZCBzeXN0ZW0uIFRoZSBuYXR1cmFsIHBsYWNlIHRvIGxvb2sgaXMgdGhlIGBtbS9NYWtlZmlsZWAuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBjb21waWxhdGlvbiBydWxlcyBhbmQgZGVwZW5kZW5jaWVzIGZvciBtZW1vcnkgbWFuYWdlbWVudCBzb3VyY2UgZmlsZXMgYXJlIGRlZmluZWQuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZSBwcmVjaXNlbHkgaG93IHRoYXQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gaXMgaGFuZGxlZC4gSSBleHBlY3QgdG8gZmluZCBhIGBvYmotJChDT05GSUdfTUVNQ0cpICYjNDM7PSBtZW1jb250cm9sLm9gIG9yIHNvbWV0aGluZyBzaW1pbGFyIGluIHRoYXQgYE1ha2VmaWxlYC4gTGV0JiMzOTtzIGNvbmZpcm0gdGhhdCBhbmQgbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMjo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZW1jb250cm9sJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGU9Mjc9S0NPVl9JTlNUUlVNRU5UX2ttZW1sZWFrLm8gOj0gblxubW0vTWFrZWZpbGU6Mjg6S0NPVl9JTlNUUlVNRU5UX21lbWNvbnRyb2wubyA6PSBuXG5tbS9NYWtlZmlsZToyOTpLQ09WX0lOU1RSVU1FTlRfbWVtY29udHJvbC12MS5vIDo9IG5cbm1tL01ha2VmaWxlLTMwLUtDT1ZfSU5TVFJVTUVOVF9tbXpvbmUubyA6PSBuXG4tLVxubW0vTWFrZWZpbGU9MTAzPW9iai0kKENPTkZJR19MSVZFVVBEQVRFX01FTUZEKSAmIzQzOz0gbWVtZmRfbHVvLm9cbm1tL01ha2VmaWxlOjEwNDpvYmotJChDT05GSUdfTUVNQ0dfVjEpICYjNDM7PSBtZW1jb250cm9sLXYxLm9cbm1tL01ha2VmaWxlOjEwNTpvYmotJChDT05GSUdfTUVNQ0cpICYjNDM7PSBtZW1jb250cm9sLm8gdm1wcmVzc3VyZS5vXG5tbS9NYWtlZmlsZS0xMDYtaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5tbS9NYWtlZmlsZToxMDc6b2JqLSQoQ09ORklHX01FTUNHKSAmIzQzOz0gYnBmX21lbWNvbnRyb2wub1xubW0vTWFrZWZpbGUtMTA4LWVuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIyOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjk1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2VybmVsIENvbmZpZ3VyYXRpb24gQ29udW5kcnVtKioKCkFscmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYENPTkZJR19NRU1DR2AgaXMgZGVmaW5pdGVseSB0aGUga2V5IGhlcmUsIG5vIGRvdWJ0IGFib3V0IHRoYXQuIEJ1dCBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBwaWVjZXMuIFdoYXQgYWJvdXQgYENPTkZJR19TWVNGU2AgYW5kIGBDT05GSUdfTlVNQWA/IERvIHRob3NlIGNvbWUgaW50byBwbGF5IGZvciB0aGUgYHJlY2xhaW1fc3RvcmVgIGZ1bmN0aW9uPyBJIGtub3cgdGhleSYjMzk7cmUgb2Z0ZW4gaW50ZXJjb25uZWN0ZWQgd2l0aCBtZW1vcnkgbWFuYWdlbWVudCwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBCZXN0IHdheSB0byBmaWd1cmUgdGhpcyBvdXQgaXMgdG8gZGlnIGludG8gdGhlIGNvZGUgaXRzZWxmLiBUaW1lIHRvIGNoZWNrIGBtbS92bXNjYW4uY2AuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiBpbiB0aGVyZSBhbmQgbWFrZSBzdXJlIEkgaGF2ZSBhbGwgdGhlIHJlbGV2YW50IGNvbmZpZ3MgY292ZXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVjbGFpbV9zdG9yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3Ztc2Nhbi5jPTgwMTU9RVhQT1JUX1NZTUJPTF9HUEwoY2hlY2tfbW92ZV91bmV2aWN0YWJsZV9mb2xpb3MpO1xuLS1cbm1tL3Ztc2Nhbi5jLTgwMTctI2lmIGRlZmluZWQoQ09ORklHX1NZU0ZTKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfTlVNQSlcbm1tL3Ztc2Nhbi5jOjgwMTg6c3RhdGljIHNzaXplX3QgcmVjbGFpbV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG5tbS92bXNjYW4uYy04MDE5LVx0XHRcdCAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIyOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDM4CgkJCQkJCQlvdXRwdXQ6IDE2NwoJCQkJCQkJdGhvdWdodHM6IDE5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgZnV6emluZyBzdHJhdGVneS4gVGhlIGtleSBoZXJlIGlzIHRoZSBjb21iaW5hdGlvbiBvZiBgQ09ORklHX1NZU0ZTYCBhbmQgYENPTkZJR19OVU1BYCwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyB0YXJnZXRzIGEgZmFpcmx5IHNwZWNpZmljLCBidXQgY3JpdGljYWwsIHNlY3Rpb24gb2YgdGhlIGtlcm5lbC4KCkxldCYjMzk7cyBicmVhayB0aGlzIGRvd246IGBXb3J0aEZ1enppbmdgIGlzIHNldCB0byBgdHJ1ZWAsIHdoaWNoIGlzIHRoZSBjb3JyZWN0IGFzc2Vzc21lbnQgZ2l2ZW4gdGhlIGNoYW5nZXMuIFRoZSBgRm9jdXNTeW1ib2xzYCBhcmUgc3BvdCBvbiDigJMgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gLCBgc2hvdWxkX2Fib3J0X3NjYW5gLCBgbWVtb3J5X3JlY2xhaW1gLCBhbmQgYHJlY2xhaW1fc3RvcmVgIGFyZSBkaXJlY3RseSBpbXBhY3RlZCBieSB0aGUgcGF0Y2guIFRob3NlIGFyZSAqZXhhY3RseSogdGhlIGZ1bmN0aW9ucyBJIHdvdWxkIHRhcmdldC4gVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhhdCBsaXN0IG9mIGZ1bmN0aW9ucyBpcyBjb3JyZWN0LgoKTm93LCB0aGUgYEVuYWJsZUNvbmZpZ3NgOiBgTUVNQ0dgLCBgTlVNQWAsIGFuZCBgU1lTRlNgIGFyZSBhbGwgZXNzZW50aWFsIGZvciB0cmlnZ2VyaW5nIHRoZSBjb2RlIHBhdGhzIG9mIGludGVyZXN0LiBUaGUgcmVhc29uaW5nIGhpdHMgdGhlIG5haWwgb24gdGhlIGhlYWQ6IHRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyBob3cgdGhlc2UgZnVuY3Rpb25zIGhhbmRsZSBzaWduYWxzIGFuZCBpbnRlcmFjdCB3aXRoIHRoZSBjZ3JvdXAgdjIgbWVtb3J5IHJlY2xhaW0gbWVjaGFuaXNtIGFuZCB0aGUgc3lzZnMgcmVjbGFpbSBpbnRlcmZhY2UuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHNpZ25hbCBoYW5kbGluZyBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LCB3aGljaCBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gVGhlIGdvYWwgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIG5ldyBzaWduYWwgaGFuZGxpbmcgbG9naWMgZnVuY3Rpb25zIGNvcnJlY3RseSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGluc3RhYmlsaXR5IG9yIHZ1bG5lcmFiaWxpdGllcy4gVGhpcyBpcyBhIHZlcnkgdGFyZ2V0ZWQgYW5kIGludGVsbGlnZW50IGFwcHJvYWNoIHRvIGZ1enppbmcgYSBjcml0aWNhbCBrZXJuZWwgZnVuY3Rpb24uIFdlIHNob3VsZCBkZWZpbml0ZWx5IHByaW9yaXRpemUgdGhpcyBzdHJhdGVneS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTUNHJiMzNDssCiAgICAmIzM0O05VTUEmIzM0OywKICAgICYjMzQ7U1lTRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1c2VyX3Byb2FjdGl2ZV9yZWNsYWltJiMzNDssCiAgICAmIzM0O3Nob3VsZF9hYm9ydF9zY2FuJiMzNDssCiAgICAmIzM0O21lbW9yeV9yZWNsYWltJiMzNDssCiAgICAmIzM0O3JlY2xhaW1fc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgYmVoYXZpb3Igb2YgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbSBhbmQgc2hvdWxkX2Fib3J0X3NjYW4gdG8gaGFuZGxlIHNpZ25hbHMgYnkgcmV0dXJuaW5nIC1FUkVTVEFSVFNZUyBhbmQgYWJvcnRpbmcgdGhlIHNjYW4uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHZpYSBjZ3JvdXAgdjIgbWVtb3J5LnJlY2xhaW0gb3Igc3lzZnMgcmVjbGFpbSBpbnRlcmZhY2UuIEZ1enppbmcgdGhlc2UgcGF0aHMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGUgbmV3IHNpZ25hbCBoYW5kbGluZyBsb2dpYyB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRU1DRyYjMzQ7LAogICAgJiMzNDtOVU1BJiMzNDssCiAgICAmIzM0O1NZU0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXNlcl9wcm9hY3RpdmVfcmVjbGFpbSYjMzQ7LAogICAgJiMzNDtzaG91bGRfYWJvcnRfc2NhbiYjMzQ7LAogICAgJiMzNDttZW1vcnlfcmVjbGFpbSYjMzQ7LAogICAgJiMzNDtyZWNsYWltX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIGJlaGF2aW9yIG9mIHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0gYW5kIHNob3VsZF9hYm9ydF9zY2FuIHRvIGhhbmRsZSBzaWduYWxzIGJ5IHJldHVybmluZyAtRVJFU1RBUlRTWVMgYW5kIGFib3J0aW5nIHRoZSBzY2FuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgY2dyb3VwIHYyIG1lbW9yeS5yZWNsYWltIG9yIHN5c2ZzIHJlY2xhaW0gaW50ZXJmYWNlLiBGdXp6aW5nIHRoZXNlIHBhdGhzIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG5ldyBzaWduYWwgaGFuZGxpbmcgbG9naWMgd29ya3MgY29ycmVjdGx5IGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjM0LjQ3OTk1MDQzM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3NDEwMzQwOTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FTUNHXCIsXG4gICAgXCJOVU1BXCIsXG4gICAgXCJTWVNGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVzZXJfcHJvYWN0aXZlX3JlY2xhaW1cIixcbiAgICBcInNob3VsZF9hYm9ydF9zY2FuXCIsXG4gICAgXCJtZW1vcnlfcmVjbGFpbVwiLFxuICAgIFwicmVjbGFpbV9zdG9yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGJlaGF2aW9yIG9mIHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0gYW5kIHNob3VsZF9hYm9ydF9zY2FuIHRvIGhhbmRsZSBzaWduYWxzIGJ5IHJldHVybmluZyAtRVJFU1RBUlRTWVMgYW5kIGFib3J0aW5nIHRoZSBzY2FuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgY2dyb3VwIHYyIG1lbW9yeS5yZWNsYWltIG9yIHN5c2ZzIHJlY2xhaW0gaW50ZXJmYWNlLiBGdXp6aW5nIHRoZXNlIHBhdGhzIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG5ldyBzaWduYWwgaGFuZGxpbmcgbG9naWMgd29ya3MgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMjo1MDozNC40Nzk5NTU4NjNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMjg3MjU0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGY5ZDI0OWUxZjI1MTlhZTdkZTkyZDlmYTFkZWMwOGFjMjI1YTcxMmRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTcgMjI6NTA6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uY1xcbmluZGV4IDM1YzNiYjE1YWU5NmEzLi4wZmRhODExZmNiMDUxNyAxMDA2NDRcXG4tLS0gYS9tbS92bXNjYW4uY1xcbisrKyBiL21tL3Ztc2Nhbi5jXFxuQEAgLTQ5MjksNiArNDkyOSw5IEBAIHN0YXRpYyBib29sIHNob3VsZF9hYm9ydF9zY2FuKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXFxuIFxcdGludCBpO1xcbiBcXHRlbnVtIHpvbmVfd2F0ZXJtYXJrcyBtYXJrO1xcbiBcXG4rXFx0aWYgKHVubGlrZWx5KHNjLVxcdTAwM2Vwcm9hY3RpdmUgXFx1MDAyNlxcdTAwMjYgc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpKVxcbitcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFxuIFxcdGlmIChzYy1cXHUwMDNlbnJfcmVjbGFpbWVkIFxcdTAwM2U9IG1heChzYy1cXHUwMDNlbnJfdG9fcmVjbGFpbSwgY29tcGFjdF9nYXAoc2MtXFx1MDAzZW9yZGVyKSkpXFxuIFxcdFxcdHJldHVybiB0cnVlO1xcbiBcXG5AQCAtNzkwOSw4ICs3OTEyLDE0IEBAIGludCB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltKGNoYXIgKmJ1ZixcXG4gXFx0XFx0dW5zaWduZWQgbG9uZyBiYXRjaF9zaXplID0gKG5yX3RvX3JlY2xhaW0gLSBucl9yZWNsYWltZWQpIC8gNDtcXG4gXFx0XFx0dW5zaWduZWQgbG9uZyByZWNsYWltZWQ7XFxuIFxcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBSZXR1cm4gLUVSRVNUQVJUU1lTIHRvIGFsbG93IHRoZSBmcmVlemVyIHRvIGludGVycnVwdCB0aGVcXG4rXFx0XFx0ICogdGFzay4gVGhlIHN5c2NhbGwgd2lsbCBiZSB0cmFuc3BhcmVudGx5IHJlc3RhcnRlZCB1cG9uXFxuK1xcdFxcdCAqIHJlc3VtZS4gUmVhbCBzaWduYWxzIChlLmcuIFNJR0lOVCkgd2lsbCBiZSBhdXRvbWF0aWNhbGx5XFxuK1xcdFxcdCAqIGNvbnZlcnRlZCB0byAtRUlOVFIgYnkgdGhlIHNpZ25hbCBsYXllci5cXG4rXFx0XFx0ICovXFxuIFxcdFxcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSlcXG4tXFx0XFx0XFx0cmV0dXJuIC1FSU5UUjtcXG4rXFx0XFx0XFx0cmV0dXJuIC1FUkVTVEFSVFNZUztcXG4gXFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIFRoaXMgaXMgdGhlIGZpbmFsIGF0dGVtcHQsIGRyYWluIHBlcmNwdSBscnUgY2FjaGVzIGluIHRoZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMjo1MDozNC45MTM0MTg0NDRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2OTc2ODYzNzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FTUNHXCIsXG4gICAgXCJOVU1BXCIsXG4gICAgXCJTWVNGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVzZXJfcHJvYWN0aXZlX3JlY2xhaW1cIixcbiAgICBcInNob3VsZF9hYm9ydF9zY2FuXCIsXG4gICAgXCJtZW1vcnlfcmVjbGFpbVwiLFxuICAgIFwicmVjbGFpbV9zdG9yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGJlaGF2aW9yIG9mIHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0gYW5kIHNob3VsZF9hYm9ydF9zY2FuIHRvIGhhbmRsZSBzaWduYWxzIGJ5IHJldHVybmluZyAtRVJFU1RBUlRTWVMgYW5kIGFib3J0aW5nIHRoZSBzY2FuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgY2dyb3VwIHYyIG1lbW9yeS5yZWNsYWltIG9yIHN5c2ZzIHJlY2xhaW0gaW50ZXJmYWNlLiBGdXp6aW5nIHRoZXNlIHBhdGhzIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG5ldyBzaWduYWwgaGFuZGxpbmcgbG9naWMgd29ya3MgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGY5ZDI0OWUxZjI1MTlhZTdkZTkyZDlmYTFkZWMwOGFjMjI1YTcxMmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxNyAyMjo1MDozMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmNcbmluZGV4IDM1YzNiYjE1YWU5NmEzLi4wZmRhODExZmNiMDUxNyAxMDA2NDRcbi0tLSBhL21tL3Ztc2Nhbi5jXG4rKysgYi9tbS92bXNjYW4uY1xuQEAgLTQ5MjksNiArNDkyOSw5IEBAIHN0YXRpYyBib29sIHNob3VsZF9hYm9ydF9zY2FuKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXG4gXHRpbnQgaTtcbiBcdGVudW0gem9uZV93YXRlcm1hcmtzIG1hcms7XG4gXG4rXHRpZiAodW5saWtlbHkoc2MtXHUwMDNlcHJvYWN0aXZlIFx1MDAyNlx1MDAyNiBzaWduYWxfcGVuZGluZyhjdXJyZW50KSkpXG4rXHRcdHJldHVybiB0cnVlO1xuK1xuIFx0aWYgKHNjLVx1MDAzZW5yX3JlY2xhaW1lZCBcdTAwM2U9IG1heChzYy1cdTAwM2Vucl90b19yZWNsYWltLCBjb21wYWN0X2dhcChzYy1cdTAwM2VvcmRlcikpKVxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcbkBAIC03OTA5LDggKzc5MTIsMTQgQEAgaW50IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oY2hhciAqYnVmLFxuIFx0XHR1bnNpZ25lZCBsb25nIGJhdGNoX3NpemUgPSAobnJfdG9fcmVjbGFpbSAtIG5yX3JlY2xhaW1lZCkgLyA0O1xuIFx0XHR1bnNpZ25lZCBsb25nIHJlY2xhaW1lZDtcbiBcbitcdFx0LypcbitcdFx0ICogUmV0dXJuIC1FUkVTVEFSVFNZUyB0byBhbGxvdyB0aGUgZnJlZXplciB0byBpbnRlcnJ1cHQgdGhlXG4rXHRcdCAqIHRhc2suIFRoZSBzeXNjYWxsIHdpbGwgYmUgdHJhbnNwYXJlbnRseSByZXN0YXJ0ZWQgdXBvblxuK1x0XHQgKiByZXN1bWUuIFJlYWwgc2lnbmFscyAoZS5nLiBTSUdJTlQpIHdpbGwgYmUgYXV0b21hdGljYWxseVxuK1x0XHQgKiBjb252ZXJ0ZWQgdG8gLUVJTlRSIGJ5IHRoZSBzaWduYWwgbGF5ZXIuXG4rXHRcdCAqL1xuIFx0XHRpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpXG4tXHRcdFx0cmV0dXJuIC1FSU5UUjtcbitcdFx0XHRyZXR1cm4gLUVSRVNUQVJUU1lTO1xuIFxuIFx0XHQvKlxuIFx0XHQgKiBUaGlzIGlzIHRoZSBmaW5hbCBhdHRlbXB0LCBkcmFpbiBwZXJjcHUgbHJ1IGNhY2hlcyBpbiB0aGVcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjM0LjkxMzQxOTkzNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNTI0NzUzNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVk0gU2NhbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBtbS92bXNjYW4uY2AuIEl0J3MgcHJldHR5IGZvY3VzZWQ7IHRoZSBjaGFuZ2VzIHplcm8gaW4gb24gYHNob3VsZF9hYm9ydF9zY2FuYCBhbmQgYHVzZXJfcHJvYWN0aXZlX3JlY2xhaW1gLiBSaWdodCBhd2F5LCB0aGUgYWRkaXRpb24gdG8gYHNob3VsZF9hYm9ydF9zY2FuYCBjYXRjaGVzIG15IGV5ZTogYSBjaGVjayBmb3IgYHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpYCAqb25seSogd2hlbiB0aGUgc2NhbiBpcyBcInByb2FjdGl2ZVwiLiBTbywgaWYgYSBzaWduYWwgaXMgcGVuZGluZyBvbiB0aGUgY3VycmVudCBwcm9jZXNzIGFuZCB0aGUgc2NhbiBpcyBwcm9hY3RpdmUsIHdlJ3JlIGJhaWxpbmcgb3V0LiBUaGlzIHNlZW1zIHRvIGJlIHNvbWUgZm9ybSBvZiBlYXJseSB0ZXJtaW5hdGlvbiBvciBwcmlvcml0aXphdGlvbiwgbGlrZWx5IGluIHJlc3BvbnNlIHRvIGEgdXNlci1pbml0aWF0ZWQgYWN0aW9uLiBXZSdyZSByZXR1cm5pbmcgdHJ1ZS5cblxuTm93LCBsZXQncyBkaWcgaW50byBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAuIFRoZSBrZXkgaGVyZSBpcyB0aGUgY2hhbmdlIGZyb20gYC1FSU5UUmAgdG8gYC1FUkVTVEFSVFNZU2Agd2hlbiBhIHNpZ25hbCBpcyBwZW5kaW5nLiBUaGUgY29tbWVudCBjbGFyaWZpZXMgdGhpczogYC1FUkVTVEFSVFNZU2AgaXMgYmVpbmcgcmV0dXJuZWQgc3BlY2lmaWNhbGx5IHRvIGFsbG93IHRoZSBmcmVlemVyIHRvIGludGVycnVwdCB0aGUgdGFzayBjbGVhbmx5LiBUaGUgcGF0Y2ggYXV0aG9yIGlzIGJlaW5nIHZlcnkgdGhvdWdodGZ1bCBoZXJlLCBleHBsYWluaW5nIGhvdyByZWFsIHNpZ25hbHMgYXJlIGhhbmRsZWQgYnkgdGhlIHNpZ25hbCBsYXllci4gVGhpcyBzdWdnZXN0cyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBzaXR1YXRpb24gd2hlcmUgYSB0YXNrIG1pZ2h0IGJlIHByb2FjdGl2ZWx5IHJlY2xhaW1pbmcgbWVtb3J5LCBhbmQgYSB1c2VyIG9yIHN5c3RlbS1sZXZlbCBzaWduYWwgKGxpa2UgYSBmcmVlemUgb3IgYSB0ZXJtaW5hdGlvbiByZXF1ZXN0KSBuZWVkcyB0byB0YWtlIHByZWNlZGVuY2UgKndpdGhvdXQqIGxvc2luZyB0aGUgb3JpZ2luYWwgc3lzY2FsbC4gSXTigJlzIGFsc28gaW50ZXJlc3RpbmcgdGhhdCB3ZSdyZSB0YWxraW5nIGFib3V0IHNpZ25hbCBoYW5kbGluZyBpbiB0aGVzZSBzcGVjaWZpYyBmdW5jdGlvbnMuXG5cblRoZSBmYWN0IHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgaW4gdGhlIHNjYW5uaW5nIGFuZCByZWNsYWltaW5nIGNvZGUgbWFrZXMgbWUgdGhpbmsgdGhhdCBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAgaXMgcHJvYmFibHkgcmVsYXRlZCB0byB0aGUgY2dyb3VwIHYyIGBtZW1vcnkucmVjbGFpbWAgaW50ZXJmYWNlLiBUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIHJlZmluaW5nIGhvdyBwcm9hY3RpdmUgbWVtb3J5IHJlY2xhbWF0aW9uIGlzIGhhbmRsZWQgaW4gdGhlIHByZXNlbmNlIG9mIHNpZ25hbHMgYW5kIHVzZXIgaW50ZXJhY3Rpb24sIHBhcnRpY3VsYXJseSB3aGVuIHRob3NlIHNpZ25hbHMgbWlnaHQgaW52b2x2ZSBmcmVlemluZyBvciBpbnRlcnJ1cHRpbmcgYSBwcm9jZXNzLiBUaGlzIGlzIGEgc29saWQgcGllY2Ugb2Ygd29yazsgdGhlIGxvZ2ljIGlzIHByZXR0eSBjbGVhci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxMSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjQwLjA2NTg5NzA5OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjE0MDQ3MDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVzZXJfcHJvYWN0aXZlX3JlY2xhaW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vaW50ZXJuYWwuaD02MjQ9ZXh0ZXJuIHZvaWQgcmVjbGFpbV90aHJvdHRsZShwZ19kYXRhX3QgKnBnZGF0LCBlbnVtIHZtc2Nhbl90aHJvdHRsZV9zdGF0ZSByZWFzb24pO1xcbm1tL2ludGVybmFsLmg6NjI1OmludCB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltKGNoYXIgKmJ1ZixcXG5tbS9pbnRlcm5hbC5oLTYyNi1cXHRcXHRcXHQgICBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHBnX2RhdGFfdCAqcGdkYXQpO1xcbi0tXFxubW0vbWVtY29udHJvbC5jPTQ5ODk9c3RhdGljIHNzaXplX3QgbWVtb3J5X3JlY2xhaW0oc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBjaGFyICpidWYsXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtNDk5NC1cXG5tbS9tZW1jb250cm9sLmM6NDk5NTpcXHRyZXQgPSB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltKGJ1ZiwgbWVtY2csIE5VTEwpO1xcbm1tL21lbWNvbnRyb2wuYy00OTk2LVxcdGlmIChyZXQpXFxuLS1cXG5tbS92bXNjYW4uYz03ODYzPXN0YXRpYyBjb25zdCBtYXRjaF90YWJsZV90IHRva2VucyA9IHtcXG4tLVxcbm1tL3Ztc2Nhbi5jLTc4NjgtXFxubW0vdm1zY2FuLmM6Nzg2OTppbnQgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbShjaGFyICpidWYsXFxubW0vdm1zY2FuLmMtNzg3MC1cXHRcXHRcXHQgICBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHBnX2RhdGFfdCAqcGdkYXQpXFxuLS1cXG5tbS92bXNjYW4uYz04MDE4PXN0YXRpYyBzc2l6ZV90IHJlY2xhaW1fc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxubW0vdm1zY2FuLmMtODAyMy1cXG5tbS92bXNjYW4uYzo4MDI0OlxcdHJldCA9IHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0oKGNoYXIgKilidWYsIE5VTEwsIE5PREVfREFUQShuaWQpKTtcXG5tbS92bXNjYW4uYy04MDI1LVxcdHJldHVybiByZXQgPyAtRUFHQUlOIDogY291bnQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjQ0LjY3OTk1MDc1NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMjA3MzA4MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLZXJuZWwncyBNZW1vcnkgUmVjbGFpbSBCZWhhdmlvcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGhvdyBpdCBjaGFuZ2VzIHRoZSBtZW1vcnkgcmVjbGFpbSBwcm9jZXNzIGluIHRoZSBrZXJuZWwsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIHVzZXItaW5pdGlhdGVkIHByb2FjdGl2ZSByZWNsYWltLiBJdCBzZWVtcyBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLCBjYWxsZWQgZnJvbSBgbWVtb3J5X3JlY2xhaW1gIGluIGBtbS9tZW1jb250cm9sLmNgIGFuZCBhbHNvIGZyb20gYHJlY2xhaW1fc3RvcmVgIGluIGBtbS92bXNjYW4uY2AuICBgbWVtb3J5X3JlY2xhaW1gIGhhbmRsZXMgdGhlIGBtZW1vcnkucmVjbGFpbWAgY2dyb3VwIHYyIGZpbGUsIHdoaWxlIGByZWNsYWltX3N0b3JlYCBtYW5hZ2VzIHRoZSBgL3N5cy9kZXZpY2VzL3N5c3RlbS9ub2RlL25vZGVYL3JlY2xhaW1gIHN5c2ZzIGZpbGUuXG5cblRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggc2VlbXMgdG8gaGluZ2Ugb24gaG93IGl0IGhhbmRsZXMgc2lnbmFscyBkdXJpbmcgdGhlIHJlY2xhaW0gcHJvY2Vzcy4gIFNwZWNpZmljYWxseSwgaXQgbWFrZXMgYHNob3VsZF9hYm9ydF9zY2FuYCBhYm9ydCBpZiBhIHByb2FjdGl2ZSBzY2FuIGlzIGhhcHBlbmluZyAoYHNjLVx1MDAzZXByb2FjdGl2ZWApIGFuZCB0aGUgY3VycmVudCB0YXNrIGhhcyBhIHBlbmRpbmcgc2lnbmFsIChgc2lnbmFsX3BlbmRpbmcoY3VycmVudClgKS4gIEZ1cnRoZXJtb3JlLCBgdXNlcl9wcm9hY3RpdmVfcmVjbGFpbWAgaXMgbm93IHNldCB0byByZXR1cm4gYC1FUkVTVEFSVFNZU2AgaW5zdGVhZCBvZiBgLUVJTlRSYCBpbiB0aGUgc2FtZSBzaWduYWwgcGVuZGluZyBzY2VuYXJpby5cblxuVGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlIG5vdyBpdCdzIHBvc3NpYmxlIGZvciB0aGUgZnJlZXplciB0byBpbnRlcnJ1cHQgdGhlIHRhc2suIFRoaXMgYWxzbyBtZWFucyB0aGF0IHN5c2NhbGxzIHdpbGwgYmUgcmVzdGFydGVkLCBhIHByZXR0eSBpbXBvcnRhbnQgZGlzdGluY3Rpb24gdGhhdCBoYXMgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBmb3Igc3RhYmlsaXR5IGFuZCByZXNwb25zaXZlbmVzcy4gR2l2ZW4gdGhlIGNoYW5nZSBpbiByZXR1cm4gY29kZSBhbmQgdGhlIHBvdGVudGlhbCBmb3IgaW50ZXJydXB0aW9ucywgdGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0IG5lZWRzIHRob3JvdWdoIGZ1enppbmcgdG8gZW5zdXJlIHRoZXJlIGFyZW4ndCBhbnkgdW5leHBlY3RlZCBzaWRlIGVmZmVjdHMgb3IgcmFjZSBjb25kaXRpb25zLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gYG1tL3Ztc2Nhbi5jYCBpcyBhbHdheXMgY29tcGlsZWQsIHdoaWNoIGNvdmVycyB0aGUgYHJlY2xhaW1fc3RvcmVgIGNvZGUuIGBtbS9tZW1jb250cm9sLmNgIGlzIG9ubHkgY29tcGlsZWQgaWYgYENPTkZJR19NRU1DR2AgaXMgZW5hYmxlZCwgYW5kIHRoZXJlZm9yZSB0aGUgZnVuY3Rpb24gY2FsbGVkIGBtZW1vcnlfcmVjbGFpbWAgaXMgY29uZGl0aW9uYWwuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBkZXRhaWxzIGZvciBgbW0vdm1zY2FuLmNgLCBsaWtlbHkgTlVNQSBvciBzb21ldGhpbmcgcmVsYXRlZCwgdG8gc2VlIHdoZW4gYHJlY2xhaW1fc3RvcmVgIGlzIGluY2x1ZGVkLiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5mb3JtIG15IHRlc3RpbmcgYXBwcm9hY2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwOTcsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjI6NTA6NTAuMDAwNjgzMzU2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwODQyMzkyODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmVjbGFpbV9zdG9yZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9idHJmcy9zeXNmcy5jPTk1Mj1zdGF0aWMgc3NpemVfdCBidHJmc19zaW5mb19keW5hbWljX3JlY2xhaW1fc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbmZzL2J0cmZzL3N5c2ZzLmMtOTYwLVxcbmZzL2J0cmZzL3N5c2ZzLmM6OTYxOnN0YXRpYyBzc2l6ZV90IGJ0cmZzX3NpbmZvX2R5bmFtaWNfcmVjbGFpbV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG5mcy9idHJmcy9zeXNmcy5jLTk2Mi1cXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGtvYmpfYXR0cmlidXRlICphLFxcbi0tXFxuZnMvYnRyZnMvc3lzZnMuYz05ODE9QlRSRlNfQVRUUl9SVyhzcGFjZV9pbmZvLCBkeW5hbWljX3JlY2xhaW0sXFxuZnMvYnRyZnMvc3lzZnMuYy05ODItXFx0ICAgICAgYnRyZnNfc2luZm9fZHluYW1pY19yZWNsYWltX3Nob3csXFxuZnMvYnRyZnMvc3lzZnMuYzo5ODM6XFx0ICAgICAgYnRyZnNfc2luZm9fZHluYW1pY19yZWNsYWltX3N0b3JlKTtcXG5mcy9idHJmcy9zeXNmcy5jLTk4NC1cXG5mcy9idHJmcy9zeXNmcy5jPTk4NT1zdGF0aWMgc3NpemVfdCBidHJmc19zaW5mb19wZXJpb2RpY19yZWNsYWltX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosXFxuLS1cXG5mcy9idHJmcy9zeXNmcy5jLTk5My1cXG5mcy9idHJmcy9zeXNmcy5jOjk5NDpzdGF0aWMgc3NpemVfdCBidHJmc19zaW5mb19wZXJpb2RpY19yZWNsYWltX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbmZzL2J0cmZzL3N5c2ZzLmMtOTk1LVxcdFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmEsXFxuLS1cXG5mcy9idHJmcy9zeXNmcy5jPTEwMTQ9QlRSRlNfQVRUUl9SVyhzcGFjZV9pbmZvLCBwZXJpb2RpY19yZWNsYWltLFxcbmZzL2J0cmZzL3N5c2ZzLmMtMTAxNS1cXHQgICAgICBidHJmc19zaW5mb19wZXJpb2RpY19yZWNsYWltX3Nob3csXFxuZnMvYnRyZnMvc3lzZnMuYzoxMDE2OlxcdCAgICAgIGJ0cmZzX3NpbmZvX3BlcmlvZGljX3JlY2xhaW1fc3RvcmUpO1xcbmZzL2J0cmZzL3N5c2ZzLmMtMTAxNy1cXG4tLVxcbm1tL3Ztc2Nhbi5jPTgwMTU9RVhQT1JUX1NZTUJPTF9HUEwoY2hlY2tfbW92ZV91bmV2aWN0YWJsZV9mb2xpb3MpO1xcbi0tXFxubW0vdm1zY2FuLmMtODAxNy0jaWYgZGVmaW5lZChDT05GSUdfU1lTRlMpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX05VTUEpXFxubW0vdm1zY2FuLmM6ODAxODpzdGF0aWMgc3NpemVfdCByZWNsYWltX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG5tbS92bXNjYW4uYy04MDE5LVxcdFxcdFxcdCAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjUyLjA4NDkyNzIzM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NDcxOTM1NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgTWVtb3J5IFJlY2xhaW0gQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIGByZWNsYWltX3N0b3JlYCBpcyBkZWZpbml0ZWx5IHRpZWQgdG8gYENPTkZJR19TWVNGU2AgYW5kIGBDT05GSUdfTlVNQWAuIFRoYXQgbWFrZXMgc2Vuc2U7IHN0b3JpbmcgcmVjbGFpbSBpbmZvcm1hdGlvbiBpbiBzeXNmcyBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggTlVNQSBhcmNoaXRlY3R1cmVzIGlzIGxvZ2ljYWwuIE5vdywgdGhlIGBtZW1vcnlfcmVjbGFpbWAgZnVuY3Rpb24gaXMgY29udHJvbGxlZCBieSBgQ09ORklHX01FTUNHYC4gUmlnaHQsIHRoYXQncyB3aGF0IEkgZXhwZWN0ZWTigJRtZW1vcnkgY2dyb3VwcyBhbmQgcmVjbGFpbSBhcmUgaW50cmluc2ljYWxseSBsaW5rZWQuIFRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gaG93IHRoYXQgcGxheXMgb3V0LCBJIHJlYWxseSBzaG91bGQgZGl2ZSBpbnRvIHRoZSBhY3R1YWwgY29kZS4gTG9va3MgbGlrZSBgbW0vbWVtY29udHJvbC5jYCBpcyB0aGUgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBkZXRhaWxzIG9mIHRoZSBgbWVtb3J5X3JlY2xhaW1gIGZ1bmN0aW9uLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGluIHJlbGF0aW9uIHRvIG1lbW9yeSBjZ3JvdXBzIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlY2xhaW0gcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ1NSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjU1LjAzMjEyMjU2NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODEwMzAwODk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbW9yeV9yZWNsYWltXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg9MTM1PUtWTV9YODZfT1BfT1BUSU9OQUwodm1fbW92ZV9lbmNfY29udGV4dF9mcm9tKVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bS14ODYtb3BzLmg6MTM2OktWTV9YODZfT1BfT1BUSU9OQUwoZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZClcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm0teDg2LW9wcy5oLTEzNy1LVk1fWDg2X09QKGdldF9mZWF0dXJlX21zcilcXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0Lmg9MTc4NT1zdHJ1Y3Qga3ZtX3g4Nl9vcHMge1xcbi0tXFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xOTg2LVxcdGludCAoKnZtX21vdmVfZW5jX2NvbnRleHRfZnJvbSkoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgc291cmNlX2ZkKTtcXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oOjE5ODc6XFx0dm9pZCAoKmd1ZXN0X21lbW9yeV9yZWNsYWltZWQpKHN0cnVjdCBrdm0gKmt2bSk7XFxuYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaC0xOTg4LVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYz0zMjU3PXN0YXRpYyB2b2lkIHNldl9mbHVzaF9lbmNyeXB0ZWRfcGFnZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHZvaWQgKnZhKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zZXYuYy0zMjkyLVxcbmFyY2gveDg2L2t2bS9zdm0vc2V2LmM6MzI5Mzp2b2lkIHNldl9ndWVzdF9tZW1vcnlfcmVjbGFpbWVkKHN0cnVjdCBrdm0gKmt2bSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL3Nldi5jLTMyOTQte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzI1PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NDQ2LVxcdC5tZW1fZW5jX3VucmVnaXN0ZXJfcmVnaW9uID0gc2V2X21lbV9lbmNfdW5yZWdpc3Rlcl9yZWdpb24sXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1NDQ3OlxcdC5ndWVzdF9tZW1vcnlfcmVjbGFpbWVkID0gc2V2X2d1ZXN0X21lbW9yeV9yZWNsYWltZWQsXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NDQ4LVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaD05ODc9aW50IHNldl92bV9tb3ZlX2VuY19jb250ZXh0X2Zyb20oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQgc291cmNlX2ZkKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oOjk4ODp2b2lkIHNldl9ndWVzdF9tZW1vcnlfcmVjbGFpbWVkKHN0cnVjdCBrdm0gKmt2bSk7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaC05ODktaW50IHNldl9oYW5kbGVfdm1nZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTExMDczPXN0YXRpYyB2b2lkIHZjcHVfbG9hZF9lb2lfZXhpdG1hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTEwOTItXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjExMDkzOnZvaWQga3ZtX2FyY2hfZ3Vlc3RfbWVtb3J5X3JlY2xhaW1lZChzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTExMDk0LXtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTEwOTU6XFx0a3ZtX3g4Nl9jYWxsKGd1ZXN0X21lbW9yeV9yZWNsYWltZWQpKGt2bSk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTExMDk2LX1cXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX2ZmYS9kcml2ZXIuYz03ODg9c3RhdGljIGludCBmZmFfbWVtb3J5X29wcyh1MzIgZnVuY19pZCwgc3RydWN0IGZmYV9tZW1fb3BzX2FyZ3MgKmFyZ3MpXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvZHJpdmVyLmMtODEyLVxcbmRyaXZlcnMvZmlybXdhcmUvYXJtX2ZmYS9kcml2ZXIuYzo4MTM6c3RhdGljIGludCBmZmFfbWVtb3J5X3JlY2xhaW0odTY0IGdfaGFuZGxlLCB1MzIgZmxhZ3MpXFxuZHJpdmVycy9maXJtd2FyZS9hcm1fZmZhL2RyaXZlci5jLTgxNC17XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvZHJpdmVyLmM9MTYxMT1zdGF0aWMgY29uc3Qgc3RydWN0IGZmYV9tZW1fb3BzIGZmYV9kcnZfbWVtX29wcyA9IHtcXG5kcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvZHJpdmVyLmM6MTYxMjpcXHQubWVtb3J5X3JlY2xhaW0gPSBmZmFfbWVtb3J5X3JlY2xhaW0sXFxuZHJpdmVycy9maXJtd2FyZS9hcm1fZmZhL2RyaXZlci5jLTE2MTMtXFx0Lm1lbW9yeV9zaGFyZSA9IGZmYV9tZW1vcnlfc2hhcmUsXFxuLS1cXG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmM9MjcwPXN0YXRpYyBpbnQgb3B0ZWVfZmZhX3NobV9yZWdpc3RlcihzdHJ1Y3QgdGVlX2NvbnRleHQgKmN0eCwgc3RydWN0IHRlZV9zaG0gKnNobSxcXG4tLVxcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYy0zMDQtXFx0aWYgKHJjKSB7XFxuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jOjMwNTpcXHRcXHRtZW1fb3BzLVxcdTAwM2VtZW1vcnlfcmVjbGFpbShhcmdzLmdfaGFuZGxlLCAwKTtcXG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmMtMzA2LVxcdFxcdHJldHVybiByYztcXG4tLVxcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYz0zMTQ9c3RhdGljIGludCBvcHRlZV9mZmFfc2htX3VucmVnaXN0ZXIoc3RydWN0IHRlZV9jb250ZXh0ICpjdHgsXFxuLS1cXG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmMtMzM1LVxcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYzozMzY6XFx0cmMgPSBtZW1fb3BzLVxcdTAwM2VtZW1vcnlfcmVjbGFpbShnbG9iYWxfaGFuZGxlLCAwKTtcXG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmMtMzM3LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYz0zNDM9c3RhdGljIGludCBvcHRlZV9mZmFfc2htX3VucmVnaXN0ZXJfc3VwcChzdHJ1Y3QgdGVlX2NvbnRleHQgKmN0eCxcXG4tLVxcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYy0zNTgtXFx0bWVtX29wcyA9IG9wdGVlLVxcdTAwM2VmZmEuZmZhX2Rldi1cXHUwMDNlb3BzLVxcdTAwM2VtZW1fb3BzO1xcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYzozNTk6XFx0cmMgPSBtZW1fb3BzLVxcdTAwM2VtZW1vcnlfcmVjbGFpbShnbG9iYWxfaGFuZGxlLCAwKTtcXG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmMtMzYwLVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYz02ODI9c3RhdGljIGludCBvcHRlZV9mZmFfbGVuZF9wcm90bWVtKHN0cnVjdCBvcHRlZSAqb3B0ZWUsIHN0cnVjdCB0ZWVfc2htICpwcm90bWVtLFxcbi0tXFxuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jLTczNy1lcnJfcmVjbGFpbTpcXG5kcml2ZXJzL3RlZS9vcHRlZS9mZmFfYWJpLmM6NzM4OlxcdG1lbV9vcHMtXFx1MDAzZW1lbW9yeV9yZWNsYWltKGFyZ3MuZ19oYW5kbGUsIDApO1xcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYy03MzktXFx0cmV0dXJuIHJjO1xcbi0tXFxuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jPTc0Mj1zdGF0aWMgaW50IG9wdGVlX2ZmYV9yZWNsYWltX3Byb3RtZW0oc3RydWN0IG9wdGVlICpvcHRlZSxcXG4tLVxcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYy03NjItXFxuZHJpdmVycy90ZWUvb3B0ZWUvZmZhX2FiaS5jOjc2MzpcXHRyYyA9IG1lbV9vcHMtXFx1MDAzZW1lbW9yeV9yZWNsYWltKGdsb2JhbF9oYW5kbGUsIDApO1xcbmRyaXZlcnMvdGVlL29wdGVlL2ZmYV9hYmkuYy03NjQtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy90ZWUvdHN0ZWUvY29yZS5jPTI0Mj1zdGF0aWMgaW50IHRzdGVlX3NobV9yZWdpc3RlcihzdHJ1Y3QgdGVlX2NvbnRleHQgKmN0eCwgc3RydWN0IHRlZV9zaG0gKnNobSxcXG4tLVxcbmRyaXZlcnMvdGVlL3RzdGVlL2NvcmUuYy0yODktXFx0aWYgKHJjKSB7XFxuZHJpdmVycy90ZWUvdHN0ZWUvY29yZS5jOjI5MDpcXHRcXHQodm9pZClmZmFfZGV2LVxcdTAwM2VvcHMtXFx1MDAzZW1lbV9vcHMtXFx1MDAzZW1lbW9yeV9yZWNsYWltKHNobS1cXHUwMDNlc2VjX3dvcmxkX2lkLFxcbmRyaXZlcnMvdGVlL3RzdGVlL2NvcmUuYy0yOTEtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIDApO1xcbi0tXFxuZHJpdmVycy90ZWUvdHN0ZWUvY29yZS5jLTI5OS1cXHRcXHRcXHRmZmFfYXJnc1tUU19SUENfUkVUUklFVkVfTUVNX1JQQ19TVEFUVVNdKTtcXG5kcml2ZXJzL3RlZS90c3RlZS9jb3JlLmM6MzAwOlxcdFxcdGZmYV9kZXYtXFx1MDAzZW9wcy1cXHUwMDNlbWVtX29wcy1cXHUwMDNlbWVtb3J5X3JlY2xhaW0oc2htLVxcdTAwM2VzZWNfd29ybGRfaWQsIDApO1xcbmRyaXZlcnMvdGVlL3RzdGVlL2NvcmUuYy0zMDEtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL3RlZS90c3RlZS9jb3JlLmM9MzA3PXN0YXRpYyBpbnQgdHN0ZWVfc2htX3VucmVnaXN0ZXIoc3RydWN0IHRlZV9jb250ZXh0ICpjdHgsIHN0cnVjdCB0ZWVfc2htICpzaG0pXFxuLS1cXG5kcml2ZXJzL3RlZS90c3RlZS9jb3JlLmMtMzM0LVxcbmRyaXZlcnMvdGVlL3RzdGVlL2NvcmUuYzozMzU6XFx0cmMgPSBmZmFfZGV2LVxcdTAwM2VvcHMtXFx1MDAzZW1lbV9vcHMtXFx1MDAzZW1lbW9yeV9yZWNsYWltKHNobS1cXHUwMDNlc2VjX3dvcmxkX2lkLCAwKTtcXG5kcml2ZXJzL3RlZS90c3RlZS9jb3JlLmMtMzM2LVxcbi0tXFxuaW5jbHVkZS9saW51eC9hcm1fZmZhLmg9NDc4PXN0cnVjdCBmZmFfbWVtX29wcyB7XFxuaW5jbHVkZS9saW51eC9hcm1fZmZhLmg6NDc5OlxcdGludCAoKm1lbW9yeV9yZWNsYWltKSh1NjQgZ19oYW5kbGUsIHUzMiBmbGFncyk7XFxuaW5jbHVkZS9saW51eC9hcm1fZmZhLmgtNDgwLVxcdGludCAoKm1lbW9yeV9zaGFyZSkoc3RydWN0IGZmYV9tZW1fb3BzX2FyZ3MgKmFyZ3MpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTI0NTQ9c3RhdGljIGlubGluZSBib29sIGt2bV9hcmNoX25vX3BvbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NTktXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjI0NjA6dm9pZCBrdm1fYXJjaF9ndWVzdF9tZW1vcnlfcmVjbGFpbWVkKHN0cnVjdCBrdm0gKmt2bSk7XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTI0NjEtXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9NDk2Nz1zdGF0aWMgc3NpemVfdCBtZW1vcnlfb29tX2dyb3VwX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZixcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy00OTg4LVxcbm1tL21lbWNvbnRyb2wuYzo0OTg5OnN0YXRpYyBzc2l6ZV90IG1lbW9yeV9yZWNsYWltKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZiwgY2hhciAqYnVmLFxcbm1tL21lbWNvbnRyb2wuYy00OTkwLVxcdFxcdFxcdCAgICAgIHNpemVfdCBuYnl0ZXMsIGxvZmZfdCBvZmYpXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9NTAwMj1zdGF0aWMgc3RydWN0IGNmdHlwZSBtZW1vcnlfZmlsZXNbXSA9IHtcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy01MDcwLVxcdFxcdC5mbGFncyA9IENGVFlQRV9OU19ERUxFR0FUQUJMRSxcXG5tbS9tZW1jb250cm9sLmM6NTA3MTpcXHRcXHQud3JpdGUgPSBtZW1vcnlfcmVjbGFpbSxcXG5tbS9tZW1jb250cm9sLmMtNTA3Mi1cXHR9LFxcbi0tXFxuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5jPTM5MT1pbnQgYXZzX2lwY19nZXRfZndfY29uZmlnKHN0cnVjdCBhdnNfZGV2ICphZGV2LCBzdHJ1Y3QgYXZzX2Z3X2NmZyAqY2ZnKVxcbi0tXFxuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5jLTQxOC1cXHRcXHRjYXNlIEFWU19GV19DRkdfTUVNT1JZX1JFQ0xBSU1FRDpcXG5zb3VuZC9zb2MvaW50ZWwvYXZzL21lc3NhZ2VzLmM6NDE5OlxcdFxcdFxcdGNmZy1cXHUwMDNlbWVtb3J5X3JlY2xhaW1lZCA9ICp0bHYtXFx1MDAzZXZhbHVlO1xcbnNvdW5kL3NvYy9pbnRlbC9hdnMvbWVzc2FnZXMuYy00MjAtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5zb3VuZC9zb2MvaW50ZWwvYXZzL21lc3NhZ2VzLmg9NDYwPXN0cnVjdCBhdnNfZndfY2ZnIHtcXG5zb3VuZC9zb2MvaW50ZWwvYXZzL21lc3NhZ2VzLmgtNDYxLVxcdHN0cnVjdCBhdnNfZndfdmVyc2lvbiBmd192ZXJzaW9uO1xcbnNvdW5kL3NvYy9pbnRlbC9hdnMvbWVzc2FnZXMuaDo0NjI6XFx0dTMyIG1lbW9yeV9yZWNsYWltZWQ7XFxuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5oLTQ2My1cXHR1MzIgc2xvd19jbG9ja19mcmVxX2h6O1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz0xNTU9c3RhdGljIERFRklORV9QRVJfQ1BVKGNwdW1hc2tfdmFyX3QsIGNwdV9raWNrX21hc2spO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTU2LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6MTU3Ol9fd2VhayB2b2lkIGt2bV9hcmNoX2d1ZXN0X21lbW9yeV9yZWNsYWltZWQoc3RydWN0IGt2bSAqa3ZtKVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTU4LXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9MzQxPXN0YXRpYyB2b2lkIGt2bV9mbHVzaF9zaGFkb3dfYWxsKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMzQzLVxcdGt2bV9hcmNoX2ZsdXNoX3NoYWRvd19hbGwoa3ZtKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjM0NDpcXHRrdm1fYXJjaF9ndWVzdF9tZW1vcnlfcmVjbGFpbWVkKGt2bSk7XFxudmlydC9rdm0va3ZtX21haW4uYy0zNDUtfVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz03MjE9c3RhdGljIGludCBrdm1fbW11X25vdGlmaWVyX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTc2NS1cXHRpZiAoa3ZtX2hhbmRsZV9odmFfcmFuZ2Uoa3ZtLCBcXHUwMDI2aHZhX3JhbmdlKS5mb3VuZF9tZW1zbG90KVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NzY2OlxcdFxcdGt2bV9hcmNoX2d1ZXN0X21lbW9yeV9yZWNsYWltZWQoa3ZtKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTc2Ny1cXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9MTc5OD1zdGF0aWMgdm9pZCBrdm1faW52YWxpZGF0ZV9tZW1zbG90KHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtMTgyNC1cXHRrdm1fYXJjaF9mbHVzaF9zaGFkb3dfbWVtc2xvdChrdm0sIG9sZCk7XFxudmlydC9rdm0va3ZtX21haW4uYzoxODI1OlxcdGt2bV9hcmNoX2d1ZXN0X21lbW9yeV9yZWNsYWltZWQoa3ZtKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTE4MjYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjU2Ljg0MjQyODAwN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzQ5MzAyMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byBNZW1vcnkgTWFuYWdlbWVudCAtIEEgUXVpY2sgQ2hlY2sqKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBgbWVtb3J5X3JlY2xhaW1gIGZ1bmN0aW9uLiBUaGUgZmlyc3QgdGhpbmcgSSdtIGRvaW5nIGlzIGNvbmZpcm1pbmcgaXQgbGl2ZXMgd2l0aGluIGBtbS9tZW1jb250cm9sLmNgLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhbmQgSSBoYXZlIGEgZmFpcmx5IGdvb2QgbWVudGFsIG1hcCBvZiB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLiBOb3csIGxldCdzIHNlZS4uLiBpcyBgQ09ORklHX01FTUNHYCB0aGUgb25seSBjb25maWd1cmF0aW9uIGtub2IgSSBuZWVkIHRvIGJlIGNvbmNlcm5lZCB3aXRoIGhlcmU/IFNvbWV0aW1lcywgdGhlcmUgYXJlIHN1YnRsZSBkZXBlbmRlbmNpZXMgb3IgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgZmVhdHVyZXMuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdC4gSSBjYW4gYWxyZWFkeSBpbWFnaW5lIGFsbCB0aGUgcGxhY2VzIHRoaXMgc2luZ2xlIGNvbmZpZyBtaWdodCBpbXBhY3QsIGZyb20ga2VybmVsIG1lbW9yeSBhbGxvY2F0aW9uIHRvIHRoZSB1c2Ugb2YgY2dyb3Vwcy4gTGV0J3Mgc2VlIGlmIHRoaXMgb25lIGNvbmZpZyBpcyBpbmRlZWQgYWxsIHRoYXQgYXBwbGllcyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDMwLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjI6NTE6MDAuMDE3MzYwNDEyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjAxNzUxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfTUVNQ0dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vbWVtY29udHJvbC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL21lbWNvbnRyb2wuYz0yMDk9c3RhdGljIGlubGluZSBzdHJ1Y3Qgb2JqX2Nncm91cCAqX19tZW1jZ19yZXBhcmVudF9vYmpjZ3Moc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxcbi0tXFxubW0vbWVtY29udHJvbC5jLTIyOC1cXG5tbS9tZW1jb250cm9sLmM6MjI5OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5tbS9tZW1jb250cm9sLmMtMjMwLXN0YXRpYyB2b2lkIF9fbWVtX2Nncm91cF9mbHVzaF9zdGF0cyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGJvb2wgZm9yY2UpO1xcbi0tXFxubW0vbWVtY29udHJvbC5jPTUwNT11bnNpZ25lZCBsb25nIGxydXZlY19wYWdlX3N0YXRlX2xvY2FsKHN0cnVjdCBscnV2ZWMgKmxydXZlYyxcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy01MjctXFxubW0vbWVtY29udHJvbC5jOjUyODojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxubW0vbWVtY29udHJvbC5jLTUyOS1zdGF0aWMgdm9pZCBfX21vZF9tZW1jZ19scnV2ZWNfc3RhdGUoc3RydWN0IG1lbV9jZ3JvdXBfcGVyX25vZGUgKnBuLFxcbi0tXFxubW0vbWVtY29udHJvbC5jPTU1Mz1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1lbWNnX3ZtX2V2ZW50X3N0YXRbXSA9IHtcXG5tbS9tZW1jb250cm9sLmM6NTU0OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5tbS9tZW1jb250cm9sLmMtNTU1LVxcdFBHUEdJTixcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz03ODc9c3RhdGljIGxvbmcgbWVtY2dfc3RhdGVfdmFsX2luX3BhZ2VzKGludCBpZHgsIGxvbmcgdmFsKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTgwMi1cXG5tbS9tZW1jb250cm9sLmM6ODAzOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5tbS9tZW1jb250cm9sLmMtODA0LS8qXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9ODcxPXZvaWQgbW9kX21lbWNnX3N0YXRlKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgZW51bSBtZW1jZ19zdGF0X2l0ZW0gaWR4LFxcbi0tXFxubW0vbWVtY29udHJvbC5jLTg4My1cXG5tbS9tZW1jb250cm9sLmM6ODg0OiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5tbS9tZW1jb250cm9sLmMtODg1LS8qIGlkeCBjYW4gYmUgb2YgdHlwZSBlbnVtIG1lbWNnX3N0YXRfaXRlbSBvciBub2RlX3N0YXRfaXRlbS4gKi9cXG4tLVxcbm1tL21lbWNvbnRyb2wuYz0xMDU5PWJvb2wgbWVtY2dfdm1fZXZlbnRfaXRlbV92YWxpZChlbnVtIHZtX2V2ZW50X2l0ZW0gaWR4KVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTEwNjYtXFxubW0vbWVtY29udHJvbC5jOjEwNjc6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYy0xMDY4LXVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzX2xvY2FsKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KVxcbi0tXFxubW0vbWVtY29udHJvbC5jPTE2Njc9dW5zaWduZWQgbG9uZyBtZW1jZ19wYWdlX3N0YXRlX291dHB1dChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGludCBpdGVtKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTE2NzItXFxubW0vbWVtY29udHJvbC5jOjE2NzM6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYy0xNjc0LXVuc2lnbmVkIGxvbmcgbWVtY2dfcGFnZV9zdGF0ZV9sb2NhbF9vdXRwdXQoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgaXRlbSlcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz0xNjkzPXN0YXRpYyB2b2lkIG1lbWNnX3N0YXRfZm9ybWF0KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgc3RydWN0IHNlcV9idWYgKnMpXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtMTczOS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRShtZW1jZ192bV9ldmVudF9zdGF0KTsgaSsrKSB7XFxubW0vbWVtY29udHJvbC5jOjE3NDA6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYy0xNzQxLVxcdFxcdGlmIChtZW1jZ192bV9ldmVudF9zdGF0W2ldID09IFBHUEdJTiB8fFxcbi0tXFxubW0vbWVtY29udHJvbC5jPTE3OTE9dm9pZCBtZW1fY2dyb3VwX3ByaW50X29vbV9tZW1pbmZvKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZylcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0xODEyLVxcdFxcdFxcdGF0b21pY19sb25nX3JlYWQoXFx1MDAyNm1lbWNnLVxcdTAwM2VtZW1vcnlfZXZlbnRzW01FTUNHX1NXQVBfTUFYXSkpO1xcbm1tL21lbWNvbnRyb2wuYzoxODEzOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5tbS9tZW1jb250cm9sLmMtMTgxNC1cXHRlbHNlIHtcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz0yODAwPXN0YXRpYyB2b2lkIGNvbW1pdF9jaGFyZ2Uoc3RydWN0IGZvbGlvICpmb2xpbywgc3RydWN0IG9ial9jZ3JvdXAgKm9iamNnKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTI4MTItXFxubW0vbWVtY29udHJvbC5jOjI4MTM6I2lmZGVmIENPTkZJR19NRU1DR19OTUlfU0FGRVRZX1JFUVVJUkVTX0FUT01JQ1xcbm1tL21lbWNvbnRyb2wuYy0yODE0LXN0YXRpYyBpbmxpbmUgdm9pZCBhY2NvdW50X3NsYWJfbm1pX3NhZmUoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxcbi0tXFxubW0vbWVtY29udHJvbC5jPTI5ODY9X19hbHdheXNfaW5saW5lIHN0cnVjdCBvYmpfY2dyb3VwICpjdXJyZW50X29ial9jZ3JvdXAodm9pZClcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0yOTkxLVxcbm1tL21lbWNvbnRyb2wuYzoyOTkyOlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19NRU1DR19OTUlfVU5TQUZFKSBcXHUwMDI2XFx1MDAyNiBpbl9ubWkoKSlcXG5tbS9tZW1jb250cm9sLmMtMjk5My1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz0zMDMyPXN0cnVjdCBvYmpfY2dyb3VwICpnZXRfb2JqX2Nncm91cF9mcm9tX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtMzA0Mi1cXG5tbS9tZW1jb250cm9sLmM6MzA0MzojaWZkZWYgQ09ORklHX01FTUNHX05NSV9TQUZFVFlfUkVRVUlSRVNfQVRPTUlDXFxubW0vbWVtY29udHJvbC5jLTMwNDQtc3RhdGljIGlubGluZSB2b2lkIGFjY291bnRfa21lbV9ubWlfc2FmZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGludCB2YWwpXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9NDE1Nz1tZW1fY2dyb3VwX2Nzc19hbGxvYyhzdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqcGFyZW50X2NzcylcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy00MTgwLVxcdFxcdHBhZ2VfY291bnRlcl9pbml0KFxcdTAwMjZtZW1jZy1cXHUwMDNlc3dhcCwgXFx1MDAyNnBhcmVudC1cXHUwMDNlc3dhcCwgZmFsc2UpO1xcbm1tL21lbWNvbnRyb2wuYzo0MTgxOiNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcXG5tbS9tZW1jb250cm9sLmMtNDE4Mi1cXHRcXHRtZW1jZy1cXHUwMDNlbWVtb3J5LnRyYWNrX2ZhaWxjbnQgPSAhbWVtY2dfb25fZGZsO1xcbi0tXFxubW0vbWVtY29udHJvbC5jLTQxOTEtXFx0XFx0cGFnZV9jb3VudGVyX2luaXQoXFx1MDAyNm1lbWNnLVxcdTAwM2Vzd2FwLCBOVUxMLCBmYWxzZSk7XFxubW0vbWVtY29udHJvbC5jOjQxOTI6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYy00MTkzLVxcdFxcdHBhZ2VfY291bnRlcl9pbml0KFxcdTAwMjZtZW1jZy1cXHUwMDNla21lbSwgTlVMTCwgZmFsc2UpO1xcbi0tXFxubW0vbWVtY29udHJvbC5jPTQzNTk9c3RhdGljIHZvaWQgbWVtX2Nncm91cF9jc3NfcmVzZXQoc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUgKmNzcylcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy00MzY0LVxcdHBhZ2VfY291bnRlcl9zZXRfbWF4KFxcdTAwMjZtZW1jZy1cXHUwMDNlc3dhcCwgUEFHRV9DT1VOVEVSX01BWCk7XFxubW0vbWVtY29udHJvbC5jOjQzNjU6I2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYy00MzY2LVxcdHBhZ2VfY291bnRlcl9zZXRfbWF4KFxcdTAwMjZtZW1jZy1cXHUwMDNla21lbSwgUEFHRV9DT1VOVEVSX01BWCk7XFxuLS1cXG5tbS9tZW1jb250cm9sLmM9NDM5ND1zdGF0aWMgdm9pZCBtZW1fY2dyb3VwX3N0YXRfYWdncmVnYXRlKHN0cnVjdCBhZ2dyZWdhdGVfY29udHJvbCAqYWMpXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtNDQyOS1cXG5tbS9tZW1jb250cm9sLmM6NDQzMDojaWZkZWYgQ09ORklHX01FTUNHX05NSV9TQUZFVFlfUkVRVUlSRVNfQVRPTUlDXFxubW0vbWVtY29udHJvbC5jLTQ0MzEtc3RhdGljIHZvaWQgZmx1c2hfbm1pX3N0YXRzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgc3RydWN0IG1lbV9jZ3JvdXAgKnBhcmVudCxcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz01MDc2PXN0cnVjdCBjZ3JvdXBfc3Vic3lzIG1lbW9yeV9jZ3JwX3N1YnN5cyA9IHtcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy01MDg3LVxcdC5kZmxfY2Z0eXBlcyA9IG1lbW9yeV9maWxlcyxcXG5tbS9tZW1jb250cm9sLmM6NTA4ODojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxubW0vbWVtY29udHJvbC5jLTUwODktXFx0LmxlZ2FjeV9jZnR5cGVzID0gbWVtX2Nncm91cF9sZWdhY3lfZmlsZXMsXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9NjAyMj1zdGF0aWMgaW50IF9faW5pdCBtZW1fY2dyb3VwX3N3YXBfaW5pdCh2b2lkKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTYwMjctXFx0V0FSTl9PTihjZ3JvdXBfYWRkX2RmbF9jZnR5cGVzKFxcdTAwMjZtZW1vcnlfY2dycF9zdWJzeXMsIHN3YXBfZmlsZXMpKTtcXG5tbS9tZW1jb250cm9sLmM6NjAyODojaWZkZWYgQ09ORklHX01FTUNHX1YxXFxubW0vbWVtY29udHJvbC5jLTYwMjktXFx0V0FSTl9PTihjZ3JvdXBfYWRkX2xlZ2FjeV9jZnR5cGVzKFxcdTAwMjZtZW1vcnlfY2dycF9zdWJzeXMsIG1lbXN3X2ZpbGVzKSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUxOjAwLjA5OTM4MzQ5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MjU0MzUzMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgTWVtb3J5IENvbnRyb2wgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkZWFsaW5nIHdpdGggYG1tL21lbWNvbnRyb2wuY2AgYW5kIGtub3cgaXQgb25seSBnZXRzIGNvbXBpbGVkIHdoZW4gYENPTkZJR19NRU1DR2AgaXMgc2V0LiBOb3cgSSBuZWVkIHRvIHNlZSAqaG93KiB0aGF0IGxpbmthZ2UgaXMgZXN0YWJsaXNoZWQgd2l0aGluIHRoZSBidWlsZCBzeXN0ZW0uIFRoZSBuYXR1cmFsIHBsYWNlIHRvIGxvb2sgaXMgdGhlIGBtbS9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSBhbGwgdGhlIGNvbXBpbGF0aW9uIHJ1bGVzIGFuZCBkZXBlbmRlbmNpZXMgZm9yIG1lbW9yeSBtYW5hZ2VtZW50IHNvdXJjZSBmaWxlcyBhcmUgZGVmaW5lZC4gTGV0J3MgZGlnIGluIGFuZCBzZWUgcHJlY2lzZWx5IGhvdyB0aGF0IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGlzIGhhbmRsZWQuIEkgZXhwZWN0IHRvIGZpbmQgYSBgb2JqLSQoQ09ORklHX01FTUNHKSArPSBtZW1jb250cm9sLm9gIG9yIHNvbWV0aGluZyBzaW1pbGFyIGluIHRoYXQgYE1ha2VmaWxlYC4gTGV0J3MgY29uZmlybSB0aGF0IGFuZCBtb3ZlIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjQzLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjI6NTE6MDMuMDI0ODIxMTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3ODgyMTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbWNvbnRyb2xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vTWFrZWZpbGU9Mjc9S0NPVl9JTlNUUlVNRU5UX2ttZW1sZWFrLm8gOj0gblxcbm1tL01ha2VmaWxlOjI4OktDT1ZfSU5TVFJVTUVOVF9tZW1jb250cm9sLm8gOj0gblxcbm1tL01ha2VmaWxlOjI5OktDT1ZfSU5TVFJVTUVOVF9tZW1jb250cm9sLXYxLm8gOj0gblxcbm1tL01ha2VmaWxlLTMwLUtDT1ZfSU5TVFJVTUVOVF9tbXpvbmUubyA6PSBuXFxuLS1cXG5tbS9NYWtlZmlsZT0xMDM9b2JqLSQoQ09ORklHX0xJVkVVUERBVEVfTUVNRkQpICs9IG1lbWZkX2x1by5vXFxubW0vTWFrZWZpbGU6MTA0Om9iai0kKENPTkZJR19NRU1DR19WMSkgKz0gbWVtY29udHJvbC12MS5vXFxubW0vTWFrZWZpbGU6MTA1Om9iai0kKENPTkZJR19NRU1DRykgKz0gbWVtY29udHJvbC5vIHZtcHJlc3N1cmUub1xcbm1tL01ha2VmaWxlLTEwNi1pZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5tbS9NYWtlZmlsZToxMDc6b2JqLSQoQ09ORklHX01FTUNHKSArPSBicGZfbWVtY29udHJvbC5vXFxubW0vTWFrZWZpbGUtMTA4LWVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUxOjAzLjA4MjcwNzQ2OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzc5OTMyMTgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnVuZHJ1bSoqXG5cbkFscmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYENPTkZJR19NRU1DR2AgaXMgZGVmaW5pdGVseSB0aGUga2V5IGhlcmUsIG5vIGRvdWJ0IGFib3V0IHRoYXQuIEJ1dCBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBwaWVjZXMuIFdoYXQgYWJvdXQgYENPTkZJR19TWVNGU2AgYW5kIGBDT05GSUdfTlVNQWA/IERvIHRob3NlIGNvbWUgaW50byBwbGF5IGZvciB0aGUgYHJlY2xhaW1fc3RvcmVgIGZ1bmN0aW9uPyBJIGtub3cgdGhleSdyZSBvZnRlbiBpbnRlcmNvbm5lY3RlZCB3aXRoIG1lbW9yeSBtYW5hZ2VtZW50LCBzbyBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy4gQmVzdCB3YXkgdG8gZmlndXJlIHRoaXMgb3V0IGlzIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGl0c2VsZi4gVGltZSB0byBjaGVjayBgbW0vdm1zY2FuLmNgLiBMZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIGluIHRoZXJlIGFuZCBtYWtlIHN1cmUgSSBoYXZlIGFsbCB0aGUgcmVsZXZhbnQgY29uZmlncyBjb3ZlcmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDY5NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUxOjA2LjQ2MjY0MjExWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njk3NTcxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZWNsYWltX3N0b3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3Ztc2Nhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3Ztc2Nhbi5jPTgwMTU9RVhQT1JUX1NZTUJPTF9HUEwoY2hlY2tfbW92ZV91bmV2aWN0YWJsZV9mb2xpb3MpO1xcbi0tXFxubW0vdm1zY2FuLmMtODAxNy0jaWYgZGVmaW5lZChDT05GSUdfU1lTRlMpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX05VTUEpXFxubW0vdm1zY2FuLmM6ODAxODpzdGF0aWMgc3NpemVfdCByZWNsYWltX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG5tbS92bXNjYW4uYy04MDE5LVxcdFxcdFxcdCAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUxOjA2LjUxOTYyMzEwOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mjg5MjY4OTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgU3RyYXRlZ3kqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGEgZnV6emluZyBzdHJhdGVneS4gVGhlIGtleSBoZXJlIGlzIHRoZSBjb21iaW5hdGlvbiBvZiBgQ09ORklHX1NZU0ZTYCBhbmQgYENPTkZJR19OVU1BYCwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyB0YXJnZXRzIGEgZmFpcmx5IHNwZWNpZmljLCBidXQgY3JpdGljYWwsIHNlY3Rpb24gb2YgdGhlIGtlcm5lbC5cblxuTGV0J3MgYnJlYWsgdGhpcyBkb3duOiBgV29ydGhGdXp6aW5nYCBpcyBzZXQgdG8gYHRydWVgLCB3aGljaCBpcyB0aGUgY29ycmVjdCBhc3Nlc3NtZW50IGdpdmVuIHRoZSBjaGFuZ2VzLiBUaGUgYEZvY3VzU3ltYm9sc2AgYXJlIHNwb3Qgb24g4oCTIGB1c2VyX3Byb2FjdGl2ZV9yZWNsYWltYCwgYHNob3VsZF9hYm9ydF9zY2FuYCwgYG1lbW9yeV9yZWNsYWltYCwgYW5kIGByZWNsYWltX3N0b3JlYCBhcmUgZGlyZWN0bHkgaW1wYWN0ZWQgYnkgdGhlIHBhdGNoLiBUaG9zZSBhcmUgKmV4YWN0bHkqIHRoZSBmdW5jdGlvbnMgSSB3b3VsZCB0YXJnZXQuIFRoZSByYXRpb25hbGUgYmVoaW5kIHRoYXQgbGlzdCBvZiBmdW5jdGlvbnMgaXMgY29ycmVjdC5cblxuTm93LCB0aGUgYEVuYWJsZUNvbmZpZ3NgOiBgTUVNQ0dgLCBgTlVNQWAsIGFuZCBgU1lTRlNgIGFyZSBhbGwgZXNzZW50aWFsIGZvciB0cmlnZ2VyaW5nIHRoZSBjb2RlIHBhdGhzIG9mIGludGVyZXN0LiBUaGUgcmVhc29uaW5nIGhpdHMgdGhlIG5haWwgb24gdGhlIGhlYWQ6IHRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyBob3cgdGhlc2UgZnVuY3Rpb25zIGhhbmRsZSBzaWduYWxzIGFuZCBpbnRlcmFjdCB3aXRoIHRoZSBjZ3JvdXAgdjIgbWVtb3J5IHJlY2xhaW0gbWVjaGFuaXNtIGFuZCB0aGUgc3lzZnMgcmVjbGFpbSBpbnRlcmZhY2UuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgc2lnbmFsIGhhbmRsaW5nIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQsIHdoaWNoIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgZ29hbCBpcyB0byBlbnN1cmUgdGhhdCB0aGUgbmV3IHNpZ25hbCBoYW5kbGluZyBsb2dpYyBmdW5jdGlvbnMgY29ycmVjdGx5IGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgaW5zdGFiaWxpdHkgb3IgdnVsbmVyYWJpbGl0aWVzLiBUaGlzIGlzIGEgdmVyeSB0YXJnZXRlZCBhbmQgaW50ZWxsaWdlbnQgYXBwcm9hY2ggdG8gZnV6emluZyBhIGNyaXRpY2FsIGtlcm5lbCBmdW5jdGlvbi4gV2Ugc2hvdWxkIGRlZmluaXRlbHkgcHJpb3JpdGl6ZSB0aGlzIHN0cmF0ZWd5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTAzOCwiT3V0cHV0VG9rZW5zIjoxNjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjI6NTE6MTEuODA4ODk0MjkxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODEzODM1ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FTUNHXCIsXG4gICAgXCJOVU1BXCIsXG4gICAgXCJTWVNGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVzZXJfcHJvYWN0aXZlX3JlY2xhaW1cIixcbiAgICBcInNob3VsZF9hYm9ydF9zY2FuXCIsXG4gICAgXCJtZW1vcnlfcmVjbGFpbVwiLFxuICAgIFwicmVjbGFpbV9zdG9yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGJlaGF2aW9yIG9mIHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0gYW5kIHNob3VsZF9hYm9ydF9zY2FuIHRvIGhhbmRsZSBzaWduYWxzIGJ5IHJldHVybmluZyAtRVJFU1RBUlRTWVMgYW5kIGFib3J0aW5nIHRoZSBzY2FuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgY2dyb3VwIHYyIG1lbW9yeS5yZWNsYWltIG9yIHN5c2ZzIHJlY2xhaW0gaW50ZXJmYWNlLiBGdXp6aW5nIHRoZXNlIHBhdGhzIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG5ldyBzaWduYWwgaGFuZGxpbmcgbG9naWMgd29ya3MgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FTUNHXCIsXG4gICAgXCJOVU1BXCIsXG4gICAgXCJTWVNGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVzZXJfcHJvYWN0aXZlX3JlY2xhaW1cIixcbiAgICBcInNob3VsZF9hYm9ydF9zY2FuXCIsXG4gICAgXCJtZW1vcnlfcmVjbGFpbVwiLFxuICAgIFwicmVjbGFpbV9zdG9yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGJlaGF2aW9yIG9mIHVzZXJfcHJvYWN0aXZlX3JlY2xhaW0gYW5kIHNob3VsZF9hYm9ydF9zY2FuIHRvIGhhbmRsZSBzaWduYWxzIGJ5IHJldHVybmluZyAtRVJFU1RBUlRTWVMgYW5kIGFib3J0aW5nIHRoZSBzY2FuLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB2aWEgY2dyb3VwIHYyIG1lbW9yeS5yZWNsYWltIG9yIHN5c2ZzIHJlY2xhaW0gaW50ZXJmYWNlLiBGdXp6aW5nIHRoZXNlIHBhdGhzIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG5ldyBzaWduYWwgaGFuZGxpbmcgbG9naWMgd29ya3MgY29ycmVjdGx5IGFuZCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowvbgs5[1] Phase: Succeeded StartedAt: 2026-07-17 22:51:23 +0000 UTC FinishedAt: 2026-07-17 22:51:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-17 22:51:23 +0000 UTC FinishedAt: 2026-07-17 22:51:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[2] Phase: Succeeded StartedAt: 2026-07-17 22:51:23 +0000 UTC FinishedAt: 2026-07-18 03:06:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-17 22:51:23 +0000 UTC FinishedAt: 2026-07-18 03:06:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-17 22:51:23 +0000 UTC FinishedAt: 2026-07-17 22:51:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-17 22:51:23 +0000 UTC FinishedAt: 2026-07-17 22:51:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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-workflowvbgs5/series-workflowvbgs5-convert-artifact-408267378/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-17 22:51:33 +0000 UTC FinishedAt: 2026-07-17 23:28:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-17 22:51:33 +0000 UTC FinishedAt: 2026-07-17 23:28:30 +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:*46f5c27c-e045-4768-9649-47da63c91c41,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-workflowvbgs5/series-workflowvbgs5-convert-artifact-408267378/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": "7ed3c986-0687-4aac-917d-cd18994f64c6", "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-workflowvbgs5/series-workflowvbgs5-build-action-2806460912/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-17 22:51:33 +0000 UTC FinishedAt: 2026-07-17 23:28:20 +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:*46f5c27c-e045-4768-9649-47da63c91c41,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-workflowvbgs5/series-workflowvbgs5-convert-artifact-408267378/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": "7ed3c986-0687-4aac-917d-cd18994f64c6", "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-workflowvbgs5/series-workflowvbgs5-build-action-2806460912/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-17 23:28:30 +0000 UTC FinishedAt: 2026-07-17 23:28:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-17 23:28:30 +0000 UTC FinishedAt: 2026-07-17 23:28:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-17 23:28:30 +0000 UTC FinishedAt: 2026-07-17 23:28:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-17 23:28:30 +0000 UTC FinishedAt: 2026-07-17 23:28:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-workflowvbgs5/series-workflowvbgs5-convert-artifact-1319399821/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-17 23:28:50 +0000 UTC FinishedAt: 2026-07-17 23:30:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-17 23:28:50 +0000 UTC FinishedAt: 2026-07-17 23:30:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7ed3c986-0687-4aac-917d-cd18994f64c6,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-workflowvbgs5/series-workflowvbgs5-build-action-2806460912/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-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-17 23:30:50 +0000 UTC FinishedAt: 2026-07-17 23:30:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-17 23:30:50 +0000 UTC FinishedAt: 2026-07-17 23:30:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-17 23:30:50 +0000 UTC FinishedAt: 2026-07-18 00:01:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-17 23:30:50 +0000 UTC FinishedAt: 2026-07-18 00:01:20 +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:*46f5c27c-e045-4768-9649-47da63c91c41,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-workflowvbgs5/series-workflowvbgs5-convert-artifact-1319399821/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": "47cff758-a01f-497e-a822-59c3cfcb4338", "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-workflowvbgs5/series-workflowvbgs5-build-action-3772055401/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-17 23:30:50 +0000 UTC FinishedAt: 2026-07-18 00:01:10 +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:*46f5c27c-e045-4768-9649-47da63c91c41,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-workflowvbgs5/series-workflowvbgs5-convert-artifact-1319399821/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": "47cff758-a01f-497e-a822-59c3cfcb4338", "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-workflowvbgs5/series-workflowvbgs5-build-action-3772055401/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-18 00:01:20 +0000 UTC FinishedAt: 2026-07-18 00:01:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-18 00:01:20 +0000 UTC FinishedAt: 2026-07-18 00:01:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-18 00:01:20 +0000 UTC FinishedAt: 2026-07-18 00:03:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-18 00:01:20 +0000 UTC FinishedAt: 2026-07-18 00:03:15 +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:*47cff758-a01f-497e-a822-59c3cfcb4338,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-workflowvbgs5/series-workflowvbgs5-build-action-3772055401/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-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-18 00:03:25 +0000 UTC FinishedAt: 2026-07-18 03:06:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-18 00:03:25 +0000 UTC FinishedAt: 2026-07-18 03:06:20 +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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"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:*7ed3c986-0687-4aac-917d-cd18994f64c6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*47cff758-a01f-497e-a822-59c3cfcb4338,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-workflowvbgs5/series-workflowvbgs5-build-action-2806460912/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-workflowvbgs5/series-workflowvbgs5-build-action-3772055401/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-18 00:03:25 +0000 UTC FinishedAt: 2026-07-18 00:03:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-18 00:03:25 +0000 UTC FinishedAt: 2026-07-18 00:03:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"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-workflowvbgs5/series-workflowvbgs5-convert-artifact-2606197874/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-18 00:03:25 +0000 UTC FinishedAt: 2026-07-18 00:03:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-18 00:03:25 +0000 UTC FinishedAt: 2026-07-18 00:03:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-18 00:03:25 +0000 UTC FinishedAt: 2026-07-18 00:03:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-18 00:03:36 +0000 UTC FinishedAt: 2026-07-18 03:06:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvbgs5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"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":["user_proactive_reclaim","should_abort_scan","memory_reclaim","reclaim_store"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"f4513f332d035a6168418e99820d0f2c7420fc77","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMCG","NUMA","SYSFS"],"series_id":"c84bc2f5-ad3d-4e23-b127-aabe7bcfbde2","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-18 00:03:36 +0000 UTC FinishedAt: 2026-07-18 03:06:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7ed3c986-0687-4aac-917d-cd18994f64c6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*47cff758-a01f-497e-a822-59c3cfcb4338,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-workflowvbgs5/series-workflowvbgs5-build-action-2806460912/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-workflowvbgs5/series-workflowvbgs5-build-action-3772055401/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-workflowvbgs5/series-workflowvbgs5-convert-artifact-2606197874/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,}