Name: series-workflow2shn7 Phase: Succeeded StartedAt: 2026-09-10 19:59:28 +0000 UTC FinishedAt: 2026-09-10 22:01:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[0] Phase: Succeeded StartedAt: 2026-09-10 19:59:28 +0000 UTC FinishedAt: 2026-09-10 20:21:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[0].run-triage Phase: Succeeded StartedAt: 2026-09-10 19:59:28 +0000 UTC FinishedAt: 2026-09-10 20:21:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MAC80211", "USB", "WLAN_VENDOR_MEDIATEK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MAC80211", "USB", "WLAN_VENDOR_MEDIATEK" ], "series_id": "3600bd7f-acf2-4926-a8fc-25e4bcf263d1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7925u_stop", "mt7925u_probe", "mt7925_mlo_pm_work" ], "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+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01FRElBVEVLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1dV9zdG9wJiMzNDssCiAgICAmIzM0O210NzkyNXVfcHJvYmUmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21sb19wbV93b3JrJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGRlbGF5ZWQgd29yayBjYW5jZWxsYXRpb24gZHVyaW5nIGRldmljZSBzdG9wIGluIHRoZSBtdDc5MjUgVVNCIGRyaXZlciBieSBpbnRyb2R1Y2luZyBgbXQ3OTI1dV9zdG9wKClgLCB3aGljaCBjYWxscyBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yaylgIHByaW9yIHRvIGBtdDc5Mnh1X3N0b3AoKWAuIFRoaXMgY2hhbmdlIGZpeGVzIGNvbmN1cnJlbmN5IGFuZCBsaWZldGltZS91c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgd2hlbiB0ZWFyaW5nIGRvd24gdGhlIGRldmljZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCBtb2RpZnksIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHBhZGRpbmcsIGRhdGEgc3RydWN0dXJlcywgb3IgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLiBDb25jdXJyZW5jeSBidWdzIGFuZCB1c2UtYWZ0ZXItZnJlZSBlcnJvcnMgYXJlIHByb3Blcmx5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dlcnMsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIG10NzkyNXVfc3RvcCB0byBjYW5jZWwgdGhlIGRlbGF5ZWQgTUxPIFBNIHdvcmsgKG1sb19wbV93b3JrKSBkdXJpbmcgc3RvcCBvcGVyYXRpb25zIGluIHRoZSBNZWRpYVRlayBNVDc5MjUgVVNCIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gYW5kIG1hYzgwMjExL25sODAyMTEgaW50ZXJmYWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDM3ZTUxZjRkMGM4MTYyMjU0N2VjYmI0YmI5ZTg3OTU2N2FjMjdmMWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAyMDoyMDozNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jXG5pbmRleCAxNzU3MDIzZWE3MGQ1Li5kYjZmZDAxNDQ0N2JkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jXG5AQCAtMTQ3LDYgJiM0MzsxNDcsMTUgQEAgc3RhdGljIGludCBtdDc5MjV1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIG10NzkyNXVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IG10NzkyeF9od19kZXYoaHcpO1xuJiM0MztcbiYjNDM7XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrKTtcbiYjNDM7XG4mIzQzO1x0bXQ3OTJ4dV9zdG9wKGh3LCBzdXNwZW5kKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuIFx0XHRcdCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4ge1xuQEAgLTE5Myw3ICYjNDM7MjAyLDcgQEAgc3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcbiBcdGlmICghb3BzKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1cdG9wcy1cdTAwM2VzdG9wID0gbXQ3OTJ4dV9zdG9wO1xuJiM0MztcdG9wcy1cdTAwM2VzdG9wID0gbXQ3OTI1dV9zdG9wO1xuIFxuIFx0bWRldiA9IG10NzZfYWxsb2NfZGV2aWNlKFx1MDAyNnVzYl9pbnRmLVx1MDAzZWRldiwgc2l6ZW9mKCpkZXYpLCBvcHMsIFx1MDAyNmRydl9vcHMpO1xuIFx0aWYgKCFtZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01FRElBVEVLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1dV9zdG9wJiMzNDssCiAgICAmIzM0O210NzkyNXVfcHJvYmUmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21sb19wbV93b3JrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgbXQ3OTI1dV9zdG9wIHRvIGNhbmNlbCB0aGUgZGVsYXllZCBNTE8gUE0gd29yayAobWxvX3BtX3dvcmspIGR1cmluZyBzdG9wIG9wZXJhdGlvbnMgaW4gdGhlIE1lZGlhVGVrIE1UNzkyNSBVU0Igd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbiBhbmQgbWFjODAyMTEvbmw4MDIxMSBpbnRlcmZhY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzdlNTFmNGQwYzgxNjIyNTQ3ZWNiYjRiYjllODc5NTY3YWMyN2YxZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDIwOjIwOjM0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYwppbmRleCAxNzU3MDIzZWE3MGQ1Li5kYjZmZDAxNDQ0N2JkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYwpAQCAtMTQ3LDYgJiM0MzsxNDcsMTUgQEAgc3RhdGljIGludCBtdDc5MjV1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQogCXJldHVybiBlcnI7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBtdDc5MjV1X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBtdDc5MnhfaHdfZGV2KGh3KTsKJiM0MzsKJiM0MzsJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7ZGV2LSZndDttbG9fcG1fd29yayk7CiYjNDM7CiYjNDM7CW10NzkyeHVfc3RvcChodywgc3VzcGVuZCk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZiwKIAkJCSBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpCiB7CkBAIC0xOTMsNyAmIzQzOzIwMiw3IEBAIHN0YXRpYyBpbnQgbXQ3OTI1dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsCiAJaWYgKCFvcHMpCiAJCXJldHVybiAtRU5PTUVNOwogCi0Jb3BzLSZndDtzdG9wID0gbXQ3OTJ4dV9zdG9wOwomIzQzOwlvcHMtJmd0O3N0b3AgPSBtdDc5MjV1X3N0b3A7CiAKIAltZGV2ID0gbXQ3Nl9hbGxvY19kZXZpY2UoJmFtcDt1c2JfaW50Zi0mZ3Q7ZGV2LCBzaXplb2YoKmRldiksIG9wcywgJmFtcDtkcnZfb3BzKTsKIAlpZiAoIW1kZXYpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTMKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA0MTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgVVNCIERyaXZlciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBiZWVuIG1vZGlmaWVkIGluIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGNoYW5nZSB0byB0aGUgYG10NzkyNWAgVVNCIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNgIGZpbGUuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYSBuZXcgZnVuY3Rpb24sIGBtdDc5MjV1X3N0b3BgLCB3aGljaCBpcyBub3cgYXNzaWduZWQgdG8gdGhlIGBvcHMtJmd0O3N0b3BgIHBvaW50ZXIgaW4gdGhlIGRyaXZlciYjMzk7cyBvcGVyYXRpb24gc3RydWN0dXJlLiBJbnNpZGUgYG10NzkyNXVfc3RvcGAsIHdlIHNlZSBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jYCBhbmQgYSBjYWxsIHRvIGBtdDc5Mnh1X3N0b3BgLiBUaGlzIHJlcGxhY2VzIHRoZSBwcmV2aW91cyBhc3NpZ25tZW50IG9mIGBvcHMtJmd0O3N0b3AgPSBtdDc5Mnh1X3N0b3BgIGluIHRoZSBwcm9iZSBmdW5jdGlvbiBgbXQ3OTI1dV9wcm9iZWAuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGNhbiB3ZSBmdXp6IHRoaXMgZHJpdmVyIGVmZmVjdGl2ZWx5IHVzaW5nIHN0YW5kYXJkIGZ1enppbmcgdGVjaG5pcXVlcz8gUGFydGljdWxhcmx5LCBjYW4gd2UgcmVhY2ggaXQgdmlhIFVTQiBlbXVsYXRpb24/IFRoaXMgaXMga2V5LiBGb3J0dW5hdGVseSwgSSBrbm93IHN5emthbGxlciBoYXMgcHJldHR5IHJvYnVzdCBzdXBwb3J0IGZvciBVU0IgZnV6emluZywgaGFuZGxpbmcgcmF3LWdhZGdldCwgdmhjaSwgYW5kIGR1bW15X2hjZC4gSXQgY2FuIHByb2JlIFVTQiBkcml2ZXJzIHdpdGggbWF0Y2hpbmcgYHVzYl9kZXZpY2VfaWRgIGVudHJpZXMgdXNpbmcgYHN5el91c2JfY29ubmVjdGAgb3IgdGhyb3VnaCB0aGUgVVNCIGVtdWxhdGlvbiBpdHNlbGYuIFNvLCBhcmUgd2UgdGFsa2luZyBhYm91dCBhIGZ1enphYmxlIFVTQiBkcml2ZXIgaGVyZT8gVGhlIGFuc3dlciBpcyBwcm9iYWJseSB5ZXMgZ2l2ZW4gd2hhdCBJIGtub3cgYWJvdXQgZnV6emluZyBtZXRob2RvbG9naWVzLgoKTGV0JiMzOTtzIGNvbmZpcm06IEFjY29yZGluZyB0byBTZWN0aW9uIDIgJmFtcDsgMyBvZiB0aGUgc3l6a2FsbGVyIGRvY3VtZW50YXRpb24sIHRoZSBmb2N1cyBpcyBvbiBkcml2ZXJzIHRoYXQgYXJlIHJlYWNoYWJsZSB2aWEgdmlydHVhbCBidXNlcywgaW5jbHVkaW5nIFVTQiBnYWRnZXQuIEdpdmVuIHRoZSBkb2N1bWVudGF0aW9uIHN0YXRlcyB0aGF0ICYjMzQ7VVNCIHdpcmVsZXNzIGRyaXZlcnMgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGVtdWxhdGlvbiAoc3l6a2FsbGVyIGhhcyBmdWxsIFVTQiBkZXZpY2UgZnV6emluZyAvIHJhdyBnYWRnZXQgc3VwcG9ydCkmIzM0OywgaXQmIzM5O3MgbG9va2luZyBwcm9taXNpbmchCgpOZXh0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGtlcm5lbCBjb25maWd1cmF0aW9ucyBhcmUgbmVjZXNzYXJ5IGZvciB0aGUgYG10NzkyNWAgVVNCIGRyaXZlci4gVGltZSB0byBkaWcgaW50byB0aGUgYEtjb25maWdgIGZpbGVzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9gIHRvIGZpbmQgdGhlIHJlbGV2YW50IG9wdGlvbnMuIEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZWZmaWNpZW50bHkgcGFyc2UgdGhlIEtjb25maWcgZmlsZXMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIGZvciBwcm9wZXIgVVNCIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzkyNV9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlXG4gICA0Olx0XHRzZWxlY3QgTVQ3OTJ4X0xJQlxuICAgNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gICA2Olx0XG4gICA3Olx0Y29uZmlnIE1UNzkyNUVcbiAgIDg6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiAgIDk6XHRcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXG4gIDEwOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDExOlx0XHRkZXBlbmRzIG9uIFBDSVxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFBDSWUgZGV2aWNlcyxcbiAgMTQ6XHRcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXG4gIDE1Olx0XHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cbiAgMTY6XHRcbiAgMTc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgTVQ3OTI1VVxuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4gIDIxOlx0XHRzZWxlY3QgTVQ3OTJ4X1VTQlxuICAyMjpcdFx0c2VsZWN0IE1UNzkyNV9DT01NT05cbiAgMjM6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMjQ6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDI1Olx0XHRoZWxwXG4gIDI2Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgVVNCIGRldmljZXMsXG4gIDI3Olx0XHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxuICAyODpcdFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU1NQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2U6CgoqKkludmVzdGlnYXRpbmcgdGhlIEtjb25maWcgZm9yIHRoZSBNVDc2IFdpcmVsZXNzIERyaXZlcioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGl2aW5nIGludG8gdGhlIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlciBzaXR1YXRpb24uIE15IGd1dCB0ZWxscyBtZSB3ZSBuZWVkIHRvIHRob3JvdWdobHkgY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhhdCBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgb25lIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AuIFRoaXMgaXMgc3RhbmRhcmQgcHJvY2VkdXJlLCBidXQgcGFydGljdWxhcmx5IGltcG9ydGFudCB3aGVuIHdlIGFyZSBkZWJ1Z2dpbmcgYSBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IG9yIGNvbmZpZ3VyYXRpb24gaXNzdWUuIEl0JiMzOTtzIHRoZSBjZW50cmFsIGNvbmZpZ3VyYXRpb24gZmlsZSwgc28gaXQmIzM5O3MgdGhlIGZpcnN0IHBsYWNlIEkmIzM5O2QgbG9vayB0byB1bmRlcnN0YW5kIGhvdyB0aGluZ3MgYXJlIGNvbnRyb2xsZWQsIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgbWlnaHQgYmUgYXQgcGxheS4gV2UgbmVlZCB0byBkaXNzZWN0IHRoaXMgdG8gYmUgc3VyZSB3ZSBhcmUgbm90IG1pc3NpbmcgYW55dGhpbmcgcmVsYXRlZCB0byBob3cgaXQgaXMgZGVzaWduZWQgYW5kIGhvdyB0aGluZ3MgYXJlIHNldCB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdGNvbmZpZyBNVDc2X0NPUkVcbiAgIDM6XHRcdHRyaXN0YXRlXG4gICA0Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE1UNzZfTEVEU1xuICAgNzpcdFx0Ym9vbFxuICAgODpcdFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcbiAgIDk6XHRcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IE1UNzZfQ09SRT1MRURTX0NMQVNTXG4gIDEwOlx0XHRkZWZhdWx0IHlcbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgTVQ3Nl9VU0JcbiAgMTM6XHRcdHRyaXN0YXRlXG4gIDE0Olx0XHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxuICAxNTpcdFxuICAxNjpcdGNvbmZpZyBNVDc2X1NESU9cbiAgMTc6XHRcdHRyaXN0YXRlXG4gIDE4Olx0XHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBNVDc2eDAyX0xJQlxuICAyMTpcdFx0dHJpc3RhdGVcbiAgMjI6XHRcdHNlbGVjdCBNVDc2X0NPUkVcbiAgMjM6XHRcbiAgMjQ6XHRjb25maWcgTVQ3NngwMl9VU0JcbiAgMjU6XHRcdHRyaXN0YXRlXG4gIDI2Olx0XHRzZWxlY3QgTVQ3Nl9VU0JcbiAgMjc6XHRcbiAgMjg6XHRjb25maWcgTVQ3Nl9DT05OQUNfTElCXG4gIDI5Olx0XHR0cmlzdGF0ZVxuICAzMDpcdFx0c2VsZWN0IE1UNzZfQ09SRVxuICAzMTpcdFxuICAzMjpcdGNvbmZpZyBNVDc5MnhfTElCXG4gIDMzOlx0XHR0cmlzdGF0ZVxuICAzNDpcdFx0c2VsZWN0IE1UNzZfQ09OTkFDX0xJQlxuICAzNTpcdFxuICAzNjpcdGNvbmZpZyBNVDc5MnhfVVNCXG4gIDM3Olx0XHR0cmlzdGF0ZVxuICAzODpcdFx0c2VsZWN0IE1UNzZfVVNCXG4gIDM5Olx0XG4gIDQwOlx0Y29uZmlnIE1UNzZfTlBVXG4gIDQxOlx0XHR0cmlzdGF0ZVxuICA0MjpcdFx0ZGVwZW5kcyBvbiBORVRfQUlST0hBX05QVT15IHx8IE1UNzZfQ09SRT1ORVRfQUlST0hBX05QVVxuICA0MzpcdFxuICA0NDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnXCYjMzQ7XG4gIDQ1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWdcJiMzNDtcbiAgNDY6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZ1wmIzM0O1xuICA0NzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnXCYjMzQ7XG4gIDQ4Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWdcJiMzNDtcbiAgNDk6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ1wmIzM0O1xuICA1MDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ3OAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBNVDc5MjUgRHJpdmVyIEJ1aWxkIFByb2Nlc3MqKgoKT2theSwgc28gdGhlIGltbWVkaWF0ZSBvYmplY3RpdmUgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIgaXMgY29uc3RydWN0ZWQgd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLiBUaGUgbG9naWNhbCBzdGFydGluZyBwb2ludCwgYXMgYWx3YXlzLCBpcyB0aGUgYE1ha2VmaWxlYCDigJMgc3BlY2lmaWNhbGx5IHRoZSBvbmUgcmVzaWRpbmcgd2l0aGluIHRoZSByZWxldmFudCBkcml2ZXIgZGlyZWN0b3J5LiBJJiMzOTttIHplcm9pbmcgaW4gb24gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlYC4gVGhpcyBmaWxlIHNob3VsZCBjb250YWluIHRoZSBjcnVjaWFsIGJ1aWxkIGluc3RydWN0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgb2JqZWN0IGZpbGUgZGVmaW5pdGlvbnMgdGhhdCBkaWN0YXRlIGhvdyB0aGUgTVQ3OTI1IGRyaXZlciBnZXRzIGNvbXBpbGVkIGFuZCBsaW5rZWQgaW50byB0aGUga2VybmVsIG1vZHVsZSAob3IgcG90ZW50aWFsbHksIGJ1aWx0IHN0YXRpY2FsbHksIHRob3VnaCBsZXNzIGxpa2VseSBmb3Igd2lyZWxlc3MpLiBNeSBleHBlY3RhdGlvbiBpcyB0aGF0IHRoaXMgTWFrZWZpbGUgd2lsbCBiZSBhIGNvbWJpbmF0aW9uIG9mIHJ1bGVzLCB2YXJpYWJsZXMgdGhhdCB3aWxsIHVsdGltYXRlbHkgc3BlY2lmeSB0aGUgY29tcGlsZXIgZmxhZ3MsIHNvdXJjZSBmaWxlcywgYW5kIGFueSBvdGhlciBleHRlcm5hbCBkZXBlbmRlbmNpZXMgcmVxdWlyZWQgZm9yIHN1Y2Nlc3NmdWwgY29tcGlsYXRpb24gb2YgdGhlIGRyaXZlci4gSSYjMzk7bSBhbnRpY2lwYXRpbmcgdGhlIHN0YW5kYXJkIGtlcm5lbCBidWlsZCBzeXN0ZW0gaWRpb21zOiB1c2Ugb2YgYG9iai1tYCwgYGNjZmxhZ3MteWAsIGBzcmMteWAsIGV0Yy4gdG8gbWFuYWdlIG9iamVjdCBmaWxlcyBhbmQgZGVwZW5kZW5jaWVzLiBJdOKAmXMgYSBwcmV0dHkgc3RhbmRhcmQgYXBwcm9hY2gsIGJ1dCB0aGUgZGV0YWlscyBpbiB0aGlzIHNwZWNpZmljIE1ha2VmaWxlIHdpbGwgYmUgY3JpdGljYWwgdG8gdW5kZXJzdGFuZCBhbnkgTWVkaWF0ZWstc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgb3IgY3VzdG9taXphdGlvbnMgZm9yIHRoZSA3OTI1IGNoaXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdFxuICAgMzpcdG9iai0kKENPTkZJR19NVDc5MjVfQ09NTU9OKSAmIzQzOz0gbXQ3OTI1LWNvbW1vbi5vXG4gICA0Olx0b2JqLSQoQ09ORklHX01UNzkyNUUpICYjNDM7PSBtdDc5MjVlLm9cbiAgIDU6XHRvYmotJChDT05GSUdfTVQ3OTI1VSkgJiM0Mzs9IG10NzkyNXUub1xuICAgNjpcdFxuICAgNzpcdG10NzkyNS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm8gbmFuLm9cbiAgIDg6XHRtdDc5MjUtY29tbW9uLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG4gICA5Olx0bXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm9cbiAgMTA6XHRtdDc5MjV1LXkgOj0gdXNiLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDcxCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgY29kZSByZWxhdGVkIHRvIGBtdDc5MjV1X3N0b3BgIGFuZCBpdHMgY2FsbGVyczoKCioqRGl2aW5nIGludG8gdGhlIGBtdDc5MjV1X3N0b3BgIENvZGUqKgoKT2theSwgdGltZSB0byB6ZXJvIGluIG9uIHRoaXMgYG10NzkyNXVfc3RvcGAgZnVuY3Rpb24gYW5kIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBhbmQsIGNydWNpYWxseSwgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgYnkgdHJhY2luZyB0aGUgZnVuY3Rpb24mIzM5O3MgZGVmaW5pdGlvbiBhbmQgdGhlbiBpbW1lZGlhdGVseSBicmFuY2ggb3V0IHRvIGl0cyBjYWxsIHNpdGVzLiBXaGF0IHRyaWdnZXJzIHRoaXMgcm91dGluZT8gQXJlIHRoZXJlIGFueSBzdWJ0bGV0aWVzIGluIGl0cyBpbXBsZW1lbnRhdGlvbiB0aGF0IG1pZ2h0IGJlIGNhdXNpbmcgYW4gaXNzdWUsIHBhcnRpY3VsYXJseSBnaXZlbiB0aGUgc3BlY2lmaWMgY29udGV4dCBvZiB0aGlzIGhhcmR3YXJlPyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCByZXNvdXJjZSBsZWFrcywgb3IgYW55dGhpbmcgdGhhdCBjb3VsZCBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIHRoZSBzaHV0ZG93biBvciBoYWx0IHByb2Nlc3Mgb2YgdGhlIGBtdDc5MjV1YC4gSSBleHBlY3QgdG8gZmluZCBzb21lIGludGVyZXN0aW5nIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZSBkcml2ZXIsIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciwgYW5kIHBvdGVudGlhbGx5IHRoZSBuZXR3b3JrIHN0YWNrIGl0c2VsZi4gVGhpcyBkZWVwZXIgZGl2ZSBzaG91bGQgcmV2ZWFsIGFueSBwb3RlbnRpYWwgcHJvYmxlbXMgd2l0aCB0aGUgc3RvcHBpbmcgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1dV8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxMjpzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgbXQ3OTI1dV9kZXZpY2VfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTEzLVx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDBlOGQsIDB4NjYzOSwgMHhmZiwgMHhmZiwgMHhmZiksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MjY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6Mjc6bXQ3OTI1dV9tY3Vfc2VuZF9tZXNzYWdlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI4LVx0XHRcdCBpbnQgY21kLCBpbnQgKnNlcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy01NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjU2OnN0YXRpYyBpbnQgbXQ3OTI1dV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtNTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTYxLVx0XHQudGFpbHJvb20gPSBNVF9VU0JfVEFJTF9TSVpFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6NjI6XHRcdC5tY3Vfc2tiX3NlbmRfbXNnID0gbXQ3OTI1dV9tY3Vfc2VuZF9tZXNzYWdlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtNjMtXHRcdC5tY3VfcGFyc2VfcmVzcG9uc2UgPSBtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6ODA6c3RhdGljIGludCBtdDc5MjV1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtODEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE1MDpzdGF0aWMgdm9pZCBtdDc5MjV1X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTU5OnN0YXRpYyBpbnQgbXQ3OTI1dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNjAtXHRcdFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNzktXHRzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkyeF9oaWZfb3BzIGhpZl9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxODA6XHRcdC5tY3VfaW5pdCA9IG10NzkyNXVfbWN1X2luaXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xODEtXHRcdC5pbml0X3Jlc2V0ID0gbXQ3OTJ4dV9pbml0X3Jlc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTgyOlx0XHQucmVzZXQgPSBtdDc5MjV1X21hY19yZXNldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE4My1cdH07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMjA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MjA1Olx0b3BzLVx1MDAzZXN0b3AgPSBtdDc5MjV1X3N0b3A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yMDYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMjc4LSNpZmRlZiBDT05GSUdfUE1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjI3OTpzdGF0aWMgaW50IG10NzkyNXVfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IHN0YXRlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMjgwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzozMTI6c3RhdGljIGludCBtdDc5MjV1X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTMxMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzYwOk1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBtdDc5MjV1X2RldmljZV90YWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNjEtTU9EVUxFX0ZJUk1XQVJFKE1UNzkyNV9GSVJNV0FSRV9XTSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0zNjI9TU9EVUxFX0ZJUk1XQVJFKE1UNzkyNV9ST01fUEFUQ0gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzY0OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjV1X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM2NS1cdC5uYW1lXHRcdD0gS0JVSUxEX01PRE5BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzozNjY6XHQuaWRfdGFibGVcdD0gbXQ3OTI1dV9kZXZpY2VfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzozNjc6XHQucHJvYmVcdFx0PSBtdDc5MjV1X3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzY4LVx0LmRpc2Nvbm5lY3RcdD0gbXQ3OTJ4dV9kaXNjb25uZWN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzY5LSNpZmRlZiBDT05GSUdfUE1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM3MDpcdC5zdXNwZW5kXHQ9IG10NzkyNXVfc3VzcGVuZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM3MTpcdC5yZXN1bWVcdFx0PSBtdDc5MjV1X3Jlc3VtZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM3MjpcdC5yZXNldF9yZXN1bWVcdD0gbXQ3OTI1dV9yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNzMtI2VuZGlmIC8qIENPTkZJR19QTSAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM3Ni19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6Mzc3Om1vZHVsZV91c2JfZHJpdmVyKG10NzkyNXVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM3OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQzOAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgbXQ3OTI1dV9zdG9wIGluIG10NzkyNSYjMzk7cyBVU0IgRHJpdmVyKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNodXRkb3duIHNlcXVlbmNlIGZvciB0aGUgbXQ3OTI1JiMzOTtzIFVTQiBkcml2ZXIuIE15IGZpcnN0IHN0ZXAgaXMgdG8gemVybyBpbiBvbiB0aGUgYG10NzkyNXVfc3RvcGAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jYC4gSSBhbHJlYWR5IGtub3cgdGhlIGRldmljZSB0cmVlIGlzIGNvcnJlY3QsIHNvIGxldCYjMzk7cyBtYWtlIHN1cmUgdGhhdCB0aGUgcHJvcGVyIHNlcXVlbmNlIHRvIHRlYXIgZG93biB0aGUgZGV2aWNlIGlzIGFsc28gY29ycmVjdC4KCk5vdywgSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIGNvZGUuIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgb24gbGluZXMgMTQ1IHRocm91Z2ggMjIwIHdpdGhpbiB0aGF0IGZpbGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIHJlbGV2YW50IGNvbnRleHQgZm9yIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGR1cmluZyB0aGUgYHN0b3BgIGZ1bmN0aW9uLCBpbmNsdWRpbmcgYW55IHJlc291cmNlIGRlYWxsb2NhdGlvbiwgaGFyZHdhcmUgcmVzZXQsIG9yIHBvd2VyIG1hbmFnZW1lbnQgY2FsbHMuIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGUgY29yZSBsb2dpYyB0byB1bmRlcnN0YW5kIGl0cyBmbG93IGFuZCBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHByb25lIHRvIGVycm9ycy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIHRoYXQgbWlnaHQgaW50ZXJmZXJlIHdpdGggZ3JhY2VmdWwgZGV2aWNlIHNodXRkb3duLCBlc3BlY2lhbGx5IGFueSByYWNlIGNvbmRpdGlvbnMgb3IgaW1wcm9wZXIgc3luY2hyb25pemF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDcwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNDU6XHRcdG10NzZfd29ya2VyX2VuYWJsZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni50eF93b3JrZXIpO1xuIDE0NjpcdFxuIDE0NzpcdFx0cmV0dXJuIGVycjtcbiAxNDg6XHR9XG4gMTQ5Olx0XG4gMTUwOlx0c3RhdGljIHZvaWQgbXQ3OTI1dV9zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIHN1c3BlbmQpXG4gMTUxOlx0e1xuIDE1MjpcdFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IG10NzkyeF9od19kZXYoaHcpO1xuIDE1MzpcdFxuIDE1NDpcdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yayk7XG4gMTU1Olx0XG4gMTU2Olx0XHRtdDc5Mnh1X3N0b3AoaHcsIHN1c3BlbmQpO1xuIDE1NzpcdH1cbiAxNTg6XHRcbiAxNTk6XHRzdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuIDE2MDpcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4gMTYxOlx0e1xuIDE2MjpcdFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc2X2RyaXZlcl9vcHMgZHJ2X29wcyA9IHtcbiAxNjM6XHRcdFx0LnR4d2lfc2l6ZSA9IE1UX1NESU9fVFhEX1NJWkUsXG4gMTY0Olx0XHRcdC5kcnZfZmxhZ3MgPSBNVF9EUlZfUlhfRE1BX0hEUiB8IE1UX0RSVl9IV19NR01UX1RYUSB8XG4gMTY1Olx0XHRcdFx0ICAgICBNVF9EUlZfQU1TRFVfT0ZGTE9BRCxcbiAxNjY6XHRcdFx0LnN1cnZleV9mbGFncyA9IFNVUlZFWV9JTkZPX1RJTUVfVFggfFxuIDE2NzpcdFx0XHRcdFx0U1VSVkVZX0lORk9fVElNRV9SWCB8XG4gMTY4Olx0XHRcdFx0XHRTVVJWRVlfSU5GT19USU1FX0JTU19SWCxcbiAxNjk6XHRcdFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxuIDE3MDpcdFx0XHQudHhfY29tcGxldGVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcbiAxNzE6XHRcdFx0LnR4X3N0YXR1c19kYXRhID0gbXQ3OTI1X3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhLFxuIDE3MjpcdFx0XHQucnhfc2tiID0gbXQ3OTI1X3F1ZXVlX3J4X3NrYixcbiAxNzM6XHRcdFx0LnJ4X2NoZWNrID0gbXQ3OTI1X3J4X2NoZWNrLFxuIDE3NDpcdFx0XHQuc3RhX2FkZCA9IG10NzkyNV9tYWNfc3RhX2FkZCxcbiAxNzU6XHRcdFx0LnN0YV9ldmVudCA9IG10NzkyNV9tYWNfc3RhX2V2ZW50LFxuIDE3NjpcdFx0XHQuc3RhX3JlbW92ZSA9IG10NzkyNV9tYWNfc3RhX3JlbW92ZSxcbiAxNzc6XHRcdFx0LnVwZGF0ZV9zdXJ2ZXkgPSBtdDc5MnhfdXBkYXRlX2NoYW5uZWwsXG4gMTc4Olx0XHR9O1xuIDE3OTpcdFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MnhfaGlmX29wcyBoaWZfb3BzID0ge1xuIDE4MDpcdFx0XHQubWN1X2luaXQgPSBtdDc5MjV1X21jdV9pbml0LFxuIDE4MTpcdFx0XHQuaW5pdF9yZXNldCA9IG10NzkyeHVfaW5pdF9yZXNldCxcbiAxODI6XHRcdFx0LnJlc2V0ID0gbXQ3OTI1dV9tYWNfcmVzZXQsXG4gMTgzOlx0XHR9O1xuIDE4NDpcdFx0c3RhdGljIHN0cnVjdCBtdDc2X2J1c19vcHMgYnVzX29wcyA9IHtcbiAxODU6XHRcdFx0LnJyID0gbXQ3OTJ4dV9ycixcbiAxODY6XHRcdFx0LndyID0gbXQ3OTJ4dV93cixcbiAxODc6XHRcdFx0LnJtdyA9IG10NzkyeHVfcm13LFxuIDE4ODpcdFx0XHQucmVhZF9jb3B5ID0gbXQ3NnVfcmVhZF9jb3B5LFxuIDE4OTpcdFx0XHQud3JpdGVfY29weSA9IG10NzkyeHVfY29weSxcbiAxOTA6XHRcdFx0LnR5cGUgPSBNVDc2X0JVU19VU0IsXG4gMTkxOlx0XHR9O1xuIDE5MjpcdFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHVzYl9pbnRmKTtcbiAxOTM6XHRcdHN0cnVjdCBpZWVlODAyMTFfb3BzICpvcHM7XG4gMTk0Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodztcbiAxOTU6XHRcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXY7XG4gMTk2Olx0XHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXY7XG4gMTk3Olx0XHR1OCBmZWF0dXJlcztcbiAxOTg6XHRcdGludCByZXQ7XG4gMTk5Olx0XG4gMjAwOlx0XHRvcHMgPSBtdDc5MnhfZ2V0X21hYzgwMjExX29wcyhcdTAwMjZ1c2JfaW50Zi1cdTAwM2VkZXYsIFx1MDAyNm10NzkyNV9vcHMsXG4gMjAxOlx0XHRcdFx0XHQgICAgICAodm9pZCAqKWlkLVx1MDAzZWRyaXZlcl9pbmZvLCBcdTAwMjZmZWF0dXJlcyk7XG4gMjAyOlx0XHRpZiAoIW9wcylcbiAyMDM6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMjA0Olx0XG4gMjA1Olx0XHRvcHMtXHUwMDNlc3RvcCA9IG10NzkyNXVfc3RvcDtcbiAyMDY6XHRcbiAyMDc6XHRcdG1kZXYgPSBtdDc2X2FsbG9jX2RldmljZShcdTAwMjZ1c2JfaW50Zi1cdTAwM2VkZXYsIHNpemVvZigqZGV2KSwgb3BzLCBcdTAwMjZkcnZfb3BzKTtcbiAyMDg6XHRcdGlmICghbWRldilcbiAyMDk6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMjEwOlx0XG4gMjExOlx0XHRkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkyeF9kZXYsIG10NzYpO1xuIDIxMjpcdFx0ZGV2LVx1MDAzZWZ3X2ZlYXR1cmVzID0gZmVhdHVyZXM7XG4gMjEzOlx0XHRkZXYtXHUwMDNlaGlmX29wcyA9IFx1MDAyNmhpZl9vcHM7XG4gMjE0Olx0XHRtdDc5Mnh1X3Jlc2V0X3dvcmtfaW5pdChkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDEyNAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipEaWdnaW5nIGludG8gUG93ZXIgTWFuYWdlbWVudCBmb3IgUENJLWUgRGV2aWNlcyoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGlzIFBDSS1lIHBvd2VyIG1hbmFnZW1lbnQgdGhpbmcuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgbG9va2luZyBmb3Igc29tZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbnMgaW4gc2ltaWxhciBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgdGhlIGBtdDc5MjVlYCBXaUZpIGRyaXZlciwgc2luY2UgdGhhdCYjMzk7cyBhIGtub3duIHF1YW50aXR5LiBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIGNoZWNrIG91dCB0aGUgYG10NzkyNWVfc3RvcGAgZnVuY3Rpb24sIG9yIHNvbWV0aGluZyBhbmFsb2dvdXMgdG8gaXQsIHRvIHNlZSBpZiB0aGV5JiMzOTtyZSBzaHV0dGluZyBkb3duIHRoZSBQQ0ktZSBkZXZpY2UgaW4gYSBzaW1pbGFyIGZhc2hpb24uIEFyZSB0aGV5IGNhbGxpbmcgc29tZXRoaW5nIHNwZWNpZmljIGR1cmluZyBkZXZpY2Ugc3RvcCB0aGF0IEkgY2FuIGxlYXJuIGZyb20/IEJleW9uZCB0aGF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gYG1sb19wbV93b3JrYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoYXQgaXMgYmVpbmcgdXNlZCwgd2hlcmUgaXQgaXMgY2FsbGVkIGZyb20sIGFuZCB3aGF0IGtpbmQgb2YgcG93ZXIgc3RhdGUgdHJhbnNpdGlvbnMgaXQmIzM5O3MgcmVzcG9uc2libGUgZm9yLiBVbmRlcnN0YW5kaW5nIHRob3NlIGNvbXBvbmVudHMgd2lsbCBnaXZlIG1lIGluc2lnaHRzIHRvIGhvdyBQQ0ktZSBwb3dlciBtYW5hZ2VtZW50IGlzIGhhbmRsZWQgaW4gYSB3b3JrYWJsZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21sb19wbV93b3JrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYz0yNDM9aW50IG10NzkyNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjUzLVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBtLnBzX3dvcmssIG10NzkyeF9wbV9wb3dlcl9zYXZlX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI1NDpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yaywgbXQ3OTI1X21sb19wbV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNTUtXHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBtLndha2Vfd29yaywgbXQ3OTJ4X3BtX3dha2Vfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MTUxMT12b2lkIG10NzkyNV9tYWNfcmVzZXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTUyNy1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZwbS1cdTAwM2Vwc193b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE1Mjg6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE1MjktXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNnBtLVx1MDAzZXdha2Vfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTE1MTg9bXQ3OTI1X21sb19wbV9pdGVyKHZvaWQgKnByaXYsIHU4ICptYWMsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE1MzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTUzODp2b2lkIG10NzkyNV9tbG9fcG1fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTUzOS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTU0MC1cdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG10NzkyeF9kZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTU0MTpcdFx0XHRcdFx0ICAgICAgbWxvX3BtX3dvcmsud29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTU0Mi1cdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gbXQ3Nl9odyhkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0xNzA0PXN0YXRpYyBpbnQgbXQ3OTI1X3N1c3BlbmQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE3MTMtXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZXBtLnBzX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE3MTQ6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xNzE1LVx0bXQ3Nl9jb25uYWNfZnJlZV9wZW5kaW5nX3R4X3NrYnMoXHUwMDI2ZGV2LVx1MDAzZXBtLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MjE1MD1zdGF0aWMgdm9pZCBtdDc5MjVfbGlua19pbmZvX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTIxOTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjE5ODpcdFx0aWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhodywgXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrLCA1ICogSFopO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTIxOTktXHRcdG12aWYtXHUwMDNlbWxvX3BtX3N0YXRlID0gTVQ3OTJ4X01MT19DSEFOR0VEX1BTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yNzA3PXN0YXRpYyB2b2lkIG10NzkyNV9zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIHN1c3BlbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI3MTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjcxMTpcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZkZXYtXHUwMDNlbWxvX3BtX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI3MTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzMwPWludCBtdDc5MjVfbWN1X3VuaV9yeF9iYShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMzMi1cdFx0XHQgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzMzOnZvaWQgbXQ3OTI1X21sb19wbV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zMzQtdm9pZCBtdDc5MjVfc2Nhbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9NDE9c3RhdGljIHZvaWQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTU1LVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnBtLVx1MDAzZXBzX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NTY6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTU3LVx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZwbS1cdTAwM2V3YWtlX3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTczNT1zdGF0aWMgaW50IG10NzkyNV9wY2lfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXZpY2UpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNzQ2LVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnBtLVx1MDAzZXBzX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NzQ3Olx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy03NDgtXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNnBtLVx1MDAzZXdha2Vfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MTUwPXN0YXRpYyB2b2lkIG10NzkyNXVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE1NDpcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZkZXYtXHUwMDNlbWxvX3BtX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTU1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTI3OT1zdGF0aWMgaW50IG10NzkyNXVfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IHN0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI4Ny1cdGZsdXNoX3dvcmsoXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6Mjg4Olx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yODktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD0yOTM9c3RydWN0IG10NzkyeF9kZXYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMzMxLVx0c3RydWN0IHdvcmtfc3RydWN0IGlwdjZfbnNfd29yaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6MzMyOlx0c3RydWN0IGRlbGF5ZWRfd29yayBtbG9fcG1fd29yaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMzMzLVx0LyogSVB2NiBhZGRyZXNzZXMgZm9yIFdvV0xBTiAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjc4MQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQ4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGdXp6aW5nIFdvcnRoaW5lc3Mgb2YgdGhlIE1UNzkyNVUgVVNCIERyaXZlciBTdG9wIEZ1bmN0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbnZlc3RpZ2F0ZSB0aGUgYG1hYzgwMjExIG9wcy0mZ3Q7c3RvcGAgZnVuY3Rpb24gY2FsbC4gV2hlbiBhIHdpcmVsZXNzIGludGVyZmFjZSBnb2VzIGRvd24sIGJlIGl0IHRocm91Z2ggYW4gYGlwIGxpbmsgc2V0YCBjb21tYW5kIG9yIHVucmVnaXN0cmF0aW9uLCBgbWFjODAyMTFgIGNhbGxzIHRoaXMgZnVuY3Rpb24uIEluIG91ciBjYXNlLCBhbmQgdGhpcyBpcyBrZXksIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggVVNCIGVtdWxhdGlvbiB2aWEgc29tZXRoaW5nIGxpa2UgYHN5el91c2JfY29ubmVjdGAgb3IgZXZlbiBqdXN0IHRoZSByYXcgZ2FkZ2V0IG1vZGUuIFRoaXMgYWxsb3dzIGBzeXprYWxsZXJgIHRvIGludGVyYWN0IHdpdGggTVQ3OTI1VSBkZXZpY2VzIOKAkyB0aG9zZSB3aXRoIFVTQiBJRHMgbGlrZSAwZThkOjY2MzksIGZvciBleGFtcGxlLiBXZSBjYW4gcmVnaXN0ZXIgdGhlIG1hYzgwMjExIGRldmljZSwgYnJpbmcgaXQgdXAsIG1hbmlwdWxhdGUgaXQgd2l0aCBgbmw4MDIxMWAgY2FsbHMsIGFuZCB0aGVuLCBjcnVjaWFsbHksIGJyaW5nIGl0IGJhY2sgZG93bi4KClNwZWNpZmljYWxseSwgd2hlbiB0aGUgbWFjODAyMTEgaW50ZXJmYWNlIHNodXRzIGRvd24sIGBtdDc5MjV1X3N0b3BgIGdldHMgZXhlY3V0ZWQuIFRoaXMgZnVuY3Rpb24gdGhlbiBjYWxscyBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7ZGV2LSZndDttbG9fcG1fd29yaylgIGJlZm9yZSBjYWxsaW5nIGBtdDc5Mnh1X3N0b3BgLgoKTm93LCB0aGUgaW1wb3J0YW50IHBhcnQuICBHaXZlbiB0aGF0IHdlIGNhbiB0cmlnZ2VyIHRoaXMgc3BlY2lmaWMgY2FsbGJhY2ssIGBvcHMtJmd0O3N0b3BgLCB3aGljaCBpcyBhIGZ1bmN0aW9uIHdpdGhpbiBhIFVTQiB3aXJlbGVzcyBkcml2ZXIsIGFuZCB0aGF0IGl0IGlzICpyZWFjaGFibGUqIGFuZCAqZXhlY3V0YWJsZSogaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB1c2luZyBVU0IgZW11bGF0aW9uIGFuZCBtYWM4MDIxMS9ubDgwMjExIG9wZXJhdGlvbnMsICpJKiBjb25jbHVkZSB0aGF0IHRoaXMgaXMgYWJzb2x1dGVseSBgV29ydGhGdXp6aW5nYC4gVGhlIGFiaWxpdHkgdG8gcHJlZGljdGFibHkgYnJpbmcgdGhlIGludGVyZmFjZSB1cCBhbmQgZG93biwgdHJpZ2dlcmluZyB0aGUgYHN0b3BgIGZ1bmN0aW9uLCBtZWFucyB3ZSBoYXZlIGEgdmlhYmxlIGZ1enppbmcgdGFyZ2V0LgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBUaGUgY3J1Y2lhbCBjb25maWcgaXMgYE1UNzkyNVVgLiAgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIGFyZSBlbmFibGVkLiAgTGV0JiMzOTtzIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnYCBmaWxlLiAgSGVyZSBpdCBpczoKCmBgYGtjb25maWcKY29uZmlnIE1UNzkyNVUKCXRyaXN0YXRlICYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0JiMzNDsKCXNlbGVjdCBNVDc5MnhfVVNCCglzZWxlY3QgTVQ3OTI1X0NPTU1PTgoJZGVwZW5kcyBvbiBNQUM4MDIxMQoJZGVwZW5kcyBvbiBVU0IKYGBgCgpPa2F5LCBgTVQ3OTI1VWAgZGVwZW5kcyBvbiBgTUFDODAyMTFgIGFuZCBgVVNCYCwgYW5kIGl0IGFsc28gc2VsZWN0cyBgTVQ3OTJ4X1VTQmAgYW5kIGBNVDc5MjVfQ09NTU9OYC4gU28gd2UgaGF2ZSB0aGUgZGVwZW5kZW5jaWVzIGluIG9yZGVyIHRvIGJ1aWxkIGEgZnV6emluZyB0YXJnZXQuIEkgbmVlZCB0byBtYWtlIHN1cmUgYE1BQzgwMjExYCBhbmQgYFVTQmAgYXJlIGNvbmZpZ3VyZWQuIEkgd2lsbCBhbHNvIGhhdmUgdG8gY2hlY2sgdGhlIHBhcmVudCBtZW51L2NvbmZpZyBkZXBlbmRlbmNpZXMgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdgLCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZ2AsIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZXMuIEkgd2lsbCBtYWtlIHN1cmUgdGhvc2UgYXJlIHByb3Blcmx5IHNldCBhcyB3ZWxsLiBXaXRoIHRob3NlIGNvbmZpZ3MgaW4gcGxhY2UsIHRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGZ1enppbmcgY2FuZGlkYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzb3VyY2UuKm10NzkyNSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZz01MD1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjUxOnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDc2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIE1lZGlhdGVrIFdpcmVsZXNzIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiBmb3IgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVycy4gTXkgZmlyc3QgcG9ydCBvZiBjYWxsIHdpbGwgYmUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdgLiBUaGlzIGZpbGUgKnNob3VsZCogYmUgdGhlIGNlbnRyYWwgaHViIGZvciBhbGwgdGhlIGJ1aWxkLXRpbWUgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gTWVkaWF0ZWsmIzM5O3Mgd2lyZWxlc3Mgc2lsaWNvbi4gSSBleHBlY3QgdG8gZmluZCB0aGUgdXN1YWwgc3VzcGVjdHM6IG9wdGlvbnMgZm9yIHZhcmlvdXMgTWVkaWF0ZWsgY2hpcHNldHMgYW5kIHZhcmlhbnRzLCBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGZlYXR1cmVzIChsaWtlIHJlZ3VsYXRvcnksIE1BQzgwMjExKSwgYW5kIHBvdGVudGlhbGx5IHNvbWUgZGV2aWNlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTttIGhvcGluZyBpdCYjMzk7cyB3ZWxsLXN0cnVjdHVyZWQgYW5kIHVzZXMgdGhlIHN0YW5kYXJkIEtjb25maWcgY29udmVudGlvbnMgdG8gYXZvaWQgdG9vIG11Y2ggZGlnZ2luZy4gSSB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB3aGljaCBkcml2ZXJzIGFyZSBhdmFpbGFibGUsIGhvdyB0aGV5JiMzOTtyZSBlbmFibGVkLCBhbmQgd2hhdCBzdXBwb3J0aW5nIGluZnJhc3RydWN0dXJlIGlzIHJlcXVpcmVkLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgc28gSSBrbm93IHdoYXQmIzM5O3MgcG9zc2libGUsIHdoYXQmIzM5O3Mgbm90LCBhbmQgd2hhdCBJIG1pZ2h0IG5lZWQgdG8gY29uc2lkZXIgd2hlbiBjb25maWd1cmluZyBhIHN5c3RlbSBvciB0cm91Ymxlc2hvb3RpbmcgYSBzcGVjaWZpYyBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBXTEFOX1ZFTkRPUl9NRURJQVRFS1xuICAgMzpcdFx0Ym9vbCBcJiMzNDtNZWRpYVRlayBkZXZpY2VzXCYjMzQ7XG4gICA0Olx0XHRkZWZhdWx0IHlcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgSWYgeW91IGhhdmUgYSB3aXJlbGVzcyBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cbiAgIDc6XHRcbiAgIDg6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gICA5Olx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXG4gIDEwOlx0XHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcbiAgMTE6XHRcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxMjpcdFxuICAxMzpcdGlmIFdMQU5fVkVORE9SX01FRElBVEVLXG4gIDE0Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYwMXUvS2NvbmZpZ1wmIzM0O1xuICAxNTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdcJiMzNDtcbiAgMTY6XHRlbmRpZiAjIFdMQU5fVkVORE9SX01FRElBVEVLXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NjIxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgaXQ6CgoqKktjb25maWcgRGl2ZSBCZWdpbnMqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gd29yay4gTGV0JiMzOTtzIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgV2ktRmkgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIE15IGluc3RpbmN0IHNheXMgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgYmUgbG9jYXRlZCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSB0eXBpY2FsIGxvY2F0aW9uIGZvciBjb3JlIFdpLUZpIGRyaXZlciBmZWF0dXJlIGZsYWdzIGFuZCBkZXBlbmRlbmNpZXMuIEl04oCZcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBrZXJuZWwmIzM5O3Mgd2lyZWxlc3Mgc3Vic3lzdGVtIGlzIGJ1aWx0IGFuZCBjb25maWd1cmVkLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN0cnVjdHVyZSB3aXRoaW4gdGhpcyBmaWxlLiBJIGV4cGVjdCB0byBmaW5kIGRlcGVuZGVuY2llcyBvbiB2YXJpb3VzIGhhcmR3YXJlIHBsYXRmb3JtcywgUEhZIHR5cGVzLCByZWd1bGF0b3J5IGRvbWFpbnMsIGFuZCBwcm9iYWJseSBzb21lIHByb3RvY29sLXNwZWNpZmljIHNldHRpbmdzIHRoZXJlLiBUaW1lIHRvIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtXTEFOX1ZFTkRPUl9NRURJQVRFSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlPTEyPW9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NQVJWRUxMKSAmIzQzOz0gbWFydmVsbC9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NRURJQVRFSykgJiM0Mzs9IG1lZGlhdGVrL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTQtb2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX01JQ1JPQ0hJUCkgJiM0Mzs9IG1pY3JvY2hpcC9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01FRElBVEVLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLTMtXHRib29sIFwmIzM0O01lZGlhVGVrIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZzoxMzppZiBXTEFOX1ZFTkRPUl9NRURJQVRFS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZy0xNC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnPTE1PXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWc6MTY6ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NRURJQVRFS1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTEzMgoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDEzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIE1UNzkyNVUgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTt2ZSBnb3QgYWxsIHRoZSBiYXNlcyBjb3ZlcmVkIHJlZ2FyZGluZyB0aGUgTVQ3OTI1VSBkcml2ZXIuIExldCYjMzk7cyBzdGFydCBieSBjb25maXJtaW5nIEkmIzM5O3ZlIGNoZWNrZWQgdGhlIHN0YW5kYXJkIHN1c3BlY3RzOiBgVVNCYCwgYE1BQzgwMjExYCwgYE1UNzkyNVVgLCBhbmQgYFdMQU5fVkVORE9SX01FRElBVEVLYC4gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSYjMzk7bSBtaXNzaW5nIHRoYXQgY291bGQgYmUgaW1wYWN0aW5nIHRoaXMuCgpNeSBuZXh0IG1vdmUgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGl0c2VsZi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jYC4gSSYjMzk7bGwgYmUgc2Nhbm5pbmcgdGhpcyBmaWxlLCBsb29raW5nIGZvciBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdXNpbmcgYCNpZmRlZmAgYXJvdW5kIGtleSBmdW5jdGlvbnMgbGlrZSBgbXQ3OTI1dV9zdG9wYCBhbmQgYG10NzkyNXVfcHJvYmVgLiBUaGF0JiMzOTtsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaXMgYmVpbmcgY29tcGlsZWQgYW5kIGlmIGFueSBjb25maWd1cmF0aW9ucyBhcmUgYWZmZWN0aW5nIHRoZSBiZWhhdmlvciBJJiMzOTttIHNlZWluZy4gVG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSB2aWV3LCBJIG1heSBuZWVkIHRvIHJlYWQgdGhlIHdob2xlIGZpbGUgdG8gZ3Jhc3AgdGhlIGJpZ2dlciBwaWN0dXJlLCBvciBhdCBsZWFzdCBtZXRpY3Vsb3VzbHkgaW5zcGVjdCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0LyogQ29weXJpZ2h0IChDKSAyMDIzIE1lZGlhVGVrIEluYy4gKi9cbiAgIDM6XHRcbiAgIDQ6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuICAgNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4gICA2Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvdXNiLmhcdTAwM2VcbiAgIDc6XHRcbiAgIDg6XHQjaW5jbHVkZSBcJiMzNDttdDc5MjUuaFwmIzM0O1xuICAgOTpcdCNpbmNsdWRlIFwmIzM0O21jdS5oXCYjMzQ7XG4gIDEwOlx0I2luY2x1ZGUgXCYjMzQ7bWFjLmhcJiMzNDtcbiAgMTE6XHRcbiAgMTI6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgbXQ3OTI1dV9kZXZpY2VfdGFibGVbXSA9IHtcbiAgMTM6XHRcdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgwZThkLCAweDY2MzksIDB4ZmYsIDB4ZmYsIDB4ZmYpLFxuICAxNDpcdFx0XHQuZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3QpTVQ3OTI1X0ZJUk1XQVJFX1dNIH0sXG4gIDE1Olx0XHR7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MGU4ZCwgMHg3OTI1LCAweGZmLCAweGZmLCAweGZmKSxcbiAgMTY6XHRcdFx0LmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KU1UNzkyNV9GSVJNV0FSRV9XTSB9LFxuICAxNzpcdFx0LyogTmV0Z2VhciwgSW5jLiBBODUwMCAqL1xuICAxODpcdFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDA4NDYsIDB4OTA1MCwgMHhmZiwgMHhmZiwgMHhmZiksXG4gIDE5Olx0XHRcdC5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdClNVDc5MjVfRklSTVdBUkVfV00gfSxcbiAgMjA6XHRcdC8qIE5ldGdlYXIsIEluYy4gQTkwMDAgKi9cbiAgMjE6XHRcdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgwODQ2LCAweDkwNzIsIDB4ZmYsIDB4ZmYsIDB4ZmYpLFxuICAyMjpcdFx0XHQuZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3QpTVQ3OTI1X0ZJUk1XQVJFX1dNIH0sXG4gIDIzOlx0XHR7IH0sXG4gIDI0Olx0fTtcbiAgMjU6XHRcbiAgMjY6XHRzdGF0aWMgaW50XG4gIDI3Olx0bXQ3OTI1dV9tY3Vfc2VuZF9tZXNzYWdlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiAgMjg6XHRcdFx0XHQgaW50IGNtZCwgaW50ICpzZXEpXG4gIDI5Olx0e1xuICAzMDpcdFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihtZGV2LCBzdHJ1Y3QgbXQ3OTJ4X2RldiwgbXQ3Nik7XG4gIDMxOlx0XHR1MzIgcGFkLCBlcDtcbiAgMzI6XHRcdGludCByZXQ7XG4gIDMzOlx0XG4gIDM0Olx0XHRyZXQgPSBtdDc5MjVfbWN1X2ZpbGxfbWVzc2FnZShtZGV2LCBza2IsIGNtZCwgc2VxKTtcbiAgMzU6XHRcdGlmIChyZXQpXG4gIDM2Olx0XHRcdHJldHVybiByZXQ7XG4gIDM3Olx0XG4gIDM4Olx0XHRtZGV2LVx1MDAzZW1jdS50aW1lb3V0ID0gMyAqIEhaO1xuICAzOTpcdFxuICA0MDpcdFx0aWYgKGNtZCAhPSBNQ1VfQ01EKEZXX1NDQVRURVIpKVxuICA0MTpcdFx0XHRlcCA9IE1UX0VQX09VVF9JTkJBTkRfQ01EO1xuICA0MjpcdFx0ZWxzZVxuICA0MzpcdFx0XHRlcCA9IE1UX0VQX09VVF9BQ19CRTtcbiAgNDQ6XHRcbiAgNDU6XHRcdG10NzkyeF9za2JfYWRkX3VzYl9zZGlvX2hkcihkZXYsIHNrYiwgMCk7XG4gIDQ2Olx0XHRwYWQgPSByb3VuZF91cChza2ItXHUwMDNlbGVuLCA0KSAmIzQzOyA0IC0gc2tiLVx1MDAzZWxlbjtcbiAgNDc6XHRcdF9fc2tiX3B1dF96ZXJvKHNrYiwgcGFkKTtcbiAgNDg6XHRcbiAgNDk6XHRcdHJldCA9IG10NzZ1X2J1bGtfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbiwgTlVMTCxcbiAgNTA6XHRcdFx0XHQgICAgIDEwMDAsIGVwKTtcbiAgNTE6XHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbiAgNTI6XHRcbiAgNTM6XHRcdHJldHVybiByZXQ7XG4gIDU0Olx0fVxuICA1NTpcdFxuICA1NjpcdHN0YXRpYyBpbnQgbXQ3OTI1dV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuICA1NzpcdHtcbiAgNTg6XHRcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3Nl9tY3Vfb3BzIG1jdV9vcHMgPSB7XG4gIDU5Olx0XHRcdC5oZWFkcm9vbSA9IE1UX1NESU9fSERSX1NJWkUgJiM0MztcbiAgNjA6XHRcdFx0XHQgICAgc2l6ZW9mKHN0cnVjdCBtdDc2X2Nvbm5hYzJfbWN1X3R4ZCksXG4gIDYxOlx0XHRcdC50YWlscm9vbSA9IE1UX1VTQl9UQUlMX1NJWkUsXG4gIDYyOlx0XHRcdC5tY3Vfc2tiX3NlbmRfbXNnID0gbXQ3OTI1dV9tY3Vfc2VuZF9tZXNzYWdlLFxuICA2MzpcdFx0XHQubWN1X3BhcnNlX3Jlc3BvbnNlID0gbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZSxcbiAgNjQ6XHRcdH07XG4gIDY1Olx0XHRpbnQgcmV0O1xuICA2NjpcdFxuICA2NzpcdFx0ZGV2LVx1MDAzZW10NzYubWN1X29wcyA9IFx1MDAyNm1jdV9vcHM7XG4gIDY4Olx0XG4gIDY5Olx0XHRtdDc2X3NldChkZXYsIE1UX1VETUFfVFhfUVNFTCwgTVRfRldfRExfRU4pO1xuICA3MDpcdFx0cmV0ID0gbXQ3OTI1X3J1bl9maXJtd2FyZShkZXYpO1xuICA3MTpcdFx0aWYgKHJldClcbiAgNzI6XHRcdFx0cmV0dXJuIHJldDtcbiAgNzM6XHRcbiAgNzQ6XHRcdHNldF9iaXQoTVQ3Nl9TVEFURV9NQ1VfUlVOTklORywgXHUwMDI2ZGV2LVx1MDAzZW1waHkuc3RhdGUpO1xuICA3NTpcdFx0bXQ3Nl9jbGVhcihkZXYsIE1UX1VETUFfVFhfUVNFTCwgTVRfRldfRExfRU4pO1xuICA3NjpcdFxuICA3NzpcdFx0cmV0dXJuIDA7XG4gIDc4Olx0fVxuICA3OTpcdFxuICA4MDpcdHN0YXRpYyBpbnQgbXQ3OTI1dV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiAgODE6XHR7XG4gIDgyOlx0XHRpbnQgZXJyO1xuICA4MzpcdFxuICA4NDpcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRldi1cdTAwM2VtdDc2LmJ1c19odW5nKSlcbiAgODU6XHRcdFx0cmV0dXJuIDA7XG4gIDg2Olx0XG4gIDg3Olx0XHRtdDc5Mnh1X3Jlc2V0X29uX2J1c19lcnJvcihkZXYpO1xuICA4ODpcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRldi1cdTAwM2VtdDc2LmJ1c19odW5nKSlcbiAgODk6XHRcdFx0cmV0dXJuIDA7XG4gIDkwOlx0XG4gIDkxOlx0XHRtdDc2X3R4cV9zY2hlZHVsZV9hbGwoXHUwMDI2ZGV2LVx1MDAzZW1waHkpO1xuICA5MjpcdFx0bXQ3Nl93b3JrZXJfZGlzYWJsZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni50eF93b3JrZXIpO1xuICA5MzpcdFxuICA5NDpcdFx0c2V0X2JpdChNVDc2X1JFU0VULCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSk7XG4gIDk1Olx0XHRzZXRfYml0KE1UNzZfTUNVX1JFU0VULCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSk7XG4gIDk2Olx0XG4gIDk3Olx0XHR3YWtlX3VwKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1jdS53YWl0KTtcbiAgOTg6XHRcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tY3UucmVzX3EpO1xuICA5OTpcdFxuIDEwMDpcdFx0bXQ3NnVfc3RvcF9yeChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3Mjg4CgkJCQkJCQlvdXRwdXQ6IDE3MgoJCQkJCQkJdGhvdWdodHM6IDU3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgTVQ3OTI1IFVTQiBXaXJlbGVzcyBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgZm9jdXMgaXMgdGhlIGBGb2N1c1N5bWJvbHNgLCBhbmQgSSYjMzk7dmUgaWRlbnRpZmllZCBgbXQ3OTI1dV9zdG9wYCBhcyB0aGUgbmV3bHkgbW9kaWZpZWQgb3IgYWRkZWQgZnVuY3Rpb24uIEkmIzM5O20gYWxzbyBpbmNsdWRpbmcgYG10NzkyNXVfcHJvYmVgLCBzaW5jZSBpdCBjb25maWd1cmVzIHRoZSBgb3BzLSZndDtzdG9wYCBvcGVyYXRpb24sIGFuZCBgbXQ3OTI1X21sb19wbV93b3JrYCwgd2hpY2ggaXMgdGhlIGRlbGF5ZWQgd29yayBiZWluZyBjYW5jZWxsZWQuIFNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIHF1aWNrbHkgdmVyaWZpZWQgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBpbW1lZGlhdGVseSByZWxldmFudCBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzIHBhcnRpY3VsYXIgY2hhbmdlIHRoYXQgSSBoYXZlbiYjMzk7dCBhbHJlYWR5IGNvbnNpZGVyZWQuCgpOZXh0LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgbmF0dXJlIG9mIGBtdDc5MjV1X3N0b3BgLiBJcyBpdCBzdGF0aWMgb3Igbm90PyBHb29kLCBpdCYjMzk7cyBgc3RhdGljIHZvaWQgbXQ3OTI1dV9zdG9wKC4uLilgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuY2AuIFRoZSBrZXkgbm93IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGlubGluZWQgb3Igd2lsbCBhcHBlYXIgYXMgYSBzZXBhcmF0ZSBzeW1ib2wgaW4gdGhlIG9iamVjdCBmaWxlLiBUaGUgZmFjdCB0aGF0IGl0cyBhZGRyZXNzIGlzIHRha2VuIHdpdGhpbiBgdXNiLmNgIChgb3BzLSZndDtzdG9wID0gbXQ3OTI1dV9zdG9wO2ApIG1lYW5zIGl0IGNhbiYjMzk7dCBiZSBjb21wbGV0ZWx5IGlubGluZWQuIFRoYXQmIzM5O3MgZ29vZDsgaXQgd2lsbCBiZSBhIGRpc3RpbmN0IHN5bWJvbCBpbiB0aGUgcmVzdWx0aW5nIG9iamVjdCBmaWxlLCBlaXRoZXIgYG10NzkyNXUub2Agb3Igdm1saW51eCwgYW5kIHRodXMsIHBvdGVudGlhbGx5IHZ1bG5lcmFibGUuIEkmIzM5O2xsIG1ha2UgYSBub3RlIG9mIHRoaXMuIEkmIzM5O3ZlIGFsc28gcmVjb25maXJtZWQgdGhhdCBgbXQ3OTI1dV9wcm9iZWAgZXhpc3RzIGFuZCB0aGF0IGBtdDc5MjVfbWxvX3BtX3dvcmtgIGlzIHRoZSB3b3JrIGZ1bmN0aW9uIGZvciBgZGV2LSZndDttbG9fcG1fd29ya2AuCgpCZWZvcmUgSSBtb3ZlIG9uLCBJIHdhbnQgdG8gY29uZmlybSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBXZSBuZWVkIGBNVDc5MjVVYCwgYE1BQzgwMjExYCwgYFVTQmAsIGFuZCBgV0xBTl9WRU5ET1JfTUVESUFURUtgIGVuYWJsZWQgdG8gcmVhY2ggdGhpcyBjb2RlLiBJIG5lZWQgdG8ga2VlcCB0aG9zZSBpbiBtaW5kIGFzIEkgZGV2ZWxvcCBmdXp6aW5nIGNvbmZpZ3VyYXRpb25zLgoKTm93LCBmb3IgdGhlIHJlYXNvbmluZzogQmFzaWNhbGx5LCB0aGlzIHBhdGNoIGludHJvZHVjZXMgYG10NzkyNXVfc3RvcGAgaW50byB0aGUgTWVkaWFUZWsgTVQ3OTI1IFVTQiB3aXJlbGVzcyBkcml2ZXIgdG8gaGFuZGxlIHRoZSBjYW5jZWxsYXRpb24gb2YgdGhlIGRlbGF5ZWQgTUxPIFBNIHdvcmsgKGBtbG9fcG1fd29ya2ApIGJlZm9yZSBkZXZpY2Ugc3RvcHBhZ2UuIFdoYXQmIzM5O3MgZXNwZWNpYWxseSBpbnRlcmVzdGluZyBpcyB0aGF0IHRoZSBNVDc5MjUgVVNCIGRyaXZlciBpcyBhY3R1YWxseSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgd2l0aCBVU0IgZW11bGF0aW9uIG9yIHJhdy1nYWRnZXQgc2V0dXBzLiBUaGlzIGltcGxpZXMgdGhhdCB0aGVzZSBjb2RlIHBhdGhzICphcmUqIHBvdGVudGlhbGx5IGZ1enphYmxlLgoKRmluYWxseSwgSSYjMzk7bGwgcGFja2FnZSB0aGlzIHVwIGludG8gdGhlIGBzZXQtcmVzdWx0c2A6CgoqICAgYFdvcnRoRnV6emluZ2A6IFRydWUsIGFic29sdXRlbHkuCiogICBgRm9jdXNTeW1ib2xzYDogSSYjMzk7dmUgY29uZmlybWVkIGBtdDc5MjV1X3N0b3BgLCBgbXQ3OTI1dV9wcm9iZWAsIGFuZCBgbXQ3OTI1X21sb19wbV93b3JrYC4KKiAgIGBFbmFibGVDb25maWdzYDogYE1UNzkyNVVgLCBgTUFDODAyMTFgLCBgVVNCYCwgYW5kIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AuCiogICBgUmVhc29uaW5nYDogQ29uY2lzZSBleHBsYW5hdGlvbiBwcm92aWRlZCwgd2hpY2ggSSB3aWxsIGFkZC4KCkkmIzM5O2xsIHByb2NlZWQgdG8gaW52b2tlIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NRURJQVRFSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNXVfc3RvcCYjMzQ7LAogICAgJiMzNDttdDc5MjV1X3Byb2JlJiMzNDssCiAgICAmIzM0O210NzkyNV9tbG9fcG1fd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIG10NzkyNXVfc3RvcCB0byBjYW5jZWwgdGhlIGRlbGF5ZWQgTUxPIFBNIHdvcmsgKG1sb19wbV93b3JrKSBkdXJpbmcgc3RvcCBvcGVyYXRpb25zIGluIHRoZSBNZWRpYVRlayBNVDc5MjUgVVNCIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gYW5kIG1hYzgwMjExL25sODAyMTEgaW50ZXJmYWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUVESUFURUsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjV1X3N0b3AmIzM0OywKICAgICYjMzQ7bXQ3OTI1dV9wcm9iZSYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWxvX3BtX3dvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBtdDc5MjV1X3N0b3AgdG8gY2FuY2VsIHRoZSBkZWxheWVkIE1MTyBQTSB3b3JrIChtbG9fcG1fd29yaykgZHVyaW5nIHN0b3Agb3BlcmF0aW9ucyBpbiB0aGUgTWVkaWFUZWsgTVQ3OTI1IFVTQiB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIGFuZCBtYWM4MDIxMS9ubDgwMjExIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgZGVsYXllZCB3b3JrIGNhbmNlbGxhdGlvbiBkdXJpbmcgZGV2aWNlIHN0b3AgaW4gdGhlIG10NzkyNSBVU0IgZHJpdmVyIGJ5IGludHJvZHVjaW5nIGBtdDc5MjV1X3N0b3AoKWAsIHdoaWNoIGNhbGxzIGBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrKWAgcHJpb3IgdG8gYG10NzkyeHVfc3RvcCgpYC4gVGhpcyBjaGFuZ2UgZml4ZXMgY29uY3VycmVuY3kgYW5kIGxpZmV0aW1lL3VzZS1hZnRlci1mcmVlIGlzc3VlcyB3aGVuIHRlYXJpbmcgZG93biB0aGUgZGV2aWNlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIG1vZGlmeSwgb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgcGFkZGluZywgZGF0YSBzdHJ1Y3R1cmVzLCBvciBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIENvbmN1cnJlbmN5IGJ1Z3MgYW5kIHVzZS1hZnRlci1mcmVlIGVycm9ycyBhcmUgcHJvcGVybHkgY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2Vycywgc28gYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzN2U1MWY0ZDBjODE2MjI1NDdlY2JiNGJiOWU4Nzk1NjdhYzI3ZjFkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMTAgMjA6MjA6MzQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jCmluZGV4IDE3NTcwMjNlYTcwZDUuLmRiNmZkMDE0NDQ3YmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jCkBAIC0xNDcsNiAmIzQzOzE0NywxNSBAQCBzdGF0aWMgaW50IG10NzkyNXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpCiAJcmV0dXJuIGVycjsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIG10NzkyNXVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKQomIzQzO3sKJiM0MzsJc3RydWN0IG10NzkyeF9kZXYgKmRldiA9IG10NzkyeF9od19kZXYoaHcpOwomIzQzOwomIzQzOwljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFtcDtkZXYtJmd0O21sb19wbV93b3JrKTsKJiM0MzsKJiM0MzsJbXQ3OTJ4dV9zdG9wKGh3LCBzdXNwZW5kKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLAogCQkJIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCkKIHsKQEAgLTE5Myw3ICYjNDM7MjAyLDcgQEAgc3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZiwKIAlpZiAoIW9wcykKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQlvcHMtJmd0O3N0b3AgPSBtdDc5Mnh1X3N0b3A7CiYjNDM7CW9wcy0mZ3Q7c3RvcCA9IG10NzkyNXVfc3RvcDsKIAogCW1kZXYgPSBtdDc2X2FsbG9jX2RldmljZSgmYW1wO3VzYl9pbnRmLSZndDtkZXYsIHNpemVvZigqZGV2KSwgb3BzLCAmYW1wO2Rydl9vcHMpOwogCWlmICghbWRldikKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMjUKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiA1NDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gQW5hbHlzaXMgb2YgTVQ3OTI1IFVTQiBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBjaGFuZ2UgbmVjZXNzaXRhdGVzIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0IGludHJvZHVjZXMgYW55IG1lbW9yeSBhY2Nlc3MgcGF0dGVybnMgdGhhdCBjb3VsZCB0cmlnZ2VyIG1lbW9yeSBzYWZldHkgaXNzdWVzIHRoYXQgS01TQU4gaXMgZGVzaWduZWQgdG8gY2F0Y2guCgpGaXJzdCwgSSBzZWUgdGhlIGRpZmYuIEl0JiMzOTtzIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNgIGZpbGUuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaW52b2x2ZXMgbW9kaWZ5aW5nIHRoZSBgb3BzLSZndDtzdG9wYCBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiB0aGUgYG10NzkyNXVfcHJvYmVgIGZ1bmN0aW9uLiBQcmV2aW91c2x5LCBpdCBwb2ludGVkIHRvIGBtdDc5Mnh1X3N0b3BgLCBidXQgbm93IGl0JiMzOTtzIGJlaW5nIHNldCB0byBgbXQ3OTI1dV9zdG9wYC4gU28sIHRoZSBgc3RvcGAgZnVuY3Rpb24gaGFzIGJlZW4gdXBkYXRlZC4gVGhlIGNoYW5nZSBpcyBzbWFsbCBhbmQgY29udGFpbmVkOyBob3dldmVyLCBpdCAqY291bGQqIGJlIHNpZ25pZmljYW50LgoKSSBuZWVkIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB3aGF0IGBtdDc5MjV1X3N0b3BgIGFuZCBgbXQ3OTJ4dV9zdG9wYCBhcmUgZG9pbmcgaW4gdGVybXMgb2YgbWVtb3J5IG9wZXJhdGlvbnMuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjb2RlIG9mIGBtdDc5MjV1X3N0b3BgLiBUaGUgaW1wb3J0YW50IGZ1bmN0aW9uIGluIHRoZSBwYXRjaCBpcyBgbXQ3OTI1dV9zdG9wYC4KCkkmIzM5O2xsIHF1aWNrbHkgbG9vayB1cCB0aGUgbmV3IGBtdDc5MjV1X3N0b3BgIGZ1bmN0aW9uIGRlZmluaXRpb24uIEl0IHNlZW1zIHRvIGNhbGwgYG10NzkyeHVfc3RvcGAgYWZ0ZXIgY2FuY2VsbGluZyB0aGUgYGRldi0mZ3Q7bWxvX3BtX3dvcmtgLiBUaGlzIGNhbmNlbCBjb3VsZCBiZSBzaWduaWZpY2FudCBiZWNhdXNlIG9mIHRoZSBjb25jdXJyZW5jeSBpbnRyb2R1Y2VkLgoKTm93LCBteSBmb2N1cyBzaGlmdHMgdG8gdW5kZXJzdGFuZGluZyBpZiBhbnkgbmV3IG1lbW9yeSBhY2Nlc3MgcGF0dGVybnMsIHBhcnRpY3VsYXJseSBpbiByZWxhdGlvbiB0byBjb25jdXJyZW50IGFjY2VzcyBvciBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeSBhcmUgaW50cm9kdWNlZCBieSB0aGlzIHVwZGF0ZWQgYHN0b3BgIGZ1bmN0aW9uLCBvciB0aGUgY2hhbmdlcyBhcm91bmQgdGhlIHdvcmsgcXVldWUuIERvZXMgY2FuY2VsbGluZyBhbmQgY2FsbGluZyBmdW5jdGlvbnMgaW4gdGhpcyBvcmRlciBhbHRlciB0aGUgbWVtb3J5IGxhbmRzY2FwZT8gVGhlIHVzZSBvZiBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jYCBkb2VzIGluZGljYXRlIHRoYXQgc3luY2hyb25pemF0aW9uIGlzIHRha2luZyBwbGFjZSwgc28gbm93IG15IGNvbmNlcm4gaXMgd2hldGhlciBhIG1lbW9yeSByYWNlIGlzIGJlaW5nIGludHJvZHVjZWQuCgpJJiMzOTtsbCB1c2UgbXkga25vd2xlZGdlIGFuZCB0b29scyB0byBxdWlja2x5IHVuZGVyc3RhbmQ6CgoxLiAgSG93IGBtdDc5MjV1X3N0b3BgIGludGVyYWN0cyB3aXRoIHRoZSBgZGV2YCBzdHJ1Y3QsIGBtbG9fcG1fd29ya2AgYW5kIGhvdyB0aGVzZSBhcmUgbWFuYWdlZC4KMi4gIEhvdyB0aGUgb3JkZXIgb2YgY2FsbGluZyBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jYCBhbmQgYG10NzkyeHVfc3RvcGAgYWZmZWN0cyBtZW1vcnkgYWNjZXNzLCBhbmQgaWYgdGhpcyBjb3VsZCBjcmVhdGUgYSByYWNlIGNvbmRpdGlvbi4KMy4gIEFueSBvdGhlciByZWxldmFudCBkYXRhIHRoYXQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIG1lbW9yeSB1bnNhZmV0eS4KCklmIEkgZG9uJiMzOTt0IHNlZSBhbnl0aGluZyBpbW1lZGlhdGVseSBnbGFyaW5nLCBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29udGV4dHMgYW5kIHJlbGF0ZWQgZmlsZXMgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBUaGlzIGluaXRpYWwgcmV2aWV3IGlzIGp1c3QgdGhlIGZpcnN0IHBhc3MgYmVmb3JlIHBvdGVudGlhbGx5IHJlcXVlc3RpbmcgYSBmdWxsIEtNU0FOIHJ1biBvciBtYXJraW5nIGl0IGBOZWVkc0tNU0FOPXRydWVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDcwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNDA6XHRcbiAxNDE6XHRcdGVyciA9IF9fbXQ3OTI1X3N0YXJ0KFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuIDE0MjpcdG91dDpcbiAxNDM6XHRcdGNsZWFyX2JpdChNVDc2X1JFU0VULCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSk7XG4gMTQ0Olx0XG4gMTQ1Olx0XHRtdDc2X3dvcmtlcl9lbmFibGUoXHUwMDI2ZGV2LVx1MDAzZW10NzYudHhfd29ya2VyKTtcbiAxNDY6XHRcbiAxNDc6XHRcdHJldHVybiBlcnI7XG4gMTQ4Olx0fVxuIDE0OTpcdFxuIDE1MDpcdHN0YXRpYyB2b2lkIG10NzkyNXVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxuIDE1MTpcdHtcbiAxNTI6XHRcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBtdDc5MnhfaHdfZGV2KGh3KTtcbiAxNTM6XHRcbiAxNTQ6XHRcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZkZXYtXHUwMDNlbWxvX3BtX3dvcmspO1xuIDE1NTpcdFxuIDE1NjpcdFx0bXQ3OTJ4dV9zdG9wKGh3LCBzdXNwZW5kKTtcbiAxNTc6XHR9XG4gMTU4Olx0XG4gMTU5Olx0c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcbiAxNjA6XHRcdFx0XHQgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuIDE2MTpcdHtcbiAxNjI6XHRcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3Nl9kcml2ZXJfb3BzIGRydl9vcHMgPSB7XG4gMTYzOlx0XHRcdC50eHdpX3NpemUgPSBNVF9TRElPX1RYRF9TSVpFLFxuIDE2NDpcdFx0XHQuZHJ2X2ZsYWdzID0gTVRfRFJWX1JYX0RNQV9IRFIgfCBNVF9EUlZfSFdfTUdNVF9UWFEgfFxuIDE2NTpcdFx0XHRcdCAgICAgTVRfRFJWX0FNU0RVX09GRkxPQUQsXG4gMTY2Olx0XHRcdC5zdXJ2ZXlfZmxhZ3MgPSBTVVJWRVlfSU5GT19USU1FX1RYIHxcbiAxNjc6XHRcdFx0XHRcdFNVUlZFWV9JTkZPX1RJTUVfUlggfFxuIDE2ODpcdFx0XHRcdFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXG4gMTY5Olx0XHRcdC50eF9wcmVwYXJlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcbiAxNzA6XHRcdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXG4gMTcxOlx0XHRcdC50eF9zdGF0dXNfZGF0YSA9IG10NzkyNV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSxcbiAxNzI6XHRcdFx0LnJ4X3NrYiA9IG10NzkyNV9xdWV1ZV9yeF9za2IsXG4gMTczOlx0XHRcdC5yeF9jaGVjayA9IG10NzkyNV9yeF9jaGVjayxcbiAxNzQ6XHRcdFx0LnN0YV9hZGQgPSBtdDc5MjVfbWFjX3N0YV9hZGQsXG4gMTc1Olx0XHRcdC5zdGFfZXZlbnQgPSBtdDc5MjVfbWFjX3N0YV9ldmVudCxcbiAxNzY6XHRcdFx0LnN0YV9yZW1vdmUgPSBtdDc5MjVfbWFjX3N0YV9yZW1vdmUsXG4gMTc3Olx0XHRcdC51cGRhdGVfc3VydmV5ID0gbXQ3OTJ4X3VwZGF0ZV9jaGFubmVsLFxuIDE3ODpcdFx0fTtcbiAxNzk6XHRcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTJ4X2hpZl9vcHMgaGlmX29wcyA9IHtcbiAxODA6XHRcdFx0Lm1jdV9pbml0ID0gbXQ3OTI1dV9tY3VfaW5pdCxcbiAxODE6XHRcdFx0LmluaXRfcmVzZXQgPSBtdDc5Mnh1X2luaXRfcmVzZXQsXG4gMTgyOlx0XHRcdC5yZXNldCA9IG10NzkyNXVfbWFjX3Jlc2V0LFxuIDE4MzpcdFx0fTtcbiAxODQ6XHRcdHN0YXRpYyBzdHJ1Y3QgbXQ3Nl9idXNfb3BzIGJ1c19vcHMgPSB7XG4gMTg1Olx0XHRcdC5yciA9IG10NzkyeHVfcnIsXG4gMTg2Olx0XHRcdC53ciA9IG10NzkyeHVfd3IsXG4gMTg3Olx0XHRcdC5ybXcgPSBtdDc5Mnh1X3JtdyxcbiAxODg6XHRcdFx0LnJlYWRfY29weSA9IG10NzZ1X3JlYWRfY29weSxcbiAxODk6XHRcdFx0LndyaXRlX2NvcHkgPSBtdDc5Mnh1X2NvcHksXG4gMTkwOlx0XHRcdC50eXBlID0gTVQ3Nl9CVVNfVVNCLFxuIDE5MTpcdFx0fTtcbiAxOTI6XHRcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldih1c2JfaW50Zik7XG4gMTkzOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX29wcyAqb3BzO1xuIDE5NDpcdFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XG4gMTk1Olx0XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2O1xuIDE5NjpcdFx0c3RydWN0IG10NzZfZGV2ICptZGV2O1xuIDE5NzpcdFx0dTggZmVhdHVyZXM7XG4gMTk4Olx0XHRpbnQgcmV0O1xuIDE5OTpcdFxuIDIwMDpcdFx0b3BzID0gbXQ3OTJ4X2dldF9tYWM4MDIxMV9vcHMoXHUwMDI2dXNiX2ludGYtXHUwMDNlZGV2LCBcdTAwMjZtdDc5MjVfb3BzLFxuIDIwMTpcdFx0XHRcdFx0ICAgICAgKHZvaWQgKilpZC1cdTAwM2Vkcml2ZXJfaW5mbywgXHUwMDI2ZmVhdHVyZXMpO1xuIDIwMjpcdFx0aWYgKCFvcHMpXG4gMjAzOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDIwNDpcdFxuIDIwNTpcdFx0b3BzLVx1MDAzZXN0b3AgPSBtdDc5MjV1X3N0b3A7XG4gMjA2Olx0XG4gMjA3Olx0XHRtZGV2ID0gbXQ3Nl9hbGxvY19kZXZpY2UoXHUwMDI2dXNiX2ludGYtXHUwMDNlZGV2LCBzaXplb2YoKmRldiksIG9wcywgXHUwMDI2ZHJ2X29wcyk7XG4gMjA4Olx0XHRpZiAoIW1kZXYpXG4gMjA5Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzkzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyB0aGUgYG1sb19wbV93b3JrYCBQYXRjaCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhdGNoIGFuZCB3aGF0JiMzOTtzIGRyaXZpbmcgdGhlIGNoYW5nZS4gVGhlIGZpcnN0IHRoaW5nIHRoYXQgY29tZXMgdG8gbWluZCBpcyB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCBgbWxvX3BtX3dvcmtgICppcyouIEkgbWVhbiwgd2l0aG91dCBrbm93aW5nIGl0cyBwdXJwb3NlLCBkaWdnaW5nIGludG8gdGhlIHBhdGNoIGl0c2VsZiBpcyBnb2luZyB0byBiZSBhIGJpdCBsaWtlIHRyeWluZyB0byBzb2x2ZSBhIHB1enpsZSB3aXRoIGhhbGYgdGhlIHBpZWNlcyBtaXNzaW5nLgoKVGhlcmVmb3JlLCBteSBpbW1lZGlhdGUgcGxhbiBpcyB0byBkZWx2ZSBpbnRvIHRoZSBjb2RlLiBJJiMzOTtsbCBsYXVuY2ggYSBgZ3JlcGAgb3BlcmF0aW9uIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlciBkaXJlY3RvcnkgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2ApLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgcHJldHR5IHRhcmdldGVkIGxpc3Qgb2Ygd2hlcmUgYG1sb19wbV93b3JrYCBpcyBkZWZpbmVkLCB1c2VkLCBhbmQsIGhvcGVmdWxseSwgZG9jdW1lbnRlZC4gSG9wZWZ1bGx5LCBpdCBpcyBpbiBhIGNvbW1lbnQsIGFuZCB0aGF0IHdpbGwgZ2l2ZSBtZSBteSBmaXJzdCBjbHVlcy4gRnJvbSB0aGVyZSwgSSBjYW4gc3RhcnQgcGllY2luZyB0b2dldGhlciB0aGUgYnJvYWRlciBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbG9fcG1fd29yayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYz0yNDM9aW50IG10NzkyNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjUzLVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBtLnBzX3dvcmssIG10NzkyeF9wbV9wb3dlcl9zYXZlX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI1NDpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yaywgbXQ3OTI1X21sb19wbV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNTUtXHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBtLndha2Vfd29yaywgbXQ3OTJ4X3BtX3dha2Vfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MTUxMT12b2lkIG10NzkyNV9tYWNfcmVzZXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTUyNy1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZwbS1cdTAwM2Vwc193b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE1Mjg6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE1MjktXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNnBtLVx1MDAzZXdha2Vfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTE1MTg9bXQ3OTI1X21sb19wbV9pdGVyKHZvaWQgKnByaXYsIHU4ICptYWMsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE1MzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTUzODp2b2lkIG10NzkyNV9tbG9fcG1fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTUzOS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTU0MC1cdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG10NzkyeF9kZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTU0MTpcdFx0XHRcdFx0ICAgICAgbWxvX3BtX3dvcmsud29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTU0Mi1cdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gbXQ3Nl9odyhkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0xNzA0PXN0YXRpYyBpbnQgbXQ3OTI1X3N1c3BlbmQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE3MTMtXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZXBtLnBzX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE3MTQ6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xNzE1LVx0bXQ3Nl9jb25uYWNfZnJlZV9wZW5kaW5nX3R4X3NrYnMoXHUwMDI2ZGV2LVx1MDAzZXBtLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MjE1MD1zdGF0aWMgdm9pZCBtdDc5MjVfbGlua19pbmZvX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTIxOTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjE5ODpcdFx0aWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhodywgXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrLCA1ICogSFopO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTIxOTktXHRcdG12aWYtXHUwMDNlbWxvX3BtX3N0YXRlID0gTVQ3OTJ4X01MT19DSEFOR0VEX1BTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yNzA3PXN0YXRpYyB2b2lkIG10NzkyNV9zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIHN1c3BlbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI3MTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjcxMTpcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZkZXYtXHUwMDNlbWxvX3BtX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI3MTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzMwPWludCBtdDc5MjVfbWN1X3VuaV9yeF9iYShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMzMi1cdFx0XHQgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzMzOnZvaWQgbXQ3OTI1X21sb19wbV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zMzQtdm9pZCBtdDc5MjVfc2Nhbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9NDE9c3RhdGljIHZvaWQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTU1LVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnBtLVx1MDAzZXBzX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NTY6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTU3LVx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZwbS1cdTAwM2V3YWtlX3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTczNT1zdGF0aWMgaW50IG10NzkyNV9wY2lfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXZpY2UpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNzQ2LVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnBtLVx1MDAzZXBzX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NzQ3Olx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy03NDgtXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNnBtLVx1MDAzZXdha2Vfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MTUwPXN0YXRpYyB2b2lkIG10NzkyNXVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE1NDpcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZkZXYtXHUwMDNlbWxvX3BtX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTU1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTI3OT1zdGF0aWMgaW50IG10NzkyNXVfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IHN0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI4Ny1cdGZsdXNoX3dvcmsoXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6Mjg4Olx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yODktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD0yOTM9c3RydWN0IG10NzkyeF9kZXYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMzMxLVx0c3RydWN0IHdvcmtfc3RydWN0IGlwdjZfbnNfd29yaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6MzMyOlx0c3RydWN0IGRlbGF5ZWRfd29yayBtbG9fcG1fd29yaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMzMzLVx0LyogSVB2NiBhZGRyZXNzZXMgZm9yIFdvV0xBTiAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDcxCgkJCQkJCQlvdXRwdXQ6IDE3MAoJCQkJCQkJdGhvdWdodHM6IDM2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNVDc5MjVVIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBhZGRyZXNzaW5nIGEgcHJldHR5IGNsYXNzaWMgY29uY3VycmVuY3kgaXNzdWUgaW4gdGhlIE1UNzkyNVUgVVNCIGRyaXZlci4gU3BlY2lmaWNhbGx5LCB3ZSYjMzk7cmUgdHJ5aW5nIHRvIHByZXZlbnQgYSByYWNlIGNvbmRpdGlvbiBvciBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbyB3aGVuIHN0b3BwaW5nIHRoZSBkZXZpY2UuIFRoZSBjb3JlIHByb2JsZW0gc2VlbXMgdG8gYmUgdGhlIHRpbWluZyBvZiB0aGUgYGRldi0mZ3Q7bWxvX3BtX3dvcmtgIHdvcmtxdWV1ZSBhbmQgdGhlIGRldmljZSBzaHV0ZG93biBzZXF1ZW5jZS4gVGhlIGFkZGl0aW9uIG9mIGBtdDc5MjV1X3N0b3BgIGlzIGRlc2lnbmVkIHRvIHN5bmNocm9ub3VzbHkgY2FuY2VsIHRoYXQgd29yayBiZWZvcmUgY2FsbGluZyB0aGUgZXhpc3RpbmcgYG10NzkyeHVfc3RvcGAsIHdoaWNoIGlzIHRoZSBhY3R1YWwgZGV2aWNlIHN0b3AgZnVuY3Rpb24uCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGZpeCBpcyBjb3JyZWN0IGJlY2F1c2UsIGF0IHRoZSBjb3JlLCBpdCBhcHBlYXJzIHRvIHByb3Blcmx5IGhhbmRsZSB0aGUgd29ya3F1ZXVlLCBlbnN1cmluZyB0aGF0IGl0IGlzIHN0b3BwZWQgYmVmb3JlIGZ1cnRoZXIgZGV2aWNlIHNodXRkb3duIHByb2NlZHVyZXMgY29udGludWUuIEkgYW0gcmVhc3N1cmVkIHRoYXQgd2UgYXJlIG5vdCBhdHRlbXB0aW5nIGFueSBjb21wbGljYXRlZCBjaGFuZ2VzIG9mIGRldmljZSBpbml0aWFsaXphdGlvbiBvciBzZW5kaW5nIGtlcm5lbCBkYXRhIHRvIHVzZXIgc3BhY2UuCgpOb3csIGxldCYjMzk7cyBkbyBhIGRlZXAgZGl2ZSBmb3IgdGhlIHBvdGVudGlhbCByaXNrcy4gSSBkbyBub3Qgc2VlIGFueSBhcHBhcmVudCByaXNrcyBvciBuZWVkIGZvciBhZGRpdGlvbmFsIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikgY2hlY2tzLiBIZXJlJiMzOTtzIHdoeToKCjEuICAqKk5vIFVzZXItU3BhY2UgRGF0YSBFeHBvc3VyZToqKiBUaGUgcGF0Y2ggZG9lc24mIzM5O3QgaW52b2x2ZSBhbnkgY2hhbmdlcyB0byBrZXJuZWwgc3RydWN0dXJlcyBiZWluZyBwYXNzZWQgdG8gdXNlciBzcGFjZS4KMi4gICoqTm8gVW5pbml0aWFsaXplZCBNZW1vcnkgSXNzdWVzOioqIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIHJlYWQgb3IgdXNlZCBmb3IgYnJhbmNoaW5nLgozLiAgKipObyBJbml0aWFsaXphdGlvbiBDb25jZXJuczoqKiBUaGUgcGF0Y2ggZG9lc24mIzM5O3QgYWx0ZXIgYW55IGFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gcm91dGluZXMuCjQuICAqKk5vIEJvdW5kcyBWaW9sYXRpb25zOioqIFRoZXJlIGFyZSBubyBsZW5ndGggb3IgYm91bmRzIGNoZWNrIGNoYW5nZXMsIHdoaWNoIG1pZ2h0IGludHJvZHVjZSB2dWxuZXJhYmlsaXRpZXMuCgpUaGlzIGZpeCBmb2N1c2VzIG9uIHN5bmNocm9uaXphdGlvbjogYG10NzkyNXVfc3RvcCgpYCBjYWxscyBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7ZGV2LSZndDttbG9fcG1fd29yaylgIGFuZCB0aGVuIGBtdDc5Mnh1X3N0b3AoaHcsIHN1c3BlbmQpYCwgYW5kIHRoZSByZWxldmFudCBgb3BzLSZndDtzdG9wYCBwb2ludGVyIGlzIHVwZGF0ZWQuCgpUaGlzIGlzIGEgZ29vZCwgdGFyZ2V0ZWQgc3luY2hyb25pemF0aW9uIGZpeCwgdGhlIHBvdGVudGlhbCBmb3IgVXNlLUFmdGVyLUZyZWUgKFVBRikgYW5kIGNvbmN1cnJlbmN5IGlzc3VlcyBhcmUgbW9uaXRvcmVkIGFuZCBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgZGVidWdnZXJzLiBLTVNBTiBpcyBzcGVjaWZpY2FsbHkgZm9yIGRldGVjdGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gU28sIEkgc2VlIG5vIG5lZWQgZm9yIEtNU0FOIHRvIGJlIGVuYWJsZWQgaW4gdGhpcyBjYXNlLgoKVGhlcmVmb3JlLCBgTmVlZHNLTVNBTiA9IGZhbHNlYC4gSSBhbSByZWFkeSB0byBpbnZva2UgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGRlbGF5ZWQgd29yayBjYW5jZWxsYXRpb24gZHVyaW5nIGRldmljZSBzdG9wIGluIHRoZSBtdDc5MjUgVVNCIGRyaXZlciBieSBpbnRyb2R1Y2luZyBgbXQ3OTI1dV9zdG9wKClgLCB3aGljaCBjYWxscyBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yaylgIHByaW9yIHRvIGBtdDc5Mnh1X3N0b3AoKWAuIFRoaXMgY2hhbmdlIGZpeGVzIGNvbmN1cnJlbmN5IGFuZCBsaWZldGltZS91c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgd2hlbiB0ZWFyaW5nIGRvd24gdGhlIGRldmljZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCBtb2RpZnksIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHBhZGRpbmcsIGRhdGEgc3RydWN0dXJlcywgb3IgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLiBDb25jdXJyZW5jeSBidWdzIGFuZCB1c2UtYWZ0ZXItZnJlZSBlcnJvcnMgYXJlIHByb3Blcmx5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dlcnMsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGRlbGF5ZWQgd29yayBjYW5jZWxsYXRpb24gZHVyaW5nIGRldmljZSBzdG9wIGluIHRoZSBtdDc5MjUgVVNCIGRyaXZlciBieSBpbnRyb2R1Y2luZyBgbXQ3OTI1dV9zdG9wKClgLCB3aGljaCBjYWxscyBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yaylgIHByaW9yIHRvIGBtdDc5Mnh1X3N0b3AoKWAuIFRoaXMgY2hhbmdlIGZpeGVzIGNvbmN1cnJlbmN5IGFuZCBsaWZldGltZS91c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgd2hlbiB0ZWFyaW5nIGRvd24gdGhlIGRldmljZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCBtb2RpZnksIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHBhZGRpbmcsIGRhdGEgc3RydWN0dXJlcywgb3IgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLiBDb25jdXJyZW5jeSBidWdzIGFuZCB1c2UtYWZ0ZXItZnJlZSBlcnJvcnMgYXJlIHByb3Blcmx5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dlcnMsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMDozNS4yNTg0NjAxNDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjA0NzAxOTAyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVVXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NRURJQVRFS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkyNXVfc3RvcFwiLFxuICAgIFwibXQ3OTI1dV9wcm9iZVwiLFxuICAgIFwibXQ3OTI1X21sb19wbV93b3JrXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgZGVsYXllZCB3b3JrIGNhbmNlbGxhdGlvbiBkdXJpbmcgZGV2aWNlIHN0b3AgaW4gdGhlIG10NzkyNSBVU0IgZHJpdmVyIGJ5IGludHJvZHVjaW5nIGBtdDc5MjV1X3N0b3AoKWAsIHdoaWNoIGNhbGxzIGBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmRldi1cXHUwMDNlbWxvX3BtX3dvcmspYCBwcmlvciB0byBgbXQ3OTJ4dV9zdG9wKClgLiBUaGlzIGNoYW5nZSBmaXhlcyBjb25jdXJyZW5jeSBhbmQgbGlmZXRpbWUvdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHdoZW4gdGVhcmluZyBkb3duIHRoZSBkZXZpY2UuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgbW9kaWZ5LCBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBwYWRkaW5nLCBkYXRhIHN0cnVjdHVyZXMsIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gQ29uY3VycmVuY3kgYnVncyBhbmQgdXNlLWFmdGVyLWZyZWUgZXJyb3JzIGFyZSBwcm9wZXJseSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnZXJzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIG10NzkyNXVfc3RvcCB0byBjYW5jZWwgdGhlIGRlbGF5ZWQgTUxPIFBNIHdvcmsgKG1sb19wbV93b3JrKSBkdXJpbmcgc3RvcCBvcGVyYXRpb25zIGluIHRoZSBNZWRpYVRlayBNVDc5MjUgVVNCIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gYW5kIG1hYzgwMjExL25sODAyMTEgaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjA6MzUuMjU4NDY5MTUxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTAxNDAwNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzN2U1MWY0ZDBjODE2MjI1NDdlY2JiNGJiOWU4Nzk1NjdhYzI3ZjFkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDEwIDIwOjIwOjM0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNcXG5pbmRleCAxNzU3MDIzZWE3MGQ1Li5kYjZmZDAxNDQ0N2JkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNcXG5AQCAtMTQ3LDYgKzE0NywxNSBAQCBzdGF0aWMgaW50IG10NzkyNXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIG10NzkyNXVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxcbit7XFxuK1xcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBtdDc5MnhfaHdfZGV2KGh3KTtcXG4rXFxuK1xcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2VtbG9fcG1fd29yayk7XFxuK1xcbitcXHRtdDc5Mnh1X3N0b3AoaHcsIHN1c3BlbmQpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbiBcXHRcXHRcXHQgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbiB7XFxuQEAgLTE5Myw3ICsyMDIsNyBAQCBzdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbiBcXHRpZiAoIW9wcylcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbi1cXHRvcHMtXFx1MDAzZXN0b3AgPSBtdDc5Mnh1X3N0b3A7XFxuK1xcdG9wcy1cXHUwMDNlc3RvcCA9IG10NzkyNXVfc3RvcDtcXG4gXFxuIFxcdG1kZXYgPSBtdDc2X2FsbG9jX2RldmljZShcXHUwMDI2dXNiX2ludGYtXFx1MDAzZWRldiwgc2l6ZW9mKCpkZXYpLCBvcHMsIFxcdTAwMjZkcnZfb3BzKTtcXG4gXFx0aWYgKCFtZGV2KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMDozNS44NDk5MTg2NDZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjU4MjYyNDI1NjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1dV9zdG9wXCIsXG4gICAgXCJtdDc5MjV1X3Byb2JlXCIsXG4gICAgXCJtdDc5MjVfbWxvX3BtX3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIG10NzkyNXVfc3RvcCB0byBjYW5jZWwgdGhlIGRlbGF5ZWQgTUxPIFBNIHdvcmsgKG1sb19wbV93b3JrKSBkdXJpbmcgc3RvcCBvcGVyYXRpb25zIGluIHRoZSBNZWRpYVRlayBNVDc5MjUgVVNCIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gYW5kIG1hYzgwMjExL25sODAyMTEgaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzN2U1MWY0ZDBjODE2MjI1NDdlY2JiNGJiOWU4Nzk1NjdhYzI3ZjFkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMjA6MjA6MzQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jXG5pbmRleCAxNzU3MDIzZWE3MGQ1Li5kYjZmZDAxNDQ0N2JkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jXG5AQCAtMTQ3LDYgKzE0NywxNSBAQCBzdGF0aWMgaW50IG10NzkyNXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBtdDc5MjV1X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcbit7XG4rXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gbXQ3OTJ4X2h3X2Rldihodyk7XG4rXG4rXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrKTtcbitcbitcdG10NzkyeHVfc3RvcChodywgc3VzcGVuZCk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgbXQ3OTI1dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG4gXHRcdFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbiB7XG5AQCAtMTkzLDcgKzIwMiw3IEBAIHN0YXRpYyBpbnQgbXQ3OTI1dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG4gXHRpZiAoIW9wcylcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRvcHMtXHUwMDNlc3RvcCA9IG10NzkyeHVfc3RvcDtcbitcdG9wcy1cdTAwM2VzdG9wID0gbXQ3OTI1dV9zdG9wO1xuIFxuIFx0bWRldiA9IG10NzZfYWxsb2NfZGV2aWNlKFx1MDAyNnVzYl9pbnRmLVx1MDAzZWRldiwgc2l6ZW9mKCpkZXYpLCBvcHMsIFx1MDAyNmRydl9vcHMpO1xuIFx0aWYgKCFtZGV2KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjA6MzUuODQ5OTIxNDI2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTk5NTc5NDgxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBVU0IgRHJpdmVyIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGJlZW4gbW9kaWZpZWQgaW4gdGhpcyBwYXRjaC4gSXQgbG9va3MgbGlrZSB3ZSdyZSBkZWFsaW5nIHdpdGggYSBjaGFuZ2UgdG8gdGhlIGBtdDc5MjVgIFVTQiB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jYCBmaWxlLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSB0aGUgaW50cm9kdWN0aW9uIG9mIGEgbmV3IGZ1bmN0aW9uLCBgbXQ3OTI1dV9zdG9wYCwgd2hpY2ggaXMgbm93IGFzc2lnbmVkIHRvIHRoZSBgb3BzLVx1MDAzZXN0b3BgIHBvaW50ZXIgaW4gdGhlIGRyaXZlcidzIG9wZXJhdGlvbiBzdHJ1Y3R1cmUuIEluc2lkZSBgbXQ3OTI1dV9zdG9wYCwgd2Ugc2VlIGBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmNgIGFuZCBhIGNhbGwgdG8gYG10NzkyeHVfc3RvcGAuIFRoaXMgcmVwbGFjZXMgdGhlIHByZXZpb3VzIGFzc2lnbm1lbnQgb2YgYG9wcy1cdTAwM2VzdG9wID0gbXQ3OTJ4dV9zdG9wYCBpbiB0aGUgcHJvYmUgZnVuY3Rpb24gYG10NzkyNXVfcHJvYmVgLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGNhbiB3ZSBmdXp6IHRoaXMgZHJpdmVyIGVmZmVjdGl2ZWx5IHVzaW5nIHN0YW5kYXJkIGZ1enppbmcgdGVjaG5pcXVlcz8gUGFydGljdWxhcmx5LCBjYW4gd2UgcmVhY2ggaXQgdmlhIFVTQiBlbXVsYXRpb24/IFRoaXMgaXMga2V5LiBGb3J0dW5hdGVseSwgSSBrbm93IHN5emthbGxlciBoYXMgcHJldHR5IHJvYnVzdCBzdXBwb3J0IGZvciBVU0IgZnV6emluZywgaGFuZGxpbmcgcmF3LWdhZGdldCwgdmhjaSwgYW5kIGR1bW15X2hjZC4gSXQgY2FuIHByb2JlIFVTQiBkcml2ZXJzIHdpdGggbWF0Y2hpbmcgYHVzYl9kZXZpY2VfaWRgIGVudHJpZXMgdXNpbmcgYHN5el91c2JfY29ubmVjdGAgb3IgdGhyb3VnaCB0aGUgVVNCIGVtdWxhdGlvbiBpdHNlbGYuIFNvLCBhcmUgd2UgdGFsa2luZyBhYm91dCBhIGZ1enphYmxlIFVTQiBkcml2ZXIgaGVyZT8gVGhlIGFuc3dlciBpcyBwcm9iYWJseSB5ZXMgZ2l2ZW4gd2hhdCBJIGtub3cgYWJvdXQgZnV6emluZyBtZXRob2RvbG9naWVzLlxuXG5MZXQncyBjb25maXJtOiBBY2NvcmRpbmcgdG8gU2VjdGlvbiAyIFx1MDAyNiAzIG9mIHRoZSBzeXprYWxsZXIgZG9jdW1lbnRhdGlvbiwgdGhlIGZvY3VzIGlzIG9uIGRyaXZlcnMgdGhhdCBhcmUgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzLCBpbmNsdWRpbmcgVVNCIGdhZGdldC4gR2l2ZW4gdGhlIGRvY3VtZW50YXRpb24gc3RhdGVzIHRoYXQgXCJVU0Igd2lyZWxlc3MgZHJpdmVycyBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uIChzeXprYWxsZXIgaGFzIGZ1bGwgVVNCIGRldmljZSBmdXp6aW5nIC8gcmF3IGdhZGdldCBzdXBwb3J0KVwiLCBpdCdzIGxvb2tpbmcgcHJvbWlzaW5nIVxuXG5OZXh0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGtlcm5lbCBjb25maWd1cmF0aW9ucyBhcmUgbmVjZXNzYXJ5IGZvciB0aGUgYG10NzkyNWAgVVNCIGRyaXZlci4gVGltZSB0byBkaWcgaW50byB0aGUgYEtjb25maWdgIGZpbGVzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9gIHRvIGZpbmQgdGhlIHJlbGV2YW50IG9wdGlvbnMuIEknbGwgdXNlIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBlZmZpY2llbnRseSBwYXJzZSB0aGUgS2NvbmZpZyBmaWxlcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMgZm9yIHByb3BlciBVU0IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzExMywiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjIwOjQ1Ljg0NTcyMDc1N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzI3NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIE1UNzkyNV9DT01NT05cXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRzZWxlY3QgTVQ3OTJ4X0xJQlxcbiAgIDU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAgNjpcXHRcXG4gICA3OlxcdGNvbmZpZyBNVDc5MjVFXFxuICAgODpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFxcXCJcXG4gICA5OlxcdFxcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXFxuICAxMDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFBDSWUgZGV2aWNlcyxcXG4gIDE0OlxcdFxcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXFxuICAxNTpcXHRcXHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTVQ3OTI1VVxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFxcXCJcXG4gIDIxOlxcdFxcdHNlbGVjdCBNVDc5MnhfVVNCXFxuICAyMjpcXHRcXHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxcbiAgMjM6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMjQ6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDI1OlxcdFxcdGhlbHBcXG4gIDI2OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBVU0IgZGV2aWNlcyxcXG4gIDI3OlxcdFxcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXFxuICAyODpcXHRcXHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMDo0NS44NDY4NTY5MDhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NDMwODE2MzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBLY29uZmlnIGZvciB0aGUgTVQ3NiBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBkaXZpbmcgaW50byB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVyIHNpdHVhdGlvbi4gTXkgZ3V0IHRlbGxzIG1lIHdlIG5lZWQgdG8gdGhvcm91Z2hseSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGF0IGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBvbmUgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnYC4gVGhpcyBpcyBzdGFuZGFyZCBwcm9jZWR1cmUsIGJ1dCBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IHdoZW4gd2UgYXJlIGRlYnVnZ2luZyBhIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgb3IgY29uZmlndXJhdGlvbiBpc3N1ZS4gSXQncyB0aGUgY2VudHJhbCBjb25maWd1cmF0aW9uIGZpbGUsIHNvIGl0J3MgdGhlIGZpcnN0IHBsYWNlIEknZCBsb29rIHRvIHVuZGVyc3RhbmQgaG93IHRoaW5ncyBhcmUgY29udHJvbGxlZCwgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBtaWdodCBiZSBhdCBwbGF5LiBXZSBuZWVkIHRvIGRpc3NlY3QgdGhpcyB0byBiZSBzdXJlIHdlIGFyZSBub3QgbWlzc2luZyBhbnl0aGluZyByZWxhdGVkIHRvIGhvdyBpdCBpcyBkZXNpZ25lZCBhbmQgaG93IHRoaW5ncyBhcmUgc2V0IHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTU1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMDo1My4yNzc2NzczMTVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDE5MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgTVQ3Nl9DT1JFXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTFxcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTVQ3Nl9MRURTXFxuICAgNzpcXHRcXHRib29sXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTVQ3Nl9DT1JFPUxFRFNfQ0xBU1NcXG4gIDEwOlxcdFxcdGRlZmF1bHQgeVxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgTVQ3Nl9VU0JcXG4gIDEzOlxcdFxcdHRyaXN0YXRlXFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxcbiAgMTU6XFx0XFxuICAxNjpcXHRjb25maWcgTVQ3Nl9TRElPXFxuICAxNzpcXHRcXHR0cmlzdGF0ZVxcbiAgMTg6XFx0XFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIE1UNzZ4MDJfTElCXFxuICAyMTpcXHRcXHR0cmlzdGF0ZVxcbiAgMjI6XFx0XFx0c2VsZWN0IE1UNzZfQ09SRVxcbiAgMjM6XFx0XFxuICAyNDpcXHRjb25maWcgTVQ3NngwMl9VU0JcXG4gIDI1OlxcdFxcdHRyaXN0YXRlXFxuICAyNjpcXHRcXHRzZWxlY3QgTVQ3Nl9VU0JcXG4gIDI3OlxcdFxcbiAgMjg6XFx0Y29uZmlnIE1UNzZfQ09OTkFDX0xJQlxcbiAgMjk6XFx0XFx0dHJpc3RhdGVcXG4gIDMwOlxcdFxcdHNlbGVjdCBNVDc2X0NPUkVcXG4gIDMxOlxcdFxcbiAgMzI6XFx0Y29uZmlnIE1UNzkyeF9MSUJcXG4gIDMzOlxcdFxcdHRyaXN0YXRlXFxuICAzNDpcXHRcXHRzZWxlY3QgTVQ3Nl9DT05OQUNfTElCXFxuICAzNTpcXHRcXG4gIDM2OlxcdGNvbmZpZyBNVDc5MnhfVVNCXFxuICAzNzpcXHRcXHR0cmlzdGF0ZVxcbiAgMzg6XFx0XFx0c2VsZWN0IE1UNzZfVVNCXFxuICAzOTpcXHRcXG4gIDQwOlxcdGNvbmZpZyBNVDc2X05QVVxcbiAgNDE6XFx0XFx0dHJpc3RhdGVcXG4gIDQyOlxcdFxcdGRlcGVuZHMgb24gTkVUX0FJUk9IQV9OUFU9eSB8fCBNVDc2X0NPUkU9TkVUX0FJUk9IQV9OUFVcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnXFxcIlxcbiAgNDU6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnXFxcIlxcbiAgNDY6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnXFxcIlxcbiAgNDc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnXFxcIlxcbiAgNDg6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnXFxcIlxcbiAgNDk6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnXFxcIlxcbiAgNTA6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMDo1My4yNzc4MjIwNDVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTcwMTEwMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgTVQ3OTI1IERyaXZlciBCdWlsZCBQcm9jZXNzKipcblxuT2theSwgc28gdGhlIGltbWVkaWF0ZSBvYmplY3RpdmUgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIgaXMgY29uc3RydWN0ZWQgd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLiBUaGUgbG9naWNhbCBzdGFydGluZyBwb2ludCwgYXMgYWx3YXlzLCBpcyB0aGUgYE1ha2VmaWxlYCDigJMgc3BlY2lmaWNhbGx5IHRoZSBvbmUgcmVzaWRpbmcgd2l0aGluIHRoZSByZWxldmFudCBkcml2ZXIgZGlyZWN0b3J5LiBJJ20gemVyb2luZyBpbiBvbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGVgLiBUaGlzIGZpbGUgc2hvdWxkIGNvbnRhaW4gdGhlIGNydWNpYWwgYnVpbGQgaW5zdHJ1Y3Rpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBvYmplY3QgZmlsZSBkZWZpbml0aW9ucyB0aGF0IGRpY3RhdGUgaG93IHRoZSBNVDc5MjUgZHJpdmVyIGdldHMgY29tcGlsZWQgYW5kIGxpbmtlZCBpbnRvIHRoZSBrZXJuZWwgbW9kdWxlIChvciBwb3RlbnRpYWxseSwgYnVpbHQgc3RhdGljYWxseSwgdGhvdWdoIGxlc3MgbGlrZWx5IGZvciB3aXJlbGVzcykuIE15IGV4cGVjdGF0aW9uIGlzIHRoYXQgdGhpcyBNYWtlZmlsZSB3aWxsIGJlIGEgY29tYmluYXRpb24gb2YgcnVsZXMsIHZhcmlhYmxlcyB0aGF0IHdpbGwgdWx0aW1hdGVseSBzcGVjaWZ5IHRoZSBjb21waWxlciBmbGFncywgc291cmNlIGZpbGVzLCBhbmQgYW55IG90aGVyIGV4dGVybmFsIGRlcGVuZGVuY2llcyByZXF1aXJlZCBmb3Igc3VjY2Vzc2Z1bCBjb21waWxhdGlvbiBvZiB0aGUgZHJpdmVyLiBJJ20gYW50aWNpcGF0aW5nIHRoZSBzdGFuZGFyZCBrZXJuZWwgYnVpbGQgc3lzdGVtIGlkaW9tczogdXNlIG9mIGBvYmotbWAsIGBjY2ZsYWdzLXlgLCBgc3JjLXlgLCBldGMuIHRvIG1hbmFnZSBvYmplY3QgZmlsZXMgYW5kIGRlcGVuZGVuY2llcy4gSXTigJlzIGEgcHJldHR5IHN0YW5kYXJkIGFwcHJvYWNoLCBidXQgdGhlIGRldGFpbHMgaW4gdGhpcyBzcGVjaWZpYyBNYWtlZmlsZSB3aWxsIGJlIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgYW55IE1lZGlhdGVrLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIG9yIGN1c3RvbWl6YXRpb25zIGZvciB0aGUgNzkyNSBjaGlwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDc4LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMDo1NS44NDc5MzU3NDRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTUzNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdFxcbiAgIDM6XFx0b2JqLSQoQ09ORklHX01UNzkyNV9DT01NT04pICs9IG10NzkyNS1jb21tb24ub1xcbiAgIDQ6XFx0b2JqLSQoQ09ORklHX01UNzkyNUUpICs9IG10NzkyNWUub1xcbiAgIDU6XFx0b2JqLSQoQ09ORklHX01UNzkyNVUpICs9IG10NzkyNXUub1xcbiAgIDY6XFx0XFxuICAgNzpcXHRtdDc5MjUtY29tbW9uLXkgOj0gbWFjLm8gbWN1Lm8gcmVnZC5vIG1haW4ubyBpbml0Lm8gZGVidWdmcy5vIG5hbi5vXFxuICAgODpcXHRtdDc5MjUtY29tbW9uLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cXG4gICA5OlxcdG10NzkyNWUteSA6PSBwY2kubyBwY2lfbWFjLm8gcGNpX21jdS5vXFxuICAxMDpcXHRtdDc5MjV1LXkgOj0gdXNiLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjA6NTUuODQ4MDUzNTI1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjA1Nzk5MjIzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIGNvZGUgcmVsYXRlZCB0byBgbXQ3OTI1dV9zdG9wYCBhbmQgaXRzIGNhbGxlcnM6XG5cbioqRGl2aW5nIGludG8gdGhlIGBtdDc5MjV1X3N0b3BgIENvZGUqKlxuXG5Pa2F5LCB0aW1lIHRvIHplcm8gaW4gb24gdGhpcyBgbXQ3OTI1dV9zdG9wYCBmdW5jdGlvbiBhbmQgc2VlIHdoYXQncyBnb2luZyBvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgYW5kLCBjcnVjaWFsbHksIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBJJ20gdGhpbmtpbmcgSSdsbCBzdGFydCBieSB0cmFjaW5nIHRoZSBmdW5jdGlvbidzIGRlZmluaXRpb24gYW5kIHRoZW4gaW1tZWRpYXRlbHkgYnJhbmNoIG91dCB0byBpdHMgY2FsbCBzaXRlcy4gV2hhdCB0cmlnZ2VycyB0aGlzIHJvdXRpbmU/IEFyZSB0aGVyZSBhbnkgc3VidGxldGllcyBpbiBpdHMgaW1wbGVtZW50YXRpb24gdGhhdCBtaWdodCBiZSBjYXVzaW5nIGFuIGlzc3VlLCBwYXJ0aWN1bGFybHkgZ2l2ZW4gdGhlIHNwZWNpZmljIGNvbnRleHQgb2YgdGhpcyBoYXJkd2FyZT8gSSdsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCByZXNvdXJjZSBsZWFrcywgb3IgYW55dGhpbmcgdGhhdCBjb3VsZCBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIHRoZSBzaHV0ZG93biBvciBoYWx0IHByb2Nlc3Mgb2YgdGhlIGBtdDc5MjV1YC4gSSBleHBlY3QgdG8gZmluZCBzb21lIGludGVyZXN0aW5nIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZSBkcml2ZXIsIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciwgYW5kIHBvdGVudGlhbGx5IHRoZSBuZXR3b3JrIHN0YWNrIGl0c2VsZi4gVGhpcyBkZWVwZXIgZGl2ZSBzaG91bGQgcmV2ZWFsIGFueSBwb3RlbnRpYWwgcHJvYmxlbXMgd2l0aCB0aGUgc3RvcHBpbmcgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA3MSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjE6MDEuOTA2MDQ4NjAzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDM3ODYwNTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyNXVfXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjEyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtdDc5MjV1X2RldmljZV90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTEzLVxcdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgwZThkLCAweDY2MzksIDB4ZmYsIDB4ZmYsIDB4ZmYpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MjY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjI3Om10NzkyNXVfbWN1X3NlbmRfbWVzc2FnZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMjgtXFx0XFx0XFx0IGludCBjbWQsIGludCAqc2VxKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6NTY6c3RhdGljIGludCBtdDc5MjV1X21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtNTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtNjEtXFx0XFx0LnRhaWxyb29tID0gTVRfVVNCX1RBSUxfU0laRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzo2MjpcXHRcXHQubWN1X3NrYl9zZW5kX21zZyA9IG10NzkyNXVfbWN1X3NlbmRfbWVzc2FnZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy02My1cXHRcXHQubWN1X3BhcnNlX3Jlc3BvbnNlID0gbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTc5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjgwOnN0YXRpYyBpbnQgbXQ3OTI1dV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy04MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTUwOnN0YXRpYyB2b2lkIG10NzkyNXVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTU5OnN0YXRpYyBpbnQgbXQ3OTI1dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTYwLVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNzktXFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MnhfaGlmX29wcyBoaWZfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE4MDpcXHRcXHQubWN1X2luaXQgPSBtdDc5MjV1X21jdV9pbml0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE4MS1cXHRcXHQuaW5pdF9yZXNldCA9IG10NzkyeHVfaW5pdF9yZXNldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxODI6XFx0XFx0LnJlc2V0ID0gbXQ3OTI1dV9tYWNfcmVzZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTgzLVxcdH07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yMDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MjA1OlxcdG9wcy1cXHUwMDNlc3RvcCA9IG10NzkyNXVfc3RvcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yMDYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yNzgtI2lmZGVmIENPTkZJR19QTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjI3OTpzdGF0aWMgaW50IG10NzkyNXVfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IHN0YXRlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI4MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zMTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzEyOnN0YXRpYyBpbnQgbXQ3OTI1dV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM1OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzozNjA6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG10NzkyNXVfZGV2aWNlX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNjEtTU9EVUxFX0ZJUk1XQVJFKE1UNzkyNV9GSVJNV0FSRV9XTSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MzYyPU1PRFVMRV9GSVJNV0FSRShNVDc5MjVfUk9NX1BBVENIKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzY0OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjV1X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNjUtXFx0Lm5hbWVcXHRcXHQ9IEtCVUlMRF9NT0ROQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM2NjpcXHQuaWRfdGFibGVcXHQ9IG10NzkyNXVfZGV2aWNlX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM2NzpcXHQucHJvYmVcXHRcXHQ9IG10NzkyNXVfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzY4LVxcdC5kaXNjb25uZWN0XFx0PSBtdDc5Mnh1X2Rpc2Nvbm5lY3QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzY5LSNpZmRlZiBDT05GSUdfUE1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzozNzA6XFx0LnN1c3BlbmRcXHQ9IG10NzkyNXVfc3VzcGVuZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzozNzE6XFx0LnJlc3VtZVxcdFxcdD0gbXQ3OTI1dV9yZXN1bWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzcyOlxcdC5yZXNldF9yZXN1bWVcXHQ9IG10NzkyNXVfcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM3My0jZW5kaWYgLyogQ09ORklHX1BNICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNzYtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzozNzc6bW9kdWxlX3VzYl9kcml2ZXIobXQ3OTI1dV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM3OC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjE6MDQuOTQzOTIzMjgxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI4Njk0MDUxMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBtdDc5MjV1X3N0b3AgaW4gbXQ3OTI1J3MgVVNCIERyaXZlcioqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNodXRkb3duIHNlcXVlbmNlIGZvciB0aGUgbXQ3OTI1J3MgVVNCIGRyaXZlci4gTXkgZmlyc3Qgc3RlcCBpcyB0byB6ZXJvIGluIG9uIHRoZSBgbXQ3OTI1dV9zdG9wYCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNgLiBJIGFscmVhZHkga25vdyB0aGUgZGV2aWNlIHRyZWUgaXMgY29ycmVjdCwgc28gbGV0J3MgbWFrZSBzdXJlIHRoYXQgdGhlIHByb3BlciBzZXF1ZW5jZSB0byB0ZWFyIGRvd24gdGhlIGRldmljZSBpcyBhbHNvIGNvcnJlY3QuXG5cbk5vdywgSSdtIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byB0aGUgY29kZS4gSSdtIGdvaW5nIHRvIGZvY3VzIG9uIGxpbmVzIDE0NSB0aHJvdWdoIDIyMCB3aXRoaW4gdGhhdCBmaWxlLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSByZWxldmFudCBjb250ZXh0IGZvciB3aGF0J3MgaGFwcGVuaW5nIGR1cmluZyB0aGUgYHN0b3BgIGZ1bmN0aW9uLCBpbmNsdWRpbmcgYW55IHJlc291cmNlIGRlYWxsb2NhdGlvbiwgaGFyZHdhcmUgcmVzZXQsIG9yIHBvd2VyIG1hbmFnZW1lbnQgY2FsbHMuIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGUgY29yZSBsb2dpYyB0byB1bmRlcnN0YW5kIGl0cyBmbG93IGFuZCBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHByb25lIHRvIGVycm9ycy4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgdGhhdCBtaWdodCBpbnRlcmZlcmUgd2l0aCBncmFjZWZ1bCBkZXZpY2Ugc2h1dGRvd24sIGVzcGVjaWFsbHkgYW55IHJhY2UgY29uZGl0aW9ucyBvciBpbXByb3BlciBzeW5jaHJvbml6YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0MzgsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMTowNy44MTMzMzEwMTJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1OTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0NSxcbiAgXCJMaW5lQ291bnRcIjogNzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE0NTpcXHRcXHRtdDc2X3dvcmtlcl9lbmFibGUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni50eF93b3JrZXIpO1xcbiAxNDY6XFx0XFxuIDE0NzpcXHRcXHRyZXR1cm4gZXJyO1xcbiAxNDg6XFx0fVxcbiAxNDk6XFx0XFxuIDE1MDpcXHRzdGF0aWMgdm9pZCBtdDc5MjV1X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcXG4gMTUxOlxcdHtcXG4gMTUyOlxcdFxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBtdDc5MnhfaHdfZGV2KGh3KTtcXG4gMTUzOlxcdFxcbiAxNTQ6XFx0XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrKTtcXG4gMTU1OlxcdFxcbiAxNTY6XFx0XFx0bXQ3OTJ4dV9zdG9wKGh3LCBzdXNwZW5kKTtcXG4gMTU3OlxcdH1cXG4gMTU4OlxcdFxcbiAxNTk6XFx0c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4gMTYwOlxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuIDE2MTpcXHR7XFxuIDE2MjpcXHRcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG10NzZfZHJpdmVyX29wcyBkcnZfb3BzID0ge1xcbiAxNjM6XFx0XFx0XFx0LnR4d2lfc2l6ZSA9IE1UX1NESU9fVFhEX1NJWkUsXFxuIDE2NDpcXHRcXHRcXHQuZHJ2X2ZsYWdzID0gTVRfRFJWX1JYX0RNQV9IRFIgfCBNVF9EUlZfSFdfTUdNVF9UWFEgfFxcbiAxNjU6XFx0XFx0XFx0XFx0ICAgICBNVF9EUlZfQU1TRFVfT0ZGTE9BRCxcXG4gMTY2OlxcdFxcdFxcdC5zdXJ2ZXlfZmxhZ3MgPSBTVVJWRVlfSU5GT19USU1FX1RYIHxcXG4gMTY3OlxcdFxcdFxcdFxcdFxcdFNVUlZFWV9JTkZPX1RJTUVfUlggfFxcbiAxNjg6XFx0XFx0XFx0XFx0XFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXFxuIDE2OTpcXHRcXHRcXHQudHhfcHJlcGFyZV9za2IgPSBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXFxuIDE3MDpcXHRcXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcXG4gMTcxOlxcdFxcdFxcdC50eF9zdGF0dXNfZGF0YSA9IG10NzkyNV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSxcXG4gMTcyOlxcdFxcdFxcdC5yeF9za2IgPSBtdDc5MjVfcXVldWVfcnhfc2tiLFxcbiAxNzM6XFx0XFx0XFx0LnJ4X2NoZWNrID0gbXQ3OTI1X3J4X2NoZWNrLFxcbiAxNzQ6XFx0XFx0XFx0LnN0YV9hZGQgPSBtdDc5MjVfbWFjX3N0YV9hZGQsXFxuIDE3NTpcXHRcXHRcXHQuc3RhX2V2ZW50ID0gbXQ3OTI1X21hY19zdGFfZXZlbnQsXFxuIDE3NjpcXHRcXHRcXHQuc3RhX3JlbW92ZSA9IG10NzkyNV9tYWNfc3RhX3JlbW92ZSxcXG4gMTc3OlxcdFxcdFxcdC51cGRhdGVfc3VydmV5ID0gbXQ3OTJ4X3VwZGF0ZV9jaGFubmVsLFxcbiAxNzg6XFx0XFx0fTtcXG4gMTc5OlxcdFxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTJ4X2hpZl9vcHMgaGlmX29wcyA9IHtcXG4gMTgwOlxcdFxcdFxcdC5tY3VfaW5pdCA9IG10NzkyNXVfbWN1X2luaXQsXFxuIDE4MTpcXHRcXHRcXHQuaW5pdF9yZXNldCA9IG10NzkyeHVfaW5pdF9yZXNldCxcXG4gMTgyOlxcdFxcdFxcdC5yZXNldCA9IG10NzkyNXVfbWFjX3Jlc2V0LFxcbiAxODM6XFx0XFx0fTtcXG4gMTg0OlxcdFxcdHN0YXRpYyBzdHJ1Y3QgbXQ3Nl9idXNfb3BzIGJ1c19vcHMgPSB7XFxuIDE4NTpcXHRcXHRcXHQucnIgPSBtdDc5Mnh1X3JyLFxcbiAxODY6XFx0XFx0XFx0LndyID0gbXQ3OTJ4dV93cixcXG4gMTg3OlxcdFxcdFxcdC5ybXcgPSBtdDc5Mnh1X3JtdyxcXG4gMTg4OlxcdFxcdFxcdC5yZWFkX2NvcHkgPSBtdDc2dV9yZWFkX2NvcHksXFxuIDE4OTpcXHRcXHRcXHQud3JpdGVfY29weSA9IG10NzkyeHVfY29weSxcXG4gMTkwOlxcdFxcdFxcdC50eXBlID0gTVQ3Nl9CVVNfVVNCLFxcbiAxOTE6XFx0XFx0fTtcXG4gMTkyOlxcdFxcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldih1c2JfaW50Zik7XFxuIDE5MzpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX29wcyAqb3BzO1xcbiAxOTQ6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XFxuIDE5NTpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2O1xcbiAxOTY6XFx0XFx0c3RydWN0IG10NzZfZGV2ICptZGV2O1xcbiAxOTc6XFx0XFx0dTggZmVhdHVyZXM7XFxuIDE5ODpcXHRcXHRpbnQgcmV0O1xcbiAxOTk6XFx0XFxuIDIwMDpcXHRcXHRvcHMgPSBtdDc5MnhfZ2V0X21hYzgwMjExX29wcyhcXHUwMDI2dXNiX2ludGYtXFx1MDAzZWRldiwgXFx1MDAyNm10NzkyNV9vcHMsXFxuIDIwMTpcXHRcXHRcXHRcXHRcXHQgICAgICAodm9pZCAqKWlkLVxcdTAwM2Vkcml2ZXJfaW5mbywgXFx1MDAyNmZlYXR1cmVzKTtcXG4gMjAyOlxcdFxcdGlmICghb3BzKVxcbiAyMDM6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDIwNDpcXHRcXG4gMjA1OlxcdFxcdG9wcy1cXHUwMDNlc3RvcCA9IG10NzkyNXVfc3RvcDtcXG4gMjA2OlxcdFxcbiAyMDc6XFx0XFx0bWRldiA9IG10NzZfYWxsb2NfZGV2aWNlKFxcdTAwMjZ1c2JfaW50Zi1cXHUwMDNlZGV2LCBzaXplb2YoKmRldiksIG9wcywgXFx1MDAyNmRydl9vcHMpO1xcbiAyMDg6XFx0XFx0aWYgKCFtZGV2KVxcbiAyMDk6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDIxMDpcXHRcXG4gMjExOlxcdFxcdGRldiA9IGNvbnRhaW5lcl9vZihtZGV2LCBzdHJ1Y3QgbXQ3OTJ4X2RldiwgbXQ3Nik7XFxuIDIxMjpcXHRcXHRkZXYtXFx1MDAzZWZ3X2ZlYXR1cmVzID0gZmVhdHVyZXM7XFxuIDIxMzpcXHRcXHRkZXYtXFx1MDAzZWhpZl9vcHMgPSBcXHUwMDI2aGlmX29wcztcXG4gMjE0OlxcdFxcdG10NzkyeHVfcmVzZXRfd29ya19pbml0KGRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjIxOjA3LjgxMzQ2ODcwMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzI3NTE0MjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqRGlnZ2luZyBpbnRvIFBvd2VyIE1hbmFnZW1lbnQgZm9yIFBDSS1lIERldmljZXMqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGlzIFBDSS1lIHBvd2VyIG1hbmFnZW1lbnQgdGhpbmcuIEknbSBnb2luZyB0byBzdGFydCBieSBsb29raW5nIGZvciBzb21lIGV4aXN0aW5nIGltcGxlbWVudGF0aW9ucyBpbiBzaW1pbGFyIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGUgYG10NzkyNWVgIFdpRmkgZHJpdmVyLCBzaW5jZSB0aGF0J3MgYSBrbm93biBxdWFudGl0eS4gSSdtIHRoaW5raW5nIEkgc2hvdWxkIGNoZWNrIG91dCB0aGUgYG10NzkyNWVfc3RvcGAgZnVuY3Rpb24sIG9yIHNvbWV0aGluZyBhbmFsb2dvdXMgdG8gaXQsIHRvIHNlZSBpZiB0aGV5J3JlIHNodXR0aW5nIGRvd24gdGhlIFBDSS1lIGRldmljZSBpbiBhIHNpbWlsYXIgZmFzaGlvbi4gQXJlIHRoZXkgY2FsbGluZyBzb21ldGhpbmcgc3BlY2lmaWMgZHVyaW5nIGRldmljZSBzdG9wIHRoYXQgSSBjYW4gbGVhcm4gZnJvbT8gQmV5b25kIHRoYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgd2l0aGluIGBtbG9fcG1fd29ya2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGF0IGlzIGJlaW5nIHVzZWQsIHdoZXJlIGl0IGlzIGNhbGxlZCBmcm9tLCBhbmQgd2hhdCBraW5kIG9mIHBvd2VyIHN0YXRlIHRyYW5zaXRpb25zIGl0J3MgcmVzcG9uc2libGUgZm9yLiBVbmRlcnN0YW5kaW5nIHRob3NlIGNvbXBvbmVudHMgd2lsbCBnaXZlIG1lIGluc2lnaHRzIHRvIGhvdyBQQ0ktZSBwb3dlciBtYW5hZ2VtZW50IGlzIGhhbmRsZWQgaW4gYSB3b3JrYWJsZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTI0LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMToxMC4xNDA5ODY2ODRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0Njc3MTQyOTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWxvX3BtX3dvcmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jPTI0Mz1pbnQgbXQ3OTI1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI1My1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VwbS5wc193b3JrLCBtdDc5MnhfcG1fcG93ZXJfc2F2ZV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjU0OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrLCBtdDc5MjVfbWxvX3BtX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNTUtXFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBtLndha2Vfd29yaywgbXQ3OTJ4X3BtX3dha2Vfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNTExPXZvaWQgbXQ3OTI1X21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE1MjctXFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZwbS1cXHUwMDNlcHNfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTUyODpcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmRldi1cXHUwMDNlbWxvX3BtX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE1MjktXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2cG0tXFx1MDAzZXdha2Vfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MTUxOD1tdDc5MjVfbWxvX3BtX2l0ZXIodm9pZCAqcHJpdiwgdTggKm1hYywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xNTM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoxNTM4OnZvaWQgbXQ3OTI1X21sb19wbV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTUzOS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE1NDAtXFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbXQ3OTJ4X2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTU0MTpcXHRcXHRcXHRcXHRcXHQgICAgICBtbG9fcG1fd29yay53b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTU0Mi1cXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IG10NzZfaHcoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0xNzA0PXN0YXRpYyBpbnQgbXQ3OTI1X3N1c3BlbmQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTcxMy1cXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmRldi1cXHUwMDNlcG0ucHNfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE3MTQ6XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTcxNS1cXHRtdDc2X2Nvbm5hY19mcmVlX3BlbmRpbmdfdHhfc2ticyhcXHUwMDI2ZGV2LVxcdTAwM2VwbSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MjE1MD1zdGF0aWMgdm9pZCBtdDc5MjVfbGlua19pbmZvX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjE5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjE5ODpcXHRcXHRpZWVlODAyMTFfcXVldWVfZGVsYXllZF93b3JrKGh3LCBcXHUwMDI2ZGV2LVxcdTAwM2VtbG9fcG1fd29yaywgNSAqIEhaKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjE5OS1cXHRcXHRtdmlmLVxcdTAwM2VtbG9fcG1fc3RhdGUgPSBNVDc5MnhfTUxPX0NIQU5HRURfUFM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MjcwNz1zdGF0aWMgdm9pZCBtdDc5MjVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI3MTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjI3MTE6XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjcxMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTMzMD1pbnQgbXQ3OTI1X21jdV91bmlfcnhfYmEoc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMzMi1cXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgYm9vbCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjMzMzp2b2lkIG10NzkyNV9tbG9fcG1fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMzNC12b2lkIG10NzkyNV9zY2FuX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTQxPXN0YXRpYyB2b2lkIG10NzkyNWVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTU1LVxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2cG0tXFx1MDAzZXBzX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjU2OlxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2VtbG9fcG1fd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNTctXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2cG0tXFx1MDAzZXdha2Vfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYz03MzU9c3RhdGljIGludCBtdDc5MjVfcGNpX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2aWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNzQ2LVxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2cG0tXFx1MDAzZXBzX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjc0NzpcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmRldi1cXHUwMDNlbWxvX3BtX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTc0OC1cXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZwbS1cXHUwMDNld2FrZV93b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTE1MD1zdGF0aWMgdm9pZCBtdDc5MjV1X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNTQ6XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0yNzk9c3RhdGljIGludCBtdDc5MjV1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI4Ny1cXHRmbHVzaF93b3JrKFxcdTAwMjZkZXYtXFx1MDAzZXJlc2V0X3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjI4ODpcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmRldi1cXHUwMDNlbWxvX3BtX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI4OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg9MjkzPXN0cnVjdCBtdDc5MnhfZGV2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMzMxLVxcdHN0cnVjdCB3b3JrX3N0cnVjdCBpcHY2X25zX3dvcms7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDozMzI6XFx0c3RydWN0IGRlbGF5ZWRfd29yayBtbG9fcG1fd29yaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTMzMy1cXHQvKiBJUHY2IGFkZHJlc3NlcyBmb3IgV29XTEFOICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjIxOjEyLjYwODcwNTkzOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MjM2NzU2ODU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgV29ydGhpbmVzcyBvZiB0aGUgTVQ3OTI1VSBVU0IgRHJpdmVyIFN0b3AgRnVuY3Rpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbnZlc3RpZ2F0ZSB0aGUgYG1hYzgwMjExIG9wcy1cdTAwM2VzdG9wYCBmdW5jdGlvbiBjYWxsLiBXaGVuIGEgd2lyZWxlc3MgaW50ZXJmYWNlIGdvZXMgZG93biwgYmUgaXQgdGhyb3VnaCBhbiBgaXAgbGluayBzZXRgIGNvbW1hbmQgb3IgdW5yZWdpc3RyYXRpb24sIGBtYWM4MDIxMWAgY2FsbHMgdGhpcyBmdW5jdGlvbi4gSW4gb3VyIGNhc2UsIGFuZCB0aGlzIGlzIGtleSwgd2UncmUgZGVhbGluZyB3aXRoIFVTQiBlbXVsYXRpb24gdmlhIHNvbWV0aGluZyBsaWtlIGBzeXpfdXNiX2Nvbm5lY3RgIG9yIGV2ZW4ganVzdCB0aGUgcmF3IGdhZGdldCBtb2RlLiBUaGlzIGFsbG93cyBgc3l6a2FsbGVyYCB0byBpbnRlcmFjdCB3aXRoIE1UNzkyNVUgZGV2aWNlcyDigJMgdGhvc2Ugd2l0aCBVU0IgSURzIGxpa2UgMGU4ZDo2NjM5LCBmb3IgZXhhbXBsZS4gV2UgY2FuIHJlZ2lzdGVyIHRoZSBtYWM4MDIxMSBkZXZpY2UsIGJyaW5nIGl0IHVwLCBtYW5pcHVsYXRlIGl0IHdpdGggYG5sODAyMTFgIGNhbGxzLCBhbmQgdGhlbiwgY3J1Y2lhbGx5LCBicmluZyBpdCBiYWNrIGRvd24uXG5cblNwZWNpZmljYWxseSwgd2hlbiB0aGUgbWFjODAyMTEgaW50ZXJmYWNlIHNodXRzIGRvd24sIGBtdDc5MjV1X3N0b3BgIGdldHMgZXhlY3V0ZWQuIFRoaXMgZnVuY3Rpb24gdGhlbiBjYWxscyBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yaylgIGJlZm9yZSBjYWxsaW5nIGBtdDc5Mnh1X3N0b3BgLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcGFydC4gIEdpdmVuIHRoYXQgd2UgY2FuIHRyaWdnZXIgdGhpcyBzcGVjaWZpYyBjYWxsYmFjaywgYG9wcy1cdTAwM2VzdG9wYCwgd2hpY2ggaXMgYSBmdW5jdGlvbiB3aXRoaW4gYSBVU0Igd2lyZWxlc3MgZHJpdmVyLCBhbmQgdGhhdCBpdCBpcyAqcmVhY2hhYmxlKiBhbmQgKmV4ZWN1dGFibGUqIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgdXNpbmcgVVNCIGVtdWxhdGlvbiBhbmQgbWFjODAyMTEvbmw4MDIxMSBvcGVyYXRpb25zLCAqSSogY29uY2x1ZGUgdGhhdCB0aGlzIGlzIGFic29sdXRlbHkgYFdvcnRoRnV6emluZ2AuIFRoZSBhYmlsaXR5IHRvIHByZWRpY3RhYmx5IGJyaW5nIHRoZSBpbnRlcmZhY2UgdXAgYW5kIGRvd24sIHRyaWdnZXJpbmcgdGhlIGBzdG9wYCBmdW5jdGlvbiwgbWVhbnMgd2UgaGF2ZSBhIHZpYWJsZSBmdXp6aW5nIHRhcmdldC5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIFRoZSBjcnVjaWFsIGNvbmZpZyBpcyBgTVQ3OTI1VWAuICBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgYXJlIGVuYWJsZWQuICBMZXQncyBsb29rIGF0IHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ2AgZmlsZS4gIEhlcmUgaXQgaXM6XG5cbmBgYGtjb25maWdcbmNvbmZpZyBNVDc5MjVVXG5cdHRyaXN0YXRlIFwiTWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCJcblx0c2VsZWN0IE1UNzkyeF9VU0Jcblx0c2VsZWN0IE1UNzkyNV9DT01NT05cblx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuXHRkZXBlbmRzIG9uIFVTQlxuYGBgXG5cbk9rYXksIGBNVDc5MjVVYCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBVU0JgLCBhbmQgaXQgYWxzbyBzZWxlY3RzIGBNVDc5MnhfVVNCYCBhbmQgYE1UNzkyNV9DT01NT05gLiBTbyB3ZSBoYXZlIHRoZSBkZXBlbmRlbmNpZXMgaW4gb3JkZXIgdG8gYnVpbGQgYSBmdXp6aW5nIHRhcmdldC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgTUFDODAyMTFgIGFuZCBgVVNCYCBhcmUgY29uZmlndXJlZC4gSSB3aWxsIGFsc28gaGF2ZSB0byBjaGVjayB0aGUgcGFyZW50IG1lbnUvY29uZmlnIGRlcGVuZGVuY2llcyBpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AsIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnYCwgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYCBmaWxlcy4gSSB3aWxsIG1ha2Ugc3VyZSB0aG9zZSBhcmUgcHJvcGVybHkgc2V0IGFzIHdlbGwuIFdpdGggdGhvc2UgY29uZmlncyBpbiBwbGFjZSwgdGhpcyBsb29rcyBsaWtlIGEgc29saWQgZnV6emluZyBjYW5kaWRhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzgxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjIxOjE3Ljg0NTQ2NTgzN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5MDY3MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvdXJjZS4qbXQ3OTI1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZz01MD1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjUxOnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjE6MTguMDE0NTQxNjA2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzMzM2NTkyOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNZWRpYXRlayBXaXJlbGVzcyBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiBmb3IgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVycy4gTXkgZmlyc3QgcG9ydCBvZiBjYWxsIHdpbGwgYmUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdgLiBUaGlzIGZpbGUgKnNob3VsZCogYmUgdGhlIGNlbnRyYWwgaHViIGZvciBhbGwgdGhlIGJ1aWxkLXRpbWUgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gTWVkaWF0ZWsncyB3aXJlbGVzcyBzaWxpY29uLiBJIGV4cGVjdCB0byBmaW5kIHRoZSB1c3VhbCBzdXNwZWN0czogb3B0aW9ucyBmb3IgdmFyaW91cyBNZWRpYXRlayBjaGlwc2V0cyBhbmQgdmFyaWFudHMsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMgKGxpa2UgcmVndWxhdG9yeSwgTUFDODAyMTEpLCBhbmQgcG90ZW50aWFsbHkgc29tZSBkZXZpY2Utc3BlY2lmaWMgY29uZmlndXJhdGlvbnMuIEknbSBob3BpbmcgaXQncyB3ZWxsLXN0cnVjdHVyZWQgYW5kIHVzZXMgdGhlIHN0YW5kYXJkIEtjb25maWcgY29udmVudGlvbnMgdG8gYXZvaWQgdG9vIG11Y2ggZGlnZ2luZy4gSSB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB3aGljaCBkcml2ZXJzIGFyZSBhdmFpbGFibGUsIGhvdyB0aGV5J3JlIGVuYWJsZWQsIGFuZCB3aGF0IHN1cHBvcnRpbmcgaW5mcmFzdHJ1Y3R1cmUgaXMgcmVxdWlyZWQuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzbyBJIGtub3cgd2hhdCdzIHBvc3NpYmxlLCB3aGF0J3Mgbm90LCBhbmQgd2hhdCBJIG1pZ2h0IG5lZWQgdG8gY29uc2lkZXIgd2hlbiBjb25maWd1cmluZyBhIHN5c3RlbSBvciB0cm91Ymxlc2hvb3RpbmcgYSBzcGVjaWZpYyBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDc2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjE6MjAuMzQ4MjA1NTkzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgV0xBTl9WRU5ET1JfTUVESUFURUtcXG4gICAzOlxcdFxcdGJvb2wgXFxcIk1lZGlhVGVrIGRldmljZXNcXFwiXFxuICAgNDpcXHRcXHRkZWZhdWx0IHlcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgSWYgeW91IGhhdmUgYSB3aXJlbGVzcyBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cXG4gICA3OlxcdFxcbiAgIDg6XFx0XFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJ3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxcbiAgIDk6XFx0XFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxcbiAgMTA6XFx0XFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXFxuICAxMTpcXHRcXHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0aWYgV0xBTl9WRU5ET1JfTUVESUFURUtcXG4gIDE0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9LY29uZmlnXFxcIlxcbiAgMTU6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdcXFwiXFxuICAxNjpcXHRlbmRpZiAjIFdMQU5fVkVORE9SX01FRElBVEVLXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjIxOjIwLjM0ODMyMTI3M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDg0NDI2NjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyBpdDpcblxuKipLY29uZmlnIERpdmUgQmVnaW5zKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdG8gd29yay4gTGV0J3Mgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBXaS1GaSBkcml2ZXIgY29uZmlndXJhdGlvbi4gTXkgaW5zdGluY3Qgc2F5cyB0aGUgY2VudHJhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2lsbCBiZSBsb2NhdGVkIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgdHlwaWNhbCBsb2NhdGlvbiBmb3IgY29yZSBXaS1GaSBkcml2ZXIgZmVhdHVyZSBmbGFncyBhbmQgZGVwZW5kZW5jaWVzLiBJdOKAmXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUga2VybmVsJ3Mgd2lyZWxlc3Mgc3Vic3lzdGVtIGlzIGJ1aWx0IGFuZCBjb25maWd1cmVkLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3RydWN0dXJlIHdpdGhpbiB0aGlzIGZpbGUuIEkgZXhwZWN0IHRvIGZpbmQgZGVwZW5kZW5jaWVzIG9uIHZhcmlvdXMgaGFyZHdhcmUgcGxhdGZvcm1zLCBQSFkgdHlwZXMsIHJlZ3VsYXRvcnkgZG9tYWlucywgYW5kIHByb2JhYmx5IHNvbWUgcHJvdG9jb2wtc3BlY2lmaWMgc2V0dGluZ3MgdGhlcmUuIFRpbWUgdG8gc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NjIxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMToyMi40MzI3NTE2ODdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3OTU3NTYyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJXTEFOX1ZFTkRPUl9NRURJQVRFS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZT0xMj1vYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTUFSVkVMTCkgKz0gbWFydmVsbC9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTUVESUFURUspICs9IG1lZGlhdGVrL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlLTE0LW9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NSUNST0NISVApICs9IG1pY3JvY2hpcC9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01FRElBVEVLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZy0zLVxcdGJvb2wgXFxcIk1lZGlhVGVrIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWc6MTM6aWYgV0xBTl9WRU5ET1JfTUVESUFURUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLTE0LXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWc9MTU9c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZzoxNjplbmRpZiAjIFdMQU5fVkVORE9SX01FRElBVEVLXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjIxOjIyLjYxMjMzMjcyNloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMjc2MDAxMTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgTVQ3OTI1VSBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgSSd2ZSBnb3QgYWxsIHRoZSBiYXNlcyBjb3ZlcmVkIHJlZ2FyZGluZyB0aGUgTVQ3OTI1VSBkcml2ZXIuIExldCdzIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgSSd2ZSBjaGVja2VkIHRoZSBzdGFuZGFyZCBzdXNwZWN0czogYFVTQmAsIGBNQUM4MDIxMWAsIGBNVDc5MjVVYCwgYW5kIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSdtIG1pc3NpbmcgdGhhdCBjb3VsZCBiZSBpbXBhY3RpbmcgdGhpcy5cblxuTXkgbmV4dCBtb3ZlIGlzIHRvIGRpdmUgaW50byB0aGUgY29kZSBpdHNlbGYuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jYC4gSSdsbCBiZSBzY2FubmluZyB0aGlzIGZpbGUsIGxvb2tpbmcgZm9yIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB1c2luZyBgI2lmZGVmYCBhcm91bmQga2V5IGZ1bmN0aW9ucyBsaWtlIGBtdDc5MjV1X3N0b3BgIGFuZCBgbXQ3OTI1dV9wcm9iZWAuIFRoYXQnbGwgaGVscCBtZSB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGlzIGJlaW5nIGNvbXBpbGVkIGFuZCBpZiBhbnkgY29uZmlndXJhdGlvbnMgYXJlIGFmZmVjdGluZyB0aGUgYmVoYXZpb3IgSSdtIHNlZWluZy4gVG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSB2aWV3LCBJIG1heSBuZWVkIHRvIHJlYWQgdGhlIHdob2xlIGZpbGUgdG8gZ3Jhc3AgdGhlIGJpZ2dlciBwaWN0dXJlLCBvciBhdCBsZWFzdCBtZXRpY3Vsb3VzbHkgaW5zcGVjdCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUxMzIsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjE6MjUuODg4MzM4MzM3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MjUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHQvKiBDb3B5cmlnaHQgKEMpIDIwMjMgTWVkaWFUZWsgSW5jLiAqL1xcbiAgIDM6XFx0XFxuICAgNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuICAgNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAgNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvdXNiLmhcXHUwMDNlXFxuICAgNzpcXHRcXG4gICA4OlxcdCNpbmNsdWRlIFxcXCJtdDc5MjUuaFxcXCJcXG4gICA5OlxcdCNpbmNsdWRlIFxcXCJtY3UuaFxcXCJcXG4gIDEwOlxcdCNpbmNsdWRlIFxcXCJtYWMuaFxcXCJcXG4gIDExOlxcdFxcbiAgMTI6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG10NzkyNXVfZGV2aWNlX3RhYmxlW10gPSB7XFxuICAxMzpcXHRcXHR7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MGU4ZCwgMHg2NjM5LCAweGZmLCAweGZmLCAweGZmKSxcXG4gIDE0OlxcdFxcdFxcdC5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdClNVDc5MjVfRklSTVdBUkVfV00gfSxcXG4gIDE1OlxcdFxcdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgwZThkLCAweDc5MjUsIDB4ZmYsIDB4ZmYsIDB4ZmYpLFxcbiAgMTY6XFx0XFx0XFx0LmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KU1UNzkyNV9GSVJNV0FSRV9XTSB9LFxcbiAgMTc6XFx0XFx0LyogTmV0Z2VhciwgSW5jLiBBODUwMCAqL1xcbiAgMTg6XFx0XFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDA4NDYsIDB4OTA1MCwgMHhmZiwgMHhmZiwgMHhmZiksXFxuICAxOTpcXHRcXHRcXHQuZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3QpTVQ3OTI1X0ZJUk1XQVJFX1dNIH0sXFxuICAyMDpcXHRcXHQvKiBOZXRnZWFyLCBJbmMuIEE5MDAwICovXFxuICAyMTpcXHRcXHR7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MDg0NiwgMHg5MDcyLCAweGZmLCAweGZmLCAweGZmKSxcXG4gIDIyOlxcdFxcdFxcdC5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdClNVDc5MjVfRklSTVdBUkVfV00gfSxcXG4gIDIzOlxcdFxcdHsgfSxcXG4gIDI0OlxcdH07XFxuICAyNTpcXHRcXG4gIDI2OlxcdHN0YXRpYyBpbnRcXG4gIDI3OlxcdG10NzkyNXVfbWN1X3NlbmRfbWVzc2FnZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuICAyODpcXHRcXHRcXHRcXHQgaW50IGNtZCwgaW50ICpzZXEpXFxuICAyOTpcXHR7XFxuICAzMDpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcXG4gIDMxOlxcdFxcdHUzMiBwYWQsIGVwO1xcbiAgMzI6XFx0XFx0aW50IHJldDtcXG4gIDMzOlxcdFxcbiAgMzQ6XFx0XFx0cmV0ID0gbXQ3OTI1X21jdV9maWxsX21lc3NhZ2UobWRldiwgc2tiLCBjbWQsIHNlcSk7XFxuICAzNTpcXHRcXHRpZiAocmV0KVxcbiAgMzY6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gIDM3OlxcdFxcbiAgMzg6XFx0XFx0bWRldi1cXHUwMDNlbWN1LnRpbWVvdXQgPSAzICogSFo7XFxuICAzOTpcXHRcXG4gIDQwOlxcdFxcdGlmIChjbWQgIT0gTUNVX0NNRChGV19TQ0FUVEVSKSlcXG4gIDQxOlxcdFxcdFxcdGVwID0gTVRfRVBfT1VUX0lOQkFORF9DTUQ7XFxuICA0MjpcXHRcXHRlbHNlXFxuICA0MzpcXHRcXHRcXHRlcCA9IE1UX0VQX09VVF9BQ19CRTtcXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0bXQ3OTJ4X3NrYl9hZGRfdXNiX3NkaW9faGRyKGRldiwgc2tiLCAwKTtcXG4gIDQ2OlxcdFxcdHBhZCA9IHJvdW5kX3VwKHNrYi1cXHUwMDNlbGVuLCA0KSArIDQgLSBza2ItXFx1MDAzZWxlbjtcXG4gIDQ3OlxcdFxcdF9fc2tiX3B1dF96ZXJvKHNrYiwgcGFkKTtcXG4gIDQ4OlxcdFxcbiAgNDk6XFx0XFx0cmV0ID0gbXQ3NnVfYnVsa19tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3Niwgc2tiLVxcdTAwM2VkYXRhLCBza2ItXFx1MDAzZWxlbiwgTlVMTCxcXG4gIDUwOlxcdFxcdFxcdFxcdCAgICAgMTAwMCwgZXApO1xcbiAgNTE6XFx0XFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcbiAgNTI6XFx0XFxuICA1MzpcXHRcXHRyZXR1cm4gcmV0O1xcbiAgNTQ6XFx0fVxcbiAgNTU6XFx0XFxuICA1NjpcXHRzdGF0aWMgaW50IG10NzkyNXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4gIDU3OlxcdHtcXG4gIDU4OlxcdFxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3Nl9tY3Vfb3BzIG1jdV9vcHMgPSB7XFxuICA1OTpcXHRcXHRcXHQuaGVhZHJvb20gPSBNVF9TRElPX0hEUl9TSVpFICtcXG4gIDYwOlxcdFxcdFxcdFxcdCAgICBzaXplb2Yoc3RydWN0IG10NzZfY29ubmFjMl9tY3VfdHhkKSxcXG4gIDYxOlxcdFxcdFxcdC50YWlscm9vbSA9IE1UX1VTQl9UQUlMX1NJWkUsXFxuICA2MjpcXHRcXHRcXHQubWN1X3NrYl9zZW5kX21zZyA9IG10NzkyNXVfbWN1X3NlbmRfbWVzc2FnZSxcXG4gIDYzOlxcdFxcdFxcdC5tY3VfcGFyc2VfcmVzcG9uc2UgPSBtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlLFxcbiAgNjQ6XFx0XFx0fTtcXG4gIDY1OlxcdFxcdGludCByZXQ7XFxuICA2NjpcXHRcXG4gIDY3OlxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5tY3Vfb3BzID0gXFx1MDAyNm1jdV9vcHM7XFxuICA2ODpcXHRcXG4gIDY5OlxcdFxcdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XFxuICA3MDpcXHRcXHRyZXQgPSBtdDc5MjVfcnVuX2Zpcm13YXJlKGRldik7XFxuICA3MTpcXHRcXHRpZiAocmV0KVxcbiAgNzI6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gIDczOlxcdFxcbiAgNzQ6XFx0XFx0c2V0X2JpdChNVDc2X1NUQVRFX01DVV9SVU5OSU5HLCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG4gIDc1OlxcdFxcdG10NzZfY2xlYXIoZGV2LCBNVF9VRE1BX1RYX1FTRUwsIE1UX0ZXX0RMX0VOKTtcXG4gIDc2OlxcdFxcbiAgNzc6XFx0XFx0cmV0dXJuIDA7XFxuICA3ODpcXHR9XFxuICA3OTpcXHRcXG4gIDgwOlxcdHN0YXRpYyBpbnQgbXQ3OTI1dV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4gIDgxOlxcdHtcXG4gIDgyOlxcdFxcdGludCBlcnI7XFxuICA4MzpcXHRcXG4gIDg0OlxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LmJ1c19odW5nKSlcXG4gIDg1OlxcdFxcdFxcdHJldHVybiAwO1xcbiAgODY6XFx0XFxuICA4NzpcXHRcXHRtdDc5Mnh1X3Jlc2V0X29uX2J1c19lcnJvcihkZXYpO1xcbiAgODg6XFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYuYnVzX2h1bmcpKVxcbiAgODk6XFx0XFx0XFx0cmV0dXJuIDA7XFxuICA5MDpcXHRcXG4gIDkxOlxcdFxcdG10NzZfdHhxX3NjaGVkdWxlX2FsbChcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5KTtcXG4gIDkyOlxcdFxcdG10NzZfd29ya2VyX2Rpc2FibGUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni50eF93b3JrZXIpO1xcbiAgOTM6XFx0XFxuICA5NDpcXHRcXHRzZXRfYml0KE1UNzZfUkVTRVQsIFxcdTAwMjZkZXYtXFx1MDAzZW1waHkuc3RhdGUpO1xcbiAgOTU6XFx0XFx0c2V0X2JpdChNVDc2X01DVV9SRVNFVCwgXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5zdGF0ZSk7XFxuICA5NjpcXHRcXG4gIDk3OlxcdFxcdHdha2VfdXAoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tY3Uud2FpdCk7XFxuICA5ODpcXHRcXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tY3UucmVzX3EpO1xcbiAgOTk6XFx0XFxuIDEwMDpcXHRcXHRtdDc2dV9zdG9wX3J4KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMToyNS44ODg0OTM5MjdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODA4Njc0MjYwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgTVQ3OTI1IFVTQiBXaXJlbGVzcyBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIHRoZSBgRm9jdXNTeW1ib2xzYCwgYW5kIEkndmUgaWRlbnRpZmllZCBgbXQ3OTI1dV9zdG9wYCBhcyB0aGUgbmV3bHkgbW9kaWZpZWQgb3IgYWRkZWQgZnVuY3Rpb24uIEknbSBhbHNvIGluY2x1ZGluZyBgbXQ3OTI1dV9wcm9iZWAsIHNpbmNlIGl0IGNvbmZpZ3VyZXMgdGhlIGBvcHMtXHUwMDNlc3RvcGAgb3BlcmF0aW9uLCBhbmQgYG10NzkyNV9tbG9fcG1fd29ya2AsIHdoaWNoIGlzIHRoZSBkZWxheWVkIHdvcmsgYmVpbmcgY2FuY2VsbGVkLiBTZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBxdWlja2x5IHZlcmlmaWVkIHRoYXQgdGhlcmUgYXJlbid0IGFueSBvdGhlciBpbW1lZGlhdGVseSByZWxldmFudCBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzIHBhcnRpY3VsYXIgY2hhbmdlIHRoYXQgSSBoYXZlbid0IGFscmVhZHkgY29uc2lkZXJlZC5cblxuTmV4dCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIG5hdHVyZSBvZiBgbXQ3OTI1dV9zdG9wYC4gSXMgaXQgc3RhdGljIG9yIG5vdD8gR29vZCwgaXQncyBgc3RhdGljIHZvaWQgbXQ3OTI1dV9zdG9wKC4uLilgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuY2AuIFRoZSBrZXkgbm93IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGlubGluZWQgb3Igd2lsbCBhcHBlYXIgYXMgYSBzZXBhcmF0ZSBzeW1ib2wgaW4gdGhlIG9iamVjdCBmaWxlLiBUaGUgZmFjdCB0aGF0IGl0cyBhZGRyZXNzIGlzIHRha2VuIHdpdGhpbiBgdXNiLmNgIChgb3BzLVx1MDAzZXN0b3AgPSBtdDc5MjV1X3N0b3A7YCkgbWVhbnMgaXQgY2FuJ3QgYmUgY29tcGxldGVseSBpbmxpbmVkLiBUaGF0J3MgZ29vZDsgaXQgd2lsbCBiZSBhIGRpc3RpbmN0IHN5bWJvbCBpbiB0aGUgcmVzdWx0aW5nIG9iamVjdCBmaWxlLCBlaXRoZXIgYG10NzkyNXUub2Agb3Igdm1saW51eCwgYW5kIHRodXMsIHBvdGVudGlhbGx5IHZ1bG5lcmFibGUuIEknbGwgbWFrZSBhIG5vdGUgb2YgdGhpcy4gSSd2ZSBhbHNvIHJlY29uZmlybWVkIHRoYXQgYG10NzkyNXVfcHJvYmVgIGV4aXN0cyBhbmQgdGhhdCBgbXQ3OTI1X21sb19wbV93b3JrYCBpcyB0aGUgd29yayBmdW5jdGlvbiBmb3IgYGRldi1cdTAwM2VtbG9fcG1fd29ya2AuXG5cbkJlZm9yZSBJIG1vdmUgb24sIEkgd2FudCB0byBjb25maXJtIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIFdlIG5lZWQgYE1UNzkyNVVgLCBgTUFDODAyMTFgLCBgVVNCYCwgYW5kIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AgZW5hYmxlZCB0byByZWFjaCB0aGlzIGNvZGUuIEkgbmVlZCB0byBrZWVwIHRob3NlIGluIG1pbmQgYXMgSSBkZXZlbG9wIGZ1enppbmcgY29uZmlndXJhdGlvbnMuXG5cbk5vdywgZm9yIHRoZSByZWFzb25pbmc6IEJhc2ljYWxseSwgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBtdDc5MjV1X3N0b3BgIGludG8gdGhlIE1lZGlhVGVrIE1UNzkyNSBVU0Igd2lyZWxlc3MgZHJpdmVyIHRvIGhhbmRsZSB0aGUgY2FuY2VsbGF0aW9uIG9mIHRoZSBkZWxheWVkIE1MTyBQTSB3b3JrIChgbWxvX3BtX3dvcmtgKSBiZWZvcmUgZGV2aWNlIHN0b3BwYWdlLiBXaGF0J3MgZXNwZWNpYWxseSBpbnRlcmVzdGluZyBpcyB0aGF0IHRoZSBNVDc5MjUgVVNCIGRyaXZlciBpcyBhY3R1YWxseSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgd2l0aCBVU0IgZW11bGF0aW9uIG9yIHJhdy1nYWRnZXQgc2V0dXBzLiBUaGlzIGltcGxpZXMgdGhhdCB0aGVzZSBjb2RlIHBhdGhzICphcmUqIHBvdGVudGlhbGx5IGZ1enphYmxlLlxuXG5GaW5hbGx5LCBJJ2xsIHBhY2thZ2UgdGhpcyB1cCBpbnRvIHRoZSBgc2V0LXJlc3VsdHNgOlxuXG4qICAgYFdvcnRoRnV6emluZ2A6IFRydWUsIGFic29sdXRlbHkuXG4qICAgYEZvY3VzU3ltYm9sc2A6IEkndmUgY29uZmlybWVkIGBtdDc5MjV1X3N0b3BgLCBgbXQ3OTI1dV9wcm9iZWAsIGFuZCBgbXQ3OTI1X21sb19wbV93b3JrYC5cbiogICBgRW5hYmxlQ29uZmlnc2A6IGBNVDc5MjVVYCwgYE1BQzgwMjExYCwgYFVTQmAsIGFuZCBgV0xBTl9WRU5ET1JfTUVESUFURUtgLlxuKiAgIGBSZWFzb25pbmdgOiBDb25jaXNlIGV4cGxhbmF0aW9uIHByb3ZpZGVkLCB3aGljaCBJIHdpbGwgYWRkLlxuXG5JJ2xsIHByb2NlZWQgdG8gaW52b2tlIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3Mjg4LCJPdXRwdXRUb2tlbnMiOjE3MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjIxOjMzLjk3NTI0MDE2OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzEwMDI5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTI1VVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUVESUFURUtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjV1X3N0b3BcIixcbiAgICBcIm10NzkyNXVfcHJvYmVcIixcbiAgICBcIm10NzkyNV9tbG9fcG1fd29ya1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgbXQ3OTI1dV9zdG9wIHRvIGNhbmNlbCB0aGUgZGVsYXllZCBNTE8gUE0gd29yayAobWxvX3BtX3dvcmspIGR1cmluZyBzdG9wIG9wZXJhdGlvbnMgaW4gdGhlIE1lZGlhVGVrIE1UNzkyNSBVU0Igd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbiBhbmQgbWFjODAyMTEvbmw4MDIxMSBpbnRlcmZhY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1dV9zdG9wXCIsXG4gICAgXCJtdDc5MjV1X3Byb2JlXCIsXG4gICAgXCJtdDc5MjVfbWxvX3BtX3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIG10NzkyNXVfc3RvcCB0byBjYW5jZWwgdGhlIGRlbGF5ZWQgTUxPIFBNIHdvcmsgKG1sb19wbV93b3JrKSBkdXJpbmcgc3RvcCBvcGVyYXRpb25zIGluIHRoZSBNZWRpYVRlayBNVDc5MjUgVVNCIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gYW5kIG1hYzgwMjExL25sODAyMTEgaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjE6MzQuMTEyMzQ5Mzk3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzE5MzExOTA4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjIxOjM0LjExNDE2MjkzOFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEzMTkxMzAwNTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgZGVsYXllZCB3b3JrIGNhbmNlbGxhdGlvbiBkdXJpbmcgZGV2aWNlIHN0b3AgaW4gdGhlIG10NzkyNSBVU0IgZHJpdmVyIGJ5IGludHJvZHVjaW5nIGBtdDc5MjV1X3N0b3AoKWAsIHdoaWNoIGNhbGxzIGBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmRldi1cXHUwMDNlbWxvX3BtX3dvcmspYCBwcmlvciB0byBgbXQ3OTJ4dV9zdG9wKClgLiBUaGlzIGNoYW5nZSBmaXhlcyBjb25jdXJyZW5jeSBhbmQgbGlmZXRpbWUvdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHdoZW4gdGVhcmluZyBkb3duIHRoZSBkZXZpY2UuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgbW9kaWZ5LCBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBwYWRkaW5nLCBkYXRhIHN0cnVjdHVyZXMsIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gQ29uY3VycmVuY3kgYnVncyBhbmQgdXNlLWFmdGVyLWZyZWUgZXJyb3JzIGFyZSBwcm9wZXJseSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnZXJzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzN2U1MWY0ZDBjODE2MjI1NDdlY2JiNGJiOWU4Nzk1NjdhYzI3ZjFkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMjA6MjA6MzQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jXG5pbmRleCAxNzU3MDIzZWE3MGQ1Li5kYjZmZDAxNDQ0N2JkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jXG5AQCAtMTQ3LDYgKzE0NywxNSBAQCBzdGF0aWMgaW50IG10NzkyNXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBtdDc5MjV1X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcbit7XG4rXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gbXQ3OTJ4X2h3X2Rldihodyk7XG4rXG4rXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrKTtcbitcbitcdG10NzkyeHVfc3RvcChodywgc3VzcGVuZCk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgbXQ3OTI1dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG4gXHRcdFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbiB7XG5AQCAtMTkzLDcgKzIwMiw3IEBAIHN0YXRpYyBpbnQgbXQ3OTI1dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG4gXHRpZiAoIW9wcylcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRvcHMtXHUwMDNlc3RvcCA9IG10NzkyeHVfc3RvcDtcbitcdG9wcy1cdTAwM2VzdG9wID0gbXQ3OTI1dV9zdG9wO1xuIFxuIFx0bWRldiA9IG10NzZfYWxsb2NfZGV2aWNlKFx1MDAyNnVzYl9pbnRmLVx1MDAzZWRldiwgc2l6ZW9mKCpkZXYpLCBvcHMsIFx1MDAyNmRydl9vcHMpO1xuIFx0aWYgKCFtZGV2KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjE6MzQuMTE0MTY0MTk4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU3NjE0NjIxMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS01TQU4gQW5hbHlzaXMgb2YgTVQ3OTI1IFVTQiBEcml2ZXIgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY2hhbmdlIG5lY2Vzc2l0YXRlcyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCBpbnRyb2R1Y2VzIGFueSBtZW1vcnkgYWNjZXNzIHBhdHRlcm5zIHRoYXQgY291bGQgdHJpZ2dlciBtZW1vcnkgc2FmZXR5IGlzc3VlcyB0aGF0IEtNU0FOIGlzIGRlc2lnbmVkIHRvIGNhdGNoLlxuXG5GaXJzdCwgSSBzZWUgdGhlIGRpZmYuIEl0J3MgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuY2AgZmlsZS4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpbnZvbHZlcyBtb2RpZnlpbmcgdGhlIGBvcHMtXHUwMDNlc3RvcGAgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gdGhlIGBtdDc5MjV1X3Byb2JlYCBmdW5jdGlvbi4gUHJldmlvdXNseSwgaXQgcG9pbnRlZCB0byBgbXQ3OTJ4dV9zdG9wYCwgYnV0IG5vdyBpdCdzIGJlaW5nIHNldCB0byBgbXQ3OTI1dV9zdG9wYC4gU28sIHRoZSBgc3RvcGAgZnVuY3Rpb24gaGFzIGJlZW4gdXBkYXRlZC4gVGhlIGNoYW5nZSBpcyBzbWFsbCBhbmQgY29udGFpbmVkOyBob3dldmVyLCBpdCAqY291bGQqIGJlIHNpZ25pZmljYW50LlxuXG5JIG5lZWQgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHdoYXQgYG10NzkyNXVfc3RvcGAgYW5kIGBtdDc5Mnh1X3N0b3BgIGFyZSBkb2luZyBpbiB0ZXJtcyBvZiBtZW1vcnkgb3BlcmF0aW9ucy4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGNvZGUgb2YgYG10NzkyNXVfc3RvcGAuIFRoZSBpbXBvcnRhbnQgZnVuY3Rpb24gaW4gdGhlIHBhdGNoIGlzIGBtdDc5MjV1X3N0b3BgLlxuXG5JJ2xsIHF1aWNrbHkgbG9vayB1cCB0aGUgbmV3IGBtdDc5MjV1X3N0b3BgIGZ1bmN0aW9uIGRlZmluaXRpb24uIEl0IHNlZW1zIHRvIGNhbGwgYG10NzkyeHVfc3RvcGAgYWZ0ZXIgY2FuY2VsbGluZyB0aGUgYGRldi1cdTAwM2VtbG9fcG1fd29ya2AuIFRoaXMgY2FuY2VsIGNvdWxkIGJlIHNpZ25pZmljYW50IGJlY2F1c2Ugb2YgdGhlIGNvbmN1cnJlbmN5IGludHJvZHVjZWQuXG5cbk5vdywgbXkgZm9jdXMgc2hpZnRzIHRvIHVuZGVyc3RhbmRpbmcgaWYgYW55IG5ldyBtZW1vcnkgYWNjZXNzIHBhdHRlcm5zLCBwYXJ0aWN1bGFybHkgaW4gcmVsYXRpb24gdG8gY29uY3VycmVudCBhY2Nlc3Mgb3IgcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkgYXJlIGludHJvZHVjZWQgYnkgdGhpcyB1cGRhdGVkIGBzdG9wYCBmdW5jdGlvbiwgb3IgdGhlIGNoYW5nZXMgYXJvdW5kIHRoZSB3b3JrIHF1ZXVlLiBEb2VzIGNhbmNlbGxpbmcgYW5kIGNhbGxpbmcgZnVuY3Rpb25zIGluIHRoaXMgb3JkZXIgYWx0ZXIgdGhlIG1lbW9yeSBsYW5kc2NhcGU/IFRoZSB1c2Ugb2YgYGNhbmNlbF9kZWxheWVkX3dvcmtfc3luY2AgZG9lcyBpbmRpY2F0ZSB0aGF0IHN5bmNocm9uaXphdGlvbiBpcyB0YWtpbmcgcGxhY2UsIHNvIG5vdyBteSBjb25jZXJuIGlzIHdoZXRoZXIgYSBtZW1vcnkgcmFjZSBpcyBiZWluZyBpbnRyb2R1Y2VkLlxuXG5JJ2xsIHVzZSBteSBrbm93bGVkZ2UgYW5kIHRvb2xzIHRvIHF1aWNrbHkgdW5kZXJzdGFuZDpcblxuMS4gIEhvdyBgbXQ3OTI1dV9zdG9wYCBpbnRlcmFjdHMgd2l0aCB0aGUgYGRldmAgc3RydWN0LCBgbWxvX3BtX3dvcmtgIGFuZCBob3cgdGhlc2UgYXJlIG1hbmFnZWQuXG4yLiAgSG93IHRoZSBvcmRlciBvZiBjYWxsaW5nIGBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmNgIGFuZCBgbXQ3OTJ4dV9zdG9wYCBhZmZlY3RzIG1lbW9yeSBhY2Nlc3MsIGFuZCBpZiB0aGlzIGNvdWxkIGNyZWF0ZSBhIHJhY2UgY29uZGl0aW9uLlxuMy4gIEFueSBvdGhlciByZWxldmFudCBkYXRhIHRoYXQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIG1lbW9yeSB1bnNhZmV0eS5cblxuSWYgSSBkb24ndCBzZWUgYW55dGhpbmcgaW1tZWRpYXRlbHkgZ2xhcmluZywgSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29udGV4dHMgYW5kIHJlbGF0ZWQgZmlsZXMgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBUaGlzIGluaXRpYWwgcmV2aWV3IGlzIGp1c3QgdGhlIGZpcnN0IHBhc3MgYmVmb3JlIHBvdGVudGlhbGx5IHJlcXVlc3RpbmcgYSBmdWxsIEtNU0FOIHJ1biBvciBtYXJraW5nIGl0IGBOZWVkc0tNU0FOPXRydWVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzI1LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjE6MzkuODc1NjMwNVoiLCJTZXEiOjI4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDIxNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQwLFxuICBcIkxpbmVDb3VudFwiOiA3MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTQwOlxcdFxcbiAxNDE6XFx0XFx0ZXJyID0gX19tdDc5MjVfc3RhcnQoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG4gMTQyOlxcdG91dDpcXG4gMTQzOlxcdFxcdGNsZWFyX2JpdChNVDc2X1JFU0VULCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG4gMTQ0OlxcdFxcbiAxNDU6XFx0XFx0bXQ3Nl93b3JrZXJfZW5hYmxlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYudHhfd29ya2VyKTtcXG4gMTQ2OlxcdFxcbiAxNDc6XFx0XFx0cmV0dXJuIGVycjtcXG4gMTQ4OlxcdH1cXG4gMTQ5OlxcdFxcbiAxNTA6XFx0c3RhdGljIHZvaWQgbXQ3OTI1dV9zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIHN1c3BlbmQpXFxuIDE1MTpcXHR7XFxuIDE1MjpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gbXQ3OTJ4X2h3X2Rldihodyk7XFxuIDE1MzpcXHRcXG4gMTU0OlxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2VtbG9fcG1fd29yayk7XFxuIDE1NTpcXHRcXG4gMTU2OlxcdFxcdG10NzkyeHVfc3RvcChodywgc3VzcGVuZCk7XFxuIDE1NzpcXHR9XFxuIDE1ODpcXHRcXG4gMTU5OlxcdHN0YXRpYyBpbnQgbXQ3OTI1dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXFxuIDE2MDpcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbiAxNjE6XFx0e1xcbiAxNjI6XFx0XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc2X2RyaXZlcl9vcHMgZHJ2X29wcyA9IHtcXG4gMTYzOlxcdFxcdFxcdC50eHdpX3NpemUgPSBNVF9TRElPX1RYRF9TSVpFLFxcbiAxNjQ6XFx0XFx0XFx0LmRydl9mbGFncyA9IE1UX0RSVl9SWF9ETUFfSERSIHwgTVRfRFJWX0hXX01HTVRfVFhRIHxcXG4gMTY1OlxcdFxcdFxcdFxcdCAgICAgTVRfRFJWX0FNU0RVX09GRkxPQUQsXFxuIDE2NjpcXHRcXHRcXHQuc3VydmV5X2ZsYWdzID0gU1VSVkVZX0lORk9fVElNRV9UWCB8XFxuIDE2NzpcXHRcXHRcXHRcXHRcXHRTVVJWRVlfSU5GT19USU1FX1JYIHxcXG4gMTY4OlxcdFxcdFxcdFxcdFxcdFNVUlZFWV9JTkZPX1RJTUVfQlNTX1JYLFxcbiAxNjk6XFx0XFx0XFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxcbiAxNzA6XFx0XFx0XFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXFxuIDE3MTpcXHRcXHRcXHQudHhfc3RhdHVzX2RhdGEgPSBtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEsXFxuIDE3MjpcXHRcXHRcXHQucnhfc2tiID0gbXQ3OTI1X3F1ZXVlX3J4X3NrYixcXG4gMTczOlxcdFxcdFxcdC5yeF9jaGVjayA9IG10NzkyNV9yeF9jaGVjayxcXG4gMTc0OlxcdFxcdFxcdC5zdGFfYWRkID0gbXQ3OTI1X21hY19zdGFfYWRkLFxcbiAxNzU6XFx0XFx0XFx0LnN0YV9ldmVudCA9IG10NzkyNV9tYWNfc3RhX2V2ZW50LFxcbiAxNzY6XFx0XFx0XFx0LnN0YV9yZW1vdmUgPSBtdDc5MjVfbWFjX3N0YV9yZW1vdmUsXFxuIDE3NzpcXHRcXHRcXHQudXBkYXRlX3N1cnZleSA9IG10NzkyeF91cGRhdGVfY2hhbm5lbCxcXG4gMTc4OlxcdFxcdH07XFxuIDE3OTpcXHRcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkyeF9oaWZfb3BzIGhpZl9vcHMgPSB7XFxuIDE4MDpcXHRcXHRcXHQubWN1X2luaXQgPSBtdDc5MjV1X21jdV9pbml0LFxcbiAxODE6XFx0XFx0XFx0LmluaXRfcmVzZXQgPSBtdDc5Mnh1X2luaXRfcmVzZXQsXFxuIDE4MjpcXHRcXHRcXHQucmVzZXQgPSBtdDc5MjV1X21hY19yZXNldCxcXG4gMTgzOlxcdFxcdH07XFxuIDE4NDpcXHRcXHRzdGF0aWMgc3RydWN0IG10NzZfYnVzX29wcyBidXNfb3BzID0ge1xcbiAxODU6XFx0XFx0XFx0LnJyID0gbXQ3OTJ4dV9ycixcXG4gMTg2OlxcdFxcdFxcdC53ciA9IG10NzkyeHVfd3IsXFxuIDE4NzpcXHRcXHRcXHQucm13ID0gbXQ3OTJ4dV9ybXcsXFxuIDE4ODpcXHRcXHRcXHQucmVhZF9jb3B5ID0gbXQ3NnVfcmVhZF9jb3B5LFxcbiAxODk6XFx0XFx0XFx0LndyaXRlX2NvcHkgPSBtdDc5Mnh1X2NvcHksXFxuIDE5MDpcXHRcXHRcXHQudHlwZSA9IE1UNzZfQlVTX1VTQixcXG4gMTkxOlxcdFxcdH07XFxuIDE5MjpcXHRcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYodXNiX2ludGYpO1xcbiAxOTM6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9vcHMgKm9wcztcXG4gMTk0OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xcbiAxOTU6XFx0XFx0c3RydWN0IG10NzkyeF9kZXYgKmRldjtcXG4gMTk2OlxcdFxcdHN0cnVjdCBtdDc2X2RldiAqbWRldjtcXG4gMTk3OlxcdFxcdHU4IGZlYXR1cmVzO1xcbiAxOTg6XFx0XFx0aW50IHJldDtcXG4gMTk5OlxcdFxcbiAyMDA6XFx0XFx0b3BzID0gbXQ3OTJ4X2dldF9tYWM4MDIxMV9vcHMoXFx1MDAyNnVzYl9pbnRmLVxcdTAwM2VkZXYsIFxcdTAwMjZtdDc5MjVfb3BzLFxcbiAyMDE6XFx0XFx0XFx0XFx0XFx0ICAgICAgKHZvaWQgKilpZC1cXHUwMDNlZHJpdmVyX2luZm8sIFxcdTAwMjZmZWF0dXJlcyk7XFxuIDIwMjpcXHRcXHRpZiAoIW9wcylcXG4gMjAzOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAyMDQ6XFx0XFxuIDIwNTpcXHRcXHRvcHMtXFx1MDAzZXN0b3AgPSBtdDc5MjV1X3N0b3A7XFxuIDIwNjpcXHRcXG4gMjA3OlxcdFxcdG1kZXYgPSBtdDc2X2FsbG9jX2RldmljZShcXHUwMDI2dXNiX2ludGYtXFx1MDAzZWRldiwgc2l6ZW9mKCpkZXYpLCBvcHMsIFxcdTAwMjZkcnZfb3BzKTtcXG4gMjA4OlxcdFxcdGlmICghbWRldilcXG4gMjA5OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMTozOS44NzU3NzU5MVoiLCJTZXEiOjI5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTk4NzAwMDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgbWxvX3BtX3dvcmtgIFBhdGNoKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBwYXRjaCBhbmQgd2hhdCdzIGRyaXZpbmcgdGhlIGNoYW5nZS4gVGhlIGZpcnN0IHRoaW5nIHRoYXQgY29tZXMgdG8gbWluZCBpcyB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCBgbWxvX3BtX3dvcmtgICppcyouIEkgbWVhbiwgd2l0aG91dCBrbm93aW5nIGl0cyBwdXJwb3NlLCBkaWdnaW5nIGludG8gdGhlIHBhdGNoIGl0c2VsZiBpcyBnb2luZyB0byBiZSBhIGJpdCBsaWtlIHRyeWluZyB0byBzb2x2ZSBhIHB1enpsZSB3aXRoIGhhbGYgdGhlIHBpZWNlcyBtaXNzaW5nLlxuXG5UaGVyZWZvcmUsIG15IGltbWVkaWF0ZSBwbGFuIGlzIHRvIGRlbHZlIGludG8gdGhlIGNvZGUuIEknbGwgbGF1bmNoIGEgYGdyZXBgIG9wZXJhdGlvbiBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBNZWRpYXRlayB3aXJlbGVzcyBkcml2ZXIgZGlyZWN0b3J5IChgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9gKS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHByZXR0eSB0YXJnZXRlZCBsaXN0IG9mIHdoZXJlIGBtbG9fcG1fd29ya2AgaXMgZGVmaW5lZCwgdXNlZCwgYW5kLCBob3BlZnVsbHksIGRvY3VtZW50ZWQuIEhvcGVmdWxseSwgaXQgaXMgaW4gYSBjb21tZW50LCBhbmQgdGhhdCB3aWxsIGdpdmUgbWUgbXkgZmlyc3QgY2x1ZXMuIEZyb20gdGhlcmUsIEkgY2FuIHN0YXJ0IHBpZWNpbmcgdG9nZXRoZXIgdGhlIGJyb2FkZXIgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc5MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjE6NDEuODc0NDc4MzU0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDcyMTQyOTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWxvX3BtX3dvcmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jPTI0Mz1pbnQgbXQ3OTI1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI1My1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VwbS5wc193b3JrLCBtdDc5MnhfcG1fcG93ZXJfc2F2ZV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjU0OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrLCBtdDc5MjVfbWxvX3BtX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNTUtXFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBtLndha2Vfd29yaywgbXQ3OTJ4X3BtX3dha2Vfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNTExPXZvaWQgbXQ3OTI1X21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE1MjctXFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZwbS1cXHUwMDNlcHNfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTUyODpcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmRldi1cXHUwMDNlbWxvX3BtX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE1MjktXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2cG0tXFx1MDAzZXdha2Vfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MTUxOD1tdDc5MjVfbWxvX3BtX2l0ZXIodm9pZCAqcHJpdiwgdTggKm1hYywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xNTM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoxNTM4OnZvaWQgbXQ3OTI1X21sb19wbV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTUzOS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE1NDAtXFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbXQ3OTJ4X2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTU0MTpcXHRcXHRcXHRcXHRcXHQgICAgICBtbG9fcG1fd29yay53b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTU0Mi1cXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IG10NzZfaHcoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0xNzA0PXN0YXRpYyBpbnQgbXQ3OTI1X3N1c3BlbmQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTcxMy1cXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmRldi1cXHUwMDNlcG0ucHNfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE3MTQ6XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTcxNS1cXHRtdDc2X2Nvbm5hY19mcmVlX3BlbmRpbmdfdHhfc2ticyhcXHUwMDI2ZGV2LVxcdTAwM2VwbSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MjE1MD1zdGF0aWMgdm9pZCBtdDc5MjVfbGlua19pbmZvX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjE5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjE5ODpcXHRcXHRpZWVlODAyMTFfcXVldWVfZGVsYXllZF93b3JrKGh3LCBcXHUwMDI2ZGV2LVxcdTAwM2VtbG9fcG1fd29yaywgNSAqIEhaKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjE5OS1cXHRcXHRtdmlmLVxcdTAwM2VtbG9fcG1fc3RhdGUgPSBNVDc5MnhfTUxPX0NIQU5HRURfUFM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MjcwNz1zdGF0aWMgdm9pZCBtdDc5MjVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI3MTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjI3MTE6XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjcxMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTMzMD1pbnQgbXQ3OTI1X21jdV91bmlfcnhfYmEoc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMzMi1cXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgYm9vbCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjMzMzp2b2lkIG10NzkyNV9tbG9fcG1fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMzNC12b2lkIG10NzkyNV9zY2FuX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTQxPXN0YXRpYyB2b2lkIG10NzkyNWVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTU1LVxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2cG0tXFx1MDAzZXBzX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjU2OlxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2VtbG9fcG1fd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNTctXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2cG0tXFx1MDAzZXdha2Vfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYz03MzU9c3RhdGljIGludCBtdDc5MjVfcGNpX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2aWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNzQ2LVxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2cG0tXFx1MDAzZXBzX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjc0NzpcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmRldi1cXHUwMDNlbWxvX3BtX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTc0OC1cXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZwbS1cXHUwMDNld2FrZV93b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTE1MD1zdGF0aWMgdm9pZCBtdDc5MjV1X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNTQ6XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0yNzk9c3RhdGljIGludCBtdDc5MjV1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI4Ny1cXHRmbHVzaF93b3JrKFxcdTAwMjZkZXYtXFx1MDAzZXJlc2V0X3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjI4ODpcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmRldi1cXHUwMDNlbWxvX3BtX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI4OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg9MjkzPXN0cnVjdCBtdDc5MnhfZGV2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMzMxLVxcdHN0cnVjdCB3b3JrX3N0cnVjdCBpcHY2X25zX3dvcms7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDozMzI6XFx0c3RydWN0IGRlbGF5ZWRfd29yayBtbG9fcG1fd29yaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTMzMy1cXHQvKiBJUHY2IGFkZHJlc3NlcyBmb3IgV29XTEFOICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjIxOjQyLjIyMTY5NzU0OVoiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MDgzNzQzOTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1UNzkyNVUgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGFkZHJlc3NpbmcgYSBwcmV0dHkgY2xhc3NpYyBjb25jdXJyZW5jeSBpc3N1ZSBpbiB0aGUgTVQ3OTI1VSBVU0IgZHJpdmVyLiBTcGVjaWZpY2FsbHksIHdlJ3JlIHRyeWluZyB0byBwcmV2ZW50IGEgcmFjZSBjb25kaXRpb24gb3IgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8gd2hlbiBzdG9wcGluZyB0aGUgZGV2aWNlLiBUaGUgY29yZSBwcm9ibGVtIHNlZW1zIHRvIGJlIHRoZSB0aW1pbmcgb2YgdGhlIGBkZXYtXHUwMDNlbWxvX3BtX3dvcmtgIHdvcmtxdWV1ZSBhbmQgdGhlIGRldmljZSBzaHV0ZG93biBzZXF1ZW5jZS4gVGhlIGFkZGl0aW9uIG9mIGBtdDc5MjV1X3N0b3BgIGlzIGRlc2lnbmVkIHRvIHN5bmNocm9ub3VzbHkgY2FuY2VsIHRoYXQgd29yayBiZWZvcmUgY2FsbGluZyB0aGUgZXhpc3RpbmcgYG10NzkyeHVfc3RvcGAsIHdoaWNoIGlzIHRoZSBhY3R1YWwgZGV2aWNlIHN0b3AgZnVuY3Rpb24uXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgZml4IGlzIGNvcnJlY3QgYmVjYXVzZSwgYXQgdGhlIGNvcmUsIGl0IGFwcGVhcnMgdG8gcHJvcGVybHkgaGFuZGxlIHRoZSB3b3JrcXVldWUsIGVuc3VyaW5nIHRoYXQgaXQgaXMgc3RvcHBlZCBiZWZvcmUgZnVydGhlciBkZXZpY2Ugc2h1dGRvd24gcHJvY2VkdXJlcyBjb250aW51ZS4gSSBhbSByZWFzc3VyZWQgdGhhdCB3ZSBhcmUgbm90IGF0dGVtcHRpbmcgYW55IGNvbXBsaWNhdGVkIGNoYW5nZXMgb2YgZGV2aWNlIGluaXRpYWxpemF0aW9uIG9yIHNlbmRpbmcga2VybmVsIGRhdGEgdG8gdXNlciBzcGFjZS5cblxuTm93LCBsZXQncyBkbyBhIGRlZXAgZGl2ZSBmb3IgdGhlIHBvdGVudGlhbCByaXNrcy4gSSBkbyBub3Qgc2VlIGFueSBhcHBhcmVudCByaXNrcyBvciBuZWVkIGZvciBhZGRpdGlvbmFsIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikgY2hlY2tzLiBIZXJlJ3Mgd2h5OlxuXG4xLiAgKipObyBVc2VyLVNwYWNlIERhdGEgRXhwb3N1cmU6KiogVGhlIHBhdGNoIGRvZXNuJ3QgaW52b2x2ZSBhbnkgY2hhbmdlcyB0byBrZXJuZWwgc3RydWN0dXJlcyBiZWluZyBwYXNzZWQgdG8gdXNlciBzcGFjZS5cbjIuICAqKk5vIFVuaW5pdGlhbGl6ZWQgTWVtb3J5IElzc3VlczoqKiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyByZWFkIG9yIHVzZWQgZm9yIGJyYW5jaGluZy5cbjMuICAqKk5vIEluaXRpYWxpemF0aW9uIENvbmNlcm5zOioqIFRoZSBwYXRjaCBkb2Vzbid0IGFsdGVyIGFueSBhbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLlxuNC4gICoqTm8gQm91bmRzIFZpb2xhdGlvbnM6KiogVGhlcmUgYXJlIG5vIGxlbmd0aCBvciBib3VuZHMgY2hlY2sgY2hhbmdlcywgd2hpY2ggbWlnaHQgaW50cm9kdWNlIHZ1bG5lcmFiaWxpdGllcy5cblxuVGhpcyBmaXggZm9jdXNlcyBvbiBzeW5jaHJvbml6YXRpb246IGBtdDc5MjV1X3N0b3AoKWAgY2FsbHMgYGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZkZXYtXHUwMDNlbWxvX3BtX3dvcmspYCBhbmQgdGhlbiBgbXQ3OTJ4dV9zdG9wKGh3LCBzdXNwZW5kKWAsIGFuZCB0aGUgcmVsZXZhbnQgYG9wcy1cdTAwM2VzdG9wYCBwb2ludGVyIGlzIHVwZGF0ZWQuXG5cblRoaXMgaXMgYSBnb29kLCB0YXJnZXRlZCBzeW5jaHJvbml6YXRpb24gZml4LCB0aGUgcG90ZW50aWFsIGZvciBVc2UtQWZ0ZXItRnJlZSAoVUFGKSBhbmQgY29uY3VycmVuY3kgaXNzdWVzIGFyZSBtb25pdG9yZWQgYW5kIGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBkZWJ1Z2dlcnMuIEtNU0FOIGlzIHNwZWNpZmljYWxseSBmb3IgZGV0ZWN0aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBTbywgSSBzZWUgbm8gbmVlZCBmb3IgS01TQU4gdG8gYmUgZW5hYmxlZCBpbiB0aGlzIGNhc2UuXG5cblRoZXJlZm9yZSwgYE5lZWRzS01TQU4gPSBmYWxzZWAuIEkgYW0gcmVhZHkgdG8gaW52b2tlIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NzEsIk91dHB1dFRva2VucyI6MTcwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjIxOjQ3LjMwNTQ0MzQ0NVoiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGRlbGF5ZWQgd29yayBjYW5jZWxsYXRpb24gZHVyaW5nIGRldmljZSBzdG9wIGluIHRoZSBtdDc5MjUgVVNCIGRyaXZlciBieSBpbnRyb2R1Y2luZyBgbXQ3OTI1dV9zdG9wKClgLCB3aGljaCBjYWxscyBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrKWAgcHJpb3IgdG8gYG10NzkyeHVfc3RvcCgpYC4gVGhpcyBjaGFuZ2UgZml4ZXMgY29uY3VycmVuY3kgYW5kIGxpZmV0aW1lL3VzZS1hZnRlci1mcmVlIGlzc3VlcyB3aGVuIHRlYXJpbmcgZG93biB0aGUgZGV2aWNlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIG1vZGlmeSwgb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgcGFkZGluZywgZGF0YSBzdHJ1Y3R1cmVzLCBvciBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIENvbmN1cnJlbmN5IGJ1Z3MgYW5kIHVzZS1hZnRlci1mcmVlIGVycm9ycyBhcmUgcHJvcGVybHkgY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2Vycywgc28gYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGRlbGF5ZWQgd29yayBjYW5jZWxsYXRpb24gZHVyaW5nIGRldmljZSBzdG9wIGluIHRoZSBtdDc5MjUgVVNCIGRyaXZlciBieSBpbnRyb2R1Y2luZyBgbXQ3OTI1dV9zdG9wKClgLCB3aGljaCBjYWxscyBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrKWAgcHJpb3IgdG8gYG10NzkyeHVfc3RvcCgpYC4gVGhpcyBjaGFuZ2UgZml4ZXMgY29uY3VycmVuY3kgYW5kIGxpZmV0aW1lL3VzZS1hZnRlci1mcmVlIGlzc3VlcyB3aGVuIHRlYXJpbmcgZG93biB0aGUgZGV2aWNlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIG1vZGlmeSwgb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgcGFkZGluZywgZGF0YSBzdHJ1Y3R1cmVzLCBvciBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIENvbmN1cnJlbmN5IGJ1Z3MgYW5kIHVzZS1hZnRlci1mcmVlIGVycm9ycyBhcmUgcHJvcGVybHkgY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2Vycywgc28gYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow2shn7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-10 19:59:28 +0000 UTC FinishedAt: 2026-09-10 20:21:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MAC80211", "USB", "WLAN_VENDOR_MEDIATEK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7925U", "MAC80211", "USB", "WLAN_VENDOR_MEDIATEK" ], "series_id": "3600bd7f-acf2-4926-a8fc-25e4bcf263d1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7925u_stop", "mt7925u_probe", "mt7925_mlo_pm_work" ], "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+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01FRElBVEVLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1dV9zdG9wJiMzNDssCiAgICAmIzM0O210NzkyNXVfcHJvYmUmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21sb19wbV93b3JrJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGRlbGF5ZWQgd29yayBjYW5jZWxsYXRpb24gZHVyaW5nIGRldmljZSBzdG9wIGluIHRoZSBtdDc5MjUgVVNCIGRyaXZlciBieSBpbnRyb2R1Y2luZyBgbXQ3OTI1dV9zdG9wKClgLCB3aGljaCBjYWxscyBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yaylgIHByaW9yIHRvIGBtdDc5Mnh1X3N0b3AoKWAuIFRoaXMgY2hhbmdlIGZpeGVzIGNvbmN1cnJlbmN5IGFuZCBsaWZldGltZS91c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgd2hlbiB0ZWFyaW5nIGRvd24gdGhlIGRldmljZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCBtb2RpZnksIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHBhZGRpbmcsIGRhdGEgc3RydWN0dXJlcywgb3IgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLiBDb25jdXJyZW5jeSBidWdzIGFuZCB1c2UtYWZ0ZXItZnJlZSBlcnJvcnMgYXJlIHByb3Blcmx5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dlcnMsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIG10NzkyNXVfc3RvcCB0byBjYW5jZWwgdGhlIGRlbGF5ZWQgTUxPIFBNIHdvcmsgKG1sb19wbV93b3JrKSBkdXJpbmcgc3RvcCBvcGVyYXRpb25zIGluIHRoZSBNZWRpYVRlayBNVDc5MjUgVVNCIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gYW5kIG1hYzgwMjExL25sODAyMTEgaW50ZXJmYWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDM3ZTUxZjRkMGM4MTYyMjU0N2VjYmI0YmI5ZTg3OTU2N2FjMjdmMWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAyMDoyMDozNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jXG5pbmRleCAxNzU3MDIzZWE3MGQ1Li5kYjZmZDAxNDQ0N2JkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jXG5AQCAtMTQ3LDYgJiM0MzsxNDcsMTUgQEAgc3RhdGljIGludCBtdDc5MjV1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIG10NzkyNXVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IG10NzkyeF9od19kZXYoaHcpO1xuJiM0MztcbiYjNDM7XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrKTtcbiYjNDM7XG4mIzQzO1x0bXQ3OTJ4dV9zdG9wKGh3LCBzdXNwZW5kKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuIFx0XHRcdCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4ge1xuQEAgLTE5Myw3ICYjNDM7MjAyLDcgQEAgc3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcbiBcdGlmICghb3BzKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1cdG9wcy1cdTAwM2VzdG9wID0gbXQ3OTJ4dV9zdG9wO1xuJiM0MztcdG9wcy1cdTAwM2VzdG9wID0gbXQ3OTI1dV9zdG9wO1xuIFxuIFx0bWRldiA9IG10NzZfYWxsb2NfZGV2aWNlKFx1MDAyNnVzYl9pbnRmLVx1MDAzZWRldiwgc2l6ZW9mKCpkZXYpLCBvcHMsIFx1MDAyNmRydl9vcHMpO1xuIFx0aWYgKCFtZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyNVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O1dMQU5fVkVORE9SX01FRElBVEVLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXQ3OTI1dV9zdG9wJiMzNDssCiAgICAmIzM0O210NzkyNXVfcHJvYmUmIzM0OywKICAgICYjMzQ7bXQ3OTI1X21sb19wbV93b3JrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgbXQ3OTI1dV9zdG9wIHRvIGNhbmNlbCB0aGUgZGVsYXllZCBNTE8gUE0gd29yayAobWxvX3BtX3dvcmspIGR1cmluZyBzdG9wIG9wZXJhdGlvbnMgaW4gdGhlIE1lZGlhVGVrIE1UNzkyNSBVU0Igd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbiBhbmQgbWFjODAyMTEvbmw4MDIxMSBpbnRlcmZhY2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzdlNTFmNGQwYzgxNjIyNTQ3ZWNiYjRiYjllODc5NTY3YWMyN2YxZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDIwOjIwOjM0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYwppbmRleCAxNzU3MDIzZWE3MGQ1Li5kYjZmZDAxNDQ0N2JkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYwpAQCAtMTQ3LDYgJiM0MzsxNDcsMTUgQEAgc3RhdGljIGludCBtdDc5MjV1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KQogCXJldHVybiBlcnI7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBtdDc5MjV1X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBtdDc5MnhfaHdfZGV2KGh3KTsKJiM0MzsKJiM0MzsJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7ZGV2LSZndDttbG9fcG1fd29yayk7CiYjNDM7CiYjNDM7CW10NzkyeHVfc3RvcChodywgc3VzcGVuZCk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZiwKIAkJCSBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpCiB7CkBAIC0xOTMsNyAmIzQzOzIwMiw3IEBAIHN0YXRpYyBpbnQgbXQ3OTI1dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsCiAJaWYgKCFvcHMpCiAJCXJldHVybiAtRU5PTUVNOwogCi0Jb3BzLSZndDtzdG9wID0gbXQ3OTJ4dV9zdG9wOwomIzQzOwlvcHMtJmd0O3N0b3AgPSBtdDc5MjV1X3N0b3A7CiAKIAltZGV2ID0gbXQ3Nl9hbGxvY19kZXZpY2UoJmFtcDt1c2JfaW50Zi0mZ3Q7ZGV2LCBzaXplb2YoKmRldiksIG9wcywgJmFtcDtkcnZfb3BzKTsKIAlpZiAoIW1kZXYpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTMKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA0MTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgVVNCIERyaXZlciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBiZWVuIG1vZGlmaWVkIGluIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGNoYW5nZSB0byB0aGUgYG10NzkyNWAgVVNCIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNgIGZpbGUuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYSBuZXcgZnVuY3Rpb24sIGBtdDc5MjV1X3N0b3BgLCB3aGljaCBpcyBub3cgYXNzaWduZWQgdG8gdGhlIGBvcHMtJmd0O3N0b3BgIHBvaW50ZXIgaW4gdGhlIGRyaXZlciYjMzk7cyBvcGVyYXRpb24gc3RydWN0dXJlLiBJbnNpZGUgYG10NzkyNXVfc3RvcGAsIHdlIHNlZSBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jYCBhbmQgYSBjYWxsIHRvIGBtdDc5Mnh1X3N0b3BgLiBUaGlzIHJlcGxhY2VzIHRoZSBwcmV2aW91cyBhc3NpZ25tZW50IG9mIGBvcHMtJmd0O3N0b3AgPSBtdDc5Mnh1X3N0b3BgIGluIHRoZSBwcm9iZSBmdW5jdGlvbiBgbXQ3OTI1dV9wcm9iZWAuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGNhbiB3ZSBmdXp6IHRoaXMgZHJpdmVyIGVmZmVjdGl2ZWx5IHVzaW5nIHN0YW5kYXJkIGZ1enppbmcgdGVjaG5pcXVlcz8gUGFydGljdWxhcmx5LCBjYW4gd2UgcmVhY2ggaXQgdmlhIFVTQiBlbXVsYXRpb24/IFRoaXMgaXMga2V5LiBGb3J0dW5hdGVseSwgSSBrbm93IHN5emthbGxlciBoYXMgcHJldHR5IHJvYnVzdCBzdXBwb3J0IGZvciBVU0IgZnV6emluZywgaGFuZGxpbmcgcmF3LWdhZGdldCwgdmhjaSwgYW5kIGR1bW15X2hjZC4gSXQgY2FuIHByb2JlIFVTQiBkcml2ZXJzIHdpdGggbWF0Y2hpbmcgYHVzYl9kZXZpY2VfaWRgIGVudHJpZXMgdXNpbmcgYHN5el91c2JfY29ubmVjdGAgb3IgdGhyb3VnaCB0aGUgVVNCIGVtdWxhdGlvbiBpdHNlbGYuIFNvLCBhcmUgd2UgdGFsa2luZyBhYm91dCBhIGZ1enphYmxlIFVTQiBkcml2ZXIgaGVyZT8gVGhlIGFuc3dlciBpcyBwcm9iYWJseSB5ZXMgZ2l2ZW4gd2hhdCBJIGtub3cgYWJvdXQgZnV6emluZyBtZXRob2RvbG9naWVzLgoKTGV0JiMzOTtzIGNvbmZpcm06IEFjY29yZGluZyB0byBTZWN0aW9uIDIgJmFtcDsgMyBvZiB0aGUgc3l6a2FsbGVyIGRvY3VtZW50YXRpb24sIHRoZSBmb2N1cyBpcyBvbiBkcml2ZXJzIHRoYXQgYXJlIHJlYWNoYWJsZSB2aWEgdmlydHVhbCBidXNlcywgaW5jbHVkaW5nIFVTQiBnYWRnZXQuIEdpdmVuIHRoZSBkb2N1bWVudGF0aW9uIHN0YXRlcyB0aGF0ICYjMzQ7VVNCIHdpcmVsZXNzIGRyaXZlcnMgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGVtdWxhdGlvbiAoc3l6a2FsbGVyIGhhcyBmdWxsIFVTQiBkZXZpY2UgZnV6emluZyAvIHJhdyBnYWRnZXQgc3VwcG9ydCkmIzM0OywgaXQmIzM5O3MgbG9va2luZyBwcm9taXNpbmchCgpOZXh0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGtlcm5lbCBjb25maWd1cmF0aW9ucyBhcmUgbmVjZXNzYXJ5IGZvciB0aGUgYG10NzkyNWAgVVNCIGRyaXZlci4gVGltZSB0byBkaWcgaW50byB0aGUgYEtjb25maWdgIGZpbGVzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9gIHRvIGZpbmQgdGhlIHJlbGV2YW50IG9wdGlvbnMuIEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZWZmaWNpZW50bHkgcGFyc2UgdGhlIEtjb25maWcgZmlsZXMuIFRoaXMgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzIGZvciBwcm9wZXIgVVNCIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0Y29uZmlnIE1UNzkyNV9DT01NT05cbiAgIDM6XHRcdHRyaXN0YXRlXG4gICA0Olx0XHRzZWxlY3QgTVQ3OTJ4X0xJQlxuICAgNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gICA2Olx0XG4gICA3Olx0Y29uZmlnIE1UNzkyNUVcbiAgIDg6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyNUUgKFBDSWUpIHN1cHBvcnRcJiMzNDtcbiAgIDk6XHRcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXG4gIDEwOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDExOlx0XHRkZXBlbmRzIG9uIFBDSVxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFBDSWUgZGV2aWNlcyxcbiAgMTQ6XHRcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXG4gIDE1Olx0XHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cbiAgMTY6XHRcbiAgMTc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgTVQ3OTI1VVxuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCYjMzQ7XG4gIDIxOlx0XHRzZWxlY3QgTVQ3OTJ4X1VTQlxuICAyMjpcdFx0c2VsZWN0IE1UNzkyNV9DT01NT05cbiAgMjM6XHRcdGRlcGVuZHMgb24gTUFDODAyMTFcbiAgMjQ6XHRcdGRlcGVuZHMgb24gVVNCXG4gIDI1Olx0XHRoZWxwXG4gIDI2Olx0XHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBNVDc5MjUtYmFzZWQgd2lyZWxlc3MgVVNCIGRldmljZXMsXG4gIDI3Olx0XHQgIHdoaWNoIHN1cHBvcnQgb3BlcmF0aW9uIGF0IDZHSHosIDVHSHosIGFuZCAyLjRHSHogSUVFRSA4MDIuMTFiZVxuICAyODpcdFx0ICAyeDI6MlNTIDQwOTYtUUFNLCAxNjBNSHogY2hhbm5lbHMuXG4gIDI5Olx0XG4gIDMwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU1NQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2U6CgoqKkludmVzdGlnYXRpbmcgdGhlIEtjb25maWcgZm9yIHRoZSBNVDc2IFdpcmVsZXNzIERyaXZlcioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGl2aW5nIGludG8gdGhlIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlciBzaXR1YXRpb24uIE15IGd1dCB0ZWxscyBtZSB3ZSBuZWVkIHRvIHRob3JvdWdobHkgY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhhdCBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgb25lIGxvY2F0ZWQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AuIFRoaXMgaXMgc3RhbmRhcmQgcHJvY2VkdXJlLCBidXQgcGFydGljdWxhcmx5IGltcG9ydGFudCB3aGVuIHdlIGFyZSBkZWJ1Z2dpbmcgYSBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IG9yIGNvbmZpZ3VyYXRpb24gaXNzdWUuIEl0JiMzOTtzIHRoZSBjZW50cmFsIGNvbmZpZ3VyYXRpb24gZmlsZSwgc28gaXQmIzM5O3MgdGhlIGZpcnN0IHBsYWNlIEkmIzM5O2QgbG9vayB0byB1bmRlcnN0YW5kIGhvdyB0aGluZ3MgYXJlIGNvbnRyb2xsZWQsIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgbWlnaHQgYmUgYXQgcGxheS4gV2UgbmVlZCB0byBkaXNzZWN0IHRoaXMgdG8gYmUgc3VyZSB3ZSBhcmUgbm90IG1pc3NpbmcgYW55dGhpbmcgcmVsYXRlZCB0byBob3cgaXQgaXMgZGVzaWduZWQgYW5kIGhvdyB0aGluZ3MgYXJlIHNldCB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdGNvbmZpZyBNVDc2X0NPUkVcbiAgIDM6XHRcdHRyaXN0YXRlXG4gICA0Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE1UNzZfTEVEU1xuICAgNzpcdFx0Ym9vbFxuICAgODpcdFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcbiAgIDk6XHRcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IE1UNzZfQ09SRT1MRURTX0NMQVNTXG4gIDEwOlx0XHRkZWZhdWx0IHlcbiAgMTE6XHRcbiAgMTI6XHRjb25maWcgTVQ3Nl9VU0JcbiAgMTM6XHRcdHRyaXN0YXRlXG4gIDE0Olx0XHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxuICAxNTpcdFxuICAxNjpcdGNvbmZpZyBNVDc2X1NESU9cbiAgMTc6XHRcdHRyaXN0YXRlXG4gIDE4Olx0XHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBNVDc2eDAyX0xJQlxuICAyMTpcdFx0dHJpc3RhdGVcbiAgMjI6XHRcdHNlbGVjdCBNVDc2X0NPUkVcbiAgMjM6XHRcbiAgMjQ6XHRjb25maWcgTVQ3NngwMl9VU0JcbiAgMjU6XHRcdHRyaXN0YXRlXG4gIDI2Olx0XHRzZWxlY3QgTVQ3Nl9VU0JcbiAgMjc6XHRcbiAgMjg6XHRjb25maWcgTVQ3Nl9DT05OQUNfTElCXG4gIDI5Olx0XHR0cmlzdGF0ZVxuICAzMDpcdFx0c2VsZWN0IE1UNzZfQ09SRVxuICAzMTpcdFxuICAzMjpcdGNvbmZpZyBNVDc5MnhfTElCXG4gIDMzOlx0XHR0cmlzdGF0ZVxuICAzNDpcdFx0c2VsZWN0IE1UNzZfQ09OTkFDX0xJQlxuICAzNTpcdFxuICAzNjpcdGNvbmZpZyBNVDc5MnhfVVNCXG4gIDM3Olx0XHR0cmlzdGF0ZVxuICAzODpcdFx0c2VsZWN0IE1UNzZfVVNCXG4gIDM5Olx0XG4gIDQwOlx0Y29uZmlnIE1UNzZfTlBVXG4gIDQxOlx0XHR0cmlzdGF0ZVxuICA0MjpcdFx0ZGVwZW5kcyBvbiBORVRfQUlST0hBX05QVT15IHx8IE1UNzZfQ09SRT1ORVRfQUlST0hBX05QVVxuICA0MzpcdFxuICA0NDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnXCYjMzQ7XG4gIDQ1Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NngyL0tjb25maWdcJiMzNDtcbiAgNDY6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MDMvS2NvbmZpZ1wmIzM0O1xuICA0NzpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnXCYjMzQ7XG4gIDQ4Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L0tjb25maWdcJiMzNDtcbiAgNDk6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ1wmIzM0O1xuICA1MDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ3OAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBNVDc5MjUgRHJpdmVyIEJ1aWxkIFByb2Nlc3MqKgoKT2theSwgc28gdGhlIGltbWVkaWF0ZSBvYmplY3RpdmUgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIgaXMgY29uc3RydWN0ZWQgd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLiBUaGUgbG9naWNhbCBzdGFydGluZyBwb2ludCwgYXMgYWx3YXlzLCBpcyB0aGUgYE1ha2VmaWxlYCDigJMgc3BlY2lmaWNhbGx5IHRoZSBvbmUgcmVzaWRpbmcgd2l0aGluIHRoZSByZWxldmFudCBkcml2ZXIgZGlyZWN0b3J5LiBJJiMzOTttIHplcm9pbmcgaW4gb24gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L01ha2VmaWxlYC4gVGhpcyBmaWxlIHNob3VsZCBjb250YWluIHRoZSBjcnVjaWFsIGJ1aWxkIGluc3RydWN0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgb2JqZWN0IGZpbGUgZGVmaW5pdGlvbnMgdGhhdCBkaWN0YXRlIGhvdyB0aGUgTVQ3OTI1IGRyaXZlciBnZXRzIGNvbXBpbGVkIGFuZCBsaW5rZWQgaW50byB0aGUga2VybmVsIG1vZHVsZSAob3IgcG90ZW50aWFsbHksIGJ1aWx0IHN0YXRpY2FsbHksIHRob3VnaCBsZXNzIGxpa2VseSBmb3Igd2lyZWxlc3MpLiBNeSBleHBlY3RhdGlvbiBpcyB0aGF0IHRoaXMgTWFrZWZpbGUgd2lsbCBiZSBhIGNvbWJpbmF0aW9uIG9mIHJ1bGVzLCB2YXJpYWJsZXMgdGhhdCB3aWxsIHVsdGltYXRlbHkgc3BlY2lmeSB0aGUgY29tcGlsZXIgZmxhZ3MsIHNvdXJjZSBmaWxlcywgYW5kIGFueSBvdGhlciBleHRlcm5hbCBkZXBlbmRlbmNpZXMgcmVxdWlyZWQgZm9yIHN1Y2Nlc3NmdWwgY29tcGlsYXRpb24gb2YgdGhlIGRyaXZlci4gSSYjMzk7bSBhbnRpY2lwYXRpbmcgdGhlIHN0YW5kYXJkIGtlcm5lbCBidWlsZCBzeXN0ZW0gaWRpb21zOiB1c2Ugb2YgYG9iai1tYCwgYGNjZmxhZ3MteWAsIGBzcmMteWAsIGV0Yy4gdG8gbWFuYWdlIG9iamVjdCBmaWxlcyBhbmQgZGVwZW5kZW5jaWVzLiBJdOKAmXMgYSBwcmV0dHkgc3RhbmRhcmQgYXBwcm9hY2gsIGJ1dCB0aGUgZGV0YWlscyBpbiB0aGlzIHNwZWNpZmljIE1ha2VmaWxlIHdpbGwgYmUgY3JpdGljYWwgdG8gdW5kZXJzdGFuZCBhbnkgTWVkaWF0ZWstc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgb3IgY3VzdG9taXphdGlvbnMgZm9yIHRoZSA3OTI1IGNoaXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuICAgMjpcdFxuICAgMzpcdG9iai0kKENPTkZJR19NVDc5MjVfQ09NTU9OKSAmIzQzOz0gbXQ3OTI1LWNvbW1vbi5vXG4gICA0Olx0b2JqLSQoQ09ORklHX01UNzkyNUUpICYjNDM7PSBtdDc5MjVlLm9cbiAgIDU6XHRvYmotJChDT05GSUdfTVQ3OTI1VSkgJiM0Mzs9IG10NzkyNXUub1xuICAgNjpcdFxuICAgNzpcdG10NzkyNS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm8gbmFuLm9cbiAgIDg6XHRtdDc5MjUtY29tbW9uLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG4gICA5Olx0bXQ3OTI1ZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm9cbiAgMTA6XHRtdDc5MjV1LXkgOj0gdXNiLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDcxCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgY29kZSByZWxhdGVkIHRvIGBtdDc5MjV1X3N0b3BgIGFuZCBpdHMgY2FsbGVyczoKCioqRGl2aW5nIGludG8gdGhlIGBtdDc5MjV1X3N0b3BgIENvZGUqKgoKT2theSwgdGltZSB0byB6ZXJvIGluIG9uIHRoaXMgYG10NzkyNXVfc3RvcGAgZnVuY3Rpb24gYW5kIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBhbmQsIGNydWNpYWxseSwgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgYnkgdHJhY2luZyB0aGUgZnVuY3Rpb24mIzM5O3MgZGVmaW5pdGlvbiBhbmQgdGhlbiBpbW1lZGlhdGVseSBicmFuY2ggb3V0IHRvIGl0cyBjYWxsIHNpdGVzLiBXaGF0IHRyaWdnZXJzIHRoaXMgcm91dGluZT8gQXJlIHRoZXJlIGFueSBzdWJ0bGV0aWVzIGluIGl0cyBpbXBsZW1lbnRhdGlvbiB0aGF0IG1pZ2h0IGJlIGNhdXNpbmcgYW4gaXNzdWUsIHBhcnRpY3VsYXJseSBnaXZlbiB0aGUgc3BlY2lmaWMgY29udGV4dCBvZiB0aGlzIGhhcmR3YXJlPyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCByZXNvdXJjZSBsZWFrcywgb3IgYW55dGhpbmcgdGhhdCBjb3VsZCBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIHRoZSBzaHV0ZG93biBvciBoYWx0IHByb2Nlc3Mgb2YgdGhlIGBtdDc5MjV1YC4gSSBleHBlY3QgdG8gZmluZCBzb21lIGludGVyZXN0aW5nIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZSBkcml2ZXIsIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciwgYW5kIHBvdGVudGlhbGx5IHRoZSBuZXR3b3JrIHN0YWNrIGl0c2VsZi4gVGhpcyBkZWVwZXIgZGl2ZSBzaG91bGQgcmV2ZWFsIGFueSBwb3RlbnRpYWwgcHJvYmxlbXMgd2l0aCB0aGUgc3RvcHBpbmcgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTI1dV8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxMjpzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgbXQ3OTI1dV9kZXZpY2VfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTEzLVx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDBlOGQsIDB4NjYzOSwgMHhmZiwgMHhmZiwgMHhmZiksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MjY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6Mjc6bXQ3OTI1dV9tY3Vfc2VuZF9tZXNzYWdlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI4LVx0XHRcdCBpbnQgY21kLCBpbnQgKnNlcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy01NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjU2OnN0YXRpYyBpbnQgbXQ3OTI1dV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtNTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTYxLVx0XHQudGFpbHJvb20gPSBNVF9VU0JfVEFJTF9TSVpFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6NjI6XHRcdC5tY3Vfc2tiX3NlbmRfbXNnID0gbXQ3OTI1dV9tY3Vfc2VuZF9tZXNzYWdlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtNjMtXHRcdC5tY3VfcGFyc2VfcmVzcG9uc2UgPSBtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6ODA6c3RhdGljIGludCBtdDc5MjV1X21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtODEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE1MDpzdGF0aWMgdm9pZCBtdDc5MjV1X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTU5OnN0YXRpYyBpbnQgbXQ3OTI1dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNjAtXHRcdFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNzktXHRzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkyeF9oaWZfb3BzIGhpZl9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxODA6XHRcdC5tY3VfaW5pdCA9IG10NzkyNXVfbWN1X2luaXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xODEtXHRcdC5pbml0X3Jlc2V0ID0gbXQ3OTJ4dV9pbml0X3Jlc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTgyOlx0XHQucmVzZXQgPSBtdDc5MjV1X21hY19yZXNldCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE4My1cdH07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMjA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MjA1Olx0b3BzLVx1MDAzZXN0b3AgPSBtdDc5MjV1X3N0b3A7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yMDYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMjc4LSNpZmRlZiBDT05GSUdfUE1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjI3OTpzdGF0aWMgaW50IG10NzkyNXVfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IHN0YXRlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMjgwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzozMTI6c3RhdGljIGludCBtdDc5MjV1X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTMxMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzYwOk1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBtdDc5MjV1X2RldmljZV90YWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNjEtTU9EVUxFX0ZJUk1XQVJFKE1UNzkyNV9GSVJNV0FSRV9XTSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0zNjI9TU9EVUxFX0ZJUk1XQVJFKE1UNzkyNV9ST01fUEFUQ0gpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzY0OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjV1X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM2NS1cdC5uYW1lXHRcdD0gS0JVSUxEX01PRE5BTUUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzozNjY6XHQuaWRfdGFibGVcdD0gbXQ3OTI1dV9kZXZpY2VfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzozNjc6XHQucHJvYmVcdFx0PSBtdDc5MjV1X3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzY4LVx0LmRpc2Nvbm5lY3RcdD0gbXQ3OTJ4dV9kaXNjb25uZWN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzY5LSNpZmRlZiBDT05GSUdfUE1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM3MDpcdC5zdXNwZW5kXHQ9IG10NzkyNXVfc3VzcGVuZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM3MTpcdC5yZXN1bWVcdFx0PSBtdDc5MjV1X3Jlc3VtZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM3MjpcdC5yZXNldF9yZXN1bWVcdD0gbXQ3OTI1dV9yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNzMtI2VuZGlmIC8qIENPTkZJR19QTSAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM3Ni19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6Mzc3Om1vZHVsZV91c2JfZHJpdmVyKG10NzkyNXVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM3OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQzOAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgbXQ3OTI1dV9zdG9wIGluIG10NzkyNSYjMzk7cyBVU0IgRHJpdmVyKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNodXRkb3duIHNlcXVlbmNlIGZvciB0aGUgbXQ3OTI1JiMzOTtzIFVTQiBkcml2ZXIuIE15IGZpcnN0IHN0ZXAgaXMgdG8gemVybyBpbiBvbiB0aGUgYG10NzkyNXVfc3RvcGAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jYC4gSSBhbHJlYWR5IGtub3cgdGhlIGRldmljZSB0cmVlIGlzIGNvcnJlY3QsIHNvIGxldCYjMzk7cyBtYWtlIHN1cmUgdGhhdCB0aGUgcHJvcGVyIHNlcXVlbmNlIHRvIHRlYXIgZG93biB0aGUgZGV2aWNlIGlzIGFsc28gY29ycmVjdC4KCk5vdywgSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IGludG8gdGhlIGNvZGUuIEkmIzM5O20gZ29pbmcgdG8gZm9jdXMgb24gbGluZXMgMTQ1IHRocm91Z2ggMjIwIHdpdGhpbiB0aGF0IGZpbGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIHJlbGV2YW50IGNvbnRleHQgZm9yIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGR1cmluZyB0aGUgYHN0b3BgIGZ1bmN0aW9uLCBpbmNsdWRpbmcgYW55IHJlc291cmNlIGRlYWxsb2NhdGlvbiwgaGFyZHdhcmUgcmVzZXQsIG9yIHBvd2VyIG1hbmFnZW1lbnQgY2FsbHMuIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGUgY29yZSBsb2dpYyB0byB1bmRlcnN0YW5kIGl0cyBmbG93IGFuZCBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHByb25lIHRvIGVycm9ycy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIHRoYXQgbWlnaHQgaW50ZXJmZXJlIHdpdGggZ3JhY2VmdWwgZGV2aWNlIHNodXRkb3duLCBlc3BlY2lhbGx5IGFueSByYWNlIGNvbmRpdGlvbnMgb3IgaW1wcm9wZXIgc3luY2hyb25pemF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDcwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNDU6XHRcdG10NzZfd29ya2VyX2VuYWJsZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni50eF93b3JrZXIpO1xuIDE0NjpcdFxuIDE0NzpcdFx0cmV0dXJuIGVycjtcbiAxNDg6XHR9XG4gMTQ5Olx0XG4gMTUwOlx0c3RhdGljIHZvaWQgbXQ3OTI1dV9zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIHN1c3BlbmQpXG4gMTUxOlx0e1xuIDE1MjpcdFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IG10NzkyeF9od19kZXYoaHcpO1xuIDE1MzpcdFxuIDE1NDpcdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yayk7XG4gMTU1Olx0XG4gMTU2Olx0XHRtdDc5Mnh1X3N0b3AoaHcsIHN1c3BlbmQpO1xuIDE1NzpcdH1cbiAxNTg6XHRcbiAxNTk6XHRzdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxuIDE2MDpcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4gMTYxOlx0e1xuIDE2MjpcdFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc2X2RyaXZlcl9vcHMgZHJ2X29wcyA9IHtcbiAxNjM6XHRcdFx0LnR4d2lfc2l6ZSA9IE1UX1NESU9fVFhEX1NJWkUsXG4gMTY0Olx0XHRcdC5kcnZfZmxhZ3MgPSBNVF9EUlZfUlhfRE1BX0hEUiB8IE1UX0RSVl9IV19NR01UX1RYUSB8XG4gMTY1Olx0XHRcdFx0ICAgICBNVF9EUlZfQU1TRFVfT0ZGTE9BRCxcbiAxNjY6XHRcdFx0LnN1cnZleV9mbGFncyA9IFNVUlZFWV9JTkZPX1RJTUVfVFggfFxuIDE2NzpcdFx0XHRcdFx0U1VSVkVZX0lORk9fVElNRV9SWCB8XG4gMTY4Olx0XHRcdFx0XHRTVVJWRVlfSU5GT19USU1FX0JTU19SWCxcbiAxNjk6XHRcdFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxuIDE3MDpcdFx0XHQudHhfY29tcGxldGVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcbiAxNzE6XHRcdFx0LnR4X3N0YXR1c19kYXRhID0gbXQ3OTI1X3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhLFxuIDE3MjpcdFx0XHQucnhfc2tiID0gbXQ3OTI1X3F1ZXVlX3J4X3NrYixcbiAxNzM6XHRcdFx0LnJ4X2NoZWNrID0gbXQ3OTI1X3J4X2NoZWNrLFxuIDE3NDpcdFx0XHQuc3RhX2FkZCA9IG10NzkyNV9tYWNfc3RhX2FkZCxcbiAxNzU6XHRcdFx0LnN0YV9ldmVudCA9IG10NzkyNV9tYWNfc3RhX2V2ZW50LFxuIDE3NjpcdFx0XHQuc3RhX3JlbW92ZSA9IG10NzkyNV9tYWNfc3RhX3JlbW92ZSxcbiAxNzc6XHRcdFx0LnVwZGF0ZV9zdXJ2ZXkgPSBtdDc5MnhfdXBkYXRlX2NoYW5uZWwsXG4gMTc4Olx0XHR9O1xuIDE3OTpcdFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MnhfaGlmX29wcyBoaWZfb3BzID0ge1xuIDE4MDpcdFx0XHQubWN1X2luaXQgPSBtdDc5MjV1X21jdV9pbml0LFxuIDE4MTpcdFx0XHQuaW5pdF9yZXNldCA9IG10NzkyeHVfaW5pdF9yZXNldCxcbiAxODI6XHRcdFx0LnJlc2V0ID0gbXQ3OTI1dV9tYWNfcmVzZXQsXG4gMTgzOlx0XHR9O1xuIDE4NDpcdFx0c3RhdGljIHN0cnVjdCBtdDc2X2J1c19vcHMgYnVzX29wcyA9IHtcbiAxODU6XHRcdFx0LnJyID0gbXQ3OTJ4dV9ycixcbiAxODY6XHRcdFx0LndyID0gbXQ3OTJ4dV93cixcbiAxODc6XHRcdFx0LnJtdyA9IG10NzkyeHVfcm13LFxuIDE4ODpcdFx0XHQucmVhZF9jb3B5ID0gbXQ3NnVfcmVhZF9jb3B5LFxuIDE4OTpcdFx0XHQud3JpdGVfY29weSA9IG10NzkyeHVfY29weSxcbiAxOTA6XHRcdFx0LnR5cGUgPSBNVDc2X0JVU19VU0IsXG4gMTkxOlx0XHR9O1xuIDE5MjpcdFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KHVzYl9pbnRmKTtcbiAxOTM6XHRcdHN0cnVjdCBpZWVlODAyMTFfb3BzICpvcHM7XG4gMTk0Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodztcbiAxOTU6XHRcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXY7XG4gMTk2Olx0XHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXY7XG4gMTk3Olx0XHR1OCBmZWF0dXJlcztcbiAxOTg6XHRcdGludCByZXQ7XG4gMTk5Olx0XG4gMjAwOlx0XHRvcHMgPSBtdDc5MnhfZ2V0X21hYzgwMjExX29wcyhcdTAwMjZ1c2JfaW50Zi1cdTAwM2VkZXYsIFx1MDAyNm10NzkyNV9vcHMsXG4gMjAxOlx0XHRcdFx0XHQgICAgICAodm9pZCAqKWlkLVx1MDAzZWRyaXZlcl9pbmZvLCBcdTAwMjZmZWF0dXJlcyk7XG4gMjAyOlx0XHRpZiAoIW9wcylcbiAyMDM6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMjA0Olx0XG4gMjA1Olx0XHRvcHMtXHUwMDNlc3RvcCA9IG10NzkyNXVfc3RvcDtcbiAyMDY6XHRcbiAyMDc6XHRcdG1kZXYgPSBtdDc2X2FsbG9jX2RldmljZShcdTAwMjZ1c2JfaW50Zi1cdTAwM2VkZXYsIHNpemVvZigqZGV2KSwgb3BzLCBcdTAwMjZkcnZfb3BzKTtcbiAyMDg6XHRcdGlmICghbWRldilcbiAyMDk6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMjEwOlx0XG4gMjExOlx0XHRkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkyeF9kZXYsIG10NzYpO1xuIDIxMjpcdFx0ZGV2LVx1MDAzZWZ3X2ZlYXR1cmVzID0gZmVhdHVyZXM7XG4gMjEzOlx0XHRkZXYtXHUwMDNlaGlmX29wcyA9IFx1MDAyNmhpZl9vcHM7XG4gMjE0Olx0XHRtdDc5Mnh1X3Jlc2V0X3dvcmtfaW5pdChkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDEyNAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipEaWdnaW5nIGludG8gUG93ZXIgTWFuYWdlbWVudCBmb3IgUENJLWUgRGV2aWNlcyoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGlzIFBDSS1lIHBvd2VyIG1hbmFnZW1lbnQgdGhpbmcuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgbG9va2luZyBmb3Igc29tZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbnMgaW4gc2ltaWxhciBkcml2ZXJzLCBzcGVjaWZpY2FsbHkgdGhlIGBtdDc5MjVlYCBXaUZpIGRyaXZlciwgc2luY2UgdGhhdCYjMzk7cyBhIGtub3duIHF1YW50aXR5LiBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIGNoZWNrIG91dCB0aGUgYG10NzkyNWVfc3RvcGAgZnVuY3Rpb24sIG9yIHNvbWV0aGluZyBhbmFsb2dvdXMgdG8gaXQsIHRvIHNlZSBpZiB0aGV5JiMzOTtyZSBzaHV0dGluZyBkb3duIHRoZSBQQ0ktZSBkZXZpY2UgaW4gYSBzaW1pbGFyIGZhc2hpb24uIEFyZSB0aGV5IGNhbGxpbmcgc29tZXRoaW5nIHNwZWNpZmljIGR1cmluZyBkZXZpY2Ugc3RvcCB0aGF0IEkgY2FuIGxlYXJuIGZyb20/IEJleW9uZCB0aGF0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gYG1sb19wbV93b3JrYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoYXQgaXMgYmVpbmcgdXNlZCwgd2hlcmUgaXQgaXMgY2FsbGVkIGZyb20sIGFuZCB3aGF0IGtpbmQgb2YgcG93ZXIgc3RhdGUgdHJhbnNpdGlvbnMgaXQmIzM5O3MgcmVzcG9uc2libGUgZm9yLiBVbmRlcnN0YW5kaW5nIHRob3NlIGNvbXBvbmVudHMgd2lsbCBnaXZlIG1lIGluc2lnaHRzIHRvIGhvdyBQQ0ktZSBwb3dlciBtYW5hZ2VtZW50IGlzIGhhbmRsZWQgaW4gYSB3b3JrYWJsZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21sb19wbV93b3JrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYz0yNDM9aW50IG10NzkyNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjUzLVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBtLnBzX3dvcmssIG10NzkyeF9wbV9wb3dlcl9zYXZlX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI1NDpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yaywgbXQ3OTI1X21sb19wbV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNTUtXHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBtLndha2Vfd29yaywgbXQ3OTJ4X3BtX3dha2Vfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MTUxMT12b2lkIG10NzkyNV9tYWNfcmVzZXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTUyNy1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZwbS1cdTAwM2Vwc193b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE1Mjg6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE1MjktXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNnBtLVx1MDAzZXdha2Vfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTE1MTg9bXQ3OTI1X21sb19wbV9pdGVyKHZvaWQgKnByaXYsIHU4ICptYWMsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE1MzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTUzODp2b2lkIG10NzkyNV9tbG9fcG1fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTUzOS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTU0MC1cdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG10NzkyeF9kZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTU0MTpcdFx0XHRcdFx0ICAgICAgbWxvX3BtX3dvcmsud29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTU0Mi1cdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gbXQ3Nl9odyhkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0xNzA0PXN0YXRpYyBpbnQgbXQ3OTI1X3N1c3BlbmQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE3MTMtXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZXBtLnBzX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE3MTQ6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xNzE1LVx0bXQ3Nl9jb25uYWNfZnJlZV9wZW5kaW5nX3R4X3NrYnMoXHUwMDI2ZGV2LVx1MDAzZXBtLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MjE1MD1zdGF0aWMgdm9pZCBtdDc5MjVfbGlua19pbmZvX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTIxOTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjE5ODpcdFx0aWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhodywgXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrLCA1ICogSFopO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTIxOTktXHRcdG12aWYtXHUwMDNlbWxvX3BtX3N0YXRlID0gTVQ3OTJ4X01MT19DSEFOR0VEX1BTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yNzA3PXN0YXRpYyB2b2lkIG10NzkyNV9zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIHN1c3BlbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI3MTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjcxMTpcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZkZXYtXHUwMDNlbWxvX3BtX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI3MTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzMwPWludCBtdDc5MjVfbWN1X3VuaV9yeF9iYShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMzMi1cdFx0XHQgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzMzOnZvaWQgbXQ3OTI1X21sb19wbV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zMzQtdm9pZCBtdDc5MjVfc2Nhbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9NDE9c3RhdGljIHZvaWQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTU1LVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnBtLVx1MDAzZXBzX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NTY6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTU3LVx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZwbS1cdTAwM2V3YWtlX3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTczNT1zdGF0aWMgaW50IG10NzkyNV9wY2lfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXZpY2UpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNzQ2LVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnBtLVx1MDAzZXBzX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NzQ3Olx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy03NDgtXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNnBtLVx1MDAzZXdha2Vfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MTUwPXN0YXRpYyB2b2lkIG10NzkyNXVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE1NDpcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZkZXYtXHUwMDNlbWxvX3BtX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTU1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTI3OT1zdGF0aWMgaW50IG10NzkyNXVfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IHN0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI4Ny1cdGZsdXNoX3dvcmsoXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6Mjg4Olx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yODktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD0yOTM9c3RydWN0IG10NzkyeF9kZXYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMzMxLVx0c3RydWN0IHdvcmtfc3RydWN0IGlwdjZfbnNfd29yaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6MzMyOlx0c3RydWN0IGRlbGF5ZWRfd29yayBtbG9fcG1fd29yaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMzMzLVx0LyogSVB2NiBhZGRyZXNzZXMgZm9yIFdvV0xBTiAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjc4MQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQ4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGdXp6aW5nIFdvcnRoaW5lc3Mgb2YgdGhlIE1UNzkyNVUgVVNCIERyaXZlciBTdG9wIEZ1bmN0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbnZlc3RpZ2F0ZSB0aGUgYG1hYzgwMjExIG9wcy0mZ3Q7c3RvcGAgZnVuY3Rpb24gY2FsbC4gV2hlbiBhIHdpcmVsZXNzIGludGVyZmFjZSBnb2VzIGRvd24sIGJlIGl0IHRocm91Z2ggYW4gYGlwIGxpbmsgc2V0YCBjb21tYW5kIG9yIHVucmVnaXN0cmF0aW9uLCBgbWFjODAyMTFgIGNhbGxzIHRoaXMgZnVuY3Rpb24uIEluIG91ciBjYXNlLCBhbmQgdGhpcyBpcyBrZXksIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggVVNCIGVtdWxhdGlvbiB2aWEgc29tZXRoaW5nIGxpa2UgYHN5el91c2JfY29ubmVjdGAgb3IgZXZlbiBqdXN0IHRoZSByYXcgZ2FkZ2V0IG1vZGUuIFRoaXMgYWxsb3dzIGBzeXprYWxsZXJgIHRvIGludGVyYWN0IHdpdGggTVQ3OTI1VSBkZXZpY2VzIOKAkyB0aG9zZSB3aXRoIFVTQiBJRHMgbGlrZSAwZThkOjY2MzksIGZvciBleGFtcGxlLiBXZSBjYW4gcmVnaXN0ZXIgdGhlIG1hYzgwMjExIGRldmljZSwgYnJpbmcgaXQgdXAsIG1hbmlwdWxhdGUgaXQgd2l0aCBgbmw4MDIxMWAgY2FsbHMsIGFuZCB0aGVuLCBjcnVjaWFsbHksIGJyaW5nIGl0IGJhY2sgZG93bi4KClNwZWNpZmljYWxseSwgd2hlbiB0aGUgbWFjODAyMTEgaW50ZXJmYWNlIHNodXRzIGRvd24sIGBtdDc5MjV1X3N0b3BgIGdldHMgZXhlY3V0ZWQuIFRoaXMgZnVuY3Rpb24gdGhlbiBjYWxscyBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7ZGV2LSZndDttbG9fcG1fd29yaylgIGJlZm9yZSBjYWxsaW5nIGBtdDc5Mnh1X3N0b3BgLgoKTm93LCB0aGUgaW1wb3J0YW50IHBhcnQuICBHaXZlbiB0aGF0IHdlIGNhbiB0cmlnZ2VyIHRoaXMgc3BlY2lmaWMgY2FsbGJhY2ssIGBvcHMtJmd0O3N0b3BgLCB3aGljaCBpcyBhIGZ1bmN0aW9uIHdpdGhpbiBhIFVTQiB3aXJlbGVzcyBkcml2ZXIsIGFuZCB0aGF0IGl0IGlzICpyZWFjaGFibGUqIGFuZCAqZXhlY3V0YWJsZSogaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB1c2luZyBVU0IgZW11bGF0aW9uIGFuZCBtYWM4MDIxMS9ubDgwMjExIG9wZXJhdGlvbnMsICpJKiBjb25jbHVkZSB0aGF0IHRoaXMgaXMgYWJzb2x1dGVseSBgV29ydGhGdXp6aW5nYC4gVGhlIGFiaWxpdHkgdG8gcHJlZGljdGFibHkgYnJpbmcgdGhlIGludGVyZmFjZSB1cCBhbmQgZG93biwgdHJpZ2dlcmluZyB0aGUgYHN0b3BgIGZ1bmN0aW9uLCBtZWFucyB3ZSBoYXZlIGEgdmlhYmxlIGZ1enppbmcgdGFyZ2V0LgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBUaGUgY3J1Y2lhbCBjb25maWcgaXMgYE1UNzkyNVVgLiAgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIGFyZSBlbmFibGVkLiAgTGV0JiMzOTtzIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnYCBmaWxlLiAgSGVyZSBpdCBpczoKCmBgYGtjb25maWcKY29uZmlnIE1UNzkyNVUKCXRyaXN0YXRlICYjMzQ7TWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0JiMzNDsKCXNlbGVjdCBNVDc5MnhfVVNCCglzZWxlY3QgTVQ3OTI1X0NPTU1PTgoJZGVwZW5kcyBvbiBNQUM4MDIxMQoJZGVwZW5kcyBvbiBVU0IKYGBgCgpPa2F5LCBgTVQ3OTI1VWAgZGVwZW5kcyBvbiBgTUFDODAyMTFgIGFuZCBgVVNCYCwgYW5kIGl0IGFsc28gc2VsZWN0cyBgTVQ3OTJ4X1VTQmAgYW5kIGBNVDc5MjVfQ09NTU9OYC4gU28gd2UgaGF2ZSB0aGUgZGVwZW5kZW5jaWVzIGluIG9yZGVyIHRvIGJ1aWxkIGEgZnV6emluZyB0YXJnZXQuIEkgbmVlZCB0byBtYWtlIHN1cmUgYE1BQzgwMjExYCBhbmQgYFVTQmAgYXJlIGNvbmZpZ3VyZWQuIEkgd2lsbCBhbHNvIGhhdmUgdG8gY2hlY2sgdGhlIHBhcmVudCBtZW51L2NvbmZpZyBkZXBlbmRlbmNpZXMgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdgLCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZ2AsIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AgZmlsZXMuIEkgd2lsbCBtYWtlIHN1cmUgdGhvc2UgYXJlIHByb3Blcmx5IHNldCBhcyB3ZWxsLiBXaXRoIHRob3NlIGNvbmZpZ3MgaW4gcGxhY2UsIHRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGZ1enppbmcgY2FuZGlkYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzb3VyY2UuKm10NzkyNSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZz01MD1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5OTYvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjUxOnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDc2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIE1lZGlhdGVrIFdpcmVsZXNzIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiBmb3IgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVycy4gTXkgZmlyc3QgcG9ydCBvZiBjYWxsIHdpbGwgYmUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdgLiBUaGlzIGZpbGUgKnNob3VsZCogYmUgdGhlIGNlbnRyYWwgaHViIGZvciBhbGwgdGhlIGJ1aWxkLXRpbWUgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gTWVkaWF0ZWsmIzM5O3Mgd2lyZWxlc3Mgc2lsaWNvbi4gSSBleHBlY3QgdG8gZmluZCB0aGUgdXN1YWwgc3VzcGVjdHM6IG9wdGlvbnMgZm9yIHZhcmlvdXMgTWVkaWF0ZWsgY2hpcHNldHMgYW5kIHZhcmlhbnRzLCBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGZlYXR1cmVzIChsaWtlIHJlZ3VsYXRvcnksIE1BQzgwMjExKSwgYW5kIHBvdGVudGlhbGx5IHNvbWUgZGV2aWNlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBJJiMzOTttIGhvcGluZyBpdCYjMzk7cyB3ZWxsLXN0cnVjdHVyZWQgYW5kIHVzZXMgdGhlIHN0YW5kYXJkIEtjb25maWcgY29udmVudGlvbnMgdG8gYXZvaWQgdG9vIG11Y2ggZGlnZ2luZy4gSSB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB3aGljaCBkcml2ZXJzIGFyZSBhdmFpbGFibGUsIGhvdyB0aGV5JiMzOTtyZSBlbmFibGVkLCBhbmQgd2hhdCBzdXBwb3J0aW5nIGluZnJhc3RydWN0dXJlIGlzIHJlcXVpcmVkLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgc28gSSBrbm93IHdoYXQmIzM5O3MgcG9zc2libGUsIHdoYXQmIzM5O3Mgbm90LCBhbmQgd2hhdCBJIG1pZ2h0IG5lZWQgdG8gY29uc2lkZXIgd2hlbiBjb25maWd1cmluZyBhIHN5c3RlbSBvciB0cm91Ymxlc2hvb3RpbmcgYSBzcGVjaWZpYyBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBXTEFOX1ZFTkRPUl9NRURJQVRFS1xuICAgMzpcdFx0Ym9vbCBcJiMzNDtNZWRpYVRlayBkZXZpY2VzXCYjMzQ7XG4gICA0Olx0XHRkZWZhdWx0IHlcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgSWYgeW91IGhhdmUgYSB3aXJlbGVzcyBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cbiAgIDc6XHRcbiAgIDg6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gICA5Olx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGwgdGhlXG4gIDEwOlx0XHQgIHF1ZXN0aW9ucyBhYm91dCB0aGVzZSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcbiAgMTE6XHRcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxMjpcdFxuICAxMzpcdGlmIFdMQU5fVkVORE9SX01FRElBVEVLXG4gIDE0Olx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYwMXUvS2NvbmZpZ1wmIzM0O1xuICAxNTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdcJiMzNDtcbiAgMTY6XHRlbmRpZiAjIFdMQU5fVkVORE9SX01FRElBVEVLXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NjIxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgaXQ6CgoqKktjb25maWcgRGl2ZSBCZWdpbnMqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gd29yay4gTGV0JiMzOTtzIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgV2ktRmkgZHJpdmVyIGNvbmZpZ3VyYXRpb24uIE15IGluc3RpbmN0IHNheXMgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgYmUgbG9jYXRlZCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSB0eXBpY2FsIGxvY2F0aW9uIGZvciBjb3JlIFdpLUZpIGRyaXZlciBmZWF0dXJlIGZsYWdzIGFuZCBkZXBlbmRlbmNpZXMuIEl04oCZcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBrZXJuZWwmIzM5O3Mgd2lyZWxlc3Mgc3Vic3lzdGVtIGlzIGJ1aWx0IGFuZCBjb25maWd1cmVkLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN0cnVjdHVyZSB3aXRoaW4gdGhpcyBmaWxlLiBJIGV4cGVjdCB0byBmaW5kIGRlcGVuZGVuY2llcyBvbiB2YXJpb3VzIGhhcmR3YXJlIHBsYXRmb3JtcywgUEhZIHR5cGVzLCByZWd1bGF0b3J5IGRvbWFpbnMsIGFuZCBwcm9iYWJseSBzb21lIHByb3RvY29sLXNwZWNpZmljIHNldHRpbmdzIHRoZXJlLiBUaW1lIHRvIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtXTEFOX1ZFTkRPUl9NRURJQVRFSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlPTEyPW9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NQVJWRUxMKSAmIzQzOz0gbWFydmVsbC9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NRURJQVRFSykgJiM0Mzs9IG1lZGlhdGVrL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTQtb2JqLSQoQ09ORklHX1dMQU5fVkVORE9SX01JQ1JPQ0hJUCkgJiM0Mzs9IG1pY3JvY2hpcC9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01FRElBVEVLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLTMtXHRib29sIFwmIzM0O01lZGlhVGVrIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZzoxMzppZiBXTEFOX1ZFTkRPUl9NRURJQVRFS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZy0xNC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnPTE1PXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWc6MTY6ZW5kaWYgIyBXTEFOX1ZFTkRPUl9NRURJQVRFS1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTEzMgoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDEzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIE1UNzkyNVUgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTt2ZSBnb3QgYWxsIHRoZSBiYXNlcyBjb3ZlcmVkIHJlZ2FyZGluZyB0aGUgTVQ3OTI1VSBkcml2ZXIuIExldCYjMzk7cyBzdGFydCBieSBjb25maXJtaW5nIEkmIzM5O3ZlIGNoZWNrZWQgdGhlIHN0YW5kYXJkIHN1c3BlY3RzOiBgVVNCYCwgYE1BQzgwMjExYCwgYE1UNzkyNVVgLCBhbmQgYFdMQU5fVkVORE9SX01FRElBVEVLYC4gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSYjMzk7bSBtaXNzaW5nIHRoYXQgY291bGQgYmUgaW1wYWN0aW5nIHRoaXMuCgpNeSBuZXh0IG1vdmUgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGl0c2VsZi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jYC4gSSYjMzk7bGwgYmUgc2Nhbm5pbmcgdGhpcyBmaWxlLCBsb29raW5nIGZvciBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdXNpbmcgYCNpZmRlZmAgYXJvdW5kIGtleSBmdW5jdGlvbnMgbGlrZSBgbXQ3OTI1dV9zdG9wYCBhbmQgYG10NzkyNXVfcHJvYmVgLiBUaGF0JiMzOTtsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaXMgYmVpbmcgY29tcGlsZWQgYW5kIGlmIGFueSBjb25maWd1cmF0aW9ucyBhcmUgYWZmZWN0aW5nIHRoZSBiZWhhdmlvciBJJiMzOTttIHNlZWluZy4gVG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSB2aWV3LCBJIG1heSBuZWVkIHRvIHJlYWQgdGhlIHdob2xlIGZpbGUgdG8gZ3Jhc3AgdGhlIGJpZ2dlciBwaWN0dXJlLCBvciBhdCBsZWFzdCBtZXRpY3Vsb3VzbHkgaW5zcGVjdCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG4gICAyOlx0LyogQ29weXJpZ2h0IChDKSAyMDIzIE1lZGlhVGVrIEluYy4gKi9cbiAgIDM6XHRcbiAgIDQ6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuICAgNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4gICA2Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvdXNiLmhcdTAwM2VcbiAgIDc6XHRcbiAgIDg6XHQjaW5jbHVkZSBcJiMzNDttdDc5MjUuaFwmIzM0O1xuICAgOTpcdCNpbmNsdWRlIFwmIzM0O21jdS5oXCYjMzQ7XG4gIDEwOlx0I2luY2x1ZGUgXCYjMzQ7bWFjLmhcJiMzNDtcbiAgMTE6XHRcbiAgMTI6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgbXQ3OTI1dV9kZXZpY2VfdGFibGVbXSA9IHtcbiAgMTM6XHRcdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgwZThkLCAweDY2MzksIDB4ZmYsIDB4ZmYsIDB4ZmYpLFxuICAxNDpcdFx0XHQuZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3QpTVQ3OTI1X0ZJUk1XQVJFX1dNIH0sXG4gIDE1Olx0XHR7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MGU4ZCwgMHg3OTI1LCAweGZmLCAweGZmLCAweGZmKSxcbiAgMTY6XHRcdFx0LmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KU1UNzkyNV9GSVJNV0FSRV9XTSB9LFxuICAxNzpcdFx0LyogTmV0Z2VhciwgSW5jLiBBODUwMCAqL1xuICAxODpcdFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDA4NDYsIDB4OTA1MCwgMHhmZiwgMHhmZiwgMHhmZiksXG4gIDE5Olx0XHRcdC5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdClNVDc5MjVfRklSTVdBUkVfV00gfSxcbiAgMjA6XHRcdC8qIE5ldGdlYXIsIEluYy4gQTkwMDAgKi9cbiAgMjE6XHRcdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgwODQ2LCAweDkwNzIsIDB4ZmYsIDB4ZmYsIDB4ZmYpLFxuICAyMjpcdFx0XHQuZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3QpTVQ3OTI1X0ZJUk1XQVJFX1dNIH0sXG4gIDIzOlx0XHR7IH0sXG4gIDI0Olx0fTtcbiAgMjU6XHRcbiAgMjY6XHRzdGF0aWMgaW50XG4gIDI3Olx0bXQ3OTI1dV9tY3Vfc2VuZF9tZXNzYWdlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiAgMjg6XHRcdFx0XHQgaW50IGNtZCwgaW50ICpzZXEpXG4gIDI5Olx0e1xuICAzMDpcdFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihtZGV2LCBzdHJ1Y3QgbXQ3OTJ4X2RldiwgbXQ3Nik7XG4gIDMxOlx0XHR1MzIgcGFkLCBlcDtcbiAgMzI6XHRcdGludCByZXQ7XG4gIDMzOlx0XG4gIDM0Olx0XHRyZXQgPSBtdDc5MjVfbWN1X2ZpbGxfbWVzc2FnZShtZGV2LCBza2IsIGNtZCwgc2VxKTtcbiAgMzU6XHRcdGlmIChyZXQpXG4gIDM2Olx0XHRcdHJldHVybiByZXQ7XG4gIDM3Olx0XG4gIDM4Olx0XHRtZGV2LVx1MDAzZW1jdS50aW1lb3V0ID0gMyAqIEhaO1xuICAzOTpcdFxuICA0MDpcdFx0aWYgKGNtZCAhPSBNQ1VfQ01EKEZXX1NDQVRURVIpKVxuICA0MTpcdFx0XHRlcCA9IE1UX0VQX09VVF9JTkJBTkRfQ01EO1xuICA0MjpcdFx0ZWxzZVxuICA0MzpcdFx0XHRlcCA9IE1UX0VQX09VVF9BQ19CRTtcbiAgNDQ6XHRcbiAgNDU6XHRcdG10NzkyeF9za2JfYWRkX3VzYl9zZGlvX2hkcihkZXYsIHNrYiwgMCk7XG4gIDQ2Olx0XHRwYWQgPSByb3VuZF91cChza2ItXHUwMDNlbGVuLCA0KSAmIzQzOyA0IC0gc2tiLVx1MDAzZWxlbjtcbiAgNDc6XHRcdF9fc2tiX3B1dF96ZXJvKHNrYiwgcGFkKTtcbiAgNDg6XHRcbiAgNDk6XHRcdHJldCA9IG10NzZ1X2J1bGtfbXNnKFx1MDAyNmRldi1cdTAwM2VtdDc2LCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbiwgTlVMTCxcbiAgNTA6XHRcdFx0XHQgICAgIDEwMDAsIGVwKTtcbiAgNTE6XHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbiAgNTI6XHRcbiAgNTM6XHRcdHJldHVybiByZXQ7XG4gIDU0Olx0fVxuICA1NTpcdFxuICA1NjpcdHN0YXRpYyBpbnQgbXQ3OTI1dV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuICA1NzpcdHtcbiAgNTg6XHRcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3Nl9tY3Vfb3BzIG1jdV9vcHMgPSB7XG4gIDU5Olx0XHRcdC5oZWFkcm9vbSA9IE1UX1NESU9fSERSX1NJWkUgJiM0MztcbiAgNjA6XHRcdFx0XHQgICAgc2l6ZW9mKHN0cnVjdCBtdDc2X2Nvbm5hYzJfbWN1X3R4ZCksXG4gIDYxOlx0XHRcdC50YWlscm9vbSA9IE1UX1VTQl9UQUlMX1NJWkUsXG4gIDYyOlx0XHRcdC5tY3Vfc2tiX3NlbmRfbXNnID0gbXQ3OTI1dV9tY3Vfc2VuZF9tZXNzYWdlLFxuICA2MzpcdFx0XHQubWN1X3BhcnNlX3Jlc3BvbnNlID0gbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZSxcbiAgNjQ6XHRcdH07XG4gIDY1Olx0XHRpbnQgcmV0O1xuICA2NjpcdFxuICA2NzpcdFx0ZGV2LVx1MDAzZW10NzYubWN1X29wcyA9IFx1MDAyNm1jdV9vcHM7XG4gIDY4Olx0XG4gIDY5Olx0XHRtdDc2X3NldChkZXYsIE1UX1VETUFfVFhfUVNFTCwgTVRfRldfRExfRU4pO1xuICA3MDpcdFx0cmV0ID0gbXQ3OTI1X3J1bl9maXJtd2FyZShkZXYpO1xuICA3MTpcdFx0aWYgKHJldClcbiAgNzI6XHRcdFx0cmV0dXJuIHJldDtcbiAgNzM6XHRcbiAgNzQ6XHRcdHNldF9iaXQoTVQ3Nl9TVEFURV9NQ1VfUlVOTklORywgXHUwMDI2ZGV2LVx1MDAzZW1waHkuc3RhdGUpO1xuICA3NTpcdFx0bXQ3Nl9jbGVhcihkZXYsIE1UX1VETUFfVFhfUVNFTCwgTVRfRldfRExfRU4pO1xuICA3NjpcdFxuICA3NzpcdFx0cmV0dXJuIDA7XG4gIDc4Olx0fVxuICA3OTpcdFxuICA4MDpcdHN0YXRpYyBpbnQgbXQ3OTI1dV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiAgODE6XHR7XG4gIDgyOlx0XHRpbnQgZXJyO1xuICA4MzpcdFxuICA4NDpcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRldi1cdTAwM2VtdDc2LmJ1c19odW5nKSlcbiAgODU6XHRcdFx0cmV0dXJuIDA7XG4gIDg2Olx0XG4gIDg3Olx0XHRtdDc5Mnh1X3Jlc2V0X29uX2J1c19lcnJvcihkZXYpO1xuICA4ODpcdFx0aWYgKGF0b21pY19yZWFkKFx1MDAyNmRldi1cdTAwM2VtdDc2LmJ1c19odW5nKSlcbiAgODk6XHRcdFx0cmV0dXJuIDA7XG4gIDkwOlx0XG4gIDkxOlx0XHRtdDc2X3R4cV9zY2hlZHVsZV9hbGwoXHUwMDI2ZGV2LVx1MDAzZW1waHkpO1xuICA5MjpcdFx0bXQ3Nl93b3JrZXJfZGlzYWJsZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni50eF93b3JrZXIpO1xuICA5MzpcdFxuICA5NDpcdFx0c2V0X2JpdChNVDc2X1JFU0VULCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSk7XG4gIDk1Olx0XHRzZXRfYml0KE1UNzZfTUNVX1JFU0VULCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSk7XG4gIDk2Olx0XG4gIDk3Olx0XHR3YWtlX3VwKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm1jdS53YWl0KTtcbiAgOTg6XHRcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5tY3UucmVzX3EpO1xuICA5OTpcdFxuIDEwMDpcdFx0bXQ3NnVfc3RvcF9yeChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3Mjg4CgkJCQkJCQlvdXRwdXQ6IDE3MgoJCQkJCQkJdGhvdWdodHM6IDU3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgTVQ3OTI1IFVTQiBXaXJlbGVzcyBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgZm9jdXMgaXMgdGhlIGBGb2N1c1N5bWJvbHNgLCBhbmQgSSYjMzk7dmUgaWRlbnRpZmllZCBgbXQ3OTI1dV9zdG9wYCBhcyB0aGUgbmV3bHkgbW9kaWZpZWQgb3IgYWRkZWQgZnVuY3Rpb24uIEkmIzM5O20gYWxzbyBpbmNsdWRpbmcgYG10NzkyNXVfcHJvYmVgLCBzaW5jZSBpdCBjb25maWd1cmVzIHRoZSBgb3BzLSZndDtzdG9wYCBvcGVyYXRpb24sIGFuZCBgbXQ3OTI1X21sb19wbV93b3JrYCwgd2hpY2ggaXMgdGhlIGRlbGF5ZWQgd29yayBiZWluZyBjYW5jZWxsZWQuIFNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIHF1aWNrbHkgdmVyaWZpZWQgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBpbW1lZGlhdGVseSByZWxldmFudCBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzIHBhcnRpY3VsYXIgY2hhbmdlIHRoYXQgSSBoYXZlbiYjMzk7dCBhbHJlYWR5IGNvbnNpZGVyZWQuCgpOZXh0LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgbmF0dXJlIG9mIGBtdDc5MjV1X3N0b3BgLiBJcyBpdCBzdGF0aWMgb3Igbm90PyBHb29kLCBpdCYjMzk7cyBgc3RhdGljIHZvaWQgbXQ3OTI1dV9zdG9wKC4uLilgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuY2AuIFRoZSBrZXkgbm93IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGlubGluZWQgb3Igd2lsbCBhcHBlYXIgYXMgYSBzZXBhcmF0ZSBzeW1ib2wgaW4gdGhlIG9iamVjdCBmaWxlLiBUaGUgZmFjdCB0aGF0IGl0cyBhZGRyZXNzIGlzIHRha2VuIHdpdGhpbiBgdXNiLmNgIChgb3BzLSZndDtzdG9wID0gbXQ3OTI1dV9zdG9wO2ApIG1lYW5zIGl0IGNhbiYjMzk7dCBiZSBjb21wbGV0ZWx5IGlubGluZWQuIFRoYXQmIzM5O3MgZ29vZDsgaXQgd2lsbCBiZSBhIGRpc3RpbmN0IHN5bWJvbCBpbiB0aGUgcmVzdWx0aW5nIG9iamVjdCBmaWxlLCBlaXRoZXIgYG10NzkyNXUub2Agb3Igdm1saW51eCwgYW5kIHRodXMsIHBvdGVudGlhbGx5IHZ1bG5lcmFibGUuIEkmIzM5O2xsIG1ha2UgYSBub3RlIG9mIHRoaXMuIEkmIzM5O3ZlIGFsc28gcmVjb25maXJtZWQgdGhhdCBgbXQ3OTI1dV9wcm9iZWAgZXhpc3RzIGFuZCB0aGF0IGBtdDc5MjVfbWxvX3BtX3dvcmtgIGlzIHRoZSB3b3JrIGZ1bmN0aW9uIGZvciBgZGV2LSZndDttbG9fcG1fd29ya2AuCgpCZWZvcmUgSSBtb3ZlIG9uLCBJIHdhbnQgdG8gY29uZmlybSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBXZSBuZWVkIGBNVDc5MjVVYCwgYE1BQzgwMjExYCwgYFVTQmAsIGFuZCBgV0xBTl9WRU5ET1JfTUVESUFURUtgIGVuYWJsZWQgdG8gcmVhY2ggdGhpcyBjb2RlLiBJIG5lZWQgdG8ga2VlcCB0aG9zZSBpbiBtaW5kIGFzIEkgZGV2ZWxvcCBmdXp6aW5nIGNvbmZpZ3VyYXRpb25zLgoKTm93LCBmb3IgdGhlIHJlYXNvbmluZzogQmFzaWNhbGx5LCB0aGlzIHBhdGNoIGludHJvZHVjZXMgYG10NzkyNXVfc3RvcGAgaW50byB0aGUgTWVkaWFUZWsgTVQ3OTI1IFVTQiB3aXJlbGVzcyBkcml2ZXIgdG8gaGFuZGxlIHRoZSBjYW5jZWxsYXRpb24gb2YgdGhlIGRlbGF5ZWQgTUxPIFBNIHdvcmsgKGBtbG9fcG1fd29ya2ApIGJlZm9yZSBkZXZpY2Ugc3RvcHBhZ2UuIFdoYXQmIzM5O3MgZXNwZWNpYWxseSBpbnRlcmVzdGluZyBpcyB0aGF0IHRoZSBNVDc5MjUgVVNCIGRyaXZlciBpcyBhY3R1YWxseSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgd2l0aCBVU0IgZW11bGF0aW9uIG9yIHJhdy1nYWRnZXQgc2V0dXBzLiBUaGlzIGltcGxpZXMgdGhhdCB0aGVzZSBjb2RlIHBhdGhzICphcmUqIHBvdGVudGlhbGx5IGZ1enphYmxlLgoKRmluYWxseSwgSSYjMzk7bGwgcGFja2FnZSB0aGlzIHVwIGludG8gdGhlIGBzZXQtcmVzdWx0c2A6CgoqICAgYFdvcnRoRnV6emluZ2A6IFRydWUsIGFic29sdXRlbHkuCiogICBgRm9jdXNTeW1ib2xzYDogSSYjMzk7dmUgY29uZmlybWVkIGBtdDc5MjV1X3N0b3BgLCBgbXQ3OTI1dV9wcm9iZWAsIGFuZCBgbXQ3OTI1X21sb19wbV93b3JrYC4KKiAgIGBFbmFibGVDb25maWdzYDogYE1UNzkyNVVgLCBgTUFDODAyMTFgLCBgVVNCYCwgYW5kIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AuCiogICBgUmVhc29uaW5nYDogQ29uY2lzZSBleHBsYW5hdGlvbiBwcm92aWRlZCwgd2hpY2ggSSB3aWxsIGFkZC4KCkkmIzM5O2xsIHByb2NlZWQgdG8gaW52b2tlIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNVDc5MjVVJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtXTEFOX1ZFTkRPUl9NRURJQVRFSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyNXVfc3RvcCYjMzQ7LAogICAgJiMzNDttdDc5MjV1X3Byb2JlJiMzNDssCiAgICAmIzM0O210NzkyNV9tbG9fcG1fd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIG10NzkyNXVfc3RvcCB0byBjYW5jZWwgdGhlIGRlbGF5ZWQgTUxPIFBNIHdvcmsgKG1sb19wbV93b3JrKSBkdXJpbmcgc3RvcCBvcGVyYXRpb25zIGluIHRoZSBNZWRpYVRlayBNVDc5MjUgVVNCIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gYW5kIG1hYzgwMjExL25sODAyMTEgaW50ZXJmYWNlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTI1VSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7V0xBTl9WRU5ET1JfTUVESUFURUsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjV1X3N0b3AmIzM0OywKICAgICYjMzQ7bXQ3OTI1dV9wcm9iZSYjMzQ7LAogICAgJiMzNDttdDc5MjVfbWxvX3BtX3dvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBtdDc5MjV1X3N0b3AgdG8gY2FuY2VsIHRoZSBkZWxheWVkIE1MTyBQTSB3b3JrIChtbG9fcG1fd29yaykgZHVyaW5nIHN0b3Agb3BlcmF0aW9ucyBpbiB0aGUgTWVkaWFUZWsgTVQ3OTI1IFVTQiB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBVU0IgZW11bGF0aW9uIGFuZCBtYWM4MDIxMS9ubDgwMjExIGludGVyZmFjZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgZGVsYXllZCB3b3JrIGNhbmNlbGxhdGlvbiBkdXJpbmcgZGV2aWNlIHN0b3AgaW4gdGhlIG10NzkyNSBVU0IgZHJpdmVyIGJ5IGludHJvZHVjaW5nIGBtdDc5MjV1X3N0b3AoKWAsIHdoaWNoIGNhbGxzIGBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrKWAgcHJpb3IgdG8gYG10NzkyeHVfc3RvcCgpYC4gVGhpcyBjaGFuZ2UgZml4ZXMgY29uY3VycmVuY3kgYW5kIGxpZmV0aW1lL3VzZS1hZnRlci1mcmVlIGlzc3VlcyB3aGVuIHRlYXJpbmcgZG93biB0aGUgZGV2aWNlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIG1vZGlmeSwgb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgcGFkZGluZywgZGF0YSBzdHJ1Y3R1cmVzLCBvciBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIENvbmN1cnJlbmN5IGJ1Z3MgYW5kIHVzZS1hZnRlci1mcmVlIGVycm9ycyBhcmUgcHJvcGVybHkgY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2Vycywgc28gYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzN2U1MWY0ZDBjODE2MjI1NDdlY2JiNGJiOWU4Nzk1NjdhYzI3ZjFkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMTAgMjA6MjA6MzQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jCmluZGV4IDE3NTcwMjNlYTcwZDUuLmRiNmZkMDE0NDQ3YmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jCkBAIC0xNDcsNiAmIzQzOzE0NywxNSBAQCBzdGF0aWMgaW50IG10NzkyNXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpCiAJcmV0dXJuIGVycjsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIG10NzkyNXVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKQomIzQzO3sKJiM0MzsJc3RydWN0IG10NzkyeF9kZXYgKmRldiA9IG10NzkyeF9od19kZXYoaHcpOwomIzQzOwomIzQzOwljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFtcDtkZXYtJmd0O21sb19wbV93b3JrKTsKJiM0MzsKJiM0MzsJbXQ3OTJ4dV9zdG9wKGh3LCBzdXNwZW5kKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLAogCQkJIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZCkKIHsKQEAgLTE5Myw3ICYjNDM7MjAyLDcgQEAgc3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZiwKIAlpZiAoIW9wcykKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQlvcHMtJmd0O3N0b3AgPSBtdDc5Mnh1X3N0b3A7CiYjNDM7CW9wcy0mZ3Q7c3RvcCA9IG10NzkyNXVfc3RvcDsKIAogCW1kZXYgPSBtdDc2X2FsbG9jX2RldmljZSgmYW1wO3VzYl9pbnRmLSZndDtkZXYsIHNpemVvZigqZGV2KSwgb3BzLCAmYW1wO2Rydl9vcHMpOwogCWlmICghbWRldikKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDIwOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMjUKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiA1NDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gQW5hbHlzaXMgb2YgTVQ3OTI1IFVTQiBEcml2ZXIgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBjaGFuZ2UgbmVjZXNzaXRhdGVzIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0IGludHJvZHVjZXMgYW55IG1lbW9yeSBhY2Nlc3MgcGF0dGVybnMgdGhhdCBjb3VsZCB0cmlnZ2VyIG1lbW9yeSBzYWZldHkgaXNzdWVzIHRoYXQgS01TQU4gaXMgZGVzaWduZWQgdG8gY2F0Y2guCgpGaXJzdCwgSSBzZWUgdGhlIGRpZmYuIEl0JiMzOTtzIGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNgIGZpbGUuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaW52b2x2ZXMgbW9kaWZ5aW5nIHRoZSBgb3BzLSZndDtzdG9wYCBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiB0aGUgYG10NzkyNXVfcHJvYmVgIGZ1bmN0aW9uLiBQcmV2aW91c2x5LCBpdCBwb2ludGVkIHRvIGBtdDc5Mnh1X3N0b3BgLCBidXQgbm93IGl0JiMzOTtzIGJlaW5nIHNldCB0byBgbXQ3OTI1dV9zdG9wYC4gU28sIHRoZSBgc3RvcGAgZnVuY3Rpb24gaGFzIGJlZW4gdXBkYXRlZC4gVGhlIGNoYW5nZSBpcyBzbWFsbCBhbmQgY29udGFpbmVkOyBob3dldmVyLCBpdCAqY291bGQqIGJlIHNpZ25pZmljYW50LgoKSSBuZWVkIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB3aGF0IGBtdDc5MjV1X3N0b3BgIGFuZCBgbXQ3OTJ4dV9zdG9wYCBhcmUgZG9pbmcgaW4gdGVybXMgb2YgbWVtb3J5IG9wZXJhdGlvbnMuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjb2RlIG9mIGBtdDc5MjV1X3N0b3BgLiBUaGUgaW1wb3J0YW50IGZ1bmN0aW9uIGluIHRoZSBwYXRjaCBpcyBgbXQ3OTI1dV9zdG9wYC4KCkkmIzM5O2xsIHF1aWNrbHkgbG9vayB1cCB0aGUgbmV3IGBtdDc5MjV1X3N0b3BgIGZ1bmN0aW9uIGRlZmluaXRpb24uIEl0IHNlZW1zIHRvIGNhbGwgYG10NzkyeHVfc3RvcGAgYWZ0ZXIgY2FuY2VsbGluZyB0aGUgYGRldi0mZ3Q7bWxvX3BtX3dvcmtgLiBUaGlzIGNhbmNlbCBjb3VsZCBiZSBzaWduaWZpY2FudCBiZWNhdXNlIG9mIHRoZSBjb25jdXJyZW5jeSBpbnRyb2R1Y2VkLgoKTm93LCBteSBmb2N1cyBzaGlmdHMgdG8gdW5kZXJzdGFuZGluZyBpZiBhbnkgbmV3IG1lbW9yeSBhY2Nlc3MgcGF0dGVybnMsIHBhcnRpY3VsYXJseSBpbiByZWxhdGlvbiB0byBjb25jdXJyZW50IGFjY2VzcyBvciBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeSBhcmUgaW50cm9kdWNlZCBieSB0aGlzIHVwZGF0ZWQgYHN0b3BgIGZ1bmN0aW9uLCBvciB0aGUgY2hhbmdlcyBhcm91bmQgdGhlIHdvcmsgcXVldWUuIERvZXMgY2FuY2VsbGluZyBhbmQgY2FsbGluZyBmdW5jdGlvbnMgaW4gdGhpcyBvcmRlciBhbHRlciB0aGUgbWVtb3J5IGxhbmRzY2FwZT8gVGhlIHVzZSBvZiBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jYCBkb2VzIGluZGljYXRlIHRoYXQgc3luY2hyb25pemF0aW9uIGlzIHRha2luZyBwbGFjZSwgc28gbm93IG15IGNvbmNlcm4gaXMgd2hldGhlciBhIG1lbW9yeSByYWNlIGlzIGJlaW5nIGludHJvZHVjZWQuCgpJJiMzOTtsbCB1c2UgbXkga25vd2xlZGdlIGFuZCB0b29scyB0byBxdWlja2x5IHVuZGVyc3RhbmQ6CgoxLiAgSG93IGBtdDc5MjV1X3N0b3BgIGludGVyYWN0cyB3aXRoIHRoZSBgZGV2YCBzdHJ1Y3QsIGBtbG9fcG1fd29ya2AgYW5kIGhvdyB0aGVzZSBhcmUgbWFuYWdlZC4KMi4gIEhvdyB0aGUgb3JkZXIgb2YgY2FsbGluZyBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jYCBhbmQgYG10NzkyeHVfc3RvcGAgYWZmZWN0cyBtZW1vcnkgYWNjZXNzLCBhbmQgaWYgdGhpcyBjb3VsZCBjcmVhdGUgYSByYWNlIGNvbmRpdGlvbi4KMy4gIEFueSBvdGhlciByZWxldmFudCBkYXRhIHRoYXQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIG1lbW9yeSB1bnNhZmV0eS4KCklmIEkgZG9uJiMzOTt0IHNlZSBhbnl0aGluZyBpbW1lZGlhdGVseSBnbGFyaW5nLCBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29udGV4dHMgYW5kIHJlbGF0ZWQgZmlsZXMgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBUaGlzIGluaXRpYWwgcmV2aWV3IGlzIGp1c3QgdGhlIGZpcnN0IHBhc3MgYmVmb3JlIHBvdGVudGlhbGx5IHJlcXVlc3RpbmcgYSBmdWxsIEtNU0FOIHJ1biBvciBtYXJraW5nIGl0IGBOZWVkc0tNU0FOPXRydWVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDcwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNDA6XHRcbiAxNDE6XHRcdGVyciA9IF9fbXQ3OTI1X3N0YXJ0KFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuIDE0MjpcdG91dDpcbiAxNDM6XHRcdGNsZWFyX2JpdChNVDc2X1JFU0VULCBcdTAwMjZkZXYtXHUwMDNlbXBoeS5zdGF0ZSk7XG4gMTQ0Olx0XG4gMTQ1Olx0XHRtdDc2X3dvcmtlcl9lbmFibGUoXHUwMDI2ZGV2LVx1MDAzZW10NzYudHhfd29ya2VyKTtcbiAxNDY6XHRcbiAxNDc6XHRcdHJldHVybiBlcnI7XG4gMTQ4Olx0fVxuIDE0OTpcdFxuIDE1MDpcdHN0YXRpYyB2b2lkIG10NzkyNXVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxuIDE1MTpcdHtcbiAxNTI6XHRcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBtdDc5MnhfaHdfZGV2KGh3KTtcbiAxNTM6XHRcbiAxNTQ6XHRcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZkZXYtXHUwMDNlbWxvX3BtX3dvcmspO1xuIDE1NTpcdFxuIDE1NjpcdFx0bXQ3OTJ4dV9zdG9wKGh3LCBzdXNwZW5kKTtcbiAxNTc6XHR9XG4gMTU4Olx0XG4gMTU5Olx0c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcbiAxNjA6XHRcdFx0XHQgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuIDE2MTpcdHtcbiAxNjI6XHRcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3Nl9kcml2ZXJfb3BzIGRydl9vcHMgPSB7XG4gMTYzOlx0XHRcdC50eHdpX3NpemUgPSBNVF9TRElPX1RYRF9TSVpFLFxuIDE2NDpcdFx0XHQuZHJ2X2ZsYWdzID0gTVRfRFJWX1JYX0RNQV9IRFIgfCBNVF9EUlZfSFdfTUdNVF9UWFEgfFxuIDE2NTpcdFx0XHRcdCAgICAgTVRfRFJWX0FNU0RVX09GRkxPQUQsXG4gMTY2Olx0XHRcdC5zdXJ2ZXlfZmxhZ3MgPSBTVVJWRVlfSU5GT19USU1FX1RYIHxcbiAxNjc6XHRcdFx0XHRcdFNVUlZFWV9JTkZPX1RJTUVfUlggfFxuIDE2ODpcdFx0XHRcdFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXG4gMTY5Olx0XHRcdC50eF9wcmVwYXJlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYixcbiAxNzA6XHRcdFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXG4gMTcxOlx0XHRcdC50eF9zdGF0dXNfZGF0YSA9IG10NzkyNV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSxcbiAxNzI6XHRcdFx0LnJ4X3NrYiA9IG10NzkyNV9xdWV1ZV9yeF9za2IsXG4gMTczOlx0XHRcdC5yeF9jaGVjayA9IG10NzkyNV9yeF9jaGVjayxcbiAxNzQ6XHRcdFx0LnN0YV9hZGQgPSBtdDc5MjVfbWFjX3N0YV9hZGQsXG4gMTc1Olx0XHRcdC5zdGFfZXZlbnQgPSBtdDc5MjVfbWFjX3N0YV9ldmVudCxcbiAxNzY6XHRcdFx0LnN0YV9yZW1vdmUgPSBtdDc5MjVfbWFjX3N0YV9yZW1vdmUsXG4gMTc3Olx0XHRcdC51cGRhdGVfc3VydmV5ID0gbXQ3OTJ4X3VwZGF0ZV9jaGFubmVsLFxuIDE3ODpcdFx0fTtcbiAxNzk6XHRcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTJ4X2hpZl9vcHMgaGlmX29wcyA9IHtcbiAxODA6XHRcdFx0Lm1jdV9pbml0ID0gbXQ3OTI1dV9tY3VfaW5pdCxcbiAxODE6XHRcdFx0LmluaXRfcmVzZXQgPSBtdDc5Mnh1X2luaXRfcmVzZXQsXG4gMTgyOlx0XHRcdC5yZXNldCA9IG10NzkyNXVfbWFjX3Jlc2V0LFxuIDE4MzpcdFx0fTtcbiAxODQ6XHRcdHN0YXRpYyBzdHJ1Y3QgbXQ3Nl9idXNfb3BzIGJ1c19vcHMgPSB7XG4gMTg1Olx0XHRcdC5yciA9IG10NzkyeHVfcnIsXG4gMTg2Olx0XHRcdC53ciA9IG10NzkyeHVfd3IsXG4gMTg3Olx0XHRcdC5ybXcgPSBtdDc5Mnh1X3JtdyxcbiAxODg6XHRcdFx0LnJlYWRfY29weSA9IG10NzZ1X3JlYWRfY29weSxcbiAxODk6XHRcdFx0LndyaXRlX2NvcHkgPSBtdDc5Mnh1X2NvcHksXG4gMTkwOlx0XHRcdC50eXBlID0gTVQ3Nl9CVVNfVVNCLFxuIDE5MTpcdFx0fTtcbiAxOTI6XHRcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldih1c2JfaW50Zik7XG4gMTkzOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX29wcyAqb3BzO1xuIDE5NDpcdFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XG4gMTk1Olx0XHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2O1xuIDE5NjpcdFx0c3RydWN0IG10NzZfZGV2ICptZGV2O1xuIDE5NzpcdFx0dTggZmVhdHVyZXM7XG4gMTk4Olx0XHRpbnQgcmV0O1xuIDE5OTpcdFxuIDIwMDpcdFx0b3BzID0gbXQ3OTJ4X2dldF9tYWM4MDIxMV9vcHMoXHUwMDI2dXNiX2ludGYtXHUwMDNlZGV2LCBcdTAwMjZtdDc5MjVfb3BzLFxuIDIwMTpcdFx0XHRcdFx0ICAgICAgKHZvaWQgKilpZC1cdTAwM2Vkcml2ZXJfaW5mbywgXHUwMDI2ZmVhdHVyZXMpO1xuIDIwMjpcdFx0aWYgKCFvcHMpXG4gMjAzOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDIwNDpcdFxuIDIwNTpcdFx0b3BzLVx1MDAzZXN0b3AgPSBtdDc5MjV1X3N0b3A7XG4gMjA2Olx0XG4gMjA3Olx0XHRtZGV2ID0gbXQ3Nl9hbGxvY19kZXZpY2UoXHUwMDI2dXNiX2ludGYtXHUwMDNlZGV2LCBzaXplb2YoKmRldiksIG9wcywgXHUwMDI2ZHJ2X29wcyk7XG4gMjA4Olx0XHRpZiAoIW1kZXYpXG4gMjA5Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzkzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyB0aGUgYG1sb19wbV93b3JrYCBQYXRjaCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhdGNoIGFuZCB3aGF0JiMzOTtzIGRyaXZpbmcgdGhlIGNoYW5nZS4gVGhlIGZpcnN0IHRoaW5nIHRoYXQgY29tZXMgdG8gbWluZCBpcyB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCBgbWxvX3BtX3dvcmtgICppcyouIEkgbWVhbiwgd2l0aG91dCBrbm93aW5nIGl0cyBwdXJwb3NlLCBkaWdnaW5nIGludG8gdGhlIHBhdGNoIGl0c2VsZiBpcyBnb2luZyB0byBiZSBhIGJpdCBsaWtlIHRyeWluZyB0byBzb2x2ZSBhIHB1enpsZSB3aXRoIGhhbGYgdGhlIHBpZWNlcyBtaXNzaW5nLgoKVGhlcmVmb3JlLCBteSBpbW1lZGlhdGUgcGxhbiBpcyB0byBkZWx2ZSBpbnRvIHRoZSBjb2RlLiBJJiMzOTtsbCBsYXVuY2ggYSBgZ3JlcGAgb3BlcmF0aW9uIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlciBkaXJlY3RvcnkgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2ApLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgcHJldHR5IHRhcmdldGVkIGxpc3Qgb2Ygd2hlcmUgYG1sb19wbV93b3JrYCBpcyBkZWZpbmVkLCB1c2VkLCBhbmQsIGhvcGVmdWxseSwgZG9jdW1lbnRlZC4gSG9wZWZ1bGx5LCBpdCBpcyBpbiBhIGNvbW1lbnQsIGFuZCB0aGF0IHdpbGwgZ2l2ZSBtZSBteSBmaXJzdCBjbHVlcy4gRnJvbSB0aGVyZSwgSSBjYW4gc3RhcnQgcGllY2luZyB0b2dldGhlciB0aGUgYnJvYWRlciBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbG9fcG1fd29yayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYz0yNDM9aW50IG10NzkyNV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmMtMjUzLVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBtLnBzX3dvcmssIG10NzkyeF9wbV9wb3dlcl9zYXZlX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jOjI1NDpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yaywgbXQ3OTI1X21sb19wbV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNTUtXHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBtLndha2Vfd29yaywgbXQ3OTJ4X3BtX3dha2Vfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MTUxMT12b2lkIG10NzkyNV9tYWNfcmVzZXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTUyNy1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZwbS1cdTAwM2Vwc193b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jOjE1Mjg6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE1MjktXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNnBtLVx1MDAzZXdha2Vfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jPTE1MTg9bXQ3OTI1X21sb19wbV9pdGVyKHZvaWQgKnByaXYsIHU4ICptYWMsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE1MzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTUzODp2b2lkIG10NzkyNV9tbG9fcG1fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTUzOS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTU0MC1cdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG10NzkyeF9kZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTU0MTpcdFx0XHRcdFx0ICAgICAgbWxvX3BtX3dvcmsud29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTU0Mi1cdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gbXQ3Nl9odyhkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0xNzA0PXN0YXRpYyBpbnQgbXQ3OTI1X3N1c3BlbmQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE3MTMtXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZXBtLnBzX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE3MTQ6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xNzE1LVx0bXQ3Nl9jb25uYWNfZnJlZV9wZW5kaW5nX3R4X3NrYnMoXHUwMDI2ZGV2LVx1MDAzZXBtLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MjE1MD1zdGF0aWMgdm9pZCBtdDc5MjVfbGlua19pbmZvX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTIxOTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjE5ODpcdFx0aWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhodywgXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrLCA1ICogSFopO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTIxOTktXHRcdG12aWYtXHUwMDNlbWxvX3BtX3N0YXRlID0gTVQ3OTJ4X01MT19DSEFOR0VEX1BTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0yNzA3PXN0YXRpYyB2b2lkIG10NzkyNV9zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIHN1c3BlbmQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI3MTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjcxMTpcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZkZXYtXHUwMDNlbWxvX3BtX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI3MTItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg9MzMwPWludCBtdDc5MjVfbWN1X3VuaV9yeF9iYShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMzMi1cdFx0XHQgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbXQ3OTI1Lmg6MzMzOnZvaWQgbXQ3OTI1X21sb19wbV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tdDc5MjUuaC0zMzQtdm9pZCBtdDc5MjVfc2Nhbl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9NDE9c3RhdGljIHZvaWQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTU1LVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnBtLVx1MDAzZXBzX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NTY6XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTU3LVx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZwbS1cdTAwM2V3YWtlX3dvcmspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTczNT1zdGF0aWMgaW50IG10NzkyNV9wY2lfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXZpY2UpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNzQ2LVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnBtLVx1MDAzZXBzX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM6NzQ3Olx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy03NDgtXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNnBtLVx1MDAzZXdha2Vfd29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MTUwPXN0YXRpYyB2b2lkIG10NzkyNXVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE1NDpcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZkZXYtXHUwMDNlbWxvX3BtX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTU1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTI3OT1zdGF0aWMgaW50IG10NzkyNXVfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IHN0YXRlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI4Ny1cdGZsdXNoX3dvcmsoXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6Mjg4Olx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yODktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD0yOTM9c3RydWN0IG10NzkyeF9kZXYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMzMxLVx0c3RydWN0IHdvcmtfc3RydWN0IGlwdjZfbnNfd29yaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6MzMyOlx0c3RydWN0IGRlbGF5ZWRfd29yayBtbG9fcG1fd29yaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMzMzLVx0LyogSVB2NiBhZGRyZXNzZXMgZm9yIFdvV0xBTiAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAyMDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDcxCgkJCQkJCQlvdXRwdXQ6IDE3MAoJCQkJCQkJdGhvdWdodHM6IDM2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNVDc5MjVVIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBhZGRyZXNzaW5nIGEgcHJldHR5IGNsYXNzaWMgY29uY3VycmVuY3kgaXNzdWUgaW4gdGhlIE1UNzkyNVUgVVNCIGRyaXZlci4gU3BlY2lmaWNhbGx5LCB3ZSYjMzk7cmUgdHJ5aW5nIHRvIHByZXZlbnQgYSByYWNlIGNvbmRpdGlvbiBvciBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpbyB3aGVuIHN0b3BwaW5nIHRoZSBkZXZpY2UuIFRoZSBjb3JlIHByb2JsZW0gc2VlbXMgdG8gYmUgdGhlIHRpbWluZyBvZiB0aGUgYGRldi0mZ3Q7bWxvX3BtX3dvcmtgIHdvcmtxdWV1ZSBhbmQgdGhlIGRldmljZSBzaHV0ZG93biBzZXF1ZW5jZS4gVGhlIGFkZGl0aW9uIG9mIGBtdDc5MjV1X3N0b3BgIGlzIGRlc2lnbmVkIHRvIHN5bmNocm9ub3VzbHkgY2FuY2VsIHRoYXQgd29yayBiZWZvcmUgY2FsbGluZyB0aGUgZXhpc3RpbmcgYG10NzkyeHVfc3RvcGAsIHdoaWNoIGlzIHRoZSBhY3R1YWwgZGV2aWNlIHN0b3AgZnVuY3Rpb24uCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGZpeCBpcyBjb3JyZWN0IGJlY2F1c2UsIGF0IHRoZSBjb3JlLCBpdCBhcHBlYXJzIHRvIHByb3Blcmx5IGhhbmRsZSB0aGUgd29ya3F1ZXVlLCBlbnN1cmluZyB0aGF0IGl0IGlzIHN0b3BwZWQgYmVmb3JlIGZ1cnRoZXIgZGV2aWNlIHNodXRkb3duIHByb2NlZHVyZXMgY29udGludWUuIEkgYW0gcmVhc3N1cmVkIHRoYXQgd2UgYXJlIG5vdCBhdHRlbXB0aW5nIGFueSBjb21wbGljYXRlZCBjaGFuZ2VzIG9mIGRldmljZSBpbml0aWFsaXphdGlvbiBvciBzZW5kaW5nIGtlcm5lbCBkYXRhIHRvIHVzZXIgc3BhY2UuCgpOb3csIGxldCYjMzk7cyBkbyBhIGRlZXAgZGl2ZSBmb3IgdGhlIHBvdGVudGlhbCByaXNrcy4gSSBkbyBub3Qgc2VlIGFueSBhcHBhcmVudCByaXNrcyBvciBuZWVkIGZvciBhZGRpdGlvbmFsIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikgY2hlY2tzLiBIZXJlJiMzOTtzIHdoeToKCjEuICAqKk5vIFVzZXItU3BhY2UgRGF0YSBFeHBvc3VyZToqKiBUaGUgcGF0Y2ggZG9lc24mIzM5O3QgaW52b2x2ZSBhbnkgY2hhbmdlcyB0byBrZXJuZWwgc3RydWN0dXJlcyBiZWluZyBwYXNzZWQgdG8gdXNlciBzcGFjZS4KMi4gICoqTm8gVW5pbml0aWFsaXplZCBNZW1vcnkgSXNzdWVzOioqIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIHJlYWQgb3IgdXNlZCBmb3IgYnJhbmNoaW5nLgozLiAgKipObyBJbml0aWFsaXphdGlvbiBDb25jZXJuczoqKiBUaGUgcGF0Y2ggZG9lc24mIzM5O3QgYWx0ZXIgYW55IGFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gcm91dGluZXMuCjQuICAqKk5vIEJvdW5kcyBWaW9sYXRpb25zOioqIFRoZXJlIGFyZSBubyBsZW5ndGggb3IgYm91bmRzIGNoZWNrIGNoYW5nZXMsIHdoaWNoIG1pZ2h0IGludHJvZHVjZSB2dWxuZXJhYmlsaXRpZXMuCgpUaGlzIGZpeCBmb2N1c2VzIG9uIHN5bmNocm9uaXphdGlvbjogYG10NzkyNXVfc3RvcCgpYCBjYWxscyBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7ZGV2LSZndDttbG9fcG1fd29yaylgIGFuZCB0aGVuIGBtdDc5Mnh1X3N0b3AoaHcsIHN1c3BlbmQpYCwgYW5kIHRoZSByZWxldmFudCBgb3BzLSZndDtzdG9wYCBwb2ludGVyIGlzIHVwZGF0ZWQuCgpUaGlzIGlzIGEgZ29vZCwgdGFyZ2V0ZWQgc3luY2hyb25pemF0aW9uIGZpeCwgdGhlIHBvdGVudGlhbCBmb3IgVXNlLUFmdGVyLUZyZWUgKFVBRikgYW5kIGNvbmN1cnJlbmN5IGlzc3VlcyBhcmUgbW9uaXRvcmVkIGFuZCBkZXRlY3RlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgZGVidWdnZXJzLiBLTVNBTiBpcyBzcGVjaWZpY2FsbHkgZm9yIGRldGVjdGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gU28sIEkgc2VlIG5vIG5lZWQgZm9yIEtNU0FOIHRvIGJlIGVuYWJsZWQgaW4gdGhpcyBjYXNlLgoKVGhlcmVmb3JlLCBgTmVlZHNLTVNBTiA9IGZhbHNlYC4gSSBhbSByZWFkeSB0byBpbnZva2UgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMjA6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGRlbGF5ZWQgd29yayBjYW5jZWxsYXRpb24gZHVyaW5nIGRldmljZSBzdG9wIGluIHRoZSBtdDc5MjUgVVNCIGRyaXZlciBieSBpbnRyb2R1Y2luZyBgbXQ3OTI1dV9zdG9wKClgLCB3aGljaCBjYWxscyBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yaylgIHByaW9yIHRvIGBtdDc5Mnh1X3N0b3AoKWAuIFRoaXMgY2hhbmdlIGZpeGVzIGNvbmN1cnJlbmN5IGFuZCBsaWZldGltZS91c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgd2hlbiB0ZWFyaW5nIGRvd24gdGhlIGRldmljZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCBtb2RpZnksIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHBhZGRpbmcsIGRhdGEgc3RydWN0dXJlcywgb3IgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLiBDb25jdXJyZW5jeSBidWdzIGFuZCB1c2UtYWZ0ZXItZnJlZSBlcnJvcnMgYXJlIHByb3Blcmx5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dlcnMsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGRlbGF5ZWQgd29yayBjYW5jZWxsYXRpb24gZHVyaW5nIGRldmljZSBzdG9wIGluIHRoZSBtdDc5MjUgVVNCIGRyaXZlciBieSBpbnRyb2R1Y2luZyBgbXQ3OTI1dV9zdG9wKClgLCB3aGljaCBjYWxscyBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yaylgIHByaW9yIHRvIGBtdDc5Mnh1X3N0b3AoKWAuIFRoaXMgY2hhbmdlIGZpeGVzIGNvbmN1cnJlbmN5IGFuZCBsaWZldGltZS91c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgd2hlbiB0ZWFyaW5nIGRvd24gdGhlIGRldmljZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlLCBtb2RpZnksIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHBhZGRpbmcsIGRhdGEgc3RydWN0dXJlcywgb3IgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLiBDb25jdXJyZW5jeSBidWdzIGFuZCB1c2UtYWZ0ZXItZnJlZSBlcnJvcnMgYXJlIHByb3Blcmx5IGNvdmVyZWQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dlcnMsIHNvIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMDozNS4yNTg0NjAxNDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjA0NzAxOTAyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNVDc5MjVVXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCIsXG4gICAgXCJXTEFOX1ZFTkRPUl9NRURJQVRFS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm10NzkyNXVfc3RvcFwiLFxuICAgIFwibXQ3OTI1dV9wcm9iZVwiLFxuICAgIFwibXQ3OTI1X21sb19wbV93b3JrXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgZGVsYXllZCB3b3JrIGNhbmNlbGxhdGlvbiBkdXJpbmcgZGV2aWNlIHN0b3AgaW4gdGhlIG10NzkyNSBVU0IgZHJpdmVyIGJ5IGludHJvZHVjaW5nIGBtdDc5MjV1X3N0b3AoKWAsIHdoaWNoIGNhbGxzIGBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmRldi1cXHUwMDNlbWxvX3BtX3dvcmspYCBwcmlvciB0byBgbXQ3OTJ4dV9zdG9wKClgLiBUaGlzIGNoYW5nZSBmaXhlcyBjb25jdXJyZW5jeSBhbmQgbGlmZXRpbWUvdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHdoZW4gdGVhcmluZyBkb3duIHRoZSBkZXZpY2UuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgbW9kaWZ5LCBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBwYWRkaW5nLCBkYXRhIHN0cnVjdHVyZXMsIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gQ29uY3VycmVuY3kgYnVncyBhbmQgdXNlLWFmdGVyLWZyZWUgZXJyb3JzIGFyZSBwcm9wZXJseSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnZXJzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIG10NzkyNXVfc3RvcCB0byBjYW5jZWwgdGhlIGRlbGF5ZWQgTUxPIFBNIHdvcmsgKG1sb19wbV93b3JrKSBkdXJpbmcgc3RvcCBvcGVyYXRpb25zIGluIHRoZSBNZWRpYVRlayBNVDc5MjUgVVNCIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gYW5kIG1hYzgwMjExL25sODAyMTEgaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjA6MzUuMjU4NDY5MTUxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTAxNDAwNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzN2U1MWY0ZDBjODE2MjI1NDdlY2JiNGJiOWU4Nzk1NjdhYzI3ZjFkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDEwIDIwOjIwOjM0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNcXG5pbmRleCAxNzU3MDIzZWE3MGQ1Li5kYjZmZDAxNDQ0N2JkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNcXG5AQCAtMTQ3LDYgKzE0NywxNSBAQCBzdGF0aWMgaW50IG10NzkyNXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIG10NzkyNXVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxcbit7XFxuK1xcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBtdDc5MnhfaHdfZGV2KGh3KTtcXG4rXFxuK1xcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2VtbG9fcG1fd29yayk7XFxuK1xcbitcXHRtdDc5Mnh1X3N0b3AoaHcsIHN1c3BlbmQpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbiBcXHRcXHRcXHQgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbiB7XFxuQEAgLTE5Myw3ICsyMDIsNyBAQCBzdGF0aWMgaW50IG10NzkyNXVfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmLFxcbiBcXHRpZiAoIW9wcylcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbi1cXHRvcHMtXFx1MDAzZXN0b3AgPSBtdDc5Mnh1X3N0b3A7XFxuK1xcdG9wcy1cXHUwMDNlc3RvcCA9IG10NzkyNXVfc3RvcDtcXG4gXFxuIFxcdG1kZXYgPSBtdDc2X2FsbG9jX2RldmljZShcXHUwMDI2dXNiX2ludGYtXFx1MDAzZWRldiwgc2l6ZW9mKCpkZXYpLCBvcHMsIFxcdTAwMjZkcnZfb3BzKTtcXG4gXFx0aWYgKCFtZGV2KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMDozNS44NDk5MTg2NDZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjU4MjYyNDI1NjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1dV9zdG9wXCIsXG4gICAgXCJtdDc5MjV1X3Byb2JlXCIsXG4gICAgXCJtdDc5MjVfbWxvX3BtX3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIG10NzkyNXVfc3RvcCB0byBjYW5jZWwgdGhlIGRlbGF5ZWQgTUxPIFBNIHdvcmsgKG1sb19wbV93b3JrKSBkdXJpbmcgc3RvcCBvcGVyYXRpb25zIGluIHRoZSBNZWRpYVRlayBNVDc5MjUgVVNCIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gYW5kIG1hYzgwMjExL25sODAyMTEgaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzN2U1MWY0ZDBjODE2MjI1NDdlY2JiNGJiOWU4Nzk1NjdhYzI3ZjFkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMjA6MjA6MzQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jXG5pbmRleCAxNzU3MDIzZWE3MGQ1Li5kYjZmZDAxNDQ0N2JkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jXG5AQCAtMTQ3LDYgKzE0NywxNSBAQCBzdGF0aWMgaW50IG10NzkyNXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBtdDc5MjV1X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcbit7XG4rXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gbXQ3OTJ4X2h3X2Rldihodyk7XG4rXG4rXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrKTtcbitcbitcdG10NzkyeHVfc3RvcChodywgc3VzcGVuZCk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgbXQ3OTI1dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG4gXHRcdFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbiB7XG5AQCAtMTkzLDcgKzIwMiw3IEBAIHN0YXRpYyBpbnQgbXQ3OTI1dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG4gXHRpZiAoIW9wcylcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRvcHMtXHUwMDNlc3RvcCA9IG10NzkyeHVfc3RvcDtcbitcdG9wcy1cdTAwM2VzdG9wID0gbXQ3OTI1dV9zdG9wO1xuIFxuIFx0bWRldiA9IG10NzZfYWxsb2NfZGV2aWNlKFx1MDAyNnVzYl9pbnRmLVx1MDAzZWRldiwgc2l6ZW9mKCpkZXYpLCBvcHMsIFx1MDAyNmRydl9vcHMpO1xuIFx0aWYgKCFtZGV2KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjA6MzUuODQ5OTIxNDI2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTk5NTc5NDgxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBVU0IgRHJpdmVyIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGJlZW4gbW9kaWZpZWQgaW4gdGhpcyBwYXRjaC4gSXQgbG9va3MgbGlrZSB3ZSdyZSBkZWFsaW5nIHdpdGggYSBjaGFuZ2UgdG8gdGhlIGBtdDc5MjVgIFVTQiB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jYCBmaWxlLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSB0aGUgaW50cm9kdWN0aW9uIG9mIGEgbmV3IGZ1bmN0aW9uLCBgbXQ3OTI1dV9zdG9wYCwgd2hpY2ggaXMgbm93IGFzc2lnbmVkIHRvIHRoZSBgb3BzLVx1MDAzZXN0b3BgIHBvaW50ZXIgaW4gdGhlIGRyaXZlcidzIG9wZXJhdGlvbiBzdHJ1Y3R1cmUuIEluc2lkZSBgbXQ3OTI1dV9zdG9wYCwgd2Ugc2VlIGBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmNgIGFuZCBhIGNhbGwgdG8gYG10NzkyeHVfc3RvcGAuIFRoaXMgcmVwbGFjZXMgdGhlIHByZXZpb3VzIGFzc2lnbm1lbnQgb2YgYG9wcy1cdTAwM2VzdG9wID0gbXQ3OTJ4dV9zdG9wYCBpbiB0aGUgcHJvYmUgZnVuY3Rpb24gYG10NzkyNXVfcHJvYmVgLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGNhbiB3ZSBmdXp6IHRoaXMgZHJpdmVyIGVmZmVjdGl2ZWx5IHVzaW5nIHN0YW5kYXJkIGZ1enppbmcgdGVjaG5pcXVlcz8gUGFydGljdWxhcmx5LCBjYW4gd2UgcmVhY2ggaXQgdmlhIFVTQiBlbXVsYXRpb24/IFRoaXMgaXMga2V5LiBGb3J0dW5hdGVseSwgSSBrbm93IHN5emthbGxlciBoYXMgcHJldHR5IHJvYnVzdCBzdXBwb3J0IGZvciBVU0IgZnV6emluZywgaGFuZGxpbmcgcmF3LWdhZGdldCwgdmhjaSwgYW5kIGR1bW15X2hjZC4gSXQgY2FuIHByb2JlIFVTQiBkcml2ZXJzIHdpdGggbWF0Y2hpbmcgYHVzYl9kZXZpY2VfaWRgIGVudHJpZXMgdXNpbmcgYHN5el91c2JfY29ubmVjdGAgb3IgdGhyb3VnaCB0aGUgVVNCIGVtdWxhdGlvbiBpdHNlbGYuIFNvLCBhcmUgd2UgdGFsa2luZyBhYm91dCBhIGZ1enphYmxlIFVTQiBkcml2ZXIgaGVyZT8gVGhlIGFuc3dlciBpcyBwcm9iYWJseSB5ZXMgZ2l2ZW4gd2hhdCBJIGtub3cgYWJvdXQgZnV6emluZyBtZXRob2RvbG9naWVzLlxuXG5MZXQncyBjb25maXJtOiBBY2NvcmRpbmcgdG8gU2VjdGlvbiAyIFx1MDAyNiAzIG9mIHRoZSBzeXprYWxsZXIgZG9jdW1lbnRhdGlvbiwgdGhlIGZvY3VzIGlzIG9uIGRyaXZlcnMgdGhhdCBhcmUgcmVhY2hhYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzLCBpbmNsdWRpbmcgVVNCIGdhZGdldC4gR2l2ZW4gdGhlIGRvY3VtZW50YXRpb24gc3RhdGVzIHRoYXQgXCJVU0Igd2lyZWxlc3MgZHJpdmVycyBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uIChzeXprYWxsZXIgaGFzIGZ1bGwgVVNCIGRldmljZSBmdXp6aW5nIC8gcmF3IGdhZGdldCBzdXBwb3J0KVwiLCBpdCdzIGxvb2tpbmcgcHJvbWlzaW5nIVxuXG5OZXh0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGtlcm5lbCBjb25maWd1cmF0aW9ucyBhcmUgbmVjZXNzYXJ5IGZvciB0aGUgYG10NzkyNWAgVVNCIGRyaXZlci4gVGltZSB0byBkaWcgaW50byB0aGUgYEtjb25maWdgIGZpbGVzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9gIHRvIGZpbmQgdGhlIHJlbGV2YW50IG9wdGlvbnMuIEknbGwgdXNlIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBlZmZpY2llbnRseSBwYXJzZSB0aGUgS2NvbmZpZyBmaWxlcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMgZm9yIHByb3BlciBVU0IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzExMywiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjIwOjQ1Ljg0NTcyMDc1N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzI3NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbiAgIDI6XFx0Y29uZmlnIE1UNzkyNV9DT01NT05cXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRzZWxlY3QgTVQ3OTJ4X0xJQlxcbiAgIDU6XFx0XFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuICAgNjpcXHRcXG4gICA3OlxcdGNvbmZpZyBNVDc5MjVFXFxuICAgODpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTI1RSAoUENJZSkgc3VwcG9ydFxcXCJcXG4gICA5OlxcdFxcdHNlbGVjdCBNVDc5MjVfQ09NTU9OXFxuICAxMDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTI1LWJhc2VkIHdpcmVsZXNzIFBDSWUgZGV2aWNlcyxcXG4gIDE0OlxcdFxcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXFxuICAxNTpcXHRcXHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTVQ3OTI1VVxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyNVUgKFVTQikgc3VwcG9ydFxcXCJcXG4gIDIxOlxcdFxcdHNlbGVjdCBNVDc5MnhfVVNCXFxuICAyMjpcXHRcXHRzZWxlY3QgTVQ3OTI1X0NPTU1PTlxcbiAgMjM6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgMjQ6XFx0XFx0ZGVwZW5kcyBvbiBVU0JcXG4gIDI1OlxcdFxcdGhlbHBcXG4gIDI2OlxcdFxcdCAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIE1UNzkyNS1iYXNlZCB3aXJlbGVzcyBVU0IgZGV2aWNlcyxcXG4gIDI3OlxcdFxcdCAgd2hpY2ggc3VwcG9ydCBvcGVyYXRpb24gYXQgNkdIeiwgNUdIeiwgYW5kIDIuNEdIeiBJRUVFIDgwMi4xMWJlXFxuICAyODpcXHRcXHQgIDJ4MjoyU1MgNDA5Ni1RQU0sIDE2ME1IeiBjaGFubmVscy5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMDo0NS44NDY4NTY5MDhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NDMwODE2MzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBLY29uZmlnIGZvciB0aGUgTVQ3NiBXaXJlbGVzcyBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBkaXZpbmcgaW50byB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVyIHNpdHVhdGlvbi4gTXkgZ3V0IHRlbGxzIG1lIHdlIG5lZWQgdG8gdGhvcm91Z2hseSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGF0IGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBvbmUgbG9jYXRlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnYC4gVGhpcyBpcyBzdGFuZGFyZCBwcm9jZWR1cmUsIGJ1dCBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IHdoZW4gd2UgYXJlIGRlYnVnZ2luZyBhIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgb3IgY29uZmlndXJhdGlvbiBpc3N1ZS4gSXQncyB0aGUgY2VudHJhbCBjb25maWd1cmF0aW9uIGZpbGUsIHNvIGl0J3MgdGhlIGZpcnN0IHBsYWNlIEknZCBsb29rIHRvIHVuZGVyc3RhbmQgaG93IHRoaW5ncyBhcmUgY29udHJvbGxlZCwgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBtaWdodCBiZSBhdCBwbGF5LiBXZSBuZWVkIHRvIGRpc3NlY3QgdGhpcyB0byBiZSBzdXJlIHdlIGFyZSBub3QgbWlzc2luZyBhbnl0aGluZyByZWxhdGVkIHRvIGhvdyBpdCBpcyBkZXNpZ25lZCBhbmQgaG93IHRoaW5ncyBhcmUgc2V0IHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTU1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMDo1My4yNzc2NzczMTVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDE5MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHRjb25maWcgTVQ3Nl9DT1JFXFxuICAgMzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDQ6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTFxcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTVQ3Nl9MRURTXFxuICAgNzpcXHRcXHRib29sXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxcbiAgIDk6XFx0XFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTVQ3Nl9DT1JFPUxFRFNfQ0xBU1NcXG4gIDEwOlxcdFxcdGRlZmF1bHQgeVxcbiAgMTE6XFx0XFxuICAxMjpcXHRjb25maWcgTVQ3Nl9VU0JcXG4gIDEzOlxcdFxcdHRyaXN0YXRlXFxuICAxNDpcXHRcXHRkZXBlbmRzIG9uIE1UNzZfQ09SRVxcbiAgMTU6XFx0XFxuICAxNjpcXHRjb25maWcgTVQ3Nl9TRElPXFxuICAxNzpcXHRcXHR0cmlzdGF0ZVxcbiAgMTg6XFx0XFx0ZGVwZW5kcyBvbiBNVDc2X0NPUkVcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIE1UNzZ4MDJfTElCXFxuICAyMTpcXHRcXHR0cmlzdGF0ZVxcbiAgMjI6XFx0XFx0c2VsZWN0IE1UNzZfQ09SRVxcbiAgMjM6XFx0XFxuICAyNDpcXHRjb25maWcgTVQ3NngwMl9VU0JcXG4gIDI1OlxcdFxcdHRyaXN0YXRlXFxuICAyNjpcXHRcXHRzZWxlY3QgTVQ3Nl9VU0JcXG4gIDI3OlxcdFxcbiAgMjg6XFx0Y29uZmlnIE1UNzZfQ09OTkFDX0xJQlxcbiAgMjk6XFx0XFx0dHJpc3RhdGVcXG4gIDMwOlxcdFxcdHNlbGVjdCBNVDc2X0NPUkVcXG4gIDMxOlxcdFxcbiAgMzI6XFx0Y29uZmlnIE1UNzkyeF9MSUJcXG4gIDMzOlxcdFxcdHRyaXN0YXRlXFxuICAzNDpcXHRcXHRzZWxlY3QgTVQ3Nl9DT05OQUNfTElCXFxuICAzNTpcXHRcXG4gIDM2OlxcdGNvbmZpZyBNVDc5MnhfVVNCXFxuICAzNzpcXHRcXHR0cmlzdGF0ZVxcbiAgMzg6XFx0XFx0c2VsZWN0IE1UNzZfVVNCXFxuICAzOTpcXHRcXG4gIDQwOlxcdGNvbmZpZyBNVDc2X05QVVxcbiAgNDE6XFx0XFx0dHJpc3RhdGVcXG4gIDQyOlxcdFxcdGRlcGVuZHMgb24gTkVUX0FJUk9IQV9OUFU9eSB8fCBNVDc2X0NPUkU9TkVUX0FJUk9IQV9OUFVcXG4gIDQzOlxcdFxcbiAgNDQ6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4MC9LY29uZmlnXFxcIlxcbiAgNDU6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzZ4Mi9LY29uZmlnXFxcIlxcbiAgNDY6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYwMy9LY29uZmlnXFxcIlxcbiAgNDc6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9LY29uZmlnXFxcIlxcbiAgNDg6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9LY29uZmlnXFxcIlxcbiAgNDk6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnXFxcIlxcbiAgNTA6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzk5Ni9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMDo1My4yNzc4MjIwNDVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTcwMTEwMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgTVQ3OTI1IERyaXZlciBCdWlsZCBQcm9jZXNzKipcblxuT2theSwgc28gdGhlIGltbWVkaWF0ZSBvYmplY3RpdmUgaXMgdG8gdW5kZXJzdGFuZCBob3cgdGhlIE1UNzkyNSB3aXJlbGVzcyBkcml2ZXIgaXMgY29uc3RydWN0ZWQgd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLiBUaGUgbG9naWNhbCBzdGFydGluZyBwb2ludCwgYXMgYWx3YXlzLCBpcyB0aGUgYE1ha2VmaWxlYCDigJMgc3BlY2lmaWNhbGx5IHRoZSBvbmUgcmVzaWRpbmcgd2l0aGluIHRoZSByZWxldmFudCBkcml2ZXIgZGlyZWN0b3J5LiBJJ20gemVyb2luZyBpbiBvbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGVgLiBUaGlzIGZpbGUgc2hvdWxkIGNvbnRhaW4gdGhlIGNydWNpYWwgYnVpbGQgaW5zdHJ1Y3Rpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBvYmplY3QgZmlsZSBkZWZpbml0aW9ucyB0aGF0IGRpY3RhdGUgaG93IHRoZSBNVDc5MjUgZHJpdmVyIGdldHMgY29tcGlsZWQgYW5kIGxpbmtlZCBpbnRvIHRoZSBrZXJuZWwgbW9kdWxlIChvciBwb3RlbnRpYWxseSwgYnVpbHQgc3RhdGljYWxseSwgdGhvdWdoIGxlc3MgbGlrZWx5IGZvciB3aXJlbGVzcykuIE15IGV4cGVjdGF0aW9uIGlzIHRoYXQgdGhpcyBNYWtlZmlsZSB3aWxsIGJlIGEgY29tYmluYXRpb24gb2YgcnVsZXMsIHZhcmlhYmxlcyB0aGF0IHdpbGwgdWx0aW1hdGVseSBzcGVjaWZ5IHRoZSBjb21waWxlciBmbGFncywgc291cmNlIGZpbGVzLCBhbmQgYW55IG90aGVyIGV4dGVybmFsIGRlcGVuZGVuY2llcyByZXF1aXJlZCBmb3Igc3VjY2Vzc2Z1bCBjb21waWxhdGlvbiBvZiB0aGUgZHJpdmVyLiBJJ20gYW50aWNpcGF0aW5nIHRoZSBzdGFuZGFyZCBrZXJuZWwgYnVpbGQgc3lzdGVtIGlkaW9tczogdXNlIG9mIGBvYmotbWAsIGBjY2ZsYWdzLXlgLCBgc3JjLXlgLCBldGMuIHRvIG1hbmFnZSBvYmplY3QgZmlsZXMgYW5kIGRlcGVuZGVuY2llcy4gSXTigJlzIGEgcHJldHR5IHN0YW5kYXJkIGFwcHJvYWNoLCBidXQgdGhlIGRldGFpbHMgaW4gdGhpcyBzcGVjaWZpYyBNYWtlZmlsZSB3aWxsIGJlIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgYW55IE1lZGlhdGVrLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIG9yIGN1c3RvbWl6YXRpb25zIGZvciB0aGUgNzkyNSBjaGlwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDc4LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMDo1NS44NDc5MzU3NDRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTUzNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG4gICAyOlxcdFxcbiAgIDM6XFx0b2JqLSQoQ09ORklHX01UNzkyNV9DT01NT04pICs9IG10NzkyNS1jb21tb24ub1xcbiAgIDQ6XFx0b2JqLSQoQ09ORklHX01UNzkyNUUpICs9IG10NzkyNWUub1xcbiAgIDU6XFx0b2JqLSQoQ09ORklHX01UNzkyNVUpICs9IG10NzkyNXUub1xcbiAgIDY6XFx0XFxuICAgNzpcXHRtdDc5MjUtY29tbW9uLXkgOj0gbWFjLm8gbWN1Lm8gcmVnZC5vIG1haW4ubyBpbml0Lm8gZGVidWdmcy5vIG5hbi5vXFxuICAgODpcXHRtdDc5MjUtY29tbW9uLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cXG4gICA5OlxcdG10NzkyNWUteSA6PSBwY2kubyBwY2lfbWFjLm8gcGNpX21jdS5vXFxuICAxMDpcXHRtdDc5MjV1LXkgOj0gdXNiLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjA6NTUuODQ4MDUzNTI1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjA1Nzk5MjIzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIGNvZGUgcmVsYXRlZCB0byBgbXQ3OTI1dV9zdG9wYCBhbmQgaXRzIGNhbGxlcnM6XG5cbioqRGl2aW5nIGludG8gdGhlIGBtdDc5MjV1X3N0b3BgIENvZGUqKlxuXG5Pa2F5LCB0aW1lIHRvIHplcm8gaW4gb24gdGhpcyBgbXQ3OTI1dV9zdG9wYCBmdW5jdGlvbiBhbmQgc2VlIHdoYXQncyBnb2luZyBvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgYW5kLCBjcnVjaWFsbHksIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBJJ20gdGhpbmtpbmcgSSdsbCBzdGFydCBieSB0cmFjaW5nIHRoZSBmdW5jdGlvbidzIGRlZmluaXRpb24gYW5kIHRoZW4gaW1tZWRpYXRlbHkgYnJhbmNoIG91dCB0byBpdHMgY2FsbCBzaXRlcy4gV2hhdCB0cmlnZ2VycyB0aGlzIHJvdXRpbmU/IEFyZSB0aGVyZSBhbnkgc3VidGxldGllcyBpbiBpdHMgaW1wbGVtZW50YXRpb24gdGhhdCBtaWdodCBiZSBjYXVzaW5nIGFuIGlzc3VlLCBwYXJ0aWN1bGFybHkgZ2l2ZW4gdGhlIHNwZWNpZmljIGNvbnRleHQgb2YgdGhpcyBoYXJkd2FyZT8gSSdsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCByZXNvdXJjZSBsZWFrcywgb3IgYW55dGhpbmcgdGhhdCBjb3VsZCBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIHRoZSBzaHV0ZG93biBvciBoYWx0IHByb2Nlc3Mgb2YgdGhlIGBtdDc5MjV1YC4gSSBleHBlY3QgdG8gZmluZCBzb21lIGludGVyZXN0aW5nIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZSBkcml2ZXIsIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciwgYW5kIHBvdGVudGlhbGx5IHRoZSBuZXR3b3JrIHN0YWNrIGl0c2VsZi4gVGhpcyBkZWVwZXIgZGl2ZSBzaG91bGQgcmV2ZWFsIGFueSBwb3RlbnRpYWwgcHJvYmxlbXMgd2l0aCB0aGUgc3RvcHBpbmcgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA3MSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjE6MDEuOTA2MDQ4NjAzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDM3ODYwNTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyNXVfXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjEyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBtdDc5MjV1X2RldmljZV90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTEzLVxcdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgwZThkLCAweDY2MzksIDB4ZmYsIDB4ZmYsIDB4ZmYpLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MjY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjI3Om10NzkyNXVfbWN1X3NlbmRfbWVzc2FnZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMjgtXFx0XFx0XFx0IGludCBjbWQsIGludCAqc2VxKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtNTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6NTY6c3RhdGljIGludCBtdDc5MjV1X21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtNTcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtNjEtXFx0XFx0LnRhaWxyb29tID0gTVRfVVNCX1RBSUxfU0laRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzo2MjpcXHRcXHQubWN1X3NrYl9zZW5kX21zZyA9IG10NzkyNXVfbWN1X3NlbmRfbWVzc2FnZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy02My1cXHRcXHQubWN1X3BhcnNlX3Jlc3BvbnNlID0gbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTc5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjgwOnN0YXRpYyBpbnQgbXQ3OTI1dV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy04MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTUwOnN0YXRpYyB2b2lkIG10NzkyNXVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MTU5OnN0YXRpYyBpbnQgbXQ3OTI1dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTYwLVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNzktXFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc5MnhfaGlmX29wcyBoaWZfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjE4MDpcXHRcXHQubWN1X2luaXQgPSBtdDc5MjV1X21jdV9pbml0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE4MS1cXHRcXHQuaW5pdF9yZXNldCA9IG10NzkyeHVfaW5pdF9yZXNldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxODI6XFx0XFx0LnJlc2V0ID0gbXQ3OTI1dV9tYWNfcmVzZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMTgzLVxcdH07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yMDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MjA1OlxcdG9wcy1cXHUwMDNlc3RvcCA9IG10NzkyNXVfc3RvcDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yMDYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yNzgtI2lmZGVmIENPTkZJR19QTVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjI3OTpzdGF0aWMgaW50IG10NzkyNXVfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IHN0YXRlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI4MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zMTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzEyOnN0YXRpYyBpbnQgbXQ3OTI1dV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM1OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzozNjA6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG10NzkyNXVfZGV2aWNlX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNjEtTU9EVUxFX0ZJUk1XQVJFKE1UNzkyNV9GSVJNV0FSRV9XTSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MzYyPU1PRFVMRV9GSVJNV0FSRShNVDc5MjVfUk9NX1BBVENIKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzY0OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjV1X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNjUtXFx0Lm5hbWVcXHRcXHQ9IEtCVUlMRF9NT0ROQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM2NjpcXHQuaWRfdGFibGVcXHQ9IG10NzkyNXVfZGV2aWNlX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM2NzpcXHQucHJvYmVcXHRcXHQ9IG10NzkyNXVfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzY4LVxcdC5kaXNjb25uZWN0XFx0PSBtdDc5Mnh1X2Rpc2Nvbm5lY3QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzY5LSNpZmRlZiBDT05GSUdfUE1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzozNzA6XFx0LnN1c3BlbmRcXHQ9IG10NzkyNXVfc3VzcGVuZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzozNzE6XFx0LnJlc3VtZVxcdFxcdD0gbXQ3OTI1dV9yZXN1bWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzcyOlxcdC5yZXNldF9yZXN1bWVcXHQ9IG10NzkyNXVfcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM3My0jZW5kaWYgLyogQ09ORklHX1BNICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNzYtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzozNzc6bW9kdWxlX3VzYl9kcml2ZXIobXQ3OTI1dV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM3OC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjE6MDQuOTQzOTIzMjgxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI4Njk0MDUxMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBtdDc5MjV1X3N0b3AgaW4gbXQ3OTI1J3MgVVNCIERyaXZlcioqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNodXRkb3duIHNlcXVlbmNlIGZvciB0aGUgbXQ3OTI1J3MgVVNCIGRyaXZlci4gTXkgZmlyc3Qgc3RlcCBpcyB0byB6ZXJvIGluIG9uIHRoZSBgbXQ3OTI1dV9zdG9wYCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNgLiBJIGFscmVhZHkga25vdyB0aGUgZGV2aWNlIHRyZWUgaXMgY29ycmVjdCwgc28gbGV0J3MgbWFrZSBzdXJlIHRoYXQgdGhlIHByb3BlciBzZXF1ZW5jZSB0byB0ZWFyIGRvd24gdGhlIGRldmljZSBpcyBhbHNvIGNvcnJlY3QuXG5cbk5vdywgSSdtIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byB0aGUgY29kZS4gSSdtIGdvaW5nIHRvIGZvY3VzIG9uIGxpbmVzIDE0NSB0aHJvdWdoIDIyMCB3aXRoaW4gdGhhdCBmaWxlLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSByZWxldmFudCBjb250ZXh0IGZvciB3aGF0J3MgaGFwcGVuaW5nIGR1cmluZyB0aGUgYHN0b3BgIGZ1bmN0aW9uLCBpbmNsdWRpbmcgYW55IHJlc291cmNlIGRlYWxsb2NhdGlvbiwgaGFyZHdhcmUgcmVzZXQsIG9yIHBvd2VyIG1hbmFnZW1lbnQgY2FsbHMuIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGUgY29yZSBsb2dpYyB0byB1bmRlcnN0YW5kIGl0cyBmbG93IGFuZCBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHByb25lIHRvIGVycm9ycy4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgdGhhdCBtaWdodCBpbnRlcmZlcmUgd2l0aCBncmFjZWZ1bCBkZXZpY2Ugc2h1dGRvd24sIGVzcGVjaWFsbHkgYW55IHJhY2UgY29uZGl0aW9ucyBvciBpbXByb3BlciBzeW5jaHJvbml6YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0MzgsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMTowNy44MTMzMzEwMTJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1OTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0NSxcbiAgXCJMaW5lQ291bnRcIjogNzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE0NTpcXHRcXHRtdDc2X3dvcmtlcl9lbmFibGUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni50eF93b3JrZXIpO1xcbiAxNDY6XFx0XFxuIDE0NzpcXHRcXHRyZXR1cm4gZXJyO1xcbiAxNDg6XFx0fVxcbiAxNDk6XFx0XFxuIDE1MDpcXHRzdGF0aWMgdm9pZCBtdDc5MjV1X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcXG4gMTUxOlxcdHtcXG4gMTUyOlxcdFxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBtdDc5MnhfaHdfZGV2KGh3KTtcXG4gMTUzOlxcdFxcbiAxNTQ6XFx0XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrKTtcXG4gMTU1OlxcdFxcbiAxNTY6XFx0XFx0bXQ3OTJ4dV9zdG9wKGh3LCBzdXNwZW5kKTtcXG4gMTU3OlxcdH1cXG4gMTU4OlxcdFxcbiAxNTk6XFx0c3RhdGljIGludCBtdDc5MjV1X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZixcXG4gMTYwOlxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuIDE2MTpcXHR7XFxuIDE2MjpcXHRcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG10NzZfZHJpdmVyX29wcyBkcnZfb3BzID0ge1xcbiAxNjM6XFx0XFx0XFx0LnR4d2lfc2l6ZSA9IE1UX1NESU9fVFhEX1NJWkUsXFxuIDE2NDpcXHRcXHRcXHQuZHJ2X2ZsYWdzID0gTVRfRFJWX1JYX0RNQV9IRFIgfCBNVF9EUlZfSFdfTUdNVF9UWFEgfFxcbiAxNjU6XFx0XFx0XFx0XFx0ICAgICBNVF9EUlZfQU1TRFVfT0ZGTE9BRCxcXG4gMTY2OlxcdFxcdFxcdC5zdXJ2ZXlfZmxhZ3MgPSBTVVJWRVlfSU5GT19USU1FX1RYIHxcXG4gMTY3OlxcdFxcdFxcdFxcdFxcdFNVUlZFWV9JTkZPX1RJTUVfUlggfFxcbiAxNjg6XFx0XFx0XFx0XFx0XFx0U1VSVkVZX0lORk9fVElNRV9CU1NfUlgsXFxuIDE2OTpcXHRcXHRcXHQudHhfcHJlcGFyZV9za2IgPSBtdDc5MjVfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IsXFxuIDE3MDpcXHRcXHRcXHQudHhfY29tcGxldGVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X2NvbXBsZXRlX3NrYixcXG4gMTcxOlxcdFxcdFxcdC50eF9zdGF0dXNfZGF0YSA9IG10NzkyNV91c2Jfc2Rpb190eF9zdGF0dXNfZGF0YSxcXG4gMTcyOlxcdFxcdFxcdC5yeF9za2IgPSBtdDc5MjVfcXVldWVfcnhfc2tiLFxcbiAxNzM6XFx0XFx0XFx0LnJ4X2NoZWNrID0gbXQ3OTI1X3J4X2NoZWNrLFxcbiAxNzQ6XFx0XFx0XFx0LnN0YV9hZGQgPSBtdDc5MjVfbWFjX3N0YV9hZGQsXFxuIDE3NTpcXHRcXHRcXHQuc3RhX2V2ZW50ID0gbXQ3OTI1X21hY19zdGFfZXZlbnQsXFxuIDE3NjpcXHRcXHRcXHQuc3RhX3JlbW92ZSA9IG10NzkyNV9tYWNfc3RhX3JlbW92ZSxcXG4gMTc3OlxcdFxcdFxcdC51cGRhdGVfc3VydmV5ID0gbXQ3OTJ4X3VwZGF0ZV9jaGFubmVsLFxcbiAxNzg6XFx0XFx0fTtcXG4gMTc5OlxcdFxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3OTJ4X2hpZl9vcHMgaGlmX29wcyA9IHtcXG4gMTgwOlxcdFxcdFxcdC5tY3VfaW5pdCA9IG10NzkyNXVfbWN1X2luaXQsXFxuIDE4MTpcXHRcXHRcXHQuaW5pdF9yZXNldCA9IG10NzkyeHVfaW5pdF9yZXNldCxcXG4gMTgyOlxcdFxcdFxcdC5yZXNldCA9IG10NzkyNXVfbWFjX3Jlc2V0LFxcbiAxODM6XFx0XFx0fTtcXG4gMTg0OlxcdFxcdHN0YXRpYyBzdHJ1Y3QgbXQ3Nl9idXNfb3BzIGJ1c19vcHMgPSB7XFxuIDE4NTpcXHRcXHRcXHQucnIgPSBtdDc5Mnh1X3JyLFxcbiAxODY6XFx0XFx0XFx0LndyID0gbXQ3OTJ4dV93cixcXG4gMTg3OlxcdFxcdFxcdC5ybXcgPSBtdDc5Mnh1X3JtdyxcXG4gMTg4OlxcdFxcdFxcdC5yZWFkX2NvcHkgPSBtdDc2dV9yZWFkX2NvcHksXFxuIDE4OTpcXHRcXHRcXHQud3JpdGVfY29weSA9IG10NzkyeHVfY29weSxcXG4gMTkwOlxcdFxcdFxcdC50eXBlID0gTVQ3Nl9CVVNfVVNCLFxcbiAxOTE6XFx0XFx0fTtcXG4gMTkyOlxcdFxcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldih1c2JfaW50Zik7XFxuIDE5MzpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX29wcyAqb3BzO1xcbiAxOTQ6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XFxuIDE5NTpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2O1xcbiAxOTY6XFx0XFx0c3RydWN0IG10NzZfZGV2ICptZGV2O1xcbiAxOTc6XFx0XFx0dTggZmVhdHVyZXM7XFxuIDE5ODpcXHRcXHRpbnQgcmV0O1xcbiAxOTk6XFx0XFxuIDIwMDpcXHRcXHRvcHMgPSBtdDc5MnhfZ2V0X21hYzgwMjExX29wcyhcXHUwMDI2dXNiX2ludGYtXFx1MDAzZWRldiwgXFx1MDAyNm10NzkyNV9vcHMsXFxuIDIwMTpcXHRcXHRcXHRcXHRcXHQgICAgICAodm9pZCAqKWlkLVxcdTAwM2Vkcml2ZXJfaW5mbywgXFx1MDAyNmZlYXR1cmVzKTtcXG4gMjAyOlxcdFxcdGlmICghb3BzKVxcbiAyMDM6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDIwNDpcXHRcXG4gMjA1OlxcdFxcdG9wcy1cXHUwMDNlc3RvcCA9IG10NzkyNXVfc3RvcDtcXG4gMjA2OlxcdFxcbiAyMDc6XFx0XFx0bWRldiA9IG10NzZfYWxsb2NfZGV2aWNlKFxcdTAwMjZ1c2JfaW50Zi1cXHUwMDNlZGV2LCBzaXplb2YoKmRldiksIG9wcywgXFx1MDAyNmRydl9vcHMpO1xcbiAyMDg6XFx0XFx0aWYgKCFtZGV2KVxcbiAyMDk6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDIxMDpcXHRcXG4gMjExOlxcdFxcdGRldiA9IGNvbnRhaW5lcl9vZihtZGV2LCBzdHJ1Y3QgbXQ3OTJ4X2RldiwgbXQ3Nik7XFxuIDIxMjpcXHRcXHRkZXYtXFx1MDAzZWZ3X2ZlYXR1cmVzID0gZmVhdHVyZXM7XFxuIDIxMzpcXHRcXHRkZXYtXFx1MDAzZWhpZl9vcHMgPSBcXHUwMDI2aGlmX29wcztcXG4gMjE0OlxcdFxcdG10NzkyeHVfcmVzZXRfd29ya19pbml0KGRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjIxOjA3LjgxMzQ2ODcwMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzI3NTE0MjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqRGlnZ2luZyBpbnRvIFBvd2VyIE1hbmFnZW1lbnQgZm9yIFBDSS1lIERldmljZXMqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGlzIFBDSS1lIHBvd2VyIG1hbmFnZW1lbnQgdGhpbmcuIEknbSBnb2luZyB0byBzdGFydCBieSBsb29raW5nIGZvciBzb21lIGV4aXN0aW5nIGltcGxlbWVudGF0aW9ucyBpbiBzaW1pbGFyIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGUgYG10NzkyNWVgIFdpRmkgZHJpdmVyLCBzaW5jZSB0aGF0J3MgYSBrbm93biBxdWFudGl0eS4gSSdtIHRoaW5raW5nIEkgc2hvdWxkIGNoZWNrIG91dCB0aGUgYG10NzkyNWVfc3RvcGAgZnVuY3Rpb24sIG9yIHNvbWV0aGluZyBhbmFsb2dvdXMgdG8gaXQsIHRvIHNlZSBpZiB0aGV5J3JlIHNodXR0aW5nIGRvd24gdGhlIFBDSS1lIGRldmljZSBpbiBhIHNpbWlsYXIgZmFzaGlvbi4gQXJlIHRoZXkgY2FsbGluZyBzb21ldGhpbmcgc3BlY2lmaWMgZHVyaW5nIGRldmljZSBzdG9wIHRoYXQgSSBjYW4gbGVhcm4gZnJvbT8gQmV5b25kIHRoYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgd2l0aGluIGBtbG9fcG1fd29ya2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGF0IGlzIGJlaW5nIHVzZWQsIHdoZXJlIGl0IGlzIGNhbGxlZCBmcm9tLCBhbmQgd2hhdCBraW5kIG9mIHBvd2VyIHN0YXRlIHRyYW5zaXRpb25zIGl0J3MgcmVzcG9uc2libGUgZm9yLiBVbmRlcnN0YW5kaW5nIHRob3NlIGNvbXBvbmVudHMgd2lsbCBnaXZlIG1lIGluc2lnaHRzIHRvIGhvdyBQQ0ktZSBwb3dlciBtYW5hZ2VtZW50IGlzIGhhbmRsZWQgaW4gYSB3b3JrYWJsZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTI0LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMToxMC4xNDA5ODY2ODRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0Njc3MTQyOTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWxvX3BtX3dvcmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jPTI0Mz1pbnQgbXQ3OTI1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI1My1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VwbS5wc193b3JrLCBtdDc5MnhfcG1fcG93ZXJfc2F2ZV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjU0OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrLCBtdDc5MjVfbWxvX3BtX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNTUtXFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBtLndha2Vfd29yaywgbXQ3OTJ4X3BtX3dha2Vfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNTExPXZvaWQgbXQ3OTI1X21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE1MjctXFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZwbS1cXHUwMDNlcHNfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTUyODpcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmRldi1cXHUwMDNlbWxvX3BtX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE1MjktXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2cG0tXFx1MDAzZXdha2Vfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MTUxOD1tdDc5MjVfbWxvX3BtX2l0ZXIodm9pZCAqcHJpdiwgdTggKm1hYywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xNTM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoxNTM4OnZvaWQgbXQ3OTI1X21sb19wbV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTUzOS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE1NDAtXFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbXQ3OTJ4X2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTU0MTpcXHRcXHRcXHRcXHRcXHQgICAgICBtbG9fcG1fd29yay53b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTU0Mi1cXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IG10NzZfaHcoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0xNzA0PXN0YXRpYyBpbnQgbXQ3OTI1X3N1c3BlbmQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTcxMy1cXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmRldi1cXHUwMDNlcG0ucHNfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE3MTQ6XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTcxNS1cXHRtdDc2X2Nvbm5hY19mcmVlX3BlbmRpbmdfdHhfc2ticyhcXHUwMDI2ZGV2LVxcdTAwM2VwbSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MjE1MD1zdGF0aWMgdm9pZCBtdDc5MjVfbGlua19pbmZvX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjE5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjE5ODpcXHRcXHRpZWVlODAyMTFfcXVldWVfZGVsYXllZF93b3JrKGh3LCBcXHUwMDI2ZGV2LVxcdTAwM2VtbG9fcG1fd29yaywgNSAqIEhaKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjE5OS1cXHRcXHRtdmlmLVxcdTAwM2VtbG9fcG1fc3RhdGUgPSBNVDc5MnhfTUxPX0NIQU5HRURfUFM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MjcwNz1zdGF0aWMgdm9pZCBtdDc5MjVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI3MTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjI3MTE6XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjcxMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTMzMD1pbnQgbXQ3OTI1X21jdV91bmlfcnhfYmEoc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMzMi1cXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgYm9vbCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjMzMzp2b2lkIG10NzkyNV9tbG9fcG1fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMzNC12b2lkIG10NzkyNV9zY2FuX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTQxPXN0YXRpYyB2b2lkIG10NzkyNWVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTU1LVxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2cG0tXFx1MDAzZXBzX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjU2OlxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2VtbG9fcG1fd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNTctXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2cG0tXFx1MDAzZXdha2Vfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYz03MzU9c3RhdGljIGludCBtdDc5MjVfcGNpX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2aWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNzQ2LVxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2cG0tXFx1MDAzZXBzX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjc0NzpcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmRldi1cXHUwMDNlbWxvX3BtX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTc0OC1cXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZwbS1cXHUwMDNld2FrZV93b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTE1MD1zdGF0aWMgdm9pZCBtdDc5MjV1X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNTQ6XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0yNzk9c3RhdGljIGludCBtdDc5MjV1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI4Ny1cXHRmbHVzaF93b3JrKFxcdTAwMjZkZXYtXFx1MDAzZXJlc2V0X3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjI4ODpcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmRldi1cXHUwMDNlbWxvX3BtX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI4OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg9MjkzPXN0cnVjdCBtdDc5MnhfZGV2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMzMxLVxcdHN0cnVjdCB3b3JrX3N0cnVjdCBpcHY2X25zX3dvcms7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDozMzI6XFx0c3RydWN0IGRlbGF5ZWRfd29yayBtbG9fcG1fd29yaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTMzMy1cXHQvKiBJUHY2IGFkZHJlc3NlcyBmb3IgV29XTEFOICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjIxOjEyLjYwODcwNTkzOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MjM2NzU2ODU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgV29ydGhpbmVzcyBvZiB0aGUgTVQ3OTI1VSBVU0IgRHJpdmVyIFN0b3AgRnVuY3Rpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbnZlc3RpZ2F0ZSB0aGUgYG1hYzgwMjExIG9wcy1cdTAwM2VzdG9wYCBmdW5jdGlvbiBjYWxsLiBXaGVuIGEgd2lyZWxlc3MgaW50ZXJmYWNlIGdvZXMgZG93biwgYmUgaXQgdGhyb3VnaCBhbiBgaXAgbGluayBzZXRgIGNvbW1hbmQgb3IgdW5yZWdpc3RyYXRpb24sIGBtYWM4MDIxMWAgY2FsbHMgdGhpcyBmdW5jdGlvbi4gSW4gb3VyIGNhc2UsIGFuZCB0aGlzIGlzIGtleSwgd2UncmUgZGVhbGluZyB3aXRoIFVTQiBlbXVsYXRpb24gdmlhIHNvbWV0aGluZyBsaWtlIGBzeXpfdXNiX2Nvbm5lY3RgIG9yIGV2ZW4ganVzdCB0aGUgcmF3IGdhZGdldCBtb2RlLiBUaGlzIGFsbG93cyBgc3l6a2FsbGVyYCB0byBpbnRlcmFjdCB3aXRoIE1UNzkyNVUgZGV2aWNlcyDigJMgdGhvc2Ugd2l0aCBVU0IgSURzIGxpa2UgMGU4ZDo2NjM5LCBmb3IgZXhhbXBsZS4gV2UgY2FuIHJlZ2lzdGVyIHRoZSBtYWM4MDIxMSBkZXZpY2UsIGJyaW5nIGl0IHVwLCBtYW5pcHVsYXRlIGl0IHdpdGggYG5sODAyMTFgIGNhbGxzLCBhbmQgdGhlbiwgY3J1Y2lhbGx5LCBicmluZyBpdCBiYWNrIGRvd24uXG5cblNwZWNpZmljYWxseSwgd2hlbiB0aGUgbWFjODAyMTEgaW50ZXJmYWNlIHNodXRzIGRvd24sIGBtdDc5MjV1X3N0b3BgIGdldHMgZXhlY3V0ZWQuIFRoaXMgZnVuY3Rpb24gdGhlbiBjYWxscyBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VtbG9fcG1fd29yaylgIGJlZm9yZSBjYWxsaW5nIGBtdDc5Mnh1X3N0b3BgLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcGFydC4gIEdpdmVuIHRoYXQgd2UgY2FuIHRyaWdnZXIgdGhpcyBzcGVjaWZpYyBjYWxsYmFjaywgYG9wcy1cdTAwM2VzdG9wYCwgd2hpY2ggaXMgYSBmdW5jdGlvbiB3aXRoaW4gYSBVU0Igd2lyZWxlc3MgZHJpdmVyLCBhbmQgdGhhdCBpdCBpcyAqcmVhY2hhYmxlKiBhbmQgKmV4ZWN1dGFibGUqIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgdXNpbmcgVVNCIGVtdWxhdGlvbiBhbmQgbWFjODAyMTEvbmw4MDIxMSBvcGVyYXRpb25zLCAqSSogY29uY2x1ZGUgdGhhdCB0aGlzIGlzIGFic29sdXRlbHkgYFdvcnRoRnV6emluZ2AuIFRoZSBhYmlsaXR5IHRvIHByZWRpY3RhYmx5IGJyaW5nIHRoZSBpbnRlcmZhY2UgdXAgYW5kIGRvd24sIHRyaWdnZXJpbmcgdGhlIGBzdG9wYCBmdW5jdGlvbiwgbWVhbnMgd2UgaGF2ZSBhIHZpYWJsZSBmdXp6aW5nIHRhcmdldC5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIFRoZSBjcnVjaWFsIGNvbmZpZyBpcyBgTVQ3OTI1VWAuICBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgYXJlIGVuYWJsZWQuICBMZXQncyBsb29rIGF0IHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ2AgZmlsZS4gIEhlcmUgaXQgaXM6XG5cbmBgYGtjb25maWdcbmNvbmZpZyBNVDc5MjVVXG5cdHRyaXN0YXRlIFwiTWVkaWFUZWsgTVQ3OTI1VSAoVVNCKSBzdXBwb3J0XCJcblx0c2VsZWN0IE1UNzkyeF9VU0Jcblx0c2VsZWN0IE1UNzkyNV9DT01NT05cblx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuXHRkZXBlbmRzIG9uIFVTQlxuYGBgXG5cbk9rYXksIGBNVDc5MjVVYCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBVU0JgLCBhbmQgaXQgYWxzbyBzZWxlY3RzIGBNVDc5MnhfVVNCYCBhbmQgYE1UNzkyNV9DT01NT05gLiBTbyB3ZSBoYXZlIHRoZSBkZXBlbmRlbmNpZXMgaW4gb3JkZXIgdG8gYnVpbGQgYSBmdXp6aW5nIHRhcmdldC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgTUFDODAyMTFgIGFuZCBgVVNCYCBhcmUgY29uZmlndXJlZC4gSSB3aWxsIGFsc28gaGF2ZSB0byBjaGVjayB0aGUgcGFyZW50IG1lbnUvY29uZmlnIGRlcGVuZGVuY2llcyBpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZ2AsIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnYCwgYW5kIGBkcml2ZXJzL25ldC93aXJlbGVzcy9LY29uZmlnYCBmaWxlcy4gSSB3aWxsIG1ha2Ugc3VyZSB0aG9zZSBhcmUgcHJvcGVybHkgc2V0IGFzIHdlbGwuIFdpdGggdGhvc2UgY29uZmlncyBpbiBwbGFjZSwgdGhpcyBsb29rcyBsaWtlIGEgc29saWQgZnV6emluZyBjYW5kaWRhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNzgxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjIxOjE3Ljg0NTQ2NTgzN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5MDY3MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNvdXJjZS4qbXQ3OTI1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZz01MD1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTk2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjUxOnNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjE6MTguMDE0NTQxNjA2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzMzM2NTkyOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNZWRpYXRlayBXaXJlbGVzcyBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiBmb3IgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVycy4gTXkgZmlyc3QgcG9ydCBvZiBjYWxsIHdpbGwgYmUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWdgLiBUaGlzIGZpbGUgKnNob3VsZCogYmUgdGhlIGNlbnRyYWwgaHViIGZvciBhbGwgdGhlIGJ1aWxkLXRpbWUgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gTWVkaWF0ZWsncyB3aXJlbGVzcyBzaWxpY29uLiBJIGV4cGVjdCB0byBmaW5kIHRoZSB1c3VhbCBzdXNwZWN0czogb3B0aW9ucyBmb3IgdmFyaW91cyBNZWRpYXRlayBjaGlwc2V0cyBhbmQgdmFyaWFudHMsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMgKGxpa2UgcmVndWxhdG9yeSwgTUFDODAyMTEpLCBhbmQgcG90ZW50aWFsbHkgc29tZSBkZXZpY2Utc3BlY2lmaWMgY29uZmlndXJhdGlvbnMuIEknbSBob3BpbmcgaXQncyB3ZWxsLXN0cnVjdHVyZWQgYW5kIHVzZXMgdGhlIHN0YW5kYXJkIEtjb25maWcgY29udmVudGlvbnMgdG8gYXZvaWQgdG9vIG11Y2ggZGlnZ2luZy4gSSB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB3aGljaCBkcml2ZXJzIGFyZSBhdmFpbGFibGUsIGhvdyB0aGV5J3JlIGVuYWJsZWQsIGFuZCB3aGF0IHN1cHBvcnRpbmcgaW5mcmFzdHJ1Y3R1cmUgaXMgcmVxdWlyZWQuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzbyBJIGtub3cgd2hhdCdzIHBvc3NpYmxlLCB3aGF0J3Mgbm90LCBhbmQgd2hhdCBJIG1pZ2h0IG5lZWQgdG8gY29uc2lkZXIgd2hlbiBjb25maWd1cmluZyBhIHN5c3RlbSBvciB0cm91Ymxlc2hvb3RpbmcgYSBzcGVjaWZpYyBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDc2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjE6MjAuMzQ4MjA1NTkzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgV0xBTl9WRU5ET1JfTUVESUFURUtcXG4gICAzOlxcdFxcdGJvb2wgXFxcIk1lZGlhVGVrIGRldmljZXNcXFwiXFxuICAgNDpcXHRcXHRkZWZhdWx0IHlcXG4gICA1OlxcdFxcdGhlbHBcXG4gICA2OlxcdFxcdCAgSWYgeW91IGhhdmUgYSB3aXJlbGVzcyBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cXG4gICA3OlxcdFxcbiAgIDg6XFx0XFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJ3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxcbiAgIDk6XFx0XFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsIHRoZVxcbiAgMTA6XFx0XFx0ICBxdWVzdGlvbnMgYWJvdXQgdGhlc2UgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXFxuICAxMTpcXHRcXHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDEyOlxcdFxcbiAgMTM6XFx0aWYgV0xBTl9WRU5ET1JfTUVESUFURUtcXG4gIDE0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9LY29uZmlnXFxcIlxcbiAgMTU6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdcXFwiXFxuICAxNjpcXHRlbmRpZiAjIFdMQU5fVkVORE9SX01FRElBVEVLXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjIxOjIwLjM0ODMyMTI3M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDg0NDI2NjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyBpdDpcblxuKipLY29uZmlnIERpdmUgQmVnaW5zKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdG8gd29yay4gTGV0J3Mgc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBXaS1GaSBkcml2ZXIgY29uZmlndXJhdGlvbi4gTXkgaW5zdGluY3Qgc2F5cyB0aGUgY2VudHJhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2lsbCBiZSBsb2NhdGVkIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgdHlwaWNhbCBsb2NhdGlvbiBmb3IgY29yZSBXaS1GaSBkcml2ZXIgZmVhdHVyZSBmbGFncyBhbmQgZGVwZW5kZW5jaWVzLiBJdOKAmXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUga2VybmVsJ3Mgd2lyZWxlc3Mgc3Vic3lzdGVtIGlzIGJ1aWx0IGFuZCBjb25maWd1cmVkLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3RydWN0dXJlIHdpdGhpbiB0aGlzIGZpbGUuIEkgZXhwZWN0IHRvIGZpbmQgZGVwZW5kZW5jaWVzIG9uIHZhcmlvdXMgaGFyZHdhcmUgcGxhdGZvcm1zLCBQSFkgdHlwZXMsIHJlZ3VsYXRvcnkgZG9tYWlucywgYW5kIHByb2JhYmx5IHNvbWUgcHJvdG9jb2wtc3BlY2lmaWMgc2V0dGluZ3MgdGhlcmUuIFRpbWUgdG8gc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NjIxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMToyMi40MzI3NTE2ODdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3OTU3NTYyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJXTEFOX1ZFTkRPUl9NRURJQVRFS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZT0xMj1vYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTUFSVkVMTCkgKz0gbWFydmVsbC9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfV0xBTl9WRU5ET1JfTUVESUFURUspICs9IG1lZGlhdGVrL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL01ha2VmaWxlLTE0LW9iai0kKENPTkZJR19XTEFOX1ZFTkRPUl9NSUNST0NISVApICs9IG1pY3JvY2hpcC9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnOjI6Y29uZmlnIFdMQU5fVkVORE9SX01FRElBVEVLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZy0zLVxcdGJvb2wgXFxcIk1lZGlhVGVrIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWc6MTM6aWYgV0xBTl9WRU5ET1JfTUVESUFURUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9LY29uZmlnLTE0LXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL0tjb25maWc9MTU9c291cmNlIFxcXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvS2NvbmZpZzoxNjplbmRpZiAjIFdMQU5fVkVORE9SX01FRElBVEVLXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjIxOjIyLjYxMjMzMjcyNloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMjc2MDAxMTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgTVQ3OTI1VSBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgSSd2ZSBnb3QgYWxsIHRoZSBiYXNlcyBjb3ZlcmVkIHJlZ2FyZGluZyB0aGUgTVQ3OTI1VSBkcml2ZXIuIExldCdzIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgSSd2ZSBjaGVja2VkIHRoZSBzdGFuZGFyZCBzdXNwZWN0czogYFVTQmAsIGBNQUM4MDIxMWAsIGBNVDc5MjVVYCwgYW5kIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSdtIG1pc3NpbmcgdGhhdCBjb3VsZCBiZSBpbXBhY3RpbmcgdGhpcy5cblxuTXkgbmV4dCBtb3ZlIGlzIHRvIGRpdmUgaW50byB0aGUgY29kZSBpdHNlbGYuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jYC4gSSdsbCBiZSBzY2FubmluZyB0aGlzIGZpbGUsIGxvb2tpbmcgZm9yIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB1c2luZyBgI2lmZGVmYCBhcm91bmQga2V5IGZ1bmN0aW9ucyBsaWtlIGBtdDc5MjV1X3N0b3BgIGFuZCBgbXQ3OTI1dV9wcm9iZWAuIFRoYXQnbGwgaGVscCBtZSB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGlzIGJlaW5nIGNvbXBpbGVkIGFuZCBpZiBhbnkgY29uZmlndXJhdGlvbnMgYXJlIGFmZmVjdGluZyB0aGUgYmVoYXZpb3IgSSdtIHNlZWluZy4gVG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSB2aWV3LCBJIG1heSBuZWVkIHRvIHJlYWQgdGhlIHdob2xlIGZpbGUgdG8gZ3Jhc3AgdGhlIGJpZ2dlciBwaWN0dXJlLCBvciBhdCBsZWFzdCBtZXRpY3Vsb3VzbHkgaW5zcGVjdCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUxMzIsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjE6MjUuODg4MzM4MzM3WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MjUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuICAgMjpcXHQvKiBDb3B5cmlnaHQgKEMpIDIwMjMgTWVkaWFUZWsgSW5jLiAqL1xcbiAgIDM6XFx0XFxuICAgNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgva2VybmVsLmhcXHUwMDNlXFxuICAgNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAgNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvdXNiLmhcXHUwMDNlXFxuICAgNzpcXHRcXG4gICA4OlxcdCNpbmNsdWRlIFxcXCJtdDc5MjUuaFxcXCJcXG4gICA5OlxcdCNpbmNsdWRlIFxcXCJtY3UuaFxcXCJcXG4gIDEwOlxcdCNpbmNsdWRlIFxcXCJtYWMuaFxcXCJcXG4gIDExOlxcdFxcbiAgMTI6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG10NzkyNXVfZGV2aWNlX3RhYmxlW10gPSB7XFxuICAxMzpcXHRcXHR7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MGU4ZCwgMHg2NjM5LCAweGZmLCAweGZmLCAweGZmKSxcXG4gIDE0OlxcdFxcdFxcdC5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdClNVDc5MjVfRklSTVdBUkVfV00gfSxcXG4gIDE1OlxcdFxcdHsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oMHgwZThkLCAweDc5MjUsIDB4ZmYsIDB4ZmYsIDB4ZmYpLFxcbiAgMTY6XFx0XFx0XFx0LmRyaXZlcl9pbmZvID0gKGtlcm5lbF91bG9uZ190KU1UNzkyNV9GSVJNV0FSRV9XTSB9LFxcbiAgMTc6XFx0XFx0LyogTmV0Z2VhciwgSW5jLiBBODUwMCAqL1xcbiAgMTg6XFx0XFx0eyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTygweDA4NDYsIDB4OTA1MCwgMHhmZiwgMHhmZiwgMHhmZiksXFxuICAxOTpcXHRcXHRcXHQuZHJpdmVyX2luZm8gPSAoa2VybmVsX3Vsb25nX3QpTVQ3OTI1X0ZJUk1XQVJFX1dNIH0sXFxuICAyMDpcXHRcXHQvKiBOZXRnZWFyLCBJbmMuIEE5MDAwICovXFxuICAyMTpcXHRcXHR7IFVTQl9ERVZJQ0VfQU5EX0lOVEVSRkFDRV9JTkZPKDB4MDg0NiwgMHg5MDcyLCAweGZmLCAweGZmLCAweGZmKSxcXG4gIDIyOlxcdFxcdFxcdC5kcml2ZXJfaW5mbyA9IChrZXJuZWxfdWxvbmdfdClNVDc5MjVfRklSTVdBUkVfV00gfSxcXG4gIDIzOlxcdFxcdHsgfSxcXG4gIDI0OlxcdH07XFxuICAyNTpcXHRcXG4gIDI2OlxcdHN0YXRpYyBpbnRcXG4gIDI3OlxcdG10NzkyNXVfbWN1X3NlbmRfbWVzc2FnZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuICAyODpcXHRcXHRcXHRcXHQgaW50IGNtZCwgaW50ICpzZXEpXFxuICAyOTpcXHR7XFxuICAzMDpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcXG4gIDMxOlxcdFxcdHUzMiBwYWQsIGVwO1xcbiAgMzI6XFx0XFx0aW50IHJldDtcXG4gIDMzOlxcdFxcbiAgMzQ6XFx0XFx0cmV0ID0gbXQ3OTI1X21jdV9maWxsX21lc3NhZ2UobWRldiwgc2tiLCBjbWQsIHNlcSk7XFxuICAzNTpcXHRcXHRpZiAocmV0KVxcbiAgMzY6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gIDM3OlxcdFxcbiAgMzg6XFx0XFx0bWRldi1cXHUwMDNlbWN1LnRpbWVvdXQgPSAzICogSFo7XFxuICAzOTpcXHRcXG4gIDQwOlxcdFxcdGlmIChjbWQgIT0gTUNVX0NNRChGV19TQ0FUVEVSKSlcXG4gIDQxOlxcdFxcdFxcdGVwID0gTVRfRVBfT1VUX0lOQkFORF9DTUQ7XFxuICA0MjpcXHRcXHRlbHNlXFxuICA0MzpcXHRcXHRcXHRlcCA9IE1UX0VQX09VVF9BQ19CRTtcXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0bXQ3OTJ4X3NrYl9hZGRfdXNiX3NkaW9faGRyKGRldiwgc2tiLCAwKTtcXG4gIDQ2OlxcdFxcdHBhZCA9IHJvdW5kX3VwKHNrYi1cXHUwMDNlbGVuLCA0KSArIDQgLSBza2ItXFx1MDAzZWxlbjtcXG4gIDQ3OlxcdFxcdF9fc2tiX3B1dF96ZXJvKHNrYiwgcGFkKTtcXG4gIDQ4OlxcdFxcbiAgNDk6XFx0XFx0cmV0ID0gbXQ3NnVfYnVsa19tc2coXFx1MDAyNmRldi1cXHUwMDNlbXQ3Niwgc2tiLVxcdTAwM2VkYXRhLCBza2ItXFx1MDAzZWxlbiwgTlVMTCxcXG4gIDUwOlxcdFxcdFxcdFxcdCAgICAgMTAwMCwgZXApO1xcbiAgNTE6XFx0XFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcbiAgNTI6XFx0XFxuICA1MzpcXHRcXHRyZXR1cm4gcmV0O1xcbiAgNTQ6XFx0fVxcbiAgNTU6XFx0XFxuICA1NjpcXHRzdGF0aWMgaW50IG10NzkyNXVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4gIDU3OlxcdHtcXG4gIDU4OlxcdFxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXQ3Nl9tY3Vfb3BzIG1jdV9vcHMgPSB7XFxuICA1OTpcXHRcXHRcXHQuaGVhZHJvb20gPSBNVF9TRElPX0hEUl9TSVpFICtcXG4gIDYwOlxcdFxcdFxcdFxcdCAgICBzaXplb2Yoc3RydWN0IG10NzZfY29ubmFjMl9tY3VfdHhkKSxcXG4gIDYxOlxcdFxcdFxcdC50YWlscm9vbSA9IE1UX1VTQl9UQUlMX1NJWkUsXFxuICA2MjpcXHRcXHRcXHQubWN1X3NrYl9zZW5kX21zZyA9IG10NzkyNXVfbWN1X3NlbmRfbWVzc2FnZSxcXG4gIDYzOlxcdFxcdFxcdC5tY3VfcGFyc2VfcmVzcG9uc2UgPSBtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlLFxcbiAgNjQ6XFx0XFx0fTtcXG4gIDY1OlxcdFxcdGludCByZXQ7XFxuICA2NjpcXHRcXG4gIDY3OlxcdFxcdGRldi1cXHUwMDNlbXQ3Ni5tY3Vfb3BzID0gXFx1MDAyNm1jdV9vcHM7XFxuICA2ODpcXHRcXG4gIDY5OlxcdFxcdG10NzZfc2V0KGRldiwgTVRfVURNQV9UWF9RU0VMLCBNVF9GV19ETF9FTik7XFxuICA3MDpcXHRcXHRyZXQgPSBtdDc5MjVfcnVuX2Zpcm13YXJlKGRldik7XFxuICA3MTpcXHRcXHRpZiAocmV0KVxcbiAgNzI6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gIDczOlxcdFxcbiAgNzQ6XFx0XFx0c2V0X2JpdChNVDc2X1NUQVRFX01DVV9SVU5OSU5HLCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG4gIDc1OlxcdFxcdG10NzZfY2xlYXIoZGV2LCBNVF9VRE1BX1RYX1FTRUwsIE1UX0ZXX0RMX0VOKTtcXG4gIDc2OlxcdFxcbiAgNzc6XFx0XFx0cmV0dXJuIDA7XFxuICA3ODpcXHR9XFxuICA3OTpcXHRcXG4gIDgwOlxcdHN0YXRpYyBpbnQgbXQ3OTI1dV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4gIDgxOlxcdHtcXG4gIDgyOlxcdFxcdGludCBlcnI7XFxuICA4MzpcXHRcXG4gIDg0OlxcdFxcdGlmIChhdG9taWNfcmVhZChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LmJ1c19odW5nKSlcXG4gIDg1OlxcdFxcdFxcdHJldHVybiAwO1xcbiAgODY6XFx0XFxuICA4NzpcXHRcXHRtdDc5Mnh1X3Jlc2V0X29uX2J1c19lcnJvcihkZXYpO1xcbiAgODg6XFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYuYnVzX2h1bmcpKVxcbiAgODk6XFx0XFx0XFx0cmV0dXJuIDA7XFxuICA5MDpcXHRcXG4gIDkxOlxcdFxcdG10NzZfdHhxX3NjaGVkdWxlX2FsbChcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5KTtcXG4gIDkyOlxcdFxcdG10NzZfd29ya2VyX2Rpc2FibGUoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni50eF93b3JrZXIpO1xcbiAgOTM6XFx0XFxuICA5NDpcXHRcXHRzZXRfYml0KE1UNzZfUkVTRVQsIFxcdTAwMjZkZXYtXFx1MDAzZW1waHkuc3RhdGUpO1xcbiAgOTU6XFx0XFx0c2V0X2JpdChNVDc2X01DVV9SRVNFVCwgXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5zdGF0ZSk7XFxuICA5NjpcXHRcXG4gIDk3OlxcdFxcdHdha2VfdXAoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tY3Uud2FpdCk7XFxuICA5ODpcXHRcXHRza2JfcXVldWVfcHVyZ2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Ni5tY3UucmVzX3EpO1xcbiAgOTk6XFx0XFxuIDEwMDpcXHRcXHRtdDc2dV9zdG9wX3J4KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMToyNS44ODg0OTM5MjdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODA4Njc0MjYwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgTVQ3OTI1IFVTQiBXaXJlbGVzcyBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIHRoZSBgRm9jdXNTeW1ib2xzYCwgYW5kIEkndmUgaWRlbnRpZmllZCBgbXQ3OTI1dV9zdG9wYCBhcyB0aGUgbmV3bHkgbW9kaWZpZWQgb3IgYWRkZWQgZnVuY3Rpb24uIEknbSBhbHNvIGluY2x1ZGluZyBgbXQ3OTI1dV9wcm9iZWAsIHNpbmNlIGl0IGNvbmZpZ3VyZXMgdGhlIGBvcHMtXHUwMDNlc3RvcGAgb3BlcmF0aW9uLCBhbmQgYG10NzkyNV9tbG9fcG1fd29ya2AsIHdoaWNoIGlzIHRoZSBkZWxheWVkIHdvcmsgYmVpbmcgY2FuY2VsbGVkLiBTZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBxdWlja2x5IHZlcmlmaWVkIHRoYXQgdGhlcmUgYXJlbid0IGFueSBvdGhlciBpbW1lZGlhdGVseSByZWxldmFudCBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzIHBhcnRpY3VsYXIgY2hhbmdlIHRoYXQgSSBoYXZlbid0IGFscmVhZHkgY29uc2lkZXJlZC5cblxuTmV4dCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIG5hdHVyZSBvZiBgbXQ3OTI1dV9zdG9wYC4gSXMgaXQgc3RhdGljIG9yIG5vdD8gR29vZCwgaXQncyBgc3RhdGljIHZvaWQgbXQ3OTI1dV9zdG9wKC4uLilgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuY2AuIFRoZSBrZXkgbm93IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGlubGluZWQgb3Igd2lsbCBhcHBlYXIgYXMgYSBzZXBhcmF0ZSBzeW1ib2wgaW4gdGhlIG9iamVjdCBmaWxlLiBUaGUgZmFjdCB0aGF0IGl0cyBhZGRyZXNzIGlzIHRha2VuIHdpdGhpbiBgdXNiLmNgIChgb3BzLVx1MDAzZXN0b3AgPSBtdDc5MjV1X3N0b3A7YCkgbWVhbnMgaXQgY2FuJ3QgYmUgY29tcGxldGVseSBpbmxpbmVkLiBUaGF0J3MgZ29vZDsgaXQgd2lsbCBiZSBhIGRpc3RpbmN0IHN5bWJvbCBpbiB0aGUgcmVzdWx0aW5nIG9iamVjdCBmaWxlLCBlaXRoZXIgYG10NzkyNXUub2Agb3Igdm1saW51eCwgYW5kIHRodXMsIHBvdGVudGlhbGx5IHZ1bG5lcmFibGUuIEknbGwgbWFrZSBhIG5vdGUgb2YgdGhpcy4gSSd2ZSBhbHNvIHJlY29uZmlybWVkIHRoYXQgYG10NzkyNXVfcHJvYmVgIGV4aXN0cyBhbmQgdGhhdCBgbXQ3OTI1X21sb19wbV93b3JrYCBpcyB0aGUgd29yayBmdW5jdGlvbiBmb3IgYGRldi1cdTAwM2VtbG9fcG1fd29ya2AuXG5cbkJlZm9yZSBJIG1vdmUgb24sIEkgd2FudCB0byBjb25maXJtIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIFdlIG5lZWQgYE1UNzkyNVVgLCBgTUFDODAyMTFgLCBgVVNCYCwgYW5kIGBXTEFOX1ZFTkRPUl9NRURJQVRFS2AgZW5hYmxlZCB0byByZWFjaCB0aGlzIGNvZGUuIEkgbmVlZCB0byBrZWVwIHRob3NlIGluIG1pbmQgYXMgSSBkZXZlbG9wIGZ1enppbmcgY29uZmlndXJhdGlvbnMuXG5cbk5vdywgZm9yIHRoZSByZWFzb25pbmc6IEJhc2ljYWxseSwgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBtdDc5MjV1X3N0b3BgIGludG8gdGhlIE1lZGlhVGVrIE1UNzkyNSBVU0Igd2lyZWxlc3MgZHJpdmVyIHRvIGhhbmRsZSB0aGUgY2FuY2VsbGF0aW9uIG9mIHRoZSBkZWxheWVkIE1MTyBQTSB3b3JrIChgbWxvX3BtX3dvcmtgKSBiZWZvcmUgZGV2aWNlIHN0b3BwYWdlLiBXaGF0J3MgZXNwZWNpYWxseSBpbnRlcmVzdGluZyBpcyB0aGF0IHRoZSBNVDc5MjUgVVNCIGRyaXZlciBpcyBhY3R1YWxseSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgd2l0aCBVU0IgZW11bGF0aW9uIG9yIHJhdy1nYWRnZXQgc2V0dXBzLiBUaGlzIGltcGxpZXMgdGhhdCB0aGVzZSBjb2RlIHBhdGhzICphcmUqIHBvdGVudGlhbGx5IGZ1enphYmxlLlxuXG5GaW5hbGx5LCBJJ2xsIHBhY2thZ2UgdGhpcyB1cCBpbnRvIHRoZSBgc2V0LXJlc3VsdHNgOlxuXG4qICAgYFdvcnRoRnV6emluZ2A6IFRydWUsIGFic29sdXRlbHkuXG4qICAgYEZvY3VzU3ltYm9sc2A6IEkndmUgY29uZmlybWVkIGBtdDc5MjV1X3N0b3BgLCBgbXQ3OTI1dV9wcm9iZWAsIGFuZCBgbXQ3OTI1X21sb19wbV93b3JrYC5cbiogICBgRW5hYmxlQ29uZmlnc2A6IGBNVDc5MjVVYCwgYE1BQzgwMjExYCwgYFVTQmAsIGFuZCBgV0xBTl9WRU5ET1JfTUVESUFURUtgLlxuKiAgIGBSZWFzb25pbmdgOiBDb25jaXNlIGV4cGxhbmF0aW9uIHByb3ZpZGVkLCB3aGljaCBJIHdpbGwgYWRkLlxuXG5JJ2xsIHByb2NlZWQgdG8gaW52b2tlIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3Mjg4LCJPdXRwdXRUb2tlbnMiOjE3MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjIxOjMzLjk3NTI0MDE2OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzEwMDI5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTI1VVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIlVTQlwiLFxuICAgIFwiV0xBTl9WRU5ET1JfTUVESUFURUtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjV1X3N0b3BcIixcbiAgICBcIm10NzkyNXVfcHJvYmVcIixcbiAgICBcIm10NzkyNV9tbG9fcG1fd29ya1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgbXQ3OTI1dV9zdG9wIHRvIGNhbmNlbCB0aGUgZGVsYXllZCBNTE8gUE0gd29yayAobWxvX3BtX3dvcmspIGR1cmluZyBzdG9wIG9wZXJhdGlvbnMgaW4gdGhlIE1lZGlhVGVrIE1UNzkyNSBVU0Igd2lyZWxlc3MgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGVtdWxhdGlvbiBhbmQgbWFjODAyMTEvbmw4MDIxMSBpbnRlcmZhY2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyNVVcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIixcbiAgICBcIldMQU5fVkVORE9SX01FRElBVEVLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTI1dV9zdG9wXCIsXG4gICAgXCJtdDc5MjV1X3Byb2JlXCIsXG4gICAgXCJtdDc5MjVfbWxvX3BtX3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIG10NzkyNXVfc3RvcCB0byBjYW5jZWwgdGhlIGRlbGF5ZWQgTUxPIFBNIHdvcmsgKG1sb19wbV93b3JrKSBkdXJpbmcgc3RvcCBvcGVyYXRpb25zIGluIHRoZSBNZWRpYVRlayBNVDc5MjUgVVNCIHdpcmVsZXNzIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBlbXVsYXRpb24gYW5kIG1hYzgwMjExL25sODAyMTEgaW50ZXJmYWNlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjE6MzQuMTEyMzQ5Mzk3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzE5MzExOTA4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjIxOjM0LjExNDE2MjkzOFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEzMTkxMzAwNTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgZGVsYXllZCB3b3JrIGNhbmNlbGxhdGlvbiBkdXJpbmcgZGV2aWNlIHN0b3AgaW4gdGhlIG10NzkyNSBVU0IgZHJpdmVyIGJ5IGludHJvZHVjaW5nIGBtdDc5MjV1X3N0b3AoKWAsIHdoaWNoIGNhbGxzIGBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmRldi1cXHUwMDNlbWxvX3BtX3dvcmspYCBwcmlvciB0byBgbXQ3OTJ4dV9zdG9wKClgLiBUaGlzIGNoYW5nZSBmaXhlcyBjb25jdXJyZW5jeSBhbmQgbGlmZXRpbWUvdXNlLWFmdGVyLWZyZWUgaXNzdWVzIHdoZW4gdGVhcmluZyBkb3duIHRoZSBkZXZpY2UuIEl0IGRvZXMgbm90IGludHJvZHVjZSwgbW9kaWZ5LCBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCBwYWRkaW5nLCBkYXRhIHN0cnVjdHVyZXMsIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gQ29uY3VycmVuY3kgYnVncyBhbmQgdXNlLWFmdGVyLWZyZWUgZXJyb3JzIGFyZSBwcm9wZXJseSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgZGVidWdnZXJzLCBzbyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzN2U1MWY0ZDBjODE2MjI1NDdlY2JiNGJiOWU4Nzk1NjdhYzI3ZjFkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMjA6MjA6MzQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jXG5pbmRleCAxNzU3MDIzZWE3MGQ1Li5kYjZmZDAxNDQ0N2JkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jXG5AQCAtMTQ3LDYgKzE0NywxNSBAQCBzdGF0aWMgaW50IG10NzkyNXVfbWFjX3Jlc2V0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBtdDc5MjV1X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcbit7XG4rXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gbXQ3OTJ4X2h3X2Rldihodyk7XG4rXG4rXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZW1sb19wbV93b3JrKTtcbitcbitcdG10NzkyeHVfc3RvcChodywgc3VzcGVuZCk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgbXQ3OTI1dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG4gXHRcdFx0IGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbiB7XG5AQCAtMTkzLDcgKzIwMiw3IEBAIHN0YXRpYyBpbnQgbXQ3OTI1dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXG4gXHRpZiAoIW9wcylcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRvcHMtXHUwMDNlc3RvcCA9IG10NzkyeHVfc3RvcDtcbitcdG9wcy1cdTAwM2VzdG9wID0gbXQ3OTI1dV9zdG9wO1xuIFxuIFx0bWRldiA9IG10NzZfYWxsb2NfZGV2aWNlKFx1MDAyNnVzYl9pbnRmLVx1MDAzZWRldiwgc2l6ZW9mKCpkZXYpLCBvcHMsIFx1MDAyNmRydl9vcHMpO1xuIFx0aWYgKCFtZGV2KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjE6MzQuMTE0MTY0MTk4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU3NjE0NjIxMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS01TQU4gQW5hbHlzaXMgb2YgTVQ3OTI1IFVTQiBEcml2ZXIgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgY2hhbmdlIG5lY2Vzc2l0YXRlcyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCBpbnRyb2R1Y2VzIGFueSBtZW1vcnkgYWNjZXNzIHBhdHRlcm5zIHRoYXQgY291bGQgdHJpZ2dlciBtZW1vcnkgc2FmZXR5IGlzc3VlcyB0aGF0IEtNU0FOIGlzIGRlc2lnbmVkIHRvIGNhdGNoLlxuXG5GaXJzdCwgSSBzZWUgdGhlIGRpZmYuIEl0J3MgaW4gdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuY2AgZmlsZS4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpbnZvbHZlcyBtb2RpZnlpbmcgdGhlIGBvcHMtXHUwMDNlc3RvcGAgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gdGhlIGBtdDc5MjV1X3Byb2JlYCBmdW5jdGlvbi4gUHJldmlvdXNseSwgaXQgcG9pbnRlZCB0byBgbXQ3OTJ4dV9zdG9wYCwgYnV0IG5vdyBpdCdzIGJlaW5nIHNldCB0byBgbXQ3OTI1dV9zdG9wYC4gU28sIHRoZSBgc3RvcGAgZnVuY3Rpb24gaGFzIGJlZW4gdXBkYXRlZC4gVGhlIGNoYW5nZSBpcyBzbWFsbCBhbmQgY29udGFpbmVkOyBob3dldmVyLCBpdCAqY291bGQqIGJlIHNpZ25pZmljYW50LlxuXG5JIG5lZWQgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHdoYXQgYG10NzkyNXVfc3RvcGAgYW5kIGBtdDc5Mnh1X3N0b3BgIGFyZSBkb2luZyBpbiB0ZXJtcyBvZiBtZW1vcnkgb3BlcmF0aW9ucy4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGNvZGUgb2YgYG10NzkyNXVfc3RvcGAuIFRoZSBpbXBvcnRhbnQgZnVuY3Rpb24gaW4gdGhlIHBhdGNoIGlzIGBtdDc5MjV1X3N0b3BgLlxuXG5JJ2xsIHF1aWNrbHkgbG9vayB1cCB0aGUgbmV3IGBtdDc5MjV1X3N0b3BgIGZ1bmN0aW9uIGRlZmluaXRpb24uIEl0IHNlZW1zIHRvIGNhbGwgYG10NzkyeHVfc3RvcGAgYWZ0ZXIgY2FuY2VsbGluZyB0aGUgYGRldi1cdTAwM2VtbG9fcG1fd29ya2AuIFRoaXMgY2FuY2VsIGNvdWxkIGJlIHNpZ25pZmljYW50IGJlY2F1c2Ugb2YgdGhlIGNvbmN1cnJlbmN5IGludHJvZHVjZWQuXG5cbk5vdywgbXkgZm9jdXMgc2hpZnRzIHRvIHVuZGVyc3RhbmRpbmcgaWYgYW55IG5ldyBtZW1vcnkgYWNjZXNzIHBhdHRlcm5zLCBwYXJ0aWN1bGFybHkgaW4gcmVsYXRpb24gdG8gY29uY3VycmVudCBhY2Nlc3Mgb3IgcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkgYXJlIGludHJvZHVjZWQgYnkgdGhpcyB1cGRhdGVkIGBzdG9wYCBmdW5jdGlvbiwgb3IgdGhlIGNoYW5nZXMgYXJvdW5kIHRoZSB3b3JrIHF1ZXVlLiBEb2VzIGNhbmNlbGxpbmcgYW5kIGNhbGxpbmcgZnVuY3Rpb25zIGluIHRoaXMgb3JkZXIgYWx0ZXIgdGhlIG1lbW9yeSBsYW5kc2NhcGU/IFRoZSB1c2Ugb2YgYGNhbmNlbF9kZWxheWVkX3dvcmtfc3luY2AgZG9lcyBpbmRpY2F0ZSB0aGF0IHN5bmNocm9uaXphdGlvbiBpcyB0YWtpbmcgcGxhY2UsIHNvIG5vdyBteSBjb25jZXJuIGlzIHdoZXRoZXIgYSBtZW1vcnkgcmFjZSBpcyBiZWluZyBpbnRyb2R1Y2VkLlxuXG5JJ2xsIHVzZSBteSBrbm93bGVkZ2UgYW5kIHRvb2xzIHRvIHF1aWNrbHkgdW5kZXJzdGFuZDpcblxuMS4gIEhvdyBgbXQ3OTI1dV9zdG9wYCBpbnRlcmFjdHMgd2l0aCB0aGUgYGRldmAgc3RydWN0LCBgbWxvX3BtX3dvcmtgIGFuZCBob3cgdGhlc2UgYXJlIG1hbmFnZWQuXG4yLiAgSG93IHRoZSBvcmRlciBvZiBjYWxsaW5nIGBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmNgIGFuZCBgbXQ3OTJ4dV9zdG9wYCBhZmZlY3RzIG1lbW9yeSBhY2Nlc3MsIGFuZCBpZiB0aGlzIGNvdWxkIGNyZWF0ZSBhIHJhY2UgY29uZGl0aW9uLlxuMy4gIEFueSBvdGhlciByZWxldmFudCBkYXRhIHRoYXQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIG1lbW9yeSB1bnNhZmV0eS5cblxuSWYgSSBkb24ndCBzZWUgYW55dGhpbmcgaW1tZWRpYXRlbHkgZ2xhcmluZywgSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29udGV4dHMgYW5kIHJlbGF0ZWQgZmlsZXMgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBUaGlzIGluaXRpYWwgcmV2aWV3IGlzIGp1c3QgdGhlIGZpcnN0IHBhc3MgYmVmb3JlIHBvdGVudGlhbGx5IHJlcXVlc3RpbmcgYSBmdWxsIEtNU0FOIHJ1biBvciBtYXJraW5nIGl0IGBOZWVkc0tNU0FOPXRydWVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzI1LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjE6MzkuODc1NjMwNVoiLCJTZXEiOjI4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDIxNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQwLFxuICBcIkxpbmVDb3VudFwiOiA3MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTQwOlxcdFxcbiAxNDE6XFx0XFx0ZXJyID0gX19tdDc5MjVfc3RhcnQoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG4gMTQyOlxcdG91dDpcXG4gMTQzOlxcdFxcdGNsZWFyX2JpdChNVDc2X1JFU0VULCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG4gMTQ0OlxcdFxcbiAxNDU6XFx0XFx0bXQ3Nl93b3JrZXJfZW5hYmxlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYudHhfd29ya2VyKTtcXG4gMTQ2OlxcdFxcbiAxNDc6XFx0XFx0cmV0dXJuIGVycjtcXG4gMTQ4OlxcdH1cXG4gMTQ5OlxcdFxcbiAxNTA6XFx0c3RhdGljIHZvaWQgbXQ3OTI1dV9zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIHN1c3BlbmQpXFxuIDE1MTpcXHR7XFxuIDE1MjpcXHRcXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gbXQ3OTJ4X2h3X2Rldihodyk7XFxuIDE1MzpcXHRcXG4gMTU0OlxcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2VtbG9fcG1fd29yayk7XFxuIDE1NTpcXHRcXG4gMTU2OlxcdFxcdG10NzkyeHVfc3RvcChodywgc3VzcGVuZCk7XFxuIDE1NzpcXHR9XFxuIDE1ODpcXHRcXG4gMTU5OlxcdHN0YXRpYyBpbnQgbXQ3OTI1dV9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYsXFxuIDE2MDpcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbiAxNjE6XFx0e1xcbiAxNjI6XFx0XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBtdDc2X2RyaXZlcl9vcHMgZHJ2X29wcyA9IHtcXG4gMTYzOlxcdFxcdFxcdC50eHdpX3NpemUgPSBNVF9TRElPX1RYRF9TSVpFLFxcbiAxNjQ6XFx0XFx0XFx0LmRydl9mbGFncyA9IE1UX0RSVl9SWF9ETUFfSERSIHwgTVRfRFJWX0hXX01HTVRfVFhRIHxcXG4gMTY1OlxcdFxcdFxcdFxcdCAgICAgTVRfRFJWX0FNU0RVX09GRkxPQUQsXFxuIDE2NjpcXHRcXHRcXHQuc3VydmV5X2ZsYWdzID0gU1VSVkVZX0lORk9fVElNRV9UWCB8XFxuIDE2NzpcXHRcXHRcXHRcXHRcXHRTVVJWRVlfSU5GT19USU1FX1JYIHxcXG4gMTY4OlxcdFxcdFxcdFxcdFxcdFNVUlZFWV9JTkZPX1RJTUVfQlNTX1JYLFxcbiAxNjk6XFx0XFx0XFx0LnR4X3ByZXBhcmVfc2tiID0gbXQ3OTI1X3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiLFxcbiAxNzA6XFx0XFx0XFx0LnR4X2NvbXBsZXRlX3NrYiA9IG10NzkyNV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IsXFxuIDE3MTpcXHRcXHRcXHQudHhfc3RhdHVzX2RhdGEgPSBtdDc5MjVfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEsXFxuIDE3MjpcXHRcXHRcXHQucnhfc2tiID0gbXQ3OTI1X3F1ZXVlX3J4X3NrYixcXG4gMTczOlxcdFxcdFxcdC5yeF9jaGVjayA9IG10NzkyNV9yeF9jaGVjayxcXG4gMTc0OlxcdFxcdFxcdC5zdGFfYWRkID0gbXQ3OTI1X21hY19zdGFfYWRkLFxcbiAxNzU6XFx0XFx0XFx0LnN0YV9ldmVudCA9IG10NzkyNV9tYWNfc3RhX2V2ZW50LFxcbiAxNzY6XFx0XFx0XFx0LnN0YV9yZW1vdmUgPSBtdDc5MjVfbWFjX3N0YV9yZW1vdmUsXFxuIDE3NzpcXHRcXHRcXHQudXBkYXRlX3N1cnZleSA9IG10NzkyeF91cGRhdGVfY2hhbm5lbCxcXG4gMTc4OlxcdFxcdH07XFxuIDE3OTpcXHRcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG10NzkyeF9oaWZfb3BzIGhpZl9vcHMgPSB7XFxuIDE4MDpcXHRcXHRcXHQubWN1X2luaXQgPSBtdDc5MjV1X21jdV9pbml0LFxcbiAxODE6XFx0XFx0XFx0LmluaXRfcmVzZXQgPSBtdDc5Mnh1X2luaXRfcmVzZXQsXFxuIDE4MjpcXHRcXHRcXHQucmVzZXQgPSBtdDc5MjV1X21hY19yZXNldCxcXG4gMTgzOlxcdFxcdH07XFxuIDE4NDpcXHRcXHRzdGF0aWMgc3RydWN0IG10NzZfYnVzX29wcyBidXNfb3BzID0ge1xcbiAxODU6XFx0XFx0XFx0LnJyID0gbXQ3OTJ4dV9ycixcXG4gMTg2OlxcdFxcdFxcdC53ciA9IG10NzkyeHVfd3IsXFxuIDE4NzpcXHRcXHRcXHQucm13ID0gbXQ3OTJ4dV9ybXcsXFxuIDE4ODpcXHRcXHRcXHQucmVhZF9jb3B5ID0gbXQ3NnVfcmVhZF9jb3B5LFxcbiAxODk6XFx0XFx0XFx0LndyaXRlX2NvcHkgPSBtdDc5Mnh1X2NvcHksXFxuIDE5MDpcXHRcXHRcXHQudHlwZSA9IE1UNzZfQlVTX1VTQixcXG4gMTkxOlxcdFxcdH07XFxuIDE5MjpcXHRcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYodXNiX2ludGYpO1xcbiAxOTM6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9vcHMgKm9wcztcXG4gMTk0OlxcdFxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3O1xcbiAxOTU6XFx0XFx0c3RydWN0IG10NzkyeF9kZXYgKmRldjtcXG4gMTk2OlxcdFxcdHN0cnVjdCBtdDc2X2RldiAqbWRldjtcXG4gMTk3OlxcdFxcdHU4IGZlYXR1cmVzO1xcbiAxOTg6XFx0XFx0aW50IHJldDtcXG4gMTk5OlxcdFxcbiAyMDA6XFx0XFx0b3BzID0gbXQ3OTJ4X2dldF9tYWM4MDIxMV9vcHMoXFx1MDAyNnVzYl9pbnRmLVxcdTAwM2VkZXYsIFxcdTAwMjZtdDc5MjVfb3BzLFxcbiAyMDE6XFx0XFx0XFx0XFx0XFx0ICAgICAgKHZvaWQgKilpZC1cXHUwMDNlZHJpdmVyX2luZm8sIFxcdTAwMjZmZWF0dXJlcyk7XFxuIDIwMjpcXHRcXHRpZiAoIW9wcylcXG4gMjAzOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAyMDQ6XFx0XFxuIDIwNTpcXHRcXHRvcHMtXFx1MDAzZXN0b3AgPSBtdDc5MjV1X3N0b3A7XFxuIDIwNjpcXHRcXG4gMjA3OlxcdFxcdG1kZXYgPSBtdDc2X2FsbG9jX2RldmljZShcXHUwMDI2dXNiX2ludGYtXFx1MDAzZWRldiwgc2l6ZW9mKCpkZXYpLCBvcHMsIFxcdTAwMjZkcnZfb3BzKTtcXG4gMjA4OlxcdFxcdGlmICghbWRldilcXG4gMjA5OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQyMDoyMTozOS44NzU3NzU5MVoiLCJTZXEiOjI5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTk4NzAwMDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgbWxvX3BtX3dvcmtgIFBhdGNoKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBwYXRjaCBhbmQgd2hhdCdzIGRyaXZpbmcgdGhlIGNoYW5nZS4gVGhlIGZpcnN0IHRoaW5nIHRoYXQgY29tZXMgdG8gbWluZCBpcyB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCBgbWxvX3BtX3dvcmtgICppcyouIEkgbWVhbiwgd2l0aG91dCBrbm93aW5nIGl0cyBwdXJwb3NlLCBkaWdnaW5nIGludG8gdGhlIHBhdGNoIGl0c2VsZiBpcyBnb2luZyB0byBiZSBhIGJpdCBsaWtlIHRyeWluZyB0byBzb2x2ZSBhIHB1enpsZSB3aXRoIGhhbGYgdGhlIHBpZWNlcyBtaXNzaW5nLlxuXG5UaGVyZWZvcmUsIG15IGltbWVkaWF0ZSBwbGFuIGlzIHRvIGRlbHZlIGludG8gdGhlIGNvZGUuIEknbGwgbGF1bmNoIGEgYGdyZXBgIG9wZXJhdGlvbiBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBNZWRpYXRlayB3aXJlbGVzcyBkcml2ZXIgZGlyZWN0b3J5IChgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9gKS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHByZXR0eSB0YXJnZXRlZCBsaXN0IG9mIHdoZXJlIGBtbG9fcG1fd29ya2AgaXMgZGVmaW5lZCwgdXNlZCwgYW5kLCBob3BlZnVsbHksIGRvY3VtZW50ZWQuIEhvcGVmdWxseSwgaXQgaXMgaW4gYSBjb21tZW50LCBhbmQgdGhhdCB3aWxsIGdpdmUgbWUgbXkgZmlyc3QgY2x1ZXMuIEZyb20gdGhlcmUsIEkgY2FuIHN0YXJ0IHBpZWNpbmcgdG9nZXRoZXIgdGhlIGJyb2FkZXIgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc5MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMjA6MjE6NDEuODc0NDc4MzU0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDcyMTQyOTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWxvX3BtX3dvcmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jPTI0Mz1pbnQgbXQ3OTI1X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvaW5pdC5jLTI1My1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VwbS5wc193b3JrLCBtdDc5MnhfcG1fcG93ZXJfc2F2ZV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9pbml0LmM6MjU0OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrLCBtdDc5MjVfbWxvX3BtX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2luaXQuYy0yNTUtXFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBtLndha2Vfd29yaywgbXQ3OTJ4X3BtX3dha2Vfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNTExPXZvaWQgbXQ3OTI1X21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE1MjctXFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZwbS1cXHUwMDNlcHNfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTUyODpcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmRldi1cXHUwMDNlbWxvX3BtX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE1MjktXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2cG0tXFx1MDAzZXdha2Vfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MTUxOD1tdDc5MjVfbWxvX3BtX2l0ZXIodm9pZCAqcHJpdiwgdTggKm1hYywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYy0xNTM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYzoxNTM4OnZvaWQgbXQ3OTI1X21sb19wbV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTUzOS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTE1NDAtXFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbXQ3OTJ4X2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MTU0MTpcXHRcXHRcXHRcXHRcXHQgICAgICBtbG9fcG1fd29yay53b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTU0Mi1cXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IG10NzZfaHcoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz0xNzA0PXN0YXRpYyBpbnQgbXQ3OTI1X3N1c3BlbmQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTcxMy1cXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmRldi1cXHUwMDNlcG0ucHNfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjE3MTQ6XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMTcxNS1cXHRtdDc2X2Nvbm5hY19mcmVlX3BlbmRpbmdfdHhfc2ticyhcXHUwMDI2ZGV2LVxcdTAwM2VwbSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MjE1MD1zdGF0aWMgdm9pZCBtdDc5MjVfbGlua19pbmZvX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjE5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6MjE5ODpcXHRcXHRpZWVlODAyMTFfcXVldWVfZGVsYXllZF93b3JrKGh3LCBcXHUwMDI2ZGV2LVxcdTAwM2VtbG9fcG1fd29yaywgNSAqIEhaKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjE5OS1cXHRcXHRtdmlmLVxcdTAwM2VtbG9fcG1fc3RhdGUgPSBNVDc5MnhfTUxPX0NIQU5HRURfUFM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9MjcwNz1zdGF0aWMgdm9pZCBtdDc5MjVfc3RvcChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgYm9vbCBzdXNwZW5kKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTI3MTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjI3MTE6XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtMjcxMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oPTMzMD1pbnQgbXQ3OTI1X21jdV91bmlfcnhfYmEoc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMzMi1cXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwgYm9vbCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oOjMzMzp2b2lkIG10NzkyNV9tbG9fcG1fd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L210NzkyNS5oLTMzNC12b2lkIG10NzkyNV9zY2FuX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTQxPXN0YXRpYyB2b2lkIG10NzkyNWVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTU1LVxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2cG0tXFx1MDAzZXBzX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjU2OlxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2VtbG9fcG1fd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNTctXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2cG0tXFx1MDAzZXdha2Vfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYz03MzU9c3RhdGljIGludCBtdDc5MjVfcGNpX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2aWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtNzQ2LVxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2cG0tXFx1MDAzZXBzX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjc0NzpcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmRldi1cXHUwMDNlbWxvX3BtX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTc0OC1cXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZwbS1cXHUwMDNld2FrZV93b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTE1MD1zdGF0aWMgdm9pZCBtdDc5MjV1X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTE1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzoxNTQ6XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0xNTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0yNzk9c3RhdGljIGludCBtdDc5MjV1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI4Ny1cXHRmbHVzaF93b3JrKFxcdTAwMjZkZXYtXFx1MDAzZXJlc2V0X3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjI4ODpcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmRldi1cXHUwMDNlbWxvX3BtX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTI4OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg9MjkzPXN0cnVjdCBtdDc5MnhfZGV2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtMzMxLVxcdHN0cnVjdCB3b3JrX3N0cnVjdCBpcHY2X25zX3dvcms7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDozMzI6XFx0c3RydWN0IGRlbGF5ZWRfd29yayBtbG9fcG1fd29yaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oLTMzMy1cXHQvKiBJUHY2IGFkZHJlc3NlcyBmb3IgV29XTEFOICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjIxOjQyLjIyMTY5NzU0OVoiLCJTZXEiOjMxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MDgzNzQzOTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1UNzkyNVUgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGFkZHJlc3NpbmcgYSBwcmV0dHkgY2xhc3NpYyBjb25jdXJyZW5jeSBpc3N1ZSBpbiB0aGUgTVQ3OTI1VSBVU0IgZHJpdmVyLiBTcGVjaWZpY2FsbHksIHdlJ3JlIHRyeWluZyB0byBwcmV2ZW50IGEgcmFjZSBjb25kaXRpb24gb3IgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8gd2hlbiBzdG9wcGluZyB0aGUgZGV2aWNlLiBUaGUgY29yZSBwcm9ibGVtIHNlZW1zIHRvIGJlIHRoZSB0aW1pbmcgb2YgdGhlIGBkZXYtXHUwMDNlbWxvX3BtX3dvcmtgIHdvcmtxdWV1ZSBhbmQgdGhlIGRldmljZSBzaHV0ZG93biBzZXF1ZW5jZS4gVGhlIGFkZGl0aW9uIG9mIGBtdDc5MjV1X3N0b3BgIGlzIGRlc2lnbmVkIHRvIHN5bmNocm9ub3VzbHkgY2FuY2VsIHRoYXQgd29yayBiZWZvcmUgY2FsbGluZyB0aGUgZXhpc3RpbmcgYG10NzkyeHVfc3RvcGAsIHdoaWNoIGlzIHRoZSBhY3R1YWwgZGV2aWNlIHN0b3AgZnVuY3Rpb24uXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgZml4IGlzIGNvcnJlY3QgYmVjYXVzZSwgYXQgdGhlIGNvcmUsIGl0IGFwcGVhcnMgdG8gcHJvcGVybHkgaGFuZGxlIHRoZSB3b3JrcXVldWUsIGVuc3VyaW5nIHRoYXQgaXQgaXMgc3RvcHBlZCBiZWZvcmUgZnVydGhlciBkZXZpY2Ugc2h1dGRvd24gcHJvY2VkdXJlcyBjb250aW51ZS4gSSBhbSByZWFzc3VyZWQgdGhhdCB3ZSBhcmUgbm90IGF0dGVtcHRpbmcgYW55IGNvbXBsaWNhdGVkIGNoYW5nZXMgb2YgZGV2aWNlIGluaXRpYWxpemF0aW9uIG9yIHNlbmRpbmcga2VybmVsIGRhdGEgdG8gdXNlciBzcGFjZS5cblxuTm93LCBsZXQncyBkbyBhIGRlZXAgZGl2ZSBmb3IgdGhlIHBvdGVudGlhbCByaXNrcy4gSSBkbyBub3Qgc2VlIGFueSBhcHBhcmVudCByaXNrcyBvciBuZWVkIGZvciBhZGRpdGlvbmFsIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikgY2hlY2tzLiBIZXJlJ3Mgd2h5OlxuXG4xLiAgKipObyBVc2VyLVNwYWNlIERhdGEgRXhwb3N1cmU6KiogVGhlIHBhdGNoIGRvZXNuJ3QgaW52b2x2ZSBhbnkgY2hhbmdlcyB0byBrZXJuZWwgc3RydWN0dXJlcyBiZWluZyBwYXNzZWQgdG8gdXNlciBzcGFjZS5cbjIuICAqKk5vIFVuaW5pdGlhbGl6ZWQgTWVtb3J5IElzc3VlczoqKiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyByZWFkIG9yIHVzZWQgZm9yIGJyYW5jaGluZy5cbjMuICAqKk5vIEluaXRpYWxpemF0aW9uIENvbmNlcm5zOioqIFRoZSBwYXRjaCBkb2Vzbid0IGFsdGVyIGFueSBhbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLlxuNC4gICoqTm8gQm91bmRzIFZpb2xhdGlvbnM6KiogVGhlcmUgYXJlIG5vIGxlbmd0aCBvciBib3VuZHMgY2hlY2sgY2hhbmdlcywgd2hpY2ggbWlnaHQgaW50cm9kdWNlIHZ1bG5lcmFiaWxpdGllcy5cblxuVGhpcyBmaXggZm9jdXNlcyBvbiBzeW5jaHJvbml6YXRpb246IGBtdDc5MjV1X3N0b3AoKWAgY2FsbHMgYGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZkZXYtXHUwMDNlbWxvX3BtX3dvcmspYCBhbmQgdGhlbiBgbXQ3OTJ4dV9zdG9wKGh3LCBzdXNwZW5kKWAsIGFuZCB0aGUgcmVsZXZhbnQgYG9wcy1cdTAwM2VzdG9wYCBwb2ludGVyIGlzIHVwZGF0ZWQuXG5cblRoaXMgaXMgYSBnb29kLCB0YXJnZXRlZCBzeW5jaHJvbml6YXRpb24gZml4LCB0aGUgcG90ZW50aWFsIGZvciBVc2UtQWZ0ZXItRnJlZSAoVUFGKSBhbmQgY29uY3VycmVuY3kgaXNzdWVzIGFyZSBtb25pdG9yZWQgYW5kIGRldGVjdGVkIGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBkZWJ1Z2dlcnMuIEtNU0FOIGlzIHNwZWNpZmljYWxseSBmb3IgZGV0ZWN0aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBTbywgSSBzZWUgbm8gbmVlZCBmb3IgS01TQU4gdG8gYmUgZW5hYmxlZCBpbiB0aGlzIGNhc2UuXG5cblRoZXJlZm9yZSwgYE5lZWRzS01TQU4gPSBmYWxzZWAuIEkgYW0gcmVhZHkgdG8gaW52b2tlIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NzEsIk91dHB1dFRva2VucyI6MTcwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDIwOjIxOjQ3LjMwNTQ0MzQ0NVoiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGRlbGF5ZWQgd29yayBjYW5jZWxsYXRpb24gZHVyaW5nIGRldmljZSBzdG9wIGluIHRoZSBtdDc5MjUgVVNCIGRyaXZlciBieSBpbnRyb2R1Y2luZyBgbXQ3OTI1dV9zdG9wKClgLCB3aGljaCBjYWxscyBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrKWAgcHJpb3IgdG8gYG10NzkyeHVfc3RvcCgpYC4gVGhpcyBjaGFuZ2UgZml4ZXMgY29uY3VycmVuY3kgYW5kIGxpZmV0aW1lL3VzZS1hZnRlci1mcmVlIGlzc3VlcyB3aGVuIHRlYXJpbmcgZG93biB0aGUgZGV2aWNlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIG1vZGlmeSwgb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgcGFkZGluZywgZGF0YSBzdHJ1Y3R1cmVzLCBvciBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIENvbmN1cnJlbmN5IGJ1Z3MgYW5kIHVzZS1hZnRlci1mcmVlIGVycm9ycyBhcmUgcHJvcGVybHkgY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2Vycywgc28gYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGRlbGF5ZWQgd29yayBjYW5jZWxsYXRpb24gZHVyaW5nIGRldmljZSBzdG9wIGluIHRoZSBtdDc5MjUgVVNCIGRyaXZlciBieSBpbnRyb2R1Y2luZyBgbXQ3OTI1dV9zdG9wKClgLCB3aGljaCBjYWxscyBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZW1sb19wbV93b3JrKWAgcHJpb3IgdG8gYG10NzkyeHVfc3RvcCgpYC4gVGhpcyBjaGFuZ2UgZml4ZXMgY29uY3VycmVuY3kgYW5kIGxpZmV0aW1lL3VzZS1hZnRlci1mcmVlIGlzc3VlcyB3aGVuIHRlYXJpbmcgZG93biB0aGUgZGV2aWNlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UsIG1vZGlmeSwgb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgcGFkZGluZywgZGF0YSBzdHJ1Y3R1cmVzLCBvciBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIENvbmN1cnJlbmN5IGJ1Z3MgYW5kIHVzZS1hZnRlci1mcmVlIGVycm9ycyBhcmUgcHJvcGVybHkgY292ZXJlZCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIGRlYnVnZ2Vycywgc28gYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow2shn7[1] Phase: Succeeded StartedAt: 2026-09-10 20:21:58 +0000 UTC FinishedAt: 2026-09-10 20:21:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-10 20:21:58 +0000 UTC FinishedAt: 2026-09-10 20:21:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[2] Phase: Succeeded StartedAt: 2026-09-10 20:21:58 +0000 UTC FinishedAt: 2026-09-10 22:01:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-10 20:21:58 +0000 UTC FinishedAt: 2026-09-10 22:01:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-10 20:21:58 +0000 UTC FinishedAt: 2026-09-10 20:22:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-10 20:21:58 +0000 UTC FinishedAt: 2026-09-10 20:22:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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-workflow2shn7/series-workflow2shn7-convert-artifact-2865115184/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-10 20:22:08 +0000 UTC FinishedAt: 2026-09-10 20:42:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-10 20:22:08 +0000 UTC FinishedAt: 2026-09-10 20:42:29 +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:*db4fd6d3-21be-46c0-b1de-62abc8ccd806,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-workflow2shn7/series-workflow2shn7-convert-artifact-2865115184/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": "3927445b-6e95-4d79-86b7-c493292e3d1a", "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-workflow2shn7/series-workflow2shn7-build-action-994450742/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-10 20:22:08 +0000 UTC FinishedAt: 2026-09-10 20:42:19 +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:*db4fd6d3-21be-46c0-b1de-62abc8ccd806,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-workflow2shn7/series-workflow2shn7-convert-artifact-2865115184/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": "3927445b-6e95-4d79-86b7-c493292e3d1a", "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-workflow2shn7/series-workflow2shn7-build-action-994450742/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-10 20:42:29 +0000 UTC FinishedAt: 2026-09-10 20:42:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-10 20:42:29 +0000 UTC FinishedAt: 2026-09-10 20:42:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-10 20:42:29 +0000 UTC FinishedAt: 2026-09-10 20:42:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-10 20:42:29 +0000 UTC FinishedAt: 2026-09-10 20:42:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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-workflow2shn7/series-workflow2shn7-convert-artifact-2085627671/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-10 20:42:39 +0000 UTC FinishedAt: 2026-09-10 20:44:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-10 20:42:39 +0000 UTC FinishedAt: 2026-09-10 20:44:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3927445b-6e95-4d79-86b7-c493292e3d1a,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-workflow2shn7/series-workflow2shn7-build-action-994450742/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-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-10 20:44:34 +0000 UTC FinishedAt: 2026-09-10 20:44:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-10 20:44:34 +0000 UTC FinishedAt: 2026-09-10 20:44:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-10 20:44:34 +0000 UTC FinishedAt: 2026-09-10 21:05:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-10 20:44:34 +0000 UTC FinishedAt: 2026-09-10 21:05:27 +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:*db4fd6d3-21be-46c0-b1de-62abc8ccd806,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-workflow2shn7/series-workflow2shn7-convert-artifact-2085627671/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": "6e6ae9d8-430e-4d4e-82d2-54c0122548f6", "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-workflow2shn7/series-workflow2shn7-build-action-3426442587/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-10 20:44:34 +0000 UTC FinishedAt: 2026-09-10 21:05:17 +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:*db4fd6d3-21be-46c0-b1de-62abc8ccd806,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-workflow2shn7/series-workflow2shn7-convert-artifact-2085627671/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": "6e6ae9d8-430e-4d4e-82d2-54c0122548f6", "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-workflow2shn7/series-workflow2shn7-build-action-3426442587/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-10 21:05:27 +0000 UTC FinishedAt: 2026-09-10 21:05:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-10 21:05:27 +0000 UTC FinishedAt: 2026-09-10 21:05:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-10 21:05:27 +0000 UTC FinishedAt: 2026-09-10 21:07:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-10 21:05:27 +0000 UTC FinishedAt: 2026-09-10 21:07:30 +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:*6e6ae9d8-430e-4d4e-82d2-54c0122548f6,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-workflow2shn7/series-workflow2shn7-build-action-3426442587/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-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-10 21:07:40 +0000 UTC FinishedAt: 2026-09-10 22:01:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-10 21:07:40 +0000 UTC FinishedAt: 2026-09-10 22:01:33 +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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"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:*3927445b-6e95-4d79-86b7-c493292e3d1a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6e6ae9d8-430e-4d4e-82d2-54c0122548f6,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-workflow2shn7/series-workflow2shn7-build-action-994450742/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-workflow2shn7/series-workflow2shn7-build-action-3426442587/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-10 21:07:40 +0000 UTC FinishedAt: 2026-09-10 21:07:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-10 21:07:40 +0000 UTC FinishedAt: 2026-09-10 21:07:45 +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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"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-workflow2shn7/series-workflow2shn7-convert-artifact-3041207248/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-10 21:07:40 +0000 UTC FinishedAt: 2026-09-10 21:07:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-10 21:07:40 +0000 UTC FinishedAt: 2026-09-10 21:07:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-10 21:07:40 +0000 UTC FinishedAt: 2026-09-10 21:07:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-10 21:07:50 +0000 UTC FinishedAt: 2026-09-10 22:01:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2shn7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-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":["mt7925u_stop","mt7925u_probe","mt7925_mlo_pm_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7925U","MAC80211","USB","WLAN_VENDOR_MEDIATEK"],"series_id":"3600bd7f-acf2-4926-a8fc-25e4bcf263d1","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-10 21:07:50 +0000 UTC FinishedAt: 2026-09-10 22:01:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3927445b-6e95-4d79-86b7-c493292e3d1a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6e6ae9d8-430e-4d4e-82d2-54c0122548f6,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-workflow2shn7/series-workflow2shn7-build-action-994450742/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-workflow2shn7/series-workflow2shn7-build-action-3426442587/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-workflow2shn7/series-workflow2shn7-convert-artifact-3041207248/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,}