Name: series-workflow4xxvj Phase: Succeeded StartedAt: 2026-07-15 13:35:16 +0000 UTC FinishedAt: 2026-07-15 16:31:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[0] Phase: Succeeded StartedAt: 2026-07-15 13:35:16 +0000 UTC FinishedAt: 2026-07-15 14:04:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[0].run-triage Phase: Succeeded StartedAt: 2026-07-15 13:35:16 +0000 UTC FinishedAt: 2026-07-15 14:04:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "aa88278693cbfaf7a2acf961379973fbb63b165c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IDPF", "PCIE_PTM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "aa88278693cbfaf7a2acf961379973fbb63b165c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IDPF", "PCIE_PTM" ], "series_id": "0df730f4-db2b-48f2-9f06-fd7ec71f88f5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "idpf_probe", "idpf_remove" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lEUEYmIzM0OywKICAgICYjMzQ7UENJRV9QVE0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZHBmX3Byb2JlJiMzNDssCiAgICAmIzM0O2lkcGZfcmVtb3ZlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBieSBlbnN1cmluZyBwY2lfZGlzYWJsZV9wdG0oKSBpcyBjYWxsZWQgZHVyaW5nIHRoZSBkcml2ZXImIzM5O3MgcmVtb3ZlIGFuZCBwcm9iZSBlcnJvciBwYXRocy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJbnRlbCBJRFBGIFBDSSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCBhbmQgdGVzdGVkIHVzaW5nIGEgUENJIGRldmljZSBmdXp6ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTQ6MDE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzOTg2NDRjYmQ4NjY4MzkwYTczYjEyYWE0Nzk4NDYwMDIzNDY0N2M0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMTQ6MDE6MDEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmNcbmluZGV4IDBkZDc0MWRjZmNkYjIxLi5mMDhjZTEzYzIwYWIwNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmNcbkBAIC0xNTksNiAmIzQzOzE1OSw3IEBAIHN0YXRpYyB2b2lkIGlkcGZfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZhZGFwdGVyLVx1MDAzZXF1ZXVlX2xvY2spO1xuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZhZGFwdGVyLVx1MDAzZXZjX2J1Zl9sb2NrKTtcbiBcbiYjNDM7XHRwY2lfZGlzYWJsZV9wdG0ocGRldik7XG4gXHRwY2lfc2V0X2RydmRhdGEocGRldiwgTlVMTCk7XG4gXHRrZnJlZShhZGFwdGVyKTtcbiB9XG5AQCAtMjY2LDcgJiM0MzsyNjcsNyBAQCBzdGF0aWMgaW50IGlkcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gXHRpZiAoZXJyKSB7XG4gXHRcdHBjaV9lcnIocGRldiwgXCYjMzQ7RE1BIGNvbmZpZ3VyYXRpb24gZmFpbGVkOiAlcGVcXG5cJiMzNDssIEVSUl9QVFIoZXJyKSk7XG4gXG4tXHRcdGdvdG8gZXJyX2ZyZWU7XG4mIzQzO1x0XHRnb3RvIGVycl9kaXNhYmxlX3B0bTtcbiBcdH1cbiBcbiBcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xuQEAgLTI3OSw3ICYjNDM7MjgwLDcgQEAgc3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFx0aWYgKCFhZGFwdGVyLVx1MDAzZWluaXRfd3EpIHtcbiBcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBpbml0IHdvcmtxdWV1ZVxcblwmIzM0Oyk7XG4gXHRcdGVyciA9IC1FTk9NRU07XG4tXHRcdGdvdG8gZXJyX2ZyZWU7XG4mIzQzO1x0XHRnb3RvIGVycl9kaXNhYmxlX3B0bTtcbiBcdH1cbiBcbiBcdGFkYXB0ZXItXHUwMDNlc2Vydl93cSA9IGFsbG9jX3dvcmtxdWV1ZShcJiMzNDslcy0lcy1zZXJ2aWNlXCYjMzQ7LFxuQEAgLTM2Niw2ICYjNDM7MzY3LDggQEAgc3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFx0ZGVzdHJveV93b3JrcXVldWUoYWRhcHRlci1cdTAwM2VzZXJ2X3dxKTtcbiBlcnJfc2Vydl93cV9hbGxvYzpcbiBcdGRlc3Ryb3lfd29ya3F1ZXVlKGFkYXB0ZXItXHUwMDNlaW5pdF93cSk7XG4mIzQzO2Vycl9kaXNhYmxlX3B0bTpcbiYjNDM7XHRwY2lfZGlzYWJsZV9wdG0ocGRldik7XG4gZXJyX2ZyZWU6XG4gXHRrZnJlZShhZGFwdGVyKTtcbiBcdHJldHVybiBlcnI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTQ6MDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SURQRiYjMzQ7LAogICAgJiMzNDtQQ0lFX1BUTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lkcGZfcHJvYmUmIzM0OywKICAgICYjMzQ7aWRwZl9yZW1vdmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGJ5IGVuc3VyaW5nIHBjaV9kaXNhYmxlX3B0bSgpIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGRyaXZlciYjMzk7cyByZW1vdmUgYW5kIHByb2JlIGVycm9yIHBhdGhzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEludGVsIElEUEYgUENJIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCB0ZXN0ZWQgdXNpbmcgYSBQQ0kgZGV2aWNlIGZ1enplci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzk4NjQ0Y2JkODY2ODM5MGE3M2IxMmFhNDc5ODQ2MDAyMzQ2NDdjNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDE1IDE0OjAxOjAxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMKaW5kZXggMGRkNzQxZGNmY2RiMjEuLmYwOGNlMTNjMjBhYjA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMKQEAgLTE1OSw2ICYjNDM7MTU5LDcgQEAgc3RhdGljIHZvaWQgaWRwZl9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiAJbXV0ZXhfZGVzdHJveSgmYW1wO2FkYXB0ZXItJmd0O3F1ZXVlX2xvY2spOwogCW11dGV4X2Rlc3Ryb3koJmFtcDthZGFwdGVyLSZndDt2Y19idWZfbG9jayk7CiAKJiM0MzsJcGNpX2Rpc2FibGVfcHRtKHBkZXYpOwogCXBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTsKIAlrZnJlZShhZGFwdGVyKTsKIH0KQEAgLTI2Niw3ICYjNDM7MjY3LDcgQEAgc3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KQogCWlmIChlcnIpIHsKIAkJcGNpX2VycihwZGV2LCAmIzM0O0RNQSBjb25maWd1cmF0aW9uIGZhaWxlZDogJXBlXG4mIzM0OywgRVJSX1BUUihlcnIpKTsKIAotCQlnb3RvIGVycl9mcmVlOwomIzQzOwkJZ290byBlcnJfZGlzYWJsZV9wdG07CiAJfQogCiAJcGNpX3NldF9tYXN0ZXIocGRldik7CkBAIC0yNzksNyAmIzQzOzI4MCw3IEBAIHN0YXRpYyBpbnQgaWRwZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCkKIAlpZiAoIWFkYXB0ZXItJmd0O2luaXRfd3EpIHsKIAkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIGFsbG9jYXRlIGluaXQgd29ya3F1ZXVlXG4mIzM0Oyk7CiAJCWVyciA9IC1FTk9NRU07Ci0JCWdvdG8gZXJyX2ZyZWU7CiYjNDM7CQlnb3RvIGVycl9kaXNhYmxlX3B0bTsKIAl9CiAKIAlhZGFwdGVyLSZndDtzZXJ2X3dxID0gYWxsb2Nfd29ya3F1ZXVlKCYjMzQ7JXMtJXMtc2VydmljZSYjMzQ7LApAQCAtMzY2LDYgJiM0MzszNjcsOCBAQCBzdGF0aWMgaW50IGlkcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCiAJZGVzdHJveV93b3JrcXVldWUoYWRhcHRlci0mZ3Q7c2Vydl93cSk7CiBlcnJfc2Vydl93cV9hbGxvYzoKIAlkZXN0cm95X3dvcmtxdWV1ZShhZGFwdGVyLSZndDtpbml0X3dxKTsKJiM0MztlcnJfZGlzYWJsZV9wdG06CiYjNDM7CXBjaV9kaXNhYmxlX3B0bShwZGV2KTsKIGVycl9mcmVlOgogCWtmcmVlKGFkYXB0ZXIpOwogCXJldHVybiBlcnI7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMTQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYGlkcGZgIERyaXZlcjogQSBQcmVsaW1pbmFyeSBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBzZWVtcyBsaWtlIGl0JiMzOTtzIGFkZGluZyBgcGNpX2Rpc2FibGVfcHRtKHBkZXYpO2AgaW4gdGhlIGBpZHBmX3JlbW92ZWAgZnVuY3Rpb24gYW5kIHRoZSBlcnJvciBwYXRoIG9mIGBpZHBmX3Byb2JlYCB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIHdvcnRoIGZ1enppbmc/JiMzNDsgVGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyB0aGUgYGlkcGZgIGRyaXZlciwgd2hpY2ggZnJvbSBpdHMgbmFtZSDigJMgJiMzNDtJbnRlbCBJbmZyYXN0cnVjdHVyZSBEYXRhIFBsYW5lIEZ1bmN0aW9uJiMzNDsg4oCTIGFuZCBsb2NhdGlvbiwgYXBwZWFycyB0byBiZSBhbiBJbnRlbCBQQ0kgZGV2aWNlIGRyaXZlci4KClRoZSBQQ0kgYXNwZWN0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuIEhvdyBlYXNpbHkgY2FuIHRoaXMgYmUgdGFyZ2V0ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gR2VuZXJhbGx5LCBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVycyBhcmUgdHJpY2t5IHRvIHJlYWNoIHdpdGhvdXQgYW4gZW11bGF0b3IuIFNvLCBpcyB0aGVyZSBhbiBlbXVsYXRvciBmb3IgYGlkcGZgPyBUaGF0JiMzOTtzIHRoZSBxdWVzdGlvbiBJIG5lZWQgdG8gYW5zd2VyLiBJcyB0aGlzIGEgdmlydHVhbCBkZXZpY2Ugb3Igc29tZXRoaW5nIG1lYW50IGZvciBwaHlzaWNhbCBoYXJkd2FyZT8gVGltZSB0byBkbyBzb21lIGRpZ2dpbmcuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgc2ltcGxlIGdyZXAgZm9yICYjMzQ7aWRwZiYjMzQ7IGFuZCBzZWUgd2hhdCBraW5kIG9mIGNvbnRleHQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gS25vd2luZyB0aGUgZXhhY3QgbmF0dXJlIG9mIHRoaXMgZGV2aWNlIGlzIGNyaXRpY2FsIHRvIGtub3dpbmcgaWYgdGhpcyBwYXRjaCBtZXJpdHMgZm9jdXNlZCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lkcGYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTEwNDcgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZz00PWNvbmZpZyBJRFBGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTE0LVx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc6MTU6XHQgIHdpbGwgYmUgY2FsbGVkIGlkcGYuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctMTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnPTE5PWNvbmZpZyBJRFBGX1NJTkdMRVFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZzoyMDpcdGJvb2wgXCYjMzQ7aWRwZiBzaW5nbGVxIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy0yMS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0lEUEYpICYjNDM7PSBpZHBmLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGUtNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6ODppZHBmLXkgOj0gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6OTpcdGlkcGZfY29udHJvbHEub1x0XHRcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZToxMDpcdGlkcGZfY29udHJvbHFfc2V0dXAub1x0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6MTE6XHRpZHBmX2Rldi5vXHRcdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjEyOlx0aWRwZl9ldGh0b29sLm9cdFx0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6MTM6XHRpZHBmX2lkYy5vXHRcdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjE0Olx0aWRwZl9saWIub1x0XHRcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZToxNTpcdGlkcGZfbWFpbi5vXHRcdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjE2Olx0aWRwZl90eHJ4Lm9cdFx0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6MTc6XHRpZHBmX3ZpcnRjaG5sLm8gXHRcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZToxODpcdGlkcGZfdmZfZGV2Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGUtMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjIwOmlkcGYtJChDT05GSUdfSURQRl9TSU5HTEVRKVx0JiM0Mzs9IGlkcGZfc2luZ2xlcV90eHJ4Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGUtMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjIyOmlkcGYtJChDT05GSUdfUFRQXzE1ODhfQ0xPQ0spXHQmIzQzOz0gaWRwZl9wdHAub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZToyMzppZHBmLSQoQ09ORklHX1BUUF8xNTg4X0NMT0NLKVx0JiM0Mzs9IGlkcGZfdmlydGNobmxfcHRwLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGUtMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjI1OmlkcGYteVx0XHRcdFx0JiM0Mzs9IHhkcC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjI2OmlkcGYteVx0XHRcdFx0JiM0Mzs9IHhzay5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNy0vKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4OnN0cnVjdCBpZHBmX2FkYXB0ZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo5OnN0cnVjdCBpZHBmX3Zwb3J0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTA6c3RydWN0IGlkcGZfdnBvcnRfbWF4X3E7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoxMTpzdHJ1Y3QgaWRwZl9xX3ZlY19yc3JjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTI6c3RydWN0IGlkcGZfcnNzX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yNC0jaW5jbHVkZSBcdTAwM2NsaW51eC9uZXQvaW50ZWwvaWlkY19yZG1hLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjI1OiNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldC9pbnRlbC9paWRjX3JkbWFfaWRwZi5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI3LSNpbmNsdWRlIFwmIzM0O3ZpcnRjaG5sMi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyODojaW5jbHVkZSBcJiMzNDtpZHBmX3R4cnguaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6Mjk6I2luY2x1ZGUgXCYjMzQ7aWRwZl9jb250cm9scS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01Ni0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjU3OiAqIHN0cnVjdCBpZHBmX21hY19maWx0ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU4LSAqIEBsaXN0OiBsaXN0IG1lbWJlciBmaWVsZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjM6c3RydWN0IGlkcGZfbWFjX2ZpbHRlciB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02NC1cdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjcxOiAqIGVudW0gaWRwZl9zdGF0ZSAtIFN0YXRlIG1hY2hpbmUgdG8gaGFuZGxlIGJyaW5nIHVwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03Mi0gKiBAX19JRFBGX1ZFUl9DSEVDSzogTmVnb3RpYXRlIHZpcnRjaG5sIHZlcnNpb25cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03Ni0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc3OmVudW0gaWRwZl9zdGF0ZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03OC1cdF9fSURQRl9WRVJfQ0hFQ0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODQtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4NTogKiBlbnVtIGlkcGZfZmxhZ3MgLSBIYXJkIHJlc2V0IGNhdXNlcy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg2LSAqIEBJRFBGX0hSX0ZVTkNfUkVTRVQ6IEhhcmQgcmVzZXQgd2hlbiBUeFJ4IHRpbWVvdXRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05My0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjk0OmVudW0gaWRwZl9mbGFncyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05NS1cdElEUEZfSFJfRlVOQ19SRVNFVCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xMDQtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoxMDU6ICogZW51bSBpZHBmX2NhcF9maWVsZCAtIE9mZnNldHMgaW50byBjYXBhYmlsaXRpZXMgc3RydWN0IGZvciBzcGVjaWZpYyBjYXBzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xMDYtICogQElEUEZfQkFTRV9DQVBTOiBnZW5lcmljIGJhc2UgY2FwYWJpbGl0aWVzXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTE3LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTE4OmVudW0gaWRwZl9jYXBfZmllbGQge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTE5LVx0SURQRl9CQVNFX0NBUFNcdFx0PSAtMSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xMzQtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoxMzU6ICogZW51bSBpZHBmX3Zwb3J0X3N0YXRlIC0gQ3VycmVudCB2cG9ydCBzdGF0ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTM2LSAqIEBJRFBGX1ZQT1JUX1VQOiBWcG9ydCBpcyB1cFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTEzOC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjEzOTplbnVtIGlkcGZfdnBvcnRfc3RhdGUge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTQwLVx0SURQRl9WUE9SVF9VUCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xNDQtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoxNDU6ICogc3RydWN0IGlkcGZfbmV0ZGV2X3ByaXYgLSBTdHJ1Y3QgdG8gc3RvcmUgdnBvcnQgYmFjayBwb2ludGVyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xNDYtICogQGFkYXB0ZXI6IEFkYXB0ZXIgYmFjayBwb2ludGVyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTUyLSAqIEB0eF9tYXhfYnVmczogTWF4IGJ1ZmZlcnMgdGhhdCBjYW4gYmUgdHJhbnNtaXR0ZWQgd2l0aCBzY2F0dGVyLWdhdGhlclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTUzOiAqIEBzdGF0ZTogU2VlIGVudW0gaWRwZl92cG9ydF9zdGF0ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTU0LSAqIEBuZXRzdGF0czogUGFja2V0IGFuZCBieXRlIHN0YXRzXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTU2LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTU3OnN0cnVjdCBpZHBmX25ldGRldl9wcml2IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjE1ODpcdHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoxNTk6XHRzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xNjAtXHR1MzIgdnBvcnRfaWQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTcwLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTcxOiAqIHN0cnVjdCBpZHBmX3Jlc2V0X3JlZyAtIFJlc2V0IHJlZ2lzdGVyIG9mZnNldHMvbWFza3NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTE3Mi0gKiBAcnN0YXQ6IFJlc2V0IHN0YXR1cyByZWdpc3RlclxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTE3NC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjE3NTpzdHJ1Y3QgaWRwZl9yZXNldF9yZWcge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTc2LVx0dm9pZCBfX2lvbWVtICpyc3RhdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xODAtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoxODE6ICogc3RydWN0IGlkcGZfdnBvcnRfbWF4X3EgLSBRdWV1ZSBsaW1pdHNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTE4Mi0gKiBAbWF4X3J4cTogTWF4aW11bSBudW1iZXIgb2YgUlggcXVldWVzIHN1cHBvcnRlZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTE4Ni0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjE4NzpzdHJ1Y3QgaWRwZl92cG9ydF9tYXhfcSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xODgtXHR1MTYgbWF4X3J4cTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xOTQtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoxOTU6ICogc3RydWN0IGlkcGZfcmVnX29wcyAtIERldmljZSBzcGVjaWZpYyByZWdpc3RlciBvcGVyYXRpb24gZnVuY3Rpb24gcG9pbnRlcnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTE5Ni0gKiBAY3RscV9yZWdfaW5pdDogTWFpbGJveCBjb250cm9sIHF1ZXVlIHJlZ2lzdGVyIGluaXRpYWxpemF0aW9uXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjAyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjAzOnN0cnVjdCBpZHBmX3JlZ19vcHMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjA0Olx0dm9pZCAoKmN0bHFfcmVnX2luaXQpKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMDU6XHRcdFx0ICAgICAgc3RydWN0IGlkcGZfY3RscV9jcmVhdGVfaW5mbyAqY3EpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjA2Olx0aW50ICgqaW50cl9yZWdfaW5pdCkoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjA3Olx0XHRcdCAgICAgc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMDg6XHR2b2lkICgqbWJfaW50cl9yZWdfaW5pdCkoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMDk6XHR2b2lkICgqcmVzZXRfcmVnX2luaXQpKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjEwOlx0dm9pZCAoKnRyaWdnZXJfcmVzZXQpKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMTE6XHRcdFx0ICAgICAgZW51bSBpZHBmX2ZsYWdzIHRyaWdfY2F1c2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjEyOlx0dm9pZCAoKnB0cF9yZWdfaW5pdCkoY29uc3Qgc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMTMtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMjEtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMjI6ICogc3RydWN0IGlkcGZfZGV2X29wcyAtIERldmljZSBzcGVjaWZpYyBvcGVyYXRpb25zXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMjMtICogQHJlZ19vcHM6IFJlZ2lzdGVyIG9wZXJhdGlvbnNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMjYtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMjc6c3RydWN0IGlkcGZfZGV2X29wcyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMjg6XHRzdHJ1Y3QgaWRwZl9yZWdfb3BzIHJlZ19vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMzA6XHRpbnQgKCppZGNfaW5pdCkoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMzEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjM2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjM3OiAqIGVudW0gaWRwZl92cG9ydF9yZXNldF9jYXVzZSAtIFZwb3J0IHNvZnQgcmVzZXQgY2F1c2VzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMzgtICogQElEUEZfU1JfUV9DSEFOR0U6IFNvZnQgcmVzZXQgcXVldWUgY2hhbmdlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjQyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjQzOmVudW0gaWRwZl92cG9ydF9yZXNldF9jYXVzZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yNDQtXHRJRFBGX1NSX1FfQ0hBTkdFLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI1MC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjI1MTogKiBlbnVtIGlkcGZfdnBvcnRfZmxhZ3MgLSBWcG9ydCBmbGFnc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjUyLSAqIEBJRFBGX1ZQT1JUX0RFTF9RVUVVRVM6IFRvIHNlbmQgZGVsZXRlIHF1ZXVlcyBtZXNzYWdlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjU0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjU1OmVudW0gaWRwZl92cG9ydF9mbGFncyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yNTYtXHRJRFBGX1ZQT1JUX0RFTF9RVUVVRVMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjYwLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjYxOiAqIHN0cnVjdCBpZHBmX3RzdGFtcF9zdGF0cyAtIFR4IHRpbWVzdGFtcCBzdGF0aXN0aWNzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yNjItICogQHN0YXRzX3N5bmM6IFNlZSBzdHJ1Y3QgdTY0X3N0YXRzX3N5bmNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yNjctICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyNjg6c3RydWN0IGlkcGZfdHN0YW1wX3N0YXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI2OS1cdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBzdGF0c19zeW5jO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI3NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjI3NTpzdHJ1Y3QgaWRwZl9wb3J0X3N0YXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI3Ni1cdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBzdGF0c19zeW5jO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjI4ODpzdHJ1Y3QgaWRwZl9mc3RlZXJfZmx0ciB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yODktXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjkzLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6Mjk0OiAqIHN0cnVjdCBpZHBmX3FfdmVjX3JzcmMgLSBoYW5kbGUgZm9yIHF1ZXVlIGFuZCB2ZWN0b3IgcmVzb3VyY2VzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yOTUtICogQGRldjogZGV2aWNlIHBvaW50ZXIgZm9yIERNQSBtYXBwaW5nXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMzIyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MzIzOnN0cnVjdCBpZHBmX3FfdmVjX3JzcmMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMzI0LVx0c3RydWN0IGRldmljZVx0XHQqZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MzI1Olx0c3RydWN0IGlkcGZfcV92ZWN0b3JcdCpxX3ZlY3RvcnM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zMjYtXHR1MTZcdFx0XHQqcV92ZWN0b3JfaWR4cztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozMzI6XHRzdHJ1Y3QgaWRwZl90eHFfZ3JvdXBcdCp0eHFfZ3JwcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTMzMy1cdHUzMlx0XHRcdHR4cV9kZXNjX2NvdW50O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTM0Mi1cdHUzMlx0XHRcdHJ4cV9tb2RlbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjM0MzpcdHN0cnVjdCBpZHBmX3J4cV9ncm91cFx0KnJ4cV9ncnBzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMzQ0LVx0dTE2XHRcdFx0bnVtX3J4cTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zNTItLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozNTM6ICogc3RydWN0IGlkcGZfdnBvcnQgLSBIYW5kbGUgZm9yIG5ldGRldmljZXMgYW5kIHF1ZXVlIHJlc291cmNlc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMzU0LSAqIEBkZmx0X3F2X3JzcmM6IGNvbnRhaW5zIGRlZmF1bHQgcXVldWUgYW5kIHZlY3RvciByZXNvdXJjZXNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zNjMtICpcdCAgICBhc3NvY2lhdGVkIG5ldGRldi5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjM2NDogKiBAZmxhZ3M6IFNlZSBlbnVtIGlkcGZfdnBvcnRfZmxhZ3NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTM2NS0gKiBAY29tcGxuX2NsZWFuX2J1ZGdldDogV29yayBidWRnZXQgZm9yIGNvbXBsZXRpb24gY2xlYW5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zODEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozODI6c3RydWN0IGlkcGZfdnBvcnQge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MzgzOlx0c3RydWN0IGlkcGZfcV92ZWNfcnNyYyBkZmx0X3F2X3JzcmM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozODQ6XHRzdHJ1Y3QgaWRwZl90eF9xdWV1ZSAqKnR4cXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zODUtXHR1MTYgbnVtX3R4cTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zOTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozOTI6XHRzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMzkzLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0MDU6XHRzdHJ1Y3QgaWRwZl9wb3J0X3N0YXRzIHBvcnRfc3RhdHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MDYtXHRib29sIGRlZmF1bHRfdnBvcnQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NDEwOlx0c3RydWN0IGlkcGZfcHRwX3Zwb3J0X3R4X3RzdGFtcF9jYXBzICp0eF90c3RhbXBfY2FwcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQxMS1cdHN0cnVjdCBrZXJuZWxfaHd0c3RhbXBfY29uZmlnIHRzdGFtcF9jb25maWc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MTItXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgdHN0YW1wX3Rhc2s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0MTM6XHRzdHJ1Y3QgaWRwZl90c3RhbXBfc3RhdHMgdHN0YW1wX3N0YXRzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDE0LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDE2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NDE3OiAqIGVudW0gaWRwZl91c2VyX2ZsYWdzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MTgtICogQF9fSURQRl9VU0VSX0ZMQUdfSFNQTElUOiBoZWFkZXIgc3BsaXQgc3RhdGVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MjItICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0MjM6ZW51bSBpZHBmX3VzZXJfZmxhZ3Mge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDI0LVx0X19JRFBGX1VTRVJfRkxBR19IU1BMSVQgPSAwVSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MzEtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0MzI6ICogc3RydWN0IGlkcGZfcnNzX2RhdGEgLSBBc3NvY2lhdGVkIFJTUyBkYXRhXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MzMtICogQHJzc19rZXlfc2l6ZTogU2l6ZSBvZiBSU1MgaGFzaCBrZXlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MzctICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0Mzg6c3RydWN0IGlkcGZfcnNzX2RhdGEge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDM5LVx0dTE2IHJzc19rZXlfc2l6ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00NDUtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0NDY6ICogc3RydWN0IGlkcGZfcV9jb2FsZXNjZSAtIFVzZXIgZGVmaW5lZCBjb2FsZXNjaW5nIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGZvclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDQ3LSAqXHRcdFx0ICAgYSBzaW5nbGUgcXVldWUuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDU0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NDU1OnN0cnVjdCBpZHBmX3FfY29hbGVzY2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDU2LVx0dTMyIHR4X2ludHJfbW9kZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00NjItLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0NjM6ICogc3RydWN0IGlkcGZfdnBvcnRfdXNlcl9jb25maWdfZGF0YSAtIFVzZXIgZGVmaW5lZCBjb25maWd1cmF0aW9uIHZhbHVlcyBmb3JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQ2NC0gKlx0XHRcdFx0XHRlYWNoIHZwb3J0LlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NDY1OiAqIEByc3NfZGF0YTogU2VlIHN0cnVjdCBpZHBmX3Jzc19kYXRhXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00NjYtICogQHFfY29hbGVzY2U6IEFycmF5IG9mIHBlciBxdWV1ZSBjb2FsZXNjaW5nIGRhdGFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00ODAtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0ODE6c3RydWN0IGlkcGZfdnBvcnRfdXNlcl9jb25maWdfZGF0YSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0ODI6XHRzdHJ1Y3QgaWRwZl9yc3NfZGF0YSByc3NfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjQ4MzpcdHN0cnVjdCBpZHBmX3FfY29hbGVzY2UgKnFfY29hbGVzY2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00ODQtXHR1MTYgbnVtX3JlcV90eF9xcztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00OTUtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0OTY6ICogZW51bSBpZHBmX3Zwb3J0X2NvbmZpZ19mbGFncyAtIFZwb3J0IGNvbmZpZyBmbGFnc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDk3LSAqIEBJRFBGX1ZQT1JUX1JFR19ORVRERVY6IFJlZ2lzdGVyIG5ldGRldlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTUwMC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjUwMTplbnVtIGlkcGZfdnBvcnRfY29uZmlnX2ZsYWdzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTUwMi1cdElEUEZfVlBPUlRfUkVHX05FVERFVixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01MDctLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1MDg6ICogc3RydWN0IGlkcGZfYXZhaWxfcXVldWVfaW5mb1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTA5LSAqIEBhdmFpbF9yeHE6IEF2YWlsYWJsZSBSWCBxdWV1ZXNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01MTUtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1MTY6c3RydWN0IGlkcGZfYXZhaWxfcXVldWVfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01MTctXHR1MTYgYXZhaWxfcnhxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTUyMy0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjUyNDogKiBzdHJ1Y3QgaWRwZl92ZWN0b3JfaW5mbyAtIFV0aWxpdHkgc3RydWN0dXJlIHRvIHBhc3MgZnVuY3Rpb24gYXJndW1lbnRzIGFzIGFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTUyNS0gKlx0XHRcdCAgICAgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTMxLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTMyOnN0cnVjdCBpZHBmX3ZlY3Rvcl9pbmZvIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTUzMy1cdHUxNiBudW1fcmVxX3ZlY3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTM5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTQwOiAqIHN0cnVjdCBpZHBmX3ZlY3Rvcl9saWZvIC0gU3RhY2sgdG8gbWFpbnRhaW4gdmVjdG9yIGluZGV4ZXMgdXNlZCBmb3IgdmVjdG9yXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01NDEtICpcdFx0XHQgICAgIGRpc3RyaWJ1dGlvbiBhbGdvcml0aG1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01NTUtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1NTY6c3RydWN0IGlkcGZfdmVjdG9yX2xpZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTU3LVx0dTE2IHRvcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01NjMtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1NjQ6ICogc3RydWN0IGlkcGZfcXVldWVfaWRfcmVnX2NodW5rIC0gaW5kaXZpZHVhbCBxdWV1ZSBJRCBhbmQgcmVnaXN0ZXIgY2h1bmtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU2NS0gKiBAcXRhaWxfcmVnX3N0YXJ0OiBxdWV1ZSB0YWlsIHJlZ2lzdGVyIG9mZnNldFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU3MC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjU3MTpzdHJ1Y3QgaWRwZl9xdWV1ZV9pZF9yZWdfY2h1bmsge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTcyLVx0dTY0IHF0YWlsX3JlZ19zdGFydDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01NzktLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1ODA6ICogc3RydWN0IGlkcGZfcXVldWVfaWRfcmVnX2luZm8gLSBxdWV1ZSBJRCBhbmQgcmVnaXN0ZXIgY2h1bmsgaW5mbyByZWNlaXZlZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTgxLSAqXHRcdFx0XHQgICBvdmVyIHRoZSBtYWlsYm94XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTg0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTg1OnN0cnVjdCBpZHBmX3F1ZXVlX2lkX3JlZ19pbmZvIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU4Ni1cdHUxNiBudW1fY2h1bmtzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTg3Olx0c3RydWN0IGlkcGZfcXVldWVfaWRfcmVnX2NodW5rICpxdWV1ZV9jaHVua3M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01ODgtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01OTAtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1OTE6ICogc3RydWN0IGlkcGZfdnBvcnRfY29uZmlnIC0gVnBvcnQgY29uZmlndXJhdGlvbiBkYXRhXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1OTI6ICogQHVzZXJfY29uZmlnOiBzZWUgc3RydWN0IGlkcGZfdnBvcnRfdXNlcl9jb25maWdfZGF0YVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTkzLSAqIEBtYXhfcTogTWF4aW11bSBwb3NzaWJsZSBxdWV1ZXNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01OTYtICogQGZsb3dfc3RlZXJfbGlzdF9sb2NrOiBMb2NrIHRvIHByb3RlY3QgZnN0ZWVyIGZpbHRlcnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjU5NzogKiBAZmxhZ3M6IFNlZSBlbnVtIGlkcGZfdnBvcnRfY29uZmlnX2ZsYWdzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01OTgtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1OTk6c3RydWN0IGlkcGZfdnBvcnRfY29uZmlnIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjYwMDpcdHN0cnVjdCBpZHBmX3Zwb3J0X3VzZXJfY29uZmlnX2RhdGEgdXNlcl9jb25maWc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2MDE6XHRzdHJ1Y3QgaWRwZl92cG9ydF9tYXhfcSBtYXhfcTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjYwMjpcdHN0cnVjdCBpZHBmX3F1ZXVlX2lkX3JlZ19pbmZvIHFpZF9yZWdfaW5mbztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYwMy1cdHNwaW5sb2NrX3QgbWFjX2ZpbHRlcl9saXN0X2xvY2s7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNjA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjA4OnN0cnVjdCBpZHBmX3ZjX3huX21hbmFnZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02MDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2MTA6I2RlZmluZSBpZHBmX2Zvcl9lYWNoX3Zwb3J0KGFkYXB0ZXIsIGl0ZXIpIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2MTE6XHRmb3IgKHN0cnVjdCBpZHBmX3Zwb3J0ICoqX18jI2l0ZXIgPSBcdTAwMjYoYWRhcHRlciktXHUwMDNldnBvcnRzWzBdLCBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNjEyLVx0ICAgICAqaXRlciA9IChhZGFwdGVyKS1cdTAwM2VtYXhfdnBvcnRzID8gKl9fIyNpdGVyIDogTlVMTDsgXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02MTctLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2MTg6ICogc3RydWN0IGlkcGZfYWRhcHRlciAtIERldmljZSBkYXRhIHN0cnVjdCBnZW5lcmF0ZWQgb24gcHJvYmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYxOS0gKiBAcGRldjogUENJIGRldmljZSBzdHJ1Y3QgZ2l2ZW4gb24gcHJvYmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02MjQtICogQHN0YXRlOiBJbml0IHN0YXRlIG1hY2hpbmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjYyNTogKiBAZmxhZ3M6IFNlZSBlbnVtIGlkcGZfZmxhZ3NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjYyNjogKiBAcmVzZXRfcmVnOiBTZWUgc3RydWN0IGlkcGZfcmVzZXRfcmVnXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02MjctICogQGh3OiBEZXZpY2UgYWNjZXNzIGRhdGFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02NjEtICogQHZjeG5fbW5ncjogVmlydGNobmwgdHJhbnNhY3Rpb24gbWFuYWdlclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjYyOiAqIEBkZXZfb3BzOiBTZWUgaWRwZl9kZXZfb3BzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02NjMtICogQGNkZXZfaW5mbzogSURDIGNvcmUgZGV2aWNlIGluZm8gcG9pbnRlclxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY3NC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjY3NTpzdHJ1Y3QgaWRwZl9hZGFwdGVyIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY3Ni1cdHN0cnVjdCBwY2lfZGV2ICpwZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY4MS1cdHUzMiBtYl93YWl0X2NvdW50O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjgyOlx0ZW51bSBpZHBmX3N0YXRlIHN0YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNjgzLVx0REVDTEFSRV9CSVRNQVAoZmxhZ3MsIElEUEZfRkxBR1NfTkJJVFMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6Njg0Olx0c3RydWN0IGlkcGZfcmVzZXRfcmVnIHJlc2V0X3JlZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjY4NTpcdHN0cnVjdCBpZHBmX2h3IGh3O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNjg2LVx0dTE2IG51bV9hdmFpbF9tc2l4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY5MS1cdHN0cnVjdCB2aXJ0Y2hubDJfYWxsb2NfdmVjdG9ycyAqcmVxX3ZlY19jaHVua3M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2OTI6XHRzdHJ1Y3QgaWRwZl9xX3ZlY3RvciBtYl92ZWN0b3I7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2OTM6XHRzdHJ1Y3QgaWRwZl92ZWN0b3JfbGlmbyB2ZWN0b3Jfc3RhY2s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02OTQtXHRpcnFyZXR1cm5fdCAoKmlycV9tYl9oYW5kbGVyKShpbnQgaXJxLCB2b2lkICpkYXRhKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02OTYtXHR1MzIgdHhfdGltZW91dF9jb3VudDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjY5NzpcdHN0cnVjdCBpZHBmX2F2YWlsX3F1ZXVlX2luZm8gYXZhaWxfcXVldWVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6Njk4Olx0c3RydWN0IGlkcGZfdnBvcnQgKip2cG9ydHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02OTktXHRzdHJ1Y3QgbmV0X2RldmljZSAqKm5ldGRldnM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzA3Olx0c3RydWN0IGlkcGZfdnBvcnRfY29uZmlnICoqdnBvcnRfY29uZmlnO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzA4LVx0dTE2IG1heF92cG9ydHM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzIyLVx0c3RydWN0IHZpcnRjaG5sMl9nZXRfY2FwYWJpbGl0aWVzIGNhcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3MjM6XHRzdHJ1Y3QgaWRwZl92Y194bl9tYW5hZ2VyICp2Y3huX21uZ3I7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3MjU6XHRzdHJ1Y3QgaWRwZl9kZXZfb3BzIGRldl9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MjYtXHRzdHJ1Y3QgaWlkY19yZG1hX2NvcmVfZGV2X2luZm8gKmNkZXZfaW5mbztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3Mzc6XHRzdHJ1Y3QgaWRwZl9wdHAgKnB0cDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTczOC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc0MC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc0MTogKiBpZHBmX2lzX3F1ZXVlX21vZGVsX3NwbGl0IC0gY2hlY2sgaWYgcXVldWUgbW9kZWwgaXMgc3BsaXRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc0Mi0gKiBAcV9tb2RlbDogcXVldWUgbW9kZWwgc2luZ2xlIG9yIHNwbGl0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzQ1LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzQ2OnN0YXRpYyBpbmxpbmUgaW50IGlkcGZfaXNfcXVldWVfbW9kZWxfc3BsaXQodTE2IHFfbW9kZWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03NDcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc1MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc1MjpzdGF0aWMgaW5saW5lIGJvb2wgaWRwZl94ZHBfZW5hYmxlZChjb25zdCBzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03NTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc1NzojZGVmaW5lIGlkcGZfaXNfY2FwX2VuYShhZGFwdGVyLCBmaWVsZCwgZmxhZykgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc1ODpcdGlkcGZfaXNfY2FwYWJpbGl0eV9lbmEoYWRhcHRlciwgZmFsc2UsIGZpZWxkLCBmbGFnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzU5OiNkZWZpbmUgaWRwZl9pc19jYXBfZW5hX2FsbChhZGFwdGVyLCBmaWVsZCwgZmxhZykgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc2MDpcdGlkcGZfaXNfY2FwYWJpbGl0eV9lbmEoYWRhcHRlciwgdHJ1ZSwgZmllbGQsIGZsYWcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03NjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3NjI6Ym9vbCBpZHBmX2lzX2NhcGFiaWxpdHlfZW5hKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsIGJvb2wgYWxsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzYzOlx0XHRcdCAgICBlbnVtIGlkcGZfY2FwX2ZpZWxkIGZpZWxkLCB1NjQgZmxhZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03NjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03NjUtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3NjY6ICogaWRwZl9pc19yZG1hX2NhcF9lbmEgLSBEZXRlcm1pbmUgaWYgUkRNQSBpcyBzdXBwb3J0ZWRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc2Ny0gKiBAYWRhcHRlcjogcHJpdmF0ZSBkYXRhIHN0cnVjdFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc3MC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc3MTpzdGF0aWMgaW5saW5lIGJvb2wgaWRwZl9pc19yZG1hX2NhcF9lbmEoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc3Mi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3NzM6XHRyZXR1cm4gaWRwZl9pc19jYXBfZW5hKGFkYXB0ZXIsIElEUEZfT1RIRVJfQ0FQUywgVklSVENITkwyX0NBUF9SRE1BKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc3NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODE3LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODE4OiAqIGlkcGZfZ2V0X3Jlc2VydmVkX3ZlY3MgLSBHZXQgcmVzZXJ2ZWQgdmVjdG9yc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODE5LSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04MjAtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4MjE6c3RhdGljIGlubGluZSB1MTYgaWRwZl9nZXRfcmVzZXJ2ZWRfdmVjcyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODIyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04MjYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4Mjc6ICogaWRwZl9nZXRfcmVzZXJ2ZWRfcmRtYV92ZWNzIC0gR2V0IHJlc2VydmVkIFJETUEgdmVjdG9yc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODI4LSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODMxLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODMyOnN0YXRpYyBpbmxpbmUgdTE2IGlkcGZfZ2V0X3Jlc2VydmVkX3JkbWFfdmVjcyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODMzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04MzctLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4Mzg6ICogaWRwZl9nZXRfZGVmYXVsdF92cG9ydHMgLSBHZXQgZGVmYXVsdCBudW1iZXIgb2YgdnBvcnRzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04MzktICogQGFkYXB0ZXI6IHByaXZhdGUgZGF0YSBzdHJ1Y3RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg0MC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjg0MTpzdGF0aWMgaW5saW5lIHUxNiBpZHBmX2dldF9kZWZhdWx0X3Zwb3J0cyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODQyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NDYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4NDc6ICogaWRwZl9nZXRfbWF4X3Zwb3J0cyAtIEdldCBtYXggbnVtYmVyIG9mIHZwb3J0c1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODQ4LSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NDktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4NTA6c3RhdGljIGlubGluZSB1MTYgaWRwZl9nZXRfbWF4X3Zwb3J0cyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODUxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NTUtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4NTY6ICogaWRwZl9nZXRfbWF4X3R4X2J1ZnMgLSBHZXQgbWF4IHNjYXR0ZXItZ2F0aGVyIGJ1ZmZlcnMgc3VwcG9ydGVkIGJ5IHRoZSBkZXZpY2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg1Ny0gKiBAYWRhcHRlcjogcHJpdmF0ZSBkYXRhIHN0cnVjdFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODU4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODU5OnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGlkcGZfZ2V0X21heF90eF9idWZzKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg2NC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjg2NTogKiBpZHBmX2dldF9taW5fdHhfcGt0X2xlbiAtIEdldCBtaW4gcGFja2V0IGxlbmd0aCBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODY2LSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NjctICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4Njg6c3RhdGljIGlubGluZSB1OCBpZHBmX2dldF9taW5fdHhfcGt0X2xlbihzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODY5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NzUtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4NzY6ICogaWRwZl9nZXRfbWJ4X3JlZ19hZGRyIC0gR2V0IEJBUjAgbWFpbGJveCByZWdpc3RlciBhZGRyZXNzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NzctICogQGFkYXB0ZXI6IHByaXZhdGUgZGF0YSBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04ODEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4ODI6c3RhdGljIGlubGluZSB2b2lkIF9faW9tZW0gKmlkcGZfZ2V0X21ieF9yZWdfYWRkcihzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODgzLVx0XHRcdFx0XHRcdCAgcmVzb3VyY2Vfc2l6ZV90IHJlZ19vZmZzZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODg4LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODg5OiAqIGlkcGZfZ2V0X3JzdGF0X3JlZ19hZGRyIC0gR2V0IEJBUjAgcnN0YXQgcmVnaXN0ZXIgYWRkcmVzc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODkwLSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODk0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODk1OnN0YXRpYyBpbmxpbmUgdm9pZCBfX2lvbWVtICppZHBmX2dldF9yc3RhdF9yZWdfYWRkcihzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODk2LVx0XHRcdFx0XHRcdCAgICByZXNvdXJjZV9zaXplX3QgcmVnX29mZnNldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05MDMtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo5MDQ6ICogaWRwZl9nZXRfcmVnX2FkZHIgLSBHZXQgQkFSMCByZWdpc3RlciBhZGRyZXNzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05MDUtICogQGFkYXB0ZXI6IHByaXZhdGUgZGF0YSBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05MDktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo5MTA6c3RhdGljIGlubGluZSB2b2lkIF9faW9tZW0gKmlkcGZfZ2V0X3JlZ19hZGRyKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05MTEtXHRcdFx0XHRcdCAgICAgIHJlc291cmNlX3NpemVfdCByZWdfb2Zmc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTEyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjkxMzpcdHN0cnVjdCBpZHBmX2h3ICpodyA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlaHc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05MTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05MTUtXHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgaHctXHUwMDNlbnVtX2xhbl9yZWdzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6OTE2Olx0XHRzdHJ1Y3QgaWRwZl9tbWlvX3JlZyAqcmVnaW9uID0gXHUwMDI2aHctXHUwMDNlbGFuX3JlZ3NbaV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05MTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTM5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6OTQwOiAqIGlkcGZfaXNfcmVzZXRfZGV0ZWN0ZWQgLSBjaGVjayBpZiB3ZSB3ZXJlIHJlc2V0IGF0IHNvbWUgcG9pbnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTk0MS0gKiBAYWRhcHRlcjogZHJpdmVyIHNwZWNpZmljIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTQ0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6OTQ1OnN0YXRpYyBpbmxpbmUgYm9vbCBpZHBmX2lzX3Jlc2V0X2RldGVjdGVkKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05NDYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTk0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjk1MDpcdHJldHVybiAhKHJlYWRsKGlkcGZfZ2V0X21ieF9yZWdfYWRkcihhZGFwdGVyLCBhZGFwdGVyLVx1MDAzZWh3LmFycS1cdTAwM2VyZWcubGVuKSkgXHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05NTEtXHRcdCBhZGFwdGVyLVx1MDAzZWh3LmFycS1cdTAwM2VyZWcubGVuX21hc2spO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTk1NC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjk1NTogKiBpZHBmX2lzX3Jlc2V0X2luX3Byb2cgLSBjaGVjayBpZiByZXNldCBpcyBpbiBwcm9ncmVzc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTU2LSAqIEBhZGFwdGVyOiBkcml2ZXIgc3BlY2lmaWMgcHJpdmF0ZSBzdHJ1Y3R1cmVcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MjkyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBUaGlzIFBDSSBEcml2ZXIqKgoKT2theSwgc28gdGhpcyBpcyBhIFBDSSBkcml2ZXIuIE15IGZpcnN0IHRob3VnaHQgaXMgYWx3YXlzLCBpcyB0aGVyZSBhbiBlbXVsYXRvciBhdmFpbGFibGU/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IHdheSB0byBpbnRlcmFjdCB3aXRoIGl0LCBhbmQgZW11bGF0aW9uIGlzIHVzdWFsbHkgdGhlIGVhc2llc3Qgcm91dGUuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBwYXJ0aWN1bGFyIGRyaXZlciBoYXMgYSBrbm93biBlbXVsYXRvciBvciBpZiBpdCYjMzk7cyByZWFjaGFibGUgaW4gYSBHQ0UvUUVNVSBlbnZpcm9ubWVudC4gSXQmIzM5O3MgdXN1YWxseSB0aGUgY2FzZSB0aGF0IEludGVsIElEUEYsIG9yIHNpbWlsYXIgbmV0d29yayBkZXZpY2VzLCBpcyBhIHBoeXNpY2FsIHBpZWNlIG9mIGhhcmR3YXJlLiBIb3dldmVyLCBJIG5lZWQgdG8gcnVsZSBvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIGEgdmlydHVhbGl6ZWQgdmVyc2lvbi4gSSBrbm93IHRoZSBJRFBGIGlzIHVzdWFsbHkgYSBwaHlzaWNhbCBkZXZpY2UuIFRvIGdldCB0aGUgc3BlY2lmaWMgUENJIElEcyBmb3IgdGhpcyBkcml2ZXIsIEkgc2hvdWxkIGNoZWNrIHRoZSBzb3VyY2UgY29kZSwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZHBmX3BjaV90YmwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jPTI3PXN0YXRpYyBpbnQgaWRwZl9nZXRfZGV2aWNlX3R5cGUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy01MS0gKiBAYWRhcHRlcjogYWRhcHRlciB0byBpbml0aWFsaXplXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjUyOiAqIEBlbnQ6IGVudHJ5IGluIGlkcGZfcGNpX3RibFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy01My0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM9MTkwPXN0YXRpYyBpbnQgaWRwZl9jZmdfaHcoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTIzMS0gKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM6MjMyOiAqIEBlbnQ6IGVudHJ5IGluIGlkcGZfcGNpX3RibFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0yMzMtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jPTIzNj1zdGF0aWMgaW50IGlkcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zNzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjM3NzovKiBpZHBmX3BjaV90YmwgLSBQQ0kgRGV2IGlkcGYgSUQgVGFibGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMzc4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYzozNzk6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGlkcGZfcGNpX3RibFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zODAtXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJRFBGX0RFVl9JRF9QRil9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMzg0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjM4NTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaWRwZl9wY2lfdGJsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMzg2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYz0zODc9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGlkcGZfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zODgtXHQubmFtZVx0XHRcdD0gS0JVSUxEX01PRE5BTUUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjM4OTpcdC5pZF90YWJsZVx0XHQ9IGlkcGZfcGNpX3RibCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMzkwLVx0LnByb2JlXHRcdFx0PSBpZHBmX3Byb2JlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MzQxCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNjc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBDSSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHJlbGF0ZWQgdG8gSW50ZWwmIzM5O3MgYGlkcGZgIGRyaXZlci4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhYm91dCBoYW5kbGluZyBQQ0kgZGV2aWNlcywgc3BlY2lmaWNhbGx5IHdpdGggdGhlIElEcyBgSURQRl9ERVZfSURfUEZgIGFuZCBgSURQRl9ERVZfSURfVkZgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICppcyB0aGlzIGRldmljZSBlbXVsYXRlZCBpbiBRRU1VPyogTm9wZSwgaXQmIzM5O3MgYWN0dWFsIGhhcmR3YXJlLiBCdXQgdGhlbiBJIHJlbWVtYmVyLCAqd2FpdCwgc3l6Ym90IHJlcG9ydGVkIGEgYnVnIGluIGBpZHBmX3Byb2JlYCo/CgpPa2F5LCAqaXMgc3l6Ym90IGZ1enppbmcgdGhpcyBkcml2ZXIgdmlhIHNvbWUgdmlydHVhbCBQQ0kgZnJhbWV3b3JrPyogSSBpbW1lZGlhdGVseSB0aGluayBhYm91dCBgc3l6X3BjaV9kZXZpY2VgLCBhbmQgSSByZWNhbGwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgUENJIGZ1enplciwgd2hpY2ggaW5qZWN0cyBQQ0kgZGV2aWNlcyB2aWEgYHZmaW9gIG9yIHNpbWlsYXIgbWVjaGFuaXNtcy4gSXQgbWF5IGV2ZW4gdXNlIGEgZmFrZSBQQ0kgZGV2aWNlLiBTbywgc3l6a2FsbGVyICpjYW4qIGVtdWxhdGUgUENJIGRldmljZXMuCgpOb3csIHRoZSBzcGVjaWZpYyBwYXRjaCBhZGRzIGBwY2lfZGlzYWJsZV9wdG0ocGRldik7YCBpbiBib3RoIGBpZHBmX3JlbW92ZWAgYW5kIGluIHRoZSBlcnJvciBwYXRoIG9mIGBpZHBmX3Byb2JlYC4gU28sICppcyB0aGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2U/KiBZZXMsIGl0JiMzOTtzIGRpc2FibGluZyBQVE0gKFByZWNpc2lvbiBUaW1lIE1lYXN1cmVtZW50KS4gKklzIGl0IHdvcnRoIGZ1enppbmc/KiBUaGUgY2hhbmdlIGlzIGp1c3QgdGhhdCBzaW5nbGUgbGluZS4gSXQmIzM5O3MgYSBjbGVhbnVwLCBmaXhpbmcgYSBidWcgd2hlcmUgUFRNIHdhc24mIzM5O3QgYmVpbmcgZGlzYWJsZWQsIHdoaWNoIGxpa2VseSBjYXVzZWQgYSB3YXJuaW5nIG9yIHJlc291cmNlIGxlYWsuICpJcyB0aGVyZSBhbnkgY29tcGxleCBsb2dpYyB0byBmdXp6PyogTm8sIGl0JiMzOTtzIGEgc2ltcGxlIGBwY2lfZGlzYWJsZV9wdG0ocGRldilgIGNhbGwuCgpUaGUgY29tbWl0IG1lc3NhZ2Ugc2F5cyAmIzM0O3N5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldyYjMzQ7LCB3aGljaCB0ZWxscyBtZSB0aGF0IFN5emthbGxlciAqZGlkKiBmaW5kIGEgYnVnLiBIb3dldmVyLCBpZiB0aGUgcGF0Y2ggb25seSBhZGRzIGBwY2lfZGlzYWJsZV9wdG0ocGRldilgLCB0aGVyZSYjMzk7cyBubyBuZXcgbG9naWMgdG8gZnV6eiwganVzdCBhIHNpbXBsZSBmaXguICpEb2VzIGl0IGVuYWJsZSBhbnkgbmV3IGZlYXR1cmU/KiBOb3BlLiAqRG9lcyBpdCBhZGQgbmV3IHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYz8qIE5vcGUuICpEb2VzIGl0IG1vZGlmeSBleGVjdXRpb24gZmxvdz8qIEl0IGp1c3QgY2FsbHMgYSBmdW5jdGlvbiB0byBjbGVhbiB1cC4KCipTaG91bGQgd2UgZnV6eiBpdD8qIElmIGl0JiMzOTtzICpqdXN0KiBhIGNsZWFudXAgaW4gdGhlIGVycm9yIHBhdGgsIHRoZXJlIGFyZW4mIzM5O3Qgc3BlY2lmaWMgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLCBleGNlcHQgbWF5YmUgYGlkcGZfcHJvYmVgIGFuZCBgaWRwZl9yZW1vdmVgLCBidXQgdGhvc2UgYXJlIGFscmVhZHkgZnV6emVkIGJ5IHRoZSBQQ0kgZnV6emVyLCBhbnl3YXkuIFRoZXJlZm9yZSwgKmlzIGl0IHdvcnRoIGZ1enppbmc/KgoKSSByZWNhbGwgdGhlIHJ1bGU6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogLi4uIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuJiMzNDsgQnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IFBDSSBkZXZpY2VzIENBTiBiZSBlbXVsYXRlZCBieSBzeXprYWxsZXIgdXNpbmcgYHN5el9wY2lfZGV2aWNlYCEgU28sIHRoZSBxdWVzdGlvbiByZW1haW5zOiBkb2VzICp0aGlzIHBhdGNoKiBpbnRyb2R1Y2UgYW55IG5ldyBsb2dpYyB0byBiZSBoZWF2aWx5IGZ1enplZD8gTm8sIGl0IGp1c3QgYWRkcyBgcGNpX2Rpc2FibGVfcHRtKHBkZXYpYCBpbiB0aGUgY2xlYW51cCBwYXRoLiBTbywgbGV0JiMzOTtzIG5vdyBjaGVjayB3aGF0IGBwY2lfZGlzYWJsZV9wdG1gIGFjdHVhbGx5ICpkb2VzKi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZGlzYWJsZV9wdG0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3BjaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9wY2kvcGNpZS9wdG0uYz0yMjQ9RVhQT1JUX1NZTUJPTChwY2lfZW5hYmxlX3B0bSk7XG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jLTIyNS1cbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmM6MjI2OnN0YXRpYyB2b2lkIF9fcGNpX2Rpc2FibGVfcHRtKHN0cnVjdCBwY2lfZGV2ICpkZXYpXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jLTIyNy17XG4tLVxuZHJpdmVycy9wY2kvcGNpZS9wdG0uYy0yMzktLyoqXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jOjI0MDogKiBwY2lfZGlzYWJsZV9wdG0oKSAtIERpc2FibGUgUHJlY2lzaW9uIFRpbWUgTWVhc3VyZW1lbnRcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmMtMjQxLSAqIEBkZXY6IFBDSSBkZXZpY2Vcbi0tXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jLTI0NC0gKi9cbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmM6MjQ1OnZvaWQgcGNpX2Rpc2FibGVfcHRtKHN0cnVjdCBwY2lfZGV2ICpkZXYpXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jLTI0Ni17XG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jLTI0Ny1cdGlmIChkZXYtXHUwMDNlcHRtX2VuYWJsZWQpIHtcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmM6MjQ4Olx0XHRfX3BjaV9kaXNhYmxlX3B0bShkZXYpO1xuZHJpdmVycy9wY2kvcGNpZS9wdG0uYy0yNDktXHRcdGRldi1cdTAwM2VwdG1fZW5hYmxlZCA9IDA7XG4tLVxuZHJpdmVycy9wY2kvcGNpZS9wdG0uYy0yNTEtfVxuZHJpdmVycy9wY2kvcGNpZS9wdG0uYzoyNTI6RVhQT1JUX1NZTUJPTChwY2lfZGlzYWJsZV9wdG0pO1xuZHJpdmVycy9wY2kvcGNpZS9wdG0uYy0yNTMtXG4tLVxuZHJpdmVycy9wY2kvcGNpZS9wdG0uYz0yNTg9dm9pZCBwY2lfc3VzcGVuZF9wdG0oc3RydWN0IHBjaV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jLTI2MC1cdGlmIChkZXYtXHUwMDNlcHRtX2VuYWJsZWQpXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jOjI2MTpcdFx0X19wY2lfZGlzYWJsZV9wdG0oZGV2KTtcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmMtMjYyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI3OAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDMzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciBhIFNpbXBsZSBDbGVhbnVwKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY2xlYW51cCBwYXRjaC4gVGhlIGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIGV2ZW4gd29ydGggdGhlIGVmZm9ydCBvZiBmdXp6aW5nPyYjMzQ7IFRoZSBwcm9tcHQgZ2l2ZXMgYSBjbGVhciBoZXVyaXN0aWM6IElmIGl0IHRvdWNoZXMgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIEkgbmVlZCB0byB2ZXJpZnkgaXRzIGV4ZWN1dGFiaWxpdHkgd2l0aCBjb2RlIHNlYXJjaCB0b29scyBhbmQgdGhlbiByZXR1cm4gYFdvcnRoRnV6emluZz10cnVlYC4KClRoaXMgb25lICpkb2VzKiB0b3VjaCBhIGRyaXZlciwgYGlkcGZgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGl0LiBUaGUgbmV4dCBxdWVzdGlvbiBpcyBleGVjdXRhYmlsaXR5LiBUaGFua2Z1bGx5LCBJIGtub3cgUENJIGZ1enppbmcgdGhyb3VnaCB0b29scyBsaWtlIHN5emthbGxlciBvZmZlcnMgYSBwYXRoLiBTbywgaXQgY2FuIGJlIGV4ZWN1dGVkLgoKTm93LCBkbyBhbnkgb2YgdGhlIHByb21wdCYjMzk7cyBleGNsdXNpb24gY3JpdGVyaWEgYXBwbHk/IERvY3VtZW50YXRpb24sIEtjb25maWcsIGRlY29yYXRpdmUgY2hhbmdlcyDigJMgbm9uZSBvZiB0aGF0IGhlcmUuIFRoZSBjb2RlIHBhdGggaXNuJiMzOTt0IGltcG9zc2libGUgdG8gcmVhY2ggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gU3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIgZ2VuZXJhdGVzIHJhbmRvbSBQQ0kgZGV2aWNlcywgc28gZXZlbiBpZiBpdCBkb2VzbiYjMzk7dCAqc3BlY2lmaWNhbGx5KiBlbXVsYXRlIGBpZHBmYCwgaXQgY2FuIG1hdGNoICphbnkqIFBDSSBJRCwgdGhlcmVmb3JlIGl0IGNhbiBiZSByZWFjaGVkLgoKSG93ZXZlciwgdGhlIGNoYW5nZSBpdHNlbGYgaXMgZXh0cmVtZWx5IG1pbmltYWw7IGl0JiMzOTtzIGEgY2FsbCB0byBhIGNsZWFudXAgZnVuY3Rpb24uIElmIEkgc2F5IGBXb3J0aEZ1enppbmc9dHJ1ZWAsIEkgaGF2ZSB0byBqdXN0aWZ5IGl0LiBJIG5lZWQgdG8gZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0LiBXaGF0IHNwZWNpZmljIGZ1bmN0aW9ucyBhcmUgdG91Y2hlZCBieSB0aGlzIHBhdGNoPyBJdCYjMzk7cyBgaWRwZl9yZW1vdmVgIGFuZCBgaWRwZl9wcm9iZWAuIExldCYjMzk7cyBkaWcgaW50byB0aG9zZSBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lkcGZfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM9MTkwPXN0YXRpYyBpbnQgaWRwZl9jZmdfaHcoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTIyOS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM6MjMwOiAqIGlkcGZfcHJvYmUgLSBEZXZpY2UgaW5pdGlhbGl6YXRpb24gcm91dGluZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0yMzEtICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0yMzUtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjIzNjpzdGF0aWMgaW50IGlkcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTIzNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYz0zODc9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGlkcGZfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMzg5LVx0LmlkX3RhYmxlXHRcdD0gaWRwZl9wY2lfdGJsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYzozOTA6XHQucHJvYmVcdFx0XHQ9IGlkcGZfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTM5MS1cdC5zcmlvdl9jb25maWd1cmVcdD0gaWRwZl9zcmlvdl9jb25maWd1cmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MzUyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhlc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgdGhlIGNvbnRleHQgaXMgbXkgYXJlYSBvZiBleHBlcnRpc2U6CgoqKkNoZWNraW5nIHRoZSBJRFBGIFNldHVwKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCBgaWRwZl9wcm9iZWAgYW5kIGBpZHBmX3JlbW92ZWAuIFRoZXNlIGFyZSBjbGVhcmx5IHJlbGF0ZWQgdG8gdGhlIElEUEYgbW9kdWxlLCBwcm9iYWJseSBpbml0aWFsaXphdGlvbiBhbmQgcmVtb3ZhbCByb3V0aW5lcyByZXNwZWN0aXZlbHkuIEZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyBxdWlja2x5IGNoZWNrIHRoZSBjb25maWd1cmF0aW9uLiBJcyB0aGVyZSBhbnkgZW5hYmxpbmcgY29uZmlndXJhdGlvbiBmb3IgdGhpcz8gWWVwLCB0aGVyZSBpdCBpczogYENPTkZJR19JRFBGYC4gRXhjZWxsZW50LiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4gTm93IEkga25vdyB3aGV0aGVyIHRoaXMgcGFydGljdWxhciBJRFBGIGZlYXR1cmUgaXMgaW50ZW5kZWQgdG8gYmUgY29tcGlsZWQgaW50byB0aGlzIGJ1aWxkLiBOb3cgSSBjYW4gbW92ZSBmb3J3YXJkIHdpdGggYW5hbHl6aW5nIHRoZSBgaWRwZl9wcm9iZWAgYW5kIGBpZHBmX3JlbW92ZWAgcm91dGluZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJRFBGJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy0zLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnOjQ6Y29uZmlnIElEUEZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy01LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwoUikgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc9MTc9aWYgSURQRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnOjE5OmNvbmZpZyBJRFBGX1NJTkdMRVFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy0yMC1cdGJvb2wgXCYjMzQ7aWRwZiBzaW5nbGVxIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTQ6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk3NzAKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIElEUEYgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgcmlnaHQgb2ZmIHRoZSBiYXQsIGl0IHNlZW1zIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGlzIGBJRFBGYC4gTm93LCB0aGUgcXVlc3Rpb24gaXM6IGlzIHRoaXMgd29ydGggdGhlIGVmZm9ydCBvZiBmdXp6aW5nPyBJdCYjMzk7cyBhIHNpbXBsZSBmaXgsIGEgcmVzb3VyY2UgbGVhaywgc3BlY2lmaWNhbGx5IHRoZSBQVE0gaXNuJiMzOTt0IGJlaW5nIGRpc2FibGVkLiBJZiBJJiMzOTttIHVuZGVyc3RhbmRpbmcgdGhpcyBjb3JyZWN0bHksIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgaGluZ2VzIGFyb3VuZCBgaWRwZl9wcm9iZWAgYW5kIGBpZHBmX3JlbW92ZWAuIFNpbmNlIHRoZSByb290IGNhdXNlIGlzIGEgc2ltcGxlIG1pc3NpbmcgZGlzYWJsZSBvZiBhIGZlYXR1cmUsIGFuZCBhc3N1bWluZyB0aGUgaXNzdWUgaXMgd2VsbCB1bmRlcnN0b29kIGFscmVhZHksIGJlY2F1c2UgaXQmIzM5O3MgYWxyZWFkeSBpbiB0aGUgcGlwZWxpbmUsIGl0JiMzOTtzIGxpa2VseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgZml4ZXMgYSBwcm9ibGVtLgoKQ29uc2lkZXJpbmcgdGhhdCB0aGUgcGF0Y2ggaGFzIGxpa2VseSBhbHJlYWR5IGJlZW4gZm91bmQgYnkgc3l6a2FsbGVyIG9yIGFub3RoZXIgdGVzdGVyLCBhbmQgdGhlIGZpeCBpcyBmdW5jdGlvbmFsbHkgc291bmQgKGRpc2FibGluZyBQVE0pLCBJJiMzOTttIGxlYW5pbmcgdG93YXJkcyB0aGUgY29uY2x1c2lvbiB0aGF0IHRoaXMgaXMgd29ydGh3aGlsZS4gTGV0JiMzOTtzIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgLiBNeSBwcmltYXJ5IGZvY3VzIHNob3VsZCBiZSBvbiB0aGUgYGlkcGZfcHJvYmVgIGFuZCBgaWRwZl9yZW1vdmVgIGZ1bmN0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgZm9yIG90aGVyIGNvbmZpZ3VyYXRpb25zIHRvIGJlIGFic29sdXRlbHkgc3VyZSwgYW5kIHRoZSBzcGVjaWZpYyBmaWxlIHRoaXMgcGF0Y2ggdG91Y2hlcyBpcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uY2AuIEJlZm9yZSBJIHByb2NlZWQsIEkgbmVlZCB0byBjaGVjayBmb3IgYW55IGAjaWZkZWZgIGRpcmVjdGl2ZXMgYXJvdW5kIHRoZSBjb2RlIEkmIzM5O20gaW52ZXN0aWdhdGluZyB0byBlbnN1cmUgSSBoYXZlIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gaW4gdGhpcyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNDA6XHRcdGRlc3Ryb3lfd29ya3F1ZXVlKGFkYXB0ZXItXHUwMDNlc3RhdHNfd3EpO1xuIDE0MTpcdFx0ZGVzdHJveV93b3JrcXVldWUoYWRhcHRlci1cdTAwM2V2Y19ldmVudF93cSk7XG4gMTQyOlx0XG4gMTQzOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhZGFwdGVyLVx1MDAzZW1heF92cG9ydHM7IGkmIzQzOyYjNDM7KSB7XG4gMTQ0Olx0XHRcdGlmICghYWRhcHRlci1cdTAwM2V2cG9ydF9jb25maWdbaV0pXG4gMTQ1Olx0XHRcdFx0Y29udGludWU7XG4gMTQ2Olx0XHRcdGtmcmVlKGFkYXB0ZXItXHUwMDNldnBvcnRfY29uZmlnW2ldLVx1MDAzZXVzZXJfY29uZmlnLnFfY29hbGVzY2UpO1xuIDE0NzpcdFx0XHRrZnJlZShhZGFwdGVyLVx1MDAzZXZwb3J0X2NvbmZpZ1tpXSk7XG4gMTQ4Olx0XHRcdGFkYXB0ZXItXHUwMDNldnBvcnRfY29uZmlnW2ldID0gTlVMTDtcbiAxNDk6XHRcdH1cbiAxNTA6XHRcdGtmcmVlKGFkYXB0ZXItXHUwMDNldnBvcnRfY29uZmlnKTtcbiAxNTE6XHRcdGFkYXB0ZXItXHUwMDNldnBvcnRfY29uZmlnID0gTlVMTDtcbiAxNTI6XHRcdGtmcmVlKGFkYXB0ZXItXHUwMDNlbmV0ZGV2cyk7XG4gMTUzOlx0XHRhZGFwdGVyLVx1MDAzZW5ldGRldnMgPSBOVUxMO1xuIDE1NDpcdFx0a2ZyZWUoYWRhcHRlci1cdTAwM2V2Y3huX21uZ3IpO1xuIDE1NTpcdFx0YWRhcHRlci1cdTAwM2V2Y3huX21uZ3IgPSBOVUxMO1xuIDE1NjpcdFxuIDE1NzpcdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZhZGFwdGVyLVx1MDAzZXZwb3J0X2N0cmxfbG9jayk7XG4gMTU4Olx0XHRtdXRleF9kZXN0cm95KFx1MDAyNmFkYXB0ZXItXHUwMDNldmVjdG9yX2xvY2spO1xuIDE1OTpcdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZhZGFwdGVyLVx1MDAzZXF1ZXVlX2xvY2spO1xuIDE2MDpcdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZhZGFwdGVyLVx1MDAzZXZjX2J1Zl9sb2NrKTtcbiAxNjE6XHRcbiAxNjI6XHRcdHBjaV9kaXNhYmxlX3B0bShwZGV2KTtcbiAxNjM6XHRcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTtcbiAxNjQ6XHRcdGtmcmVlKGFkYXB0ZXIpO1xuIDE2NTpcdH1cbiAxNjY6XHRcbiAxNjc6XHQvKipcbiAxNjg6XHQgKiBpZHBmX3NodXRkb3duIC0gUENJIGNhbGxiYWNrIGZvciBzaHV0dGluZyBkb3duIGRldmljZVxuIDE2OTpcdCAqIEBwZGV2OiBQQ0kgZGV2aWNlIGluZm9ybWF0aW9uIHN0cnVjdFxuIDE3MDpcdCAqL1xuIDE3MTpcdHN0YXRpYyB2b2lkIGlkcGZfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gMTcyOlx0e1xuIDE3MzpcdFx0c3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlciA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiAxNzQ6XHRcbiAxNzU6XHRcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZhZGFwdGVyLVx1MDAzZXNlcnZfdGFzayk7XG4gMTc2Olx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2YWRhcHRlci1cdTAwM2V2Y19ldmVudF90YXNrKTtcbiAxNzc6XHRcdGlkcGZfdmNfY29yZV9kZWluaXQoYWRhcHRlcik7XG4gMTc4Olx0XHRpZHBmX2RlaW5pdF9kZmx0X21ieChhZGFwdGVyKTtcbiAxNzk6XHRcbiAxODA6XHRcdGlmIChzeXN0ZW1fc3RhdGUgPT0gU1lTVEVNX1BPV0VSX09GRilcbiAxODE6XHRcdFx0cGNpX3NldF9wb3dlcl9zdGF0ZShwZGV2LCBQQ0lfRDNob3QpO1xuIDE4MjpcdH1cbiAxODM6XHRcbiAxODQ6XHQvKipcbiAxODU6XHQgKiBpZHBmX2NmZ19odyAtIEluaXRpYWxpemUgSFcgc3RydWN0XG4gMTg2Olx0ICogQGFkYXB0ZXI6IGFkYXB0ZXIgdG8gc2V0dXAgaHcgc3RydWN0IGZvclxuIDE4NzpcdCAqXG4gMTg4Olx0ICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG9uIGZhaWx1cmVcbiAxODk6XHQgKi9cbiAxOTA6XHRzdGF0aWMgaW50IGlkcGZfY2ZnX2h3KHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gMTkxOlx0e1xuIDE5MjpcdFx0cmVzb3VyY2Vfc2l6ZV90IHJlc19zdGFydCwgbWJ4X3N0YXJ0LCByc3RhdF9zdGFydDtcbiAxOTM6XHRcdHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gYWRhcHRlci1cdTAwM2VwZGV2O1xuIDE5NDpcdFx0c3RydWN0IGlkcGZfaHcgKmh3ID0gXHUwMDI2YWRhcHRlci1cdTAwM2VodztcbiAxOTU6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuIDE5NjpcdFx0bG9uZyBsZW47XG4gMTk3Olx0XG4gMTk4Olx0XHRyZXNfc3RhcnQgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGRldiwgMCk7XG4gMTk5Olx0XG4gMjAwOlx0XHQvKiBNYXAgbWFpbGJveCBzcGFjZSBmb3IgdmlydGNobmwgY29tbXVuaWNhdGlvbiAqL1xuIDIwMTpcdFx0bWJ4X3N0YXJ0ID0gcmVzX3N0YXJ0ICYjNDM7IGFkYXB0ZXItXHUwMDNlZGV2X29wcy5zdGF0aWNfcmVnX2luZm9bMF0uc3RhcnQ7XG4gMjAyOlx0XHRsZW4gPSByZXNvdXJjZV9zaXplKFx1MDAyNmFkYXB0ZXItXHUwMDNlZGV2X29wcy5zdGF0aWNfcmVnX2luZm9bMF0pO1xuIDIwMzpcdFx0aHctXHUwMDNlbWJ4LnZhZGRyID0gZGV2bV9pb3JlbWFwKGRldiwgbWJ4X3N0YXJ0LCBsZW4pO1xuIDIwNDpcdFx0aWYgKCFody1cdTAwM2VtYngudmFkZHIpIHtcbiAyMDU6XHRcdFx0cGNpX2VycihwZGV2LCBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgQkFSMCBtYnggcmVnaW9uXFxuXCYjMzQ7KTtcbiAyMDY6XHRcbiAyMDc6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMjA4Olx0XHR9XG4gMjA5Olx0XHRody1cdTAwM2VtYnguYWRkcl9zdGFydCA9IGFkYXB0ZXItXHUwMDNlZGV2X29wcy5zdGF0aWNfcmVnX2luZm9bMF0uc3RhcnQ7XG4gMjEwOlx0XHRody1cdTAwM2VtYnguYWRkcl9sZW4gPSBsZW47XG4gMjExOlx0XG4gMjEyOlx0XHQvKiBNYXAgcnN0YXQgc3BhY2UgZm9yIHJlc2V0cyAqL1xuIDIxMzpcdFx0cnN0YXRfc3RhcnQgPSByZXNfc3RhcnQgJiM0MzsgYWRhcHRlci1cdTAwM2VkZXZfb3BzLnN0YXRpY19yZWdfaW5mb1sxXS5zdGFydDtcbiAyMTQ6XHRcdGxlbiA9IHJlc291cmNlX3NpemUoXHUwMDI2YWRhcHRlci1cdTAwM2VkZXZfb3BzLnN0YXRpY19yZWdfaW5mb1sxXSk7XG4gMjE1Olx0XHRody1cdTAwM2Vyc3RhdC52YWRkciA9IGRldm1faW9yZW1hcChkZXYsIHJzdGF0X3N0YXJ0LCBsZW4pO1xuIDIxNjpcdFx0aWYgKCFody1cdTAwM2Vyc3RhdC52YWRkcikge1xuIDIxNzpcdFx0XHRwY2lfZXJyKHBkZXYsIFwmIzM0O2ZhaWxlZCB0byBhbGxvY2F0ZSBCQVIwIHJzdGF0IHJlZ2lvblxcblwmIzM0Oyk7XG4gMjE4Olx0XG4gMjE5Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDIyMDpcdFx0fVxuIDIyMTpcdFx0aHctXHUwMDNlcnN0YXQuYWRkcl9zdGFydCA9IGFkYXB0ZXItXHUwMDNlZGV2X29wcy5zdGF0aWNfcmVnX2luZm9bMV0uc3RhcnQ7XG4gMjIyOlx0XHRody1cdTAwM2Vyc3RhdC5hZGRyX2xlbiA9IGxlbjtcbiAyMjM6XHRcbiAyMjQ6XHRcdGh3LVx1MDAzZWJhY2sgPSBhZGFwdGVyO1xuIDIyNTpcdFxuIDIyNjpcdFx0cmV0dXJuIDA7XG4gMjI3Olx0fVxuIDIyODpcdFxuIDIyOTpcdC8qKlxuIDIzMDpcdCAqIGlkcGZfcHJvYmUgLSBEZXZpY2UgaW5pdGlhbGl6YXRpb24gcm91dGluZVxuIDIzMTpcdCAqIEBwZGV2OiBQQ0kgZGV2aWNlIGluZm9ybWF0aW9uIHN0cnVjdFxuIDIzMjpcdCAqIEBlbnQ6IGVudHJ5IGluIGlkcGZfcGNpX3RibFxuIDIzMzpcdCAqXG4gMjM0Olx0ICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG9uIGZhaWx1cmVcbiAyMzU6XHQgKi9cbiAyMzY6XHRzdGF0aWMgaW50IGlkcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gMjM3Olx0e1xuIDIzODpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4gMjM5Olx0XHRzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTkzMwoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIGNoZWNraW5nIHRoZSByZXN0IG9mIGBpZHBmX3Byb2JlYCwgcmVuZGVyZWQgYXMgYSBmaXJzdC1wZXJzb24gYWNjb3VudCwgYXNzdW1pbmcgSSYjMzk7bSBhbHJlYWR5IGRlZXAgaW4gdGhlIHdlZWRzIG9mIHRoaXMgc3ViamVjdDoKCioqQW5hbHl6aW5nIHRoZSBSZW1haW5kZXIgb2YgYGlkcGZfcHJvYmVgKioKCkFscmlnaHQsIHNvIHdlJiMzOTt2ZSBsb29rZWQgYXQgdGhlIGluaXRpYWwgYXNwZWN0cyBvZiBgaWRwZl9wcm9iZWAsIGFuZCBub3cgaXQmIzM5O3MgdGltZSB0byB0aG9yb3VnaGx5IGV4YW1pbmUgdGhlIHJlbWFpbmluZyBwYXJ0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHksIHNvIHRoaXMgaXNuJiMzOTt0IGp1c3QgYWJvdXQgYSBjdXJzb3J5IGdsYW5jZS4gSSYjMzk7bSBnb2luZyB0byBjYXJlZnVsbHkgZGlzc2VjdCB3aGF0JiMzOTtzIGxlZnQsIG1ha2luZyBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55IGNyaXRpY2FsIGRldGFpbHMgdGhhdCBtaWdodCBpbXBhY3QgaXRzIG92ZXJhbGwgcGVyZm9ybWFuY2UsIHN0YWJpbGl0eSwgb3Igc2VjdXJpdHksIHBhcnRpY3VsYXJseSBpZiB0aGlzIGlzIHNvbWV0aGluZyBiZWluZyBhY3RpdmVseSBkZXBsb3llZC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIGVkZ2UgY2FzZXMgdGhhdCBoYXZlbiYjMzk7dCBiZWVuIGFkZHJlc3NlZCwgcG9zc2libGUgYXJlYXMgb2Ygb3B0aW1pemF0aW9uLCBhbmQgYW55IGluZGljYXRpb24gb2YgcG90ZW50aWFsIGJ1Z3Mgb3IgdnVsbmVyYWJpbGl0aWVzLiBNeSBmb2N1cyBpcyBvbiBlbnN1cmluZyBhIHJvYnVzdCBhbmQgcmVsaWFibGUgaW1wbGVtZW50YXRpb24uIEkmIzM5O2xsIGJlIGFza2luZyBteXNlbGYgcXVlc3Rpb25zOiBBcmUgdGhlcmUgYW55IGVycm9yIGhhbmRsaW5nIGdhcHM/IElzIHRoaXMgcGFydCBvZiB0aGUgY29kZSB0aHJlYWQtc2FmZT8gRG9lcyB0aGUgbG9naWMgaGVyZSBhZGhlcmUgdG8gdGhlIHN0YW5kYXJkcyBhbmQgYmVzdCBwcmFjdGljZXMgdGhhdCBhcmUgZXhwZWN0ZWQgZm9yIHRoaXMgY29udGV4dD8gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgY29kZSBpcyBib3RoIGZ1bmN0aW9uYWwgYW5kIHdlbGwtYXJjaGl0ZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI0MDpcdFx0aW50IGVycjtcbiAyNDE6XHRcbiAyNDI6XHRcdGFkYXB0ZXIgPSBremFsbG9jX29iaigqYWRhcHRlcik7XG4gMjQzOlx0XHRpZiAoIWFkYXB0ZXIpXG4gMjQ0Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDI0NTpcdFxuIDI0NjpcdFx0YWRhcHRlci1cdTAwM2VyZXFfdHhfc3BsaXRxID0gdHJ1ZTtcbiAyNDc6XHRcdGFkYXB0ZXItXHUwMDNlcmVxX3J4X3NwbGl0cSA9IHRydWU7XG4gMjQ4Olx0XG4gMjQ5Olx0XHRhZGFwdGVyLVx1MDAzZXBkZXYgPSBwZGV2O1xuIDI1MDpcdFx0ZXJyID0gcGNpbV9lbmFibGVfZGV2aWNlKHBkZXYpO1xuIDI1MTpcdFx0aWYgKGVycilcbiAyNTI6XHRcdFx0Z290byBlcnJfZnJlZTtcbiAyNTM6XHRcbiAyNTQ6XHRcdGVyciA9IHBjaW1fcmVxdWVzdF9yZWdpb24ocGRldiwgMCwgcGNpX25hbWUocGRldikpO1xuIDI1NTpcdFx0aWYgKGVycikge1xuIDI1NjpcdFx0XHRwY2lfZXJyKHBkZXYsIFwmIzM0O3BjaW1fcmVxdWVzdF9yZWdpb24gZmFpbGVkICVwZVxcblwmIzM0OywgRVJSX1BUUihlcnIpKTtcbiAyNTc6XHRcbiAyNTg6XHRcdFx0Z290byBlcnJfZnJlZTtcbiAyNTk6XHRcdH1cbiAyNjA6XHRcbiAyNjE6XHRcdGVyciA9IHBjaV9lbmFibGVfcHRtKHBkZXYsIE5VTEwpO1xuIDI2MjpcdFx0aWYgKGVycilcbiAyNjM6XHRcdFx0cGNpX2RiZyhwZGV2LCBcJiMzNDtQQ0llIFBUTSBpcyBub3Qgc3VwcG9ydGVkIGJ5IFBDSWUgYnVzL2NvbnRyb2xsZXJcXG5cJiMzNDspO1xuIDI2NDpcdFxuIDI2NTpcdFx0Lyogc2V0IHVwIGZvciBoaWdoIG9yIGxvdyBkbWEgKi9cbiAyNjY6XHRcdGVyciA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJlbnQoZGV2LCBETUFfQklUX01BU0soNjQpKTtcbiAyNjc6XHRcdGlmIChlcnIpIHtcbiAyNjg6XHRcdFx0cGNpX2VycihwZGV2LCBcJiMzNDtETUEgY29uZmlndXJhdGlvbiBmYWlsZWQ6ICVwZVxcblwmIzM0OywgRVJSX1BUUihlcnIpKTtcbiAyNjk6XHRcbiAyNzA6XHRcdFx0Z290byBlcnJfZGlzYWJsZV9wdG07XG4gMjcxOlx0XHR9XG4gMjcyOlx0XG4gMjczOlx0XHRwY2lfc2V0X21hc3RlcihwZGV2KTtcbiAyNzQ6XHRcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBhZGFwdGVyKTtcbiAyNzU6XHRcbiAyNzY6XHRcdGFkYXB0ZXItXHUwMDNlaW5pdF93cSA9IGFsbG9jX3dvcmtxdWV1ZShcJiMzNDslcy0lcy1pbml0XCYjMzQ7LFxuIDI3NzpcdFx0XHRcdFx0XHQgICBXUV9VTkJPVU5EIHwgV1FfTUVNX1JFQ0xBSU0sIDAsXG4gMjc4Olx0XHRcdFx0XHRcdCAgIGRldl9kcml2ZXJfc3RyaW5nKGRldiksXG4gMjc5Olx0XHRcdFx0XHRcdCAgIGRldl9uYW1lKGRldikpO1xuIDI4MDpcdFx0aWYgKCFhZGFwdGVyLVx1MDAzZWluaXRfd3EpIHtcbiAyODE6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBpbml0IHdvcmtxdWV1ZVxcblwmIzM0Oyk7XG4gMjgyOlx0XHRcdGVyciA9IC1FTk9NRU07XG4gMjgzOlx0XHRcdGdvdG8gZXJyX2Rpc2FibGVfcHRtO1xuIDI4NDpcdFx0fVxuIDI4NTpcdFxuIDI4NjpcdFx0YWRhcHRlci1cdTAwM2VzZXJ2X3dxID0gYWxsb2Nfd29ya3F1ZXVlKFwmIzM0OyVzLSVzLXNlcnZpY2VcJiMzNDssXG4gMjg3Olx0XHRcdFx0XHRcdCAgIFdRX1VOQk9VTkQgfCBXUV9NRU1fUkVDTEFJTSwgMCxcbiAyODg6XHRcdFx0XHRcdFx0ICAgZGV2X2RyaXZlcl9zdHJpbmcoZGV2KSxcbiAyODk6XHRcdFx0XHRcdFx0ICAgZGV2X25hbWUoZGV2KSk7XG4gMjkwOlx0XHRpZiAoIWFkYXB0ZXItXHUwMDNlc2Vydl93cSkge1xuIDI5MTpcdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIGFsbG9jYXRlIHNlcnZpY2Ugd29ya3F1ZXVlXFxuXCYjMzQ7KTtcbiAyOTI6XHRcdFx0ZXJyID0gLUVOT01FTTtcbiAyOTM6XHRcdFx0Z290byBlcnJfc2Vydl93cV9hbGxvYztcbiAyOTQ6XHRcdH1cbiAyOTU6XHRcbiAyOTY6XHRcdGFkYXB0ZXItXHUwMDNlbWJ4X3dxID0gYWxsb2Nfd29ya3F1ZXVlKFwmIzM0OyVzLSVzLW1ieFwmIzM0OywgV1FfVU5CT1VORCB8IFdRX0hJR0hQUkksXG4gMjk3Olx0XHRcdFx0XHRcdCAgMCwgZGV2X2RyaXZlcl9zdHJpbmcoZGV2KSxcbiAyOTg6XHRcdFx0XHRcdFx0ICBkZXZfbmFtZShkZXYpKTtcbiAyOTk6XHRcdGlmICghYWRhcHRlci1cdTAwM2VtYnhfd3EpIHtcbiAzMDA6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBtYWlsYm94IHdvcmtxdWV1ZVxcblwmIzM0Oyk7XG4gMzAxOlx0XHRcdGVyciA9IC1FTk9NRU07XG4gMzAyOlx0XHRcdGdvdG8gZXJyX21ieF93cV9hbGxvYztcbiAzMDM6XHRcdH1cbiAzMDQ6XHRcbiAzMDU6XHRcdGFkYXB0ZXItXHUwMDNlc3RhdHNfd3EgPSBhbGxvY193b3JrcXVldWUoXCYjMzQ7JXMtJXMtc3RhdHNcJiMzNDssXG4gMzA2Olx0XHRcdFx0XHRcdCAgICBXUV9VTkJPVU5EIHwgV1FfTUVNX1JFQ0xBSU0sIDAsXG4gMzA3Olx0XHRcdFx0XHRcdCAgICBkZXZfZHJpdmVyX3N0cmluZyhkZXYpLFxuIDMwODpcdFx0XHRcdFx0XHQgICAgZGV2X25hbWUoZGV2KSk7XG4gMzA5Olx0XHRpZiAoIWFkYXB0ZXItXHUwMDNlc3RhdHNfd3EpIHtcbiAzMTA6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSB3b3JrcXVldWVcXG5cJiMzNDspO1xuIDMxMTpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIDMxMjpcdFx0XHRnb3RvIGVycl9zdGF0c193cV9hbGxvYztcbiAzMTM6XHRcdH1cbiAzMTQ6XHRcbiAzMTU6XHRcdGFkYXB0ZXItXHUwMDNldmNfZXZlbnRfd3EgPSBhbGxvY193b3JrcXVldWUoXCYjMzQ7JXMtJXMtdmNfZXZlbnRcJiMzNDssXG4gMzE2Olx0XHRcdFx0XHRcdCAgICAgICBXUV9VTkJPVU5EIHwgV1FfTUVNX1JFQ0xBSU0sIDAsXG4gMzE3Olx0XHRcdFx0XHRcdCAgICAgICBkZXZfZHJpdmVyX3N0cmluZyhkZXYpLFxuIDMxODpcdFx0XHRcdFx0XHQgICAgICAgZGV2X25hbWUoZGV2KSk7XG4gMzE5Olx0XHRpZiAoIWFkYXB0ZXItXHUwMDNldmNfZXZlbnRfd3EpIHtcbiAzMjA6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSB2aXJ0Y2hubCBldmVudCB3b3JrcXVldWVcXG5cJiMzNDspO1xuIDMyMTpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIDMyMjpcdFx0XHRnb3RvIGVycl92Y19ldmVudF93cV9hbGxvYztcbiAzMjM6XHRcdH1cbiAzMjQ6XHRcbiAzMjU6XHRcdC8qIHNldHVwIG1zZ2x2bCAqL1xuIDMyNjpcdFx0YWRhcHRlci1cdTAwM2Vtc2dfZW5hYmxlID0gbmV0aWZfbXNnX2luaXQoLTEsIElEUEZfQVZBSUxfTkVUSUZfTSk7XG4gMzI3Olx0XG4gMzI4Olx0XHRlcnIgPSBpZHBmX2Rldl9pbml0KGFkYXB0ZXIsIGVudCk7XG4gMzI5Olx0XHRpZiAoZXJyKSB7XG4gMzMwOlx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O1VuZXhwZWN0ZWQgZGV2IElEIDB4JXggaW4gaWRwZiBwcm9iZVxcblwmIzM0OyxcbiAzMzE6XHRcdFx0XHRlbnQtXHUwMDNlZGV2aWNlKTtcbiAzMzI6XHRcdFx0Z290byBkZXN0cm95X3ZjX2V2ZW50X3dxO1xuIDMzMzpcdFx0fVxuIDMzNDpcdFxuIDMzNTpcdFx0ZXJyID0gaWRwZl9jZmdfaHcoYWRhcHRlcik7XG4gMzM2Olx0XHRpZiAoZXJyKSB7XG4gMzM3Olx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gY29uZmlndXJlIEhXIHN0cnVjdHVyZSBmb3IgYWRhcHRlcjogJWRcXG5cJiMzNDssXG4gMzM4Olx0XHRcdFx0ZXJyKTtcbiAzMzk6XHRcdFx0Z290byBkZXN0cm95X3ZjX2V2ZW50X3dxO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzg0MQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQ1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpczogaWRwZiBkcml2ZXIgY2xlYW51cCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZGluZyBgcGNpX2Rpc2FibGVfcHRtKHBkZXYpYCBpbiB0d28gcGxhY2VzOiBgaWRwZl9yZW1vdmVgIGFuZCB0aGUgZXJyb3IgcGF0aCBvZiBgaWRwZl9wcm9iZWAuIFRoZSBpbnRlbnQgc2VlbXMgY2xlYXI6IGl0JiMzOTtzIGEgbWlub3IgY2xlYW51cCB0byBwcmV2ZW50IHJlc291cmNlIGxlYWtzIG9yIHdhcm5pbmdzIHdoZW4gdGhlIGRyaXZlciB1bmxvYWRzIG9yIGZhaWxzIHRvIGxvYWQuIEZ1bmN0aW9uYWxseSwgaXQmIzM5O3MgcHJldHR5IHNtYWxsLiBUaGUgY29yZSBleGVjdXRpb24gZmxvdyBpcyBhbHRlcmVkIHNpbmNlIHRoaXMgZnVuY3Rpb24gaXMgbm93IGNhbGxlZCBkdXJpbmcgdW5sb2FkIGFuZCBvbiBwcm9iZSBmYWlsdXJlLCBzbyB0aGF0JiMzOTtzIHNvbWV0aGluZyB0byBub3RlLgoKVGhlIHF1ZXN0aW9uLCBhcyBhbHdheXMsIGlzIHdoZXRoZXIgaXQmIzM5O3Mgd29ydGggZnV6emluZy4gSW5pdGlhbGx5LCBteSBndXQgc2F5cyAmIzM0O25vLCYjMzQ7IGJlY2F1c2UgZnV6emluZyB3b3VsZCBtb3N0bHkgaW52b2x2ZSBydW5uaW5nIGBpZHBmX3Byb2JlYCBhbmQgYGlkcGZfcmVtb3ZlYCwgd2hpY2ggc2VlbXMgYmFzaWMuIEJ1dCBTeXprYWxsZXIgYWxyZWFkeSBoaXRzIHRob3NlIGZ1bmN0aW9ucy4gTm8gY29tcGxleCBsb2dpYyBpcyBpbnRyb2R1Y2VkIGVpdGhlci4gQnV0LCB0aGUgcHJvbXB0IGhhcyBhIGxpc3Qgb2YgdGhpbmdzICpub3QqIHRvIGZ1enouIExldCBtZSByZXZpZXcgdGhhdCBsaXN0LgoKSG1tLCB0aGUgcGF0Y2ggKmRvZXNuJiMzOTt0KiBtb2RpZnkgZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIGxvZ2dpbmcsIGNvbnN0YW50cyB0aGF0IGRvbiYjMzk7dCBjaGFuZ2UgZmxvdywgb3IgdW5yZWFjaGFibGUgY29kZS4gVGhpcyBwYXRjaCAqZG9lcyogdG91Y2ggcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHJlbGF0ZWQgdG8gUENJIGRyaXZlciBjbGVhbnVwLiBJIGNhbiBjb25maXJtIHRoaXMsIGFzIFBDSSBkZXZpY2VzIGNhbiBiZSBlbXVsYXRlZCBieSBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciwgd2hpY2ggbWFrZXMgdGhpcyBjb2RlIHBhdGggcmVhY2hhYmxlLiBTbyB0aGF0IG1lYW5zIEkgc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgLiBNeSBrZXkgZm9jdXMgc3ltYm9scyB3aWxsIGJlIGBpZHBmX3Byb2JlYCBhbmQgYGlkcGZfcmVtb3ZlYC4gQWxzbywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX0lEUEZgIGlzIGVuYWJsZWQuCgpMZXQgbWUgZG91YmxlLWNoZWNrIGZvciBvdGhlciByZWxldmFudCBjb25maWdzLCBqdXN0IGluIGNhc2UuIE9oLCByaWdodCwgYHBjaV9kaXNhYmxlX3B0bWAgaXMgZGVmaW5lZCBpbiBgZHJpdmVycy9wY2kvcGNpZS9wdG0uY2AuIEkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGlzIGEgY29uZmlnIGZvciB0aGF0LiBMZXQgbWUgbG9vayBhdCB0aGF0IGZpbGUuLi5hbmQgdGhlIGZ1bmN0aW9uLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQQ0lFX1BUTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGNpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3BjaS9wY2llL0tjb25maWc9MTIxPWNvbmZpZyBQQ0lFX0RQQ1xuLS1cbmRyaXZlcnMvcGNpL3BjaWUvS2NvbmZpZy0xMzAtXG5kcml2ZXJzL3BjaS9wY2llL0tjb25maWc6MTMxOmNvbmZpZyBQQ0lFX1BUTVxuZHJpdmVycy9wY2kvcGNpZS9LY29uZmlnLTEzMi1cdGJvb2wgXCYjMzQ7UENJIEV4cHJlc3MgUHJlY2lzaW9uIFRpbWUgTWVhc3VyZW1lbnQgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDgxOQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOgoKKipDaGVja2luZyBQVE0gTG9naWMgRnVuY3Rpb25hbGl0eSoqCgpSaWdodCwgc28gdG8gcHJvcGVybHkgdmV0IHRoaXMgUFRNIGxvZ2ljLCBJIG5lZWQgdG8gbWFrZSBzdXJlIGBQQ0lFX1BUTWAgaXMgYWN0dWFsbHkgZW5hYmxlZC4gT3RoZXJ3aXNlLCB0cnlpbmcgdG8gdGVzdCB0aGUgcHJvY2VzcyB3aWxsIGJlIG1lYW5pbmdsZXNzLiBJdCBsb29rcyBsaWtlIGBwY2lfZGlzYWJsZV9wdG1gIGlzIHRoZSBjcnVjaWFsIGZ1bmN0aW9uIHRvIGZvY3VzIG9uIGhlcmUuCgpUaGUgY2F0Y2ggaXMsIGlmIGBQQ0lFX1BUTWAgaXNuJiMzOTt0IGVuYWJsZWQsIGBwY2lfZGlzYWJsZV9wdG1gICptaWdodCoganVzdCBiZSBhIG5vLW9wLCBvciBwZXJoYXBzIG9ubHkgY2xlYXIgYSBmbGFnLCB3aGljaCB3b3VsZG4mIzM5O3QgYmUgdmVyeSBoZWxwZnVsIGZvciBjb25maXJtaW5nIHRoZSBwcm9wZXIgZnVuY3Rpb25pbmcgb2YgdGhlIGVudGlyZSBwYXRod2F5LiBTbywgYSBjcml0aWNhbCBjaGVjayBpcyBuZWNlc3Nhcnk6IEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYHBjaV9kaXNhYmxlX3B0bWAgaXMgZXZlbiBkZWZpbmVkIGluIHRoZSBjYXNlIHdoZXJlIGBQQ0lFX1BUTWAgaXMgZGlzYWJsZWQuIFRoYXQmIzM5O3MgdGhlIGtleSBwb2ludC4gSWYgaXQgKmlzKiBkZWZpbmVkLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgdGhvcm91Z2hseSB0byBrbm93IGhvdyB0byBwcm9jZWVkLiBJIHN1c3BlY3QgdGhpcyB3aWxsIHRlbGwgbWUgYSBsb3QgYWJvdXQgdGhlIGRlc2lnbiBjaG9pY2VzIHRoYXQgd2VyZSBtYWRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZGlzYWJsZV9wdG0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3BjaS5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvcGNpLmg9MTk3OD1pbnQgcGNpX2VuYWJsZV9wdG0oc3RydWN0IHBjaV9kZXYgKmRldiwgdTggKmdyYW51bGFyaXR5KTtcbmluY2x1ZGUvbGludXgvcGNpLmg6MTk3OTp2b2lkIHBjaV9kaXNhYmxlX3B0bShzdHJ1Y3QgcGNpX2RldiAqZGV2KTtcbmluY2x1ZGUvbGludXgvcGNpLmgtMTk4MC1ib29sIHBjaWVfcHRtX2VuYWJsZWQoc3RydWN0IHBjaV9kZXYgKmRldik7XG4tLVxuaW5jbHVkZS9saW51eC9wY2kuaD0xOTgyPXN0YXRpYyBpbmxpbmUgaW50IHBjaV9lbmFibGVfcHRtKHN0cnVjdCBwY2lfZGV2ICpkZXYsIHU4ICpncmFudWxhcml0eSlcbmluY2x1ZGUvbGludXgvcGNpLmgtMTk4My17IHJldHVybiAtRUlOVkFMOyB9XG5pbmNsdWRlL2xpbnV4L3BjaS5oOjE5ODQ6c3RhdGljIGlubGluZSB2b2lkIHBjaV9kaXNhYmxlX3B0bShzdHJ1Y3QgcGNpX2RldiAqZGV2KSB7IH1cbmluY2x1ZGUvbGludXgvcGNpLmgtMTk4NS1zdGF0aWMgaW5saW5lIGJvb2wgcGNpZV9wdG1fZW5hYmxlZChzdHJ1Y3QgcGNpX2RldiAqZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTQxMAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDY0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBJRFBGIERyaXZlciB3aXRoIFBDSS1QVE0qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCB5ZXMsIGl0JiMzOTtzIHByZXR0eSBjbGVhci4gIElmIGBDT05GSUdfUENJRV9QVE1gIGlzIGRpc2FibGVkLCB0aGVuIHRoaXMgY2hhbmdlIGlzIGVmZmVjdGl2ZWx5IGEgbm8tb3AsIHdoaWNoIG1lYW5zIGl0IHdpbGwgbm90IGFmZmVjdCBhbnl0aGluZy4gU28sIHRoZSByaWdodCB0aGluZyB0byBkbyBpcyB0byBpbmNsdWRlIGBQQ0lFX1BUTWAgaW4gYEVuYWJsZUNvbmZpZ3NgLiBJdCYjMzk7cyBhIGNyaXRpY2FsIGNvbXBvbmVudCBmb3IgdGhlIGZ1bmN0aW9uYWxpdHkgaW4gdGhpcyBkaWZmLgoKTGV0IG1lIGp1c3QgcXVpY2tseSByZXZpZXcgdGhlIGFjdHVhbCBwYXRjaCBpdHNlbGYgYWdhaW4gdG8gY29uZmlybS4gQWggeWVzLCBJIHNlZTogaXQmIzM5O3MgYWRkaW5nIGBwY2lfZGlzYWJsZV9wdG0ocGRldilgIGluIHRoZSBgaWRwZl9yZW1vdmVgIGZ1bmN0aW9uIGFuZCBwbGFjaW5nIHRoYXQgZnVuY3Rpb24gY2FsbHMgaW4gbXVsdGlwbGUgcG9pbnRzIG9mIHRoZSBgaWRwZl9wcm9iZWAgZnVuY3Rpb24gYXMgd2VsbC4gSSByZWNvZ25pemUgdGhpcyBkcml2ZXIgYW5kIHRoZXNlIGZ1bmN0aW9ucy4gVGhlIGNvZGUgY2hhbmdlcyBzZWVtIHNvdW5kLgoKSXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2UgcmVsYXRlZCB0byB0aGUgUENJIGludGVyZmFjZSwgc28gSSBzZWUgdGhpcyB3b3VsZCBiZSByZWFjaGFibGUgYnkgYW55IFBDSSBmdXp6aW5nLiBUaGUgcmVxdWlyZWQgY29uZmlncyBhcmUgYElEUEZgIGFuZCwgYXMgd2UmIzM5O3ZlIGFscmVhZHkgZXN0YWJsaXNoZWQsIGBQQ0lFX1BUTWAuIEkmIzM5O20gZ29pbmcgdG8gbm90ZSB0aGF0IHRoZSByZWxldmFudCBmdW5jdGlvbnMgYXJlIGBpZHBmX3Byb2JlYCBhbmQgYGlkcGZfcmVtb3ZlYC4KCk5vdywgd2FpdCBhIG1pbnV0ZSwgSSB3YW50IHRvIGRvdWJsZS1jaGVjay4gSnVzdCBtYWtpbmcgc3VyZeKApklzIGBJRFBGYCB0b3RhbGx5IGluZGVwZW5kZW50PyBEb2VzIGBJRFBGYCBkZXBlbmQgb24gYW55dGhpbmcgZWxzZSB0aGF0IEkgbWlnaHQgYmUgbWlzc2luZz8gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIHVuZGVyc3RhbmQgYW55IGRlcGVuZGVuY2llcyBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJRFBGJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy0zLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnOjQ6Y29uZmlnIElEUEZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy01LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwoUikgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc9MTc9aWYgSURQRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnOjE5OmNvbmZpZyBJRFBGX1NJTkdMRVFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy0yMC1cdGJvb2wgXCYjMzQ7aWRwZiBzaW5nbGVxIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTQ6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY1ODYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGUgbWF0dGVyOgoKKipBbmFseXppbmcgdGhlIEludGVsIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgSW50ZWwgRXRoZXJuZXQgZHJpdmVyLiBUbyBkbyB0aGF0LCBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZSBzcGVjaWZpY2FsbHkgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9gLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgc2hvdWxkIGJlIGRlZmluZWQuIEJ5IGdvaW5nIHRocm91Z2ggdGhpcyBmaWxlLCBJIGNhbiBidWlsZCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyByZXF1aXJlZCBmb3IgdGhpcyBkcml2ZXIgdG8gZnVuY3Rpb24gY29ycmVjdGx5IHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHByb2Nlc3MsIGFuZCBob3cgaXQgcmVsYXRlcyB0byBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTQ6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjIENvcHlyaWdodCAoQykgMjAyNCBJbnRlbCBDb3Jwb3JhdGlvblxuICAgMzpcdFxuICAgNDpcdGNvbmZpZyBJRFBGXG4gICA1Olx0XHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb24gU3VwcG9ydFwmIzM0O1xuICAgNjpcdFx0ZGVwZW5kcyBvbiBQQ0lfTVNJXG4gICA3Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gICA4Olx0XHRzZWxlY3QgRElNTElCXG4gICA5Olx0XHRzZWxlY3QgTElCRVRIX1hEUFxuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBJbnRlbChSKSBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb25cbiAgMTI6XHRcdCAgZGV2aWNlcy5cbiAgMTM6XHRcbiAgMTQ6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxuICAxNTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBpZHBmLlxuICAxNjpcdFxuICAxNzpcdGlmIElEUEZcbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgSURQRl9TSU5HTEVRXG4gIDIwOlx0XHRib29sIFwmIzM0O2lkcGYgc2luZ2xlcSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MDQ0CgkJCQkJCQlvdXRwdXQ6IDExMQoJCQkJCQkJdGhvdWdodHM6IDIzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRoaXMgUGF0Y2g6IEEgU291bmQgRGVjaXNpb24qKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0cyBpbXBsaWNhdGlvbnMuIFRoZSBkZXBlbmRlbmNpZXMgYXJlIGBQQ0lfTVNJYCBhbmQgYFBUUF8xNTg4X0NMT0NLX09QVElPTkFMYCwgYW5kIHNpbmNlIGBQQ0lfTVNJYCBpcyB0eXBpY2FsbHkgZW5hYmxlZCwgdGhlIGtleSBjb25maWd1cmF0aW9ucyB0byBmb2N1cyBvbiBhcmUgYElEUEZgIGFuZCBgUENJRV9QVE1gLiBJIHF1aWNrbHkgY2hlY2tlZCBpZiB0aGVyZSB3ZXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWdzLCBidXQgbm8sIHRob3NlIGFyZSB0aGUgbWFpbiBvbmVzLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBzaG91bGQgd2UgZnV6eiB0aGlzPyBMZXQmIzM5O3MgYnJlYWsgaXQgZG93bi4gSXTigJlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBhZGRyZXNzaW5nIGEgcmVzb3VyY2UgbGVhay4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIENydWNpYWxseSwgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHdpdGhpbiB0aGUgUENJIGRyaXZlci4gQW5kLCB3ZSBjYW4gbGV2ZXJhZ2Ugc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIgdG8gZXhlcmNpc2UgdGhpcyBmdW5jdGlvbmFsaXR5LiBHaXZlbiBhbGwgdGhhdCwgYFdvcnRoRnV6emluZz10cnVlYCBpcyBhIGRlZmluaXRlIHllcy4KClRoZSBjb3JlIHJlYXNvbmluZyBoZXJlIGlzIHRoYXQgdGhlIHBhdGNoIHJlY3RpZmllcyBhIHJlc291cmNlIGxlYWsgYnkgZW5zdXJpbmcgYHBjaV9kaXNhYmxlX3B0bSgpYCBpcyBjYWxsZWQgaW4gdGhlIGRyaXZlciYjMzk7cyByZW1vdmUgYW5kIHByb2JlIGVycm9yIHBhdGhzLiBUaGlzIGNoYW5nZSBkaXJlY3RseSBpbXBhY3RzIHRoZSBJbnRlbCBJRFBGIFBDSSBkcml2ZXIgYW5kIGNhbiBiZSBlZmZlY3RpdmVseSB0ZXN0ZWQgdXNpbmcgYSBQQ0kgZGV2aWNlIGZ1enplci4KClRoZSBjcml0aWNhbCBzeW1ib2xzIEkmIzM5O20gZm9jdXNpbmcgb24gYXJlIGBpZHBmX3Byb2JlYCBhbmQgYGlkcGZfcmVtb3ZlYC4gQW5kLCBvZiBjb3Vyc2UsIHRoZSBuZWNlc3NhcnkgZW5hYmxlbWVudCBjb25maWdzIGFyZSBgSURQRmAgYW5kIGBQQ0lFX1BUTWAuIEZpbmFsbHksIHRpbWUgdG8gcnVuIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJRFBGJiMzNDssCiAgICAmIzM0O1BDSUVfUFRNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWRwZl9wcm9iZSYjMzQ7LAogICAgJiMzNDtpZHBmX3JlbW92ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgYnkgZW5zdXJpbmcgcGNpX2Rpc2FibGVfcHRtKCkgaXMgY2FsbGVkIGR1cmluZyB0aGUgZHJpdmVyJiMzOTtzIHJlbW92ZSBhbmQgcHJvYmUgZXJyb3IgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSW50ZWwgSURQRiBQQ0kgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgYW5kIHRlc3RlZCB1c2luZyBhIFBDSSBkZXZpY2UgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJRFBGJiMzNDssCiAgICAmIzM0O1BDSUVfUFRNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWRwZl9wcm9iZSYjMzQ7LAogICAgJiMzNDtpZHBmX3JlbW92ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgYnkgZW5zdXJpbmcgcGNpX2Rpc2FibGVfcHRtKCkgaXMgY2FsbGVkIGR1cmluZyB0aGUgZHJpdmVyJiMzOTtzIHJlbW92ZSBhbmQgcHJvYmUgZXJyb3IgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSW50ZWwgSURQRiBQQ0kgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgYW5kIHRlc3RlZCB1c2luZyBhIFBDSSBkZXZpY2UgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTVUMTQ6MDE6MDIuOTMxNDIzMzE0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5MDk4NDQ1MTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklEUEZcIixcbiAgICBcIlBDSUVfUFRNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWRwZl9wcm9iZVwiLFxuICAgIFwiaWRwZl9yZW1vdmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgYnkgZW5zdXJpbmcgcGNpX2Rpc2FibGVfcHRtKCkgaXMgY2FsbGVkIGR1cmluZyB0aGUgZHJpdmVyJ3MgcmVtb3ZlIGFuZCBwcm9iZSBlcnJvciBwYXRocy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJbnRlbCBJRFBGIFBDSSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCBhbmQgdGVzdGVkIHVzaW5nIGEgUENJIGRldmljZSBmdXp6ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE0OjAxOjAyLjkzMTQyOTkyNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEwOTcwMTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzk4NjQ0Y2JkODY2ODM5MGE3M2IxMmFhNDc5ODQ2MDAyMzQ2NDdjNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxNSAxNDowMTowMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uY1xcbmluZGV4IDBkZDc0MWRjZmNkYjIxLi5mMDhjZTEzYzIwYWIwNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uY1xcbkBAIC0xNTksNiArMTU5LDcgQEAgc3RhdGljIHZvaWQgaWRwZl9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuIFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXF1ZXVlX2xvY2spO1xcbiBcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZhZGFwdGVyLVxcdTAwM2V2Y19idWZfbG9jayk7XFxuIFxcbitcXHRwY2lfZGlzYWJsZV9wdG0ocGRldik7XFxuIFxcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTtcXG4gXFx0a2ZyZWUoYWRhcHRlcik7XFxuIH1cXG5AQCAtMjY2LDcgKzI2Nyw3IEBAIHN0YXRpYyBpbnQgaWRwZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4gXFx0aWYgKGVycikge1xcbiBcXHRcXHRwY2lfZXJyKHBkZXYsIFxcXCJETUEgY29uZmlndXJhdGlvbiBmYWlsZWQ6ICVwZVxcXFxuXFxcIiwgRVJSX1BUUihlcnIpKTtcXG4gXFxuLVxcdFxcdGdvdG8gZXJyX2ZyZWU7XFxuK1xcdFxcdGdvdG8gZXJyX2Rpc2FibGVfcHRtO1xcbiBcXHR9XFxuIFxcbiBcXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcXG5AQCAtMjc5LDcgKzI4MCw3IEBAIHN0YXRpYyBpbnQgaWRwZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4gXFx0aWYgKCFhZGFwdGVyLVxcdTAwM2Vpbml0X3dxKSB7XFxuIFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGFsbG9jYXRlIGluaXQgd29ya3F1ZXVlXFxcXG5cXFwiKTtcXG4gXFx0XFx0ZXJyID0gLUVOT01FTTtcXG4tXFx0XFx0Z290byBlcnJfZnJlZTtcXG4rXFx0XFx0Z290byBlcnJfZGlzYWJsZV9wdG07XFxuIFxcdH1cXG4gXFxuIFxcdGFkYXB0ZXItXFx1MDAzZXNlcnZfd3EgPSBhbGxvY193b3JrcXVldWUoXFxcIiVzLSVzLXNlcnZpY2VcXFwiLFxcbkBAIC0zNjYsNiArMzY3LDggQEAgc3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbiBcXHRkZXN0cm95X3dvcmtxdWV1ZShhZGFwdGVyLVxcdTAwM2VzZXJ2X3dxKTtcXG4gZXJyX3NlcnZfd3FfYWxsb2M6XFxuIFxcdGRlc3Ryb3lfd29ya3F1ZXVlKGFkYXB0ZXItXFx1MDAzZWluaXRfd3EpO1xcbitlcnJfZGlzYWJsZV9wdG06XFxuK1xcdHBjaV9kaXNhYmxlX3B0bShwZGV2KTtcXG4gZXJyX2ZyZWU6XFxuIFxcdGtmcmVlKGFkYXB0ZXIpO1xcbiBcXHRyZXR1cm4gZXJyO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNDowMTowMy40NDMxNDE1MDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2ODU4NjcxNjk1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJRFBGXCIsXG4gICAgXCJQQ0lFX1BUTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlkcGZfcHJvYmVcIixcbiAgICBcImlkcGZfcmVtb3ZlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGJ5IGVuc3VyaW5nIHBjaV9kaXNhYmxlX3B0bSgpIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGRyaXZlcidzIHJlbW92ZSBhbmQgcHJvYmUgZXJyb3IgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSW50ZWwgSURQRiBQQ0kgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgYW5kIHRlc3RlZCB1c2luZyBhIFBDSSBkZXZpY2UgZnV6emVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDM5ODY0NGNiZDg2NjgzOTBhNzNiMTJhYTQ3OTg0NjAwMjM0NjQ3YzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAxNDowMTowMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jXG5pbmRleCAwZGQ3NDFkY2ZjZGIyMS4uZjA4Y2UxM2MyMGFiMDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jXG5AQCAtMTU5LDYgKzE1OSw3IEBAIHN0YXRpYyB2b2lkIGlkcGZfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZhZGFwdGVyLVx1MDAzZXF1ZXVlX2xvY2spO1xuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZhZGFwdGVyLVx1MDAzZXZjX2J1Zl9sb2NrKTtcbiBcbitcdHBjaV9kaXNhYmxlX3B0bShwZGV2KTtcbiBcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTtcbiBcdGtmcmVlKGFkYXB0ZXIpO1xuIH1cbkBAIC0yNjYsNyArMjY3LDcgQEAgc3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFx0aWYgKGVycikge1xuIFx0XHRwY2lfZXJyKHBkZXYsIFwiRE1BIGNvbmZpZ3VyYXRpb24gZmFpbGVkOiAlcGVcXG5cIiwgRVJSX1BUUihlcnIpKTtcbiBcbi1cdFx0Z290byBlcnJfZnJlZTtcbitcdFx0Z290byBlcnJfZGlzYWJsZV9wdG07XG4gXHR9XG4gXG4gXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcbkBAIC0yNzksNyArMjgwLDcgQEAgc3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFx0aWYgKCFhZGFwdGVyLVx1MDAzZWluaXRfd3EpIHtcbiBcdFx0ZGV2X2VycihkZXYsIFwiRmFpbGVkIHRvIGFsbG9jYXRlIGluaXQgd29ya3F1ZXVlXFxuXCIpO1xuIFx0XHRlcnIgPSAtRU5PTUVNO1xuLVx0XHRnb3RvIGVycl9mcmVlO1xuK1x0XHRnb3RvIGVycl9kaXNhYmxlX3B0bTtcbiBcdH1cbiBcbiBcdGFkYXB0ZXItXHUwMDNlc2Vydl93cSA9IGFsbG9jX3dvcmtxdWV1ZShcIiVzLSVzLXNlcnZpY2VcIixcbkBAIC0zNjYsNiArMzY3LDggQEAgc3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFx0ZGVzdHJveV93b3JrcXVldWUoYWRhcHRlci1cdTAwM2VzZXJ2X3dxKTtcbiBlcnJfc2Vydl93cV9hbGxvYzpcbiBcdGRlc3Ryb3lfd29ya3F1ZXVlKGFkYXB0ZXItXHUwMDNlaW5pdF93cSk7XG4rZXJyX2Rpc2FibGVfcHRtOlxuK1x0cGNpX2Rpc2FibGVfcHRtKHBkZXYpO1xuIGVycl9mcmVlOlxuIFx0a2ZyZWUoYWRhcHRlcik7XG4gXHRyZXR1cm4gZXJyO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTQ6MDE6MDMuNDQzMTQyOTMyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY0MjU4Mzc4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBgaWRwZmAgRHJpdmVyOiBBIFByZWxpbWluYXJ5IEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBzZWVtcyBsaWtlIGl0J3MgYWRkaW5nIGBwY2lfZGlzYWJsZV9wdG0ocGRldik7YCBpbiB0aGUgYGlkcGZfcmVtb3ZlYCBmdW5jdGlvbiBhbmQgdGhlIGVycm9yIHBhdGggb2YgYGlkcGZfcHJvYmVgIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIklzIHRoaXMgd29ydGggZnV6emluZz9cIiBUaGUgZHJpdmVyIGluIHF1ZXN0aW9uIGlzIHRoZSBgaWRwZmAgZHJpdmVyLCB3aGljaCBmcm9tIGl0cyBuYW1lIOKAkyBcIkludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGxhbmUgRnVuY3Rpb25cIiDigJMgYW5kIGxvY2F0aW9uLCBhcHBlYXJzIHRvIGJlIGFuIEludGVsIFBDSSBkZXZpY2UgZHJpdmVyLlxuXG5UaGUgUENJIGFzcGVjdCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBIb3cgZWFzaWx5IGNhbiB0aGlzIGJlIHRhcmdldGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEdlbmVyYWxseSwgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlcnMgYXJlIHRyaWNreSB0byByZWFjaCB3aXRob3V0IGFuIGVtdWxhdG9yLiBTbywgaXMgdGhlcmUgYW4gZW11bGF0b3IgZm9yIGBpZHBmYD8gVGhhdCdzIHRoZSBxdWVzdGlvbiBJIG5lZWQgdG8gYW5zd2VyLiBJcyB0aGlzIGEgdmlydHVhbCBkZXZpY2Ugb3Igc29tZXRoaW5nIG1lYW50IGZvciBwaHlzaWNhbCBoYXJkd2FyZT8gVGltZSB0byBkbyBzb21lIGRpZ2dpbmcuIExldCdzIHN0YXJ0IHdpdGggYSBzaW1wbGUgZ3JlcCBmb3IgXCJpZHBmXCIgYW5kIHNlZSB3aGF0IGtpbmQgb2YgY29udGV4dCB3ZSdyZSBkZWFsaW5nIHdpdGguIEtub3dpbmcgdGhlIGV4YWN0IG5hdHVyZSBvZiB0aGlzIGRldmljZSBpcyBjcml0aWNhbCB0byBrbm93aW5nIGlmIHRoaXMgcGF0Y2ggbWVyaXRzIGZvY3VzZWQgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIxNCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE0OjAxOjA4LjA4NTcyODc2MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDA0NDY3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZHBmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTEwNDcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZz00PWNvbmZpZyBJRFBGXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctMTQtXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnOjE1OlxcdCAgd2lsbCBiZSBjYWxsZWQgaWRwZi5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctMTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc9MTk9Y29uZmlnIElEUEZfU0lOR0xFUVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZzoyMDpcXHRib29sIFxcXCJpZHBmIHNpbmdsZXEgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctMjEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfSURQRikgKz0gaWRwZi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZS03LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6ODppZHBmLXkgOj0gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6OTpcXHRpZHBmX2NvbnRyb2xxLm9cXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZToxMDpcXHRpZHBmX2NvbnRyb2xxX3NldHVwLm9cXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZToxMTpcXHRpZHBmX2Rldi5vXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6MTI6XFx0aWRwZl9ldGh0b29sLm9cXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZToxMzpcXHRpZHBmX2lkYy5vXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6MTQ6XFx0aWRwZl9saWIub1xcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjE1OlxcdGlkcGZfbWFpbi5vXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6MTY6XFx0aWRwZl90eHJ4Lm9cXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZToxNzpcXHRpZHBmX3ZpcnRjaG5sLm8gXFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6MTg6XFx0aWRwZl92Zl9kZXYub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGUtMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZToyMDppZHBmLSQoQ09ORklHX0lEUEZfU0lOR0xFUSlcXHQrPSBpZHBmX3NpbmdsZXFfdHhyeC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZS0yMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjIyOmlkcGYtJChDT05GSUdfUFRQXzE1ODhfQ0xPQ0spXFx0Kz0gaWRwZl9wdHAub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6MjM6aWRwZi0kKENPTkZJR19QVFBfMTU4OF9DTE9DSylcXHQrPSBpZHBmX3ZpcnRjaG5sX3B0cC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZS0yNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjI1OmlkcGYteVxcdFxcdFxcdFxcdCs9IHhkcC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZToyNjppZHBmLXlcXHRcXHRcXHRcXHQrPSB4c2sub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNy0vKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODpzdHJ1Y3QgaWRwZl9hZGFwdGVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjk6c3RydWN0IGlkcGZfdnBvcnQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTA6c3RydWN0IGlkcGZfdnBvcnRfbWF4X3E7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTE6c3RydWN0IGlkcGZfcV92ZWNfcnNyYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoxMjpzdHJ1Y3QgaWRwZl9yc3NfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI0LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXQvaW50ZWwvaWlkY19yZG1hLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldC9pbnRlbC9paWRjX3JkbWFfaWRwZi5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI3LSNpbmNsdWRlIFxcXCJ2aXJ0Y2hubDIuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyODojaW5jbHVkZSBcXFwiaWRwZl90eHJ4LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6Mjk6I2luY2x1ZGUgXFxcImlkcGZfY29udHJvbHEuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjU3OiAqIHN0cnVjdCBpZHBmX21hY19maWx0ZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01OC0gKiBAbGlzdDogbGlzdCBtZW1iZXIgZmllbGRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYyLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjYzOnN0cnVjdCBpZHBmX21hY19maWx0ZXIge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY0LVxcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTcwLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjcxOiAqIGVudW0gaWRwZl9zdGF0ZSAtIFN0YXRlIG1hY2hpbmUgdG8gaGFuZGxlIGJyaW5nIHVwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzItICogQF9fSURQRl9WRVJfQ0hFQ0s6IE5lZ290aWF0ZSB2aXJ0Y2hubCB2ZXJzaW9uXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03Ni0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3NzplbnVtIGlkcGZfc3RhdGUge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc4LVxcdF9fSURQRl9WRVJfQ0hFQ0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4NTogKiBlbnVtIGlkcGZfZmxhZ3MgLSBIYXJkIHJlc2V0IGNhdXNlcy5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04Ni0gKiBASURQRl9IUl9GVU5DX1JFU0VUOiBIYXJkIHJlc2V0IHdoZW4gVHhSeCB0aW1lb3V0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05My0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo5NDplbnVtIGlkcGZfZmxhZ3Mge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTk1LVxcdElEUEZfSFJfRlVOQ19SRVNFVCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTEwNC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoxMDU6ICogZW51bSBpZHBmX2NhcF9maWVsZCAtIE9mZnNldHMgaW50byBjYXBhYmlsaXRpZXMgc3RydWN0IGZvciBzcGVjaWZpYyBjYXBzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTA2LSAqIEBJRFBGX0JBU0VfQ0FQUzogZ2VuZXJpYyBiYXNlIGNhcGFiaWxpdGllc1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTE3LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjExODplbnVtIGlkcGZfY2FwX2ZpZWxkIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xMTktXFx0SURQRl9CQVNFX0NBUFNcXHRcXHQ9IC0xLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTM0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjEzNTogKiBlbnVtIGlkcGZfdnBvcnRfc3RhdGUgLSBDdXJyZW50IHZwb3J0IHN0YXRlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTM2LSAqIEBJRFBGX1ZQT1JUX1VQOiBWcG9ydCBpcyB1cFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTM4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjEzOTplbnVtIGlkcGZfdnBvcnRfc3RhdGUge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTE0MC1cXHRJRFBGX1ZQT1JUX1VQLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTQ0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjE0NTogKiBzdHJ1Y3QgaWRwZl9uZXRkZXZfcHJpdiAtIFN0cnVjdCB0byBzdG9yZSB2cG9ydCBiYWNrIHBvaW50ZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xNDYtICogQGFkYXB0ZXI6IEFkYXB0ZXIgYmFjayBwb2ludGVyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xNTItICogQHR4X21heF9idWZzOiBNYXggYnVmZmVycyB0aGF0IGNhbiBiZSB0cmFuc21pdHRlZCB3aXRoIHNjYXR0ZXItZ2F0aGVyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTUzOiAqIEBzdGF0ZTogU2VlIGVudW0gaWRwZl92cG9ydF9zdGF0ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTE1NC0gKiBAbmV0c3RhdHM6IFBhY2tldCBhbmQgYnl0ZSBzdGF0c1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTU2LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjE1NzpzdHJ1Y3QgaWRwZl9uZXRkZXZfcHJpdiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTU4OlxcdHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTU5OlxcdHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xNjAtXFx0dTMyIHZwb3J0X2lkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTcwLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjE3MTogKiBzdHJ1Y3QgaWRwZl9yZXNldF9yZWcgLSBSZXNldCByZWdpc3RlciBvZmZzZXRzL21hc2tzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTcyLSAqIEByc3RhdDogUmVzZXQgc3RhdHVzIHJlZ2lzdGVyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xNzQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTc1OnN0cnVjdCBpZHBmX3Jlc2V0X3JlZyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTc2LVxcdHZvaWQgX19pb21lbSAqcnN0YXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xODAtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTgxOiAqIHN0cnVjdCBpZHBmX3Zwb3J0X21heF9xIC0gUXVldWUgbGltaXRzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTgyLSAqIEBtYXhfcnhxOiBNYXhpbXVtIG51bWJlciBvZiBSWCBxdWV1ZXMgc3VwcG9ydGVkXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xODYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTg3OnN0cnVjdCBpZHBmX3Zwb3J0X21heF9xIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xODgtXFx0dTE2IG1heF9yeHE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xOTQtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTk1OiAqIHN0cnVjdCBpZHBmX3JlZ19vcHMgLSBEZXZpY2Ugc3BlY2lmaWMgcmVnaXN0ZXIgb3BlcmF0aW9uIGZ1bmN0aW9uIHBvaW50ZXJzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTk2LSAqIEBjdGxxX3JlZ19pbml0OiBNYWlsYm94IGNvbnRyb2wgcXVldWUgcmVnaXN0ZXIgaW5pdGlhbGl6YXRpb25cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTIwMi0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMDM6c3RydWN0IGlkcGZfcmVnX29wcyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjA0OlxcdHZvaWQgKCpjdGxxX3JlZ19pbml0KShzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjIwNTpcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWRwZl9jdGxxX2NyZWF0ZV9pbmZvICpjcSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjA2OlxcdGludCAoKmludHJfcmVnX2luaXQpKHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMDc6XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWRwZl9xX3ZlY19yc3JjICpyc3JjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMDg6XFx0dm9pZCAoKm1iX2ludHJfcmVnX2luaXQpKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjIwOTpcXHR2b2lkICgqcmVzZXRfcmVnX2luaXQpKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjIxMDpcXHR2b2lkICgqdHJpZ2dlcl9yZXNldCkoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMTE6XFx0XFx0XFx0ICAgICAgZW51bSBpZHBmX2ZsYWdzIHRyaWdfY2F1c2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjIxMjpcXHR2b2lkICgqcHRwX3JlZ19pbml0KShjb25zdCBzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMTMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTIyMS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMjI6ICogc3RydWN0IGlkcGZfZGV2X29wcyAtIERldmljZSBzcGVjaWZpYyBvcGVyYXRpb25zXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjIzLSAqIEByZWdfb3BzOiBSZWdpc3RlciBvcGVyYXRpb25zXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMjYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjI3OnN0cnVjdCBpZHBmX2Rldl9vcHMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjIyODpcXHRzdHJ1Y3QgaWRwZl9yZWdfb3BzIHJlZ19vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjIzMDpcXHRpbnQgKCppZGNfaW5pdCkoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjMxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjM2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjIzNzogKiBlbnVtIGlkcGZfdnBvcnRfcmVzZXRfY2F1c2UgLSBWcG9ydCBzb2Z0IHJlc2V0IGNhdXNlc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTIzOC0gKiBASURQRl9TUl9RX0NIQU5HRTogU29mdCByZXNldCBxdWV1ZSBjaGFuZ2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI0Mi0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyNDM6ZW51bSBpZHBmX3Zwb3J0X3Jlc2V0X2NhdXNlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yNDQtXFx0SURQRl9TUl9RX0NIQU5HRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI1MC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyNTE6ICogZW51bSBpZHBmX3Zwb3J0X2ZsYWdzIC0gVnBvcnQgZmxhZ3NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yNTItICogQElEUEZfVlBPUlRfREVMX1FVRVVFUzogVG8gc2VuZCBkZWxldGUgcXVldWVzIG1lc3NhZ2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI1NC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyNTU6ZW51bSBpZHBmX3Zwb3J0X2ZsYWdzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yNTYtXFx0SURQRl9WUE9SVF9ERUxfUVVFVUVTLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjYwLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjI2MTogKiBzdHJ1Y3QgaWRwZl90c3RhbXBfc3RhdHMgLSBUeCB0aW1lc3RhbXAgc3RhdGlzdGljc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI2Mi0gKiBAc3RhdHNfc3luYzogU2VlIHN0cnVjdCB1NjRfc3RhdHNfc3luY1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjY3LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjI2ODpzdHJ1Y3QgaWRwZl90c3RhbXBfc3RhdHMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI2OS1cXHRzdHJ1Y3QgdTY0X3N0YXRzX3N5bmMgc3RhdHNfc3luYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyNzU6c3RydWN0IGlkcGZfcG9ydF9zdGF0cyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjc2LVxcdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBzdGF0c19zeW5jO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjI4ODpzdHJ1Y3QgaWRwZl9mc3RlZXJfZmx0ciB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjg5LVxcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI5My0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyOTQ6ICogc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAtIGhhbmRsZSBmb3IgcXVldWUgYW5kIHZlY3RvciByZXNvdXJjZXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yOTUtICogQGRldjogZGV2aWNlIHBvaW50ZXIgZm9yIERNQSBtYXBwaW5nXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zMjItICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MzIzOnN0cnVjdCBpZHBmX3FfdmVjX3JzcmMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTMyNC1cXHRzdHJ1Y3QgZGV2aWNlXFx0XFx0KmRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozMjU6XFx0c3RydWN0IGlkcGZfcV92ZWN0b3JcXHQqcV92ZWN0b3JzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTMyNi1cXHR1MTZcXHRcXHRcXHQqcV92ZWN0b3JfaWR4cztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTMzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozMzI6XFx0c3RydWN0IGlkcGZfdHhxX2dyb3VwXFx0KnR4cV9ncnBzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTMzMy1cXHR1MzJcXHRcXHRcXHR0eHFfZGVzY19jb3VudDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTM0Mi1cXHR1MzJcXHRcXHRcXHRyeHFfbW9kZWw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MzQzOlxcdHN0cnVjdCBpZHBmX3J4cV9ncm91cFxcdCpyeHFfZ3JwcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zNDQtXFx0dTE2XFx0XFx0XFx0bnVtX3J4cTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTM1Mi0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozNTM6ICogc3RydWN0IGlkcGZfdnBvcnQgLSBIYW5kbGUgZm9yIG5ldGRldmljZXMgYW5kIHF1ZXVlIHJlc291cmNlc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTM1NC0gKiBAZGZsdF9xdl9yc3JjOiBjb250YWlucyBkZWZhdWx0IHF1ZXVlIGFuZCB2ZWN0b3IgcmVzb3VyY2VzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zNjMtICpcXHQgICAgYXNzb2NpYXRlZCBuZXRkZXYuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MzY0OiAqIEBmbGFnczogU2VlIGVudW0gaWRwZl92cG9ydF9mbGFnc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTM2NS0gKiBAY29tcGxuX2NsZWFuX2J1ZGdldDogV29yayBidWRnZXQgZm9yIGNvbXBsZXRpb24gY2xlYW5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTM4MS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozODI6c3RydWN0IGlkcGZfdnBvcnQge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjM4MzpcXHRzdHJ1Y3QgaWRwZl9xX3ZlY19yc3JjIGRmbHRfcXZfcnNyYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozODQ6XFx0c3RydWN0IGlkcGZfdHhfcXVldWUgKip0eHFzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTM4NS1cXHR1MTYgbnVtX3R4cTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTM5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozOTI6XFx0c3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zOTMtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0MDU6XFx0c3RydWN0IGlkcGZfcG9ydF9zdGF0cyBwb3J0X3N0YXRzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQwNi1cXHRib29sIGRlZmF1bHRfdnBvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NDEwOlxcdHN0cnVjdCBpZHBmX3B0cF92cG9ydF90eF90c3RhbXBfY2FwcyAqdHhfdHN0YW1wX2NhcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDExLVxcdHN0cnVjdCBrZXJuZWxfaHd0c3RhbXBfY29uZmlnIHRzdGFtcF9jb25maWc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDEyLVxcdHN0cnVjdCB3b3JrX3N0cnVjdCB0c3RhbXBfdGFzaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0MTM6XFx0c3RydWN0IGlkcGZfdHN0YW1wX3N0YXRzIHRzdGFtcF9zdGF0cztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MTQtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQxNi0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0MTc6ICogZW51bSBpZHBmX3VzZXJfZmxhZ3NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MTgtICogQF9fSURQRl9VU0VSX0ZMQUdfSFNQTElUOiBoZWFkZXIgc3BsaXQgc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQyMi0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0MjM6ZW51bSBpZHBmX3VzZXJfZmxhZ3Mge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQyNC1cXHRfX0lEUEZfVVNFUl9GTEFHX0hTUExJVCA9IDBVLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDMxLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjQzMjogKiBzdHJ1Y3QgaWRwZl9yc3NfZGF0YSAtIEFzc29jaWF0ZWQgUlNTIGRhdGFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MzMtICogQHJzc19rZXlfc2l6ZTogU2l6ZSBvZiBSU1MgaGFzaCBrZXlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQzNy0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0Mzg6c3RydWN0IGlkcGZfcnNzX2RhdGEge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQzOS1cXHR1MTYgcnNzX2tleV9zaXplO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDQ1LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjQ0NjogKiBzdHJ1Y3QgaWRwZl9xX2NvYWxlc2NlIC0gVXNlciBkZWZpbmVkIGNvYWxlc2NpbmcgY29uZmlndXJhdGlvbiB2YWx1ZXMgZm9yXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDQ3LSAqXFx0XFx0XFx0ICAgYSBzaW5nbGUgcXVldWUuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00NTQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NDU1OnN0cnVjdCBpZHBmX3FfY29hbGVzY2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQ1Ni1cXHR1MzIgdHhfaW50cl9tb2RlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDYyLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjQ2MzogKiBzdHJ1Y3QgaWRwZl92cG9ydF91c2VyX2NvbmZpZ19kYXRhIC0gVXNlciBkZWZpbmVkIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGZvclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQ2NC0gKlxcdFxcdFxcdFxcdFxcdGVhY2ggdnBvcnQuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NDY1OiAqIEByc3NfZGF0YTogU2VlIHN0cnVjdCBpZHBmX3Jzc19kYXRhXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDY2LSAqIEBxX2NvYWxlc2NlOiBBcnJheSBvZiBwZXIgcXVldWUgY29hbGVzY2luZyBkYXRhXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00ODAtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NDgxOnN0cnVjdCBpZHBmX3Zwb3J0X3VzZXJfY29uZmlnX2RhdGEge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjQ4MjpcXHRzdHJ1Y3QgaWRwZl9yc3NfZGF0YSByc3NfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0ODM6XFx0c3RydWN0IGlkcGZfcV9jb2FsZXNjZSAqcV9jb2FsZXNjZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00ODQtXFx0dTE2IG51bV9yZXFfdHhfcXM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00OTUtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NDk2OiAqIGVudW0gaWRwZl92cG9ydF9jb25maWdfZmxhZ3MgLSBWcG9ydCBjb25maWcgZmxhZ3NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00OTctICogQElEUEZfVlBPUlRfUkVHX05FVERFVjogUmVnaXN0ZXIgbmV0ZGV2XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01MDAtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTAxOmVudW0gaWRwZl92cG9ydF9jb25maWdfZmxhZ3Mge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTUwMi1cXHRJRFBGX1ZQT1JUX1JFR19ORVRERVYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01MDctLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTA4OiAqIHN0cnVjdCBpZHBmX2F2YWlsX3F1ZXVlX2luZm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01MDktICogQGF2YWlsX3J4cTogQXZhaWxhYmxlIFJYIHF1ZXVlc1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTE1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjUxNjpzdHJ1Y3QgaWRwZl9hdmFpbF9xdWV1ZV9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01MTctXFx0dTE2IGF2YWlsX3J4cTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTUyMy0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1MjQ6ICogc3RydWN0IGlkcGZfdmVjdG9yX2luZm8gLSBVdGlsaXR5IHN0cnVjdHVyZSB0byBwYXNzIGZ1bmN0aW9uIGFyZ3VtZW50cyBhcyBhXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTI1LSAqXFx0XFx0XFx0ICAgICBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTUzMS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1MzI6c3RydWN0IGlkcGZfdmVjdG9yX2luZm8ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTUzMy1cXHR1MTYgbnVtX3JlcV92ZWNzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTM5LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjU0MDogKiBzdHJ1Y3QgaWRwZl92ZWN0b3JfbGlmbyAtIFN0YWNrIHRvIG1haW50YWluIHZlY3RvciBpbmRleGVzIHVzZWQgZm9yIHZlY3RvclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU0MS0gKlxcdFxcdFxcdCAgICAgZGlzdHJpYnV0aW9uIGFsZ29yaXRobVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTU1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjU1NjpzdHJ1Y3QgaWRwZl92ZWN0b3JfbGlmbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTU3LVxcdHUxNiB0b3A7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01NjMtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTY0OiAqIHN0cnVjdCBpZHBmX3F1ZXVlX2lkX3JlZ19jaHVuayAtIGluZGl2aWR1YWwgcXVldWUgSUQgYW5kIHJlZ2lzdGVyIGNodW5rXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTY1LSAqIEBxdGFpbF9yZWdfc3RhcnQ6IHF1ZXVlIHRhaWwgcmVnaXN0ZXIgb2Zmc2V0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01NzAtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTcxOnN0cnVjdCBpZHBmX3F1ZXVlX2lkX3JlZ19jaHVuayB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTcyLVxcdHU2NCBxdGFpbF9yZWdfc3RhcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01NzktLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTgwOiAqIHN0cnVjdCBpZHBmX3F1ZXVlX2lkX3JlZ19pbmZvIC0gcXVldWUgSUQgYW5kIHJlZ2lzdGVyIGNodW5rIGluZm8gcmVjZWl2ZWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01ODEtICpcXHRcXHRcXHRcXHQgICBvdmVyIHRoZSBtYWlsYm94XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01ODQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTg1OnN0cnVjdCBpZHBmX3F1ZXVlX2lkX3JlZ19pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01ODYtXFx0dTE2IG51bV9jaHVua3M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTg3OlxcdHN0cnVjdCBpZHBmX3F1ZXVlX2lkX3JlZ19jaHVuayAqcXVldWVfY2h1bmtzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU4OC19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTkwLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjU5MTogKiBzdHJ1Y3QgaWRwZl92cG9ydF9jb25maWcgLSBWcG9ydCBjb25maWd1cmF0aW9uIGRhdGFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1OTI6ICogQHVzZXJfY29uZmlnOiBzZWUgc3RydWN0IGlkcGZfdnBvcnRfdXNlcl9jb25maWdfZGF0YVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU5My0gKiBAbWF4X3E6IE1heGltdW0gcG9zc2libGUgcXVldWVzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01OTYtICogQGZsb3dfc3RlZXJfbGlzdF9sb2NrOiBMb2NrIHRvIHByb3RlY3QgZnN0ZWVyIGZpbHRlcnNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1OTc6ICogQGZsYWdzOiBTZWUgZW51bSBpZHBmX3Zwb3J0X2NvbmZpZ19mbGFnc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU5OC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1OTk6c3RydWN0IGlkcGZfdnBvcnRfY29uZmlnIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2MDA6XFx0c3RydWN0IGlkcGZfdnBvcnRfdXNlcl9jb25maWdfZGF0YSB1c2VyX2NvbmZpZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2MDE6XFx0c3RydWN0IGlkcGZfdnBvcnRfbWF4X3EgbWF4X3E7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjAyOlxcdHN0cnVjdCBpZHBmX3F1ZXVlX2lkX3JlZ19pbmZvIHFpZF9yZWdfaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02MDMtXFx0c3BpbmxvY2tfdCBtYWNfZmlsdGVyX2xpc3RfbG9jaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYwNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2MDg6c3RydWN0IGlkcGZfdmNfeG5fbWFuYWdlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02MDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjEwOiNkZWZpbmUgaWRwZl9mb3JfZWFjaF92cG9ydChhZGFwdGVyLCBpdGVyKSBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjExOlxcdGZvciAoc3RydWN0IGlkcGZfdnBvcnQgKipfXyMjaXRlciA9IFxcdTAwMjYoYWRhcHRlciktXFx1MDAzZXZwb3J0c1swXSwgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYxMi1cXHQgICAgICppdGVyID0gKGFkYXB0ZXIpLVxcdTAwM2VtYXhfdnBvcnRzID8gKl9fIyNpdGVyIDogTlVMTDsgXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNjE3LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjYxODogKiBzdHJ1Y3QgaWRwZl9hZGFwdGVyIC0gRGV2aWNlIGRhdGEgc3RydWN0IGdlbmVyYXRlZCBvbiBwcm9iZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYxOS0gKiBAcGRldjogUENJIGRldmljZSBzdHJ1Y3QgZ2l2ZW4gb24gcHJvYmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYyNC0gKiBAc3RhdGU6IEluaXQgc3RhdGUgbWFjaGluZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjYyNTogKiBAZmxhZ3M6IFNlZSBlbnVtIGlkcGZfZmxhZ3NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2MjY6ICogQHJlc2V0X3JlZzogU2VlIHN0cnVjdCBpZHBmX3Jlc2V0X3JlZ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYyNy0gKiBAaHc6IERldmljZSBhY2Nlc3MgZGF0YVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNjYxLSAqIEB2Y3huX21uZ3I6IFZpcnRjaG5sIHRyYW5zYWN0aW9uIG1hbmFnZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2NjI6ICogQGRldl9vcHM6IFNlZSBpZHBmX2Rldl9vcHNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02NjMtICogQGNkZXZfaW5mbzogSURDIGNvcmUgZGV2aWNlIGluZm8gcG9pbnRlclxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNjc0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjY3NTpzdHJ1Y3QgaWRwZl9hZGFwdGVyIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02NzYtXFx0c3RydWN0IHBjaV9kZXYgKnBkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02ODEtXFx0dTMyIG1iX3dhaXRfY291bnQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjgyOlxcdGVudW0gaWRwZl9zdGF0ZSBzdGF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02ODMtXFx0REVDTEFSRV9CSVRNQVAoZmxhZ3MsIElEUEZfRkxBR1NfTkJJVFMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjY4NDpcXHRzdHJ1Y3QgaWRwZl9yZXNldF9yZWcgcmVzZXRfcmVnO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjY4NTpcXHRzdHJ1Y3QgaWRwZl9odyBodztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02ODYtXFx0dTE2IG51bV9hdmFpbF9tc2l4O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNjkxLVxcdHN0cnVjdCB2aXJ0Y2hubDJfYWxsb2NfdmVjdG9ycyAqcmVxX3ZlY19jaHVua3M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjkyOlxcdHN0cnVjdCBpZHBmX3FfdmVjdG9yIG1iX3ZlY3RvcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2OTM6XFx0c3RydWN0IGlkcGZfdmVjdG9yX2xpZm8gdmVjdG9yX3N0YWNrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY5NC1cXHRpcnFyZXR1cm5fdCAoKmlycV9tYl9oYW5kbGVyKShpbnQgaXJxLCB2b2lkICpkYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY5Ni1cXHR1MzIgdHhfdGltZW91dF9jb3VudDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2OTc6XFx0c3RydWN0IGlkcGZfYXZhaWxfcXVldWVfaW5mbyBhdmFpbF9xdWV1ZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6Njk4OlxcdHN0cnVjdCBpZHBmX3Zwb3J0ICoqdnBvcnRzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY5OS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqKm5ldGRldnM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzA3OlxcdHN0cnVjdCBpZHBmX3Zwb3J0X2NvbmZpZyAqKnZwb3J0X2NvbmZpZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MDgtXFx0dTE2IG1heF92cG9ydHM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MjItXFx0c3RydWN0IHZpcnRjaG5sMl9nZXRfY2FwYWJpbGl0aWVzIGNhcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzIzOlxcdHN0cnVjdCBpZHBmX3ZjX3huX21hbmFnZXIgKnZjeG5fbW5ncjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzI1OlxcdHN0cnVjdCBpZHBmX2Rldl9vcHMgZGV2X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MjYtXFx0c3RydWN0IGlpZGNfcmRtYV9jb3JlX2Rldl9pbmZvICpjZGV2X2luZm87XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzM3OlxcdHN0cnVjdCBpZHBmX3B0cCAqcHRwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTczOC19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzQwLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc0MTogKiBpZHBmX2lzX3F1ZXVlX21vZGVsX3NwbGl0IC0gY2hlY2sgaWYgcXVldWUgbW9kZWwgaXMgc3BsaXRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03NDItICogQHFfbW9kZWw6IHF1ZXVlIG1vZGVsIHNpbmdsZSBvciBzcGxpdFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzQ1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc0NjpzdGF0aWMgaW5saW5lIGludCBpZHBmX2lzX3F1ZXVlX21vZGVsX3NwbGl0KHUxNiBxX21vZGVsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03NTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzUyOnN0YXRpYyBpbmxpbmUgYm9vbCBpZHBmX3hkcF9lbmFibGVkKGNvbnN0IHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03NTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc1NzojZGVmaW5lIGlkcGZfaXNfY2FwX2VuYShhZGFwdGVyLCBmaWVsZCwgZmxhZykgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc1ODpcXHRpZHBmX2lzX2NhcGFiaWxpdHlfZW5hKGFkYXB0ZXIsIGZhbHNlLCBmaWVsZCwgZmxhZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3NTk6I2RlZmluZSBpZHBmX2lzX2NhcF9lbmFfYWxsKGFkYXB0ZXIsIGZpZWxkLCBmbGFnKSBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzYwOlxcdGlkcGZfaXNfY2FwYWJpbGl0eV9lbmEoYWRhcHRlciwgdHJ1ZSwgZmllbGQsIGZsYWcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc2Mjpib29sIGlkcGZfaXNfY2FwYWJpbGl0eV9lbmEoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlciwgYm9vbCBhbGwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzYzOlxcdFxcdFxcdCAgICBlbnVtIGlkcGZfY2FwX2ZpZWxkIGZpZWxkLCB1NjQgZmxhZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc2NS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3NjY6ICogaWRwZl9pc19yZG1hX2NhcF9lbmEgLSBEZXRlcm1pbmUgaWYgUkRNQSBpcyBzdXBwb3J0ZWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03NjctICogQGFkYXB0ZXI6IHByaXZhdGUgZGF0YSBzdHJ1Y3RcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc3MC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3NzE6c3RhdGljIGlubGluZSBib29sIGlkcGZfaXNfcmRtYV9jYXBfZW5hKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzcyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3NzM6XFx0cmV0dXJuIGlkcGZfaXNfY2FwX2VuYShhZGFwdGVyLCBJRFBGX09USEVSX0NBUFMsIFZJUlRDSE5MMl9DQVBfUkRNQSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzc0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTgxNy0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4MTg6ICogaWRwZl9nZXRfcmVzZXJ2ZWRfdmVjcyAtIEdldCByZXNlcnZlZCB2ZWN0b3JzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODE5LSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODIwLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjgyMTpzdGF0aWMgaW5saW5lIHUxNiBpZHBmX2dldF9yZXNlcnZlZF92ZWNzKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODIyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTgyNi0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4Mjc6ICogaWRwZl9nZXRfcmVzZXJ2ZWRfcmRtYV92ZWNzIC0gR2V0IHJlc2VydmVkIFJETUEgdmVjdG9yc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTgyOC0gKiBAYWRhcHRlcjogcHJpdmF0ZSBkYXRhIHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODMxLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjgzMjpzdGF0aWMgaW5saW5lIHUxNiBpZHBmX2dldF9yZXNlcnZlZF9yZG1hX3ZlY3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04MzMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODM3LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjgzODogKiBpZHBmX2dldF9kZWZhdWx0X3Zwb3J0cyAtIEdldCBkZWZhdWx0IG51bWJlciBvZiB2cG9ydHNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04MzktICogQGFkYXB0ZXI6IHByaXZhdGUgZGF0YSBzdHJ1Y3RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NDAtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODQxOnN0YXRpYyBpbmxpbmUgdTE2IGlkcGZfZ2V0X2RlZmF1bHRfdnBvcnRzKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODQyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg0Ni0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4NDc6ICogaWRwZl9nZXRfbWF4X3Zwb3J0cyAtIEdldCBtYXggbnVtYmVyIG9mIHZwb3J0c1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg0OC0gKiBAYWRhcHRlcjogcHJpdmF0ZSBkYXRhIHN0cnVjdFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg0OS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4NTA6c3RhdGljIGlubGluZSB1MTYgaWRwZl9nZXRfbWF4X3Zwb3J0cyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NTUtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODU2OiAqIGlkcGZfZ2V0X21heF90eF9idWZzIC0gR2V0IG1heCBzY2F0dGVyLWdhdGhlciBidWZmZXJzIHN1cHBvcnRlZCBieSB0aGUgZGV2aWNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODU3LSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODU4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjg1OTpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBpZHBmX2dldF9tYXhfdHhfYnVmcyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg2MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NjQtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODY1OiAqIGlkcGZfZ2V0X21pbl90eF9wa3RfbGVuIC0gR2V0IG1pbiBwYWNrZXQgbGVuZ3RoIHN1cHBvcnRlZCBieSB0aGUgZGV2aWNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODY2LSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODY3LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjg2ODpzdGF0aWMgaW5saW5lIHU4IGlkcGZfZ2V0X21pbl90eF9wa3RfbGVuKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg3NS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4NzY6ICogaWRwZl9nZXRfbWJ4X3JlZ19hZGRyIC0gR2V0IEJBUjAgbWFpbGJveCByZWdpc3RlciBhZGRyZXNzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODc3LSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04ODEtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODgyOnN0YXRpYyBpbmxpbmUgdm9pZCBfX2lvbWVtICppZHBmX2dldF9tYnhfcmVnX2FkZHIoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04ODMtXFx0XFx0XFx0XFx0XFx0XFx0ICByZXNvdXJjZV9zaXplX3QgcmVnX29mZnNldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg4OC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4ODk6ICogaWRwZl9nZXRfcnN0YXRfcmVnX2FkZHIgLSBHZXQgQkFSMCByc3RhdCByZWdpc3RlciBhZGRyZXNzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODkwLSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04OTQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODk1OnN0YXRpYyBpbmxpbmUgdm9pZCBfX2lvbWVtICppZHBmX2dldF9yc3RhdF9yZWdfYWRkcihzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg5Ni1cXHRcXHRcXHRcXHRcXHRcXHQgICAgcmVzb3VyY2Vfc2l6ZV90IHJlZ19vZmZzZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05MDMtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6OTA0OiAqIGlkcGZfZ2V0X3JlZ19hZGRyIC0gR2V0IEJBUjAgcmVnaXN0ZXIgYWRkcmVzc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTkwNS0gKiBAYWRhcHRlcjogcHJpdmF0ZSBkYXRhIHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTA5LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjkxMDpzdGF0aWMgaW5saW5lIHZvaWQgX19pb21lbSAqaWRwZl9nZXRfcmVnX2FkZHIoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05MTEtXFx0XFx0XFx0XFx0XFx0ICAgICAgcmVzb3VyY2Vfc2l6ZV90IHJlZ19vZmZzZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTEyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo5MTM6XFx0c3RydWN0IGlkcGZfaHcgKmh3ID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWh3O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTkxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05MTUtXFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBody1cXHUwMDNlbnVtX2xhbl9yZWdzOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo5MTY6XFx0XFx0c3RydWN0IGlkcGZfbW1pb19yZWcgKnJlZ2lvbiA9IFxcdTAwMjZody1cXHUwMDNlbGFuX3JlZ3NbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTM5LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjk0MDogKiBpZHBmX2lzX3Jlc2V0X2RldGVjdGVkIC0gY2hlY2sgaWYgd2Ugd2VyZSByZXNldCBhdCBzb21lIHBvaW50XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTQxLSAqIEBhZGFwdGVyOiBkcml2ZXIgc3BlY2lmaWMgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTk0NC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo5NDU6c3RhdGljIGlubGluZSBib29sIGlkcGZfaXNfcmVzZXRfZGV0ZWN0ZWQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05NDYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjk1MDpcXHRyZXR1cm4gIShyZWFkbChpZHBmX2dldF9tYnhfcmVnX2FkZHIoYWRhcHRlciwgYWRhcHRlci1cXHUwMDNlaHcuYXJxLVxcdTAwM2VyZWcubGVuKSkgXFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTk1MS1cXHRcXHQgYWRhcHRlci1cXHUwMDNlaHcuYXJxLVxcdTAwM2VyZWcubGVuX21hc2spO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTU0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjk1NTogKiBpZHBmX2lzX3Jlc2V0X2luX3Byb2cgLSBjaGVjayBpZiByZXNldCBpcyBpbiBwcm9ncmVzc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTk1Ni0gKiBAYWRhcHRlcjogZHJpdmVyIHNwZWNpZmljIHByaXZhdGUgc3RydWN0dXJlXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE0OjAxOjA4LjE0OTc4MzY3NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NDc0MDM0NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBUaGlzIFBDSSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGEgUENJIGRyaXZlci4gTXkgZmlyc3QgdGhvdWdodCBpcyBhbHdheXMsIGlzIHRoZXJlIGFuIGVtdWxhdG9yIGF2YWlsYWJsZT8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIGludGVyYWN0IHdpdGggaXQsIGFuZCBlbXVsYXRpb24gaXMgdXN1YWxseSB0aGUgZWFzaWVzdCByb3V0ZS4gTGV0J3Mgc2VlIGlmIHRoaXMgcGFydGljdWxhciBkcml2ZXIgaGFzIGEga25vd24gZW11bGF0b3Igb3IgaWYgaXQncyByZWFjaGFibGUgaW4gYSBHQ0UvUUVNVSBlbnZpcm9ubWVudC4gSXQncyB1c3VhbGx5IHRoZSBjYXNlIHRoYXQgSW50ZWwgSURQRiwgb3Igc2ltaWxhciBuZXR3b3JrIGRldmljZXMsIGlzIGEgcGh5c2ljYWwgcGllY2Ugb2YgaGFyZHdhcmUuIEhvd2V2ZXIsIEkgbmVlZCB0byBydWxlIG91dCB0aGUgcG9zc2liaWxpdHkgb2YgYSB2aXJ0dWFsaXplZCB2ZXJzaW9uLiBJIGtub3cgdGhlIElEUEYgaXMgdXN1YWxseSBhIHBoeXNpY2FsIGRldmljZS4gVG8gZ2V0IHRoZSBzcGVjaWZpYyBQQ0kgSURzIGZvciB0aGlzIGRyaXZlciwgSSBzaG91bGQgY2hlY2sgdGhlIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTI5MiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE0OjAxOjEyLjc5NzE4ODczNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzAzNzU2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZHBmX3BjaV90YmxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYz0yNz1zdGF0aWMgaW50IGlkcGZfZ2V0X2RldmljZV90eXBlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy01MS0gKiBAYWRhcHRlcjogYWRhcHRlciB0byBpbml0aWFsaXplXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYzo1MjogKiBAZW50OiBlbnRyeSBpbiBpZHBmX3BjaV90YmxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTUzLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jPTE5MD1zdGF0aWMgaW50IGlkcGZfY2ZnX2h3KHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTIzMS0gKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjIzMjogKiBAZW50OiBlbnRyeSBpbiBpZHBmX3BjaV90YmxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTIzMy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYz0yMzY9c3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zNzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYzozNzc6LyogaWRwZl9wY2lfdGJsIC0gUENJIERldiBpZHBmIElEIFRhYmxlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zNzgtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYzozNzk6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGlkcGZfcGNpX3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMzgwLVxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElEUEZfREVWX0lEX1BGKX0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTM4NC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM6Mzg1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpZHBmX3BjaV90YmwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMzg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM9Mzg3PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpZHBmX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTM4OC1cXHQubmFtZVxcdFxcdFxcdD0gS0JVSUxEX01PRE5BTUUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYzozODk6XFx0LmlkX3RhYmxlXFx0XFx0PSBpZHBmX3BjaV90YmwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zOTAtXFx0LnByb2JlXFx0XFx0XFx0PSBpZHBmX3Byb2JlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNDowMToxMi44NTQyMzMxOTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDY0NTM5OTU2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQQ0kgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggcmVsYXRlZCB0byBJbnRlbCdzIGBpZHBmYCBkcml2ZXIuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgYWJvdXQgaGFuZGxpbmcgUENJIGRldmljZXMsIHNwZWNpZmljYWxseSB3aXRoIHRoZSBJRHMgYElEUEZfREVWX0lEX1BGYCBhbmQgYElEUEZfREVWX0lEX1ZGYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAqaXMgdGhpcyBkZXZpY2UgZW11bGF0ZWQgaW4gUUVNVT8qIE5vcGUsIGl0J3MgYWN0dWFsIGhhcmR3YXJlLiBCdXQgdGhlbiBJIHJlbWVtYmVyLCAqd2FpdCwgc3l6Ym90IHJlcG9ydGVkIGEgYnVnIGluIGBpZHBmX3Byb2JlYCo/XG5cbk9rYXksICppcyBzeXpib3QgZnV6emluZyB0aGlzIGRyaXZlciB2aWEgc29tZSB2aXJ0dWFsIFBDSSBmcmFtZXdvcms/KiBJIGltbWVkaWF0ZWx5IHRoaW5rIGFib3V0IGBzeXpfcGNpX2RldmljZWAsIGFuZCBJIHJlY2FsbCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLCB3aGljaCBpbmplY3RzIFBDSSBkZXZpY2VzIHZpYSBgdmZpb2Agb3Igc2ltaWxhciBtZWNoYW5pc21zLiBJdCBtYXkgZXZlbiB1c2UgYSBmYWtlIFBDSSBkZXZpY2UuIFNvLCBzeXprYWxsZXIgKmNhbiogZW11bGF0ZSBQQ0kgZGV2aWNlcy5cblxuTm93LCB0aGUgc3BlY2lmaWMgcGF0Y2ggYWRkcyBgcGNpX2Rpc2FibGVfcHRtKHBkZXYpO2AgaW4gYm90aCBgaWRwZl9yZW1vdmVgIGFuZCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgaWRwZl9wcm9iZWAuIFNvLCAqaXMgdGhpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlPyogWWVzLCBpdCdzIGRpc2FibGluZyBQVE0gKFByZWNpc2lvbiBUaW1lIE1lYXN1cmVtZW50KS4gKklzIGl0IHdvcnRoIGZ1enppbmc/KiBUaGUgY2hhbmdlIGlzIGp1c3QgdGhhdCBzaW5nbGUgbGluZS4gSXQncyBhIGNsZWFudXAsIGZpeGluZyBhIGJ1ZyB3aGVyZSBQVE0gd2Fzbid0IGJlaW5nIGRpc2FibGVkLCB3aGljaCBsaWtlbHkgY2F1c2VkIGEgd2FybmluZyBvciByZXNvdXJjZSBsZWFrLiAqSXMgdGhlcmUgYW55IGNvbXBsZXggbG9naWMgdG8gZnV6ej8qIE5vLCBpdCdzIGEgc2ltcGxlIGBwY2lfZGlzYWJsZV9wdG0ocGRldilgIGNhbGwuXG5cblRoZSBjb21taXQgbWVzc2FnZSBzYXlzIFwic3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XCIsIHdoaWNoIHRlbGxzIG1lIHRoYXQgU3l6a2FsbGVyICpkaWQqIGZpbmQgYSBidWcuIEhvd2V2ZXIsIGlmIHRoZSBwYXRjaCBvbmx5IGFkZHMgYHBjaV9kaXNhYmxlX3B0bShwZGV2KWAsIHRoZXJlJ3Mgbm8gbmV3IGxvZ2ljIHRvIGZ1enosIGp1c3QgYSBzaW1wbGUgZml4LiAqRG9lcyBpdCBlbmFibGUgYW55IG5ldyBmZWF0dXJlPyogTm9wZS4gKkRvZXMgaXQgYWRkIG5ldyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWM/KiBOb3BlLiAqRG9lcyBpdCBtb2RpZnkgZXhlY3V0aW9uIGZsb3c/KiBJdCBqdXN0IGNhbGxzIGEgZnVuY3Rpb24gdG8gY2xlYW4gdXAuXG5cbipTaG91bGQgd2UgZnV6eiBpdD8qIElmIGl0J3MgKmp1c3QqIGEgY2xlYW51cCBpbiB0aGUgZXJyb3IgcGF0aCwgdGhlcmUgYXJlbid0IHNwZWNpZmljIGZ1bmN0aW9ucyB0byBmb2N1cyBvbiwgZXhjZXB0IG1heWJlIGBpZHBmX3Byb2JlYCBhbmQgYGlkcGZfcmVtb3ZlYCwgYnV0IHRob3NlIGFyZSBhbHJlYWR5IGZ1enplZCBieSB0aGUgUENJIGZ1enplciwgYW55d2F5LiBUaGVyZWZvcmUsICppcyBpdCB3b3J0aCBmdXp6aW5nPypcblxuSSByZWNhbGwgdGhlIHJ1bGU6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogLi4uIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXCIgQnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IFBDSSBkZXZpY2VzIENBTiBiZSBlbXVsYXRlZCBieSBzeXprYWxsZXIgdXNpbmcgYHN5el9wY2lfZGV2aWNlYCEgU28sIHRoZSBxdWVzdGlvbiByZW1haW5zOiBkb2VzICp0aGlzIHBhdGNoKiBpbnRyb2R1Y2UgYW55IG5ldyBsb2dpYyB0byBiZSBoZWF2aWx5IGZ1enplZD8gTm8sIGl0IGp1c3QgYWRkcyBgcGNpX2Rpc2FibGVfcHRtKHBkZXYpYCBpbiB0aGUgY2xlYW51cCBwYXRoLiBTbywgbGV0J3Mgbm93IGNoZWNrIHdoYXQgYHBjaV9kaXNhYmxlX3B0bWAgYWN0dWFsbHkgKmRvZXMqLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjM0MSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNDowMToyMy40OTk2MzQ2OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzUwMDQ5NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2Rpc2FibGVfcHRtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvcGNpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3BjaS9wY2llL3B0bS5jPTIyND1FWFBPUlRfU1lNQk9MKHBjaV9lbmFibGVfcHRtKTtcXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jLTIyNS1cXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jOjIyNjpzdGF0aWMgdm9pZCBfX3BjaV9kaXNhYmxlX3B0bShzdHJ1Y3QgcGNpX2RldiAqZGV2KVxcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmMtMjI3LXtcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmMtMjM5LS8qKlxcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmM6MjQwOiAqIHBjaV9kaXNhYmxlX3B0bSgpIC0gRGlzYWJsZSBQcmVjaXNpb24gVGltZSBNZWFzdXJlbWVudFxcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmMtMjQxLSAqIEBkZXY6IFBDSSBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmMtMjQ0LSAqL1xcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmM6MjQ1OnZvaWQgcGNpX2Rpc2FibGVfcHRtKHN0cnVjdCBwY2lfZGV2ICpkZXYpXFxuZHJpdmVycy9wY2kvcGNpZS9wdG0uYy0yNDYte1xcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmMtMjQ3LVxcdGlmIChkZXYtXFx1MDAzZXB0bV9lbmFibGVkKSB7XFxuZHJpdmVycy9wY2kvcGNpZS9wdG0uYzoyNDg6XFx0XFx0X19wY2lfZGlzYWJsZV9wdG0oZGV2KTtcXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jLTI0OS1cXHRcXHRkZXYtXFx1MDAzZXB0bV9lbmFibGVkID0gMDtcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmMtMjUxLX1cXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jOjI1MjpFWFBPUlRfU1lNQk9MKHBjaV9kaXNhYmxlX3B0bSk7XFxuZHJpdmVycy9wY2kvcGNpZS9wdG0uYy0yNTMtXFxuLS1cXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jPTI1OD12b2lkIHBjaV9zdXNwZW5kX3B0bShzdHJ1Y3QgcGNpX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9wY2kvcGNpZS9wdG0uYy0yNjAtXFx0aWYgKGRldi1cXHUwMDNlcHRtX2VuYWJsZWQpXFxuZHJpdmVycy9wY2kvcGNpZS9wdG0uYzoyNjE6XFx0XFx0X19wY2lfZGlzYWJsZV9wdG0oZGV2KTtcXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jLTI2Mi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE0OjAxOjIzLjY3NDY0NzExM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzODQzNDkxMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZWNpc2lvbiBmb3IgYSBTaW1wbGUgQ2xlYW51cCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjbGVhbnVwIHBhdGNoLiBUaGUgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIklzIHRoaXMgZXZlbiB3b3J0aCB0aGUgZWZmb3J0IG9mIGZ1enppbmc/XCIgVGhlIHByb21wdCBnaXZlcyBhIGNsZWFyIGhldXJpc3RpYzogSWYgaXQgdG91Y2hlcyBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgSSBuZWVkIHRvIHZlcmlmeSBpdHMgZXhlY3V0YWJpbGl0eSB3aXRoIGNvZGUgc2VhcmNoIHRvb2xzIGFuZCB0aGVuIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5UaGlzIG9uZSAqZG9lcyogdG91Y2ggYSBkcml2ZXIsIGBpZHBmYC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBpdC4gVGhlIG5leHQgcXVlc3Rpb24gaXMgZXhlY3V0YWJpbGl0eS4gVGhhbmtmdWxseSwgSSBrbm93IFBDSSBmdXp6aW5nIHRocm91Z2ggdG9vbHMgbGlrZSBzeXprYWxsZXIgb2ZmZXJzIGEgcGF0aC4gU28sIGl0IGNhbiBiZSBleGVjdXRlZC5cblxuTm93LCBkbyBhbnkgb2YgdGhlIHByb21wdCdzIGV4Y2x1c2lvbiBjcml0ZXJpYSBhcHBseT8gRG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgZGVjb3JhdGl2ZSBjaGFuZ2VzIOKAkyBub25lIG9mIHRoYXQgaGVyZS4gVGhlIGNvZGUgcGF0aCBpc24ndCBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFN5emthbGxlcidzIFBDSSBmdXp6ZXIgZ2VuZXJhdGVzIHJhbmRvbSBQQ0kgZGV2aWNlcywgc28gZXZlbiBpZiBpdCBkb2Vzbid0ICpzcGVjaWZpY2FsbHkqIGVtdWxhdGUgYGlkcGZgLCBpdCBjYW4gbWF0Y2ggKmFueSogUENJIElELCB0aGVyZWZvcmUgaXQgY2FuIGJlIHJlYWNoZWQuXG5cbkhvd2V2ZXIsIHRoZSBjaGFuZ2UgaXRzZWxmIGlzIGV4dHJlbWVseSBtaW5pbWFsOyBpdCdzIGEgY2FsbCB0byBhIGNsZWFudXAgZnVuY3Rpb24uIElmIEkgc2F5IGBXb3J0aEZ1enppbmc9dHJ1ZWAsIEkgaGF2ZSB0byBqdXN0aWZ5IGl0LiBJIG5lZWQgdG8gZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0LiBXaGF0IHNwZWNpZmljIGZ1bmN0aW9ucyBhcmUgdG91Y2hlZCBieSB0aGlzIHBhdGNoPyBJdCdzIGBpZHBmX3JlbW92ZWAgYW5kIGBpZHBmX3Byb2JlYC4gTGV0J3MgZGlnIGludG8gdGhvc2UgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODI3OCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNDowMTozMC4wNTg5OTg4MzZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NDQ5MjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlkcGZfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jPTE5MD1zdGF0aWMgaW50IGlkcGZfY2ZnX2h3KHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTIyOS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjIzMDogKiBpZHBmX3Byb2JlIC0gRGV2aWNlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTIzMS0gKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3RcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMjM1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM6MjM2OnN0YXRpYyBpbnQgaWRwZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTIzNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jPTM4Nz1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaWRwZl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTM4OS1cXHQuaWRfdGFibGVcXHRcXHQ9IGlkcGZfcGNpX3RibCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjM5MDpcXHQucHJvYmVcXHRcXHRcXHQ9IGlkcGZfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zOTEtXFx0LnNyaW92X2NvbmZpZ3VyZVxcdD0gaWRwZl9zcmlvdl9jb25maWd1cmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE0OjAxOjMwLjExNDQ1Njc5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNTUyNTQ2OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSB0aG91Z2h0cywgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgY29udGV4dCBpcyBteSBhcmVhIG9mIGV4cGVydGlzZTpcblxuKipDaGVja2luZyB0aGUgSURQRiBTZXR1cCoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMsIGBpZHBmX3Byb2JlYCBhbmQgYGlkcGZfcmVtb3ZlYC4gVGhlc2UgYXJlIGNsZWFybHkgcmVsYXRlZCB0byB0aGUgSURQRiBtb2R1bGUsIHByb2JhYmx5IGluaXRpYWxpemF0aW9uIGFuZCByZW1vdmFsIHJvdXRpbmVzIHJlc3BlY3RpdmVseS4gRmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIHF1aWNrbHkgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24uIElzIHRoZXJlIGFueSBlbmFibGluZyBjb25maWd1cmF0aW9uIGZvciB0aGlzPyBZZXAsIHRoZXJlIGl0IGlzOiBgQ09ORklHX0lEUEZgLiBFeGNlbGxlbnQuIFRoYXQncyB0aGUgYmFzZWxpbmUuIE5vdyBJIGtub3cgd2hldGhlciB0aGlzIHBhcnRpY3VsYXIgSURQRiBmZWF0dXJlIGlzIGludGVuZGVkIHRvIGJlIGNvbXBpbGVkIGludG8gdGhpcyBidWlsZC4gTm93IEkgY2FuIG1vdmUgZm9yd2FyZCB3aXRoIGFuYWx5emluZyB0aGUgYGlkcGZfcHJvYmVgIGFuZCBgaWRwZl9yZW1vdmVgIHJvdXRpbmVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MzUyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTQ6MDE6MzMuMjY5NzEzODYyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTU3MzYzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSURQRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnOjQ6Y29uZmlnIElEUEZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctNS1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIFN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc9MTc9aWYgSURQRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc6MTk6Y29uZmlnIElEUEZfU0lOR0xFUVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy0yMC1cXHRib29sIFxcXCJpZHBmIHNpbmdsZXEgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTQ6MDE6MzMuMzI5MjkzNjE2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0OTI1NzMxMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIElEUEYgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHJpZ2h0IG9mZiB0aGUgYmF0LCBpdCBzZWVtcyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBpcyBgSURQRmAuIE5vdywgdGhlIHF1ZXN0aW9uIGlzOiBpcyB0aGlzIHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZz8gSXQncyBhIHNpbXBsZSBmaXgsIGEgcmVzb3VyY2UgbGVhaywgc3BlY2lmaWNhbGx5IHRoZSBQVE0gaXNuJ3QgYmVpbmcgZGlzYWJsZWQuIElmIEknbSB1bmRlcnN0YW5kaW5nIHRoaXMgY29ycmVjdGx5LCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGhpbmdlcyBhcm91bmQgYGlkcGZfcHJvYmVgIGFuZCBgaWRwZl9yZW1vdmVgLiBTaW5jZSB0aGUgcm9vdCBjYXVzZSBpcyBhIHNpbXBsZSBtaXNzaW5nIGRpc2FibGUgb2YgYSBmZWF0dXJlLCBhbmQgYXNzdW1pbmcgdGhlIGlzc3VlIGlzIHdlbGwgdW5kZXJzdG9vZCBhbHJlYWR5LCBiZWNhdXNlIGl0J3MgYWxyZWFkeSBpbiB0aGUgcGlwZWxpbmUsIGl0J3MgbGlrZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIHByb2JsZW0uXG5cbkNvbnNpZGVyaW5nIHRoYXQgdGhlIHBhdGNoIGhhcyBsaWtlbHkgYWxyZWFkeSBiZWVuIGZvdW5kIGJ5IHN5emthbGxlciBvciBhbm90aGVyIHRlc3RlciwgYW5kIHRoZSBmaXggaXMgZnVuY3Rpb25hbGx5IHNvdW5kIChkaXNhYmxpbmcgUFRNKSwgSSdtIGxlYW5pbmcgdG93YXJkcyB0aGUgY29uY2x1c2lvbiB0aGF0IHRoaXMgaXMgd29ydGh3aGlsZS4gTGV0J3MgcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIE15IHByaW1hcnkgZm9jdXMgc2hvdWxkIGJlIG9uIHRoZSBgaWRwZl9wcm9iZWAgYW5kIGBpZHBmX3JlbW92ZWAgZnVuY3Rpb25zLiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGZvciBvdGhlciBjb25maWd1cmF0aW9ucyB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGFuZCB0aGUgc3BlY2lmaWMgZmlsZSB0aGlzIHBhdGNoIHRvdWNoZXMgaXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmNgLiBCZWZvcmUgSSBwcm9jZWVkLCBJIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBgI2lmZGVmYCBkaXJlY3RpdmVzIGFyb3VuZCB0aGUgY29kZSBJJ20gaW52ZXN0aWdhdGluZyB0byBlbnN1cmUgSSBoYXZlIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gaW4gdGhpcyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTc3MCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNDowMTozOC44MjE4Njk3NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjI5NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTQwOlxcdFxcdGRlc3Ryb3lfd29ya3F1ZXVlKGFkYXB0ZXItXFx1MDAzZXN0YXRzX3dxKTtcXG4gMTQxOlxcdFxcdGRlc3Ryb3lfd29ya3F1ZXVlKGFkYXB0ZXItXFx1MDAzZXZjX2V2ZW50X3dxKTtcXG4gMTQyOlxcdFxcbiAxNDM6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFkYXB0ZXItXFx1MDAzZW1heF92cG9ydHM7IGkrKykge1xcbiAxNDQ6XFx0XFx0XFx0aWYgKCFhZGFwdGVyLVxcdTAwM2V2cG9ydF9jb25maWdbaV0pXFxuIDE0NTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gMTQ2OlxcdFxcdFxcdGtmcmVlKGFkYXB0ZXItXFx1MDAzZXZwb3J0X2NvbmZpZ1tpXS1cXHUwMDNldXNlcl9jb25maWcucV9jb2FsZXNjZSk7XFxuIDE0NzpcXHRcXHRcXHRrZnJlZShhZGFwdGVyLVxcdTAwM2V2cG9ydF9jb25maWdbaV0pO1xcbiAxNDg6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNldnBvcnRfY29uZmlnW2ldID0gTlVMTDtcXG4gMTQ5OlxcdFxcdH1cXG4gMTUwOlxcdFxcdGtmcmVlKGFkYXB0ZXItXFx1MDAzZXZwb3J0X2NvbmZpZyk7XFxuIDE1MTpcXHRcXHRhZGFwdGVyLVxcdTAwM2V2cG9ydF9jb25maWcgPSBOVUxMO1xcbiAxNTI6XFx0XFx0a2ZyZWUoYWRhcHRlci1cXHUwMDNlbmV0ZGV2cyk7XFxuIDE1MzpcXHRcXHRhZGFwdGVyLVxcdTAwM2VuZXRkZXZzID0gTlVMTDtcXG4gMTU0OlxcdFxcdGtmcmVlKGFkYXB0ZXItXFx1MDAzZXZjeG5fbW5ncik7XFxuIDE1NTpcXHRcXHRhZGFwdGVyLVxcdTAwM2V2Y3huX21uZ3IgPSBOVUxMO1xcbiAxNTY6XFx0XFxuIDE1NzpcXHRcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZhZGFwdGVyLVxcdTAwM2V2cG9ydF9jdHJsX2xvY2spO1xcbiAxNTg6XFx0XFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2YWRhcHRlci1cXHUwMDNldmVjdG9yX2xvY2spO1xcbiAxNTk6XFx0XFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2YWRhcHRlci1cXHUwMDNlcXVldWVfbG9jayk7XFxuIDE2MDpcXHRcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZhZGFwdGVyLVxcdTAwM2V2Y19idWZfbG9jayk7XFxuIDE2MTpcXHRcXG4gMTYyOlxcdFxcdHBjaV9kaXNhYmxlX3B0bShwZGV2KTtcXG4gMTYzOlxcdFxcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTtcXG4gMTY0OlxcdFxcdGtmcmVlKGFkYXB0ZXIpO1xcbiAxNjU6XFx0fVxcbiAxNjY6XFx0XFxuIDE2NzpcXHQvKipcXG4gMTY4OlxcdCAqIGlkcGZfc2h1dGRvd24gLSBQQ0kgY2FsbGJhY2sgZm9yIHNodXR0aW5nIGRvd24gZGV2aWNlXFxuIDE2OTpcXHQgKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3RcXG4gMTcwOlxcdCAqL1xcbiAxNzE6XFx0c3RhdGljIHZvaWQgaWRwZl9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4gMTcyOlxcdHtcXG4gMTczOlxcdFxcdHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XFxuIDE3NDpcXHRcXG4gMTc1OlxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2YWRhcHRlci1cXHUwMDNlc2Vydl90YXNrKTtcXG4gMTc2OlxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2YWRhcHRlci1cXHUwMDNldmNfZXZlbnRfdGFzayk7XFxuIDE3NzpcXHRcXHRpZHBmX3ZjX2NvcmVfZGVpbml0KGFkYXB0ZXIpO1xcbiAxNzg6XFx0XFx0aWRwZl9kZWluaXRfZGZsdF9tYngoYWRhcHRlcik7XFxuIDE3OTpcXHRcXG4gMTgwOlxcdFxcdGlmIChzeXN0ZW1fc3RhdGUgPT0gU1lTVEVNX1BPV0VSX09GRilcXG4gMTgxOlxcdFxcdFxcdHBjaV9zZXRfcG93ZXJfc3RhdGUocGRldiwgUENJX0QzaG90KTtcXG4gMTgyOlxcdH1cXG4gMTgzOlxcdFxcbiAxODQ6XFx0LyoqXFxuIDE4NTpcXHQgKiBpZHBmX2NmZ19odyAtIEluaXRpYWxpemUgSFcgc3RydWN0XFxuIDE4NjpcXHQgKiBAYWRhcHRlcjogYWRhcHRlciB0byBzZXR1cCBodyBzdHJ1Y3QgZm9yXFxuIDE4NzpcXHQgKlxcbiAxODg6XFx0ICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG9uIGZhaWx1cmVcXG4gMTg5OlxcdCAqL1xcbiAxOTA6XFx0c3RhdGljIGludCBpZHBmX2NmZ19odyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxcbiAxOTE6XFx0e1xcbiAxOTI6XFx0XFx0cmVzb3VyY2Vfc2l6ZV90IHJlc19zdGFydCwgbWJ4X3N0YXJ0LCByc3RhdF9zdGFydDtcXG4gMTkzOlxcdFxcdHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gYWRhcHRlci1cXHUwMDNlcGRldjtcXG4gMTk0OlxcdFxcdHN0cnVjdCBpZHBmX2h3ICpodyA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VodztcXG4gMTk1OlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuIDE5NjpcXHRcXHRsb25nIGxlbjtcXG4gMTk3OlxcdFxcbiAxOTg6XFx0XFx0cmVzX3N0YXJ0ID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIDApO1xcbiAxOTk6XFx0XFxuIDIwMDpcXHRcXHQvKiBNYXAgbWFpbGJveCBzcGFjZSBmb3IgdmlydGNobmwgY29tbXVuaWNhdGlvbiAqL1xcbiAyMDE6XFx0XFx0bWJ4X3N0YXJ0ID0gcmVzX3N0YXJ0ICsgYWRhcHRlci1cXHUwMDNlZGV2X29wcy5zdGF0aWNfcmVnX2luZm9bMF0uc3RhcnQ7XFxuIDIwMjpcXHRcXHRsZW4gPSByZXNvdXJjZV9zaXplKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VkZXZfb3BzLnN0YXRpY19yZWdfaW5mb1swXSk7XFxuIDIwMzpcXHRcXHRody1cXHUwMDNlbWJ4LnZhZGRyID0gZGV2bV9pb3JlbWFwKGRldiwgbWJ4X3N0YXJ0LCBsZW4pO1xcbiAyMDQ6XFx0XFx0aWYgKCFody1cXHUwMDNlbWJ4LnZhZGRyKSB7XFxuIDIwNTpcXHRcXHRcXHRwY2lfZXJyKHBkZXYsIFxcXCJmYWlsZWQgdG8gYWxsb2NhdGUgQkFSMCBtYnggcmVnaW9uXFxcXG5cXFwiKTtcXG4gMjA2OlxcdFxcbiAyMDc6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDIwODpcXHRcXHR9XFxuIDIwOTpcXHRcXHRody1cXHUwMDNlbWJ4LmFkZHJfc3RhcnQgPSBhZGFwdGVyLVxcdTAwM2VkZXZfb3BzLnN0YXRpY19yZWdfaW5mb1swXS5zdGFydDtcXG4gMjEwOlxcdFxcdGh3LVxcdTAwM2VtYnguYWRkcl9sZW4gPSBsZW47XFxuIDIxMTpcXHRcXG4gMjEyOlxcdFxcdC8qIE1hcCByc3RhdCBzcGFjZSBmb3IgcmVzZXRzICovXFxuIDIxMzpcXHRcXHRyc3RhdF9zdGFydCA9IHJlc19zdGFydCArIGFkYXB0ZXItXFx1MDAzZWRldl9vcHMuc3RhdGljX3JlZ19pbmZvWzFdLnN0YXJ0O1xcbiAyMTQ6XFx0XFx0bGVuID0gcmVzb3VyY2Vfc2l6ZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlZGV2X29wcy5zdGF0aWNfcmVnX2luZm9bMV0pO1xcbiAyMTU6XFx0XFx0aHctXFx1MDAzZXJzdGF0LnZhZGRyID0gZGV2bV9pb3JlbWFwKGRldiwgcnN0YXRfc3RhcnQsIGxlbik7XFxuIDIxNjpcXHRcXHRpZiAoIWh3LVxcdTAwM2Vyc3RhdC52YWRkcikge1xcbiAyMTc6XFx0XFx0XFx0cGNpX2VycihwZGV2LCBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIEJBUjAgcnN0YXQgcmVnaW9uXFxcXG5cXFwiKTtcXG4gMjE4OlxcdFxcbiAyMTk6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDIyMDpcXHRcXHR9XFxuIDIyMTpcXHRcXHRody1cXHUwMDNlcnN0YXQuYWRkcl9zdGFydCA9IGFkYXB0ZXItXFx1MDAzZWRldl9vcHMuc3RhdGljX3JlZ19pbmZvWzFdLnN0YXJ0O1xcbiAyMjI6XFx0XFx0aHctXFx1MDAzZXJzdGF0LmFkZHJfbGVuID0gbGVuO1xcbiAyMjM6XFx0XFxuIDIyNDpcXHRcXHRody1cXHUwMDNlYmFjayA9IGFkYXB0ZXI7XFxuIDIyNTpcXHRcXG4gMjI2OlxcdFxcdHJldHVybiAwO1xcbiAyMjc6XFx0fVxcbiAyMjg6XFx0XFxuIDIyOTpcXHQvKipcXG4gMjMwOlxcdCAqIGlkcGZfcHJvYmUgLSBEZXZpY2UgaW5pdGlhbGl6YXRpb24gcm91dGluZVxcbiAyMzE6XFx0ICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XFxuIDIzMjpcXHQgKiBAZW50OiBlbnRyeSBpbiBpZHBmX3BjaV90YmxcXG4gMjMzOlxcdCAqXFxuIDIzNDpcXHQgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgb24gZmFpbHVyZVxcbiAyMzU6XFx0ICovXFxuIDIzNjpcXHRzdGF0aWMgaW50IGlkcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuIDIzNzpcXHR7XFxuIDIzODpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbiAyMzk6XFx0XFx0c3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTQ6MDE6MzguODIxOTk0MTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA0MzYzNTM0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gY2hlY2tpbmcgdGhlIHJlc3Qgb2YgYGlkcGZfcHJvYmVgLCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBhY2NvdW50LCBhc3N1bWluZyBJJ20gYWxyZWFkeSBkZWVwIGluIHRoZSB3ZWVkcyBvZiB0aGlzIHN1YmplY3Q6XG5cbioqQW5hbHl6aW5nIHRoZSBSZW1haW5kZXIgb2YgYGlkcGZfcHJvYmVgKipcblxuQWxyaWdodCwgc28gd2UndmUgbG9va2VkIGF0IHRoZSBpbml0aWFsIGFzcGVjdHMgb2YgYGlkcGZfcHJvYmVgLCBhbmQgbm93IGl0J3MgdGltZSB0byB0aG9yb3VnaGx5IGV4YW1pbmUgdGhlIHJlbWFpbmluZyBwYXJ0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHksIHNvIHRoaXMgaXNuJ3QganVzdCBhYm91dCBhIGN1cnNvcnkgZ2xhbmNlLiBJJ20gZ29pbmcgdG8gY2FyZWZ1bGx5IGRpc3NlY3Qgd2hhdCdzIGxlZnQsIG1ha2luZyBzdXJlIEkgZG9uJ3QgbWlzcyBhbnkgY3JpdGljYWwgZGV0YWlscyB0aGF0IG1pZ2h0IGltcGFjdCBpdHMgb3ZlcmFsbCBwZXJmb3JtYW5jZSwgc3RhYmlsaXR5LCBvciBzZWN1cml0eSwgcGFydGljdWxhcmx5IGlmIHRoaXMgaXMgc29tZXRoaW5nIGJlaW5nIGFjdGl2ZWx5IGRlcGxveWVkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBlZGdlIGNhc2VzIHRoYXQgaGF2ZW4ndCBiZWVuIGFkZHJlc3NlZCwgcG9zc2libGUgYXJlYXMgb2Ygb3B0aW1pemF0aW9uLCBhbmQgYW55IGluZGljYXRpb24gb2YgcG90ZW50aWFsIGJ1Z3Mgb3IgdnVsbmVyYWJpbGl0aWVzLiBNeSBmb2N1cyBpcyBvbiBlbnN1cmluZyBhIHJvYnVzdCBhbmQgcmVsaWFibGUgaW1wbGVtZW50YXRpb24uIEknbGwgYmUgYXNraW5nIG15c2VsZiBxdWVzdGlvbnM6IEFyZSB0aGVyZSBhbnkgZXJyb3IgaGFuZGxpbmcgZ2Fwcz8gSXMgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlIHRocmVhZC1zYWZlPyBEb2VzIHRoZSBsb2dpYyBoZXJlIGFkaGVyZSB0byB0aGUgc3RhbmRhcmRzIGFuZCBiZXN0IHByYWN0aWNlcyB0aGF0IGFyZSBleHBlY3RlZCBmb3IgdGhpcyBjb250ZXh0PyBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBjb2RlIGlzIGJvdGggZnVuY3Rpb25hbCBhbmQgd2VsbC1hcmNoaXRlY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5MzMsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE0OjAxOjQyLjg2NTYzMTg3OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI0MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNDA6XFx0XFx0aW50IGVycjtcXG4gMjQxOlxcdFxcbiAyNDI6XFx0XFx0YWRhcHRlciA9IGt6YWxsb2Nfb2JqKCphZGFwdGVyKTtcXG4gMjQzOlxcdFxcdGlmICghYWRhcHRlcilcXG4gMjQ0OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAyNDU6XFx0XFxuIDI0NjpcXHRcXHRhZGFwdGVyLVxcdTAwM2VyZXFfdHhfc3BsaXRxID0gdHJ1ZTtcXG4gMjQ3OlxcdFxcdGFkYXB0ZXItXFx1MDAzZXJlcV9yeF9zcGxpdHEgPSB0cnVlO1xcbiAyNDg6XFx0XFxuIDI0OTpcXHRcXHRhZGFwdGVyLVxcdTAwM2VwZGV2ID0gcGRldjtcXG4gMjUwOlxcdFxcdGVyciA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcXG4gMjUxOlxcdFxcdGlmIChlcnIpXFxuIDI1MjpcXHRcXHRcXHRnb3RvIGVycl9mcmVlO1xcbiAyNTM6XFx0XFxuIDI1NDpcXHRcXHRlcnIgPSBwY2ltX3JlcXVlc3RfcmVnaW9uKHBkZXYsIDAsIHBjaV9uYW1lKHBkZXYpKTtcXG4gMjU1OlxcdFxcdGlmIChlcnIpIHtcXG4gMjU2OlxcdFxcdFxcdHBjaV9lcnIocGRldiwgXFxcInBjaW1fcmVxdWVzdF9yZWdpb24gZmFpbGVkICVwZVxcXFxuXFxcIiwgRVJSX1BUUihlcnIpKTtcXG4gMjU3OlxcdFxcbiAyNTg6XFx0XFx0XFx0Z290byBlcnJfZnJlZTtcXG4gMjU5OlxcdFxcdH1cXG4gMjYwOlxcdFxcbiAyNjE6XFx0XFx0ZXJyID0gcGNpX2VuYWJsZV9wdG0ocGRldiwgTlVMTCk7XFxuIDI2MjpcXHRcXHRpZiAoZXJyKVxcbiAyNjM6XFx0XFx0XFx0cGNpX2RiZyhwZGV2LCBcXFwiUENJZSBQVE0gaXMgbm90IHN1cHBvcnRlZCBieSBQQ0llIGJ1cy9jb250cm9sbGVyXFxcXG5cXFwiKTtcXG4gMjY0OlxcdFxcbiAyNjU6XFx0XFx0Lyogc2V0IHVwIGZvciBoaWdoIG9yIGxvdyBkbWEgKi9cXG4gMjY2OlxcdFxcdGVyciA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJlbnQoZGV2LCBETUFfQklUX01BU0soNjQpKTtcXG4gMjY3OlxcdFxcdGlmIChlcnIpIHtcXG4gMjY4OlxcdFxcdFxcdHBjaV9lcnIocGRldiwgXFxcIkRNQSBjb25maWd1cmF0aW9uIGZhaWxlZDogJXBlXFxcXG5cXFwiLCBFUlJfUFRSKGVycikpO1xcbiAyNjk6XFx0XFxuIDI3MDpcXHRcXHRcXHRnb3RvIGVycl9kaXNhYmxlX3B0bTtcXG4gMjcxOlxcdFxcdH1cXG4gMjcyOlxcdFxcbiAyNzM6XFx0XFx0cGNpX3NldF9tYXN0ZXIocGRldik7XFxuIDI3NDpcXHRcXHRwY2lfc2V0X2RydmRhdGEocGRldiwgYWRhcHRlcik7XFxuIDI3NTpcXHRcXG4gMjc2OlxcdFxcdGFkYXB0ZXItXFx1MDAzZWluaXRfd3EgPSBhbGxvY193b3JrcXVldWUoXFxcIiVzLSVzLWluaXRcXFwiLFxcbiAyNzc6XFx0XFx0XFx0XFx0XFx0XFx0ICAgV1FfVU5CT1VORCB8IFdRX01FTV9SRUNMQUlNLCAwLFxcbiAyNzg6XFx0XFx0XFx0XFx0XFx0XFx0ICAgZGV2X2RyaXZlcl9zdHJpbmcoZGV2KSxcXG4gMjc5OlxcdFxcdFxcdFxcdFxcdFxcdCAgIGRldl9uYW1lKGRldikpO1xcbiAyODA6XFx0XFx0aWYgKCFhZGFwdGVyLVxcdTAwM2Vpbml0X3dxKSB7XFxuIDI4MTpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBhbGxvY2F0ZSBpbml0IHdvcmtxdWV1ZVxcXFxuXFxcIik7XFxuIDI4MjpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbiAyODM6XFx0XFx0XFx0Z290byBlcnJfZGlzYWJsZV9wdG07XFxuIDI4NDpcXHRcXHR9XFxuIDI4NTpcXHRcXG4gMjg2OlxcdFxcdGFkYXB0ZXItXFx1MDAzZXNlcnZfd3EgPSBhbGxvY193b3JrcXVldWUoXFxcIiVzLSVzLXNlcnZpY2VcXFwiLFxcbiAyODc6XFx0XFx0XFx0XFx0XFx0XFx0ICAgV1FfVU5CT1VORCB8IFdRX01FTV9SRUNMQUlNLCAwLFxcbiAyODg6XFx0XFx0XFx0XFx0XFx0XFx0ICAgZGV2X2RyaXZlcl9zdHJpbmcoZGV2KSxcXG4gMjg5OlxcdFxcdFxcdFxcdFxcdFxcdCAgIGRldl9uYW1lKGRldikpO1xcbiAyOTA6XFx0XFx0aWYgKCFhZGFwdGVyLVxcdTAwM2VzZXJ2X3dxKSB7XFxuIDI5MTpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBhbGxvY2F0ZSBzZXJ2aWNlIHdvcmtxdWV1ZVxcXFxuXFxcIik7XFxuIDI5MjpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbiAyOTM6XFx0XFx0XFx0Z290byBlcnJfc2Vydl93cV9hbGxvYztcXG4gMjk0OlxcdFxcdH1cXG4gMjk1OlxcdFxcbiAyOTY6XFx0XFx0YWRhcHRlci1cXHUwMDNlbWJ4X3dxID0gYWxsb2Nfd29ya3F1ZXVlKFxcXCIlcy0lcy1tYnhcXFwiLCBXUV9VTkJPVU5EIHwgV1FfSElHSFBSSSxcXG4gMjk3OlxcdFxcdFxcdFxcdFxcdFxcdCAgMCwgZGV2X2RyaXZlcl9zdHJpbmcoZGV2KSxcXG4gMjk4OlxcdFxcdFxcdFxcdFxcdFxcdCAgZGV2X25hbWUoZGV2KSk7XFxuIDI5OTpcXHRcXHRpZiAoIWFkYXB0ZXItXFx1MDAzZW1ieF93cSkge1xcbiAzMDA6XFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gYWxsb2NhdGUgbWFpbGJveCB3b3JrcXVldWVcXFxcblxcXCIpO1xcbiAzMDE6XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gMzAyOlxcdFxcdFxcdGdvdG8gZXJyX21ieF93cV9hbGxvYztcXG4gMzAzOlxcdFxcdH1cXG4gMzA0OlxcdFxcbiAzMDU6XFx0XFx0YWRhcHRlci1cXHUwMDNlc3RhdHNfd3EgPSBhbGxvY193b3JrcXVldWUoXFxcIiVzLSVzLXN0YXRzXFxcIixcXG4gMzA2OlxcdFxcdFxcdFxcdFxcdFxcdCAgICBXUV9VTkJPVU5EIHwgV1FfTUVNX1JFQ0xBSU0sIDAsXFxuIDMwNzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgZGV2X2RyaXZlcl9zdHJpbmcoZGV2KSxcXG4gMzA4OlxcdFxcdFxcdFxcdFxcdFxcdCAgICBkZXZfbmFtZShkZXYpKTtcXG4gMzA5OlxcdFxcdGlmICghYWRhcHRlci1cXHUwMDNlc3RhdHNfd3EpIHtcXG4gMzEwOlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGFsbG9jYXRlIHdvcmtxdWV1ZVxcXFxuXFxcIik7XFxuIDMxMTpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbiAzMTI6XFx0XFx0XFx0Z290byBlcnJfc3RhdHNfd3FfYWxsb2M7XFxuIDMxMzpcXHRcXHR9XFxuIDMxNDpcXHRcXG4gMzE1OlxcdFxcdGFkYXB0ZXItXFx1MDAzZXZjX2V2ZW50X3dxID0gYWxsb2Nfd29ya3F1ZXVlKFxcXCIlcy0lcy12Y19ldmVudFxcXCIsXFxuIDMxNjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgV1FfVU5CT1VORCB8IFdRX01FTV9SRUNMQUlNLCAwLFxcbiAzMTc6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGRldl9kcml2ZXJfc3RyaW5nKGRldiksXFxuIDMxODpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgZGV2X25hbWUoZGV2KSk7XFxuIDMxOTpcXHRcXHRpZiAoIWFkYXB0ZXItXFx1MDAzZXZjX2V2ZW50X3dxKSB7XFxuIDMyMDpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBhbGxvY2F0ZSB2aXJ0Y2hubCBldmVudCB3b3JrcXVldWVcXFxcblxcXCIpO1xcbiAzMjE6XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gMzIyOlxcdFxcdFxcdGdvdG8gZXJyX3ZjX2V2ZW50X3dxX2FsbG9jO1xcbiAzMjM6XFx0XFx0fVxcbiAzMjQ6XFx0XFxuIDMyNTpcXHRcXHQvKiBzZXR1cCBtc2dsdmwgKi9cXG4gMzI2OlxcdFxcdGFkYXB0ZXItXFx1MDAzZW1zZ19lbmFibGUgPSBuZXRpZl9tc2dfaW5pdCgtMSwgSURQRl9BVkFJTF9ORVRJRl9NKTtcXG4gMzI3OlxcdFxcbiAzMjg6XFx0XFx0ZXJyID0gaWRwZl9kZXZfaW5pdChhZGFwdGVyLCBlbnQpO1xcbiAzMjk6XFx0XFx0aWYgKGVycikge1xcbiAzMzA6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiVW5leHBlY3RlZCBkZXYgSUQgMHgleCBpbiBpZHBmIHByb2JlXFxcXG5cXFwiLFxcbiAzMzE6XFx0XFx0XFx0XFx0ZW50LVxcdTAwM2VkZXZpY2UpO1xcbiAzMzI6XFx0XFx0XFx0Z290byBkZXN0cm95X3ZjX2V2ZW50X3dxO1xcbiAzMzM6XFx0XFx0fVxcbiAzMzQ6XFx0XFxuIDMzNTpcXHRcXHRlcnIgPSBpZHBmX2NmZ19odyhhZGFwdGVyKTtcXG4gMzM2OlxcdFxcdGlmIChlcnIpIHtcXG4gMzM3OlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGNvbmZpZ3VyZSBIVyBzdHJ1Y3R1cmUgZm9yIGFkYXB0ZXI6ICVkXFxcXG5cXFwiLFxcbiAzMzg6XFx0XFx0XFx0XFx0ZXJyKTtcXG4gMzM5OlxcdFxcdFxcdGdvdG8gZGVzdHJveV92Y19ldmVudF93cTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTQ6MDE6NDIuODY1NzI3NDA5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0OTMzNjQzMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggQW5hbHlzaXM6IGlkcGYgZHJpdmVyIGNsZWFudXAqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZGluZyBgcGNpX2Rpc2FibGVfcHRtKHBkZXYpYCBpbiB0d28gcGxhY2VzOiBgaWRwZl9yZW1vdmVgIGFuZCB0aGUgZXJyb3IgcGF0aCBvZiBgaWRwZl9wcm9iZWAuIFRoZSBpbnRlbnQgc2VlbXMgY2xlYXI6IGl0J3MgYSBtaW5vciBjbGVhbnVwIHRvIHByZXZlbnQgcmVzb3VyY2UgbGVha3Mgb3Igd2FybmluZ3Mgd2hlbiB0aGUgZHJpdmVyIHVubG9hZHMgb3IgZmFpbHMgdG8gbG9hZC4gRnVuY3Rpb25hbGx5LCBpdCdzIHByZXR0eSBzbWFsbC4gVGhlIGNvcmUgZXhlY3V0aW9uIGZsb3cgaXMgYWx0ZXJlZCBzaW5jZSB0aGlzIGZ1bmN0aW9uIGlzIG5vdyBjYWxsZWQgZHVyaW5nIHVubG9hZCBhbmQgb24gcHJvYmUgZmFpbHVyZSwgc28gdGhhdCdzIHNvbWV0aGluZyB0byBub3RlLlxuXG5UaGUgcXVlc3Rpb24sIGFzIGFsd2F5cywgaXMgd2hldGhlciBpdCdzIHdvcnRoIGZ1enppbmcuIEluaXRpYWxseSwgbXkgZ3V0IHNheXMgXCJubyxcIiBiZWNhdXNlIGZ1enppbmcgd291bGQgbW9zdGx5IGludm9sdmUgcnVubmluZyBgaWRwZl9wcm9iZWAgYW5kIGBpZHBmX3JlbW92ZWAsIHdoaWNoIHNlZW1zIGJhc2ljLiBCdXQgU3l6a2FsbGVyIGFscmVhZHkgaGl0cyB0aG9zZSBmdW5jdGlvbnMuIE5vIGNvbXBsZXggbG9naWMgaXMgaW50cm9kdWNlZCBlaXRoZXIuIEJ1dCwgdGhlIHByb21wdCBoYXMgYSBsaXN0IG9mIHRoaW5ncyAqbm90KiB0byBmdXp6LiBMZXQgbWUgcmV2aWV3IHRoYXQgbGlzdC5cblxuSG1tLCB0aGUgcGF0Y2ggKmRvZXNuJ3QqIG1vZGlmeSBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgbG9nZ2luZywgY29uc3RhbnRzIHRoYXQgZG9uJ3QgY2hhbmdlIGZsb3csIG9yIHVucmVhY2hhYmxlIGNvZGUuIFRoaXMgcGF0Y2ggKmRvZXMqIHRvdWNoIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyByZWxhdGVkIHRvIFBDSSBkcml2ZXIgY2xlYW51cC4gSSBjYW4gY29uZmlybSB0aGlzLCBhcyBQQ0kgZGV2aWNlcyBjYW4gYmUgZW11bGF0ZWQgYnkgc3l6a2FsbGVyJ3MgUENJIGZ1enplciwgd2hpY2ggbWFrZXMgdGhpcyBjb2RlIHBhdGggcmVhY2hhYmxlLiBTbyB0aGF0IG1lYW5zIEkgc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgLiBNeSBrZXkgZm9jdXMgc3ltYm9scyB3aWxsIGJlIGBpZHBmX3Byb2JlYCBhbmQgYGlkcGZfcmVtb3ZlYC4gQWxzbywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX0lEUEZgIGlzIGVuYWJsZWQuXG5cbkxldCBtZSBkb3VibGUtY2hlY2sgZm9yIG90aGVyIHJlbGV2YW50IGNvbmZpZ3MsIGp1c3QgaW4gY2FzZS4gT2gsIHJpZ2h0LCBgcGNpX2Rpc2FibGVfcHRtYCBpcyBkZWZpbmVkIGluIGBkcml2ZXJzL3BjaS9wY2llL3B0bS5jYC4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgaXMgYSBjb25maWcgZm9yIHRoYXQuIExldCBtZSBsb29rIGF0IHRoYXQgZmlsZS4uLmFuZCB0aGUgZnVuY3Rpb24uLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM4NDEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNDowMTo1MC4zNTkwOTQ2MTdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMzgzMDg4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUENJRV9QVE1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9wY2kvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvcGNpL3BjaWUvS2NvbmZpZz0xMjE9Y29uZmlnIFBDSUVfRFBDXFxuLS1cXG5kcml2ZXJzL3BjaS9wY2llL0tjb25maWctMTMwLVxcbmRyaXZlcnMvcGNpL3BjaWUvS2NvbmZpZzoxMzE6Y29uZmlnIFBDSUVfUFRNXFxuZHJpdmVycy9wY2kvcGNpZS9LY29uZmlnLTEzMi1cXHRib29sIFxcXCJQQ0kgRXhwcmVzcyBQcmVjaXNpb24gVGltZSBNZWFzdXJlbWVudCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNDowMTo1MC42ODI5MzE2NzRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY2MzU4NTc1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOlxuXG4qKkNoZWNraW5nIFBUTSBMb2dpYyBGdW5jdGlvbmFsaXR5KipcblxuUmlnaHQsIHNvIHRvIHByb3Blcmx5IHZldCB0aGlzIFBUTSBsb2dpYywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgUENJRV9QVE1gIGlzIGFjdHVhbGx5IGVuYWJsZWQuIE90aGVyd2lzZSwgdHJ5aW5nIHRvIHRlc3QgdGhlIHByb2Nlc3Mgd2lsbCBiZSBtZWFuaW5nbGVzcy4gSXQgbG9va3MgbGlrZSBgcGNpX2Rpc2FibGVfcHRtYCBpcyB0aGUgY3J1Y2lhbCBmdW5jdGlvbiB0byBmb2N1cyBvbiBoZXJlLlxuXG5UaGUgY2F0Y2ggaXMsIGlmIGBQQ0lFX1BUTWAgaXNuJ3QgZW5hYmxlZCwgYHBjaV9kaXNhYmxlX3B0bWAgKm1pZ2h0KiBqdXN0IGJlIGEgbm8tb3AsIG9yIHBlcmhhcHMgb25seSBjbGVhciBhIGZsYWcsIHdoaWNoIHdvdWxkbid0IGJlIHZlcnkgaGVscGZ1bCBmb3IgY29uZmlybWluZyB0aGUgcHJvcGVyIGZ1bmN0aW9uaW5nIG9mIHRoZSBlbnRpcmUgcGF0aHdheS4gU28sIGEgY3JpdGljYWwgY2hlY2sgaXMgbmVjZXNzYXJ5OiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGBwY2lfZGlzYWJsZV9wdG1gIGlzIGV2ZW4gZGVmaW5lZCBpbiB0aGUgY2FzZSB3aGVyZSBgUENJRV9QVE1gIGlzIGRpc2FibGVkLiBUaGF0J3MgdGhlIGtleSBwb2ludC4gSWYgaXQgKmlzKiBkZWZpbmVkLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgdGhvcm91Z2hseSB0byBrbm93IGhvdyB0byBwcm9jZWVkLiBJIHN1c3BlY3QgdGhpcyB3aWxsIHRlbGwgbWUgYSBsb3QgYWJvdXQgdGhlIGRlc2lnbiBjaG9pY2VzIHRoYXQgd2VyZSBtYWRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDgxOSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE0OjAxOjU0LjM0NjUxOTQzMloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMjgyMjczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9kaXNhYmxlX3B0bVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L3BjaS5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvcGNpLmg9MTk3OD1pbnQgcGNpX2VuYWJsZV9wdG0oc3RydWN0IHBjaV9kZXYgKmRldiwgdTggKmdyYW51bGFyaXR5KTtcXG5pbmNsdWRlL2xpbnV4L3BjaS5oOjE5Nzk6dm9pZCBwY2lfZGlzYWJsZV9wdG0oc3RydWN0IHBjaV9kZXYgKmRldik7XFxuaW5jbHVkZS9saW51eC9wY2kuaC0xOTgwLWJvb2wgcGNpZV9wdG1fZW5hYmxlZChzdHJ1Y3QgcGNpX2RldiAqZGV2KTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGNpLmg9MTk4Mj1zdGF0aWMgaW5saW5lIGludCBwY2lfZW5hYmxlX3B0bShzdHJ1Y3QgcGNpX2RldiAqZGV2LCB1OCAqZ3JhbnVsYXJpdHkpXFxuaW5jbHVkZS9saW51eC9wY2kuaC0xOTgzLXsgcmV0dXJuIC1FSU5WQUw7IH1cXG5pbmNsdWRlL2xpbnV4L3BjaS5oOjE5ODQ6c3RhdGljIGlubGluZSB2b2lkIHBjaV9kaXNhYmxlX3B0bShzdHJ1Y3QgcGNpX2RldiAqZGV2KSB7IH1cXG5pbmNsdWRlL2xpbnV4L3BjaS5oLTE5ODUtc3RhdGljIGlubGluZSBib29sIHBjaWVfcHRtX2VuYWJsZWQoc3RydWN0IHBjaV9kZXYgKmRldilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTQ6MDE6NTQuNTE3ODA3NzM1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg4Mzc1NzM3OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgSURQRiBEcml2ZXIgd2l0aCBQQ0ktUFRNKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHllcywgaXQncyBwcmV0dHkgY2xlYXIuICBJZiBgQ09ORklHX1BDSUVfUFRNYCBpcyBkaXNhYmxlZCwgdGhlbiB0aGlzIGNoYW5nZSBpcyBlZmZlY3RpdmVseSBhIG5vLW9wLCB3aGljaCBtZWFucyBpdCB3aWxsIG5vdCBhZmZlY3QgYW55dGhpbmcuIFNvLCB0aGUgcmlnaHQgdGhpbmcgdG8gZG8gaXMgdG8gaW5jbHVkZSBgUENJRV9QVE1gIGluIGBFbmFibGVDb25maWdzYC4gSXQncyBhIGNyaXRpY2FsIGNvbXBvbmVudCBmb3IgdGhlIGZ1bmN0aW9uYWxpdHkgaW4gdGhpcyBkaWZmLlxuXG5MZXQgbWUganVzdCBxdWlja2x5IHJldmlldyB0aGUgYWN0dWFsIHBhdGNoIGl0c2VsZiBhZ2FpbiB0byBjb25maXJtLiBBaCB5ZXMsIEkgc2VlOiBpdCdzIGFkZGluZyBgcGNpX2Rpc2FibGVfcHRtKHBkZXYpYCBpbiB0aGUgYGlkcGZfcmVtb3ZlYCBmdW5jdGlvbiBhbmQgcGxhY2luZyB0aGF0IGZ1bmN0aW9uIGNhbGxzIGluIG11bHRpcGxlIHBvaW50cyBvZiB0aGUgYGlkcGZfcHJvYmVgIGZ1bmN0aW9uIGFzIHdlbGwuIEkgcmVjb2duaXplIHRoaXMgZHJpdmVyIGFuZCB0aGVzZSBmdW5jdGlvbnMuIFRoZSBjb2RlIGNoYW5nZXMgc2VlbSBzb3VuZC5cblxuSXQncyBhIHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIHRoZSBQQ0kgaW50ZXJmYWNlLCBzbyBJIHNlZSB0aGlzIHdvdWxkIGJlIHJlYWNoYWJsZSBieSBhbnkgUENJIGZ1enppbmcuIFRoZSByZXF1aXJlZCBjb25maWdzIGFyZSBgSURQRmAgYW5kLCBhcyB3ZSd2ZSBhbHJlYWR5IGVzdGFibGlzaGVkLCBgUENJRV9QVE1gLiBJJ20gZ29pbmcgdG8gbm90ZSB0aGF0IHRoZSByZWxldmFudCBmdW5jdGlvbnMgYXJlIGBpZHBmX3Byb2JlYCBhbmQgYGlkcGZfcmVtb3ZlYC5cblxuTm93LCB3YWl0IGEgbWludXRlLCBJIHdhbnQgdG8gZG91YmxlLWNoZWNrLiBKdXN0IG1ha2luZyBzdXJl4oCmSXMgYElEUEZgIHRvdGFsbHkgaW5kZXBlbmRlbnQ/IERvZXMgYElEUEZgIGRlcGVuZCBvbiBhbnl0aGluZyBlbHNlIHRoYXQgSSBtaWdodCBiZSBtaXNzaW5nPyBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIEkgdW5kZXJzdGFuZCBhbnkgZGVwZW5kZW5jaWVzIGhlcmUuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTQxMCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNDowMjowMy4zNTUzODQxMzhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDg1ODE2MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElEUEZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy0zLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZzo0OmNvbmZpZyBJRFBGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTUtXFx0dHJpc3RhdGUgXFxcIkludGVsKFIpIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbiBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnPTE3PWlmIElEUEZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnOjE5OmNvbmZpZyBJRFBGX1NJTkdMRVFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctMjAtXFx0Ym9vbCBcXFwiaWRwZiBzaW5nbGVxIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE0OjAyOjA0LjkwMzk3MTIzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk5NjUzNjg0MDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGUgbWF0dGVyOlxuXG4qKkFuYWx5emluZyB0aGUgSW50ZWwgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIEludGVsIEV0aGVybmV0IGRyaXZlci4gVG8gZG8gdGhhdCwgSSdtIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZSBzcGVjaWZpY2FsbHkgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9gLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBzaG91bGQgYmUgZGVmaW5lZC4gQnkgZ29pbmcgdGhyb3VnaCB0aGlzIGZpbGUsIEkgY2FuIGJ1aWxkIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0J3MgcmVxdWlyZWQgZm9yIHRoaXMgZHJpdmVyIHRvIGZ1bmN0aW9uIGNvcnJlY3RseSB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLCBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gTGV0J3Mgc2VlIHdoYXQgd2UgZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY1ODYsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNDowMzo0NC41NTc2NTc3N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCMgQ29weXJpZ2h0IChDKSAyMDI0IEludGVsIENvcnBvcmF0aW9uXFxuICAgMzpcXHRcXG4gICA0OlxcdGNvbmZpZyBJRFBGXFxuICAgNTpcXHRcXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIFN1cHBvcnRcXFwiXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIFBDSV9NU0lcXG4gICA3OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gICA4OlxcdFxcdHNlbGVjdCBESU1MSUJcXG4gICA5OlxcdFxcdHNlbGVjdCBMSUJFVEhfWERQXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEludGVsKFIpIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvblxcbiAgMTI6XFx0XFx0ICBkZXZpY2VzLlxcbiAgMTM6XFx0XFxuICAxNDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcXG4gIDE1OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgaWRwZi5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0aWYgSURQRlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgSURQRl9TSU5HTEVRXFxuICAyMDpcXHRcXHRib29sIFxcXCJpZHBmIHNpbmdsZXEgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTQ6MDM6NDQuNTU3NzIwOFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzkwOTE1NTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGhpcyBQYXRjaDogQSBTb3VuZCBEZWNpc2lvbioqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0cyBpbXBsaWNhdGlvbnMuIFRoZSBkZXBlbmRlbmNpZXMgYXJlIGBQQ0lfTVNJYCBhbmQgYFBUUF8xNTg4X0NMT0NLX09QVElPTkFMYCwgYW5kIHNpbmNlIGBQQ0lfTVNJYCBpcyB0eXBpY2FsbHkgZW5hYmxlZCwgdGhlIGtleSBjb25maWd1cmF0aW9ucyB0byBmb2N1cyBvbiBhcmUgYElEUEZgIGFuZCBgUENJRV9QVE1gLiBJIHF1aWNrbHkgY2hlY2tlZCBpZiB0aGVyZSB3ZXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWdzLCBidXQgbm8sIHRob3NlIGFyZSB0aGUgbWFpbiBvbmVzLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IHNob3VsZCB3ZSBmdXp6IHRoaXM/IExldCdzIGJyZWFrIGl0IGRvd24uIEl04oCZcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBhIHJlc291cmNlIGxlYWsuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIENydWNpYWxseSwgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHdpdGhpbiB0aGUgUENJIGRyaXZlci4gQW5kLCB3ZSBjYW4gbGV2ZXJhZ2Ugc3l6a2FsbGVyJ3MgUENJIGZ1enplciB0byBleGVyY2lzZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIEdpdmVuIGFsbCB0aGF0LCBgV29ydGhGdXp6aW5nPXRydWVgIGlzIGEgZGVmaW5pdGUgeWVzLlxuXG5UaGUgY29yZSByZWFzb25pbmcgaGVyZSBpcyB0aGF0IHRoZSBwYXRjaCByZWN0aWZpZXMgYSByZXNvdXJjZSBsZWFrIGJ5IGVuc3VyaW5nIGBwY2lfZGlzYWJsZV9wdG0oKWAgaXMgY2FsbGVkIGluIHRoZSBkcml2ZXIncyByZW1vdmUgYW5kIHByb2JlIGVycm9yIHBhdGhzLiBUaGlzIGNoYW5nZSBkaXJlY3RseSBpbXBhY3RzIHRoZSBJbnRlbCBJRFBGIFBDSSBkcml2ZXIgYW5kIGNhbiBiZSBlZmZlY3RpdmVseSB0ZXN0ZWQgdXNpbmcgYSBQQ0kgZGV2aWNlIGZ1enplci5cblxuVGhlIGNyaXRpY2FsIHN5bWJvbHMgSSdtIGZvY3VzaW5nIG9uIGFyZSBgaWRwZl9wcm9iZWAgYW5kIGBpZHBmX3JlbW92ZWAuIEFuZCwgb2YgY291cnNlLCB0aGUgbmVjZXNzYXJ5IGVuYWJsZW1lbnQgY29uZmlncyBhcmUgYElEUEZgIGFuZCBgUENJRV9QVE1gLiBGaW5hbGx5LCB0aW1lIHRvIHJ1biBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzA0NCwiT3V0cHV0VG9rZW5zIjoxMTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNDowMzo1MS45NDg2Mzk0NjJaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTIxNDMxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSURQRlwiLFxuICAgIFwiUENJRV9QVE1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZHBmX3Byb2JlXCIsXG4gICAgXCJpZHBmX3JlbW92ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBieSBlbnN1cmluZyBwY2lfZGlzYWJsZV9wdG0oKSBpcyBjYWxsZWQgZHVyaW5nIHRoZSBkcml2ZXIncyByZW1vdmUgYW5kIHByb2JlIGVycm9yIHBhdGhzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEludGVsIElEUEYgUENJIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCB0ZXN0ZWQgdXNpbmcgYSBQQ0kgZGV2aWNlIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJRFBGXCIsXG4gICAgXCJQQ0lFX1BUTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlkcGZfcHJvYmVcIixcbiAgICBcImlkcGZfcmVtb3ZlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGJ5IGVuc3VyaW5nIHBjaV9kaXNhYmxlX3B0bSgpIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGRyaXZlcidzIHJlbW92ZSBhbmQgcHJvYmUgZXJyb3IgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSW50ZWwgSURQRiBQQ0kgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgYW5kIHRlc3RlZCB1c2luZyBhIFBDSSBkZXZpY2UgZnV6emVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow4xxvj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-15 13:35:16 +0000 UTC FinishedAt: 2026-07-15 14:03:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "aa88278693cbfaf7a2acf961379973fbb63b165c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IDPF", "PCIE_PTM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "aa88278693cbfaf7a2acf961379973fbb63b165c", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IDPF", "PCIE_PTM" ], "series_id": "0df730f4-db2b-48f2-9f06-fd7ec71f88f5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "idpf_probe", "idpf_remove" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lEUEYmIzM0OywKICAgICYjMzQ7UENJRV9QVE0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZHBmX3Byb2JlJiMzNDssCiAgICAmIzM0O2lkcGZfcmVtb3ZlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBieSBlbnN1cmluZyBwY2lfZGlzYWJsZV9wdG0oKSBpcyBjYWxsZWQgZHVyaW5nIHRoZSBkcml2ZXImIzM5O3MgcmVtb3ZlIGFuZCBwcm9iZSBlcnJvciBwYXRocy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJbnRlbCBJRFBGIFBDSSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCBhbmQgdGVzdGVkIHVzaW5nIGEgUENJIGRldmljZSBmdXp6ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTQ6MDE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzOTg2NDRjYmQ4NjY4MzkwYTczYjEyYWE0Nzk4NDYwMDIzNDY0N2M0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMTQ6MDE6MDEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmNcbmluZGV4IDBkZDc0MWRjZmNkYjIxLi5mMDhjZTEzYzIwYWIwNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmNcbkBAIC0xNTksNiAmIzQzOzE1OSw3IEBAIHN0YXRpYyB2b2lkIGlkcGZfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZhZGFwdGVyLVx1MDAzZXF1ZXVlX2xvY2spO1xuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZhZGFwdGVyLVx1MDAzZXZjX2J1Zl9sb2NrKTtcbiBcbiYjNDM7XHRwY2lfZGlzYWJsZV9wdG0ocGRldik7XG4gXHRwY2lfc2V0X2RydmRhdGEocGRldiwgTlVMTCk7XG4gXHRrZnJlZShhZGFwdGVyKTtcbiB9XG5AQCAtMjY2LDcgJiM0MzsyNjcsNyBAQCBzdGF0aWMgaW50IGlkcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gXHRpZiAoZXJyKSB7XG4gXHRcdHBjaV9lcnIocGRldiwgXCYjMzQ7RE1BIGNvbmZpZ3VyYXRpb24gZmFpbGVkOiAlcGVcXG5cJiMzNDssIEVSUl9QVFIoZXJyKSk7XG4gXG4tXHRcdGdvdG8gZXJyX2ZyZWU7XG4mIzQzO1x0XHRnb3RvIGVycl9kaXNhYmxlX3B0bTtcbiBcdH1cbiBcbiBcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xuQEAgLTI3OSw3ICYjNDM7MjgwLDcgQEAgc3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFx0aWYgKCFhZGFwdGVyLVx1MDAzZWluaXRfd3EpIHtcbiBcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBpbml0IHdvcmtxdWV1ZVxcblwmIzM0Oyk7XG4gXHRcdGVyciA9IC1FTk9NRU07XG4tXHRcdGdvdG8gZXJyX2ZyZWU7XG4mIzQzO1x0XHRnb3RvIGVycl9kaXNhYmxlX3B0bTtcbiBcdH1cbiBcbiBcdGFkYXB0ZXItXHUwMDNlc2Vydl93cSA9IGFsbG9jX3dvcmtxdWV1ZShcJiMzNDslcy0lcy1zZXJ2aWNlXCYjMzQ7LFxuQEAgLTM2Niw2ICYjNDM7MzY3LDggQEAgc3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFx0ZGVzdHJveV93b3JrcXVldWUoYWRhcHRlci1cdTAwM2VzZXJ2X3dxKTtcbiBlcnJfc2Vydl93cV9hbGxvYzpcbiBcdGRlc3Ryb3lfd29ya3F1ZXVlKGFkYXB0ZXItXHUwMDNlaW5pdF93cSk7XG4mIzQzO2Vycl9kaXNhYmxlX3B0bTpcbiYjNDM7XHRwY2lfZGlzYWJsZV9wdG0ocGRldik7XG4gZXJyX2ZyZWU6XG4gXHRrZnJlZShhZGFwdGVyKTtcbiBcdHJldHVybiBlcnI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTQ6MDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SURQRiYjMzQ7LAogICAgJiMzNDtQQ0lFX1BUTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lkcGZfcHJvYmUmIzM0OywKICAgICYjMzQ7aWRwZl9yZW1vdmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGJ5IGVuc3VyaW5nIHBjaV9kaXNhYmxlX3B0bSgpIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGRyaXZlciYjMzk7cyByZW1vdmUgYW5kIHByb2JlIGVycm9yIHBhdGhzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEludGVsIElEUEYgUENJIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCB0ZXN0ZWQgdXNpbmcgYSBQQ0kgZGV2aWNlIGZ1enplci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzk4NjQ0Y2JkODY2ODM5MGE3M2IxMmFhNDc5ODQ2MDAyMzQ2NDdjNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDE1IDE0OjAxOjAxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMKaW5kZXggMGRkNzQxZGNmY2RiMjEuLmYwOGNlMTNjMjBhYjA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMKQEAgLTE1OSw2ICYjNDM7MTU5LDcgQEAgc3RhdGljIHZvaWQgaWRwZl9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiAJbXV0ZXhfZGVzdHJveSgmYW1wO2FkYXB0ZXItJmd0O3F1ZXVlX2xvY2spOwogCW11dGV4X2Rlc3Ryb3koJmFtcDthZGFwdGVyLSZndDt2Y19idWZfbG9jayk7CiAKJiM0MzsJcGNpX2Rpc2FibGVfcHRtKHBkZXYpOwogCXBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTsKIAlrZnJlZShhZGFwdGVyKTsKIH0KQEAgLTI2Niw3ICYjNDM7MjY3LDcgQEAgc3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KQogCWlmIChlcnIpIHsKIAkJcGNpX2VycihwZGV2LCAmIzM0O0RNQSBjb25maWd1cmF0aW9uIGZhaWxlZDogJXBlXG4mIzM0OywgRVJSX1BUUihlcnIpKTsKIAotCQlnb3RvIGVycl9mcmVlOwomIzQzOwkJZ290byBlcnJfZGlzYWJsZV9wdG07CiAJfQogCiAJcGNpX3NldF9tYXN0ZXIocGRldik7CkBAIC0yNzksNyAmIzQzOzI4MCw3IEBAIHN0YXRpYyBpbnQgaWRwZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCkKIAlpZiAoIWFkYXB0ZXItJmd0O2luaXRfd3EpIHsKIAkJZGV2X2VycihkZXYsICYjMzQ7RmFpbGVkIHRvIGFsbG9jYXRlIGluaXQgd29ya3F1ZXVlXG4mIzM0Oyk7CiAJCWVyciA9IC1FTk9NRU07Ci0JCWdvdG8gZXJyX2ZyZWU7CiYjNDM7CQlnb3RvIGVycl9kaXNhYmxlX3B0bTsKIAl9CiAKIAlhZGFwdGVyLSZndDtzZXJ2X3dxID0gYWxsb2Nfd29ya3F1ZXVlKCYjMzQ7JXMtJXMtc2VydmljZSYjMzQ7LApAQCAtMzY2LDYgJiM0MzszNjcsOCBAQCBzdGF0aWMgaW50IGlkcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCiAJZGVzdHJveV93b3JrcXVldWUoYWRhcHRlci0mZ3Q7c2Vydl93cSk7CiBlcnJfc2Vydl93cV9hbGxvYzoKIAlkZXN0cm95X3dvcmtxdWV1ZShhZGFwdGVyLSZndDtpbml0X3dxKTsKJiM0MztlcnJfZGlzYWJsZV9wdG06CiYjNDM7CXBjaV9kaXNhYmxlX3B0bShwZGV2KTsKIGVycl9mcmVlOgogCWtmcmVlKGFkYXB0ZXIpOwogCXJldHVybiBlcnI7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMTQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgYGlkcGZgIERyaXZlcjogQSBQcmVsaW1pbmFyeSBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBzZWVtcyBsaWtlIGl0JiMzOTtzIGFkZGluZyBgcGNpX2Rpc2FibGVfcHRtKHBkZXYpO2AgaW4gdGhlIGBpZHBmX3JlbW92ZWAgZnVuY3Rpb24gYW5kIHRoZSBlcnJvciBwYXRoIG9mIGBpZHBmX3Byb2JlYCB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIHdvcnRoIGZ1enppbmc/JiMzNDsgVGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyB0aGUgYGlkcGZgIGRyaXZlciwgd2hpY2ggZnJvbSBpdHMgbmFtZSDigJMgJiMzNDtJbnRlbCBJbmZyYXN0cnVjdHVyZSBEYXRhIFBsYW5lIEZ1bmN0aW9uJiMzNDsg4oCTIGFuZCBsb2NhdGlvbiwgYXBwZWFycyB0byBiZSBhbiBJbnRlbCBQQ0kgZGV2aWNlIGRyaXZlci4KClRoZSBQQ0kgYXNwZWN0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuIEhvdyBlYXNpbHkgY2FuIHRoaXMgYmUgdGFyZ2V0ZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gR2VuZXJhbGx5LCBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVycyBhcmUgdHJpY2t5IHRvIHJlYWNoIHdpdGhvdXQgYW4gZW11bGF0b3IuIFNvLCBpcyB0aGVyZSBhbiBlbXVsYXRvciBmb3IgYGlkcGZgPyBUaGF0JiMzOTtzIHRoZSBxdWVzdGlvbiBJIG5lZWQgdG8gYW5zd2VyLiBJcyB0aGlzIGEgdmlydHVhbCBkZXZpY2Ugb3Igc29tZXRoaW5nIG1lYW50IGZvciBwaHlzaWNhbCBoYXJkd2FyZT8gVGltZSB0byBkbyBzb21lIGRpZ2dpbmcuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgc2ltcGxlIGdyZXAgZm9yICYjMzQ7aWRwZiYjMzQ7IGFuZCBzZWUgd2hhdCBraW5kIG9mIGNvbnRleHQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gS25vd2luZyB0aGUgZXhhY3QgbmF0dXJlIG9mIHRoaXMgZGV2aWNlIGlzIGNyaXRpY2FsIHRvIGtub3dpbmcgaWYgdGhpcyBwYXRjaCBtZXJpdHMgZm9jdXNlZCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lkcGYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTEwNDcgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZz00PWNvbmZpZyBJRFBGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTE0LVx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc6MTU6XHQgIHdpbGwgYmUgY2FsbGVkIGlkcGYuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctMTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnPTE5PWNvbmZpZyBJRFBGX1NJTkdMRVFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZzoyMDpcdGJvb2wgXCYjMzQ7aWRwZiBzaW5nbGVxIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy0yMS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0lEUEYpICYjNDM7PSBpZHBmLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGUtNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6ODppZHBmLXkgOj0gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6OTpcdGlkcGZfY29udHJvbHEub1x0XHRcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZToxMDpcdGlkcGZfY29udHJvbHFfc2V0dXAub1x0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6MTE6XHRpZHBmX2Rldi5vXHRcdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjEyOlx0aWRwZl9ldGh0b29sLm9cdFx0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6MTM6XHRpZHBmX2lkYy5vXHRcdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjE0Olx0aWRwZl9saWIub1x0XHRcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZToxNTpcdGlkcGZfbWFpbi5vXHRcdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjE2Olx0aWRwZl90eHJ4Lm9cdFx0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6MTc6XHRpZHBmX3ZpcnRjaG5sLm8gXHRcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZToxODpcdGlkcGZfdmZfZGV2Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGUtMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjIwOmlkcGYtJChDT05GSUdfSURQRl9TSU5HTEVRKVx0JiM0Mzs9IGlkcGZfc2luZ2xlcV90eHJ4Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGUtMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjIyOmlkcGYtJChDT05GSUdfUFRQXzE1ODhfQ0xPQ0spXHQmIzQzOz0gaWRwZl9wdHAub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZToyMzppZHBmLSQoQ09ORklHX1BUUF8xNTg4X0NMT0NLKVx0JiM0Mzs9IGlkcGZfdmlydGNobmxfcHRwLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGUtMjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjI1OmlkcGYteVx0XHRcdFx0JiM0Mzs9IHhkcC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjI2OmlkcGYteVx0XHRcdFx0JiM0Mzs9IHhzay5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNy0vKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4OnN0cnVjdCBpZHBmX2FkYXB0ZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo5OnN0cnVjdCBpZHBmX3Zwb3J0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTA6c3RydWN0IGlkcGZfdnBvcnRfbWF4X3E7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoxMTpzdHJ1Y3QgaWRwZl9xX3ZlY19yc3JjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTI6c3RydWN0IGlkcGZfcnNzX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yNC0jaW5jbHVkZSBcdTAwM2NsaW51eC9uZXQvaW50ZWwvaWlkY19yZG1hLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjI1OiNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldC9pbnRlbC9paWRjX3JkbWFfaWRwZi5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI3LSNpbmNsdWRlIFwmIzM0O3ZpcnRjaG5sMi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyODojaW5jbHVkZSBcJiMzNDtpZHBmX3R4cnguaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6Mjk6I2luY2x1ZGUgXCYjMzQ7aWRwZl9jb250cm9scS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01Ni0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjU3OiAqIHN0cnVjdCBpZHBmX21hY19maWx0ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU4LSAqIEBsaXN0OiBsaXN0IG1lbWJlciBmaWVsZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjM6c3RydWN0IGlkcGZfbWFjX2ZpbHRlciB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02NC1cdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjcxOiAqIGVudW0gaWRwZl9zdGF0ZSAtIFN0YXRlIG1hY2hpbmUgdG8gaGFuZGxlIGJyaW5nIHVwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03Mi0gKiBAX19JRFBGX1ZFUl9DSEVDSzogTmVnb3RpYXRlIHZpcnRjaG5sIHZlcnNpb25cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03Ni0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc3OmVudW0gaWRwZl9zdGF0ZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03OC1cdF9fSURQRl9WRVJfQ0hFQ0ssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODQtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4NTogKiBlbnVtIGlkcGZfZmxhZ3MgLSBIYXJkIHJlc2V0IGNhdXNlcy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg2LSAqIEBJRFBGX0hSX0ZVTkNfUkVTRVQ6IEhhcmQgcmVzZXQgd2hlbiBUeFJ4IHRpbWVvdXRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05My0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjk0OmVudW0gaWRwZl9mbGFncyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05NS1cdElEUEZfSFJfRlVOQ19SRVNFVCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xMDQtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoxMDU6ICogZW51bSBpZHBmX2NhcF9maWVsZCAtIE9mZnNldHMgaW50byBjYXBhYmlsaXRpZXMgc3RydWN0IGZvciBzcGVjaWZpYyBjYXBzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xMDYtICogQElEUEZfQkFTRV9DQVBTOiBnZW5lcmljIGJhc2UgY2FwYWJpbGl0aWVzXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTE3LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTE4OmVudW0gaWRwZl9jYXBfZmllbGQge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTE5LVx0SURQRl9CQVNFX0NBUFNcdFx0PSAtMSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xMzQtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoxMzU6ICogZW51bSBpZHBmX3Zwb3J0X3N0YXRlIC0gQ3VycmVudCB2cG9ydCBzdGF0ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTM2LSAqIEBJRFBGX1ZQT1JUX1VQOiBWcG9ydCBpcyB1cFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTEzOC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjEzOTplbnVtIGlkcGZfdnBvcnRfc3RhdGUge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTQwLVx0SURQRl9WUE9SVF9VUCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xNDQtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoxNDU6ICogc3RydWN0IGlkcGZfbmV0ZGV2X3ByaXYgLSBTdHJ1Y3QgdG8gc3RvcmUgdnBvcnQgYmFjayBwb2ludGVyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xNDYtICogQGFkYXB0ZXI6IEFkYXB0ZXIgYmFjayBwb2ludGVyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTUyLSAqIEB0eF9tYXhfYnVmczogTWF4IGJ1ZmZlcnMgdGhhdCBjYW4gYmUgdHJhbnNtaXR0ZWQgd2l0aCBzY2F0dGVyLWdhdGhlclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTUzOiAqIEBzdGF0ZTogU2VlIGVudW0gaWRwZl92cG9ydF9zdGF0ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTU0LSAqIEBuZXRzdGF0czogUGFja2V0IGFuZCBieXRlIHN0YXRzXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTU2LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTU3OnN0cnVjdCBpZHBmX25ldGRldl9wcml2IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjE1ODpcdHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoxNTk6XHRzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xNjAtXHR1MzIgdnBvcnRfaWQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTcwLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTcxOiAqIHN0cnVjdCBpZHBmX3Jlc2V0X3JlZyAtIFJlc2V0IHJlZ2lzdGVyIG9mZnNldHMvbWFza3NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTE3Mi0gKiBAcnN0YXQ6IFJlc2V0IHN0YXR1cyByZWdpc3RlclxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTE3NC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjE3NTpzdHJ1Y3QgaWRwZl9yZXNldF9yZWcge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTc2LVx0dm9pZCBfX2lvbWVtICpyc3RhdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xODAtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoxODE6ICogc3RydWN0IGlkcGZfdnBvcnRfbWF4X3EgLSBRdWV1ZSBsaW1pdHNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTE4Mi0gKiBAbWF4X3J4cTogTWF4aW11bSBudW1iZXIgb2YgUlggcXVldWVzIHN1cHBvcnRlZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTE4Ni0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjE4NzpzdHJ1Y3QgaWRwZl92cG9ydF9tYXhfcSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xODgtXHR1MTYgbWF4X3J4cTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xOTQtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoxOTU6ICogc3RydWN0IGlkcGZfcmVnX29wcyAtIERldmljZSBzcGVjaWZpYyByZWdpc3RlciBvcGVyYXRpb24gZnVuY3Rpb24gcG9pbnRlcnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTE5Ni0gKiBAY3RscV9yZWdfaW5pdDogTWFpbGJveCBjb250cm9sIHF1ZXVlIHJlZ2lzdGVyIGluaXRpYWxpemF0aW9uXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjAyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjAzOnN0cnVjdCBpZHBmX3JlZ19vcHMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjA0Olx0dm9pZCAoKmN0bHFfcmVnX2luaXQpKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMDU6XHRcdFx0ICAgICAgc3RydWN0IGlkcGZfY3RscV9jcmVhdGVfaW5mbyAqY3EpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjA2Olx0aW50ICgqaW50cl9yZWdfaW5pdCkoc3RydWN0IGlkcGZfdnBvcnQgKnZwb3J0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjA3Olx0XHRcdCAgICAgc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAqcnNyYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMDg6XHR2b2lkICgqbWJfaW50cl9yZWdfaW5pdCkoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMDk6XHR2b2lkICgqcmVzZXRfcmVnX2luaXQpKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjEwOlx0dm9pZCAoKnRyaWdnZXJfcmVzZXQpKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMTE6XHRcdFx0ICAgICAgZW51bSBpZHBmX2ZsYWdzIHRyaWdfY2F1c2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjEyOlx0dm9pZCAoKnB0cF9yZWdfaW5pdCkoY29uc3Qgc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMTMtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMjEtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMjI6ICogc3RydWN0IGlkcGZfZGV2X29wcyAtIERldmljZSBzcGVjaWZpYyBvcGVyYXRpb25zXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMjMtICogQHJlZ19vcHM6IFJlZ2lzdGVyIG9wZXJhdGlvbnNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMjYtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMjc6c3RydWN0IGlkcGZfZGV2X29wcyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMjg6XHRzdHJ1Y3QgaWRwZl9yZWdfb3BzIHJlZ19vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMzA6XHRpbnQgKCppZGNfaW5pdCkoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMzEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjM2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjM3OiAqIGVudW0gaWRwZl92cG9ydF9yZXNldF9jYXVzZSAtIFZwb3J0IHNvZnQgcmVzZXQgY2F1c2VzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMzgtICogQElEUEZfU1JfUV9DSEFOR0U6IFNvZnQgcmVzZXQgcXVldWUgY2hhbmdlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjQyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjQzOmVudW0gaWRwZl92cG9ydF9yZXNldF9jYXVzZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yNDQtXHRJRFBGX1NSX1FfQ0hBTkdFLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI1MC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjI1MTogKiBlbnVtIGlkcGZfdnBvcnRfZmxhZ3MgLSBWcG9ydCBmbGFnc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjUyLSAqIEBJRFBGX1ZQT1JUX0RFTF9RVUVVRVM6IFRvIHNlbmQgZGVsZXRlIHF1ZXVlcyBtZXNzYWdlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjU0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjU1OmVudW0gaWRwZl92cG9ydF9mbGFncyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yNTYtXHRJRFBGX1ZQT1JUX0RFTF9RVUVVRVMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjYwLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjYxOiAqIHN0cnVjdCBpZHBmX3RzdGFtcF9zdGF0cyAtIFR4IHRpbWVzdGFtcCBzdGF0aXN0aWNzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yNjItICogQHN0YXRzX3N5bmM6IFNlZSBzdHJ1Y3QgdTY0X3N0YXRzX3N5bmNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yNjctICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyNjg6c3RydWN0IGlkcGZfdHN0YW1wX3N0YXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI2OS1cdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBzdGF0c19zeW5jO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI3NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjI3NTpzdHJ1Y3QgaWRwZl9wb3J0X3N0YXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI3Ni1cdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBzdGF0c19zeW5jO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjI4ODpzdHJ1Y3QgaWRwZl9mc3RlZXJfZmx0ciB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yODktXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjkzLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6Mjk0OiAqIHN0cnVjdCBpZHBmX3FfdmVjX3JzcmMgLSBoYW5kbGUgZm9yIHF1ZXVlIGFuZCB2ZWN0b3IgcmVzb3VyY2VzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yOTUtICogQGRldjogZGV2aWNlIHBvaW50ZXIgZm9yIERNQSBtYXBwaW5nXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMzIyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MzIzOnN0cnVjdCBpZHBmX3FfdmVjX3JzcmMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMzI0LVx0c3RydWN0IGRldmljZVx0XHQqZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MzI1Olx0c3RydWN0IGlkcGZfcV92ZWN0b3JcdCpxX3ZlY3RvcnM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zMjYtXHR1MTZcdFx0XHQqcV92ZWN0b3JfaWR4cztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozMzI6XHRzdHJ1Y3QgaWRwZl90eHFfZ3JvdXBcdCp0eHFfZ3JwcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTMzMy1cdHUzMlx0XHRcdHR4cV9kZXNjX2NvdW50O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTM0Mi1cdHUzMlx0XHRcdHJ4cV9tb2RlbDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjM0MzpcdHN0cnVjdCBpZHBmX3J4cV9ncm91cFx0KnJ4cV9ncnBzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMzQ0LVx0dTE2XHRcdFx0bnVtX3J4cTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zNTItLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozNTM6ICogc3RydWN0IGlkcGZfdnBvcnQgLSBIYW5kbGUgZm9yIG5ldGRldmljZXMgYW5kIHF1ZXVlIHJlc291cmNlc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMzU0LSAqIEBkZmx0X3F2X3JzcmM6IGNvbnRhaW5zIGRlZmF1bHQgcXVldWUgYW5kIHZlY3RvciByZXNvdXJjZXNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zNjMtICpcdCAgICBhc3NvY2lhdGVkIG5ldGRldi5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjM2NDogKiBAZmxhZ3M6IFNlZSBlbnVtIGlkcGZfdnBvcnRfZmxhZ3NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTM2NS0gKiBAY29tcGxuX2NsZWFuX2J1ZGdldDogV29yayBidWRnZXQgZm9yIGNvbXBsZXRpb24gY2xlYW5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zODEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozODI6c3RydWN0IGlkcGZfdnBvcnQge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MzgzOlx0c3RydWN0IGlkcGZfcV92ZWNfcnNyYyBkZmx0X3F2X3JzcmM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozODQ6XHRzdHJ1Y3QgaWRwZl90eF9xdWV1ZSAqKnR4cXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zODUtXHR1MTYgbnVtX3R4cTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zOTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozOTI6XHRzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMzkzLVx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0MDU6XHRzdHJ1Y3QgaWRwZl9wb3J0X3N0YXRzIHBvcnRfc3RhdHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MDYtXHRib29sIGRlZmF1bHRfdnBvcnQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NDEwOlx0c3RydWN0IGlkcGZfcHRwX3Zwb3J0X3R4X3RzdGFtcF9jYXBzICp0eF90c3RhbXBfY2FwcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQxMS1cdHN0cnVjdCBrZXJuZWxfaHd0c3RhbXBfY29uZmlnIHRzdGFtcF9jb25maWc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MTItXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgdHN0YW1wX3Rhc2s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0MTM6XHRzdHJ1Y3QgaWRwZl90c3RhbXBfc3RhdHMgdHN0YW1wX3N0YXRzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDE0LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDE2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NDE3OiAqIGVudW0gaWRwZl91c2VyX2ZsYWdzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MTgtICogQF9fSURQRl9VU0VSX0ZMQUdfSFNQTElUOiBoZWFkZXIgc3BsaXQgc3RhdGVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MjItICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0MjM6ZW51bSBpZHBmX3VzZXJfZmxhZ3Mge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDI0LVx0X19JRFBGX1VTRVJfRkxBR19IU1BMSVQgPSAwVSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MzEtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0MzI6ICogc3RydWN0IGlkcGZfcnNzX2RhdGEgLSBBc3NvY2lhdGVkIFJTUyBkYXRhXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MzMtICogQHJzc19rZXlfc2l6ZTogU2l6ZSBvZiBSU1MgaGFzaCBrZXlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MzctICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0Mzg6c3RydWN0IGlkcGZfcnNzX2RhdGEge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDM5LVx0dTE2IHJzc19rZXlfc2l6ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00NDUtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0NDY6ICogc3RydWN0IGlkcGZfcV9jb2FsZXNjZSAtIFVzZXIgZGVmaW5lZCBjb2FsZXNjaW5nIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGZvclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDQ3LSAqXHRcdFx0ICAgYSBzaW5nbGUgcXVldWUuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDU0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NDU1OnN0cnVjdCBpZHBmX3FfY29hbGVzY2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDU2LVx0dTMyIHR4X2ludHJfbW9kZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00NjItLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0NjM6ICogc3RydWN0IGlkcGZfdnBvcnRfdXNlcl9jb25maWdfZGF0YSAtIFVzZXIgZGVmaW5lZCBjb25maWd1cmF0aW9uIHZhbHVlcyBmb3JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQ2NC0gKlx0XHRcdFx0XHRlYWNoIHZwb3J0LlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NDY1OiAqIEByc3NfZGF0YTogU2VlIHN0cnVjdCBpZHBmX3Jzc19kYXRhXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00NjYtICogQHFfY29hbGVzY2U6IEFycmF5IG9mIHBlciBxdWV1ZSBjb2FsZXNjaW5nIGRhdGFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00ODAtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0ODE6c3RydWN0IGlkcGZfdnBvcnRfdXNlcl9jb25maWdfZGF0YSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0ODI6XHRzdHJ1Y3QgaWRwZl9yc3NfZGF0YSByc3NfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjQ4MzpcdHN0cnVjdCBpZHBmX3FfY29hbGVzY2UgKnFfY29hbGVzY2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00ODQtXHR1MTYgbnVtX3JlcV90eF9xcztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00OTUtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0OTY6ICogZW51bSBpZHBmX3Zwb3J0X2NvbmZpZ19mbGFncyAtIFZwb3J0IGNvbmZpZyBmbGFnc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDk3LSAqIEBJRFBGX1ZQT1JUX1JFR19ORVRERVY6IFJlZ2lzdGVyIG5ldGRldlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTUwMC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjUwMTplbnVtIGlkcGZfdnBvcnRfY29uZmlnX2ZsYWdzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTUwMi1cdElEUEZfVlBPUlRfUkVHX05FVERFVixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01MDctLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1MDg6ICogc3RydWN0IGlkcGZfYXZhaWxfcXVldWVfaW5mb1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTA5LSAqIEBhdmFpbF9yeHE6IEF2YWlsYWJsZSBSWCBxdWV1ZXNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01MTUtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1MTY6c3RydWN0IGlkcGZfYXZhaWxfcXVldWVfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01MTctXHR1MTYgYXZhaWxfcnhxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTUyMy0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjUyNDogKiBzdHJ1Y3QgaWRwZl92ZWN0b3JfaW5mbyAtIFV0aWxpdHkgc3RydWN0dXJlIHRvIHBhc3MgZnVuY3Rpb24gYXJndW1lbnRzIGFzIGFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTUyNS0gKlx0XHRcdCAgICAgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTMxLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTMyOnN0cnVjdCBpZHBmX3ZlY3Rvcl9pbmZvIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTUzMy1cdHUxNiBudW1fcmVxX3ZlY3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTM5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTQwOiAqIHN0cnVjdCBpZHBmX3ZlY3Rvcl9saWZvIC0gU3RhY2sgdG8gbWFpbnRhaW4gdmVjdG9yIGluZGV4ZXMgdXNlZCBmb3IgdmVjdG9yXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01NDEtICpcdFx0XHQgICAgIGRpc3RyaWJ1dGlvbiBhbGdvcml0aG1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01NTUtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1NTY6c3RydWN0IGlkcGZfdmVjdG9yX2xpZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTU3LVx0dTE2IHRvcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01NjMtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1NjQ6ICogc3RydWN0IGlkcGZfcXVldWVfaWRfcmVnX2NodW5rIC0gaW5kaXZpZHVhbCBxdWV1ZSBJRCBhbmQgcmVnaXN0ZXIgY2h1bmtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU2NS0gKiBAcXRhaWxfcmVnX3N0YXJ0OiBxdWV1ZSB0YWlsIHJlZ2lzdGVyIG9mZnNldFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU3MC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjU3MTpzdHJ1Y3QgaWRwZl9xdWV1ZV9pZF9yZWdfY2h1bmsge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTcyLVx0dTY0IHF0YWlsX3JlZ19zdGFydDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01NzktLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1ODA6ICogc3RydWN0IGlkcGZfcXVldWVfaWRfcmVnX2luZm8gLSBxdWV1ZSBJRCBhbmQgcmVnaXN0ZXIgY2h1bmsgaW5mbyByZWNlaXZlZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTgxLSAqXHRcdFx0XHQgICBvdmVyIHRoZSBtYWlsYm94XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTg0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTg1OnN0cnVjdCBpZHBmX3F1ZXVlX2lkX3JlZ19pbmZvIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU4Ni1cdHUxNiBudW1fY2h1bmtzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTg3Olx0c3RydWN0IGlkcGZfcXVldWVfaWRfcmVnX2NodW5rICpxdWV1ZV9jaHVua3M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01ODgtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01OTAtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1OTE6ICogc3RydWN0IGlkcGZfdnBvcnRfY29uZmlnIC0gVnBvcnQgY29uZmlndXJhdGlvbiBkYXRhXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1OTI6ICogQHVzZXJfY29uZmlnOiBzZWUgc3RydWN0IGlkcGZfdnBvcnRfdXNlcl9jb25maWdfZGF0YVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTkzLSAqIEBtYXhfcTogTWF4aW11bSBwb3NzaWJsZSBxdWV1ZXNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01OTYtICogQGZsb3dfc3RlZXJfbGlzdF9sb2NrOiBMb2NrIHRvIHByb3RlY3QgZnN0ZWVyIGZpbHRlcnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjU5NzogKiBAZmxhZ3M6IFNlZSBlbnVtIGlkcGZfdnBvcnRfY29uZmlnX2ZsYWdzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01OTgtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1OTk6c3RydWN0IGlkcGZfdnBvcnRfY29uZmlnIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjYwMDpcdHN0cnVjdCBpZHBmX3Zwb3J0X3VzZXJfY29uZmlnX2RhdGEgdXNlcl9jb25maWc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2MDE6XHRzdHJ1Y3QgaWRwZl92cG9ydF9tYXhfcSBtYXhfcTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjYwMjpcdHN0cnVjdCBpZHBmX3F1ZXVlX2lkX3JlZ19pbmZvIHFpZF9yZWdfaW5mbztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYwMy1cdHNwaW5sb2NrX3QgbWFjX2ZpbHRlcl9saXN0X2xvY2s7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNjA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjA4OnN0cnVjdCBpZHBmX3ZjX3huX21hbmFnZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02MDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2MTA6I2RlZmluZSBpZHBmX2Zvcl9lYWNoX3Zwb3J0KGFkYXB0ZXIsIGl0ZXIpIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2MTE6XHRmb3IgKHN0cnVjdCBpZHBmX3Zwb3J0ICoqX18jI2l0ZXIgPSBcdTAwMjYoYWRhcHRlciktXHUwMDNldnBvcnRzWzBdLCBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNjEyLVx0ICAgICAqaXRlciA9IChhZGFwdGVyKS1cdTAwM2VtYXhfdnBvcnRzID8gKl9fIyNpdGVyIDogTlVMTDsgXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02MTctLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2MTg6ICogc3RydWN0IGlkcGZfYWRhcHRlciAtIERldmljZSBkYXRhIHN0cnVjdCBnZW5lcmF0ZWQgb24gcHJvYmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYxOS0gKiBAcGRldjogUENJIGRldmljZSBzdHJ1Y3QgZ2l2ZW4gb24gcHJvYmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02MjQtICogQHN0YXRlOiBJbml0IHN0YXRlIG1hY2hpbmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjYyNTogKiBAZmxhZ3M6IFNlZSBlbnVtIGlkcGZfZmxhZ3NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjYyNjogKiBAcmVzZXRfcmVnOiBTZWUgc3RydWN0IGlkcGZfcmVzZXRfcmVnXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02MjctICogQGh3OiBEZXZpY2UgYWNjZXNzIGRhdGFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02NjEtICogQHZjeG5fbW5ncjogVmlydGNobmwgdHJhbnNhY3Rpb24gbWFuYWdlclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjYyOiAqIEBkZXZfb3BzOiBTZWUgaWRwZl9kZXZfb3BzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02NjMtICogQGNkZXZfaW5mbzogSURDIGNvcmUgZGV2aWNlIGluZm8gcG9pbnRlclxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY3NC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjY3NTpzdHJ1Y3QgaWRwZl9hZGFwdGVyIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY3Ni1cdHN0cnVjdCBwY2lfZGV2ICpwZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY4MS1cdHUzMiBtYl93YWl0X2NvdW50O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjgyOlx0ZW51bSBpZHBmX3N0YXRlIHN0YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNjgzLVx0REVDTEFSRV9CSVRNQVAoZmxhZ3MsIElEUEZfRkxBR1NfTkJJVFMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6Njg0Olx0c3RydWN0IGlkcGZfcmVzZXRfcmVnIHJlc2V0X3JlZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjY4NTpcdHN0cnVjdCBpZHBmX2h3IGh3O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNjg2LVx0dTE2IG51bV9hdmFpbF9tc2l4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY5MS1cdHN0cnVjdCB2aXJ0Y2hubDJfYWxsb2NfdmVjdG9ycyAqcmVxX3ZlY19jaHVua3M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2OTI6XHRzdHJ1Y3QgaWRwZl9xX3ZlY3RvciBtYl92ZWN0b3I7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2OTM6XHRzdHJ1Y3QgaWRwZl92ZWN0b3JfbGlmbyB2ZWN0b3Jfc3RhY2s7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02OTQtXHRpcnFyZXR1cm5fdCAoKmlycV9tYl9oYW5kbGVyKShpbnQgaXJxLCB2b2lkICpkYXRhKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02OTYtXHR1MzIgdHhfdGltZW91dF9jb3VudDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjY5NzpcdHN0cnVjdCBpZHBmX2F2YWlsX3F1ZXVlX2luZm8gYXZhaWxfcXVldWVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6Njk4Olx0c3RydWN0IGlkcGZfdnBvcnQgKip2cG9ydHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02OTktXHRzdHJ1Y3QgbmV0X2RldmljZSAqKm5ldGRldnM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzA3Olx0c3RydWN0IGlkcGZfdnBvcnRfY29uZmlnICoqdnBvcnRfY29uZmlnO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzA4LVx0dTE2IG1heF92cG9ydHM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzIyLVx0c3RydWN0IHZpcnRjaG5sMl9nZXRfY2FwYWJpbGl0aWVzIGNhcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3MjM6XHRzdHJ1Y3QgaWRwZl92Y194bl9tYW5hZ2VyICp2Y3huX21uZ3I7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3MjU6XHRzdHJ1Y3QgaWRwZl9kZXZfb3BzIGRldl9vcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MjYtXHRzdHJ1Y3QgaWlkY19yZG1hX2NvcmVfZGV2X2luZm8gKmNkZXZfaW5mbztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3Mzc6XHRzdHJ1Y3QgaWRwZl9wdHAgKnB0cDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTczOC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc0MC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc0MTogKiBpZHBmX2lzX3F1ZXVlX21vZGVsX3NwbGl0IC0gY2hlY2sgaWYgcXVldWUgbW9kZWwgaXMgc3BsaXRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc0Mi0gKiBAcV9tb2RlbDogcXVldWUgbW9kZWwgc2luZ2xlIG9yIHNwbGl0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzQ1LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzQ2OnN0YXRpYyBpbmxpbmUgaW50IGlkcGZfaXNfcXVldWVfbW9kZWxfc3BsaXQodTE2IHFfbW9kZWwpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03NDcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc1MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc1MjpzdGF0aWMgaW5saW5lIGJvb2wgaWRwZl94ZHBfZW5hYmxlZChjb25zdCBzdHJ1Y3QgaWRwZl92cG9ydCAqdnBvcnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03NTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc1NzojZGVmaW5lIGlkcGZfaXNfY2FwX2VuYShhZGFwdGVyLCBmaWVsZCwgZmxhZykgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc1ODpcdGlkcGZfaXNfY2FwYWJpbGl0eV9lbmEoYWRhcHRlciwgZmFsc2UsIGZpZWxkLCBmbGFnKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzU5OiNkZWZpbmUgaWRwZl9pc19jYXBfZW5hX2FsbChhZGFwdGVyLCBmaWVsZCwgZmxhZykgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc2MDpcdGlkcGZfaXNfY2FwYWJpbGl0eV9lbmEoYWRhcHRlciwgdHJ1ZSwgZmllbGQsIGZsYWcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03NjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3NjI6Ym9vbCBpZHBmX2lzX2NhcGFiaWxpdHlfZW5hKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsIGJvb2wgYWxsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzYzOlx0XHRcdCAgICBlbnVtIGlkcGZfY2FwX2ZpZWxkIGZpZWxkLCB1NjQgZmxhZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03NjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03NjUtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3NjY6ICogaWRwZl9pc19yZG1hX2NhcF9lbmEgLSBEZXRlcm1pbmUgaWYgUkRNQSBpcyBzdXBwb3J0ZWRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc2Ny0gKiBAYWRhcHRlcjogcHJpdmF0ZSBkYXRhIHN0cnVjdFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc3MC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc3MTpzdGF0aWMgaW5saW5lIGJvb2wgaWRwZl9pc19yZG1hX2NhcF9lbmEoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc3Mi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3NzM6XHRyZXR1cm4gaWRwZl9pc19jYXBfZW5hKGFkYXB0ZXIsIElEUEZfT1RIRVJfQ0FQUywgVklSVENITkwyX0NBUF9SRE1BKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc3NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODE3LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODE4OiAqIGlkcGZfZ2V0X3Jlc2VydmVkX3ZlY3MgLSBHZXQgcmVzZXJ2ZWQgdmVjdG9yc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODE5LSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04MjAtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4MjE6c3RhdGljIGlubGluZSB1MTYgaWRwZl9nZXRfcmVzZXJ2ZWRfdmVjcyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODIyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04MjYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4Mjc6ICogaWRwZl9nZXRfcmVzZXJ2ZWRfcmRtYV92ZWNzIC0gR2V0IHJlc2VydmVkIFJETUEgdmVjdG9yc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODI4LSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODMxLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODMyOnN0YXRpYyBpbmxpbmUgdTE2IGlkcGZfZ2V0X3Jlc2VydmVkX3JkbWFfdmVjcyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODMzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04MzctLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4Mzg6ICogaWRwZl9nZXRfZGVmYXVsdF92cG9ydHMgLSBHZXQgZGVmYXVsdCBudW1iZXIgb2YgdnBvcnRzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04MzktICogQGFkYXB0ZXI6IHByaXZhdGUgZGF0YSBzdHJ1Y3RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg0MC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjg0MTpzdGF0aWMgaW5saW5lIHUxNiBpZHBmX2dldF9kZWZhdWx0X3Zwb3J0cyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODQyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NDYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4NDc6ICogaWRwZl9nZXRfbWF4X3Zwb3J0cyAtIEdldCBtYXggbnVtYmVyIG9mIHZwb3J0c1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODQ4LSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NDktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4NTA6c3RhdGljIGlubGluZSB1MTYgaWRwZl9nZXRfbWF4X3Zwb3J0cyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODUxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NTUtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4NTY6ICogaWRwZl9nZXRfbWF4X3R4X2J1ZnMgLSBHZXQgbWF4IHNjYXR0ZXItZ2F0aGVyIGJ1ZmZlcnMgc3VwcG9ydGVkIGJ5IHRoZSBkZXZpY2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg1Ny0gKiBAYWRhcHRlcjogcHJpdmF0ZSBkYXRhIHN0cnVjdFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODU4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODU5OnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGlkcGZfZ2V0X21heF90eF9idWZzKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NjAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg2NC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjg2NTogKiBpZHBmX2dldF9taW5fdHhfcGt0X2xlbiAtIEdldCBtaW4gcGFja2V0IGxlbmd0aCBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODY2LSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NjctICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4Njg6c3RhdGljIGlubGluZSB1OCBpZHBmX2dldF9taW5fdHhfcGt0X2xlbihzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODY5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NzUtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4NzY6ICogaWRwZl9nZXRfbWJ4X3JlZ19hZGRyIC0gR2V0IEJBUjAgbWFpbGJveCByZWdpc3RlciBhZGRyZXNzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NzctICogQGFkYXB0ZXI6IHByaXZhdGUgZGF0YSBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04ODEtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4ODI6c3RhdGljIGlubGluZSB2b2lkIF9faW9tZW0gKmlkcGZfZ2V0X21ieF9yZWdfYWRkcihzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODgzLVx0XHRcdFx0XHRcdCAgcmVzb3VyY2Vfc2l6ZV90IHJlZ19vZmZzZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODg4LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODg5OiAqIGlkcGZfZ2V0X3JzdGF0X3JlZ19hZGRyIC0gR2V0IEJBUjAgcnN0YXQgcmVnaXN0ZXIgYWRkcmVzc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODkwLSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODk0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODk1OnN0YXRpYyBpbmxpbmUgdm9pZCBfX2lvbWVtICppZHBmX2dldF9yc3RhdF9yZWdfYWRkcihzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODk2LVx0XHRcdFx0XHRcdCAgICByZXNvdXJjZV9zaXplX3QgcmVnX29mZnNldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05MDMtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo5MDQ6ICogaWRwZl9nZXRfcmVnX2FkZHIgLSBHZXQgQkFSMCByZWdpc3RlciBhZGRyZXNzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05MDUtICogQGFkYXB0ZXI6IHByaXZhdGUgZGF0YSBzdHJ1Y3Rcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05MDktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo5MTA6c3RhdGljIGlubGluZSB2b2lkIF9faW9tZW0gKmlkcGZfZ2V0X3JlZ19hZGRyKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05MTEtXHRcdFx0XHRcdCAgICAgIHJlc291cmNlX3NpemVfdCByZWdfb2Zmc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTEyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjkxMzpcdHN0cnVjdCBpZHBmX2h3ICpodyA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlaHc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05MTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05MTUtXHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgaHctXHUwMDNlbnVtX2xhbl9yZWdzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6OTE2Olx0XHRzdHJ1Y3QgaWRwZl9tbWlvX3JlZyAqcmVnaW9uID0gXHUwMDI2aHctXHUwMDNlbGFuX3JlZ3NbaV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05MTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTM5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6OTQwOiAqIGlkcGZfaXNfcmVzZXRfZGV0ZWN0ZWQgLSBjaGVjayBpZiB3ZSB3ZXJlIHJlc2V0IGF0IHNvbWUgcG9pbnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTk0MS0gKiBAYWRhcHRlcjogZHJpdmVyIHNwZWNpZmljIHByaXZhdGUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTQ0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6OTQ1OnN0YXRpYyBpbmxpbmUgYm9vbCBpZHBmX2lzX3Jlc2V0X2RldGVjdGVkKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05NDYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTk0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjk1MDpcdHJldHVybiAhKHJlYWRsKGlkcGZfZ2V0X21ieF9yZWdfYWRkcihhZGFwdGVyLCBhZGFwdGVyLVx1MDAzZWh3LmFycS1cdTAwM2VyZWcubGVuKSkgXHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05NTEtXHRcdCBhZGFwdGVyLVx1MDAzZWh3LmFycS1cdTAwM2VyZWcubGVuX21hc2spO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTk1NC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjk1NTogKiBpZHBmX2lzX3Jlc2V0X2luX3Byb2cgLSBjaGVjayBpZiByZXNldCBpcyBpbiBwcm9ncmVzc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTU2LSAqIEBhZGFwdGVyOiBkcml2ZXIgc3BlY2lmaWMgcHJpdmF0ZSBzdHJ1Y3R1cmVcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MjkyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBUaGlzIFBDSSBEcml2ZXIqKgoKT2theSwgc28gdGhpcyBpcyBhIFBDSSBkcml2ZXIuIE15IGZpcnN0IHRob3VnaHQgaXMgYWx3YXlzLCBpcyB0aGVyZSBhbiBlbXVsYXRvciBhdmFpbGFibGU/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IHdheSB0byBpbnRlcmFjdCB3aXRoIGl0LCBhbmQgZW11bGF0aW9uIGlzIHVzdWFsbHkgdGhlIGVhc2llc3Qgcm91dGUuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBwYXJ0aWN1bGFyIGRyaXZlciBoYXMgYSBrbm93biBlbXVsYXRvciBvciBpZiBpdCYjMzk7cyByZWFjaGFibGUgaW4gYSBHQ0UvUUVNVSBlbnZpcm9ubWVudC4gSXQmIzM5O3MgdXN1YWxseSB0aGUgY2FzZSB0aGF0IEludGVsIElEUEYsIG9yIHNpbWlsYXIgbmV0d29yayBkZXZpY2VzLCBpcyBhIHBoeXNpY2FsIHBpZWNlIG9mIGhhcmR3YXJlLiBIb3dldmVyLCBJIG5lZWQgdG8gcnVsZSBvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIGEgdmlydHVhbGl6ZWQgdmVyc2lvbi4gSSBrbm93IHRoZSBJRFBGIGlzIHVzdWFsbHkgYSBwaHlzaWNhbCBkZXZpY2UuIFRvIGdldCB0aGUgc3BlY2lmaWMgUENJIElEcyBmb3IgdGhpcyBkcml2ZXIsIEkgc2hvdWxkIGNoZWNrIHRoZSBzb3VyY2UgY29kZSwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZHBmX3BjaV90YmwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jPTI3PXN0YXRpYyBpbnQgaWRwZl9nZXRfZGV2aWNlX3R5cGUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy01MS0gKiBAYWRhcHRlcjogYWRhcHRlciB0byBpbml0aWFsaXplXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjUyOiAqIEBlbnQ6IGVudHJ5IGluIGlkcGZfcGNpX3RibFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy01My0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM9MTkwPXN0YXRpYyBpbnQgaWRwZl9jZmdfaHcoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTIzMS0gKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM6MjMyOiAqIEBlbnQ6IGVudHJ5IGluIGlkcGZfcGNpX3RibFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0yMzMtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jPTIzNj1zdGF0aWMgaW50IGlkcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zNzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjM3NzovKiBpZHBmX3BjaV90YmwgLSBQQ0kgRGV2IGlkcGYgSUQgVGFibGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMzc4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYzozNzk6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGlkcGZfcGNpX3RibFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zODAtXHR7IFBDSV9WREVWSUNFKElOVEVMLCBJRFBGX0RFVl9JRF9QRil9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMzg0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjM4NTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaWRwZl9wY2lfdGJsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMzg2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYz0zODc9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGlkcGZfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zODgtXHQubmFtZVx0XHRcdD0gS0JVSUxEX01PRE5BTUUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjM4OTpcdC5pZF90YWJsZVx0XHQ9IGlkcGZfcGNpX3RibCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMzkwLVx0LnByb2JlXHRcdFx0PSBpZHBmX3Byb2JlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MzQxCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNjc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBDSSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHJlbGF0ZWQgdG8gSW50ZWwmIzM5O3MgYGlkcGZgIGRyaXZlci4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhYm91dCBoYW5kbGluZyBQQ0kgZGV2aWNlcywgc3BlY2lmaWNhbGx5IHdpdGggdGhlIElEcyBgSURQRl9ERVZfSURfUEZgIGFuZCBgSURQRl9ERVZfSURfVkZgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICppcyB0aGlzIGRldmljZSBlbXVsYXRlZCBpbiBRRU1VPyogTm9wZSwgaXQmIzM5O3MgYWN0dWFsIGhhcmR3YXJlLiBCdXQgdGhlbiBJIHJlbWVtYmVyLCAqd2FpdCwgc3l6Ym90IHJlcG9ydGVkIGEgYnVnIGluIGBpZHBmX3Byb2JlYCo/CgpPa2F5LCAqaXMgc3l6Ym90IGZ1enppbmcgdGhpcyBkcml2ZXIgdmlhIHNvbWUgdmlydHVhbCBQQ0kgZnJhbWV3b3JrPyogSSBpbW1lZGlhdGVseSB0aGluayBhYm91dCBgc3l6X3BjaV9kZXZpY2VgLCBhbmQgSSByZWNhbGwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIGEgUENJIGZ1enplciwgd2hpY2ggaW5qZWN0cyBQQ0kgZGV2aWNlcyB2aWEgYHZmaW9gIG9yIHNpbWlsYXIgbWVjaGFuaXNtcy4gSXQgbWF5IGV2ZW4gdXNlIGEgZmFrZSBQQ0kgZGV2aWNlLiBTbywgc3l6a2FsbGVyICpjYW4qIGVtdWxhdGUgUENJIGRldmljZXMuCgpOb3csIHRoZSBzcGVjaWZpYyBwYXRjaCBhZGRzIGBwY2lfZGlzYWJsZV9wdG0ocGRldik7YCBpbiBib3RoIGBpZHBmX3JlbW92ZWAgYW5kIGluIHRoZSBlcnJvciBwYXRoIG9mIGBpZHBmX3Byb2JlYC4gU28sICppcyB0aGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2U/KiBZZXMsIGl0JiMzOTtzIGRpc2FibGluZyBQVE0gKFByZWNpc2lvbiBUaW1lIE1lYXN1cmVtZW50KS4gKklzIGl0IHdvcnRoIGZ1enppbmc/KiBUaGUgY2hhbmdlIGlzIGp1c3QgdGhhdCBzaW5nbGUgbGluZS4gSXQmIzM5O3MgYSBjbGVhbnVwLCBmaXhpbmcgYSBidWcgd2hlcmUgUFRNIHdhc24mIzM5O3QgYmVpbmcgZGlzYWJsZWQsIHdoaWNoIGxpa2VseSBjYXVzZWQgYSB3YXJuaW5nIG9yIHJlc291cmNlIGxlYWsuICpJcyB0aGVyZSBhbnkgY29tcGxleCBsb2dpYyB0byBmdXp6PyogTm8sIGl0JiMzOTtzIGEgc2ltcGxlIGBwY2lfZGlzYWJsZV9wdG0ocGRldilgIGNhbGwuCgpUaGUgY29tbWl0IG1lc3NhZ2Ugc2F5cyAmIzM0O3N5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldyYjMzQ7LCB3aGljaCB0ZWxscyBtZSB0aGF0IFN5emthbGxlciAqZGlkKiBmaW5kIGEgYnVnLiBIb3dldmVyLCBpZiB0aGUgcGF0Y2ggb25seSBhZGRzIGBwY2lfZGlzYWJsZV9wdG0ocGRldilgLCB0aGVyZSYjMzk7cyBubyBuZXcgbG9naWMgdG8gZnV6eiwganVzdCBhIHNpbXBsZSBmaXguICpEb2VzIGl0IGVuYWJsZSBhbnkgbmV3IGZlYXR1cmU/KiBOb3BlLiAqRG9lcyBpdCBhZGQgbmV3IHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYz8qIE5vcGUuICpEb2VzIGl0IG1vZGlmeSBleGVjdXRpb24gZmxvdz8qIEl0IGp1c3QgY2FsbHMgYSBmdW5jdGlvbiB0byBjbGVhbiB1cC4KCipTaG91bGQgd2UgZnV6eiBpdD8qIElmIGl0JiMzOTtzICpqdXN0KiBhIGNsZWFudXAgaW4gdGhlIGVycm9yIHBhdGgsIHRoZXJlIGFyZW4mIzM5O3Qgc3BlY2lmaWMgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLCBleGNlcHQgbWF5YmUgYGlkcGZfcHJvYmVgIGFuZCBgaWRwZl9yZW1vdmVgLCBidXQgdGhvc2UgYXJlIGFscmVhZHkgZnV6emVkIGJ5IHRoZSBQQ0kgZnV6emVyLCBhbnl3YXkuIFRoZXJlZm9yZSwgKmlzIGl0IHdvcnRoIGZ1enppbmc/KgoKSSByZWNhbGwgdGhlIHJ1bGU6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogLi4uIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuJiMzNDsgQnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IFBDSSBkZXZpY2VzIENBTiBiZSBlbXVsYXRlZCBieSBzeXprYWxsZXIgdXNpbmcgYHN5el9wY2lfZGV2aWNlYCEgU28sIHRoZSBxdWVzdGlvbiByZW1haW5zOiBkb2VzICp0aGlzIHBhdGNoKiBpbnRyb2R1Y2UgYW55IG5ldyBsb2dpYyB0byBiZSBoZWF2aWx5IGZ1enplZD8gTm8sIGl0IGp1c3QgYWRkcyBgcGNpX2Rpc2FibGVfcHRtKHBkZXYpYCBpbiB0aGUgY2xlYW51cCBwYXRoLiBTbywgbGV0JiMzOTtzIG5vdyBjaGVjayB3aGF0IGBwY2lfZGlzYWJsZV9wdG1gIGFjdHVhbGx5ICpkb2VzKi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZGlzYWJsZV9wdG0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3BjaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9wY2kvcGNpZS9wdG0uYz0yMjQ9RVhQT1JUX1NZTUJPTChwY2lfZW5hYmxlX3B0bSk7XG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jLTIyNS1cbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmM6MjI2OnN0YXRpYyB2b2lkIF9fcGNpX2Rpc2FibGVfcHRtKHN0cnVjdCBwY2lfZGV2ICpkZXYpXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jLTIyNy17XG4tLVxuZHJpdmVycy9wY2kvcGNpZS9wdG0uYy0yMzktLyoqXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jOjI0MDogKiBwY2lfZGlzYWJsZV9wdG0oKSAtIERpc2FibGUgUHJlY2lzaW9uIFRpbWUgTWVhc3VyZW1lbnRcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmMtMjQxLSAqIEBkZXY6IFBDSSBkZXZpY2Vcbi0tXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jLTI0NC0gKi9cbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmM6MjQ1OnZvaWQgcGNpX2Rpc2FibGVfcHRtKHN0cnVjdCBwY2lfZGV2ICpkZXYpXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jLTI0Ni17XG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jLTI0Ny1cdGlmIChkZXYtXHUwMDNlcHRtX2VuYWJsZWQpIHtcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmM6MjQ4Olx0XHRfX3BjaV9kaXNhYmxlX3B0bShkZXYpO1xuZHJpdmVycy9wY2kvcGNpZS9wdG0uYy0yNDktXHRcdGRldi1cdTAwM2VwdG1fZW5hYmxlZCA9IDA7XG4tLVxuZHJpdmVycy9wY2kvcGNpZS9wdG0uYy0yNTEtfVxuZHJpdmVycy9wY2kvcGNpZS9wdG0uYzoyNTI6RVhQT1JUX1NZTUJPTChwY2lfZGlzYWJsZV9wdG0pO1xuZHJpdmVycy9wY2kvcGNpZS9wdG0uYy0yNTMtXG4tLVxuZHJpdmVycy9wY2kvcGNpZS9wdG0uYz0yNTg9dm9pZCBwY2lfc3VzcGVuZF9wdG0oc3RydWN0IHBjaV9kZXYgKmRldilcbi0tXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jLTI2MC1cdGlmIChkZXYtXHUwMDNlcHRtX2VuYWJsZWQpXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jOjI2MTpcdFx0X19wY2lfZGlzYWJsZV9wdG0oZGV2KTtcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmMtMjYyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI3OAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDMzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciBhIFNpbXBsZSBDbGVhbnVwKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY2xlYW51cCBwYXRjaC4gVGhlIGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIGV2ZW4gd29ydGggdGhlIGVmZm9ydCBvZiBmdXp6aW5nPyYjMzQ7IFRoZSBwcm9tcHQgZ2l2ZXMgYSBjbGVhciBoZXVyaXN0aWM6IElmIGl0IHRvdWNoZXMgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIEkgbmVlZCB0byB2ZXJpZnkgaXRzIGV4ZWN1dGFiaWxpdHkgd2l0aCBjb2RlIHNlYXJjaCB0b29scyBhbmQgdGhlbiByZXR1cm4gYFdvcnRoRnV6emluZz10cnVlYC4KClRoaXMgb25lICpkb2VzKiB0b3VjaCBhIGRyaXZlciwgYGlkcGZgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGl0LiBUaGUgbmV4dCBxdWVzdGlvbiBpcyBleGVjdXRhYmlsaXR5LiBUaGFua2Z1bGx5LCBJIGtub3cgUENJIGZ1enppbmcgdGhyb3VnaCB0b29scyBsaWtlIHN5emthbGxlciBvZmZlcnMgYSBwYXRoLiBTbywgaXQgY2FuIGJlIGV4ZWN1dGVkLgoKTm93LCBkbyBhbnkgb2YgdGhlIHByb21wdCYjMzk7cyBleGNsdXNpb24gY3JpdGVyaWEgYXBwbHk/IERvY3VtZW50YXRpb24sIEtjb25maWcsIGRlY29yYXRpdmUgY2hhbmdlcyDigJMgbm9uZSBvZiB0aGF0IGhlcmUuIFRoZSBjb2RlIHBhdGggaXNuJiMzOTt0IGltcG9zc2libGUgdG8gcmVhY2ggaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gU3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIgZ2VuZXJhdGVzIHJhbmRvbSBQQ0kgZGV2aWNlcywgc28gZXZlbiBpZiBpdCBkb2VzbiYjMzk7dCAqc3BlY2lmaWNhbGx5KiBlbXVsYXRlIGBpZHBmYCwgaXQgY2FuIG1hdGNoICphbnkqIFBDSSBJRCwgdGhlcmVmb3JlIGl0IGNhbiBiZSByZWFjaGVkLgoKSG93ZXZlciwgdGhlIGNoYW5nZSBpdHNlbGYgaXMgZXh0cmVtZWx5IG1pbmltYWw7IGl0JiMzOTtzIGEgY2FsbCB0byBhIGNsZWFudXAgZnVuY3Rpb24uIElmIEkgc2F5IGBXb3J0aEZ1enppbmc9dHJ1ZWAsIEkgaGF2ZSB0byBqdXN0aWZ5IGl0LiBJIG5lZWQgdG8gZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0LiBXaGF0IHNwZWNpZmljIGZ1bmN0aW9ucyBhcmUgdG91Y2hlZCBieSB0aGlzIHBhdGNoPyBJdCYjMzk7cyBgaWRwZl9yZW1vdmVgIGFuZCBgaWRwZl9wcm9iZWAuIExldCYjMzk7cyBkaWcgaW50byB0aG9zZSBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lkcGZfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM9MTkwPXN0YXRpYyBpbnQgaWRwZl9jZmdfaHcoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTIyOS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM6MjMwOiAqIGlkcGZfcHJvYmUgLSBEZXZpY2UgaW5pdGlhbGl6YXRpb24gcm91dGluZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0yMzEtICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0yMzUtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjIzNjpzdGF0aWMgaW50IGlkcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTIzNy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYz0zODc9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGlkcGZfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMzg5LVx0LmlkX3RhYmxlXHRcdD0gaWRwZl9wY2lfdGJsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYzozOTA6XHQucHJvYmVcdFx0XHQ9IGlkcGZfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTM5MS1cdC5zcmlvdl9jb25maWd1cmVcdD0gaWRwZl9zcmlvdl9jb25maWd1cmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MzUyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhlc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgdGhlIGNvbnRleHQgaXMgbXkgYXJlYSBvZiBleHBlcnRpc2U6CgoqKkNoZWNraW5nIHRoZSBJRFBGIFNldHVwKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCBgaWRwZl9wcm9iZWAgYW5kIGBpZHBmX3JlbW92ZWAuIFRoZXNlIGFyZSBjbGVhcmx5IHJlbGF0ZWQgdG8gdGhlIElEUEYgbW9kdWxlLCBwcm9iYWJseSBpbml0aWFsaXphdGlvbiBhbmQgcmVtb3ZhbCByb3V0aW5lcyByZXNwZWN0aXZlbHkuIEZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyBxdWlja2x5IGNoZWNrIHRoZSBjb25maWd1cmF0aW9uLiBJcyB0aGVyZSBhbnkgZW5hYmxpbmcgY29uZmlndXJhdGlvbiBmb3IgdGhpcz8gWWVwLCB0aGVyZSBpdCBpczogYENPTkZJR19JRFBGYC4gRXhjZWxsZW50LiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4gTm93IEkga25vdyB3aGV0aGVyIHRoaXMgcGFydGljdWxhciBJRFBGIGZlYXR1cmUgaXMgaW50ZW5kZWQgdG8gYmUgY29tcGlsZWQgaW50byB0aGlzIGJ1aWxkLiBOb3cgSSBjYW4gbW92ZSBmb3J3YXJkIHdpdGggYW5hbHl6aW5nIHRoZSBgaWRwZl9wcm9iZWAgYW5kIGBpZHBmX3JlbW92ZWAgcm91dGluZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJRFBGJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy0zLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnOjQ6Y29uZmlnIElEUEZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy01LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwoUikgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc9MTc9aWYgSURQRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnOjE5OmNvbmZpZyBJRFBGX1NJTkdMRVFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy0yMC1cdGJvb2wgXCYjMzQ7aWRwZiBzaW5nbGVxIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTQ6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk3NzAKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIElEUEYgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgcmlnaHQgb2ZmIHRoZSBiYXQsIGl0IHNlZW1zIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGlzIGBJRFBGYC4gTm93LCB0aGUgcXVlc3Rpb24gaXM6IGlzIHRoaXMgd29ydGggdGhlIGVmZm9ydCBvZiBmdXp6aW5nPyBJdCYjMzk7cyBhIHNpbXBsZSBmaXgsIGEgcmVzb3VyY2UgbGVhaywgc3BlY2lmaWNhbGx5IHRoZSBQVE0gaXNuJiMzOTt0IGJlaW5nIGRpc2FibGVkLiBJZiBJJiMzOTttIHVuZGVyc3RhbmRpbmcgdGhpcyBjb3JyZWN0bHksIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgaGluZ2VzIGFyb3VuZCBgaWRwZl9wcm9iZWAgYW5kIGBpZHBmX3JlbW92ZWAuIFNpbmNlIHRoZSByb290IGNhdXNlIGlzIGEgc2ltcGxlIG1pc3NpbmcgZGlzYWJsZSBvZiBhIGZlYXR1cmUsIGFuZCBhc3N1bWluZyB0aGUgaXNzdWUgaXMgd2VsbCB1bmRlcnN0b29kIGFscmVhZHksIGJlY2F1c2UgaXQmIzM5O3MgYWxyZWFkeSBpbiB0aGUgcGlwZWxpbmUsIGl0JiMzOTtzIGxpa2VseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgZml4ZXMgYSBwcm9ibGVtLgoKQ29uc2lkZXJpbmcgdGhhdCB0aGUgcGF0Y2ggaGFzIGxpa2VseSBhbHJlYWR5IGJlZW4gZm91bmQgYnkgc3l6a2FsbGVyIG9yIGFub3RoZXIgdGVzdGVyLCBhbmQgdGhlIGZpeCBpcyBmdW5jdGlvbmFsbHkgc291bmQgKGRpc2FibGluZyBQVE0pLCBJJiMzOTttIGxlYW5pbmcgdG93YXJkcyB0aGUgY29uY2x1c2lvbiB0aGF0IHRoaXMgaXMgd29ydGh3aGlsZS4gTGV0JiMzOTtzIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgLiBNeSBwcmltYXJ5IGZvY3VzIHNob3VsZCBiZSBvbiB0aGUgYGlkcGZfcHJvYmVgIGFuZCBgaWRwZl9yZW1vdmVgIGZ1bmN0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgZm9yIG90aGVyIGNvbmZpZ3VyYXRpb25zIHRvIGJlIGFic29sdXRlbHkgc3VyZSwgYW5kIHRoZSBzcGVjaWZpYyBmaWxlIHRoaXMgcGF0Y2ggdG91Y2hlcyBpcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uY2AuIEJlZm9yZSBJIHByb2NlZWQsIEkgbmVlZCB0byBjaGVjayBmb3IgYW55IGAjaWZkZWZgIGRpcmVjdGl2ZXMgYXJvdW5kIHRoZSBjb2RlIEkmIzM5O20gaW52ZXN0aWdhdGluZyB0byBlbnN1cmUgSSBoYXZlIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gaW4gdGhpcyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNDA6XHRcdGRlc3Ryb3lfd29ya3F1ZXVlKGFkYXB0ZXItXHUwMDNlc3RhdHNfd3EpO1xuIDE0MTpcdFx0ZGVzdHJveV93b3JrcXVldWUoYWRhcHRlci1cdTAwM2V2Y19ldmVudF93cSk7XG4gMTQyOlx0XG4gMTQzOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhZGFwdGVyLVx1MDAzZW1heF92cG9ydHM7IGkmIzQzOyYjNDM7KSB7XG4gMTQ0Olx0XHRcdGlmICghYWRhcHRlci1cdTAwM2V2cG9ydF9jb25maWdbaV0pXG4gMTQ1Olx0XHRcdFx0Y29udGludWU7XG4gMTQ2Olx0XHRcdGtmcmVlKGFkYXB0ZXItXHUwMDNldnBvcnRfY29uZmlnW2ldLVx1MDAzZXVzZXJfY29uZmlnLnFfY29hbGVzY2UpO1xuIDE0NzpcdFx0XHRrZnJlZShhZGFwdGVyLVx1MDAzZXZwb3J0X2NvbmZpZ1tpXSk7XG4gMTQ4Olx0XHRcdGFkYXB0ZXItXHUwMDNldnBvcnRfY29uZmlnW2ldID0gTlVMTDtcbiAxNDk6XHRcdH1cbiAxNTA6XHRcdGtmcmVlKGFkYXB0ZXItXHUwMDNldnBvcnRfY29uZmlnKTtcbiAxNTE6XHRcdGFkYXB0ZXItXHUwMDNldnBvcnRfY29uZmlnID0gTlVMTDtcbiAxNTI6XHRcdGtmcmVlKGFkYXB0ZXItXHUwMDNlbmV0ZGV2cyk7XG4gMTUzOlx0XHRhZGFwdGVyLVx1MDAzZW5ldGRldnMgPSBOVUxMO1xuIDE1NDpcdFx0a2ZyZWUoYWRhcHRlci1cdTAwM2V2Y3huX21uZ3IpO1xuIDE1NTpcdFx0YWRhcHRlci1cdTAwM2V2Y3huX21uZ3IgPSBOVUxMO1xuIDE1NjpcdFxuIDE1NzpcdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZhZGFwdGVyLVx1MDAzZXZwb3J0X2N0cmxfbG9jayk7XG4gMTU4Olx0XHRtdXRleF9kZXN0cm95KFx1MDAyNmFkYXB0ZXItXHUwMDNldmVjdG9yX2xvY2spO1xuIDE1OTpcdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZhZGFwdGVyLVx1MDAzZXF1ZXVlX2xvY2spO1xuIDE2MDpcdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZhZGFwdGVyLVx1MDAzZXZjX2J1Zl9sb2NrKTtcbiAxNjE6XHRcbiAxNjI6XHRcdHBjaV9kaXNhYmxlX3B0bShwZGV2KTtcbiAxNjM6XHRcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTtcbiAxNjQ6XHRcdGtmcmVlKGFkYXB0ZXIpO1xuIDE2NTpcdH1cbiAxNjY6XHRcbiAxNjc6XHQvKipcbiAxNjg6XHQgKiBpZHBmX3NodXRkb3duIC0gUENJIGNhbGxiYWNrIGZvciBzaHV0dGluZyBkb3duIGRldmljZVxuIDE2OTpcdCAqIEBwZGV2OiBQQ0kgZGV2aWNlIGluZm9ybWF0aW9uIHN0cnVjdFxuIDE3MDpcdCAqL1xuIDE3MTpcdHN0YXRpYyB2b2lkIGlkcGZfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gMTcyOlx0e1xuIDE3MzpcdFx0c3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlciA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbiAxNzQ6XHRcbiAxNzU6XHRcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZhZGFwdGVyLVx1MDAzZXNlcnZfdGFzayk7XG4gMTc2Olx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2YWRhcHRlci1cdTAwM2V2Y19ldmVudF90YXNrKTtcbiAxNzc6XHRcdGlkcGZfdmNfY29yZV9kZWluaXQoYWRhcHRlcik7XG4gMTc4Olx0XHRpZHBmX2RlaW5pdF9kZmx0X21ieChhZGFwdGVyKTtcbiAxNzk6XHRcbiAxODA6XHRcdGlmIChzeXN0ZW1fc3RhdGUgPT0gU1lTVEVNX1BPV0VSX09GRilcbiAxODE6XHRcdFx0cGNpX3NldF9wb3dlcl9zdGF0ZShwZGV2LCBQQ0lfRDNob3QpO1xuIDE4MjpcdH1cbiAxODM6XHRcbiAxODQ6XHQvKipcbiAxODU6XHQgKiBpZHBmX2NmZ19odyAtIEluaXRpYWxpemUgSFcgc3RydWN0XG4gMTg2Olx0ICogQGFkYXB0ZXI6IGFkYXB0ZXIgdG8gc2V0dXAgaHcgc3RydWN0IGZvclxuIDE4NzpcdCAqXG4gMTg4Olx0ICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG9uIGZhaWx1cmVcbiAxODk6XHQgKi9cbiAxOTA6XHRzdGF0aWMgaW50IGlkcGZfY2ZnX2h3KHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gMTkxOlx0e1xuIDE5MjpcdFx0cmVzb3VyY2Vfc2l6ZV90IHJlc19zdGFydCwgbWJ4X3N0YXJ0LCByc3RhdF9zdGFydDtcbiAxOTM6XHRcdHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gYWRhcHRlci1cdTAwM2VwZGV2O1xuIDE5NDpcdFx0c3RydWN0IGlkcGZfaHcgKmh3ID0gXHUwMDI2YWRhcHRlci1cdTAwM2VodztcbiAxOTU6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuIDE5NjpcdFx0bG9uZyBsZW47XG4gMTk3Olx0XG4gMTk4Olx0XHRyZXNfc3RhcnQgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGRldiwgMCk7XG4gMTk5Olx0XG4gMjAwOlx0XHQvKiBNYXAgbWFpbGJveCBzcGFjZSBmb3IgdmlydGNobmwgY29tbXVuaWNhdGlvbiAqL1xuIDIwMTpcdFx0bWJ4X3N0YXJ0ID0gcmVzX3N0YXJ0ICYjNDM7IGFkYXB0ZXItXHUwMDNlZGV2X29wcy5zdGF0aWNfcmVnX2luZm9bMF0uc3RhcnQ7XG4gMjAyOlx0XHRsZW4gPSByZXNvdXJjZV9zaXplKFx1MDAyNmFkYXB0ZXItXHUwMDNlZGV2X29wcy5zdGF0aWNfcmVnX2luZm9bMF0pO1xuIDIwMzpcdFx0aHctXHUwMDNlbWJ4LnZhZGRyID0gZGV2bV9pb3JlbWFwKGRldiwgbWJ4X3N0YXJ0LCBsZW4pO1xuIDIwNDpcdFx0aWYgKCFody1cdTAwM2VtYngudmFkZHIpIHtcbiAyMDU6XHRcdFx0cGNpX2VycihwZGV2LCBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgQkFSMCBtYnggcmVnaW9uXFxuXCYjMzQ7KTtcbiAyMDY6XHRcbiAyMDc6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMjA4Olx0XHR9XG4gMjA5Olx0XHRody1cdTAwM2VtYnguYWRkcl9zdGFydCA9IGFkYXB0ZXItXHUwMDNlZGV2X29wcy5zdGF0aWNfcmVnX2luZm9bMF0uc3RhcnQ7XG4gMjEwOlx0XHRody1cdTAwM2VtYnguYWRkcl9sZW4gPSBsZW47XG4gMjExOlx0XG4gMjEyOlx0XHQvKiBNYXAgcnN0YXQgc3BhY2UgZm9yIHJlc2V0cyAqL1xuIDIxMzpcdFx0cnN0YXRfc3RhcnQgPSByZXNfc3RhcnQgJiM0MzsgYWRhcHRlci1cdTAwM2VkZXZfb3BzLnN0YXRpY19yZWdfaW5mb1sxXS5zdGFydDtcbiAyMTQ6XHRcdGxlbiA9IHJlc291cmNlX3NpemUoXHUwMDI2YWRhcHRlci1cdTAwM2VkZXZfb3BzLnN0YXRpY19yZWdfaW5mb1sxXSk7XG4gMjE1Olx0XHRody1cdTAwM2Vyc3RhdC52YWRkciA9IGRldm1faW9yZW1hcChkZXYsIHJzdGF0X3N0YXJ0LCBsZW4pO1xuIDIxNjpcdFx0aWYgKCFody1cdTAwM2Vyc3RhdC52YWRkcikge1xuIDIxNzpcdFx0XHRwY2lfZXJyKHBkZXYsIFwmIzM0O2ZhaWxlZCB0byBhbGxvY2F0ZSBCQVIwIHJzdGF0IHJlZ2lvblxcblwmIzM0Oyk7XG4gMjE4Olx0XG4gMjE5Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDIyMDpcdFx0fVxuIDIyMTpcdFx0aHctXHUwMDNlcnN0YXQuYWRkcl9zdGFydCA9IGFkYXB0ZXItXHUwMDNlZGV2X29wcy5zdGF0aWNfcmVnX2luZm9bMV0uc3RhcnQ7XG4gMjIyOlx0XHRody1cdTAwM2Vyc3RhdC5hZGRyX2xlbiA9IGxlbjtcbiAyMjM6XHRcbiAyMjQ6XHRcdGh3LVx1MDAzZWJhY2sgPSBhZGFwdGVyO1xuIDIyNTpcdFxuIDIyNjpcdFx0cmV0dXJuIDA7XG4gMjI3Olx0fVxuIDIyODpcdFxuIDIyOTpcdC8qKlxuIDIzMDpcdCAqIGlkcGZfcHJvYmUgLSBEZXZpY2UgaW5pdGlhbGl6YXRpb24gcm91dGluZVxuIDIzMTpcdCAqIEBwZGV2OiBQQ0kgZGV2aWNlIGluZm9ybWF0aW9uIHN0cnVjdFxuIDIzMjpcdCAqIEBlbnQ6IGVudHJ5IGluIGlkcGZfcGNpX3RibFxuIDIzMzpcdCAqXG4gMjM0Olx0ICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG9uIGZhaWx1cmVcbiAyMzU6XHQgKi9cbiAyMzY6XHRzdGF0aWMgaW50IGlkcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gMjM3Olx0e1xuIDIzODpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4gMjM5Olx0XHRzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTkzMwoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIGNoZWNraW5nIHRoZSByZXN0IG9mIGBpZHBmX3Byb2JlYCwgcmVuZGVyZWQgYXMgYSBmaXJzdC1wZXJzb24gYWNjb3VudCwgYXNzdW1pbmcgSSYjMzk7bSBhbHJlYWR5IGRlZXAgaW4gdGhlIHdlZWRzIG9mIHRoaXMgc3ViamVjdDoKCioqQW5hbHl6aW5nIHRoZSBSZW1haW5kZXIgb2YgYGlkcGZfcHJvYmVgKioKCkFscmlnaHQsIHNvIHdlJiMzOTt2ZSBsb29rZWQgYXQgdGhlIGluaXRpYWwgYXNwZWN0cyBvZiBgaWRwZl9wcm9iZWAsIGFuZCBub3cgaXQmIzM5O3MgdGltZSB0byB0aG9yb3VnaGx5IGV4YW1pbmUgdGhlIHJlbWFpbmluZyBwYXJ0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHksIHNvIHRoaXMgaXNuJiMzOTt0IGp1c3QgYWJvdXQgYSBjdXJzb3J5IGdsYW5jZS4gSSYjMzk7bSBnb2luZyB0byBjYXJlZnVsbHkgZGlzc2VjdCB3aGF0JiMzOTtzIGxlZnQsIG1ha2luZyBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55IGNyaXRpY2FsIGRldGFpbHMgdGhhdCBtaWdodCBpbXBhY3QgaXRzIG92ZXJhbGwgcGVyZm9ybWFuY2UsIHN0YWJpbGl0eSwgb3Igc2VjdXJpdHksIHBhcnRpY3VsYXJseSBpZiB0aGlzIGlzIHNvbWV0aGluZyBiZWluZyBhY3RpdmVseSBkZXBsb3llZC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIGVkZ2UgY2FzZXMgdGhhdCBoYXZlbiYjMzk7dCBiZWVuIGFkZHJlc3NlZCwgcG9zc2libGUgYXJlYXMgb2Ygb3B0aW1pemF0aW9uLCBhbmQgYW55IGluZGljYXRpb24gb2YgcG90ZW50aWFsIGJ1Z3Mgb3IgdnVsbmVyYWJpbGl0aWVzLiBNeSBmb2N1cyBpcyBvbiBlbnN1cmluZyBhIHJvYnVzdCBhbmQgcmVsaWFibGUgaW1wbGVtZW50YXRpb24uIEkmIzM5O2xsIGJlIGFza2luZyBteXNlbGYgcXVlc3Rpb25zOiBBcmUgdGhlcmUgYW55IGVycm9yIGhhbmRsaW5nIGdhcHM/IElzIHRoaXMgcGFydCBvZiB0aGUgY29kZSB0aHJlYWQtc2FmZT8gRG9lcyB0aGUgbG9naWMgaGVyZSBhZGhlcmUgdG8gdGhlIHN0YW5kYXJkcyBhbmQgYmVzdCBwcmFjdGljZXMgdGhhdCBhcmUgZXhwZWN0ZWQgZm9yIHRoaXMgY29udGV4dD8gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgY29kZSBpcyBib3RoIGZ1bmN0aW9uYWwgYW5kIHdlbGwtYXJjaGl0ZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI0MDpcdFx0aW50IGVycjtcbiAyNDE6XHRcbiAyNDI6XHRcdGFkYXB0ZXIgPSBremFsbG9jX29iaigqYWRhcHRlcik7XG4gMjQzOlx0XHRpZiAoIWFkYXB0ZXIpXG4gMjQ0Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDI0NTpcdFxuIDI0NjpcdFx0YWRhcHRlci1cdTAwM2VyZXFfdHhfc3BsaXRxID0gdHJ1ZTtcbiAyNDc6XHRcdGFkYXB0ZXItXHUwMDNlcmVxX3J4X3NwbGl0cSA9IHRydWU7XG4gMjQ4Olx0XG4gMjQ5Olx0XHRhZGFwdGVyLVx1MDAzZXBkZXYgPSBwZGV2O1xuIDI1MDpcdFx0ZXJyID0gcGNpbV9lbmFibGVfZGV2aWNlKHBkZXYpO1xuIDI1MTpcdFx0aWYgKGVycilcbiAyNTI6XHRcdFx0Z290byBlcnJfZnJlZTtcbiAyNTM6XHRcbiAyNTQ6XHRcdGVyciA9IHBjaW1fcmVxdWVzdF9yZWdpb24ocGRldiwgMCwgcGNpX25hbWUocGRldikpO1xuIDI1NTpcdFx0aWYgKGVycikge1xuIDI1NjpcdFx0XHRwY2lfZXJyKHBkZXYsIFwmIzM0O3BjaW1fcmVxdWVzdF9yZWdpb24gZmFpbGVkICVwZVxcblwmIzM0OywgRVJSX1BUUihlcnIpKTtcbiAyNTc6XHRcbiAyNTg6XHRcdFx0Z290byBlcnJfZnJlZTtcbiAyNTk6XHRcdH1cbiAyNjA6XHRcbiAyNjE6XHRcdGVyciA9IHBjaV9lbmFibGVfcHRtKHBkZXYsIE5VTEwpO1xuIDI2MjpcdFx0aWYgKGVycilcbiAyNjM6XHRcdFx0cGNpX2RiZyhwZGV2LCBcJiMzNDtQQ0llIFBUTSBpcyBub3Qgc3VwcG9ydGVkIGJ5IFBDSWUgYnVzL2NvbnRyb2xsZXJcXG5cJiMzNDspO1xuIDI2NDpcdFxuIDI2NTpcdFx0Lyogc2V0IHVwIGZvciBoaWdoIG9yIGxvdyBkbWEgKi9cbiAyNjY6XHRcdGVyciA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJlbnQoZGV2LCBETUFfQklUX01BU0soNjQpKTtcbiAyNjc6XHRcdGlmIChlcnIpIHtcbiAyNjg6XHRcdFx0cGNpX2VycihwZGV2LCBcJiMzNDtETUEgY29uZmlndXJhdGlvbiBmYWlsZWQ6ICVwZVxcblwmIzM0OywgRVJSX1BUUihlcnIpKTtcbiAyNjk6XHRcbiAyNzA6XHRcdFx0Z290byBlcnJfZGlzYWJsZV9wdG07XG4gMjcxOlx0XHR9XG4gMjcyOlx0XG4gMjczOlx0XHRwY2lfc2V0X21hc3RlcihwZGV2KTtcbiAyNzQ6XHRcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBhZGFwdGVyKTtcbiAyNzU6XHRcbiAyNzY6XHRcdGFkYXB0ZXItXHUwMDNlaW5pdF93cSA9IGFsbG9jX3dvcmtxdWV1ZShcJiMzNDslcy0lcy1pbml0XCYjMzQ7LFxuIDI3NzpcdFx0XHRcdFx0XHQgICBXUV9VTkJPVU5EIHwgV1FfTUVNX1JFQ0xBSU0sIDAsXG4gMjc4Olx0XHRcdFx0XHRcdCAgIGRldl9kcml2ZXJfc3RyaW5nKGRldiksXG4gMjc5Olx0XHRcdFx0XHRcdCAgIGRldl9uYW1lKGRldikpO1xuIDI4MDpcdFx0aWYgKCFhZGFwdGVyLVx1MDAzZWluaXRfd3EpIHtcbiAyODE6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBpbml0IHdvcmtxdWV1ZVxcblwmIzM0Oyk7XG4gMjgyOlx0XHRcdGVyciA9IC1FTk9NRU07XG4gMjgzOlx0XHRcdGdvdG8gZXJyX2Rpc2FibGVfcHRtO1xuIDI4NDpcdFx0fVxuIDI4NTpcdFxuIDI4NjpcdFx0YWRhcHRlci1cdTAwM2VzZXJ2X3dxID0gYWxsb2Nfd29ya3F1ZXVlKFwmIzM0OyVzLSVzLXNlcnZpY2VcJiMzNDssXG4gMjg3Olx0XHRcdFx0XHRcdCAgIFdRX1VOQk9VTkQgfCBXUV9NRU1fUkVDTEFJTSwgMCxcbiAyODg6XHRcdFx0XHRcdFx0ICAgZGV2X2RyaXZlcl9zdHJpbmcoZGV2KSxcbiAyODk6XHRcdFx0XHRcdFx0ICAgZGV2X25hbWUoZGV2KSk7XG4gMjkwOlx0XHRpZiAoIWFkYXB0ZXItXHUwMDNlc2Vydl93cSkge1xuIDI5MTpcdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIGFsbG9jYXRlIHNlcnZpY2Ugd29ya3F1ZXVlXFxuXCYjMzQ7KTtcbiAyOTI6XHRcdFx0ZXJyID0gLUVOT01FTTtcbiAyOTM6XHRcdFx0Z290byBlcnJfc2Vydl93cV9hbGxvYztcbiAyOTQ6XHRcdH1cbiAyOTU6XHRcbiAyOTY6XHRcdGFkYXB0ZXItXHUwMDNlbWJ4X3dxID0gYWxsb2Nfd29ya3F1ZXVlKFwmIzM0OyVzLSVzLW1ieFwmIzM0OywgV1FfVU5CT1VORCB8IFdRX0hJR0hQUkksXG4gMjk3Olx0XHRcdFx0XHRcdCAgMCwgZGV2X2RyaXZlcl9zdHJpbmcoZGV2KSxcbiAyOTg6XHRcdFx0XHRcdFx0ICBkZXZfbmFtZShkZXYpKTtcbiAyOTk6XHRcdGlmICghYWRhcHRlci1cdTAwM2VtYnhfd3EpIHtcbiAzMDA6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSBtYWlsYm94IHdvcmtxdWV1ZVxcblwmIzM0Oyk7XG4gMzAxOlx0XHRcdGVyciA9IC1FTk9NRU07XG4gMzAyOlx0XHRcdGdvdG8gZXJyX21ieF93cV9hbGxvYztcbiAzMDM6XHRcdH1cbiAzMDQ6XHRcbiAzMDU6XHRcdGFkYXB0ZXItXHUwMDNlc3RhdHNfd3EgPSBhbGxvY193b3JrcXVldWUoXCYjMzQ7JXMtJXMtc3RhdHNcJiMzNDssXG4gMzA2Olx0XHRcdFx0XHRcdCAgICBXUV9VTkJPVU5EIHwgV1FfTUVNX1JFQ0xBSU0sIDAsXG4gMzA3Olx0XHRcdFx0XHRcdCAgICBkZXZfZHJpdmVyX3N0cmluZyhkZXYpLFxuIDMwODpcdFx0XHRcdFx0XHQgICAgZGV2X25hbWUoZGV2KSk7XG4gMzA5Olx0XHRpZiAoIWFkYXB0ZXItXHUwMDNlc3RhdHNfd3EpIHtcbiAzMTA6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSB3b3JrcXVldWVcXG5cJiMzNDspO1xuIDMxMTpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIDMxMjpcdFx0XHRnb3RvIGVycl9zdGF0c193cV9hbGxvYztcbiAzMTM6XHRcdH1cbiAzMTQ6XHRcbiAzMTU6XHRcdGFkYXB0ZXItXHUwMDNldmNfZXZlbnRfd3EgPSBhbGxvY193b3JrcXVldWUoXCYjMzQ7JXMtJXMtdmNfZXZlbnRcJiMzNDssXG4gMzE2Olx0XHRcdFx0XHRcdCAgICAgICBXUV9VTkJPVU5EIHwgV1FfTUVNX1JFQ0xBSU0sIDAsXG4gMzE3Olx0XHRcdFx0XHRcdCAgICAgICBkZXZfZHJpdmVyX3N0cmluZyhkZXYpLFxuIDMxODpcdFx0XHRcdFx0XHQgICAgICAgZGV2X25hbWUoZGV2KSk7XG4gMzE5Olx0XHRpZiAoIWFkYXB0ZXItXHUwMDNldmNfZXZlbnRfd3EpIHtcbiAzMjA6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBhbGxvY2F0ZSB2aXJ0Y2hubCBldmVudCB3b3JrcXVldWVcXG5cJiMzNDspO1xuIDMyMTpcdFx0XHRlcnIgPSAtRU5PTUVNO1xuIDMyMjpcdFx0XHRnb3RvIGVycl92Y19ldmVudF93cV9hbGxvYztcbiAzMjM6XHRcdH1cbiAzMjQ6XHRcbiAzMjU6XHRcdC8qIHNldHVwIG1zZ2x2bCAqL1xuIDMyNjpcdFx0YWRhcHRlci1cdTAwM2Vtc2dfZW5hYmxlID0gbmV0aWZfbXNnX2luaXQoLTEsIElEUEZfQVZBSUxfTkVUSUZfTSk7XG4gMzI3Olx0XG4gMzI4Olx0XHRlcnIgPSBpZHBmX2Rldl9pbml0KGFkYXB0ZXIsIGVudCk7XG4gMzI5Olx0XHRpZiAoZXJyKSB7XG4gMzMwOlx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O1VuZXhwZWN0ZWQgZGV2IElEIDB4JXggaW4gaWRwZiBwcm9iZVxcblwmIzM0OyxcbiAzMzE6XHRcdFx0XHRlbnQtXHUwMDNlZGV2aWNlKTtcbiAzMzI6XHRcdFx0Z290byBkZXN0cm95X3ZjX2V2ZW50X3dxO1xuIDMzMzpcdFx0fVxuIDMzNDpcdFxuIDMzNTpcdFx0ZXJyID0gaWRwZl9jZmdfaHcoYWRhcHRlcik7XG4gMzM2Olx0XHRpZiAoZXJyKSB7XG4gMzM3Olx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtGYWlsZWQgdG8gY29uZmlndXJlIEhXIHN0cnVjdHVyZSBmb3IgYWRhcHRlcjogJWRcXG5cJiMzNDssXG4gMzM4Olx0XHRcdFx0ZXJyKTtcbiAzMzk6XHRcdFx0Z290byBkZXN0cm95X3ZjX2V2ZW50X3dxO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzg0MQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQ1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBBbmFseXNpczogaWRwZiBkcml2ZXIgY2xlYW51cCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZGluZyBgcGNpX2Rpc2FibGVfcHRtKHBkZXYpYCBpbiB0d28gcGxhY2VzOiBgaWRwZl9yZW1vdmVgIGFuZCB0aGUgZXJyb3IgcGF0aCBvZiBgaWRwZl9wcm9iZWAuIFRoZSBpbnRlbnQgc2VlbXMgY2xlYXI6IGl0JiMzOTtzIGEgbWlub3IgY2xlYW51cCB0byBwcmV2ZW50IHJlc291cmNlIGxlYWtzIG9yIHdhcm5pbmdzIHdoZW4gdGhlIGRyaXZlciB1bmxvYWRzIG9yIGZhaWxzIHRvIGxvYWQuIEZ1bmN0aW9uYWxseSwgaXQmIzM5O3MgcHJldHR5IHNtYWxsLiBUaGUgY29yZSBleGVjdXRpb24gZmxvdyBpcyBhbHRlcmVkIHNpbmNlIHRoaXMgZnVuY3Rpb24gaXMgbm93IGNhbGxlZCBkdXJpbmcgdW5sb2FkIGFuZCBvbiBwcm9iZSBmYWlsdXJlLCBzbyB0aGF0JiMzOTtzIHNvbWV0aGluZyB0byBub3RlLgoKVGhlIHF1ZXN0aW9uLCBhcyBhbHdheXMsIGlzIHdoZXRoZXIgaXQmIzM5O3Mgd29ydGggZnV6emluZy4gSW5pdGlhbGx5LCBteSBndXQgc2F5cyAmIzM0O25vLCYjMzQ7IGJlY2F1c2UgZnV6emluZyB3b3VsZCBtb3N0bHkgaW52b2x2ZSBydW5uaW5nIGBpZHBmX3Byb2JlYCBhbmQgYGlkcGZfcmVtb3ZlYCwgd2hpY2ggc2VlbXMgYmFzaWMuIEJ1dCBTeXprYWxsZXIgYWxyZWFkeSBoaXRzIHRob3NlIGZ1bmN0aW9ucy4gTm8gY29tcGxleCBsb2dpYyBpcyBpbnRyb2R1Y2VkIGVpdGhlci4gQnV0LCB0aGUgcHJvbXB0IGhhcyBhIGxpc3Qgb2YgdGhpbmdzICpub3QqIHRvIGZ1enouIExldCBtZSByZXZpZXcgdGhhdCBsaXN0LgoKSG1tLCB0aGUgcGF0Y2ggKmRvZXNuJiMzOTt0KiBtb2RpZnkgZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgY29tbWVudHMsIGxvZ2dpbmcsIGNvbnN0YW50cyB0aGF0IGRvbiYjMzk7dCBjaGFuZ2UgZmxvdywgb3IgdW5yZWFjaGFibGUgY29kZS4gVGhpcyBwYXRjaCAqZG9lcyogdG91Y2ggcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHJlbGF0ZWQgdG8gUENJIGRyaXZlciBjbGVhbnVwLiBJIGNhbiBjb25maXJtIHRoaXMsIGFzIFBDSSBkZXZpY2VzIGNhbiBiZSBlbXVsYXRlZCBieSBzeXprYWxsZXImIzM5O3MgUENJIGZ1enplciwgd2hpY2ggbWFrZXMgdGhpcyBjb2RlIHBhdGggcmVhY2hhYmxlLiBTbyB0aGF0IG1lYW5zIEkgc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgLiBNeSBrZXkgZm9jdXMgc3ltYm9scyB3aWxsIGJlIGBpZHBmX3Byb2JlYCBhbmQgYGlkcGZfcmVtb3ZlYC4gQWxzbywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX0lEUEZgIGlzIGVuYWJsZWQuCgpMZXQgbWUgZG91YmxlLWNoZWNrIGZvciBvdGhlciByZWxldmFudCBjb25maWdzLCBqdXN0IGluIGNhc2UuIE9oLCByaWdodCwgYHBjaV9kaXNhYmxlX3B0bWAgaXMgZGVmaW5lZCBpbiBgZHJpdmVycy9wY2kvcGNpZS9wdG0uY2AuIEkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGlzIGEgY29uZmlnIGZvciB0aGF0LiBMZXQgbWUgbG9vayBhdCB0aGF0IGZpbGUuLi5hbmQgdGhlIGZ1bmN0aW9uLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQQ0lFX1BUTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGNpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3BjaS9wY2llL0tjb25maWc9MTIxPWNvbmZpZyBQQ0lFX0RQQ1xuLS1cbmRyaXZlcnMvcGNpL3BjaWUvS2NvbmZpZy0xMzAtXG5kcml2ZXJzL3BjaS9wY2llL0tjb25maWc6MTMxOmNvbmZpZyBQQ0lFX1BUTVxuZHJpdmVycy9wY2kvcGNpZS9LY29uZmlnLTEzMi1cdGJvb2wgXCYjMzQ7UENJIEV4cHJlc3MgUHJlY2lzaW9uIFRpbWUgTWVhc3VyZW1lbnQgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDgxOQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOgoKKipDaGVja2luZyBQVE0gTG9naWMgRnVuY3Rpb25hbGl0eSoqCgpSaWdodCwgc28gdG8gcHJvcGVybHkgdmV0IHRoaXMgUFRNIGxvZ2ljLCBJIG5lZWQgdG8gbWFrZSBzdXJlIGBQQ0lFX1BUTWAgaXMgYWN0dWFsbHkgZW5hYmxlZC4gT3RoZXJ3aXNlLCB0cnlpbmcgdG8gdGVzdCB0aGUgcHJvY2VzcyB3aWxsIGJlIG1lYW5pbmdsZXNzLiBJdCBsb29rcyBsaWtlIGBwY2lfZGlzYWJsZV9wdG1gIGlzIHRoZSBjcnVjaWFsIGZ1bmN0aW9uIHRvIGZvY3VzIG9uIGhlcmUuCgpUaGUgY2F0Y2ggaXMsIGlmIGBQQ0lFX1BUTWAgaXNuJiMzOTt0IGVuYWJsZWQsIGBwY2lfZGlzYWJsZV9wdG1gICptaWdodCoganVzdCBiZSBhIG5vLW9wLCBvciBwZXJoYXBzIG9ubHkgY2xlYXIgYSBmbGFnLCB3aGljaCB3b3VsZG4mIzM5O3QgYmUgdmVyeSBoZWxwZnVsIGZvciBjb25maXJtaW5nIHRoZSBwcm9wZXIgZnVuY3Rpb25pbmcgb2YgdGhlIGVudGlyZSBwYXRod2F5LiBTbywgYSBjcml0aWNhbCBjaGVjayBpcyBuZWNlc3Nhcnk6IEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYHBjaV9kaXNhYmxlX3B0bWAgaXMgZXZlbiBkZWZpbmVkIGluIHRoZSBjYXNlIHdoZXJlIGBQQ0lFX1BUTWAgaXMgZGlzYWJsZWQuIFRoYXQmIzM5O3MgdGhlIGtleSBwb2ludC4gSWYgaXQgKmlzKiBkZWZpbmVkLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgdGhvcm91Z2hseSB0byBrbm93IGhvdyB0byBwcm9jZWVkLiBJIHN1c3BlY3QgdGhpcyB3aWxsIHRlbGwgbWUgYSBsb3QgYWJvdXQgdGhlIGRlc2lnbiBjaG9pY2VzIHRoYXQgd2VyZSBtYWRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZGlzYWJsZV9wdG0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3BjaS5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvcGNpLmg9MTk3OD1pbnQgcGNpX2VuYWJsZV9wdG0oc3RydWN0IHBjaV9kZXYgKmRldiwgdTggKmdyYW51bGFyaXR5KTtcbmluY2x1ZGUvbGludXgvcGNpLmg6MTk3OTp2b2lkIHBjaV9kaXNhYmxlX3B0bShzdHJ1Y3QgcGNpX2RldiAqZGV2KTtcbmluY2x1ZGUvbGludXgvcGNpLmgtMTk4MC1ib29sIHBjaWVfcHRtX2VuYWJsZWQoc3RydWN0IHBjaV9kZXYgKmRldik7XG4tLVxuaW5jbHVkZS9saW51eC9wY2kuaD0xOTgyPXN0YXRpYyBpbmxpbmUgaW50IHBjaV9lbmFibGVfcHRtKHN0cnVjdCBwY2lfZGV2ICpkZXYsIHU4ICpncmFudWxhcml0eSlcbmluY2x1ZGUvbGludXgvcGNpLmgtMTk4My17IHJldHVybiAtRUlOVkFMOyB9XG5pbmNsdWRlL2xpbnV4L3BjaS5oOjE5ODQ6c3RhdGljIGlubGluZSB2b2lkIHBjaV9kaXNhYmxlX3B0bShzdHJ1Y3QgcGNpX2RldiAqZGV2KSB7IH1cbmluY2x1ZGUvbGludXgvcGNpLmgtMTk4NS1zdGF0aWMgaW5saW5lIGJvb2wgcGNpZV9wdG1fZW5hYmxlZChzdHJ1Y3QgcGNpX2RldiAqZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTQxMAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDY0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBJRFBGIERyaXZlciB3aXRoIFBDSS1QVE0qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCB5ZXMsIGl0JiMzOTtzIHByZXR0eSBjbGVhci4gIElmIGBDT05GSUdfUENJRV9QVE1gIGlzIGRpc2FibGVkLCB0aGVuIHRoaXMgY2hhbmdlIGlzIGVmZmVjdGl2ZWx5IGEgbm8tb3AsIHdoaWNoIG1lYW5zIGl0IHdpbGwgbm90IGFmZmVjdCBhbnl0aGluZy4gU28sIHRoZSByaWdodCB0aGluZyB0byBkbyBpcyB0byBpbmNsdWRlIGBQQ0lFX1BUTWAgaW4gYEVuYWJsZUNvbmZpZ3NgLiBJdCYjMzk7cyBhIGNyaXRpY2FsIGNvbXBvbmVudCBmb3IgdGhlIGZ1bmN0aW9uYWxpdHkgaW4gdGhpcyBkaWZmLgoKTGV0IG1lIGp1c3QgcXVpY2tseSByZXZpZXcgdGhlIGFjdHVhbCBwYXRjaCBpdHNlbGYgYWdhaW4gdG8gY29uZmlybS4gQWggeWVzLCBJIHNlZTogaXQmIzM5O3MgYWRkaW5nIGBwY2lfZGlzYWJsZV9wdG0ocGRldilgIGluIHRoZSBgaWRwZl9yZW1vdmVgIGZ1bmN0aW9uIGFuZCBwbGFjaW5nIHRoYXQgZnVuY3Rpb24gY2FsbHMgaW4gbXVsdGlwbGUgcG9pbnRzIG9mIHRoZSBgaWRwZl9wcm9iZWAgZnVuY3Rpb24gYXMgd2VsbC4gSSByZWNvZ25pemUgdGhpcyBkcml2ZXIgYW5kIHRoZXNlIGZ1bmN0aW9ucy4gVGhlIGNvZGUgY2hhbmdlcyBzZWVtIHNvdW5kLgoKSXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2UgcmVsYXRlZCB0byB0aGUgUENJIGludGVyZmFjZSwgc28gSSBzZWUgdGhpcyB3b3VsZCBiZSByZWFjaGFibGUgYnkgYW55IFBDSSBmdXp6aW5nLiBUaGUgcmVxdWlyZWQgY29uZmlncyBhcmUgYElEUEZgIGFuZCwgYXMgd2UmIzM5O3ZlIGFscmVhZHkgZXN0YWJsaXNoZWQsIGBQQ0lFX1BUTWAuIEkmIzM5O20gZ29pbmcgdG8gbm90ZSB0aGF0IHRoZSByZWxldmFudCBmdW5jdGlvbnMgYXJlIGBpZHBmX3Byb2JlYCBhbmQgYGlkcGZfcmVtb3ZlYC4KCk5vdywgd2FpdCBhIG1pbnV0ZSwgSSB3YW50IHRvIGRvdWJsZS1jaGVjay4gSnVzdCBtYWtpbmcgc3VyZeKApklzIGBJRFBGYCB0b3RhbGx5IGluZGVwZW5kZW50PyBEb2VzIGBJRFBGYCBkZXBlbmQgb24gYW55dGhpbmcgZWxzZSB0aGF0IEkgbWlnaHQgYmUgbWlzc2luZz8gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIHVuZGVyc3RhbmQgYW55IGRlcGVuZGVuY2llcyBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJRFBGJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy0zLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnOjQ6Y29uZmlnIElEUEZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy01LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwoUikgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc9MTc9aWYgSURQRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnOjE5OmNvbmZpZyBJRFBGX1NJTkdMRVFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy0yMC1cdGJvb2wgXCYjMzQ7aWRwZiBzaW5nbGVxIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTQ6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY1ODYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGUgbWF0dGVyOgoKKipBbmFseXppbmcgdGhlIEludGVsIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgSW50ZWwgRXRoZXJuZXQgZHJpdmVyLiBUbyBkbyB0aGF0LCBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZSBzcGVjaWZpY2FsbHkgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9gLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgc2hvdWxkIGJlIGRlZmluZWQuIEJ5IGdvaW5nIHRocm91Z2ggdGhpcyBmaWxlLCBJIGNhbiBidWlsZCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyByZXF1aXJlZCBmb3IgdGhpcyBkcml2ZXIgdG8gZnVuY3Rpb24gY29ycmVjdGx5IHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHByb2Nlc3MsIGFuZCBob3cgaXQgcmVsYXRlcyB0byBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTQ6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjIENvcHlyaWdodCAoQykgMjAyNCBJbnRlbCBDb3Jwb3JhdGlvblxuICAgMzpcdFxuICAgNDpcdGNvbmZpZyBJRFBGXG4gICA1Olx0XHR0cmlzdGF0ZSBcJiMzNDtJbnRlbChSKSBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb24gU3VwcG9ydFwmIzM0O1xuICAgNjpcdFx0ZGVwZW5kcyBvbiBQQ0lfTVNJXG4gICA3Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gICA4Olx0XHRzZWxlY3QgRElNTElCXG4gICA5Olx0XHRzZWxlY3QgTElCRVRIX1hEUFxuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBJbnRlbChSKSBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb25cbiAgMTI6XHRcdCAgZGV2aWNlcy5cbiAgMTM6XHRcbiAgMTQ6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxuICAxNTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBpZHBmLlxuICAxNjpcdFxuICAxNzpcdGlmIElEUEZcbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgSURQRl9TSU5HTEVRXG4gIDIwOlx0XHRib29sIFwmIzM0O2lkcGYgc2luZ2xlcSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MDQ0CgkJCQkJCQlvdXRwdXQ6IDExMQoJCQkJCQkJdGhvdWdodHM6IDIzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRoaXMgUGF0Y2g6IEEgU291bmQgRGVjaXNpb24qKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0cyBpbXBsaWNhdGlvbnMuIFRoZSBkZXBlbmRlbmNpZXMgYXJlIGBQQ0lfTVNJYCBhbmQgYFBUUF8xNTg4X0NMT0NLX09QVElPTkFMYCwgYW5kIHNpbmNlIGBQQ0lfTVNJYCBpcyB0eXBpY2FsbHkgZW5hYmxlZCwgdGhlIGtleSBjb25maWd1cmF0aW9ucyB0byBmb2N1cyBvbiBhcmUgYElEUEZgIGFuZCBgUENJRV9QVE1gLiBJIHF1aWNrbHkgY2hlY2tlZCBpZiB0aGVyZSB3ZXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWdzLCBidXQgbm8sIHRob3NlIGFyZSB0aGUgbWFpbiBvbmVzLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBzaG91bGQgd2UgZnV6eiB0aGlzPyBMZXQmIzM5O3MgYnJlYWsgaXQgZG93bi4gSXTigJlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBhZGRyZXNzaW5nIGEgcmVzb3VyY2UgbGVhay4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIENydWNpYWxseSwgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHdpdGhpbiB0aGUgUENJIGRyaXZlci4gQW5kLCB3ZSBjYW4gbGV2ZXJhZ2Ugc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6ZXIgdG8gZXhlcmNpc2UgdGhpcyBmdW5jdGlvbmFsaXR5LiBHaXZlbiBhbGwgdGhhdCwgYFdvcnRoRnV6emluZz10cnVlYCBpcyBhIGRlZmluaXRlIHllcy4KClRoZSBjb3JlIHJlYXNvbmluZyBoZXJlIGlzIHRoYXQgdGhlIHBhdGNoIHJlY3RpZmllcyBhIHJlc291cmNlIGxlYWsgYnkgZW5zdXJpbmcgYHBjaV9kaXNhYmxlX3B0bSgpYCBpcyBjYWxsZWQgaW4gdGhlIGRyaXZlciYjMzk7cyByZW1vdmUgYW5kIHByb2JlIGVycm9yIHBhdGhzLiBUaGlzIGNoYW5nZSBkaXJlY3RseSBpbXBhY3RzIHRoZSBJbnRlbCBJRFBGIFBDSSBkcml2ZXIgYW5kIGNhbiBiZSBlZmZlY3RpdmVseSB0ZXN0ZWQgdXNpbmcgYSBQQ0kgZGV2aWNlIGZ1enplci4KClRoZSBjcml0aWNhbCBzeW1ib2xzIEkmIzM5O20gZm9jdXNpbmcgb24gYXJlIGBpZHBmX3Byb2JlYCBhbmQgYGlkcGZfcmVtb3ZlYC4gQW5kLCBvZiBjb3Vyc2UsIHRoZSBuZWNlc3NhcnkgZW5hYmxlbWVudCBjb25maWdzIGFyZSBgSURQRmAgYW5kIGBQQ0lFX1BUTWAuIEZpbmFsbHksIHRpbWUgdG8gcnVuIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE0OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJRFBGJiMzNDssCiAgICAmIzM0O1BDSUVfUFRNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWRwZl9wcm9iZSYjMzQ7LAogICAgJiMzNDtpZHBmX3JlbW92ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgYnkgZW5zdXJpbmcgcGNpX2Rpc2FibGVfcHRtKCkgaXMgY2FsbGVkIGR1cmluZyB0aGUgZHJpdmVyJiMzOTtzIHJlbW92ZSBhbmQgcHJvYmUgZXJyb3IgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSW50ZWwgSURQRiBQQ0kgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgYW5kIHRlc3RlZCB1c2luZyBhIFBDSSBkZXZpY2UgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJRFBGJiMzNDssCiAgICAmIzM0O1BDSUVfUFRNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWRwZl9wcm9iZSYjMzQ7LAogICAgJiMzNDtpZHBmX3JlbW92ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgYnkgZW5zdXJpbmcgcGNpX2Rpc2FibGVfcHRtKCkgaXMgY2FsbGVkIGR1cmluZyB0aGUgZHJpdmVyJiMzOTtzIHJlbW92ZSBhbmQgcHJvYmUgZXJyb3IgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSW50ZWwgSURQRiBQQ0kgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgYW5kIHRlc3RlZCB1c2luZyBhIFBDSSBkZXZpY2UgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTVUMTQ6MDE6MDIuOTMxNDIzMzE0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5MDk4NDQ1MTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklEUEZcIixcbiAgICBcIlBDSUVfUFRNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWRwZl9wcm9iZVwiLFxuICAgIFwiaWRwZl9yZW1vdmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgYnkgZW5zdXJpbmcgcGNpX2Rpc2FibGVfcHRtKCkgaXMgY2FsbGVkIGR1cmluZyB0aGUgZHJpdmVyJ3MgcmVtb3ZlIGFuZCBwcm9iZSBlcnJvciBwYXRocy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJbnRlbCBJRFBGIFBDSSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCBhbmQgdGVzdGVkIHVzaW5nIGEgUENJIGRldmljZSBmdXp6ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE0OjAxOjAyLjkzMTQyOTkyNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEwOTcwMTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzk4NjQ0Y2JkODY2ODM5MGE3M2IxMmFhNDc5ODQ2MDAyMzQ2NDdjNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxNSAxNDowMTowMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uY1xcbmluZGV4IDBkZDc0MWRjZmNkYjIxLi5mMDhjZTEzYzIwYWIwNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uY1xcbkBAIC0xNTksNiArMTU5LDcgQEAgc3RhdGljIHZvaWQgaWRwZl9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuIFxcdG11dGV4X2Rlc3Ryb3koXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXF1ZXVlX2xvY2spO1xcbiBcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZhZGFwdGVyLVxcdTAwM2V2Y19idWZfbG9jayk7XFxuIFxcbitcXHRwY2lfZGlzYWJsZV9wdG0ocGRldik7XFxuIFxcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTtcXG4gXFx0a2ZyZWUoYWRhcHRlcik7XFxuIH1cXG5AQCAtMjY2LDcgKzI2Nyw3IEBAIHN0YXRpYyBpbnQgaWRwZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4gXFx0aWYgKGVycikge1xcbiBcXHRcXHRwY2lfZXJyKHBkZXYsIFxcXCJETUEgY29uZmlndXJhdGlvbiBmYWlsZWQ6ICVwZVxcXFxuXFxcIiwgRVJSX1BUUihlcnIpKTtcXG4gXFxuLVxcdFxcdGdvdG8gZXJyX2ZyZWU7XFxuK1xcdFxcdGdvdG8gZXJyX2Rpc2FibGVfcHRtO1xcbiBcXHR9XFxuIFxcbiBcXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcXG5AQCAtMjc5LDcgKzI4MCw3IEBAIHN0YXRpYyBpbnQgaWRwZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4gXFx0aWYgKCFhZGFwdGVyLVxcdTAwM2Vpbml0X3dxKSB7XFxuIFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGFsbG9jYXRlIGluaXQgd29ya3F1ZXVlXFxcXG5cXFwiKTtcXG4gXFx0XFx0ZXJyID0gLUVOT01FTTtcXG4tXFx0XFx0Z290byBlcnJfZnJlZTtcXG4rXFx0XFx0Z290byBlcnJfZGlzYWJsZV9wdG07XFxuIFxcdH1cXG4gXFxuIFxcdGFkYXB0ZXItXFx1MDAzZXNlcnZfd3EgPSBhbGxvY193b3JrcXVldWUoXFxcIiVzLSVzLXNlcnZpY2VcXFwiLFxcbkBAIC0zNjYsNiArMzY3LDggQEAgc3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbiBcXHRkZXN0cm95X3dvcmtxdWV1ZShhZGFwdGVyLVxcdTAwM2VzZXJ2X3dxKTtcXG4gZXJyX3NlcnZfd3FfYWxsb2M6XFxuIFxcdGRlc3Ryb3lfd29ya3F1ZXVlKGFkYXB0ZXItXFx1MDAzZWluaXRfd3EpO1xcbitlcnJfZGlzYWJsZV9wdG06XFxuK1xcdHBjaV9kaXNhYmxlX3B0bShwZGV2KTtcXG4gZXJyX2ZyZWU6XFxuIFxcdGtmcmVlKGFkYXB0ZXIpO1xcbiBcXHRyZXR1cm4gZXJyO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNDowMTowMy40NDMxNDE1MDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2ODU4NjcxNjk1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJRFBGXCIsXG4gICAgXCJQQ0lFX1BUTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlkcGZfcHJvYmVcIixcbiAgICBcImlkcGZfcmVtb3ZlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGJ5IGVuc3VyaW5nIHBjaV9kaXNhYmxlX3B0bSgpIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGRyaXZlcidzIHJlbW92ZSBhbmQgcHJvYmUgZXJyb3IgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSW50ZWwgSURQRiBQQ0kgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgYW5kIHRlc3RlZCB1c2luZyBhIFBDSSBkZXZpY2UgZnV6emVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDM5ODY0NGNiZDg2NjgzOTBhNzNiMTJhYTQ3OTg0NjAwMjM0NjQ3YzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAxNDowMTowMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jXG5pbmRleCAwZGQ3NDFkY2ZjZGIyMS4uZjA4Y2UxM2MyMGFiMDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jXG5AQCAtMTU5LDYgKzE1OSw3IEBAIHN0YXRpYyB2b2lkIGlkcGZfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZhZGFwdGVyLVx1MDAzZXF1ZXVlX2xvY2spO1xuIFx0bXV0ZXhfZGVzdHJveShcdTAwMjZhZGFwdGVyLVx1MDAzZXZjX2J1Zl9sb2NrKTtcbiBcbitcdHBjaV9kaXNhYmxlX3B0bShwZGV2KTtcbiBcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTtcbiBcdGtmcmVlKGFkYXB0ZXIpO1xuIH1cbkBAIC0yNjYsNyArMjY3LDcgQEAgc3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFx0aWYgKGVycikge1xuIFx0XHRwY2lfZXJyKHBkZXYsIFwiRE1BIGNvbmZpZ3VyYXRpb24gZmFpbGVkOiAlcGVcXG5cIiwgRVJSX1BUUihlcnIpKTtcbiBcbi1cdFx0Z290byBlcnJfZnJlZTtcbitcdFx0Z290byBlcnJfZGlzYWJsZV9wdG07XG4gXHR9XG4gXG4gXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcbkBAIC0yNzksNyArMjgwLDcgQEAgc3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFx0aWYgKCFhZGFwdGVyLVx1MDAzZWluaXRfd3EpIHtcbiBcdFx0ZGV2X2VycihkZXYsIFwiRmFpbGVkIHRvIGFsbG9jYXRlIGluaXQgd29ya3F1ZXVlXFxuXCIpO1xuIFx0XHRlcnIgPSAtRU5PTUVNO1xuLVx0XHRnb3RvIGVycl9mcmVlO1xuK1x0XHRnb3RvIGVycl9kaXNhYmxlX3B0bTtcbiBcdH1cbiBcbiBcdGFkYXB0ZXItXHUwMDNlc2Vydl93cSA9IGFsbG9jX3dvcmtxdWV1ZShcIiVzLSVzLXNlcnZpY2VcIixcbkBAIC0zNjYsNiArMzY3LDggQEAgc3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuIFx0ZGVzdHJveV93b3JrcXVldWUoYWRhcHRlci1cdTAwM2VzZXJ2X3dxKTtcbiBlcnJfc2Vydl93cV9hbGxvYzpcbiBcdGRlc3Ryb3lfd29ya3F1ZXVlKGFkYXB0ZXItXHUwMDNlaW5pdF93cSk7XG4rZXJyX2Rpc2FibGVfcHRtOlxuK1x0cGNpX2Rpc2FibGVfcHRtKHBkZXYpO1xuIGVycl9mcmVlOlxuIFx0a2ZyZWUoYWRhcHRlcik7XG4gXHRyZXR1cm4gZXJyO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTQ6MDE6MDMuNDQzMTQyOTMyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY0MjU4Mzc4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBgaWRwZmAgRHJpdmVyOiBBIFByZWxpbWluYXJ5IEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBzZWVtcyBsaWtlIGl0J3MgYWRkaW5nIGBwY2lfZGlzYWJsZV9wdG0ocGRldik7YCBpbiB0aGUgYGlkcGZfcmVtb3ZlYCBmdW5jdGlvbiBhbmQgdGhlIGVycm9yIHBhdGggb2YgYGlkcGZfcHJvYmVgIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIklzIHRoaXMgd29ydGggZnV6emluZz9cIiBUaGUgZHJpdmVyIGluIHF1ZXN0aW9uIGlzIHRoZSBgaWRwZmAgZHJpdmVyLCB3aGljaCBmcm9tIGl0cyBuYW1lIOKAkyBcIkludGVsIEluZnJhc3RydWN0dXJlIERhdGEgUGxhbmUgRnVuY3Rpb25cIiDigJMgYW5kIGxvY2F0aW9uLCBhcHBlYXJzIHRvIGJlIGFuIEludGVsIFBDSSBkZXZpY2UgZHJpdmVyLlxuXG5UaGUgUENJIGFzcGVjdCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBIb3cgZWFzaWx5IGNhbiB0aGlzIGJlIHRhcmdldGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEdlbmVyYWxseSwgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlcnMgYXJlIHRyaWNreSB0byByZWFjaCB3aXRob3V0IGFuIGVtdWxhdG9yLiBTbywgaXMgdGhlcmUgYW4gZW11bGF0b3IgZm9yIGBpZHBmYD8gVGhhdCdzIHRoZSBxdWVzdGlvbiBJIG5lZWQgdG8gYW5zd2VyLiBJcyB0aGlzIGEgdmlydHVhbCBkZXZpY2Ugb3Igc29tZXRoaW5nIG1lYW50IGZvciBwaHlzaWNhbCBoYXJkd2FyZT8gVGltZSB0byBkbyBzb21lIGRpZ2dpbmcuIExldCdzIHN0YXJ0IHdpdGggYSBzaW1wbGUgZ3JlcCBmb3IgXCJpZHBmXCIgYW5kIHNlZSB3aGF0IGtpbmQgb2YgY29udGV4dCB3ZSdyZSBkZWFsaW5nIHdpdGguIEtub3dpbmcgdGhlIGV4YWN0IG5hdHVyZSBvZiB0aGlzIGRldmljZSBpcyBjcml0aWNhbCB0byBrbm93aW5nIGlmIHRoaXMgcGF0Y2ggbWVyaXRzIGZvY3VzZWQgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIxNCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE0OjAxOjA4LjA4NTcyODc2MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDA0NDY3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZHBmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTEwNDcgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZz00PWNvbmZpZyBJRFBGXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctMTQtXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnOjE1OlxcdCAgd2lsbCBiZSBjYWxsZWQgaWRwZi5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctMTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc9MTk9Y29uZmlnIElEUEZfU0lOR0xFUVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZzoyMDpcXHRib29sIFxcXCJpZHBmIHNpbmdsZXEgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctMjEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZS01LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfSURQRikgKz0gaWRwZi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZS03LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6ODppZHBmLXkgOj0gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6OTpcXHRpZHBmX2NvbnRyb2xxLm9cXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZToxMDpcXHRpZHBmX2NvbnRyb2xxX3NldHVwLm9cXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZToxMTpcXHRpZHBmX2Rldi5vXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6MTI6XFx0aWRwZl9ldGh0b29sLm9cXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZToxMzpcXHRpZHBmX2lkYy5vXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6MTQ6XFx0aWRwZl9saWIub1xcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjE1OlxcdGlkcGZfbWFpbi5vXFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6MTY6XFx0aWRwZl90eHJ4Lm9cXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZToxNzpcXHRpZHBmX3ZpcnRjaG5sLm8gXFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6MTg6XFx0aWRwZl92Zl9kZXYub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGUtMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZToyMDppZHBmLSQoQ09ORklHX0lEUEZfU0lOR0xFUSlcXHQrPSBpZHBmX3NpbmdsZXFfdHhyeC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZS0yMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjIyOmlkcGYtJChDT05GSUdfUFRQXzE1ODhfQ0xPQ0spXFx0Kz0gaWRwZl9wdHAub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvTWFrZWZpbGU6MjM6aWRwZi0kKENPTkZJR19QVFBfMTU4OF9DTE9DSylcXHQrPSBpZHBmX3ZpcnRjaG5sX3B0cC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZS0yNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL01ha2VmaWxlOjI1OmlkcGYteVxcdFxcdFxcdFxcdCs9IHhkcC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9NYWtlZmlsZToyNjppZHBmLXlcXHRcXHRcXHRcXHQrPSB4c2sub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNy0vKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODpzdHJ1Y3QgaWRwZl9hZGFwdGVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjk6c3RydWN0IGlkcGZfdnBvcnQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTA6c3RydWN0IGlkcGZfdnBvcnRfbWF4X3E7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTE6c3RydWN0IGlkcGZfcV92ZWNfcnNyYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoxMjpzdHJ1Y3QgaWRwZl9yc3NfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI0LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXQvaW50ZWwvaWlkY19yZG1hLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjU6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldC9pbnRlbC9paWRjX3JkbWFfaWRwZi5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI3LSNpbmNsdWRlIFxcXCJ2aXJ0Y2hubDIuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyODojaW5jbHVkZSBcXFwiaWRwZl90eHJ4LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6Mjk6I2luY2x1ZGUgXFxcImlkcGZfY29udHJvbHEuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjU3OiAqIHN0cnVjdCBpZHBmX21hY19maWx0ZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01OC0gKiBAbGlzdDogbGlzdCBtZW1iZXIgZmllbGRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYyLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjYzOnN0cnVjdCBpZHBmX21hY19maWx0ZXIge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY0LVxcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTcwLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjcxOiAqIGVudW0gaWRwZl9zdGF0ZSAtIFN0YXRlIG1hY2hpbmUgdG8gaGFuZGxlIGJyaW5nIHVwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzItICogQF9fSURQRl9WRVJfQ0hFQ0s6IE5lZ290aWF0ZSB2aXJ0Y2hubCB2ZXJzaW9uXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03Ni0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3NzplbnVtIGlkcGZfc3RhdGUge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc4LVxcdF9fSURQRl9WRVJfQ0hFQ0ssXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4NTogKiBlbnVtIGlkcGZfZmxhZ3MgLSBIYXJkIHJlc2V0IGNhdXNlcy5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04Ni0gKiBASURQRl9IUl9GVU5DX1JFU0VUOiBIYXJkIHJlc2V0IHdoZW4gVHhSeCB0aW1lb3V0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05My0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo5NDplbnVtIGlkcGZfZmxhZ3Mge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTk1LVxcdElEUEZfSFJfRlVOQ19SRVNFVCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTEwNC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoxMDU6ICogZW51bSBpZHBmX2NhcF9maWVsZCAtIE9mZnNldHMgaW50byBjYXBhYmlsaXRpZXMgc3RydWN0IGZvciBzcGVjaWZpYyBjYXBzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTA2LSAqIEBJRFBGX0JBU0VfQ0FQUzogZ2VuZXJpYyBiYXNlIGNhcGFiaWxpdGllc1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTE3LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjExODplbnVtIGlkcGZfY2FwX2ZpZWxkIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xMTktXFx0SURQRl9CQVNFX0NBUFNcXHRcXHQ9IC0xLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTM0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjEzNTogKiBlbnVtIGlkcGZfdnBvcnRfc3RhdGUgLSBDdXJyZW50IHZwb3J0IHN0YXRlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTM2LSAqIEBJRFBGX1ZQT1JUX1VQOiBWcG9ydCBpcyB1cFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTM4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjEzOTplbnVtIGlkcGZfdnBvcnRfc3RhdGUge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTE0MC1cXHRJRFBGX1ZQT1JUX1VQLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTQ0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjE0NTogKiBzdHJ1Y3QgaWRwZl9uZXRkZXZfcHJpdiAtIFN0cnVjdCB0byBzdG9yZSB2cG9ydCBiYWNrIHBvaW50ZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xNDYtICogQGFkYXB0ZXI6IEFkYXB0ZXIgYmFjayBwb2ludGVyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xNTItICogQHR4X21heF9idWZzOiBNYXggYnVmZmVycyB0aGF0IGNhbiBiZSB0cmFuc21pdHRlZCB3aXRoIHNjYXR0ZXItZ2F0aGVyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTUzOiAqIEBzdGF0ZTogU2VlIGVudW0gaWRwZl92cG9ydF9zdGF0ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTE1NC0gKiBAbmV0c3RhdHM6IFBhY2tldCBhbmQgYnl0ZSBzdGF0c1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTU2LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjE1NzpzdHJ1Y3QgaWRwZl9uZXRkZXZfcHJpdiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTU4OlxcdHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTU5OlxcdHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xNjAtXFx0dTMyIHZwb3J0X2lkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTcwLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjE3MTogKiBzdHJ1Y3QgaWRwZl9yZXNldF9yZWcgLSBSZXNldCByZWdpc3RlciBvZmZzZXRzL21hc2tzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTcyLSAqIEByc3RhdDogUmVzZXQgc3RhdHVzIHJlZ2lzdGVyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xNzQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTc1OnN0cnVjdCBpZHBmX3Jlc2V0X3JlZyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTc2LVxcdHZvaWQgX19pb21lbSAqcnN0YXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xODAtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTgxOiAqIHN0cnVjdCBpZHBmX3Zwb3J0X21heF9xIC0gUXVldWUgbGltaXRzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTgyLSAqIEBtYXhfcnhxOiBNYXhpbXVtIG51bWJlciBvZiBSWCBxdWV1ZXMgc3VwcG9ydGVkXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xODYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTg3OnN0cnVjdCBpZHBmX3Zwb3J0X21heF9xIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xODgtXFx0dTE2IG1heF9yeHE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0xOTQtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MTk1OiAqIHN0cnVjdCBpZHBmX3JlZ19vcHMgLSBEZXZpY2Ugc3BlY2lmaWMgcmVnaXN0ZXIgb3BlcmF0aW9uIGZ1bmN0aW9uIHBvaW50ZXJzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMTk2LSAqIEBjdGxxX3JlZ19pbml0OiBNYWlsYm94IGNvbnRyb2wgcXVldWUgcmVnaXN0ZXIgaW5pdGlhbGl6YXRpb25cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTIwMi0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMDM6c3RydWN0IGlkcGZfcmVnX29wcyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjA0OlxcdHZvaWQgKCpjdGxxX3JlZ19pbml0KShzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjIwNTpcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaWRwZl9jdGxxX2NyZWF0ZV9pbmZvICpjcSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjA2OlxcdGludCAoKmludHJfcmVnX2luaXQpKHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMDc6XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWRwZl9xX3ZlY19yc3JjICpyc3JjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMDg6XFx0dm9pZCAoKm1iX2ludHJfcmVnX2luaXQpKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjIwOTpcXHR2b2lkICgqcmVzZXRfcmVnX2luaXQpKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjIxMDpcXHR2b2lkICgqdHJpZ2dlcl9yZXNldCkoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMTE6XFx0XFx0XFx0ICAgICAgZW51bSBpZHBmX2ZsYWdzIHRyaWdfY2F1c2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjIxMjpcXHR2b2lkICgqcHRwX3JlZ19pbml0KShjb25zdCBzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMTMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTIyMS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyMjI6ICogc3RydWN0IGlkcGZfZGV2X29wcyAtIERldmljZSBzcGVjaWZpYyBvcGVyYXRpb25zXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjIzLSAqIEByZWdfb3BzOiBSZWdpc3RlciBvcGVyYXRpb25zXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yMjYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MjI3OnN0cnVjdCBpZHBmX2Rldl9vcHMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjIyODpcXHRzdHJ1Y3QgaWRwZl9yZWdfb3BzIHJlZ19vcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjIzMDpcXHRpbnQgKCppZGNfaW5pdCkoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjMxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjM2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjIzNzogKiBlbnVtIGlkcGZfdnBvcnRfcmVzZXRfY2F1c2UgLSBWcG9ydCBzb2Z0IHJlc2V0IGNhdXNlc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTIzOC0gKiBASURQRl9TUl9RX0NIQU5HRTogU29mdCByZXNldCBxdWV1ZSBjaGFuZ2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI0Mi0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyNDM6ZW51bSBpZHBmX3Zwb3J0X3Jlc2V0X2NhdXNlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yNDQtXFx0SURQRl9TUl9RX0NIQU5HRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI1MC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyNTE6ICogZW51bSBpZHBmX3Zwb3J0X2ZsYWdzIC0gVnBvcnQgZmxhZ3NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yNTItICogQElEUEZfVlBPUlRfREVMX1FVRVVFUzogVG8gc2VuZCBkZWxldGUgcXVldWVzIG1lc3NhZ2VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI1NC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyNTU6ZW51bSBpZHBmX3Zwb3J0X2ZsYWdzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yNTYtXFx0SURQRl9WUE9SVF9ERUxfUVVFVUVTLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjYwLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjI2MTogKiBzdHJ1Y3QgaWRwZl90c3RhbXBfc3RhdHMgLSBUeCB0aW1lc3RhbXAgc3RhdGlzdGljc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI2Mi0gKiBAc3RhdHNfc3luYzogU2VlIHN0cnVjdCB1NjRfc3RhdHNfc3luY1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjY3LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjI2ODpzdHJ1Y3QgaWRwZl90c3RhbXBfc3RhdHMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI2OS1cXHRzdHJ1Y3QgdTY0X3N0YXRzX3N5bmMgc3RhdHNfc3luYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyNzU6c3RydWN0IGlkcGZfcG9ydF9zdGF0cyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjc2LVxcdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBzdGF0c19zeW5jO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjI4ODpzdHJ1Y3QgaWRwZl9mc3RlZXJfZmx0ciB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtMjg5LVxcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTI5My0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDoyOTQ6ICogc3RydWN0IGlkcGZfcV92ZWNfcnNyYyAtIGhhbmRsZSBmb3IgcXVldWUgYW5kIHZlY3RvciByZXNvdXJjZXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0yOTUtICogQGRldjogZGV2aWNlIHBvaW50ZXIgZm9yIERNQSBtYXBwaW5nXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zMjItICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MzIzOnN0cnVjdCBpZHBmX3FfdmVjX3JzcmMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTMyNC1cXHRzdHJ1Y3QgZGV2aWNlXFx0XFx0KmRldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozMjU6XFx0c3RydWN0IGlkcGZfcV92ZWN0b3JcXHQqcV92ZWN0b3JzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTMyNi1cXHR1MTZcXHRcXHRcXHQqcV92ZWN0b3JfaWR4cztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTMzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozMzI6XFx0c3RydWN0IGlkcGZfdHhxX2dyb3VwXFx0KnR4cV9ncnBzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTMzMy1cXHR1MzJcXHRcXHRcXHR0eHFfZGVzY19jb3VudDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTM0Mi1cXHR1MzJcXHRcXHRcXHRyeHFfbW9kZWw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MzQzOlxcdHN0cnVjdCBpZHBmX3J4cV9ncm91cFxcdCpyeHFfZ3JwcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zNDQtXFx0dTE2XFx0XFx0XFx0bnVtX3J4cTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTM1Mi0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozNTM6ICogc3RydWN0IGlkcGZfdnBvcnQgLSBIYW5kbGUgZm9yIG5ldGRldmljZXMgYW5kIHF1ZXVlIHJlc291cmNlc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTM1NC0gKiBAZGZsdF9xdl9yc3JjOiBjb250YWlucyBkZWZhdWx0IHF1ZXVlIGFuZCB2ZWN0b3IgcmVzb3VyY2VzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zNjMtICpcXHQgICAgYXNzb2NpYXRlZCBuZXRkZXYuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6MzY0OiAqIEBmbGFnczogU2VlIGVudW0gaWRwZl92cG9ydF9mbGFnc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTM2NS0gKiBAY29tcGxuX2NsZWFuX2J1ZGdldDogV29yayBidWRnZXQgZm9yIGNvbXBsZXRpb24gY2xlYW5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTM4MS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozODI6c3RydWN0IGlkcGZfdnBvcnQge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjM4MzpcXHRzdHJ1Y3QgaWRwZl9xX3ZlY19yc3JjIGRmbHRfcXZfcnNyYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozODQ6XFx0c3RydWN0IGlkcGZfdHhfcXVldWUgKip0eHFzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTM4NS1cXHR1MTYgbnVtX3R4cTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTM5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDozOTI6XFx0c3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC0zOTMtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0MDU6XFx0c3RydWN0IGlkcGZfcG9ydF9zdGF0cyBwb3J0X3N0YXRzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQwNi1cXHRib29sIGRlZmF1bHRfdnBvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NDEwOlxcdHN0cnVjdCBpZHBmX3B0cF92cG9ydF90eF90c3RhbXBfY2FwcyAqdHhfdHN0YW1wX2NhcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDExLVxcdHN0cnVjdCBrZXJuZWxfaHd0c3RhbXBfY29uZmlnIHRzdGFtcF9jb25maWc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDEyLVxcdHN0cnVjdCB3b3JrX3N0cnVjdCB0c3RhbXBfdGFzaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0MTM6XFx0c3RydWN0IGlkcGZfdHN0YW1wX3N0YXRzIHRzdGFtcF9zdGF0cztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MTQtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQxNi0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0MTc6ICogZW51bSBpZHBmX3VzZXJfZmxhZ3NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MTgtICogQF9fSURQRl9VU0VSX0ZMQUdfSFNQTElUOiBoZWFkZXIgc3BsaXQgc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQyMi0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0MjM6ZW51bSBpZHBmX3VzZXJfZmxhZ3Mge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQyNC1cXHRfX0lEUEZfVVNFUl9GTEFHX0hTUExJVCA9IDBVLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDMxLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjQzMjogKiBzdHJ1Y3QgaWRwZl9yc3NfZGF0YSAtIEFzc29jaWF0ZWQgUlNTIGRhdGFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00MzMtICogQHJzc19rZXlfc2l6ZTogU2l6ZSBvZiBSU1MgaGFzaCBrZXlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQzNy0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0Mzg6c3RydWN0IGlkcGZfcnNzX2RhdGEge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQzOS1cXHR1MTYgcnNzX2tleV9zaXplO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDQ1LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjQ0NjogKiBzdHJ1Y3QgaWRwZl9xX2NvYWxlc2NlIC0gVXNlciBkZWZpbmVkIGNvYWxlc2NpbmcgY29uZmlndXJhdGlvbiB2YWx1ZXMgZm9yXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDQ3LSAqXFx0XFx0XFx0ICAgYSBzaW5nbGUgcXVldWUuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00NTQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NDU1OnN0cnVjdCBpZHBmX3FfY29hbGVzY2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQ1Ni1cXHR1MzIgdHhfaW50cl9tb2RlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDYyLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjQ2MzogKiBzdHJ1Y3QgaWRwZl92cG9ydF91c2VyX2NvbmZpZ19kYXRhIC0gVXNlciBkZWZpbmVkIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGZvclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTQ2NC0gKlxcdFxcdFxcdFxcdFxcdGVhY2ggdnBvcnQuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NDY1OiAqIEByc3NfZGF0YTogU2VlIHN0cnVjdCBpZHBmX3Jzc19kYXRhXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNDY2LSAqIEBxX2NvYWxlc2NlOiBBcnJheSBvZiBwZXIgcXVldWUgY29hbGVzY2luZyBkYXRhXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00ODAtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NDgxOnN0cnVjdCBpZHBmX3Zwb3J0X3VzZXJfY29uZmlnX2RhdGEge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjQ4MjpcXHRzdHJ1Y3QgaWRwZl9yc3NfZGF0YSByc3NfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo0ODM6XFx0c3RydWN0IGlkcGZfcV9jb2FsZXNjZSAqcV9jb2FsZXNjZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00ODQtXFx0dTE2IG51bV9yZXFfdHhfcXM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00OTUtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NDk2OiAqIGVudW0gaWRwZl92cG9ydF9jb25maWdfZmxhZ3MgLSBWcG9ydCBjb25maWcgZmxhZ3NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC00OTctICogQElEUEZfVlBPUlRfUkVHX05FVERFVjogUmVnaXN0ZXIgbmV0ZGV2XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01MDAtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTAxOmVudW0gaWRwZl92cG9ydF9jb25maWdfZmxhZ3Mge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTUwMi1cXHRJRFBGX1ZQT1JUX1JFR19ORVRERVYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01MDctLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTA4OiAqIHN0cnVjdCBpZHBmX2F2YWlsX3F1ZXVlX2luZm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01MDktICogQGF2YWlsX3J4cTogQXZhaWxhYmxlIFJYIHF1ZXVlc1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTE1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjUxNjpzdHJ1Y3QgaWRwZl9hdmFpbF9xdWV1ZV9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01MTctXFx0dTE2IGF2YWlsX3J4cTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTUyMy0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1MjQ6ICogc3RydWN0IGlkcGZfdmVjdG9yX2luZm8gLSBVdGlsaXR5IHN0cnVjdHVyZSB0byBwYXNzIGZ1bmN0aW9uIGFyZ3VtZW50cyBhcyBhXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTI1LSAqXFx0XFx0XFx0ICAgICBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTUzMS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1MzI6c3RydWN0IGlkcGZfdmVjdG9yX2luZm8ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTUzMy1cXHR1MTYgbnVtX3JlcV92ZWNzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTM5LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjU0MDogKiBzdHJ1Y3QgaWRwZl92ZWN0b3JfbGlmbyAtIFN0YWNrIHRvIG1haW50YWluIHZlY3RvciBpbmRleGVzIHVzZWQgZm9yIHZlY3RvclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU0MS0gKlxcdFxcdFxcdCAgICAgZGlzdHJpYnV0aW9uIGFsZ29yaXRobVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTU1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjU1NjpzdHJ1Y3QgaWRwZl92ZWN0b3JfbGlmbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTU3LVxcdHUxNiB0b3A7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01NjMtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTY0OiAqIHN0cnVjdCBpZHBmX3F1ZXVlX2lkX3JlZ19jaHVuayAtIGluZGl2aWR1YWwgcXVldWUgSUQgYW5kIHJlZ2lzdGVyIGNodW5rXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTY1LSAqIEBxdGFpbF9yZWdfc3RhcnQ6IHF1ZXVlIHRhaWwgcmVnaXN0ZXIgb2Zmc2V0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01NzAtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTcxOnN0cnVjdCBpZHBmX3F1ZXVlX2lkX3JlZ19jaHVuayB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTcyLVxcdHU2NCBxdGFpbF9yZWdfc3RhcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01NzktLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTgwOiAqIHN0cnVjdCBpZHBmX3F1ZXVlX2lkX3JlZ19pbmZvIC0gcXVldWUgSUQgYW5kIHJlZ2lzdGVyIGNodW5rIGluZm8gcmVjZWl2ZWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01ODEtICpcXHRcXHRcXHRcXHQgICBvdmVyIHRoZSBtYWlsYm94XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01ODQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTg1OnN0cnVjdCBpZHBmX3F1ZXVlX2lkX3JlZ19pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01ODYtXFx0dTE2IG51bV9jaHVua3M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NTg3OlxcdHN0cnVjdCBpZHBmX3F1ZXVlX2lkX3JlZ19jaHVuayAqcXVldWVfY2h1bmtzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU4OC19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNTkwLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjU5MTogKiBzdHJ1Y3QgaWRwZl92cG9ydF9jb25maWcgLSBWcG9ydCBjb25maWd1cmF0aW9uIGRhdGFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1OTI6ICogQHVzZXJfY29uZmlnOiBzZWUgc3RydWN0IGlkcGZfdnBvcnRfdXNlcl9jb25maWdfZGF0YVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU5My0gKiBAbWF4X3E6IE1heGltdW0gcG9zc2libGUgcXVldWVzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC01OTYtICogQGZsb3dfc3RlZXJfbGlzdF9sb2NrOiBMb2NrIHRvIHByb3RlY3QgZnN0ZWVyIGZpbHRlcnNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1OTc6ICogQGZsYWdzOiBTZWUgZW51bSBpZHBmX3Zwb3J0X2NvbmZpZ19mbGFnc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTU5OC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo1OTk6c3RydWN0IGlkcGZfdnBvcnRfY29uZmlnIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2MDA6XFx0c3RydWN0IGlkcGZfdnBvcnRfdXNlcl9jb25maWdfZGF0YSB1c2VyX2NvbmZpZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2MDE6XFx0c3RydWN0IGlkcGZfdnBvcnRfbWF4X3EgbWF4X3E7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjAyOlxcdHN0cnVjdCBpZHBmX3F1ZXVlX2lkX3JlZ19pbmZvIHFpZF9yZWdfaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02MDMtXFx0c3BpbmxvY2tfdCBtYWNfZmlsdGVyX2xpc3RfbG9jaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYwNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2MDg6c3RydWN0IGlkcGZfdmNfeG5fbWFuYWdlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02MDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjEwOiNkZWZpbmUgaWRwZl9mb3JfZWFjaF92cG9ydChhZGFwdGVyLCBpdGVyKSBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjExOlxcdGZvciAoc3RydWN0IGlkcGZfdnBvcnQgKipfXyMjaXRlciA9IFxcdTAwMjYoYWRhcHRlciktXFx1MDAzZXZwb3J0c1swXSwgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYxMi1cXHQgICAgICppdGVyID0gKGFkYXB0ZXIpLVxcdTAwM2VtYXhfdnBvcnRzID8gKl9fIyNpdGVyIDogTlVMTDsgXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNjE3LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjYxODogKiBzdHJ1Y3QgaWRwZl9hZGFwdGVyIC0gRGV2aWNlIGRhdGEgc3RydWN0IGdlbmVyYXRlZCBvbiBwcm9iZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYxOS0gKiBAcGRldjogUENJIGRldmljZSBzdHJ1Y3QgZ2l2ZW4gb24gcHJvYmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYyNC0gKiBAc3RhdGU6IEluaXQgc3RhdGUgbWFjaGluZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjYyNTogKiBAZmxhZ3M6IFNlZSBlbnVtIGlkcGZfZmxhZ3NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2MjY6ICogQHJlc2V0X3JlZzogU2VlIHN0cnVjdCBpZHBmX3Jlc2V0X3JlZ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTYyNy0gKiBAaHc6IERldmljZSBhY2Nlc3MgZGF0YVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNjYxLSAqIEB2Y3huX21uZ3I6IFZpcnRjaG5sIHRyYW5zYWN0aW9uIG1hbmFnZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2NjI6ICogQGRldl9vcHM6IFNlZSBpZHBmX2Rldl9vcHNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02NjMtICogQGNkZXZfaW5mbzogSURDIGNvcmUgZGV2aWNlIGluZm8gcG9pbnRlclxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNjc0LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjY3NTpzdHJ1Y3QgaWRwZl9hZGFwdGVyIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02NzYtXFx0c3RydWN0IHBjaV9kZXYgKnBkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02ODEtXFx0dTMyIG1iX3dhaXRfY291bnQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjgyOlxcdGVudW0gaWRwZl9zdGF0ZSBzdGF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02ODMtXFx0REVDTEFSRV9CSVRNQVAoZmxhZ3MsIElEUEZfRkxBR1NfTkJJVFMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjY4NDpcXHRzdHJ1Y3QgaWRwZl9yZXNldF9yZWcgcmVzZXRfcmVnO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjY4NTpcXHRzdHJ1Y3QgaWRwZl9odyBodztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC02ODYtXFx0dTE2IG51bV9hdmFpbF9tc2l4O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNjkxLVxcdHN0cnVjdCB2aXJ0Y2hubDJfYWxsb2NfdmVjdG9ycyAqcmVxX3ZlY19jaHVua3M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NjkyOlxcdHN0cnVjdCBpZHBmX3FfdmVjdG9yIG1iX3ZlY3RvcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2OTM6XFx0c3RydWN0IGlkcGZfdmVjdG9yX2xpZm8gdmVjdG9yX3N0YWNrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY5NC1cXHRpcnFyZXR1cm5fdCAoKmlycV9tYl9oYW5kbGVyKShpbnQgaXJxLCB2b2lkICpkYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY5Ni1cXHR1MzIgdHhfdGltZW91dF9jb3VudDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo2OTc6XFx0c3RydWN0IGlkcGZfYXZhaWxfcXVldWVfaW5mbyBhdmFpbF9xdWV1ZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6Njk4OlxcdHN0cnVjdCBpZHBmX3Zwb3J0ICoqdnBvcnRzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTY5OS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqKm5ldGRldnM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzA3OlxcdHN0cnVjdCBpZHBmX3Zwb3J0X2NvbmZpZyAqKnZwb3J0X2NvbmZpZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MDgtXFx0dTE2IG1heF92cG9ydHM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MjItXFx0c3RydWN0IHZpcnRjaG5sMl9nZXRfY2FwYWJpbGl0aWVzIGNhcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzIzOlxcdHN0cnVjdCBpZHBmX3ZjX3huX21hbmFnZXIgKnZjeG5fbW5ncjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzI1OlxcdHN0cnVjdCBpZHBmX2Rldl9vcHMgZGV2X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MjYtXFx0c3RydWN0IGlpZGNfcmRtYV9jb3JlX2Rldl9pbmZvICpjZGV2X2luZm87XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzM3OlxcdHN0cnVjdCBpZHBmX3B0cCAqcHRwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTczOC19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzQwLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc0MTogKiBpZHBmX2lzX3F1ZXVlX21vZGVsX3NwbGl0IC0gY2hlY2sgaWYgcXVldWUgbW9kZWwgaXMgc3BsaXRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03NDItICogQHFfbW9kZWw6IHF1ZXVlIG1vZGVsIHNpbmdsZSBvciBzcGxpdFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzQ1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc0NjpzdGF0aWMgaW5saW5lIGludCBpZHBmX2lzX3F1ZXVlX21vZGVsX3NwbGl0KHUxNiBxX21vZGVsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03NTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzUyOnN0YXRpYyBpbmxpbmUgYm9vbCBpZHBmX3hkcF9lbmFibGVkKGNvbnN0IHN0cnVjdCBpZHBmX3Zwb3J0ICp2cG9ydClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03NTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc1NzojZGVmaW5lIGlkcGZfaXNfY2FwX2VuYShhZGFwdGVyLCBmaWVsZCwgZmxhZykgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc1ODpcXHRpZHBmX2lzX2NhcGFiaWxpdHlfZW5hKGFkYXB0ZXIsIGZhbHNlLCBmaWVsZCwgZmxhZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3NTk6I2RlZmluZSBpZHBmX2lzX2NhcF9lbmFfYWxsKGFkYXB0ZXIsIGZpZWxkLCBmbGFnKSBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzYwOlxcdGlkcGZfaXNfY2FwYWJpbGl0eV9lbmEoYWRhcHRlciwgdHJ1ZSwgZmllbGQsIGZsYWcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjc2Mjpib29sIGlkcGZfaXNfY2FwYWJpbGl0eV9lbmEoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlciwgYm9vbCBhbGwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzYzOlxcdFxcdFxcdCAgICBlbnVtIGlkcGZfY2FwX2ZpZWxkIGZpZWxkLCB1NjQgZmxhZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc2NS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3NjY6ICogaWRwZl9pc19yZG1hX2NhcF9lbmEgLSBEZXRlcm1pbmUgaWYgUkRNQSBpcyBzdXBwb3J0ZWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03NjctICogQGFkYXB0ZXI6IHByaXZhdGUgZGF0YSBzdHJ1Y3RcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTc3MC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3NzE6c3RhdGljIGlubGluZSBib29sIGlkcGZfaXNfcmRtYV9jYXBfZW5hKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzcyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3NzM6XFx0cmV0dXJuIGlkcGZfaXNfY2FwX2VuYShhZGFwdGVyLCBJRFBGX09USEVSX0NBUFMsIFZJUlRDSE5MMl9DQVBfUkRNQSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzc0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTgxNy0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4MTg6ICogaWRwZl9nZXRfcmVzZXJ2ZWRfdmVjcyAtIEdldCByZXNlcnZlZCB2ZWN0b3JzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODE5LSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODIwLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjgyMTpzdGF0aWMgaW5saW5lIHUxNiBpZHBmX2dldF9yZXNlcnZlZF92ZWNzKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODIyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTgyNi0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4Mjc6ICogaWRwZl9nZXRfcmVzZXJ2ZWRfcmRtYV92ZWNzIC0gR2V0IHJlc2VydmVkIFJETUEgdmVjdG9yc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTgyOC0gKiBAYWRhcHRlcjogcHJpdmF0ZSBkYXRhIHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODMxLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjgzMjpzdGF0aWMgaW5saW5lIHUxNiBpZHBmX2dldF9yZXNlcnZlZF9yZG1hX3ZlY3Moc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04MzMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODM3LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjgzODogKiBpZHBmX2dldF9kZWZhdWx0X3Zwb3J0cyAtIEdldCBkZWZhdWx0IG51bWJlciBvZiB2cG9ydHNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04MzktICogQGFkYXB0ZXI6IHByaXZhdGUgZGF0YSBzdHJ1Y3RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NDAtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODQxOnN0YXRpYyBpbmxpbmUgdTE2IGlkcGZfZ2V0X2RlZmF1bHRfdnBvcnRzKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODQyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg0Ni0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4NDc6ICogaWRwZl9nZXRfbWF4X3Zwb3J0cyAtIEdldCBtYXggbnVtYmVyIG9mIHZwb3J0c1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg0OC0gKiBAYWRhcHRlcjogcHJpdmF0ZSBkYXRhIHN0cnVjdFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg0OS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4NTA6c3RhdGljIGlubGluZSB1MTYgaWRwZl9nZXRfbWF4X3Zwb3J0cyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NTUtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODU2OiAqIGlkcGZfZ2V0X21heF90eF9idWZzIC0gR2V0IG1heCBzY2F0dGVyLWdhdGhlciBidWZmZXJzIHN1cHBvcnRlZCBieSB0aGUgZGV2aWNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODU3LSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODU4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjg1OTpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBpZHBmX2dldF9tYXhfdHhfYnVmcyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg2MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04NjQtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODY1OiAqIGlkcGZfZ2V0X21pbl90eF9wa3RfbGVuIC0gR2V0IG1pbiBwYWNrZXQgbGVuZ3RoIHN1cHBvcnRlZCBieSB0aGUgZGV2aWNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODY2LSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODY3LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjg2ODpzdGF0aWMgaW5saW5lIHU4IGlkcGZfZ2V0X21pbl90eF9wa3RfbGVuKHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg3NS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4NzY6ICogaWRwZl9nZXRfbWJ4X3JlZ19hZGRyIC0gR2V0IEJBUjAgbWFpbGJveCByZWdpc3RlciBhZGRyZXNzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODc3LSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04ODEtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODgyOnN0YXRpYyBpbmxpbmUgdm9pZCBfX2lvbWVtICppZHBmX2dldF9tYnhfcmVnX2FkZHIoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04ODMtXFx0XFx0XFx0XFx0XFx0XFx0ICByZXNvdXJjZV9zaXplX3QgcmVnX29mZnNldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg4OC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo4ODk6ICogaWRwZl9nZXRfcnN0YXRfcmVnX2FkZHIgLSBHZXQgQkFSMCByc3RhdCByZWdpc3RlciBhZGRyZXNzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtODkwLSAqIEBhZGFwdGVyOiBwcml2YXRlIGRhdGEgc3RydWN0XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC04OTQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6ODk1OnN0YXRpYyBpbmxpbmUgdm9pZCBfX2lvbWVtICppZHBmX2dldF9yc3RhdF9yZWdfYWRkcihzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTg5Ni1cXHRcXHRcXHRcXHRcXHRcXHQgICAgcmVzb3VyY2Vfc2l6ZV90IHJlZ19vZmZzZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05MDMtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6OTA0OiAqIGlkcGZfZ2V0X3JlZ19hZGRyIC0gR2V0IEJBUjAgcmVnaXN0ZXIgYWRkcmVzc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTkwNS0gKiBAYWRhcHRlcjogcHJpdmF0ZSBkYXRhIHN0cnVjdFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTA5LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjkxMDpzdGF0aWMgaW5saW5lIHZvaWQgX19pb21lbSAqaWRwZl9nZXRfcmVnX2FkZHIoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05MTEtXFx0XFx0XFx0XFx0XFx0ICAgICAgcmVzb3VyY2Vfc2l6ZV90IHJlZ19vZmZzZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTEyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo5MTM6XFx0c3RydWN0IGlkcGZfaHcgKmh3ID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWh3O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTkxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05MTUtXFx0Zm9yIChpbnQgaSA9IDA7IGkgXFx1MDAzYyBody1cXHUwMDNlbnVtX2xhbl9yZWdzOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo5MTY6XFx0XFx0c3RydWN0IGlkcGZfbW1pb19yZWcgKnJlZ2lvbiA9IFxcdTAwMjZody1cXHUwMDNlbGFuX3JlZ3NbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTM5LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjk0MDogKiBpZHBmX2lzX3Jlc2V0X2RldGVjdGVkIC0gY2hlY2sgaWYgd2Ugd2VyZSByZXNldCBhdCBzb21lIHBvaW50XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTQxLSAqIEBhZGFwdGVyOiBkcml2ZXIgc3BlY2lmaWMgcHJpdmF0ZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTk0NC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo5NDU6c3RhdGljIGlubGluZSBib29sIGlkcGZfaXNfcmVzZXRfZGV0ZWN0ZWQoc3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC05NDYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjk1MDpcXHRyZXR1cm4gIShyZWFkbChpZHBmX2dldF9tYnhfcmVnX2FkZHIoYWRhcHRlciwgYWRhcHRlci1cXHUwMDNlaHcuYXJxLVxcdTAwM2VyZWcubGVuKSkgXFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTk1MS1cXHRcXHQgYWRhcHRlci1cXHUwMDNlaHcuYXJxLVxcdTAwM2VyZWcubGVuX21hc2spO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtOTU0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjk1NTogKiBpZHBmX2lzX3Jlc2V0X2luX3Byb2cgLSBjaGVjayBpZiByZXNldCBpcyBpbiBwcm9ncmVzc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTk1Ni0gKiBAYWRhcHRlcjogZHJpdmVyIHNwZWNpZmljIHByaXZhdGUgc3RydWN0dXJlXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE0OjAxOjA4LjE0OTc4MzY3NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NDc0MDM0NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBUaGlzIFBDSSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGEgUENJIGRyaXZlci4gTXkgZmlyc3QgdGhvdWdodCBpcyBhbHdheXMsIGlzIHRoZXJlIGFuIGVtdWxhdG9yIGF2YWlsYWJsZT8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIGludGVyYWN0IHdpdGggaXQsIGFuZCBlbXVsYXRpb24gaXMgdXN1YWxseSB0aGUgZWFzaWVzdCByb3V0ZS4gTGV0J3Mgc2VlIGlmIHRoaXMgcGFydGljdWxhciBkcml2ZXIgaGFzIGEga25vd24gZW11bGF0b3Igb3IgaWYgaXQncyByZWFjaGFibGUgaW4gYSBHQ0UvUUVNVSBlbnZpcm9ubWVudC4gSXQncyB1c3VhbGx5IHRoZSBjYXNlIHRoYXQgSW50ZWwgSURQRiwgb3Igc2ltaWxhciBuZXR3b3JrIGRldmljZXMsIGlzIGEgcGh5c2ljYWwgcGllY2Ugb2YgaGFyZHdhcmUuIEhvd2V2ZXIsIEkgbmVlZCB0byBydWxlIG91dCB0aGUgcG9zc2liaWxpdHkgb2YgYSB2aXJ0dWFsaXplZCB2ZXJzaW9uLiBJIGtub3cgdGhlIElEUEYgaXMgdXN1YWxseSBhIHBoeXNpY2FsIGRldmljZS4gVG8gZ2V0IHRoZSBzcGVjaWZpYyBQQ0kgSURzIGZvciB0aGlzIGRyaXZlciwgSSBzaG91bGQgY2hlY2sgdGhlIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTI5MiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE0OjAxOjEyLjc5NzE4ODczNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzAzNzU2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZHBmX3BjaV90YmxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYz0yNz1zdGF0aWMgaW50IGlkcGZfZ2V0X2RldmljZV90eXBlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy01MS0gKiBAYWRhcHRlcjogYWRhcHRlciB0byBpbml0aWFsaXplXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYzo1MjogKiBAZW50OiBlbnRyeSBpbiBpZHBmX3BjaV90YmxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTUzLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jPTE5MD1zdGF0aWMgaW50IGlkcGZfY2ZnX2h3KHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTIzMS0gKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjIzMjogKiBAZW50OiBlbnRyeSBpbiBpZHBmX3BjaV90YmxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTIzMy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYz0yMzY9c3RhdGljIGludCBpZHBmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zNzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYzozNzc6LyogaWRwZl9wY2lfdGJsIC0gUENJIERldiBpZHBmIElEIFRhYmxlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zNzgtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYzozNzk6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGlkcGZfcGNpX3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMzgwLVxcdHsgUENJX1ZERVZJQ0UoSU5URUwsIElEUEZfREVWX0lEX1BGKX0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTM4NC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM6Mzg1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpZHBmX3BjaV90YmwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMzg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM9Mzg3PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpZHBmX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTM4OC1cXHQubmFtZVxcdFxcdFxcdD0gS0JVSUxEX01PRE5BTUUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYzozODk6XFx0LmlkX3RhYmxlXFx0XFx0PSBpZHBmX3BjaV90YmwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zOTAtXFx0LnByb2JlXFx0XFx0XFx0PSBpZHBmX3Byb2JlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNDowMToxMi44NTQyMzMxOTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDY0NTM5OTU2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQQ0kgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggcmVsYXRlZCB0byBJbnRlbCdzIGBpZHBmYCBkcml2ZXIuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgYWJvdXQgaGFuZGxpbmcgUENJIGRldmljZXMsIHNwZWNpZmljYWxseSB3aXRoIHRoZSBJRHMgYElEUEZfREVWX0lEX1BGYCBhbmQgYElEUEZfREVWX0lEX1ZGYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAqaXMgdGhpcyBkZXZpY2UgZW11bGF0ZWQgaW4gUUVNVT8qIE5vcGUsIGl0J3MgYWN0dWFsIGhhcmR3YXJlLiBCdXQgdGhlbiBJIHJlbWVtYmVyLCAqd2FpdCwgc3l6Ym90IHJlcG9ydGVkIGEgYnVnIGluIGBpZHBmX3Byb2JlYCo/XG5cbk9rYXksICppcyBzeXpib3QgZnV6emluZyB0aGlzIGRyaXZlciB2aWEgc29tZSB2aXJ0dWFsIFBDSSBmcmFtZXdvcms/KiBJIGltbWVkaWF0ZWx5IHRoaW5rIGFib3V0IGBzeXpfcGNpX2RldmljZWAsIGFuZCBJIHJlY2FsbCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLCB3aGljaCBpbmplY3RzIFBDSSBkZXZpY2VzIHZpYSBgdmZpb2Agb3Igc2ltaWxhciBtZWNoYW5pc21zLiBJdCBtYXkgZXZlbiB1c2UgYSBmYWtlIFBDSSBkZXZpY2UuIFNvLCBzeXprYWxsZXIgKmNhbiogZW11bGF0ZSBQQ0kgZGV2aWNlcy5cblxuTm93LCB0aGUgc3BlY2lmaWMgcGF0Y2ggYWRkcyBgcGNpX2Rpc2FibGVfcHRtKHBkZXYpO2AgaW4gYm90aCBgaWRwZl9yZW1vdmVgIGFuZCBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgaWRwZl9wcm9iZWAuIFNvLCAqaXMgdGhpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlPyogWWVzLCBpdCdzIGRpc2FibGluZyBQVE0gKFByZWNpc2lvbiBUaW1lIE1lYXN1cmVtZW50KS4gKklzIGl0IHdvcnRoIGZ1enppbmc/KiBUaGUgY2hhbmdlIGlzIGp1c3QgdGhhdCBzaW5nbGUgbGluZS4gSXQncyBhIGNsZWFudXAsIGZpeGluZyBhIGJ1ZyB3aGVyZSBQVE0gd2Fzbid0IGJlaW5nIGRpc2FibGVkLCB3aGljaCBsaWtlbHkgY2F1c2VkIGEgd2FybmluZyBvciByZXNvdXJjZSBsZWFrLiAqSXMgdGhlcmUgYW55IGNvbXBsZXggbG9naWMgdG8gZnV6ej8qIE5vLCBpdCdzIGEgc2ltcGxlIGBwY2lfZGlzYWJsZV9wdG0ocGRldilgIGNhbGwuXG5cblRoZSBjb21taXQgbWVzc2FnZSBzYXlzIFwic3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XCIsIHdoaWNoIHRlbGxzIG1lIHRoYXQgU3l6a2FsbGVyICpkaWQqIGZpbmQgYSBidWcuIEhvd2V2ZXIsIGlmIHRoZSBwYXRjaCBvbmx5IGFkZHMgYHBjaV9kaXNhYmxlX3B0bShwZGV2KWAsIHRoZXJlJ3Mgbm8gbmV3IGxvZ2ljIHRvIGZ1enosIGp1c3QgYSBzaW1wbGUgZml4LiAqRG9lcyBpdCBlbmFibGUgYW55IG5ldyBmZWF0dXJlPyogTm9wZS4gKkRvZXMgaXQgYWRkIG5ldyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWM/KiBOb3BlLiAqRG9lcyBpdCBtb2RpZnkgZXhlY3V0aW9uIGZsb3c/KiBJdCBqdXN0IGNhbGxzIGEgZnVuY3Rpb24gdG8gY2xlYW4gdXAuXG5cbipTaG91bGQgd2UgZnV6eiBpdD8qIElmIGl0J3MgKmp1c3QqIGEgY2xlYW51cCBpbiB0aGUgZXJyb3IgcGF0aCwgdGhlcmUgYXJlbid0IHNwZWNpZmljIGZ1bmN0aW9ucyB0byBmb2N1cyBvbiwgZXhjZXB0IG1heWJlIGBpZHBmX3Byb2JlYCBhbmQgYGlkcGZfcmVtb3ZlYCwgYnV0IHRob3NlIGFyZSBhbHJlYWR5IGZ1enplZCBieSB0aGUgUENJIGZ1enplciwgYW55d2F5LiBUaGVyZWZvcmUsICppcyBpdCB3b3J0aCBmdXp6aW5nPypcblxuSSByZWNhbGwgdGhlIHJ1bGU6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogLi4uIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXCIgQnV0IHRoZW4gSSByZW1lbWJlciB0aGF0IFBDSSBkZXZpY2VzIENBTiBiZSBlbXVsYXRlZCBieSBzeXprYWxsZXIgdXNpbmcgYHN5el9wY2lfZGV2aWNlYCEgU28sIHRoZSBxdWVzdGlvbiByZW1haW5zOiBkb2VzICp0aGlzIHBhdGNoKiBpbnRyb2R1Y2UgYW55IG5ldyBsb2dpYyB0byBiZSBoZWF2aWx5IGZ1enplZD8gTm8sIGl0IGp1c3QgYWRkcyBgcGNpX2Rpc2FibGVfcHRtKHBkZXYpYCBpbiB0aGUgY2xlYW51cCBwYXRoLiBTbywgbGV0J3Mgbm93IGNoZWNrIHdoYXQgYHBjaV9kaXNhYmxlX3B0bWAgYWN0dWFsbHkgKmRvZXMqLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjM0MSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNDowMToyMy40OTk2MzQ2OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzUwMDQ5NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2Rpc2FibGVfcHRtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvcGNpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3BjaS9wY2llL3B0bS5jPTIyND1FWFBPUlRfU1lNQk9MKHBjaV9lbmFibGVfcHRtKTtcXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jLTIyNS1cXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jOjIyNjpzdGF0aWMgdm9pZCBfX3BjaV9kaXNhYmxlX3B0bShzdHJ1Y3QgcGNpX2RldiAqZGV2KVxcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmMtMjI3LXtcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmMtMjM5LS8qKlxcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmM6MjQwOiAqIHBjaV9kaXNhYmxlX3B0bSgpIC0gRGlzYWJsZSBQcmVjaXNpb24gVGltZSBNZWFzdXJlbWVudFxcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmMtMjQxLSAqIEBkZXY6IFBDSSBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmMtMjQ0LSAqL1xcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmM6MjQ1OnZvaWQgcGNpX2Rpc2FibGVfcHRtKHN0cnVjdCBwY2lfZGV2ICpkZXYpXFxuZHJpdmVycy9wY2kvcGNpZS9wdG0uYy0yNDYte1xcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmMtMjQ3LVxcdGlmIChkZXYtXFx1MDAzZXB0bV9lbmFibGVkKSB7XFxuZHJpdmVycy9wY2kvcGNpZS9wdG0uYzoyNDg6XFx0XFx0X19wY2lfZGlzYWJsZV9wdG0oZGV2KTtcXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jLTI0OS1cXHRcXHRkZXYtXFx1MDAzZXB0bV9lbmFibGVkID0gMDtcXG4tLVxcbmRyaXZlcnMvcGNpL3BjaWUvcHRtLmMtMjUxLX1cXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jOjI1MjpFWFBPUlRfU1lNQk9MKHBjaV9kaXNhYmxlX3B0bSk7XFxuZHJpdmVycy9wY2kvcGNpZS9wdG0uYy0yNTMtXFxuLS1cXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jPTI1OD12b2lkIHBjaV9zdXNwZW5kX3B0bShzdHJ1Y3QgcGNpX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9wY2kvcGNpZS9wdG0uYy0yNjAtXFx0aWYgKGRldi1cXHUwMDNlcHRtX2VuYWJsZWQpXFxuZHJpdmVycy9wY2kvcGNpZS9wdG0uYzoyNjE6XFx0XFx0X19wY2lfZGlzYWJsZV9wdG0oZGV2KTtcXG5kcml2ZXJzL3BjaS9wY2llL3B0bS5jLTI2Mi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE0OjAxOjIzLjY3NDY0NzExM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzODQzNDkxMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZWNpc2lvbiBmb3IgYSBTaW1wbGUgQ2xlYW51cCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjbGVhbnVwIHBhdGNoLiBUaGUgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIklzIHRoaXMgZXZlbiB3b3J0aCB0aGUgZWZmb3J0IG9mIGZ1enppbmc/XCIgVGhlIHByb21wdCBnaXZlcyBhIGNsZWFyIGhldXJpc3RpYzogSWYgaXQgdG91Y2hlcyBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgSSBuZWVkIHRvIHZlcmlmeSBpdHMgZXhlY3V0YWJpbGl0eSB3aXRoIGNvZGUgc2VhcmNoIHRvb2xzIGFuZCB0aGVuIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5UaGlzIG9uZSAqZG9lcyogdG91Y2ggYSBkcml2ZXIsIGBpZHBmYC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBpdC4gVGhlIG5leHQgcXVlc3Rpb24gaXMgZXhlY3V0YWJpbGl0eS4gVGhhbmtmdWxseSwgSSBrbm93IFBDSSBmdXp6aW5nIHRocm91Z2ggdG9vbHMgbGlrZSBzeXprYWxsZXIgb2ZmZXJzIGEgcGF0aC4gU28sIGl0IGNhbiBiZSBleGVjdXRlZC5cblxuTm93LCBkbyBhbnkgb2YgdGhlIHByb21wdCdzIGV4Y2x1c2lvbiBjcml0ZXJpYSBhcHBseT8gRG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgZGVjb3JhdGl2ZSBjaGFuZ2VzIOKAkyBub25lIG9mIHRoYXQgaGVyZS4gVGhlIGNvZGUgcGF0aCBpc24ndCBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFN5emthbGxlcidzIFBDSSBmdXp6ZXIgZ2VuZXJhdGVzIHJhbmRvbSBQQ0kgZGV2aWNlcywgc28gZXZlbiBpZiBpdCBkb2Vzbid0ICpzcGVjaWZpY2FsbHkqIGVtdWxhdGUgYGlkcGZgLCBpdCBjYW4gbWF0Y2ggKmFueSogUENJIElELCB0aGVyZWZvcmUgaXQgY2FuIGJlIHJlYWNoZWQuXG5cbkhvd2V2ZXIsIHRoZSBjaGFuZ2UgaXRzZWxmIGlzIGV4dHJlbWVseSBtaW5pbWFsOyBpdCdzIGEgY2FsbCB0byBhIGNsZWFudXAgZnVuY3Rpb24uIElmIEkgc2F5IGBXb3J0aEZ1enppbmc9dHJ1ZWAsIEkgaGF2ZSB0byBqdXN0aWZ5IGl0LiBJIG5lZWQgdG8gZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0LiBXaGF0IHNwZWNpZmljIGZ1bmN0aW9ucyBhcmUgdG91Y2hlZCBieSB0aGlzIHBhdGNoPyBJdCdzIGBpZHBmX3JlbW92ZWAgYW5kIGBpZHBmX3Byb2JlYC4gTGV0J3MgZGlnIGludG8gdGhvc2UgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODI3OCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNDowMTozMC4wNTg5OTg4MzZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NDQ5MjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlkcGZfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jPTE5MD1zdGF0aWMgaW50IGlkcGZfY2ZnX2h3KHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTIyOS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjIzMDogKiBpZHBmX3Byb2JlIC0gRGV2aWNlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTIzMS0gKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3RcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmMtMjM1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmM6MjM2OnN0YXRpYyBpbnQgaWRwZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTIzNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jPTM4Nz1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaWRwZl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jLTM4OS1cXHQuaWRfdGFibGVcXHRcXHQ9IGlkcGZfcGNpX3RibCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jOjM5MDpcXHQucHJvYmVcXHRcXHRcXHQ9IGlkcGZfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uYy0zOTEtXFx0LnNyaW92X2NvbmZpZ3VyZVxcdD0gaWRwZl9zcmlvdl9jb25maWd1cmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE0OjAxOjMwLjExNDQ1Njc5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNTUyNTQ2OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSB0aG91Z2h0cywgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgY29udGV4dCBpcyBteSBhcmVhIG9mIGV4cGVydGlzZTpcblxuKipDaGVja2luZyB0aGUgSURQRiBTZXR1cCoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMsIGBpZHBmX3Byb2JlYCBhbmQgYGlkcGZfcmVtb3ZlYC4gVGhlc2UgYXJlIGNsZWFybHkgcmVsYXRlZCB0byB0aGUgSURQRiBtb2R1bGUsIHByb2JhYmx5IGluaXRpYWxpemF0aW9uIGFuZCByZW1vdmFsIHJvdXRpbmVzIHJlc3BlY3RpdmVseS4gRmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIHF1aWNrbHkgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24uIElzIHRoZXJlIGFueSBlbmFibGluZyBjb25maWd1cmF0aW9uIGZvciB0aGlzPyBZZXAsIHRoZXJlIGl0IGlzOiBgQ09ORklHX0lEUEZgLiBFeGNlbGxlbnQuIFRoYXQncyB0aGUgYmFzZWxpbmUuIE5vdyBJIGtub3cgd2hldGhlciB0aGlzIHBhcnRpY3VsYXIgSURQRiBmZWF0dXJlIGlzIGludGVuZGVkIHRvIGJlIGNvbXBpbGVkIGludG8gdGhpcyBidWlsZC4gTm93IEkgY2FuIG1vdmUgZm9yd2FyZCB3aXRoIGFuYWx5emluZyB0aGUgYGlkcGZfcHJvYmVgIGFuZCBgaWRwZl9yZW1vdmVgIHJvdXRpbmVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MzUyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTQ6MDE6MzMuMjY5NzEzODYyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTU3MzYzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSURQRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnOjQ6Y29uZmlnIElEUEZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctNS1cXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIFN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc9MTc9aWYgSURQRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWc6MTk6Y29uZmlnIElEUEZfU0lOR0xFUVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy0yMC1cXHRib29sIFxcXCJpZHBmIHNpbmdsZXEgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTQ6MDE6MzMuMzI5MjkzNjE2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0OTI1NzMxMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIElEUEYgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHJpZ2h0IG9mZiB0aGUgYmF0LCBpdCBzZWVtcyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBpcyBgSURQRmAuIE5vdywgdGhlIHF1ZXN0aW9uIGlzOiBpcyB0aGlzIHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZz8gSXQncyBhIHNpbXBsZSBmaXgsIGEgcmVzb3VyY2UgbGVhaywgc3BlY2lmaWNhbGx5IHRoZSBQVE0gaXNuJ3QgYmVpbmcgZGlzYWJsZWQuIElmIEknbSB1bmRlcnN0YW5kaW5nIHRoaXMgY29ycmVjdGx5LCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGhpbmdlcyBhcm91bmQgYGlkcGZfcHJvYmVgIGFuZCBgaWRwZl9yZW1vdmVgLiBTaW5jZSB0aGUgcm9vdCBjYXVzZSBpcyBhIHNpbXBsZSBtaXNzaW5nIGRpc2FibGUgb2YgYSBmZWF0dXJlLCBhbmQgYXNzdW1pbmcgdGhlIGlzc3VlIGlzIHdlbGwgdW5kZXJzdG9vZCBhbHJlYWR5LCBiZWNhdXNlIGl0J3MgYWxyZWFkeSBpbiB0aGUgcGlwZWxpbmUsIGl0J3MgbGlrZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIHByb2JsZW0uXG5cbkNvbnNpZGVyaW5nIHRoYXQgdGhlIHBhdGNoIGhhcyBsaWtlbHkgYWxyZWFkeSBiZWVuIGZvdW5kIGJ5IHN5emthbGxlciBvciBhbm90aGVyIHRlc3RlciwgYW5kIHRoZSBmaXggaXMgZnVuY3Rpb25hbGx5IHNvdW5kIChkaXNhYmxpbmcgUFRNKSwgSSdtIGxlYW5pbmcgdG93YXJkcyB0aGUgY29uY2x1c2lvbiB0aGF0IHRoaXMgaXMgd29ydGh3aGlsZS4gTGV0J3MgcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIE15IHByaW1hcnkgZm9jdXMgc2hvdWxkIGJlIG9uIHRoZSBgaWRwZl9wcm9iZWAgYW5kIGBpZHBmX3JlbW92ZWAgZnVuY3Rpb25zLiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGZvciBvdGhlciBjb25maWd1cmF0aW9ucyB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGFuZCB0aGUgc3BlY2lmaWMgZmlsZSB0aGlzIHBhdGNoIHRvdWNoZXMgaXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9tYWluLmNgLiBCZWZvcmUgSSBwcm9jZWVkLCBJIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBgI2lmZGVmYCBkaXJlY3RpdmVzIGFyb3VuZCB0aGUgY29kZSBJJ20gaW52ZXN0aWdhdGluZyB0byBlbnN1cmUgSSBoYXZlIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gaW4gdGhpcyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTc3MCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNDowMTozOC44MjE4Njk3NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjI5NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTQwOlxcdFxcdGRlc3Ryb3lfd29ya3F1ZXVlKGFkYXB0ZXItXFx1MDAzZXN0YXRzX3dxKTtcXG4gMTQxOlxcdFxcdGRlc3Ryb3lfd29ya3F1ZXVlKGFkYXB0ZXItXFx1MDAzZXZjX2V2ZW50X3dxKTtcXG4gMTQyOlxcdFxcbiAxNDM6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFkYXB0ZXItXFx1MDAzZW1heF92cG9ydHM7IGkrKykge1xcbiAxNDQ6XFx0XFx0XFx0aWYgKCFhZGFwdGVyLVxcdTAwM2V2cG9ydF9jb25maWdbaV0pXFxuIDE0NTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gMTQ2OlxcdFxcdFxcdGtmcmVlKGFkYXB0ZXItXFx1MDAzZXZwb3J0X2NvbmZpZ1tpXS1cXHUwMDNldXNlcl9jb25maWcucV9jb2FsZXNjZSk7XFxuIDE0NzpcXHRcXHRcXHRrZnJlZShhZGFwdGVyLVxcdTAwM2V2cG9ydF9jb25maWdbaV0pO1xcbiAxNDg6XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNldnBvcnRfY29uZmlnW2ldID0gTlVMTDtcXG4gMTQ5OlxcdFxcdH1cXG4gMTUwOlxcdFxcdGtmcmVlKGFkYXB0ZXItXFx1MDAzZXZwb3J0X2NvbmZpZyk7XFxuIDE1MTpcXHRcXHRhZGFwdGVyLVxcdTAwM2V2cG9ydF9jb25maWcgPSBOVUxMO1xcbiAxNTI6XFx0XFx0a2ZyZWUoYWRhcHRlci1cXHUwMDNlbmV0ZGV2cyk7XFxuIDE1MzpcXHRcXHRhZGFwdGVyLVxcdTAwM2VuZXRkZXZzID0gTlVMTDtcXG4gMTU0OlxcdFxcdGtmcmVlKGFkYXB0ZXItXFx1MDAzZXZjeG5fbW5ncik7XFxuIDE1NTpcXHRcXHRhZGFwdGVyLVxcdTAwM2V2Y3huX21uZ3IgPSBOVUxMO1xcbiAxNTY6XFx0XFxuIDE1NzpcXHRcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZhZGFwdGVyLVxcdTAwM2V2cG9ydF9jdHJsX2xvY2spO1xcbiAxNTg6XFx0XFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2YWRhcHRlci1cXHUwMDNldmVjdG9yX2xvY2spO1xcbiAxNTk6XFx0XFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2YWRhcHRlci1cXHUwMDNlcXVldWVfbG9jayk7XFxuIDE2MDpcXHRcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZhZGFwdGVyLVxcdTAwM2V2Y19idWZfbG9jayk7XFxuIDE2MTpcXHRcXG4gMTYyOlxcdFxcdHBjaV9kaXNhYmxlX3B0bShwZGV2KTtcXG4gMTYzOlxcdFxcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTtcXG4gMTY0OlxcdFxcdGtmcmVlKGFkYXB0ZXIpO1xcbiAxNjU6XFx0fVxcbiAxNjY6XFx0XFxuIDE2NzpcXHQvKipcXG4gMTY4OlxcdCAqIGlkcGZfc2h1dGRvd24gLSBQQ0kgY2FsbGJhY2sgZm9yIHNodXR0aW5nIGRvd24gZGV2aWNlXFxuIDE2OTpcXHQgKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3RcXG4gMTcwOlxcdCAqL1xcbiAxNzE6XFx0c3RhdGljIHZvaWQgaWRwZl9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4gMTcyOlxcdHtcXG4gMTczOlxcdFxcdHN0cnVjdCBpZHBmX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XFxuIDE3NDpcXHRcXG4gMTc1OlxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2YWRhcHRlci1cXHUwMDNlc2Vydl90YXNrKTtcXG4gMTc2OlxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2YWRhcHRlci1cXHUwMDNldmNfZXZlbnRfdGFzayk7XFxuIDE3NzpcXHRcXHRpZHBmX3ZjX2NvcmVfZGVpbml0KGFkYXB0ZXIpO1xcbiAxNzg6XFx0XFx0aWRwZl9kZWluaXRfZGZsdF9tYngoYWRhcHRlcik7XFxuIDE3OTpcXHRcXG4gMTgwOlxcdFxcdGlmIChzeXN0ZW1fc3RhdGUgPT0gU1lTVEVNX1BPV0VSX09GRilcXG4gMTgxOlxcdFxcdFxcdHBjaV9zZXRfcG93ZXJfc3RhdGUocGRldiwgUENJX0QzaG90KTtcXG4gMTgyOlxcdH1cXG4gMTgzOlxcdFxcbiAxODQ6XFx0LyoqXFxuIDE4NTpcXHQgKiBpZHBmX2NmZ19odyAtIEluaXRpYWxpemUgSFcgc3RydWN0XFxuIDE4NjpcXHQgKiBAYWRhcHRlcjogYWRhcHRlciB0byBzZXR1cCBodyBzdHJ1Y3QgZm9yXFxuIDE4NzpcXHQgKlxcbiAxODg6XFx0ICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG9uIGZhaWx1cmVcXG4gMTg5OlxcdCAqL1xcbiAxOTA6XFx0c3RhdGljIGludCBpZHBmX2NmZ19odyhzdHJ1Y3QgaWRwZl9hZGFwdGVyICphZGFwdGVyKVxcbiAxOTE6XFx0e1xcbiAxOTI6XFx0XFx0cmVzb3VyY2Vfc2l6ZV90IHJlc19zdGFydCwgbWJ4X3N0YXJ0LCByc3RhdF9zdGFydDtcXG4gMTkzOlxcdFxcdHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gYWRhcHRlci1cXHUwMDNlcGRldjtcXG4gMTk0OlxcdFxcdHN0cnVjdCBpZHBmX2h3ICpodyA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VodztcXG4gMTk1OlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuIDE5NjpcXHRcXHRsb25nIGxlbjtcXG4gMTk3OlxcdFxcbiAxOTg6XFx0XFx0cmVzX3N0YXJ0ID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIDApO1xcbiAxOTk6XFx0XFxuIDIwMDpcXHRcXHQvKiBNYXAgbWFpbGJveCBzcGFjZSBmb3IgdmlydGNobmwgY29tbXVuaWNhdGlvbiAqL1xcbiAyMDE6XFx0XFx0bWJ4X3N0YXJ0ID0gcmVzX3N0YXJ0ICsgYWRhcHRlci1cXHUwMDNlZGV2X29wcy5zdGF0aWNfcmVnX2luZm9bMF0uc3RhcnQ7XFxuIDIwMjpcXHRcXHRsZW4gPSByZXNvdXJjZV9zaXplKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VkZXZfb3BzLnN0YXRpY19yZWdfaW5mb1swXSk7XFxuIDIwMzpcXHRcXHRody1cXHUwMDNlbWJ4LnZhZGRyID0gZGV2bV9pb3JlbWFwKGRldiwgbWJ4X3N0YXJ0LCBsZW4pO1xcbiAyMDQ6XFx0XFx0aWYgKCFody1cXHUwMDNlbWJ4LnZhZGRyKSB7XFxuIDIwNTpcXHRcXHRcXHRwY2lfZXJyKHBkZXYsIFxcXCJmYWlsZWQgdG8gYWxsb2NhdGUgQkFSMCBtYnggcmVnaW9uXFxcXG5cXFwiKTtcXG4gMjA2OlxcdFxcbiAyMDc6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDIwODpcXHRcXHR9XFxuIDIwOTpcXHRcXHRody1cXHUwMDNlbWJ4LmFkZHJfc3RhcnQgPSBhZGFwdGVyLVxcdTAwM2VkZXZfb3BzLnN0YXRpY19yZWdfaW5mb1swXS5zdGFydDtcXG4gMjEwOlxcdFxcdGh3LVxcdTAwM2VtYnguYWRkcl9sZW4gPSBsZW47XFxuIDIxMTpcXHRcXG4gMjEyOlxcdFxcdC8qIE1hcCByc3RhdCBzcGFjZSBmb3IgcmVzZXRzICovXFxuIDIxMzpcXHRcXHRyc3RhdF9zdGFydCA9IHJlc19zdGFydCArIGFkYXB0ZXItXFx1MDAzZWRldl9vcHMuc3RhdGljX3JlZ19pbmZvWzFdLnN0YXJ0O1xcbiAyMTQ6XFx0XFx0bGVuID0gcmVzb3VyY2Vfc2l6ZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlZGV2X29wcy5zdGF0aWNfcmVnX2luZm9bMV0pO1xcbiAyMTU6XFx0XFx0aHctXFx1MDAzZXJzdGF0LnZhZGRyID0gZGV2bV9pb3JlbWFwKGRldiwgcnN0YXRfc3RhcnQsIGxlbik7XFxuIDIxNjpcXHRcXHRpZiAoIWh3LVxcdTAwM2Vyc3RhdC52YWRkcikge1xcbiAyMTc6XFx0XFx0XFx0cGNpX2VycihwZGV2LCBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIEJBUjAgcnN0YXQgcmVnaW9uXFxcXG5cXFwiKTtcXG4gMjE4OlxcdFxcbiAyMTk6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDIyMDpcXHRcXHR9XFxuIDIyMTpcXHRcXHRody1cXHUwMDNlcnN0YXQuYWRkcl9zdGFydCA9IGFkYXB0ZXItXFx1MDAzZWRldl9vcHMuc3RhdGljX3JlZ19pbmZvWzFdLnN0YXJ0O1xcbiAyMjI6XFx0XFx0aHctXFx1MDAzZXJzdGF0LmFkZHJfbGVuID0gbGVuO1xcbiAyMjM6XFx0XFxuIDIyNDpcXHRcXHRody1cXHUwMDNlYmFjayA9IGFkYXB0ZXI7XFxuIDIyNTpcXHRcXG4gMjI2OlxcdFxcdHJldHVybiAwO1xcbiAyMjc6XFx0fVxcbiAyMjg6XFx0XFxuIDIyOTpcXHQvKipcXG4gMjMwOlxcdCAqIGlkcGZfcHJvYmUgLSBEZXZpY2UgaW5pdGlhbGl6YXRpb24gcm91dGluZVxcbiAyMzE6XFx0ICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XFxuIDIzMjpcXHQgKiBAZW50OiBlbnRyeSBpbiBpZHBmX3BjaV90YmxcXG4gMjMzOlxcdCAqXFxuIDIzNDpcXHQgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgb24gZmFpbHVyZVxcbiAyMzU6XFx0ICovXFxuIDIzNjpcXHRzdGF0aWMgaW50IGlkcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuIDIzNzpcXHR7XFxuIDIzODpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbiAyMzk6XFx0XFx0c3RydWN0IGlkcGZfYWRhcHRlciAqYWRhcHRlcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTQ6MDE6MzguODIxOTk0MTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA0MzYzNTM0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gY2hlY2tpbmcgdGhlIHJlc3Qgb2YgYGlkcGZfcHJvYmVgLCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBhY2NvdW50LCBhc3N1bWluZyBJJ20gYWxyZWFkeSBkZWVwIGluIHRoZSB3ZWVkcyBvZiB0aGlzIHN1YmplY3Q6XG5cbioqQW5hbHl6aW5nIHRoZSBSZW1haW5kZXIgb2YgYGlkcGZfcHJvYmVgKipcblxuQWxyaWdodCwgc28gd2UndmUgbG9va2VkIGF0IHRoZSBpbml0aWFsIGFzcGVjdHMgb2YgYGlkcGZfcHJvYmVgLCBhbmQgbm93IGl0J3MgdGltZSB0byB0aG9yb3VnaGx5IGV4YW1pbmUgdGhlIHJlbWFpbmluZyBwYXJ0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHksIHNvIHRoaXMgaXNuJ3QganVzdCBhYm91dCBhIGN1cnNvcnkgZ2xhbmNlLiBJJ20gZ29pbmcgdG8gY2FyZWZ1bGx5IGRpc3NlY3Qgd2hhdCdzIGxlZnQsIG1ha2luZyBzdXJlIEkgZG9uJ3QgbWlzcyBhbnkgY3JpdGljYWwgZGV0YWlscyB0aGF0IG1pZ2h0IGltcGFjdCBpdHMgb3ZlcmFsbCBwZXJmb3JtYW5jZSwgc3RhYmlsaXR5LCBvciBzZWN1cml0eSwgcGFydGljdWxhcmx5IGlmIHRoaXMgaXMgc29tZXRoaW5nIGJlaW5nIGFjdGl2ZWx5IGRlcGxveWVkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBlZGdlIGNhc2VzIHRoYXQgaGF2ZW4ndCBiZWVuIGFkZHJlc3NlZCwgcG9zc2libGUgYXJlYXMgb2Ygb3B0aW1pemF0aW9uLCBhbmQgYW55IGluZGljYXRpb24gb2YgcG90ZW50aWFsIGJ1Z3Mgb3IgdnVsbmVyYWJpbGl0aWVzLiBNeSBmb2N1cyBpcyBvbiBlbnN1cmluZyBhIHJvYnVzdCBhbmQgcmVsaWFibGUgaW1wbGVtZW50YXRpb24uIEknbGwgYmUgYXNraW5nIG15c2VsZiBxdWVzdGlvbnM6IEFyZSB0aGVyZSBhbnkgZXJyb3IgaGFuZGxpbmcgZ2Fwcz8gSXMgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlIHRocmVhZC1zYWZlPyBEb2VzIHRoZSBsb2dpYyBoZXJlIGFkaGVyZSB0byB0aGUgc3RhbmRhcmRzIGFuZCBiZXN0IHByYWN0aWNlcyB0aGF0IGFyZSBleHBlY3RlZCBmb3IgdGhpcyBjb250ZXh0PyBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBjb2RlIGlzIGJvdGggZnVuY3Rpb25hbCBhbmQgd2VsbC1hcmNoaXRlY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5MzMsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE0OjAxOjQyLjg2NTYzMTg3OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI0MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNDA6XFx0XFx0aW50IGVycjtcXG4gMjQxOlxcdFxcbiAyNDI6XFx0XFx0YWRhcHRlciA9IGt6YWxsb2Nfb2JqKCphZGFwdGVyKTtcXG4gMjQzOlxcdFxcdGlmICghYWRhcHRlcilcXG4gMjQ0OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAyNDU6XFx0XFxuIDI0NjpcXHRcXHRhZGFwdGVyLVxcdTAwM2VyZXFfdHhfc3BsaXRxID0gdHJ1ZTtcXG4gMjQ3OlxcdFxcdGFkYXB0ZXItXFx1MDAzZXJlcV9yeF9zcGxpdHEgPSB0cnVlO1xcbiAyNDg6XFx0XFxuIDI0OTpcXHRcXHRhZGFwdGVyLVxcdTAwM2VwZGV2ID0gcGRldjtcXG4gMjUwOlxcdFxcdGVyciA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcXG4gMjUxOlxcdFxcdGlmIChlcnIpXFxuIDI1MjpcXHRcXHRcXHRnb3RvIGVycl9mcmVlO1xcbiAyNTM6XFx0XFxuIDI1NDpcXHRcXHRlcnIgPSBwY2ltX3JlcXVlc3RfcmVnaW9uKHBkZXYsIDAsIHBjaV9uYW1lKHBkZXYpKTtcXG4gMjU1OlxcdFxcdGlmIChlcnIpIHtcXG4gMjU2OlxcdFxcdFxcdHBjaV9lcnIocGRldiwgXFxcInBjaW1fcmVxdWVzdF9yZWdpb24gZmFpbGVkICVwZVxcXFxuXFxcIiwgRVJSX1BUUihlcnIpKTtcXG4gMjU3OlxcdFxcbiAyNTg6XFx0XFx0XFx0Z290byBlcnJfZnJlZTtcXG4gMjU5OlxcdFxcdH1cXG4gMjYwOlxcdFxcbiAyNjE6XFx0XFx0ZXJyID0gcGNpX2VuYWJsZV9wdG0ocGRldiwgTlVMTCk7XFxuIDI2MjpcXHRcXHRpZiAoZXJyKVxcbiAyNjM6XFx0XFx0XFx0cGNpX2RiZyhwZGV2LCBcXFwiUENJZSBQVE0gaXMgbm90IHN1cHBvcnRlZCBieSBQQ0llIGJ1cy9jb250cm9sbGVyXFxcXG5cXFwiKTtcXG4gMjY0OlxcdFxcbiAyNjU6XFx0XFx0Lyogc2V0IHVwIGZvciBoaWdoIG9yIGxvdyBkbWEgKi9cXG4gMjY2OlxcdFxcdGVyciA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJlbnQoZGV2LCBETUFfQklUX01BU0soNjQpKTtcXG4gMjY3OlxcdFxcdGlmIChlcnIpIHtcXG4gMjY4OlxcdFxcdFxcdHBjaV9lcnIocGRldiwgXFxcIkRNQSBjb25maWd1cmF0aW9uIGZhaWxlZDogJXBlXFxcXG5cXFwiLCBFUlJfUFRSKGVycikpO1xcbiAyNjk6XFx0XFxuIDI3MDpcXHRcXHRcXHRnb3RvIGVycl9kaXNhYmxlX3B0bTtcXG4gMjcxOlxcdFxcdH1cXG4gMjcyOlxcdFxcbiAyNzM6XFx0XFx0cGNpX3NldF9tYXN0ZXIocGRldik7XFxuIDI3NDpcXHRcXHRwY2lfc2V0X2RydmRhdGEocGRldiwgYWRhcHRlcik7XFxuIDI3NTpcXHRcXG4gMjc2OlxcdFxcdGFkYXB0ZXItXFx1MDAzZWluaXRfd3EgPSBhbGxvY193b3JrcXVldWUoXFxcIiVzLSVzLWluaXRcXFwiLFxcbiAyNzc6XFx0XFx0XFx0XFx0XFx0XFx0ICAgV1FfVU5CT1VORCB8IFdRX01FTV9SRUNMQUlNLCAwLFxcbiAyNzg6XFx0XFx0XFx0XFx0XFx0XFx0ICAgZGV2X2RyaXZlcl9zdHJpbmcoZGV2KSxcXG4gMjc5OlxcdFxcdFxcdFxcdFxcdFxcdCAgIGRldl9uYW1lKGRldikpO1xcbiAyODA6XFx0XFx0aWYgKCFhZGFwdGVyLVxcdTAwM2Vpbml0X3dxKSB7XFxuIDI4MTpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBhbGxvY2F0ZSBpbml0IHdvcmtxdWV1ZVxcXFxuXFxcIik7XFxuIDI4MjpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbiAyODM6XFx0XFx0XFx0Z290byBlcnJfZGlzYWJsZV9wdG07XFxuIDI4NDpcXHRcXHR9XFxuIDI4NTpcXHRcXG4gMjg2OlxcdFxcdGFkYXB0ZXItXFx1MDAzZXNlcnZfd3EgPSBhbGxvY193b3JrcXVldWUoXFxcIiVzLSVzLXNlcnZpY2VcXFwiLFxcbiAyODc6XFx0XFx0XFx0XFx0XFx0XFx0ICAgV1FfVU5CT1VORCB8IFdRX01FTV9SRUNMQUlNLCAwLFxcbiAyODg6XFx0XFx0XFx0XFx0XFx0XFx0ICAgZGV2X2RyaXZlcl9zdHJpbmcoZGV2KSxcXG4gMjg5OlxcdFxcdFxcdFxcdFxcdFxcdCAgIGRldl9uYW1lKGRldikpO1xcbiAyOTA6XFx0XFx0aWYgKCFhZGFwdGVyLVxcdTAwM2VzZXJ2X3dxKSB7XFxuIDI5MTpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBhbGxvY2F0ZSBzZXJ2aWNlIHdvcmtxdWV1ZVxcXFxuXFxcIik7XFxuIDI5MjpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbiAyOTM6XFx0XFx0XFx0Z290byBlcnJfc2Vydl93cV9hbGxvYztcXG4gMjk0OlxcdFxcdH1cXG4gMjk1OlxcdFxcbiAyOTY6XFx0XFx0YWRhcHRlci1cXHUwMDNlbWJ4X3dxID0gYWxsb2Nfd29ya3F1ZXVlKFxcXCIlcy0lcy1tYnhcXFwiLCBXUV9VTkJPVU5EIHwgV1FfSElHSFBSSSxcXG4gMjk3OlxcdFxcdFxcdFxcdFxcdFxcdCAgMCwgZGV2X2RyaXZlcl9zdHJpbmcoZGV2KSxcXG4gMjk4OlxcdFxcdFxcdFxcdFxcdFxcdCAgZGV2X25hbWUoZGV2KSk7XFxuIDI5OTpcXHRcXHRpZiAoIWFkYXB0ZXItXFx1MDAzZW1ieF93cSkge1xcbiAzMDA6XFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gYWxsb2NhdGUgbWFpbGJveCB3b3JrcXVldWVcXFxcblxcXCIpO1xcbiAzMDE6XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gMzAyOlxcdFxcdFxcdGdvdG8gZXJyX21ieF93cV9hbGxvYztcXG4gMzAzOlxcdFxcdH1cXG4gMzA0OlxcdFxcbiAzMDU6XFx0XFx0YWRhcHRlci1cXHUwMDNlc3RhdHNfd3EgPSBhbGxvY193b3JrcXVldWUoXFxcIiVzLSVzLXN0YXRzXFxcIixcXG4gMzA2OlxcdFxcdFxcdFxcdFxcdFxcdCAgICBXUV9VTkJPVU5EIHwgV1FfTUVNX1JFQ0xBSU0sIDAsXFxuIDMwNzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgZGV2X2RyaXZlcl9zdHJpbmcoZGV2KSxcXG4gMzA4OlxcdFxcdFxcdFxcdFxcdFxcdCAgICBkZXZfbmFtZShkZXYpKTtcXG4gMzA5OlxcdFxcdGlmICghYWRhcHRlci1cXHUwMDNlc3RhdHNfd3EpIHtcXG4gMzEwOlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGFsbG9jYXRlIHdvcmtxdWV1ZVxcXFxuXFxcIik7XFxuIDMxMTpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbiAzMTI6XFx0XFx0XFx0Z290byBlcnJfc3RhdHNfd3FfYWxsb2M7XFxuIDMxMzpcXHRcXHR9XFxuIDMxNDpcXHRcXG4gMzE1OlxcdFxcdGFkYXB0ZXItXFx1MDAzZXZjX2V2ZW50X3dxID0gYWxsb2Nfd29ya3F1ZXVlKFxcXCIlcy0lcy12Y19ldmVudFxcXCIsXFxuIDMxNjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgV1FfVU5CT1VORCB8IFdRX01FTV9SRUNMQUlNLCAwLFxcbiAzMTc6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGRldl9kcml2ZXJfc3RyaW5nKGRldiksXFxuIDMxODpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgZGV2X25hbWUoZGV2KSk7XFxuIDMxOTpcXHRcXHRpZiAoIWFkYXB0ZXItXFx1MDAzZXZjX2V2ZW50X3dxKSB7XFxuIDMyMDpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBhbGxvY2F0ZSB2aXJ0Y2hubCBldmVudCB3b3JrcXVldWVcXFxcblxcXCIpO1xcbiAzMjE6XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gMzIyOlxcdFxcdFxcdGdvdG8gZXJyX3ZjX2V2ZW50X3dxX2FsbG9jO1xcbiAzMjM6XFx0XFx0fVxcbiAzMjQ6XFx0XFxuIDMyNTpcXHRcXHQvKiBzZXR1cCBtc2dsdmwgKi9cXG4gMzI2OlxcdFxcdGFkYXB0ZXItXFx1MDAzZW1zZ19lbmFibGUgPSBuZXRpZl9tc2dfaW5pdCgtMSwgSURQRl9BVkFJTF9ORVRJRl9NKTtcXG4gMzI3OlxcdFxcbiAzMjg6XFx0XFx0ZXJyID0gaWRwZl9kZXZfaW5pdChhZGFwdGVyLCBlbnQpO1xcbiAzMjk6XFx0XFx0aWYgKGVycikge1xcbiAzMzA6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiVW5leHBlY3RlZCBkZXYgSUQgMHgleCBpbiBpZHBmIHByb2JlXFxcXG5cXFwiLFxcbiAzMzE6XFx0XFx0XFx0XFx0ZW50LVxcdTAwM2VkZXZpY2UpO1xcbiAzMzI6XFx0XFx0XFx0Z290byBkZXN0cm95X3ZjX2V2ZW50X3dxO1xcbiAzMzM6XFx0XFx0fVxcbiAzMzQ6XFx0XFxuIDMzNTpcXHRcXHRlcnIgPSBpZHBmX2NmZ19odyhhZGFwdGVyKTtcXG4gMzM2OlxcdFxcdGlmIChlcnIpIHtcXG4gMzM3OlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGNvbmZpZ3VyZSBIVyBzdHJ1Y3R1cmUgZm9yIGFkYXB0ZXI6ICVkXFxcXG5cXFwiLFxcbiAzMzg6XFx0XFx0XFx0XFx0ZXJyKTtcXG4gMzM5OlxcdFxcdFxcdGdvdG8gZGVzdHJveV92Y19ldmVudF93cTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTQ6MDE6NDIuODY1NzI3NDA5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0OTMzNjQzMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggQW5hbHlzaXM6IGlkcGYgZHJpdmVyIGNsZWFudXAqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZGluZyBgcGNpX2Rpc2FibGVfcHRtKHBkZXYpYCBpbiB0d28gcGxhY2VzOiBgaWRwZl9yZW1vdmVgIGFuZCB0aGUgZXJyb3IgcGF0aCBvZiBgaWRwZl9wcm9iZWAuIFRoZSBpbnRlbnQgc2VlbXMgY2xlYXI6IGl0J3MgYSBtaW5vciBjbGVhbnVwIHRvIHByZXZlbnQgcmVzb3VyY2UgbGVha3Mgb3Igd2FybmluZ3Mgd2hlbiB0aGUgZHJpdmVyIHVubG9hZHMgb3IgZmFpbHMgdG8gbG9hZC4gRnVuY3Rpb25hbGx5LCBpdCdzIHByZXR0eSBzbWFsbC4gVGhlIGNvcmUgZXhlY3V0aW9uIGZsb3cgaXMgYWx0ZXJlZCBzaW5jZSB0aGlzIGZ1bmN0aW9uIGlzIG5vdyBjYWxsZWQgZHVyaW5nIHVubG9hZCBhbmQgb24gcHJvYmUgZmFpbHVyZSwgc28gdGhhdCdzIHNvbWV0aGluZyB0byBub3RlLlxuXG5UaGUgcXVlc3Rpb24sIGFzIGFsd2F5cywgaXMgd2hldGhlciBpdCdzIHdvcnRoIGZ1enppbmcuIEluaXRpYWxseSwgbXkgZ3V0IHNheXMgXCJubyxcIiBiZWNhdXNlIGZ1enppbmcgd291bGQgbW9zdGx5IGludm9sdmUgcnVubmluZyBgaWRwZl9wcm9iZWAgYW5kIGBpZHBmX3JlbW92ZWAsIHdoaWNoIHNlZW1zIGJhc2ljLiBCdXQgU3l6a2FsbGVyIGFscmVhZHkgaGl0cyB0aG9zZSBmdW5jdGlvbnMuIE5vIGNvbXBsZXggbG9naWMgaXMgaW50cm9kdWNlZCBlaXRoZXIuIEJ1dCwgdGhlIHByb21wdCBoYXMgYSBsaXN0IG9mIHRoaW5ncyAqbm90KiB0byBmdXp6LiBMZXQgbWUgcmV2aWV3IHRoYXQgbGlzdC5cblxuSG1tLCB0aGUgcGF0Y2ggKmRvZXNuJ3QqIG1vZGlmeSBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgbG9nZ2luZywgY29uc3RhbnRzIHRoYXQgZG9uJ3QgY2hhbmdlIGZsb3csIG9yIHVucmVhY2hhYmxlIGNvZGUuIFRoaXMgcGF0Y2ggKmRvZXMqIHRvdWNoIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyByZWxhdGVkIHRvIFBDSSBkcml2ZXIgY2xlYW51cC4gSSBjYW4gY29uZmlybSB0aGlzLCBhcyBQQ0kgZGV2aWNlcyBjYW4gYmUgZW11bGF0ZWQgYnkgc3l6a2FsbGVyJ3MgUENJIGZ1enplciwgd2hpY2ggbWFrZXMgdGhpcyBjb2RlIHBhdGggcmVhY2hhYmxlLiBTbyB0aGF0IG1lYW5zIEkgc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgLiBNeSBrZXkgZm9jdXMgc3ltYm9scyB3aWxsIGJlIGBpZHBmX3Byb2JlYCBhbmQgYGlkcGZfcmVtb3ZlYC4gQWxzbywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX0lEUEZgIGlzIGVuYWJsZWQuXG5cbkxldCBtZSBkb3VibGUtY2hlY2sgZm9yIG90aGVyIHJlbGV2YW50IGNvbmZpZ3MsIGp1c3QgaW4gY2FzZS4gT2gsIHJpZ2h0LCBgcGNpX2Rpc2FibGVfcHRtYCBpcyBkZWZpbmVkIGluIGBkcml2ZXJzL3BjaS9wY2llL3B0bS5jYC4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgaXMgYSBjb25maWcgZm9yIHRoYXQuIExldCBtZSBsb29rIGF0IHRoYXQgZmlsZS4uLmFuZCB0aGUgZnVuY3Rpb24uLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM4NDEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNDowMTo1MC4zNTkwOTQ2MTdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMzgzMDg4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUENJRV9QVE1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9wY2kvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvcGNpL3BjaWUvS2NvbmZpZz0xMjE9Y29uZmlnIFBDSUVfRFBDXFxuLS1cXG5kcml2ZXJzL3BjaS9wY2llL0tjb25maWctMTMwLVxcbmRyaXZlcnMvcGNpL3BjaWUvS2NvbmZpZzoxMzE6Y29uZmlnIFBDSUVfUFRNXFxuZHJpdmVycy9wY2kvcGNpZS9LY29uZmlnLTEzMi1cXHRib29sIFxcXCJQQ0kgRXhwcmVzcyBQcmVjaXNpb24gVGltZSBNZWFzdXJlbWVudCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNDowMTo1MC42ODI5MzE2NzRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY2MzU4NTc1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOlxuXG4qKkNoZWNraW5nIFBUTSBMb2dpYyBGdW5jdGlvbmFsaXR5KipcblxuUmlnaHQsIHNvIHRvIHByb3Blcmx5IHZldCB0aGlzIFBUTSBsb2dpYywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgUENJRV9QVE1gIGlzIGFjdHVhbGx5IGVuYWJsZWQuIE90aGVyd2lzZSwgdHJ5aW5nIHRvIHRlc3QgdGhlIHByb2Nlc3Mgd2lsbCBiZSBtZWFuaW5nbGVzcy4gSXQgbG9va3MgbGlrZSBgcGNpX2Rpc2FibGVfcHRtYCBpcyB0aGUgY3J1Y2lhbCBmdW5jdGlvbiB0byBmb2N1cyBvbiBoZXJlLlxuXG5UaGUgY2F0Y2ggaXMsIGlmIGBQQ0lFX1BUTWAgaXNuJ3QgZW5hYmxlZCwgYHBjaV9kaXNhYmxlX3B0bWAgKm1pZ2h0KiBqdXN0IGJlIGEgbm8tb3AsIG9yIHBlcmhhcHMgb25seSBjbGVhciBhIGZsYWcsIHdoaWNoIHdvdWxkbid0IGJlIHZlcnkgaGVscGZ1bCBmb3IgY29uZmlybWluZyB0aGUgcHJvcGVyIGZ1bmN0aW9uaW5nIG9mIHRoZSBlbnRpcmUgcGF0aHdheS4gU28sIGEgY3JpdGljYWwgY2hlY2sgaXMgbmVjZXNzYXJ5OiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGBwY2lfZGlzYWJsZV9wdG1gIGlzIGV2ZW4gZGVmaW5lZCBpbiB0aGUgY2FzZSB3aGVyZSBgUENJRV9QVE1gIGlzIGRpc2FibGVkLiBUaGF0J3MgdGhlIGtleSBwb2ludC4gSWYgaXQgKmlzKiBkZWZpbmVkLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgdGhvcm91Z2hseSB0byBrbm93IGhvdyB0byBwcm9jZWVkLiBJIHN1c3BlY3QgdGhpcyB3aWxsIHRlbGwgbWUgYSBsb3QgYWJvdXQgdGhlIGRlc2lnbiBjaG9pY2VzIHRoYXQgd2VyZSBtYWRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDgxOSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE0OjAxOjU0LjM0NjUxOTQzMloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMjgyMjczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9kaXNhYmxlX3B0bVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L3BjaS5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvcGNpLmg9MTk3OD1pbnQgcGNpX2VuYWJsZV9wdG0oc3RydWN0IHBjaV9kZXYgKmRldiwgdTggKmdyYW51bGFyaXR5KTtcXG5pbmNsdWRlL2xpbnV4L3BjaS5oOjE5Nzk6dm9pZCBwY2lfZGlzYWJsZV9wdG0oc3RydWN0IHBjaV9kZXYgKmRldik7XFxuaW5jbHVkZS9saW51eC9wY2kuaC0xOTgwLWJvb2wgcGNpZV9wdG1fZW5hYmxlZChzdHJ1Y3QgcGNpX2RldiAqZGV2KTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGNpLmg9MTk4Mj1zdGF0aWMgaW5saW5lIGludCBwY2lfZW5hYmxlX3B0bShzdHJ1Y3QgcGNpX2RldiAqZGV2LCB1OCAqZ3JhbnVsYXJpdHkpXFxuaW5jbHVkZS9saW51eC9wY2kuaC0xOTgzLXsgcmV0dXJuIC1FSU5WQUw7IH1cXG5pbmNsdWRlL2xpbnV4L3BjaS5oOjE5ODQ6c3RhdGljIGlubGluZSB2b2lkIHBjaV9kaXNhYmxlX3B0bShzdHJ1Y3QgcGNpX2RldiAqZGV2KSB7IH1cXG5pbmNsdWRlL2xpbnV4L3BjaS5oLTE5ODUtc3RhdGljIGlubGluZSBib29sIHBjaWVfcHRtX2VuYWJsZWQoc3RydWN0IHBjaV9kZXYgKmRldilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTQ6MDE6NTQuNTE3ODA3NzM1WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg4Mzc1NzM3OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgSURQRiBEcml2ZXIgd2l0aCBQQ0ktUFRNKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHllcywgaXQncyBwcmV0dHkgY2xlYXIuICBJZiBgQ09ORklHX1BDSUVfUFRNYCBpcyBkaXNhYmxlZCwgdGhlbiB0aGlzIGNoYW5nZSBpcyBlZmZlY3RpdmVseSBhIG5vLW9wLCB3aGljaCBtZWFucyBpdCB3aWxsIG5vdCBhZmZlY3QgYW55dGhpbmcuIFNvLCB0aGUgcmlnaHQgdGhpbmcgdG8gZG8gaXMgdG8gaW5jbHVkZSBgUENJRV9QVE1gIGluIGBFbmFibGVDb25maWdzYC4gSXQncyBhIGNyaXRpY2FsIGNvbXBvbmVudCBmb3IgdGhlIGZ1bmN0aW9uYWxpdHkgaW4gdGhpcyBkaWZmLlxuXG5MZXQgbWUganVzdCBxdWlja2x5IHJldmlldyB0aGUgYWN0dWFsIHBhdGNoIGl0c2VsZiBhZ2FpbiB0byBjb25maXJtLiBBaCB5ZXMsIEkgc2VlOiBpdCdzIGFkZGluZyBgcGNpX2Rpc2FibGVfcHRtKHBkZXYpYCBpbiB0aGUgYGlkcGZfcmVtb3ZlYCBmdW5jdGlvbiBhbmQgcGxhY2luZyB0aGF0IGZ1bmN0aW9uIGNhbGxzIGluIG11bHRpcGxlIHBvaW50cyBvZiB0aGUgYGlkcGZfcHJvYmVgIGZ1bmN0aW9uIGFzIHdlbGwuIEkgcmVjb2duaXplIHRoaXMgZHJpdmVyIGFuZCB0aGVzZSBmdW5jdGlvbnMuIFRoZSBjb2RlIGNoYW5nZXMgc2VlbSBzb3VuZC5cblxuSXQncyBhIHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIHRoZSBQQ0kgaW50ZXJmYWNlLCBzbyBJIHNlZSB0aGlzIHdvdWxkIGJlIHJlYWNoYWJsZSBieSBhbnkgUENJIGZ1enppbmcuIFRoZSByZXF1aXJlZCBjb25maWdzIGFyZSBgSURQRmAgYW5kLCBhcyB3ZSd2ZSBhbHJlYWR5IGVzdGFibGlzaGVkLCBgUENJRV9QVE1gLiBJJ20gZ29pbmcgdG8gbm90ZSB0aGF0IHRoZSByZWxldmFudCBmdW5jdGlvbnMgYXJlIGBpZHBmX3Byb2JlYCBhbmQgYGlkcGZfcmVtb3ZlYC5cblxuTm93LCB3YWl0IGEgbWludXRlLCBJIHdhbnQgdG8gZG91YmxlLWNoZWNrLiBKdXN0IG1ha2luZyBzdXJl4oCmSXMgYElEUEZgIHRvdGFsbHkgaW5kZXBlbmRlbnQ/IERvZXMgYElEUEZgIGRlcGVuZCBvbiBhbnl0aGluZyBlbHNlIHRoYXQgSSBtaWdodCBiZSBtaXNzaW5nPyBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIEkgdW5kZXJzdGFuZCBhbnkgZGVwZW5kZW5jaWVzIGhlcmUuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTQxMCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNDowMjowMy4zNTUzODQxMzhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDg1ODE2MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElEUEZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZy0zLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvS2NvbmZpZzo0OmNvbmZpZyBJRFBGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnLTUtXFx0dHJpc3RhdGUgXFxcIkludGVsKFIpIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvbiBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnPTE3PWlmIElEUEZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9LY29uZmlnOjE5OmNvbmZpZyBJRFBGX1NJTkdMRVFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWctMjAtXFx0Ym9vbCBcXFwiaWRwZiBzaW5nbGVxIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE0OjAyOjA0LjkwMzk3MTIzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk5NjUzNjg0MDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGUgbWF0dGVyOlxuXG4qKkFuYWx5emluZyB0aGUgSW50ZWwgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIEludGVsIEV0aGVybmV0IGRyaXZlci4gVG8gZG8gdGhhdCwgSSdtIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgS2NvbmZpZ2AgZmlsZSBzcGVjaWZpY2FsbHkgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9gLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBzaG91bGQgYmUgZGVmaW5lZC4gQnkgZ29pbmcgdGhyb3VnaCB0aGlzIGZpbGUsIEkgY2FuIGJ1aWxkIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0J3MgcmVxdWlyZWQgZm9yIHRoaXMgZHJpdmVyIHRvIGZ1bmN0aW9uIGNvcnJlY3RseSB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLCBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gTGV0J3Mgc2VlIHdoYXQgd2UgZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY1ODYsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNDowMzo0NC41NTc2NTc3N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCMgQ29weXJpZ2h0IChDKSAyMDI0IEludGVsIENvcnBvcmF0aW9uXFxuICAgMzpcXHRcXG4gICA0OlxcdGNvbmZpZyBJRFBGXFxuICAgNTpcXHRcXHR0cmlzdGF0ZSBcXFwiSW50ZWwoUikgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIFN1cHBvcnRcXFwiXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIFBDSV9NU0lcXG4gICA3OlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gICA4OlxcdFxcdHNlbGVjdCBESU1MSUJcXG4gICA5OlxcdFxcdHNlbGVjdCBMSUJFVEhfWERQXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEludGVsKFIpIEluZnJhc3RydWN0dXJlIERhdGEgUGF0aCBGdW5jdGlvblxcbiAgMTI6XFx0XFx0ICBkZXZpY2VzLlxcbiAgMTM6XFx0XFxuICAxNDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcXG4gIDE1OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgaWRwZi5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0aWYgSURQRlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgSURQRl9TSU5HTEVRXFxuICAyMDpcXHRcXHRib29sIFxcXCJpZHBmIHNpbmdsZXEgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTQ6MDM6NDQuNTU3NzIwOFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzkwOTE1NTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGhpcyBQYXRjaDogQSBTb3VuZCBEZWNpc2lvbioqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0cyBpbXBsaWNhdGlvbnMuIFRoZSBkZXBlbmRlbmNpZXMgYXJlIGBQQ0lfTVNJYCBhbmQgYFBUUF8xNTg4X0NMT0NLX09QVElPTkFMYCwgYW5kIHNpbmNlIGBQQ0lfTVNJYCBpcyB0eXBpY2FsbHkgZW5hYmxlZCwgdGhlIGtleSBjb25maWd1cmF0aW9ucyB0byBmb2N1cyBvbiBhcmUgYElEUEZgIGFuZCBgUENJRV9QVE1gLiBJIHF1aWNrbHkgY2hlY2tlZCBpZiB0aGVyZSB3ZXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWdzLCBidXQgbm8sIHRob3NlIGFyZSB0aGUgbWFpbiBvbmVzLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IHNob3VsZCB3ZSBmdXp6IHRoaXM/IExldCdzIGJyZWFrIGl0IGRvd24uIEl04oCZcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBhIHJlc291cmNlIGxlYWsuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIENydWNpYWxseSwgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHdpdGhpbiB0aGUgUENJIGRyaXZlci4gQW5kLCB3ZSBjYW4gbGV2ZXJhZ2Ugc3l6a2FsbGVyJ3MgUENJIGZ1enplciB0byBleGVyY2lzZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIEdpdmVuIGFsbCB0aGF0LCBgV29ydGhGdXp6aW5nPXRydWVgIGlzIGEgZGVmaW5pdGUgeWVzLlxuXG5UaGUgY29yZSByZWFzb25pbmcgaGVyZSBpcyB0aGF0IHRoZSBwYXRjaCByZWN0aWZpZXMgYSByZXNvdXJjZSBsZWFrIGJ5IGVuc3VyaW5nIGBwY2lfZGlzYWJsZV9wdG0oKWAgaXMgY2FsbGVkIGluIHRoZSBkcml2ZXIncyByZW1vdmUgYW5kIHByb2JlIGVycm9yIHBhdGhzLiBUaGlzIGNoYW5nZSBkaXJlY3RseSBpbXBhY3RzIHRoZSBJbnRlbCBJRFBGIFBDSSBkcml2ZXIgYW5kIGNhbiBiZSBlZmZlY3RpdmVseSB0ZXN0ZWQgdXNpbmcgYSBQQ0kgZGV2aWNlIGZ1enplci5cblxuVGhlIGNyaXRpY2FsIHN5bWJvbHMgSSdtIGZvY3VzaW5nIG9uIGFyZSBgaWRwZl9wcm9iZWAgYW5kIGBpZHBmX3JlbW92ZWAuIEFuZCwgb2YgY291cnNlLCB0aGUgbmVjZXNzYXJ5IGVuYWJsZW1lbnQgY29uZmlncyBhcmUgYElEUEZgIGFuZCBgUENJRV9QVE1gLiBGaW5hbGx5LCB0aW1lIHRvIHJ1biBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzA0NCwiT3V0cHV0VG9rZW5zIjoxMTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNDowMzo1MS45NDg2Mzk0NjJaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTIxNDMxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSURQRlwiLFxuICAgIFwiUENJRV9QVE1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZHBmX3Byb2JlXCIsXG4gICAgXCJpZHBmX3JlbW92ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBieSBlbnN1cmluZyBwY2lfZGlzYWJsZV9wdG0oKSBpcyBjYWxsZWQgZHVyaW5nIHRoZSBkcml2ZXIncyByZW1vdmUgYW5kIHByb2JlIGVycm9yIHBhdGhzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEludGVsIElEUEYgUENJIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCB0ZXN0ZWQgdXNpbmcgYSBQQ0kgZGV2aWNlIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJRFBGXCIsXG4gICAgXCJQQ0lFX1BUTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlkcGZfcHJvYmVcIixcbiAgICBcImlkcGZfcmVtb3ZlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGJ5IGVuc3VyaW5nIHBjaV9kaXNhYmxlX3B0bSgpIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGRyaXZlcidzIHJlbW92ZSBhbmQgcHJvYmUgZXJyb3IgcGF0aHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSW50ZWwgSURQRiBQQ0kgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgYW5kIHRlc3RlZCB1c2luZyBhIFBDSSBkZXZpY2UgZnV6emVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow4xxvj[1] Phase: Succeeded StartedAt: 2026-07-15 14:04:04 +0000 UTC FinishedAt: 2026-07-15 14:04:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-15 14:04:04 +0000 UTC FinishedAt: 2026-07-15 14:04:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[2] Phase: Succeeded StartedAt: 2026-07-15 14:04:04 +0000 UTC FinishedAt: 2026-07-15 16:31:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-15 14:04:04 +0000 UTC FinishedAt: 2026-07-15 16:31:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-15 14:04:04 +0000 UTC FinishedAt: 2026-07-15 14:04:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-15 14:04:04 +0000 UTC FinishedAt: 2026-07-15 14:04:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflow4xxvj/series-workflow4xxvj-convert-artifact-2806981202/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-15 14:04:15 +0000 UTC FinishedAt: 2026-07-15 14:43:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-15 14:04:15 +0000 UTC FinishedAt: 2026-07-15 14:43:37 +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:*220f4f4b-75a7-44a5-b9cb-63dbbb6c63e4,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-workflow4xxvj/series-workflow4xxvj-convert-artifact-2806981202/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": "5457c859-f60b-4260-bf2c-dc7a39c58ab4", "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-workflow4xxvj/series-workflow4xxvj-build-action-2725156560/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-15 14:04:15 +0000 UTC FinishedAt: 2026-07-15 14:43:27 +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:*220f4f4b-75a7-44a5-b9cb-63dbbb6c63e4,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-workflow4xxvj/series-workflow4xxvj-convert-artifact-2806981202/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": "5457c859-f60b-4260-bf2c-dc7a39c58ab4", "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-workflow4xxvj/series-workflow4xxvj-build-action-2725156560/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-15 14:43:37 +0000 UTC FinishedAt: 2026-07-15 14:43:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-15 14:43:37 +0000 UTC FinishedAt: 2026-07-15 14:43:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-15 14:43:37 +0000 UTC FinishedAt: 2026-07-15 14:43:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-15 14:43:37 +0000 UTC FinishedAt: 2026-07-15 14:43:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflow4xxvj/series-workflow4xxvj-convert-artifact-1614462317/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-15 14:43:47 +0000 UTC FinishedAt: 2026-07-15 14:46:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-15 14:43:47 +0000 UTC FinishedAt: 2026-07-15 14:45:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5457c859-f60b-4260-bf2c-dc7a39c58ab4,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-workflow4xxvj/series-workflow4xxvj-build-action-2725156560/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-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-15 14:46:03 +0000 UTC FinishedAt: 2026-07-15 14:46:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-15 14:46:03 +0000 UTC FinishedAt: 2026-07-15 14:46:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-15 14:46:03 +0000 UTC FinishedAt: 2026-07-15 15:29:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-15 14:46:03 +0000 UTC FinishedAt: 2026-07-15 15:29:55 +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:*220f4f4b-75a7-44a5-b9cb-63dbbb6c63e4,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-workflow4xxvj/series-workflow4xxvj-convert-artifact-1614462317/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": "6d5d2313-f98d-4cbb-b5c9-5f0df4db7ee9", "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-workflow4xxvj/series-workflow4xxvj-build-action-3030478537/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-15 14:46:03 +0000 UTC FinishedAt: 2026-07-15 15:29:32 +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:*220f4f4b-75a7-44a5-b9cb-63dbbb6c63e4,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-workflow4xxvj/series-workflow4xxvj-convert-artifact-1614462317/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": "6d5d2313-f98d-4cbb-b5c9-5f0df4db7ee9", "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-workflow4xxvj/series-workflow4xxvj-build-action-3030478537/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-15 15:29:55 +0000 UTC FinishedAt: 2026-07-15 15:29:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-15 15:29:55 +0000 UTC FinishedAt: 2026-07-15 15:29:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-15 15:29:55 +0000 UTC FinishedAt: 2026-07-15 15:31:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-15 15:29:55 +0000 UTC FinishedAt: 2026-07-15 15:31:50 +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:*6d5d2313-f98d-4cbb-b5c9-5f0df4db7ee9,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-workflow4xxvj/series-workflow4xxvj-build-action-3030478537/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-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-15 15:31:59 +0000 UTC FinishedAt: 2026-07-15 16:31:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-15 15:31:59 +0000 UTC FinishedAt: 2026-07-15 16:31:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*5457c859-f60b-4260-bf2c-dc7a39c58ab4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6d5d2313-f98d-4cbb-b5c9-5f0df4db7ee9,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-workflow4xxvj/series-workflow4xxvj-build-action-2725156560/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-workflow4xxvj/series-workflow4xxvj-build-action-3030478537/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-15 15:31:59 +0000 UTC FinishedAt: 2026-07-15 15:33:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-15 15:31:59 +0000 UTC FinishedAt: 2026-07-15 15:32:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4xxvj/series-workflow4xxvj-convert-artifact-1946139602/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-15 15:31:59 +0000 UTC FinishedAt: 2026-07-15 15:31:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-15 15:31:59 +0000 UTC FinishedAt: 2026-07-15 15:31:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-15 15:32:00 +0000 UTC FinishedAt: 2026-07-15 15:32:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-15 15:33:08 +0000 UTC FinishedAt: 2026-07-15 16:31:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4xxvj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["idpf_probe","idpf_remove"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa88278693cbfaf7a2acf961379973fbb63b165c","config_name":"upstream-apparmor-kasan.config","enable_configs":["IDPF","PCIE_PTM"],"series_id":"0df730f4-db2b-48f2-9f06-fd7ec71f88f5","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-15 15:33:08 +0000 UTC FinishedAt: 2026-07-15 16:31:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5457c859-f60b-4260-bf2c-dc7a39c58ab4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6d5d2313-f98d-4cbb-b5c9-5f0df4db7ee9,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-workflow4xxvj/series-workflow4xxvj-build-action-2725156560/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-workflow4xxvj/series-workflow4xxvj-build-action-3030478537/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-workflow4xxvj/series-workflow4xxvj-convert-artifact-1946139602/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,}