Name: series-workflowplshm Phase: Succeeded StartedAt: 2026-07-29 03:31:16 +0000 UTC FinishedAt: 2026-07-29 07:58:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[0] Phase: Succeeded StartedAt: 2026-07-29 03:31:16 +0000 UTC FinishedAt: 2026-07-29 04:01:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[0].run-triage Phase: Succeeded StartedAt: 2026-07-29 03:31:16 +0000 UTC FinishedAt: 2026-07-29 04:01:14 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TEST_HMM", "TRANSPARENT_HUGEPAGE", "DEVICE_PRIVATE", "ZONE_DEVICE", "MEMORY_HOTPLUG", "MEMORY_HOTREMOVE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TEST_HMM", "TRANSPARENT_HUGEPAGE", "DEVICE_PRIVATE", "ZONE_DEVICE", "MEMORY_HOTPLUG", "MEMORY_HOTREMOVE" ], "series_id": "5331a1c1-1dca-4ea4-b252-b85f5f90a499" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "migrate_device_pages", "migrate_vma_pages", "migrate_device_coherent_folio" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RFU1RfSE1NJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1pPTkVfREVWSUNFJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RSRU1PVkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttaWdyYXRlX2RldmljZV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX3ZtYV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgIHRvIGZpeCBmb2xpbyBzcGxpdHRpbmcgYW5kIHN3YXAgY2FjaGUgbWFwcGluZyBkdXJpbmcgZGV2aWNlIG1lbW9yeSBtaWdyYXRpb24uIFRoaXMgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB1c2VkIGJ5IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudCkgYW5kIGRldmljZSBkcml2ZXJzLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8tZGV2aWNlIGRyaXZlciBhbmQgc3RhbmRhcmQgR1VQIChnZXRfdXNlcl9wYWdlcykgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3N2ExZGY2MTdlYmUyNjMyYzZiZGIxZjI1YjI5ODQ1YTI2YmU0N2U4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDM6NTk6MTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vbWlncmF0ZV9kZXZpY2UuYyBiL21tL21pZ3JhdGVfZGV2aWNlLmNcbmluZGV4IDU1NDc1NGViMjZmZjIuLjBlNmYwMDE5MGZkODMgMTAwNjQ0XG4tLS0gYS9tbS9taWdyYXRlX2RldmljZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9taWdyYXRlX2RldmljZS5jXG5AQCAtMTE4Miw2ICYjNDM7MTE4MiwxMyBAQCBzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxuIFx0XHRcdFx0XHRcdFx0IE1JR1JBVEVfUEZOX0NPTVBPVU5EKTtcbiBcdFx0XHRcdFx0Z290byBuZXh0O1xuIFx0XHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0XHQvKlxuJiM0MztcdFx0XHRcdCAqIHJlc2V0IG5yIHNvIHRoYXQgb25seSBmaXJzdCBhZnRlci1zcGxpdCBmb2xpb1xuJiM0MztcdFx0XHRcdCAqIGlzIHByb2Nlc3NlZCBiZWxvd1xuJiM0MztcdFx0XHRcdCAqL1xuJiM0MztcdFx0XHRcdFZNX1dBUk5fT05fT05DRShmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSk7XG4mIzQzO1x0XHRcdFx0bnIgPSAxO1xuIFx0XHRcdH0gZWxzZSBpZiAoKHNyY19wZm5zW2ldIFx1MDAyNiBNSUdSQVRFX1BGTl9NSUdSQVRFKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHRcdChkc3RfcGZuc1tpXSBcdTAwMjYgTUlHUkFURV9QRk5fQ09NUE9VTkQpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0IShzcmNfcGZuc1tpXSBcdTAwMjYgTUlHUkFURV9QRk5fQ09NUE9VTkQpKSB7XG5AQCAtMTIyMSw2ICYjNDM7MTIyOCwxMiBAQCBzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxuIFx0XHRcdGZvbGlvID0gcGFnZV9mb2xpbyhtaWdyYXRlX3Bmbl90b19wYWdlKHNyY19wZm5zW2kmIzQzO2pdKSk7XG4gXHRcdFx0bmV3Zm9saW8gPSBwYWdlX2ZvbGlvKG1pZ3JhdGVfcGZuX3RvX3BhZ2UoZHN0X3BmbnNbaSYjNDM7al0pKTtcbiBcbiYjNDM7XHRcdFx0LypcbiYjNDM7XHRcdFx0ICogZm9saW9fZnJlZV9zd2FwKCkgcmVtb3ZlZCB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcFxuJiM0MztcdFx0XHQgKiBjYWNoZS4gUmVmcmVzaCB0aGUgc2F2ZWQgbWFwcGluZyBiZWZvcmUgbWlncmF0aW9uLlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0bWFwcGluZyA9IGZvbGlvX21hcHBpbmcoZm9saW8pO1xuJiM0MztcbiBcdFx0XHRyID0gZm9saW9fbWlncmF0ZV9tYXBwaW5nKG1hcHBpbmcsIG5ld2ZvbGlvLCBmb2xpbywgZXh0cmFfY250KTtcbiBcdFx0XHRpZiAocilcbiBcdFx0XHRcdHNyY19wZm5zW2kmIzQzO2pdIFx1MDAyNj0gfk1JR1JBVEVfUEZOX01JR1JBVEU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RFU1RfSE1NJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1pPTkVfREVWSUNFJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RSRU1PVkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttaWdyYXRlX2RldmljZV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX3ZtYV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgIHRvIGZpeCBmb2xpbyBzcGxpdHRpbmcgYW5kIHN3YXAgY2FjaGUgbWFwcGluZyBkdXJpbmcgZGV2aWNlIG1lbW9yeSBtaWdyYXRpb24uIFRoaXMgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB1c2VkIGJ5IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudCkgYW5kIGRldmljZSBkcml2ZXJzLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8tZGV2aWNlIGRyaXZlciBhbmQgc3RhbmRhcmQgR1VQIChnZXRfdXNlcl9wYWdlcykgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3N2ExZGY2MTdlYmUyNjMyYzZiZGIxZjI1YjI5ODQ1YTI2YmU0N2U4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjkgMDM6NTk6MTMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9taWdyYXRlX2RldmljZS5jIGIvbW0vbWlncmF0ZV9kZXZpY2UuYwppbmRleCA1NTQ3NTRlYjI2ZmYyLi4wZTZmMDAxOTBmZDgzIDEwMDY0NAotLS0gYS9tbS9taWdyYXRlX2RldmljZS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL21pZ3JhdGVfZGV2aWNlLmMKQEAgLTExODIsNiAmIzQzOzExODIsMTMgQEAgc3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywKIAkJCQkJCQkgTUlHUkFURV9QRk5fQ09NUE9VTkQpOwogCQkJCQlnb3RvIG5leHQ7CiAJCQkJfQomIzQzOwomIzQzOwkJCQkvKgomIzQzOwkJCQkgKiByZXNldCBuciBzbyB0aGF0IG9ubHkgZmlyc3QgYWZ0ZXItc3BsaXQgZm9saW8KJiM0MzsJCQkJICogaXMgcHJvY2Vzc2VkIGJlbG93CiYjNDM7CQkJCSAqLwomIzQzOwkJCQlWTV9XQVJOX09OX09OQ0UoZm9saW9fdGVzdF9sYXJnZShmb2xpbykpOwomIzQzOwkJCQluciA9IDE7CiAJCQl9IGVsc2UgaWYgKChzcmNfcGZuc1tpXSAmYW1wOyBNSUdSQVRFX1BGTl9NSUdSQVRFKSAmYW1wOyZhbXA7CiAJCQkJKGRzdF9wZm5zW2ldICZhbXA7IE1JR1JBVEVfUEZOX0NPTVBPVU5EKSAmYW1wOyZhbXA7CiAJCQkJIShzcmNfcGZuc1tpXSAmYW1wOyBNSUdSQVRFX1BGTl9DT01QT1VORCkpIHsKQEAgLTEyMjEsNiAmIzQzOzEyMjgsMTIgQEAgc3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywKIAkJCWZvbGlvID0gcGFnZV9mb2xpbyhtaWdyYXRlX3Bmbl90b19wYWdlKHNyY19wZm5zW2kmIzQzO2pdKSk7CiAJCQluZXdmb2xpbyA9IHBhZ2VfZm9saW8obWlncmF0ZV9wZm5fdG9fcGFnZShkc3RfcGZuc1tpJiM0MztqXSkpOwogCiYjNDM7CQkJLyoKJiM0MzsJCQkgKiBmb2xpb19mcmVlX3N3YXAoKSByZW1vdmVkIHRoZSBmb2xpbyBmcm9tIHRoZSBzd2FwCiYjNDM7CQkJICogY2FjaGUuIFJlZnJlc2ggdGhlIHNhdmVkIG1hcHBpbmcgYmVmb3JlIG1pZ3JhdGlvbi4KJiM0MzsJCQkgKi8KJiM0MzsJCQltYXBwaW5nID0gZm9saW9fbWFwcGluZyhmb2xpbyk7CiYjNDM7CiAJCQlyID0gZm9saW9fbWlncmF0ZV9tYXBwaW5nKG1hcHBpbmcsIG5ld2ZvbGlvLCBmb2xpbywgZXh0cmFfY250KTsKIAkJCWlmIChyKQogCQkJCXNyY19wZm5zW2kmIzQzO2pdICZhbXA7PSB+TUlHUkFURV9QRk5fTUlHUkFURTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMwMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1pZ3JhdGUgRGV2aWNlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbW0vbWlncmF0ZV9kZXZpY2UuY2AsIHNwZWNpZmljYWxseSB0aGUgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZXMgYXJlIGludGVyZXN0aW5nIGFuZCB3b3J0aCBhIGNsb3NlciBsb29rLgoKRmlyc3QsIHRoZXkmIzM5O3ZlIGluc2VydGVkIGEgYFZNX1dBUk5fT05fT05DRShmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSk7IG5yID0gMTtgIHN0YXRlbWVudCB3aXRoaW4gYSBibG9jayB3aGVyZSBgZm9saW9fc3BsaXRgIG9yIHNvbWV0aGluZyBzaW1pbGFyIGlzIGhhcHBlbmluZy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2h5IHRoZSB3YXJuaW5nPyBXaGF0JiMzOTtzIHRoZSBwb3RlbnRpYWwgaXNzdWUgd2l0aCBtaWdyYXRpbmcgYSBsYXJnZSBmb2xpbyBoZXJlPyYjMzQ7IEl0IHN1Z2dlc3RzIHRoZXkmIzM5O3JlIGVuY291bnRlcmluZyB1bmV4cGVjdGVkIGxhcmdlIGZvbGlvcyBhbmQgd2FudCB0byBmbGFnIHRoYXQuIFRoZSBgbnIgPSAxO2AgaW5kaWNhdGVzIHRoZXkmIzM5O3JlIGZvcmNpbmcgdGhlIG1pZ3JhdGlvbiB0byB0cmVhdCBpdCBhcyBhIHNpbmdsZSBwYWdlLCB3aGljaCBpcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgKndoeSogdGhleSYjMzk7cmUgZG9pbmcgdGhpcy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY29uZGl0aW9uLiBXaGF0IGlzIHNwZWNpYWwgYWJvdXQgdGhlIG1pZ3JhdGlvbiBvZiBsYXJnZSBmb2xpb3MgZnJvbSBvciB0byBkZXZpY2UgbWVtb3J5PyBJcyB0aGVyZSBhIHN1YnRsZSBpbnRlcmFjdGlvbiB3aXRoIGhvdyBkZXZpY2UgbWVtb3J5IGlzIG1hbmFnZWQgaW4gdGhpcyBwYXJ0IG9mIHRoZSBrZXJuZWw/CgpTZWNvbmRseSwgdGhleSYjMzk7dmUgYWRkZWQgYG1hcHBpbmcgPSBmb2xpb19tYXBwaW5nKGZvbGlvKTtgIGJlZm9yZSB0aGUgY2FsbCB0byBgZm9saW9fbWlncmF0ZV9tYXBwaW5nYC4gQWgsIHRoaXMgaXMgbW9yZSBzdHJhaWdodGZvcndhcmQ7IHRoZSBjb21tZW50IGFib3V0IGBmb2xpb19mcmVlX3N3YXAoKWAgcG90ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGZvbGlvIGZyb20gdGhlIHN3YXAgY2FjaGUgbWFrZXMgdGhpcyBwZXJmZWN0bHkgY2xlYXIuIFdlJiMzOTtyZSBnZXR0aW5nIHRoZSBtYXBwaW5nICpiZWZvcmUqIHRoZSBzd2FwLXJlbGF0ZWQgb3BlcmF0aW9ucyB0aGF0IG1pZ2h0IGZyZWUgdGhlIGZvbGlvIGFuZCBpbnZhbGlkYXRlIGBmb2xpby0mZ3Q7bWFwcGluZ2AuIEEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBwcmV2ZW50aW9uLiBUaGlzIGluZGljYXRlcyBhIHBvdGVudGlhbCBpc3N1ZSB3aGVyZSB0aGUgZm9saW8gY291bGQgYmUgdW5tYXBwZWQgZnJvbSBpdHMgb3JpZ2luYWwgbG9jYXRpb24gKGxpa2VseSB0aGUgc3dhcCBjYWNoZSkgZHVyaW5nIHRoZSBtaWdyYXRpb24gcHJvY2VzcywgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbiBpZiB3ZSBkaWRuJiMzOTt0IGNhcHR1cmUgdGhlIG1hcHBpbmcgZmlyc3QuIFRoZSBnb2FsIGhlcmUgaXMgdG8gZW5zdXJlIHRoYXQgYGZvbGlvX21pZ3JhdGVfbWFwcGluZ2AgaGFzIHRoZSBjb3JyZWN0IGBtYXBwaW5nYCBldmVuIGlmIHRoZSBmb2xpbyYjMzk7cyBzd2FwIGNhY2hlIGVudHJ5IGJlY29tZXMgaW52YWxpZC4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIHZlcmlmeSBleGFjdGx5ICpob3cqIGBmb2xpb19mcmVlX3N3YXAoKWAgaXMgY2FsbGVkIGFuZCBjb25maXJtIHRoYXQgdGhpcyBpcyBhIHZhbGlkIGFuZCBuZWNlc3NhcnkgcHJlY2F1dGlvbi4gTm93LCBsZXQmIzM5O3MgcHVsbCB1cCB0aGUgY29udGV4dCBvZiBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbi4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fbWlncmF0ZV9kZXZpY2VfcGFnZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9taWdyYXRlX2RldmljZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21pZ3JhdGVfZGV2aWNlLmM9OTY1PXN0YXRpYyB2b2lkIG1pZ3JhdGVfdm1hX2luc2VydF9wYWdlKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSxcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEwOTctXG5tbS9taWdyYXRlX2RldmljZS5jOjEwOTg6c3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTA5OS1cdFx0XHRcdHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLCB1bnNpZ25lZCBsb25nIG5wYWdlcyxcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNjA9dm9pZCBtaWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjYyLXtcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI2MzpcdF9fbWlncmF0ZV9kZXZpY2VfcGFnZXMoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMsIE5VTEwpO1xubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjY0LX1cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNzU9dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzYte1xubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjc3Olx0X19taWdyYXRlX2RldmljZV9wYWdlcyhtaWdyYXRlLVx1MDAzZXNyYywgbWlncmF0ZS1cdTAwM2Vkc3QsIG1pZ3JhdGUtXHUwMDNlbnBhZ2VzLCBtaWdyYXRlKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3OC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI3OAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEaXZpbmcgaW50byB0aGUgUGFnZSBNaWdyYXRpb24gTGFuZHNjYXBlKioKClJpZ2h0LCBzbyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaXMgdGhlIGNvcmUgZnVuY3Rpb24gaGVyZSwgYW5kIGl0JiMzOTtzIGJlaW5nIGNhbGxlZCBieSBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLiBJbW1lZGlhdGVseSBJJiMzOTttIHRoaW5raW5nLCB0aGVzZSBhcmUgbGlrZWx5IGV4cG9zZWQgdG8gZGV2aWNlIGRyaXZlcnMsIG1heWJlIHRocm91Z2ggZXhwb3J0cyBvciBzb21lIHNpbWlsYXIgbWVjaGFuaXNtLiBUaGUgbmFtaW5nIGNvbnZlbnRpb24gc3Ryb25nbHkgc3VnZ2VzdHMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBwYWdlIG1pZ3JhdGlvbiwgcHJvYmFibHkgcmVsYXRlZCB0byBtZW1vcnkgbWFuYWdlbWVudCBhbmQgdGhlIG1vdmUgb2YgZGF0YSB3aXRoaW4gdGhlIHN5c3RlbS4gV2UmIzM5O3JlIHRhbGtpbmcgbG93LWxldmVsIHN0dWZmIGhlcmUsIGZ1bmRhbWVudGFsIHRvIGhvdyB3ZSBoYW5kbGUgZGV2aWNlIG1lbW9yeS4KClRoZSBzaWduaWZpY2FudCB0aGluZyBpcyB0aGF0IGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYW5kIGBtaWdyYXRlX3ZtYV9wYWdlc2AgKm11c3QqIGJlIGltcG9ydGFudCwgc2luY2UgdGhleSBhcmUgY2FsbGluZyB0aGlzIG90aGVyIGZ1bmN0aW9uLiBJIHN1c3BlY3QgdGhleSBjb3VsZCBiZSBob3cgZHJpdmVycyBsaWtlIE5vdXZlYXUsIEFNREdQVSwgb3IgdGhlIEhvc3QgTWVtb3J5IE1hbmFnZXIgYXJlIGFjdHVhbGx5IHRyaWdnZXJpbmcgcGFnZSBtaWdyYXRpb25zLiBUaGVyZWZvcmUsIG15IG5leHQgbW92ZSBpcyBjbGVhcjogSSBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIHVzYWdlIG9mIGJvdGggYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYC4gVW5kZXJzdGFuZGluZyAqd2hlcmUqIGFuZCAqaG93KiB0aGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCB3aWxsIHJldmVhbCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEFyZSB0aGV5IHNwZWNpZmljIHRvIGNlcnRhaW4gaGFyZHdhcmU/IEFyZSB0aGV5IHBhcnQgb2YgYSBsYXJnZXIgbWlncmF0aW9uIGZyYW1ld29yaz8gVGhlIGFuc3dlcnMgYXJlIGNydWNpYWwgdG8gYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWlncmF0ZV9kZXZpY2VfcGFnZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9MTExND1pbnQgZHJtX3BhZ2VtYXBfZXZpY3RfdG9fcmFtKHN0cnVjdCBkcm1fcGFnZW1hcF9kZXZtZW0gKmRldm1lbV9hbGxvY2F0aW9uKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTExNzktXHRcdGRybV9wYWdlbWFwX21pZ3JhdGlvbl91bmxvY2tfcHV0X3BhZ2VzKG5wYWdlcywgZHN0KTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jOjExODA6XHRtaWdyYXRlX2RldmljZV9wYWdlcyhzcmMsIGRzdCwgbnBhZ2VzKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTExODEtXHRtaWdyYXRlX2RldmljZV9maW5hbGl6ZShzcmMsIGRzdCwgbnBhZ2VzKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYz00NzU9bm91dmVhdV9kbWVtX2V2aWN0X2NodW5rKHN0cnVjdCBub3V2ZWF1X2RtZW1fY2h1bmsgKmNodW5rKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTUxNy1cdG5vdXZlYXVfZmVuY2VfbmV3KFx1MDAyNmZlbmNlLCBjaHVuay1cdTAwM2Vkcm0tXHUwMDNlZG1lbS1cdTAwM2VtaWdyYXRlLmNoYW4pO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM6NTE4Olx0bWlncmF0ZV9kZXZpY2VfcGFnZXMoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMpO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtNTE5LVx0bm91dmVhdV9kbWVtX2ZlbmNlX2RvbmUoXHUwMDI2ZmVuY2UpO1xuLS1cbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oPTE5OD1pbnQgbWlncmF0ZV9kZXZpY2VfcGZucyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMpO1xuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6MTk5OnZvaWQgbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsIHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtMjAwLVx0XHRcdHVuc2lnbmVkIGxvbmcgbnBhZ2VzKTtcbi0tXG5saWIvdGVzdF9obW0uYz0xODg9c3RhdGljIHZvaWQgZG1pcnJvcl9kZXZpY2VfZXZpY3RfY2h1bmsoc3RydWN0IGRtaXJyb3JfY2h1bmsgKmNodW5rKVxuLS1cbmxpYi90ZXN0X2htbS5jLTIzMS1cdH1cbmxpYi90ZXN0X2htbS5jOjIzMjpcdG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzKTtcbmxpYi90ZXN0X2htbS5jLTIzMy1cdG1pZ3JhdGVfZGV2aWNlX2ZpbmFsaXplKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzKTtcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTk2NT1zdGF0aWMgdm9pZCBtaWdyYXRlX3ZtYV9pbnNlcnRfcGFnZShzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk3LVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMDk4OnN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXG5tbS9taWdyYXRlX2RldmljZS5jLTEwOTktXHRcdFx0XHR1bnNpZ25lZCBsb25nICpkc3RfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjUxLS8qKlxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjUyOiAqIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKCkgLSBtaWdyYXRlIG1ldGEtZGF0YSBmcm9tIHNyYyBwYWdlIHRvIGRzdCBwYWdlXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTMtICogQHNyY19wZm5zOiBzcmNfcGZucyByZXR1cm5lZCBmcm9tIG1pZ3JhdGVfZGV2aWNlX3JhbmdlKClcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTktICovXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNjA6dm9pZCBtaWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjEtXHRcdFx0dW5zaWduZWQgbG9uZyBucGFnZXMpXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjIte1xubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjYzOlx0X19taWdyYXRlX2RldmljZV9wYWdlcyhzcmNfcGZucywgZHN0X3BmbnMsIG5wYWdlcywgTlVMTCk7XG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjQtfVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjY1OkVYUE9SVF9TWU1CT0wobWlncmF0ZV9kZXZpY2VfcGFnZXMpO1xubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjY2LVxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI3NT12b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3Ni17XG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzc6XHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKG1pZ3JhdGUtXHUwMDNlc3JjLCBtaWdyYXRlLVx1MDAzZWRzdCwgbWlncmF0ZS1cdTAwM2VucGFnZXMsIG1pZ3JhdGUpO1xubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjc4LX1cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEzNjg9c3RhdGljIHVuc2lnbmVkIGxvbmcgbWlncmF0ZV9kZXZpY2VfcGZuX2xvY2sodW5zaWduZWQgbG9uZyBwZm4pXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xNDAwLSAqIGFsbG9jYXRlIGRlc3RpbmF0aW9uIHBhZ2VzIGFuZCBzdGFydCBjb3B5aW5nIGRhdGEgZnJvbSB0aGUgZGV2aWNlIHRvIENQVVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxNDAxOiAqIG1lbW9yeSBiZWZvcmUgY2FsbGluZyBtaWdyYXRlX2RldmljZV9wYWdlcygpLlxubW0vbWlncmF0ZV9kZXZpY2UuYy0xNDAyLSAqL1xuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTQ2OD1pbnQgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTE0OTItXG5tbS9taWdyYXRlX2RldmljZS5jOjE0OTM6XHRtaWdyYXRlX2RldmljZV9wYWdlcyhcdTAwMjZzcmNfcGZuLCBcdTAwMjZkc3RfcGZuLCAxKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTQ5NC1cdGlmIChzcmNfcGZuIFx1MDAyNiBNSUdSQVRFX1BGTl9NSUdSQVRFKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21pZ3JhdGVfdm1hX3BhZ2VzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0yNjQ9dXNlIGhhcmR3YXJlIERNQSBvciBkZXZpY2Ugc3BlY2lmaWMgbG9hZC9zdG9yZSBpbnN0cnVjdGlvbnMgdG8gbWlncmF0ZSBkYXRhLlxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0OjI2NTpUaGUgbWlncmF0ZV92bWFfc2V0dXAoKSwgbWlncmF0ZV92bWFfcGFnZXMoKSwgYW5kIG1pZ3JhdGVfdm1hX2ZpbmFsaXplKClcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdC0yNjYtZnVuY3Rpb25zIGFyZSBkZXNpZ25lZCB0byBtYWtlIGRyaXZlcnMgZWFzaWVyIHRvIHdyaXRlIGFuZCB0byBjZW50cmFsaXplIGNvbW1vblxuLS1cbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0yOTc9YmV0d2VlbiBkZXZpY2UgZHJpdmVyIHNwZWNpZmljIGNvZGUgYW5kIHNoYXJlZCBjb21tb24gY29kZTpcbi0tXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMzY0LVxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0OjM2NTo0LiBgYG1pZ3JhdGVfdm1hX3BhZ2VzKClgYFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTM2Ni1cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0PTIxMj1ITU0g5YiH5o2i5Yiw55u05o6l5L2/55SoIHN0cnVjdCBwYWdlIOeUqOS6juiuvuWkh+WGheWtmO+8jOi/meS9v+W+l+Wkp+WkmuaVsOWGheaguOS7o+eggei3r+W+hOS4jeefpemBk+W3ruW8guOAglxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3QtMjE4LeeUseS6jiBDUFUg5peg5rOV55u05o6l6K6/6Zeu6K6+5aSH5YaF5a2Y77yM5Zug5q2k6K6+5aSH6amx5Yqo56iL5bqP5b+F6aG75L2/55So56Gs5Lu2IERNQSDmiJborr7lpIfnibnlrprnmoTliqDovb0v5a2YXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0OjIxOTrlgqjmjIfku6TmnaXov4Hnp7vmlbDmja7jgIJtaWdyYXRlX3ZtYV9zZXR1cCgp44CBbWlncmF0ZV92bWFfcGFnZXMoKSDlkoxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3QtMjIwLW1pZ3JhdGVfdm1hX2ZpbmFsaXplKCkg5Ye95pWw5peo5Zyo5L2/6amx5Yqo56iL5bqP5pu05piT5LqO57yW5YaZ5bm26ZuG5Lit6Leo6amx5Yqo56iL5bqP55qE6YCa55So5Luj56CB44CCXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdD0yNDM9ZGV2bV9tZW11bm1hcF9wYWdlcygpIOWSjCBkZXZtX3JlbGVhc2VfbWVtX3JlZ2lvbigpIOW9k+i1hOa6kOWPr+S7pee7keWumuWIsCBgYHN0cnVjdCBkZXZpY2VgYC5cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0LTI5Ny1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3Q6Mjk4OjQuIGBgbWlncmF0ZV92bWFfcGFnZXMoKWBgXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0LTI5OS1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTQ5LSAqIDEuIGt2bS1cdTAwM2VzcmN1IC0gUHJvdGVjdHMgS1ZNIG1lbXNsb3RzXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jOjUwOiAqIDIuIGt2bS1cdTAwM2VtbS1cdTAwM2VtbWFwX2xvY2sgLSBmaW5kX3ZtYSwgbWlncmF0ZV92bWFfcGFnZXMgYW5kIGhlbHBlcnMsIGtzbV9tYWR2aXNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTUxLSAqIDMuIGt2bS1cdTAwM2VhcmNoLnV2bWVtX2xvY2sgLSBwcm90ZWN0cyByZWFkL3dyaXRlcyB0byB1dm1lbSBzbG90cyB0aHVzIGFjdGluZ1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmM9NTEzPXN0YXRpYyBpbnQgX19rdm1wcGNfc3ZtX3BhZ2Vfb3V0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmMtNTc4LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYzo1Nzk6XHRtaWdyYXRlX3ZtYV9wYWdlcyhcdTAwMjZtaWcpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy01ODAtXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYz03NDA9c3RhdGljIGludCBrdm1wcGNfc3ZtX3BhZ2VfaW4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy03ODctXHQqbWlnLmRzdCA9IG1pZ3JhdGVfcGZuKHBhZ2VfdG9fcGZuKGRwYWdlKSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jOjc4ODpcdG1pZ3JhdGVfdm1hX3BhZ2VzKFx1MDAyNm1pZyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTc4OS1vdXRfZmluYWxpemU6XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYz0zOTQ9c3ZtX21pZ3JhdGVfdm1hX3RvX3ZyYW0oc3RydWN0IGtmZF9ub2RlICpub2RlLCBzdHJ1Y3Qgc3ZtX3JhbmdlICpwcmFuZ2UsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYy00NTEtXHRyID0gc3ZtX21pZ3JhdGVfY29weV90b192cmFtKG5vZGUsIHByYW5nZSwgXHUwMDI2bWlncmF0ZSwgXHUwMDI2bWZlbmNlLCBzY3JhdGNoLCB0dG1fcmVzX29mZnNldCk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jOjQ1MjpcdG1pZ3JhdGVfdm1hX3BhZ2VzKFx1MDAyNm1pZ3JhdGUpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYy00NTMtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYz02OTM9c3ZtX21pZ3JhdGVfdm1hX3RvX3JhbShzdHJ1Y3Qga2ZkX25vZGUgKm5vZGUsIHN0cnVjdCBzdm1fcmFuZ2UgKnByYW5nZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTc1NS1cdFx0XHRcdCAgICBzY3JhdGNoLCBucGFnZXMpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYzo3NTY6XHRtaWdyYXRlX3ZtYV9wYWdlcyhcdTAwMjZtaWdyYXRlKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNzU3LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jPTYxNj1pbnQgZHJtX3BhZ2VtYXBfbWlncmF0ZV90b19kZXZtZW0oc3RydWN0IGRybV9wYWdlbWFwX2Rldm1lbSAqZGV2bWVtX2FsbG9jYXRpb24sXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtODE3LWVycl9hYm9ydGVkX21pZ3JhdGlvbjpcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jOjgxODpcdG1pZ3JhdGVfdm1hX3BhZ2VzKFx1MDAyNm1pZ3JhdGUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtODE5LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jPTEyMTY9c3RhdGljIGludCBfX2RybV9wYWdlbWFwX21pZ3JhdGVfdG9fcmFtKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdmFzLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTEzMDktXHRcdGRybV9wYWdlbWFwX21pZ3JhdGlvbl91bmxvY2tfcHV0X3BhZ2VzKG5wYWdlcywgbWlncmF0ZS5kc3QpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM6MTMxMDpcdG1pZ3JhdGVfdm1hX3BhZ2VzKFx1MDAyNm1pZ3JhdGUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtMTMxMS1cdG1pZ3JhdGVfdm1hX2ZpbmFsaXplKFx1MDAyNm1pZ3JhdGUpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jPTE4Mz1zdGF0aWMgdm1fZmF1bHRfdCBub3V2ZWF1X2RtZW1fbWlncmF0ZV90b19yYW0oc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtMjY3LVx0bm91dmVhdV9mZW5jZV9uZXcoXHUwMDI2ZmVuY2UsIGRtZW0tXHUwMDNlbWlncmF0ZS5jaGFuKTtcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jOjI2ODpcdG1pZ3JhdGVfdm1hX3BhZ2VzKFx1MDAyNmFyZ3MpO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtMjY5LVx0bm91dmVhdV9kbWVtX2ZlbmNlX2RvbmUoXHUwMDI2ZmVuY2UpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jPTc4Mz1zdGF0aWMgdm9pZCBub3V2ZWF1X2RtZW1fbWlncmF0ZV9jaHVuayhzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy04MDktXHRub3V2ZWF1X2ZlbmNlX25ldyhcdTAwMjZmZW5jZSwgZHJtLVx1MDAzZWRtZW0tXHUwMDNlbWlncmF0ZS5jaGFuKTtcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jOjgxMDpcdG1pZ3JhdGVfdm1hX3BhZ2VzKGFyZ3MpO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtODExLVx0bm91dmVhdV9kbWVtX2ZlbmNlX2RvbmUoXHUwMDI2ZmVuY2UpO1xuLS1cbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oPTE1OD1zdHJ1Y3QgbWlncmF0ZV92bWEge1xuLS1cbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oLTE2NS1cdCAqIG1pZ3JhdGVfdm1hX3NldHVwKCksIGFuZCBtdXN0IG5vdCBjaGFuZ2UgdGhlIGRzdCBhcnJheSBhZnRlclxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6MTY2Olx0ICogbWlncmF0ZV92bWFfcGFnZXMoKSByZXR1cm5zLlxuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtMTY3LVx0ICovXG4tLVxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg9MTkzPWludCBtaWdyYXRlX3ZtYV9zZXR1cChzdHJ1Y3QgbWlncmF0ZV92bWEgKmFyZ3MpO1xuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6MTk0OnZvaWQgbWlncmF0ZV92bWFfcGFnZXMoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKTtcbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oLTE5NS12b2lkIG1pZ3JhdGVfdm1hX2ZpbmFsaXplKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSk7XG4tLVxubGliL3Rlc3RfaG1tLmM9MTAwND1zdGF0aWMgdm1fZmF1bHRfdCBkbWlycm9yX2Rldm1lbV9mYXVsdF9hbGxvY19hbmRfY29weShzdHJ1Y3QgbWlncmF0ZV92bWEgKmFyZ3MsXG4tLVxubGliL3Rlc3RfaG1tLmMtMTA3NS1cdFx0XHRcdFx0LyogQ2xlYXIgcmVtYWluaW5nIGRzdCBlbnRyaWVzIHRvIGF2b2lkXG5saWIvdGVzdF9obW0uYzoxMDc2Olx0XHRcdFx0XHQgKiBtaWdyYXRlX3ZtYV9wYWdlcy9maW5hbGl6ZSgpIHVzaW5nXG5saWIvdGVzdF9obW0uYy0xMDc3LVx0XHRcdFx0XHQgKiB1bmluaXRpYWxpemVkIHZhbHVlcy5cbi0tXG5saWIvdGVzdF9obW0uYz0xMTIwPXN0YXRpYyBpbnQgZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcbi0tXG5saWIvdGVzdF9obW0uYy0xMTc1LVxubGliL3Rlc3RfaG1tLmM6MTE3NjpcdFx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2YXJncyk7XG5saWIvdGVzdF9obW0uYy0xMTc3LVx0XHRjbWQtXHUwMDNlY3BhZ2VzICYjNDM7PSBkbWlycm9yX3N1Y2Nlc3NmdWxfbWlncmF0ZWRfcGFnZXMoXHUwMDI2YXJncyk7XG4tLVxubGliL3Rlc3RfaG1tLmM9MTE4OT1zdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2Uoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXG4tLVxubGliL3Rlc3RfaG1tLmMtMTI0OC1cdFx0ZG1pcnJvcl9taWdyYXRlX2FsbG9jX2FuZF9jb3B5KFx1MDAyNmFyZ3MsIGRtaXJyb3IpO1xubGliL3Rlc3RfaG1tLmM6MTI0OTpcdFx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2YXJncyk7XG5saWIvdGVzdF9obW0uYy0xMjUwLVx0XHRkbWlycm9yX21pZ3JhdGVfZmluYWxpemVfYW5kX21hcChcdTAwMjZhcmdzLCBkbWlycm9yKTtcbi0tXG5saWIvdGVzdF9obW0uYz0xNjUzPXN0YXRpYyB2bV9mYXVsdF90IGRtaXJyb3JfZGV2bWVtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuLS1cbmxpYi90ZXN0X2htbS5jLTE3MTgtXHR9XG5saWIvdGVzdF9obW0uYzoxNzE5Olx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2YXJncyk7XG5saWIvdGVzdF9obW0uYy0xNzIwLVx0Lypcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTY1OT1zdGF0aWMgdm9pZCBtaWdyYXRlX3ZtYV91bm1hcChzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy02OTktICogdGhpcyBjYW4gc3RpbGwgZmFpbCwgYW5kIHRodXMgaW5zaWRlIHRoZSBkZXZpY2UgZHJpdmVyIHlvdSBtdXN0IGNoZWNrIGlmIHRoZVxubW0vbWlncmF0ZV9kZXZpY2UuYzo3MDA6ICogbWlncmF0aW9uIHdhcyBzdWNjZXNzZnVsIGZvciB0aG9zZSBlbnRyaWVzIGFmdGVyIGNhbGxpbmcgbWlncmF0ZV92bWFfcGFnZXMoKSxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzAxLSAqIGp1c3QgbGlrZSBmb3IgcmVndWxhciBtaWdyYXRpb24uXG5tbS9taWdyYXRlX2RldmljZS5jLTcwMi0gKlxubW0vbWlncmF0ZV9kZXZpY2UuYzo3MDM6ICogQWZ0ZXIgdGhhdCwgdGhlIGNhbGxlcnMgbXVzdCBjYWxsIG1pZ3JhdGVfdm1hX3BhZ2VzKCkgdG8gZ28gb3ZlciBlYWNoIGVudHJ5XG5tbS9taWdyYXRlX2RldmljZS5jLTcwNC0gKiBpbiB0aGUgc3JjIGFycmF5IHRoYXQgaGFzIHRoZSBNSUdSQVRFX1BGTl9WQUxJRCBhbmQgTUlHUkFURV9QRk5fTUlHUkFURSBmbGFnXG5tbS9taWdyYXRlX2RldmljZS5jLTcwNS0gKiBzZXQuIElmIHRoZSBjb3JyZXNwb25kaW5nIGVudHJ5IGluIGRzdCBhcnJheSBoYXMgTUlHUkFURV9QRk5fVkFMSUQgZmxhZyBzZXQsXG5tbS9taWdyYXRlX2RldmljZS5jOjcwNjogKiB0aGVuIG1pZ3JhdGVfdm1hX3BhZ2VzKCkgdG8gbWlncmF0ZSBzdHJ1Y3QgcGFnZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzb3VyY2Vcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzA3LSAqIHN0cnVjdCBwYWdlIHRvIHRoZSBkZXN0aW5hdGlvbiBzdHJ1Y3QgcGFnZS4gIElmIGl0IGZhaWxzIHRvIG1pZ3JhdGUgdGhlXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy03MTQtICpcbm1tL21pZ3JhdGVfZGV2aWNlLmM6NzE1OiAqIE9uY2UgbWlncmF0ZV92bWFfcGFnZXMoKSByZXR1cm5zIHRoZSBjYWxsZXIgbWF5IGluc3BlY3Qgd2hpY2ggcGFnZXMgd2VyZVxubW0vbWlncmF0ZV9kZXZpY2UuYy03MTYtICogc3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkLCBhbmQgd2hpY2ggd2VyZSBub3QuICBTdWNjZXNzZnVsbHkgbWlncmF0ZWQgcGFnZXMgd2lsbFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzE4LSAqXG5tbS9taWdyYXRlX2RldmljZS5jOjcxOTogKiBJdCBpcyBzYWZlIHRvIHVwZGF0ZSBkZXZpY2UgcGFnZSB0YWJsZSBhZnRlciBtaWdyYXRlX3ZtYV9wYWdlcygpIGJlY2F1c2Vcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzIwLSAqIGJvdGggZGVzdGluYXRpb24gYW5kIHNvdXJjZSBwYWdlIGFyZSBzdGlsbCBsb2NrZWQsIGFuZCB0aGUgbW1hcF9sb2NrIGlzIGhlbGRcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEwOTg9c3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTYtICpcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI1NzogKiBFcXVpdmFsZW50IHRvIG1pZ3JhdGVfdm1hX3BhZ2VzKCkuIFRoaXMgaXMgY2FsbGVkIHRvIG1pZ3JhdGUgc3RydWN0IHBhZ2Vcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI1OC0gKiBtZXRhLWRhdGEgZnJvbSBzb3VyY2Ugc3RydWN0IHBhZ2UgdG8gZGVzdGluYXRpb24uXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMjY1PUVYUE9SVF9TWU1CT0wobWlncmF0ZV9kZXZpY2VfcGFnZXMpO1xuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2Ny0vKipcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI2ODogKiBtaWdyYXRlX3ZtYV9wYWdlcygpIC0gbWlncmF0ZSBtZXRhLWRhdGEgZnJvbSBzcmMgcGFnZSB0byBkc3QgcGFnZVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjY5LSAqIEBtaWdyYXRlOiBtaWdyYXRlIHN0cnVjdCBjb250YWluaW5nIGFsbCBtaWdyYXRpb24gaW5mb3JtYXRpb25cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzQtICovXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzU6dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzYte1xuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3OC19XG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzk6RVhQT1JUX1NZTUJPTChtaWdyYXRlX3ZtYV9wYWdlcyk7XG5tbS9taWdyYXRlX2RldmljZS5jLTEyODAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODA3NQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDE1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgSE1NIFBhZ2UgTWlncmF0aW9uIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZXhwb3J0ZWQgZnVuY3Rpb25zLCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhleSYjMzk7cmUgcmVsYXRlZCB0byBwYWdlIG1pZ3JhdGlvbiwgc3BlY2lmaWNhbGx5IGluIGEgaGV0ZXJvZ2VuZW91cyBtZW1vcnkgbWFuYWdlbWVudCAoSE1NKSBjb250ZXh0LiBJIHNlZSB0aGV5JiMzOTtyZSB1c2VkIGFjcm9zcyBhIGZldyBrZXkgYXJlYXMsIHdoaWNoIGlzIGludGVyZXN0aW5nOiBgbGliL3Rlc3RfaG1tLmNgLCBgZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmNgLCBgZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmNgLCBgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuY2AsIGFuZCBldmVuIGluIHRoZSBQb3dlclBDIEtWTSBjb2RlIChgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uY2ApLiBUaGlzIHNwYW5zIGEgZGVjZW50IHJhbmdlIG9mIHN1YnN5c3RlbXMuCgpgbGliL3Rlc3RfaG1tLmNgIGltbWVkaWF0ZWx5IGNhdGNoZXMgbXkgZXllIGFzIGEgdGVzdGluZyBncm91bmQgZm9yIEhNTS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSYjMzk7bSB0aGlua2luZyB0aGlzIGlzIGxpa2VseSB3aGVyZSB0aGV5JiMzOTtyZSB2ZXJpZnlpbmcgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvZiB0aG9zZSBtaWdyYXRpb24gcm91dGluZXMuIEFuZCB0aGUgZmFjdCB0aGF0IGl0JiMzOTtzIGRlc2lnbmVkIGZvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbWFrZXMgcGVyZmVjdCBzZW5zZSDigJMgYSBjb250cm9sbGVkIGVudmlyb25tZW50IGlzIGlkZWFsIGZvciB0ZXN0aW5nIG1lbW9yeSBtaWdyYXRpb24gYWNyb3NzIGRpZmZlcmVudCBkZXZpY2VzLgoKU28sIGxldCYjMzk7cyBkaXZlIGludG8gYGxpYi90ZXN0X2htbS5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgdGVzdCBpcyBlbmFibGVkLiBJJiMzOTtsbCBjaGVjayBpdHMgYnVpbGQgY29uZmlndXJhdGlvbiBhbmQgdGhlIHNwZWNpZmljIHRlc3QgY2FzZXMgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3Qgc2NlbmFyaW9zIHRoYXQgYXJlIGJlaW5nIHZhbGlkYXRlZCBmb3IgcGFnZSBtaWdyYXRpb24gd2l0aGluIHRoZSBITU0gZnJhbWV3b3JrLiBHZXR0aW5nIGEgaGFuZGxlIG9uIHRoYXQgd2lsbCBvZmZlciB2YWx1YWJsZSBpbnNpZ2h0IGludG8gaG93IHRoZSBjb2RlIGlzIHN0cnVjdHVyZWQsIHRoZSBraW5kcyBvZiBtaWdyYXRpb25zIGl0IHN1cHBvcnRzLCBhbmQgd2hhdCBmZWF0dXJlcyBhcmUgdGVzdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGVzdF9obW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MTUKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGVidWdnaW5nIHRoZSBLY29uZmlnIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2sgZG93biB3aGVyZSB0aGlzIHBhcnRpY3VsYXIgb3B0aW9uIGlzIGRlZmluZWQgb3IgY29udHJvbGxlZCB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBLY29uZmlnIHN5c3RlbS4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoZSBjb250ZXh0LCBpcyB0byBqdW1wIGludG8gdGhlIG1vc3QgbGlrZWx5IHBsYWNlcy4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYGxpYi9LY29uZmlnLmRlYnVnYC4gSXQmIzM5O3MgYSBwcmltZSBzdXNwZWN0IGZvciBkZWJ1Zy1yZWxhdGVkIG9wdGlvbnMsIHNvIGl0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSWYgSSBkb24mIzM5O3QgZmluZCB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IgdGhlcmUsIEkmIzM5O2xsIG1vdmUgb24gdG8gYG1tL0tjb25maWdgLiBNZW1vcnkgbWFuYWdlbWVudCBvcHRpb25zIG9mdGVuIGhhdmUgaW50ZXJkZXBlbmRlbmNpZXMgd2l0aCBkZWJ1Z2dpbmcgZmxhZ3MsIHNvIEkgY2FuJiMzOTt0IHJ1bGUgdGhhdCBvdXQuIFRoZW4sIGFzIGEgZmluYWwgcmVzb3J0IGJlZm9yZSBhIHdpZGVyIHNlYXJjaCwgSSYjMzk7bGwgbmVlZCB0byBwZWVrIGF0IGBsaWIvTWFrZWZpbGVgLiBLY29uZmlnIG9wdGlvbnMgY2FuIHNvbWV0aW1lcyBiZSBpbmRpcmVjdGx5IGNvbnRyb2xsZWQgdGhyb3VnaCBNYWtlZmlsZSBsb2dpYywgc28gdGhhdCYjMzk7cyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuIFRoZSBnb2FsIGlzIHRvIHF1aWNrbHkgcGlucG9pbnQgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSBvciBNYWtlZmlsZSBydWxlIHRoYXQgZ292ZXJucyB0aGlzIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiwgc28gSSBjYW4gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzLCBkZWZhdWx0cywgYW5kIHBvdGVudGlhbCBpbXBhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Rlc3RfaG1tJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvTWFrZWZpbGU9MTAyPW9iai0kKENPTkZJR19URVNUX0xPQ0tVUCkgJiM0Mzs9IHRlc3RfbG9ja3VwLm9cbmxpYi9NYWtlZmlsZToxMDM6b2JqLSQoQ09ORklHX1RFU1RfSE1NKSAmIzQzOz0gdGVzdF9obW0ub1xubGliL01ha2VmaWxlLTEwNC1vYmotJChDT05GSUdfVEVTVF9GUkVFX1BBR0VTKSAmIzQzOz0gdGVzdF9mcmVlX3BhZ2VzLm9cbi0tXG5saWIvdGVzdF9obW0uYy0zMi1cbmxpYi90ZXN0X2htbS5jOjMzOiNpbmNsdWRlIFwmIzM0O3Rlc3RfaG1tX3VhcGkuaFwmIzM0O1xubGliL3Rlc3RfaG1tLmMtMzQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwMzYKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqVHJhY2luZyBEb3duIGBDT05GSUdfVEVTVF9ITU1gKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGBDT05GSUdfVEVTVF9ITU1gIGlzIGRlZmluZWQuIFRoaXMgaXMgYSBjb21tb24gc3RhcnRpbmcgcG9pbnQgZm9yIGRlYnVnZ2luZyBvciB1bmRlcnN0YW5kaW5nIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGluIGtlcm5lbCBvciBlbWJlZGRlZCBzeXN0ZW1zIGNvZGUuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIG15IHVzdWFsIHRvb2xzIGFuZCB0ZWNobmlxdWVzLiBGaXJzdCwgSSBuZWVkIHRvIGRldGVybWluZSB0aGUgc2NvcGUg4oCTIGlzIHRoaXMgYSBrZXJuZWwgY29uZmlndXJhdGlvbiBzeW1ib2wsIGEgdXNlci1zcGFjZSBkZWZpbmUsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGVuLCBJIHdpbGwgZW1wbG95IHRvb2xzIGxpa2UgYGdyZXBgLCBgZmluZGAsIG9yIGV2ZW4gYGN0YWdzL2NzY29wZWAgKGlmIEkgaGF2ZSB0aGVtIHNldCB1cCkgdG8gZG8gYSByZWN1cnNpdmUgc2VhcmNoIGFjcm9zcyB0aGUgcHJvamVjdCYjMzk7cyBzb3VyY2UgdHJlZSBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBiZSBhIHN0cmFpZ2h0Zm9yd2FyZCBmaW5kLCBnaXZlbiBpdHMgbmFtaW5nIGNvbnZlbnRpb24uIFBlcmhhcHMgaXQmIzM5O3MgaW4gYSBgLmNvbmZpZ2AgZmlsZSwgb3IgbWF5YmUgaXQmIzM5O3MgZGVmaW5lZCB3aXRoaW4gYSBLY29uZmlnIGZpbGUuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgaGllcmFyY2h5IGlmIGl04oCZcyBhIGNvbmZpZ3VyYXRpb24gc3ltYm9sLiBJZiBpdCYjMzk7cyBhIHJlZ3VsYXIgYCNkZWZpbmVgLCBpdCBjb3VsZCByZXNpZGUgaW4gYSBoZWFkZXIgZmlsZSBhbnl3aGVyZSBpbiB0aGUgY29kZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBkaWcgdXAuIEZyb20gdGhlcmUsIEkmIzM5O2xsIHRoZW4gbW92ZSBvbiB0byB0cmFjaW5nIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGhvdyBpdCYjMzk7cyB1c2VkIHdpdGhpbiB0aGUgc3lzdGVtLiBUaGlzIHdpbGwgcHJvYmFibHkgaW52b2x2ZSBmdXJ0aGVyIHNlYXJjaGluZyB3aXRoIHNpbWlsYXIgdG9vbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBURVNUX0hNTSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvS2NvbmZpZy5kZWJ1Zz0zMzQ2PWNvbmZpZyBURVNUX01FTUlOSVRcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzUzLVxubGliL0tjb25maWcuZGVidWc6MzM1NDpjb25maWcgVEVTVF9ITU1cbmxpYi9LY29uZmlnLmRlYnVnLTMzNTUtXHR0cmlzdGF0ZSBcJiMzNDtUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQzMwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBMYW5kc2NhcGUgb2YgVEVTVF9ITU0qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkZXBlbmRlbmN5IHN0cnVjdHVyZSBmb3IgYFRFU1RfSE1NYC4gSSBrbm93IHRoaXMgaXMgYSBrZXkgY29tcG9uZW50LCBzbyB1bmRlcnN0YW5kaW5nIGl0cyByZWxpYW5jZSBvbiBvdGhlciBtb2R1bGVzIG9yIGxpYnJhcmllcyBpcyBjcnVjaWFsLiBJdCYjMzk7cyBub3QganVzdCBhYm91dCBhIHNpbXBsZSBsaXN0LCB0aG91Z2guIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlICpuYXR1cmUqIG9mIHRob3NlIGRlcGVuZGVuY2llcy4gQXJlIHRoZXkgaGFyZCByZXF1aXJlbWVudHMsIG9yIGFyZSB0aGVyZSBzb2Z0IGRlcGVuZGVuY2llcywgcG90ZW50aWFsbHkgaGFuZGxlZCB3aXRoIGdyYWNlZnVsIGRlZ3JhZGF0aW9uIG9yIGZhbGxiYWNrIG1lY2hhbmlzbXM/IFRoYXQmIzM5O3MgZ29pbmcgdG8gZGljdGF0ZSBteSBhcHByb2FjaCB0byB0ZXN0aW5nIGFuZCBhbnkgcG90ZW50aWFsIHJlZmFjdG9yaW5nLiBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiBpc29sYXRlIGBURVNUX0hNTWAgZm9yIGZvY3VzZWQgZGVidWdnaW5nIG9yIGlmIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byB3cmFuZ2xlIGEgd2hvbGUgZWNvc3lzdGVtLiBBcmUgdGhlcmUgYW55IGNpcmN1bGFyIGRlcGVuZGVuY2llcyBJIGhhdmUgdG8gd29ycnkgYWJvdXQ/IFRoYXQmIzM5O3MgYWx3YXlzIGEgZnVuIGhlYWRhY2hlLiBBbmQgb2YgY291cnNlLCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSB2ZXJzaW9ucy4gQXJlIHRoZXJlIHZlcnNpb24gY29uc3RyYWludHMgYXQgcGxheT8gQXJlIHdlIGRlYWxpbmcgd2l0aCBhbnkgZGVwcmVjYXRlZCBkZXBlbmRlbmNpZXM/IFRoZXNlIGNvbnNpZGVyYXRpb25zIHJlYWxseSBkcml2ZSBob3cgSSBhcHByb2FjaCB0aGUgZGVzaWduIGFuZCBpbXBsZW1lbnRhdGlvbi4gVGltZSB0byBjcmFjayBvcGVuIHRoZSBkZXBlbmRlbmN5IGdyYXBoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMzo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVEVTVF9ITU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvS2NvbmZpZy5kZWJ1ZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvS2NvbmZpZy5kZWJ1Zz0zMzQ2PWNvbmZpZyBURVNUX01FTUlOSVRcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzUzLVxubGliL0tjb25maWcuZGVidWc6MzM1NDpjb25maWcgVEVTVF9ITU1cbmxpYi9LY29uZmlnLmRlYnVnLTMzNTUtXHR0cmlzdGF0ZSBcJiMzNDtUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTgwNAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBEZWJ1Z2dpbmcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIHNwZWNpZmljIGFib3V0IHRoZSBkZWJ1Z2dpbmcgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBwcm9qZWN0LiBHaXZlbiBteSBmYW1pbGlhcml0eSB3aXRoIHRoZSBjb2RlYmFzZSwgbXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCBmb3IgdGhlIEtjb25maWcgZmlsZS4gSSYjMzk7bSB0aGlua2luZyB0aGUgcmVsZXZhbnQgc2VjdGlvbiBpcyBwcm9iYWJseSBsb2NhdGVkIGFyb3VuZCBsaW5lIDMzNTQgaW4gYGxpYi9LY29uZmlnLmRlYnVnYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBsb3ctbGV2ZWwgZGV0YWlscyByZWxhdGVkIHRvIGRlYnVnIGZlYXR1cmVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIHRoZXJlLiBJJiMzOTttIGFudGljaXBhdGluZyBzb21lIGdyYW51bGFyIGNvbnRyb2xzLi4uIGhvcGVmdWxseSwgaXQmIzM5O3Mgd2VsbC1kb2N1bWVudGVkISBUaW1lIHRvIGRpZyBpbiBhbmQgcGlucG9pbnQgdGhlIHNwZWNpZmljIHNldHRpbmdzIEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtsaWIvS2NvbmZpZy5kZWJ1ZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzM1MDpcdFx0ICBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gdGVzdCBpbml0X29uX2FsbG9jIGFuZCBpbml0X29uX2ZyZWUgZmVhdHVyZXMuXG4zMzUxOlx0XG4zMzUyOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4zMzUzOlx0XG4zMzU0Olx0Y29uZmlnIFRFU1RfSE1NXG4zMzU1Olx0XHR0cmlzdGF0ZSBcJiMzNDtUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcJiMzNDtcbjMzNTY6XHRcdGRlcGVuZHMgb24gVFJBTlNQQVJFTlRfSFVHRVBBR0VcbjMzNTc6XHRcdGRlcGVuZHMgb24gREVWSUNFX1BSSVZBVEVcbjMzNTg6XHRcdHNlbGVjdCBITU1fTUlSUk9SXG4zMzU5Olx0XHRzZWxlY3QgTU1VX05PVElGSUVSXG4zMzYwOlx0XHRoZWxwXG4zMzYxOlx0XHQgIFRoaXMgaXMgYSBwc2V1ZG8gZGV2aWNlIGRyaXZlciBzb2xlbHkgZm9yIHRlc3RpbmcgSE1NLlxuMzM2MjpcdFx0ICBTYXkgTSBoZXJlIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHRoZSBITU0gdGVzdCBtb2R1bGUuXG4zMzYzOlx0XHQgIERvaW5nIHNvIHdpbGwgYWxsb3cgeW91IHRvIHJ1biB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0L3ZtL2htbS10ZXN0cy5cbjMzNjQ6XHRcbjMzNjU6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbjMzNjY6XHRcbjMzNjc6XHRjb25maWcgVEVTVF9GUkVFX1BBR0VTXG4zMzY4Olx0XHR0cmlzdGF0ZSBcJiMzNDtUZXN0IGZyZWVpbmcgcGFnZXNcJiMzNDtcbjMzNjk6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzMDgKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGlubmVyIG1vbm9sb2d1ZToKCioqRGVwZW5kZW5jeSBEZWVwIERpdmU6IFRFU1RfSE1NIGFuZCBERVZJQ0VfUFJJVkFURSoqCgpBbHJpZ2h0LCBzbyBgVEVTVF9ITU1gIGhhcyBhIGNvdXBsZSBvZiBkZXBlbmRlbmNpZXMsIG5hbWVseSBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGFuZCBgREVWSUNFX1BSSVZBVEVgLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgY29ubmVjdGlvbiB3aXRoIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgbWFrZXMgc2Vuc2U7IHBlcmZvcm1hbmNlIG9mdGVuIGhpbmdlcyBvbiBtZW1vcnkgbWFuYWdlbWVudCBhbmQgdGhhdCYjMzk7cyBhIGNvbW1vbiBwYWlyaW5nLiBCdXQgYERFVklDRV9QUklWQVRFYC4uLiB0aGF0JiMzOTtzIHRoZSBtb3JlIGludHJpZ3Vpbmcgb25lIGluIHRoaXMgY2FzZS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgYml0IGZpcnN0LCBzaW5jZSBpdCYjMzk7cyBsZXNzIG9idmlvdXMgd2h5IHRoYXQgaXMgYSBkZXBlbmRlbmN5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHJvbGUgYERFVklDRV9QUklWQVRFYCBwbGF5cyBoZXJlIGFuZCB3aHkgaXRzIHByZXNlbmNlIG9yIGFic2VuY2Ugd291bGQgaGF2ZSBhIGRpcmVjdCBpbXBhY3Qgb24gdGhlIGV4ZWN1dGlvbiBvciB0ZXN0YWJpbGl0eSBvZiBgVEVTVF9ITU1gLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gb3IgdGhlIGNvZGUgZGlyZWN0bHkgdG8gY29uZmlybS4gVGhpcyYjMzk7bGwgcmVxdWlyZSBtZSB0byBpbnZlc3RpZ2F0ZSB0aGUgZGV0YWlscyBvZiBgREVWSUNFX1BSSVZBVEVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMzo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgREVWSUNFX1BSSVZBVEUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz0xMjY0PWNvbmZpZyBHRVRfRlJFRV9SRUdJT05cbi0tXG5tbS9LY29uZmlnLTEyNjYtXG5tbS9LY29uZmlnOjEyNjc6Y29uZmlnIERFVklDRV9QUklWQVRFXG5tbS9LY29uZmlnLTEyNjgtXHRib29sIFwmIzM0O1VuYWRkcmVzc2FibGUgZGV2aWNlIG1lbW9yeSAoR1BVIG1lbW9yeSwgLi4uKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMzo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDY1MwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgaGFuZGxlZC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYG1tL0tjb25maWdgLiBJdCYjMzk7cyBhIGtleSBmaWxlIGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0sIGFuZCBhcm91bmQgbGluZSAxMjY3IHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHBsYWNlIHRvIGJlZ2luLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9yIHJlbGV2YW50IGRlcGVuZGVuY2llcyBmb3Igd2hhdGV2ZXIgb3B0aW9uIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGguIEtub3dpbmcgdGhlIHNwZWNpZmljIGxpbmUgcmFuZ2UgaGVscHMgbWUgbmF2aWdhdGUgZWZmaWNpZW50bHkgYW5kIGF2b2lkIGdldHRpbmcgbG9zdCBpbiB0aGUgYnJvYWRlciBjb25maWd1cmF0aW9uIHNwYWNlLiBJJiMzOTttIGhvcGluZyBpdCYjMzk7cyBhIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIGRlZmluaXRpb24g4oCTIG1heWJlIGEgc2ltcGxlIGBjb25maWdgIGJsb2NrIHdpdGggc29tZSBkZXBlbmRlbmNpZXMgb3IgYSB0cmlzdGF0ZSBvcHRpb24uIE9yIHBlcmhhcHMgdGhpcyBhcmVhIGRlYWxzIHdpdGggaG93IHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSBzcGVjaWZpYyBvcHRpb24gaXMgY29uZmlndXJlZC4gRWl0aGVyIHdheSwgdGhpcyBzaG91bGQgYmUgdGhlIHN0YXJ0aW5nIHBvaW50IHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24mIzM5O3MgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMzo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyNjA6XHRjb25maWcgSE1NX01JUlJPUlxuMTI2MTpcdFx0Ym9vbFxuMTI2MjpcdFx0ZGVwZW5kcyBvbiBNTVVcbjEyNjM6XHRcbjEyNjQ6XHRjb25maWcgR0VUX0ZSRUVfUkVHSU9OXG4xMjY1Olx0XHRib29sXG4xMjY2Olx0XG4xMjY3Olx0Y29uZmlnIERFVklDRV9QUklWQVRFXG4xMjY4Olx0XHRib29sIFwmIzM0O1VuYWRkcmVzc2FibGUgZGV2aWNlIG1lbW9yeSAoR1BVIG1lbW9yeSwgLi4uKVwmIzM0O1xuMTI2OTpcdFx0ZGVwZW5kcyBvbiBaT05FX0RFVklDRVxuMTI3MDpcdFx0c2VsZWN0IEdFVF9GUkVFX1JFR0lPTlxuMTI3MTpcdFxuMTI3MjpcdFx0aGVscFxuMTI3MzpcdFx0ICBBbGxvd3MgY3JlYXRpb24gb2Ygc3RydWN0IHBhZ2VzIHRvIHJlcHJlc2VudCB1bmFkZHJlc3NhYmxlIGRldmljZVxuMTI3NDpcdFx0ICBtZW1vcnk7IGkuZS4sIG1lbW9yeSB0aGF0IGlzIG9ubHkgYWNjZXNzaWJsZSBmcm9tIHRoZSBkZXZpY2UgKG9yXG4xMjc1Olx0XHQgIGdyb3VwIG9mIGRldmljZXMpLiBZb3UgbGlrZWx5IGFsc28gd2FudCB0byBzZWxlY3QgSE1NX01JUlJPUi5cbjEyNzY6XHRcbjEyNzc6XHRjb25maWcgVk1BUF9QRk5cbjEyNzg6XHRcdGJvb2xcbjEyNzk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExNDgKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzczoKCioqRGVwZW5kZW5jeSBDaGVjazogRGl2aW5nIGludG8gWm9uZV9EZXZpY2UqKgoKT2theSwgc28gSSYjMzk7dmUgaGl0IGEgcG9pbnQgd2hlcmUgbXkgbWVudGFsIG1vZGVsIG9mIHRoZSBzeXN0ZW0gcmVxdWlyZXMgbWUgdG8gdW5kZXJzdGFuZCBgREVWSUNFX1BSSVZBVEVgLiBCdXQgSSBrbm93IGBERVZJQ0VfUFJJVkFURWAgcmVsaWVzIG9uIGBaT05FX0RFVklDRWAuICBUaGVyZWZvcmUsIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGBaT05FX0RFVklDRWAuICBJIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIHRoYXQgbW9kdWxlIG9yIGNvbmNlcHQgKmZpcnN0Ki4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHJldmlldyBldmVyeXRoaW5nIEkga25vdyAob3IsIG1vcmUgbGlrZWx5LCBuZWVkIHRvIHJlbGVhcm4pIGFib3V0IGBaT05FX0RFVklDRWAgYmVmb3JlIEkgY2FuIG1vdmUgZm9yd2FyZCB3aXRoIGEgdHJ1bHkgaW5mb3JtZWQgZ3Jhc3Agb2YgYERFVklDRV9QUklWQVRFYC4gTGV0JiMzOTtzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFpPTkVfREVWSUNFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9MTIzMT1jb25maWcgWk9ORV9ETUEzMlxuLS1cbm1tL0tjb25maWctMTIzNS1cbm1tL0tjb25maWc6MTIzNjpjb25maWcgWk9ORV9ERVZJQ0Vcbm1tL0tjb25maWctMTIzNy1cdGJvb2wgXCYjMzQ7RGV2aWNlIG1lbW9yeSAocG1lbSwgSE1NLCBldGMuLi4pIGhvdHBsdWcgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMzo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQyMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIE1hemUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYG1tL0tjb25maWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBhaW1pbmcgZm9yIGFyb3VuZCBsaW5lIDEyMzYuIEdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSwgSSBzdXNwZWN0IHRoYXQgc2VjdGlvbiBtaWdodCBob2xkIGNsdWVzIGFib3V0IGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24gb3IgcmVsYXRlZCBkZXBlbmRlbmNpZXMgSSYjMzk7dmUgYmVlbiBjb25zaWRlcmluZy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBpbmZvcm1hdGlvbiBwZXJ0YWluaW5nIHRvIHNvbWUgbWVtb3J5IG1hbmFnZW1lbnQgZmVhdHVyZSBvciBhIGNvbmZpZ3VyYXRpb24ga25vYiB0aGF0IG1pZ2h0IGJlIGNydWNpYWwgdG8gc29tZSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gSSYjMzk7bSB3b3JraW5nIHRocm91Z2gsIG9yIHBvc3NpYmx5IGV2ZW4gZGVidWdnaW5nLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgaGFzIHRvIHNheSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDQ6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTIzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMjMwOlx0XG4xMjMxOlx0Y29uZmlnIFpPTkVfRE1BMzJcbjEyMzI6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBETUEzMiB6b25lXCYjMzQ7IGlmIEFSQ0hfSEFTX1pPTkVfRE1BX1NFVFxuMTIzMzpcdFx0ZGVwZW5kcyBvbiAhWDg2XzMyXG4xMjM0Olx0XHRkZWZhdWx0IHkgaWYgQVJNNjRcbjEyMzU6XHRcbjEyMzY6XHRjb25maWcgWk9ORV9ERVZJQ0VcbjEyMzc6XHRcdGJvb2wgXCYjMzQ7RGV2aWNlIG1lbW9yeSAocG1lbSwgSE1NLCBldGMuLi4pIGhvdHBsdWcgc3VwcG9ydFwmIzM0O1xuMTIzODpcdFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUExVR1xuMTIzOTpcdFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUkVNT1ZFXG4xMjQwOlx0XHRkZXBlbmRzIG9uIFNQQVJTRU1FTV9WTUVNTUFQXG4xMjQxOlx0XHRzZWxlY3QgWEFSUkFZX01VTFRJXG4xMjQyOlx0XG4xMjQzOlx0XHRoZWxwXG4xMjQ0Olx0XHQgIERldmljZSBtZW1vcnkgaG90cGx1ZyBzdXBwb3J0IGFsbG93cyBmb3IgZXN0YWJsaXNoaW5nIHBtZW0sXG4xMjQ1Olx0XHQgIG9yIG90aGVyIGRldmljZSBkcml2ZXIgZGlzY292ZXJlZCBtZW1vcnkgcmVnaW9ucywgaW4gdGhlXG4xMjQ2Olx0XHQgIG1lbW1hcC4gVGhpcyBhbGxvd3MgcGZuX3RvX3BhZ2UoKSBsb29rdXBzIG9mIG90aGVyd2lzZVxuMTI0NzpcdFx0ICBcJiMzNDtkZXZpY2UtcGh5c2ljYWxcJiMzNDsgYWRkcmVzc2VzIHdoaWNoIGlzIG5lZWRlZCBmb3IgREFYLCBQQ0lfUDJQRE1BLCBhbmRcbjEyNDg6XHRcdCAgREVWSUNFX1BSSVZBVEUgZmVhdHVyZXMgYW1vbmcgb3RoZXJzLlxuMTI0OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTkzNwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDUyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBEZXZpY2UgUGFnZSBNaWdyYXRpb24gQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGluIGBtbS9taWdyYXRlX2RldmljZS5jYC4gVGhpcyBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIHRoYXQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLCBhbmQgdGhlIHBhdGNoIGl0c2VsZiBhZGRzIHNvbWUgYFZNX1dBUk5fT05fT05DRWAgYW5kIG1hcHBpbmcgY29kZS4gTG9va3MgbGlrZSB0aGlzIGlzIGFsbCBhYm91dCBkZXZpY2UgcGFnZSBtaWdyYXRpb24uIEkgY2FuIHNlZSB0aGF0IHRoaXMgaXMgcmVsYXRlZCB0byB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8gZGV2aWNlIGRyaXZlciwgd2hpY2ggaXMgZ3JlYXQgYmVjYXVzZSB0aGF0IGFsbG93cyB1cyB0byB0ZXN0IEhNTSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMg4oCTIGlkZWFsIGZvciBmdXp6aW5nLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvZGUgZmxvdy4gU2luY2UgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGlzIHN0YXRpYywgSSYjMzk7bSBnb2luZyB0byBmb2N1cyBvbiBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLCB3aGljaCBhcmUgdGhlIGVudHJ5IHBvaW50cy4gSSYjMzk7dmUgY29uZmlybWVkIHRoZXkgYXJlICpleHBvcnRlZCogdmlhIGBFWFBPUlRfU1lNQk9MYCwgc28gSSBzaG91bGQgYmUgYWJsZSB0byBnZXQgYXQgdGhlbS4KCkxldCBtZSBjaGVjayB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY2FsbCBzaXRlcyBpbiBgbW0vbWlncmF0ZV9kZXZpY2UuY2AgdGhhdCBjYWxsIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYnV0IHNvIGZhciBpdCBsb29rcyBsaWtlIGp1c3QgdGhvc2UgdHdvLgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3MuIEkmIzM5O3ZlIGdvdDogYFRFU1RfSE1NYCwgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCwgYERFVklDRV9QUklWQVRFYCwgYFpPTkVfREVWSUNFYCwgYE1FTU9SWV9IT1RQTFVHYCwgYE1FTU9SWV9IT1RSRU1PVkVgLCBhbmQgYFNQQVJTRU1FTV9WTUVNTUFQYC4gSXQgbG9va3MgbGlrZSBgVEVTVF9ITU1gIGlzIHRoZSBjb3JlIGRyaXZlciBmb3IgdGhlIGNvZGUsIGl0IGRlcGVuZHMgb24gYEhNTV9NSVJST1JgIGFuZCBgTU1VX05PVElGSUVSYCwgYW5kIGZ1cnRoZXIgZGVwZW5kcyBvbiBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGFuZCBgREVWSUNFX1BSSVZBVEVgLiBgREVWSUNFX1BSSVZBVEVgIGRlcGVuZHMgb24gYFpPTkVfREVWSUNFYCwgd2hpY2ggaXRzZWxmIGRlcGVuZHMgb24gdGhlIHN0YW5kYXJkIGNvbmZpZ3M6IGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYW5kIGBTUEFSU0VNRU1fVk1FTU1BUGAuIEV4Y2VsbGVudCwgdGhlc2UgbG9vayBmYWlybHkgc3RhbmRhcmQuCgpGaW5hbGx5LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGVuYWJsaW5nIGBERVZJQ0VfUFJJVkFURWAgY29tcGlsZXMgaW4gYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYC4gSWYgdGhhdCBhbGwgY2hlY2tzIG91dCwgSSYjMzk7bSByZWFkeSB0byBiZWdpbiBmdXp6aW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttaWdyYXRlX2RldmljZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGU9OTk9b2JqLSQoQ09ORklHX05VTUEpICYjNDM7PSBtZW1vcnktdGllcnMub1xubW0vTWFrZWZpbGU6MTAwOm9iai0kKENPTkZJR19ERVZJQ0VfTUlHUkFUSU9OKSAmIzQzOz0gbWlncmF0ZV9kZXZpY2Uub1xubW0vTWFrZWZpbGUtMTAxLW9iai0kKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgJiM0Mzs9IGh1Z2VfbWVtb3J5Lm8ga2h1Z2VwYWdlZC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA0OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMDYyCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gRGV2aWNlIE1pZ3JhdGlvbiBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIGBDT05GSUdfREVWSUNFX01JR1JBVElPTmAgaGFzIHBvcHBlZCB1cCBhZ2Fpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlIGFuZCBpbXBsaWNhdGlvbnMuIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHRyYWNlIGl0cyBkZWZpbml0aW9uLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSB2YXJpb3VzIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgSSYjMzk7bSBmYW1pbGlhciB3aXRoIGluIHRoZSBzeXN0ZW0sIGFuZCB3aGVyZSB0aGlzIG1pZ3JhdGlvbiBzdXBwb3J0IG1pZ2h0IGJlIGNvbmRpdGlvbmFsbHkgZW5hYmxlZC4gSXMgaXQgaW4gdGhlIGNvcmUga2VybmVsIGNvbmZpZywgYSBwbGF0Zm9ybS1zcGVjaWZpYyBvdmVybGF5LCBvciBwZXJoYXBzIHdpdGhpbiBhIGRyaXZlciBtb2R1bGU/IFVuZGVyc3RhbmRpbmcgaXRzIGNvbnRleHQgd2lsbCBpbW1lZGlhdGVseSBpbmZvcm0gaG93IGl0IHdpbGwgYWZmZWN0IHRoZSBydW50aW1lIGJlaGF2aW9yIG9mIGRldmljZXMgaW4gdGhlIHBsYXRmb3JtLiBHb3R0YSBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgREVWSUNFX01JR1JBVElPTiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnPTY5Nj1jb25maWcgTUlHUkFUSU9OXG4tLVxubW0vS2NvbmZpZy02OTktXG5tbS9LY29uZmlnOjcwMDpjb25maWcgREVWSUNFX01JR1JBVElPTlxubW0vS2NvbmZpZy03MDEtXHRkZWZfYm9vbCBNSUdSQVRJT04gXHUwMDI2XHUwMDI2IFpPTkVfREVWSUNFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA0OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMzIxCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMzE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIGBERVZJQ0VfTUlHUkFUSU9OYCBmdW5jdGlvbmFsaXR5LiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgaXQmIzM5O3MgZ2F0ZWQgYnkgYm90aCBgTUlHUkFUSU9OYCBhbmQgYFpPTkVfREVWSUNFYC4gYE1JR1JBVElPTmAgaXMgYWxtb3N0IGFsd2F5cyBlbmFibGVkIGJ5IGRlZmF1bHQsIHNvIGBaT05FX0RFVklDRWAgaXMgcmVhbGx5IHRoZSBjcnV4IG9mIHRoZSBtYXR0ZXIuCgpOb3csIGBURVNUX0hNTWAgc2VlbXMgcGFydGljdWxhcmx5IHJlbGV2YW50LCBhbmQgaXQgaGFzIGEgY2FzY2FkaW5nIGRlcGVuZGVuY3kg4oCTIGl0IGhpbmdlcyBvbiBgREVWSUNFX1BSSVZBVEVgLCB3aGljaCBpbiB0dXJuIGhpbmdlcyBvbiBgWk9ORV9ERVZJQ0VgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4gVGhpcyBtZWFucyB0aGF0IGVuYWJsaW5nIGBURVNUX0hNTWAgZWZmZWN0aXZlbHkgcHVsbHMgaW4gYERFVklDRV9QUklWQVRFYCBhbmQsIG1vc3QgaW1wb3J0YW50bHksIHRoZSBjb3JlIGBaT05FX0RFVklDRWAsIHdoaWNoIHRoZW4gbmVhdGx5IGJyaW5ncyBgREVWSUNFX01JR1JBVElPTmAgaW50byB0aGUgcGljdHVyZS4KCkxldCYjMzk7cyBkaXZlIGludG8gYGxpYi9LY29uZmlnLmRlYnVnYCBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGBURVNUX0hNTWAgY29uZmlnLiBJIHNlZSBpdCYjMzk7cyBhIHRyaXN0YXRlLCBzbyBpdCBjYW4gYmUgbW9kdWxhcml6ZWQsIGJ1dCBpZiBJIHdhbnQgaXQgc3RhdGljYWxseSBsaW5rZWQsIEkganVzdCBuZWVkIHRvIGV4cGxpY2l0bHkgc2V0IGl0LgoKQmVmb3JlIEkgbW92ZSBvbiwgbGV0JiMzOTtzIHZlcmlmeSB0aG9zZSBkZXBlbmRlbmNpZXMgb2YgYFRFU1RfSE1NYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gb2YgZXZlcnl0aGluZyBJJiMzOTt2ZSBzYWlkLiBJdCBkZXBlbmRzIG9uIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGBERVZJQ0VfUFJJVkFURWAsIGBaT05FX0RFVklDRWAsIGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYW5kIGBTUEFSU0VNRU1fVk1FTU1BUGAuIEkgY2FuIGFkZCBgVEVTVF9ITU1gLCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCBgREVWSUNFX1BSSVZBVEVgIGFuZCBgWk9ORV9ERVZJQ0VgIHRvIGBFbmFibGVDb25maWdzYCwgc28gSSB0aGluayBJIHNob3VsZCBiZSBnb29kLgoKTGV0IG1lIHRha2UgYSBsb29rIGF0IHRoZSBmdW5jdGlvbnMgdGhlbXNlbHZlcy4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTt2ZSBnb3QgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgYW5kIGBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb2AuIEl0IGxvb2tzIGxpa2UgYG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvYCBjYWxscyBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCBzbyBpdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi4KCk9rYXksIGxldCYjMzk7cyBjaGVjayBgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9gLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2d1cC5jPTIzMjE9bWlncmF0ZV9sb25ndGVybV91bnBpbm5hYmxlX2ZvbGlvcyhzdHJ1Y3QgbGlzdF9oZWFkICptb3ZhYmxlX2ZvbGlvX2xpc3QsXG4tLVxubW0vZ3VwLmMtMjMzOS1cbm1tL2d1cC5jOjIzNDA6XHRcdFx0aWYgKG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvKGZvbGlvKSkge1xubW0vZ3VwLmMtMjM0MS1cdFx0XHRcdHJldCA9IC1FQlVTWTtcbi0tXG5tbS9pbnRlcm5hbC5oPTE1ODQ9dm9pZCBmcmVlX3pvbmVfZGV2aWNlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xubW0vaW50ZXJuYWwuaDoxNTg1OmludCBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbm1tL2ludGVybmFsLmgtMTU4Ni1cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEwOTg9c3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTExMjctXHRcdFx0ICogVGhlIG9ubHkgdGltZSB0aGVyZSBpcyBubyB2bWEgaXMgd2hlbiBjYWxsZWQgZnJvbVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMTI4Olx0XHRcdCAqIG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvKCkuIEhvd2V2ZXIgdGhpcyBpc24mIzM5O3Rcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTEyOS1cdFx0XHQgKiBjYWxsZWQgaWYgdGhlIHBhZ2UgY291bGQgbm90IGJlIHVubWFwcGVkLlxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTQ2MT1FWFBPUlRfU1lNQk9MKG1pZ3JhdGVfZGV2aWNlX3BmbnMpO1xuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTQ2Ny0gKi9cbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTQ2ODppbnQgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTQ2OS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA0OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDc1CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIERldmljZSBNaWdyYXRpb24gQ29kZSBhbmQgUmVsZXZhbnQgQ29uZmlndXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgY29kZSwgYW5kIHRoZSBrZXkgZW50cnkgcG9pbnQgZm9yIHRoaXMgZGV2aWNlIG1pZ3JhdGlvbiBzdHVmZiBhcHBlYXJzIHRvIGJlIGBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb2AsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBtaWdyYXRlX2xvbmd0ZXJtX3VucGlubmFibGVfZm9saW9zYCBpbiBgbW0vZ3VwLmNgLiBUaGF0JiMzOTtzIGEgc29saWQgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZy4gVGhlIHJlbGF0ZWQgZnVuY3Rpb25zIG9mIGludGVyZXN0IGhlcmUgYXJlIGNsZWFybHkgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgYW5kLCBvZiBjb3Vyc2UsIGBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb2AuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIHNlZSBpZiBgVEVTVF9ITU1gIGRpcmVjdGx5IGltcGFjdHMgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQgZG9lcyEgVGhlIGBkbWlycm9yX2RldmljZV9ldmljdF9jaHVua2AgY2FsbHMgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYC4gVGhlbiB0aGVyZSBhcmUgY2FsbHMgdG8gYG1pZ3JhdGVfdm1hX3BhZ2VzYCBmcm9tIGBkbWlycm9yX21pZ3JhdGVfdG9fc3lzdGVtYCwgYGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2VgIGFuZCBgZG1pcnJvcl9kZXZtZW1fZmF1bHRgLiBTbywgeWVhaCwgZW5hYmxpbmcgYFRFU1RfSE1NYCBpcyBkZWZpbml0ZWx5IHRoZSB3YXkgdG8gZ28uCgpOb3csIGxldCYjMzk7cyBjaXJjbGUgYmFjayB0byB0aGUgcGF0Y2ggaW4gcXVlc3Rpb24uIEl0IGZvY3VzZXMgb24gaG93IGBucmAgaXMgcmVzZXQgd2l0aGluIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYC4gSXQmIzM5O3MgZml4aW5nIGEgYnVnIHdoZXJlIGBucmAgd2FzbiYjMzk7dCBiZWluZyBjb3JyZWN0bHkgcmVzZXQgYWZ0ZXIgYSBmb2xpbyBzcGxpdCwgd2hpY2ggbWVhbnMgd2Ugd2VyZSBwb3RlbnRpYWxseSBwcm9jZXNzaW5nIHRoZSB3cm9uZyBudW1iZXIgb2YgcGFnZXMuIEl0IGFsc28gYWRkcyBhIGNydWNpYWwgYG1hcHBpbmcgPSBmb2xpb19tYXBwaW5nKGZvbGlvKTtgIGNhbGwgYmVmb3JlIGBmb2xpb19taWdyYXRlX21hcHBpbmdgIGJlY2F1c2UgYGZvbGlvX2ZyZWVfc3dhcCgpYCBtaWdodCBoYXZlIHJlbW92ZWQgdGhlIGZvbGlvIGZyb20gdGhlIHN3YXAgY2FjaGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkZWVwIHdpdGhpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgZGV2aWNlIG1pZ3JhdGlvbiBwYXRocywgc28sIHllYWgsIEkmIzM5O20gbWFya2luZyB0aGlzIGFzIGBXb3J0aEZ1enppbmcgPSB0cnVlYC4KCkp1c3QgdG8gcmVjYXAgdGhlIGltcG9ydGFudCBzeW1ib2xzOiBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCBgbWlncmF0ZV92bWFfcGFnZXNgLCBhbmQgYG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvYC4KCkFuZCBteSB0YXJnZXQgY29uZmlndXJhdGlvbnMgbmVlZCB0byBiZTogYFRFU1RfSE1NYCwgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCwgYERFVklDRV9QUklWQVRFYCwgYW5kIGBaT05FX0RFVklDRWAuCgpTaW5jZSBgVEVTVF9ITU1gIGRlcGVuZHMgb24gdGhlIG90aGVycywgc3BlY2lmaWNhbGx5IGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgYW5kIGBERVZJQ0VfUFJJVkFURWAsIHdpdGggYERFVklDRV9QUklWQVRFYCBuZWVkaW5nIGBaT05FX0RFVklDRWAsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhvc2UgYXJlIGVuYWJsZWQuIGBaT05FX0RFVklDRWAgYWxzbyBoYXMgZGVwZW5kZW5jaWVzIG9uIGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYW5kIGBTUEFSU0VNRU1fVk1FTU1BUGAuIEkmIzM5O2xsIHByb2JhYmx5IGluY2x1ZGUgYE1FTU9SWV9IT1RQTFVHYCBhbmQgYE1FTU9SWV9IT1RSRU1PVkVgIHRvIGJlIHNhZmUsIHNvIEkmIzM5O2xsIGNoZWNrIHRob3NlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUVNT1JZX0hPVFBMVUcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz01MTk9Y29uZmlnIEFSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHXG4tLVxubW0vS2NvbmZpZy01MjItIyBldmVudHVhbGx5LCB3ZSBjYW4gaGF2ZSB0aGlzIG9wdGlvbiBqdXN0ICYjMzk7c2VsZWN0IFNQQVJTRU1FTSYjMzk7XG5tbS9LY29uZmlnOjUyMzptZW51Y29uZmlnIE1FTU9SWV9IT1RQTFVHXG5tbS9LY29uZmlnLTUyNC1cdGJvb2wgXCYjMzQ7TWVtb3J5IGhvdHBsdWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDQ6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU3MDgKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipNZW1vcnkgSG90LVJlbW92ZSBJbnZlc3RpZ2F0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBGaXJzdCBvcmRlciBvZiBidXNpbmVzczogKk1FTU9SWV9IT1RSRU1PVkUqLiBUaGF0JiMzOTtzIHdoZXJlIHdlIG5lZWQgdG8gc3RhcnQuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIFdoYXQmIzM5O3MgcHJvbXB0aW5nIHRoaXMgY2hlY2s/IElzIGl0IGEgc3BlY2lmaWMgZXJyb3IsIGEgcGVyZm9ybWFuY2UgYW5vbWFseSwgb3IganVzdCBnZW5lcmFsIGN1cmlvc2l0eSBhYm91dCBtZW1vcnkgbWFuYWdlbWVudCBvbiB0aGlzIHBsYXRmb3JtPyBUaGUgZ29hbCwgb2YgY291cnNlLCBpcyB0byBkZXRlcm1pbmUgdGhlIHN0YXRlIG9mIGhvdC1yZW1vdmUgY2FwYWJpbGl0aWVzLiBBcmUgdGhleSBlbmFibGVkPyBQcm9wZXJseSBjb25maWd1cmVkPyBGdW5jdGlvbmluZyBhcyBleHBlY3RlZD8gTXkgZXhwZXJ0IGludHVpdGlvbiBhbHJlYWR5IHN1Z2dlc3RzIGEgZmV3IHBvc3NpYmxlIGFyZWFzIHRvIGludmVzdGlnYXRlLCBkZXBlbmRpbmcgb24gdGhlIGVudmlyb25tZW50IGluIHdoaWNoIHRoaXMgaXMgdGFraW5nIHBsYWNlLiBJcyB0aGlzIG9uIGJhcmUgbWV0YWwsIHZpcnR1YWxpemVkLCBpbiBhIHNwZWNpZmljIGNsb3VkIHByb3ZpZGVyPyBFYWNoIGhhcyBpdHMgb3duIG51YW5jZXMgd2l0aCBob3QtcmVtb3ZlLiBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggdGhlIGZ1bmRhbWVudGFscyBiZWZvcmUgZXhwbG9yaW5nIGFueSBwb3RlbnRpYWwgaXNzdWVzIG9yIGF2ZW51ZXMgZm9yIG9wdGltaXphdGlvbi4gTXkgbmV4dCBzdGVwcyB3aWxsIGRlcGVuZCBlbnRpcmVseSBvbiB3aGF0IEkgZmluZCB3aGVuIEkgaW5zcGVjdCBgTUVNT1JZX0hPVFJFTU9WRWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNRU1PUllfSE9UUkVNT1ZFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9NTg5PWVuZGNob2ljZVxubW0vS2NvbmZpZy01OTAtXG5tbS9LY29uZmlnOjU5MTpjb25maWcgTUVNT1JZX0hPVFJFTU9WRVxubW0vS2NvbmZpZy01OTItXHRib29sIFwmIzM0O0FsbG93IGZvciBtZW1vcnkgaG90IHJlbW92ZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjAxMwoJCQkJCQkJb3V0cHV0OiAxODgKCQkJCQkJCXRob3VnaHRzOiA1MDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgVnVsbmVyYWJpbGl0eSBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCwgd2hpY2ggdG91Y2hlcyBkZXZpY2UgbWVtb3J5IG1pZ3JhdGlvbiBpbiBgbW0vbWlncmF0ZV9kZXZpY2UuY2AsIGxvb2tzIHByb21pc2luZyBmb3IgZnV6emluZy4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBmdW5kYW1lbnRhbCBtZW1vcnkgbWFuYWdlbWVudCByb3V0aW5lcyB0aGF0IGFyZSBjcml0aWNhbCBmb3IgSE1NIGFuZCBkcml2ZXJzLCBlc3BlY2lhbGx5IEdQVXMsIGhhbmRsaW5nIGZvbGlvIHNwbGl0dGluZyBhbmQgc3dhcCBjYWNoZSBtYXBwaW5nIGR1cmluZyBkZXZpY2UgbWVtb3J5IG1pZ3JhdGlvbi4gVGhhdCYjMzk7cyBhIGtleSBhcmVhLgoKSSYjMzk7dmUgbWFkZSBzdXJlIHRvIGluY2x1ZGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGluIG91ciB0ZXN0aW5nIHN0cmF0ZWd5LiBgTUVNT1JZX0hPVFBMVUdgIGFuZCBgTUVNT1JZX0hPVFJFTU9WRWAgYXJlIG9idmlvdXMgY2FuZGlkYXRlcywgZ2l2ZW4gdGhlIGNvbnRleHQuIFRoZW4gd2UgaGF2ZSBgWk9ORV9ERVZJQ0VgIGFuZCBgREVWSUNFX1BSSVZBVEVgLCB3aGljaCBhcmUgY3J1Y2lhbCBmb3IgdGhlIGRldmljZSBtZW1vcnkgaW50ZXJhY3Rpb25zIHRoaXMgcGF0Y2ggbW9kaWZpZXMuIEkmIzM5O3ZlIGFsc28gYWRkZWQgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBzaW5jZSBodWdlcGFnZSBpbnRlcmFjdGlvbnMgY2FuIGV4cG9zZSBpc3N1ZXMgaW4gbWlncmF0aW9uIGxvZ2ljLCBhbmQgYFRFU1RfSE1NYCwgd2hpY2ggcHJvdmlkZXMgYSBrbm93biBnb29kIHBhdGggZm9yIHRlc3RpbmcsIGFuZCB0aGUgY3JpdGljYWwgcGllY2UsIGBTUEFSU0VNRU1fVk1FTU1BUGAuIEFsdGhvdWdoIG9mdGVuIGVuYWJsZWQgYnkgZGVmYXVsdCBvbiB4ODZfNjQsIGl0JiMzOTtzIHdvcnRoIGV4cGxpY2l0bHkgaW5jbHVkaW5nIGZvciB0aG9yb3VnaG5lc3MuCgpJIGFsc28gY2hlY2tlZCB0aGUgZXhwb3J0IHN0YXR1cyBvZiB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zLiBgbWlncmF0ZV92bWFfcGFnZXNgIGFuZCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFyZSBleHBvcnRlZCwgd2hpY2ggaXMgZ29vZCBmb3IgdXMuIGBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb2AgaXNuJiMzOTt0IHN0YXRpYywgYW5kIGl0JiMzOTtzIGRlZmluZWQgaW4gYG1tL2ludGVybmFsLmhgLCBzbyBpdCBpcyBpbmRpcmVjdGx5IGV4cG9zZWQuCgpEaWdnaW5nIGZ1cnRoZXIsIEkgdHJhY2VkIHRoZSBjYWxsIHBhdGhzIHRvIGBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb2AuIEl0JiMzOTtzIHVsdGltYXRlbHkgcmVhY2hhYmxlIHRocm91Z2ggYG1pZ3JhdGVfbG9uZ3Rlcm1fdW5waW5uYWJsZV9mb2xpb3NgIHdoaWNoIGlzIHRoZW4gY2FsbGVkIGZyb20gYGNoZWNrX2FuZF9taWdyYXRlX21vdmFibGVfZm9saW9zYCBhbmQgdGhlbiBgX19ndXBfbG9uZ3Rlcm1fbG9ja2VkYCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgcGluX3VzZXJfcGFnZXNgLiBUaGlzIGNvbmZpcm1zIGl0JiMzOTtzIGFjY2Vzc2libGUgdGhyb3VnaCBpb191cmluZywgUkRNQSwgVkZJTywgYW5kIG90aGVyIGNvbW1vbiBwYXRocyB0aGF0IHdlIGNhbiB0YXJnZXQgaW4gb3VyIGZ1enplci4gU28sIHRoZSBrZXkgZnVuY3Rpb25zIGFyZSBpbmRlZWQgZXhwb3NlZCBhbmQgcmVhY2hhYmxlLgoKQmFzZWQgb24gdGhpcywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCB0aGUgZm9sbG93aW5nIGFyZSB3b3J0aCBmb2N1c2luZyBvbjogYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgYW5kIGBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb2AuIFRoZXNlIGFyZSB0aGUgY29yZSBmdW5jdGlvbnMgdGhhdCBlbmNhcHN1bGF0ZSB0aGUgY29yZSBsb2dpYyB0aGlzIHBhdGNoIHRvdWNoZXMuIFdlIHNob3VsZCBiZSBhYmxlIHRvIHRyaWdnZXIgdGhlIHBhdGNoZWQgY29kZSBpbiBvdXIgZnV6emluZyBzZXR1cC4KClRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2AgaXMgc2V0IHRvIGB0cnVlYCwgYW5kIEkmIzM5O3ZlIGNvbnN0cnVjdGVkIG15IGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AgYWNjb3JkaW5nbHkuIEkgd2lsbCBub3cgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDQ6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RFU1RfSE1NJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1pPTkVfREVWSUNFJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RSRU1PVkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttaWdyYXRlX2RldmljZV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX3ZtYV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgIHRvIGZpeCBmb2xpbyBzcGxpdHRpbmcgYW5kIHN3YXAgY2FjaGUgbWFwcGluZyBkdXJpbmcgZGV2aWNlIG1lbW9yeSBtaWdyYXRpb24uIFRoaXMgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB1c2VkIGJ5IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudCkgYW5kIGRldmljZSBkcml2ZXJzLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8tZGV2aWNlIGRyaXZlciBhbmQgc3RhbmRhcmQgR1VQIChnZXRfdXNlcl9wYWdlcykgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RFU1RfSE1NJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1pPTkVfREVWSUNFJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RSRU1PVkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttaWdyYXRlX2RldmljZV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX3ZtYV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgIHRvIGZpeCBmb2xpbyBzcGxpdHRpbmcgYW5kIHN3YXAgY2FjaGUgbWFwcGluZyBkdXJpbmcgZGV2aWNlIG1lbW9yeSBtaWdyYXRpb24uIFRoaXMgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB1c2VkIGJ5IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudCkgYW5kIGRldmljZSBkcml2ZXJzLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8tZGV2aWNlIGRyaXZlciBhbmQgc3RhbmRhcmQgR1VQIChnZXRfdXNlcl9wYWdlcykgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OToxNC42MjEwNTEzNzlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTg4Mzc5NzUxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJURVNUX0hNTVwiLFxuICAgIFwiVFJBTlNQQVJFTlRfSFVHRVBBR0VcIixcbiAgICBcIkRFVklDRV9QUklWQVRFXCIsXG4gICAgXCJaT05FX0RFVklDRVwiLFxuICAgIFwiTUVNT1JZX0hPVFBMVUdcIixcbiAgICBcIk1FTU9SWV9IT1RSRU1PVkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtaWdyYXRlX2RldmljZV9wYWdlc1wiLFxuICAgIFwibWlncmF0ZV92bWFfcGFnZXNcIixcbiAgICBcIm1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGluIGBtbS9taWdyYXRlX2RldmljZS5jYCB0byBmaXggZm9saW8gc3BsaXR0aW5nIGFuZCBzd2FwIGNhY2hlIG1hcHBpbmcgZHVyaW5nIGRldmljZSBtZW1vcnkgbWlncmF0aW9uLiBUaGlzIGlzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdXNlZCBieSBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpIGFuZCBkZXZpY2UgZHJpdmVycy4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgdGhlIGBURVNUX0hNTWAgcHNldWRvLWRldmljZSBkcml2ZXIgYW5kIHN0YW5kYXJkIEdVUCAoZ2V0X3VzZXJfcGFnZXMpIHBhdGhzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OToxNC42MjEwNTkxMTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNTAxMjEzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDc3YTFkZjYxN2ViZTI2MzJjNmJkYjFmMjViMjk4NDVhMjZiZTQ3ZThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDM6NTk6MTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vbWlncmF0ZV9kZXZpY2UuYyBiL21tL21pZ3JhdGVfZGV2aWNlLmNcXG5pbmRleCA1NTQ3NTRlYjI2ZmYyLi4wZTZmMDAxOTBmZDgzIDEwMDY0NFxcbi0tLSBhL21tL21pZ3JhdGVfZGV2aWNlLmNcXG4rKysgYi9tbS9taWdyYXRlX2RldmljZS5jXFxuQEAgLTExODIsNiArMTE4MiwxMyBAQCBzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHQgTUlHUkFURV9QRk5fQ09NUE9VTkQpO1xcbiBcXHRcXHRcXHRcXHRcXHRnb3RvIG5leHQ7XFxuIFxcdFxcdFxcdFxcdH1cXG4rXFxuK1xcdFxcdFxcdFxcdC8qXFxuK1xcdFxcdFxcdFxcdCAqIHJlc2V0IG5yIHNvIHRoYXQgb25seSBmaXJzdCBhZnRlci1zcGxpdCBmb2xpb1xcbitcXHRcXHRcXHRcXHQgKiBpcyBwcm9jZXNzZWQgYmVsb3dcXG4rXFx0XFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdFxcdFZNX1dBUk5fT05fT05DRShmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSk7XFxuK1xcdFxcdFxcdFxcdG5yID0gMTtcXG4gXFx0XFx0XFx0fSBlbHNlIGlmICgoc3JjX3BmbnNbaV0gXFx1MDAyNiBNSUdSQVRFX1BGTl9NSUdSQVRFKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHRcXHQoZHN0X3BmbnNbaV0gXFx1MDAyNiBNSUdSQVRFX1BGTl9DT01QT1VORCkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0XFx0IShzcmNfcGZuc1tpXSBcXHUwMDI2IE1JR1JBVEVfUEZOX0NPTVBPVU5EKSkge1xcbkBAIC0xMjIxLDYgKzEyMjgsMTIgQEAgc3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcXG4gXFx0XFx0XFx0Zm9saW8gPSBwYWdlX2ZvbGlvKG1pZ3JhdGVfcGZuX3RvX3BhZ2Uoc3JjX3BmbnNbaStqXSkpO1xcbiBcXHRcXHRcXHRuZXdmb2xpbyA9IHBhZ2VfZm9saW8obWlncmF0ZV9wZm5fdG9fcGFnZShkc3RfcGZuc1tpK2pdKSk7XFxuIFxcbitcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHQgKiBmb2xpb19mcmVlX3N3YXAoKSByZW1vdmVkIHRoZSBmb2xpbyBmcm9tIHRoZSBzd2FwXFxuK1xcdFxcdFxcdCAqIGNhY2hlLiBSZWZyZXNoIHRoZSBzYXZlZCBtYXBwaW5nIGJlZm9yZSBtaWdyYXRpb24uXFxuK1xcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRtYXBwaW5nID0gZm9saW9fbWFwcGluZyhmb2xpbyk7XFxuK1xcbiBcXHRcXHRcXHRyID0gZm9saW9fbWlncmF0ZV9tYXBwaW5nKG1hcHBpbmcsIG5ld2ZvbGlvLCBmb2xpbywgZXh0cmFfY250KTtcXG4gXFx0XFx0XFx0aWYgKHIpXFxuIFxcdFxcdFxcdFxcdHNyY19wZm5zW2kral0gXFx1MDAyNj0gfk1JR1JBVEVfUEZOX01JR1JBVEU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjU5OjE1LjE1Njc2MzAxOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjkxMzQ4MDcyODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRFU1RfSE1NXCIsXG4gICAgXCJUUkFOU1BBUkVOVF9IVUdFUEFHRVwiLFxuICAgIFwiREVWSUNFX1BSSVZBVEVcIixcbiAgICBcIlpPTkVfREVWSUNFXCIsXG4gICAgXCJNRU1PUllfSE9UUExVR1wiLFxuICAgIFwiTUVNT1JZX0hPVFJFTU9WRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1pZ3JhdGVfZGV2aWNlX3BhZ2VzXCIsXG4gICAgXCJtaWdyYXRlX3ZtYV9wYWdlc1wiLFxuICAgIFwibWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgIHRvIGZpeCBmb2xpbyBzcGxpdHRpbmcgYW5kIHN3YXAgY2FjaGUgbWFwcGluZyBkdXJpbmcgZGV2aWNlIG1lbW9yeSBtaWdyYXRpb24uIFRoaXMgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB1c2VkIGJ5IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudCkgYW5kIGRldmljZSBkcml2ZXJzLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8tZGV2aWNlIGRyaXZlciBhbmQgc3RhbmRhcmQgR1VQIChnZXRfdXNlcl9wYWdlcykgcGF0aHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc3YTFkZjYxN2ViZTI2MzJjNmJkYjFmMjViMjk4NDVhMjZiZTQ3ZThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAwMzo1OToxMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL21pZ3JhdGVfZGV2aWNlLmMgYi9tbS9taWdyYXRlX2RldmljZS5jXG5pbmRleCA1NTQ3NTRlYjI2ZmYyLi4wZTZmMDAxOTBmZDgzIDEwMDY0NFxuLS0tIGEvbW0vbWlncmF0ZV9kZXZpY2UuY1xuKysrIGIvbW0vbWlncmF0ZV9kZXZpY2UuY1xuQEAgLTExODIsNiArMTE4MiwxMyBAQCBzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxuIFx0XHRcdFx0XHRcdFx0IE1JR1JBVEVfUEZOX0NPTVBPVU5EKTtcbiBcdFx0XHRcdFx0Z290byBuZXh0O1xuIFx0XHRcdFx0fVxuK1xuK1x0XHRcdFx0LypcbitcdFx0XHRcdCAqIHJlc2V0IG5yIHNvIHRoYXQgb25seSBmaXJzdCBhZnRlci1zcGxpdCBmb2xpb1xuK1x0XHRcdFx0ICogaXMgcHJvY2Vzc2VkIGJlbG93XG4rXHRcdFx0XHQgKi9cbitcdFx0XHRcdFZNX1dBUk5fT05fT05DRShmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSk7XG4rXHRcdFx0XHRuciA9IDE7XG4gXHRcdFx0fSBlbHNlIGlmICgoc3JjX3BmbnNbaV0gXHUwMDI2IE1JR1JBVEVfUEZOX01JR1JBVEUpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0KGRzdF9wZm5zW2ldIFx1MDAyNiBNSUdSQVRFX1BGTl9DT01QT1VORCkgXHUwMDI2XHUwMDI2XG4gXHRcdFx0XHQhKHNyY19wZm5zW2ldIFx1MDAyNiBNSUdSQVRFX1BGTl9DT01QT1VORCkpIHtcbkBAIC0xMjIxLDYgKzEyMjgsMTIgQEAgc3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcbiBcdFx0XHRmb2xpbyA9IHBhZ2VfZm9saW8obWlncmF0ZV9wZm5fdG9fcGFnZShzcmNfcGZuc1tpK2pdKSk7XG4gXHRcdFx0bmV3Zm9saW8gPSBwYWdlX2ZvbGlvKG1pZ3JhdGVfcGZuX3RvX3BhZ2UoZHN0X3BmbnNbaStqXSkpO1xuIFxuK1x0XHRcdC8qXG4rXHRcdFx0ICogZm9saW9fZnJlZV9zd2FwKCkgcmVtb3ZlZCB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcFxuK1x0XHRcdCAqIGNhY2hlLiBSZWZyZXNoIHRoZSBzYXZlZCBtYXBwaW5nIGJlZm9yZSBtaWdyYXRpb24uXG4rXHRcdFx0ICovXG4rXHRcdFx0bWFwcGluZyA9IGZvbGlvX21hcHBpbmcoZm9saW8pO1xuK1xuIFx0XHRcdHIgPSBmb2xpb19taWdyYXRlX21hcHBpbmcobWFwcGluZywgbmV3Zm9saW8sIGZvbGlvLCBleHRyYV9jbnQpO1xuIFx0XHRcdGlmIChyKVxuIFx0XHRcdFx0c3JjX3BmbnNbaStqXSBcdTAwMjY9IH5NSUdSQVRFX1BGTl9NSUdSQVRFO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDM6NTk6MTUuMTU2NzY0NjQ3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIwMzQ3MjI1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1pZ3JhdGUgRGV2aWNlIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG1tL21pZ3JhdGVfZGV2aWNlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2VzIGFyZSBpbnRlcmVzdGluZyBhbmQgd29ydGggYSBjbG9zZXIgbG9vay5cblxuRmlyc3QsIHRoZXkndmUgaW5zZXJ0ZWQgYSBgVk1fV0FSTl9PTl9PTkNFKGZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pKTsgbnIgPSAxO2Agc3RhdGVtZW50IHdpdGhpbiBhIGJsb2NrIHdoZXJlIGBmb2xpb19zcGxpdGAgb3Igc29tZXRoaW5nIHNpbWlsYXIgaXMgaGFwcGVuaW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaHkgdGhlIHdhcm5pbmc/IFdoYXQncyB0aGUgcG90ZW50aWFsIGlzc3VlIHdpdGggbWlncmF0aW5nIGEgbGFyZ2UgZm9saW8gaGVyZT9cIiBJdCBzdWdnZXN0cyB0aGV5J3JlIGVuY291bnRlcmluZyB1bmV4cGVjdGVkIGxhcmdlIGZvbGlvcyBhbmQgd2FudCB0byBmbGFnIHRoYXQuIFRoZSBgbnIgPSAxO2AgaW5kaWNhdGVzIHRoZXkncmUgZm9yY2luZyB0aGUgbWlncmF0aW9uIHRvIHRyZWF0IGl0IGFzIGEgc2luZ2xlIHBhZ2UsIHdoaWNoIGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGV5J3JlIGRvaW5nIHRoaXMuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNvbmRpdGlvbi4gV2hhdCBpcyBzcGVjaWFsIGFib3V0IHRoZSBtaWdyYXRpb24gb2YgbGFyZ2UgZm9saW9zIGZyb20gb3IgdG8gZGV2aWNlIG1lbW9yeT8gSXMgdGhlcmUgYSBzdWJ0bGUgaW50ZXJhY3Rpb24gd2l0aCBob3cgZGV2aWNlIG1lbW9yeSBpcyBtYW5hZ2VkIGluIHRoaXMgcGFydCBvZiB0aGUga2VybmVsP1xuXG5TZWNvbmRseSwgdGhleSd2ZSBhZGRlZCBgbWFwcGluZyA9IGZvbGlvX21hcHBpbmcoZm9saW8pO2AgYmVmb3JlIHRoZSBjYWxsIHRvIGBmb2xpb19taWdyYXRlX21hcHBpbmdgLiBBaCwgdGhpcyBpcyBtb3JlIHN0cmFpZ2h0Zm9yd2FyZDsgdGhlIGNvbW1lbnQgYWJvdXQgYGZvbGlvX2ZyZWVfc3dhcCgpYCBwb3RlbnRpYWxseSByZW1vdmluZyB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcCBjYWNoZSBtYWtlcyB0aGlzIHBlcmZlY3RseSBjbGVhci4gV2UncmUgZ2V0dGluZyB0aGUgbWFwcGluZyAqYmVmb3JlKiB0aGUgc3dhcC1yZWxhdGVkIG9wZXJhdGlvbnMgdGhhdCBtaWdodCBmcmVlIHRoZSBmb2xpbyBhbmQgaW52YWxpZGF0ZSBgZm9saW8tXHUwMDNlbWFwcGluZ2AuIEEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBwcmV2ZW50aW9uLiBUaGlzIGluZGljYXRlcyBhIHBvdGVudGlhbCBpc3N1ZSB3aGVyZSB0aGUgZm9saW8gY291bGQgYmUgdW5tYXBwZWQgZnJvbSBpdHMgb3JpZ2luYWwgbG9jYXRpb24gKGxpa2VseSB0aGUgc3dhcCBjYWNoZSkgZHVyaW5nIHRoZSBtaWdyYXRpb24gcHJvY2VzcywgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbiBpZiB3ZSBkaWRuJ3QgY2FwdHVyZSB0aGUgbWFwcGluZyBmaXJzdC4gVGhlIGdvYWwgaGVyZSBpcyB0byBlbnN1cmUgdGhhdCBgZm9saW9fbWlncmF0ZV9tYXBwaW5nYCBoYXMgdGhlIGNvcnJlY3QgYG1hcHBpbmdgIGV2ZW4gaWYgdGhlIGZvbGlvJ3Mgc3dhcCBjYWNoZSBlbnRyeSBiZWNvbWVzIGludmFsaWQuIEknbSBnb2luZyB0byB3YW50IHRvIHZlcmlmeSBleGFjdGx5ICpob3cqIGBmb2xpb19mcmVlX3N3YXAoKWAgaXMgY2FsbGVkIGFuZCBjb25maXJtIHRoYXQgdGhpcyBpcyBhIHZhbGlkIGFuZCBuZWNlc3NhcnkgcHJlY2F1dGlvbi4gTm93LCBsZXQncyBwdWxsIHVwIHRoZSBjb250ZXh0IG9mIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBpbiBgbW0vbWlncmF0ZV9kZXZpY2UuY2AgYW5kIHNlZSB3aGF0J3MgZ29pbmcgb24uLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMwMSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjU5OjIwLjM2MDI0MTEzNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjkxNTgxMjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19taWdyYXRlX2RldmljZV9wYWdlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9taWdyYXRlX2RldmljZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL21pZ3JhdGVfZGV2aWNlLmM9OTY1PXN0YXRpYyB2b2lkIG1pZ3JhdGVfdm1hX2luc2VydF9wYWdlKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTA5Ny1cXG5tbS9taWdyYXRlX2RldmljZS5jOjEwOTg6c3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcXG5tbS9taWdyYXRlX2RldmljZS5jLTEwOTktXFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsIHVuc2lnbmVkIGxvbmcgbnBhZ2VzLFxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMjYwPXZvaWQgbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsIHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLFxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjYyLXtcXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNjM6XFx0X19taWdyYXRlX2RldmljZV9wYWdlcyhzcmNfcGZucywgZHN0X3BmbnMsIG5wYWdlcywgTlVMTCk7XFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjY0LX1cXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI3NT12b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzYte1xcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI3NzpcXHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKG1pZ3JhdGUtXFx1MDAzZXNyYywgbWlncmF0ZS1cXHUwMDNlZHN0LCBtaWdyYXRlLVxcdTAwM2VucGFnZXMsIG1pZ3JhdGUpO1xcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3OC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjU5OjIwLjc4OTQwNjEwOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MTg0MTg4MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipEaXZpbmcgaW50byB0aGUgUGFnZSBNaWdyYXRpb24gTGFuZHNjYXBlKipcblxuUmlnaHQsIHNvIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBpcyB0aGUgY29yZSBmdW5jdGlvbiBoZXJlLCBhbmQgaXQncyBiZWluZyBjYWxsZWQgYnkgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYC4gSW1tZWRpYXRlbHkgSSdtIHRoaW5raW5nLCB0aGVzZSBhcmUgbGlrZWx5IGV4cG9zZWQgdG8gZGV2aWNlIGRyaXZlcnMsIG1heWJlIHRocm91Z2ggZXhwb3J0cyBvciBzb21lIHNpbWlsYXIgbWVjaGFuaXNtLiBUaGUgbmFtaW5nIGNvbnZlbnRpb24gc3Ryb25nbHkgc3VnZ2VzdHMgd2UncmUgZGVhbGluZyB3aXRoIHBhZ2UgbWlncmF0aW9uLCBwcm9iYWJseSByZWxhdGVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCB0aGUgbW92ZSBvZiBkYXRhIHdpdGhpbiB0aGUgc3lzdGVtLiBXZSdyZSB0YWxraW5nIGxvdy1sZXZlbCBzdHVmZiBoZXJlLCBmdW5kYW1lbnRhbCB0byBob3cgd2UgaGFuZGxlIGRldmljZSBtZW1vcnkuXG5cblRoZSBzaWduaWZpY2FudCB0aGluZyBpcyB0aGF0IGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYW5kIGBtaWdyYXRlX3ZtYV9wYWdlc2AgKm11c3QqIGJlIGltcG9ydGFudCwgc2luY2UgdGhleSBhcmUgY2FsbGluZyB0aGlzIG90aGVyIGZ1bmN0aW9uLiBJIHN1c3BlY3QgdGhleSBjb3VsZCBiZSBob3cgZHJpdmVycyBsaWtlIE5vdXZlYXUsIEFNREdQVSwgb3IgdGhlIEhvc3QgTWVtb3J5IE1hbmFnZXIgYXJlIGFjdHVhbGx5IHRyaWdnZXJpbmcgcGFnZSBtaWdyYXRpb25zLiBUaGVyZWZvcmUsIG15IG5leHQgbW92ZSBpcyBjbGVhcjogSSBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIHVzYWdlIG9mIGJvdGggYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYC4gVW5kZXJzdGFuZGluZyAqd2hlcmUqIGFuZCAqaG93KiB0aGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCB3aWxsIHJldmVhbCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEFyZSB0aGV5IHNwZWNpZmljIHRvIGNlcnRhaW4gaGFyZHdhcmU/IEFyZSB0aGV5IHBhcnQgb2YgYSBsYXJnZXIgbWlncmF0aW9uIGZyYW1ld29yaz8gVGhlIGFuc3dlcnMgYXJlIGNydWNpYWwgdG8gYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNzgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OToyNC4yMDc4Mjc2NThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyMTI1NjgwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtaWdyYXRlX2RldmljZV9wYWdlc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYz0xMTE0PWludCBkcm1fcGFnZW1hcF9ldmljdF90b19yYW0oc3RydWN0IGRybV9wYWdlbWFwX2Rldm1lbSAqZGV2bWVtX2FsbG9jYXRpb24pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy0xMTc5LVxcdFxcdGRybV9wYWdlbWFwX21pZ3JhdGlvbl91bmxvY2tfcHV0X3BhZ2VzKG5wYWdlcywgZHN0KTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYzoxMTgwOlxcdG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKHNyYywgZHN0LCBucGFnZXMpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTExODEtXFx0bWlncmF0ZV9kZXZpY2VfZmluYWxpemUoc3JjLCBkc3QsIG5wYWdlcyk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYz00NzU9bm91dmVhdV9kbWVtX2V2aWN0X2NodW5rKHN0cnVjdCBub3V2ZWF1X2RtZW1fY2h1bmsgKmNodW5rKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtNTE3LVxcdG5vdXZlYXVfZmVuY2VfbmV3KFxcdTAwMjZmZW5jZSwgY2h1bmstXFx1MDAzZWRybS1cXHUwMDNlZG1lbS1cXHUwMDNlbWlncmF0ZS5jaGFuKTtcXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYzo1MTg6XFx0bWlncmF0ZV9kZXZpY2VfcGFnZXMoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMpO1xcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTUxOS1cXHRub3V2ZWF1X2RtZW1fZmVuY2VfZG9uZShcXHUwMDI2ZmVuY2UpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg9MTk4PWludCBtaWdyYXRlX2RldmljZV9wZm5zKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLCB1bnNpZ25lZCBsb25nIG5wYWdlcyk7XFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6MTk5OnZvaWQgbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsIHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLFxcbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oLTIwMC1cXHRcXHRcXHR1bnNpZ25lZCBsb25nIG5wYWdlcyk7XFxuLS1cXG5saWIvdGVzdF9obW0uYz0xODg9c3RhdGljIHZvaWQgZG1pcnJvcl9kZXZpY2VfZXZpY3RfY2h1bmsoc3RydWN0IGRtaXJyb3JfY2h1bmsgKmNodW5rKVxcbi0tXFxubGliL3Rlc3RfaG1tLmMtMjMxLVxcdH1cXG5saWIvdGVzdF9obW0uYzoyMzI6XFx0bWlncmF0ZV9kZXZpY2VfcGFnZXMoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMpO1xcbmxpYi90ZXN0X2htbS5jLTIzMy1cXHRtaWdyYXRlX2RldmljZV9maW5hbGl6ZShzcmNfcGZucywgZHN0X3BmbnMsIG5wYWdlcyk7XFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTk2NT1zdGF0aWMgdm9pZCBtaWdyYXRlX3ZtYV9pbnNlcnRfcGFnZShzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEwOTctXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMDk4OnN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk5LVxcdFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLCB1bnNpZ25lZCBsb25nIG5wYWdlcyxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI1MS0vKipcXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNTI6ICogbWlncmF0ZV9kZXZpY2VfcGFnZXMoKSAtIG1pZ3JhdGUgbWV0YS1kYXRhIGZyb20gc3JjIHBhZ2UgdG8gZHN0IHBhZ2VcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTMtICogQHNyY19wZm5zOiBzcmNfcGZucyByZXR1cm5lZCBmcm9tIG1pZ3JhdGVfZGV2aWNlX3JhbmdlKClcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI1OS0gKi9cXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNjA6dm9pZCBtaWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjYxLVxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgbnBhZ2VzKVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2Mi17XFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjYzOlxcdF9fbWlncmF0ZV9kZXZpY2VfcGFnZXMoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMsIE5VTEwpO1xcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2NC19XFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjY1OkVYUE9SVF9TWU1CT0wobWlncmF0ZV9kZXZpY2VfcGFnZXMpO1xcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2Ni1cXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI3NT12b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzYte1xcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI3NzpcXHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKG1pZ3JhdGUtXFx1MDAzZXNyYywgbWlncmF0ZS1cXHUwMDNlZHN0LCBtaWdyYXRlLVxcdTAwM2VucGFnZXMsIG1pZ3JhdGUpO1xcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3OC19XFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTEzNjg9c3RhdGljIHVuc2lnbmVkIGxvbmcgbWlncmF0ZV9kZXZpY2VfcGZuX2xvY2sodW5zaWduZWQgbG9uZyBwZm4pXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTE0MDAtICogYWxsb2NhdGUgZGVzdGluYXRpb24gcGFnZXMgYW5kIHN0YXJ0IGNvcHlpbmcgZGF0YSBmcm9tIHRoZSBkZXZpY2UgdG8gQ1BVXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxNDAxOiAqIG1lbW9yeSBiZWZvcmUgY2FsbGluZyBtaWdyYXRlX2RldmljZV9wYWdlcygpLlxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTQwMi0gKi9cXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTQ2OD1pbnQgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTQ5Mi1cXG5tbS9taWdyYXRlX2RldmljZS5jOjE0OTM6XFx0bWlncmF0ZV9kZXZpY2VfcGFnZXMoXFx1MDAyNnNyY19wZm4sIFxcdTAwMjZkc3RfcGZuLCAxKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTE0OTQtXFx0aWYgKHNyY19wZm4gXFx1MDAyNiBNSUdSQVRFX1BGTl9NSUdSQVRFKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OToyNS45MjkwOTAxMDNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwMzQxMjU4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtaWdyYXRlX3ZtYV9wYWdlc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL21tL2htbS5yc3Q9MjY0PXVzZSBoYXJkd2FyZSBETUEgb3IgZGV2aWNlIHNwZWNpZmljIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb25zIHRvIG1pZ3JhdGUgZGF0YS5cXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q6MjY1OlRoZSBtaWdyYXRlX3ZtYV9zZXR1cCgpLCBtaWdyYXRlX3ZtYV9wYWdlcygpLCBhbmQgbWlncmF0ZV92bWFfZmluYWxpemUoKVxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdC0yNjYtZnVuY3Rpb25zIGFyZSBkZXNpZ25lZCB0byBtYWtlIGRyaXZlcnMgZWFzaWVyIHRvIHdyaXRlIGFuZCB0byBjZW50cmFsaXplIGNvbW1vblxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0PTI5Nz1iZXR3ZWVuIGRldmljZSBkcml2ZXIgc3BlY2lmaWMgY29kZSBhbmQgc2hhcmVkIGNvbW1vbiBjb2RlOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTM2NC1cXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q6MzY1OjQuIGBgbWlncmF0ZV92bWFfcGFnZXMoKWBgXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTM2Ni1cXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3Q9MjEyPUhNTSDliIfmjaLliLDnm7TmjqXkvb/nlKggc3RydWN0IHBhZ2Ug55So5LqO6K6+5aSH5YaF5a2Y77yM6L+Z5L2/5b6X5aSn5aSa5pWw5YaF5qC45Luj56CB6Lev5b6E5LiN55+l6YGT5beu5byC44CCXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0LTIxOC3nlLHkuo4gQ1BVIOaXoOazleebtOaOpeiuv+mXruiuvuWkh+WGheWtmO+8jOWboOatpOiuvuWkh+mpseWKqOeoi+W6j+W/hemhu+S9v+eUqOehrOS7tiBETUEg5oiW6K6+5aSH54m55a6a55qE5Yqg6L29L+WtmFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3Q6MjE5OuWCqOaMh+S7pOadpei/geenu+aVsOaNruOAgm1pZ3JhdGVfdm1hX3NldHVwKCnjgIFtaWdyYXRlX3ZtYV9wYWdlcygpIOWSjFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3QtMjIwLW1pZ3JhdGVfdm1hX2ZpbmFsaXplKCkg5Ye95pWw5peo5Zyo5L2/6amx5Yqo56iL5bqP5pu05piT5LqO57yW5YaZ5bm26ZuG5Lit6Leo6amx5Yqo56iL5bqP55qE6YCa55So5Luj56CB44CCXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0PTI0Mz1kZXZtX21lbXVubWFwX3BhZ2VzKCkg5ZKMIGRldm1fcmVsZWFzZV9tZW1fcmVnaW9uKCkg5b2T6LWE5rqQ5Y+v5Lul57uR5a6a5YiwIGBgc3RydWN0IGRldmljZWBgLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdC0yOTctXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdDoyOTg6NC4gYGBtaWdyYXRlX3ZtYV9wYWdlcygpYGBcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0LTI5OS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmMtNDktICogMS4ga3ZtLVxcdTAwM2VzcmN1IC0gUHJvdGVjdHMgS1ZNIG1lbXNsb3RzXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYzo1MDogKiAyLiBrdm0tXFx1MDAzZW1tLVxcdTAwM2VtbWFwX2xvY2sgLSBmaW5kX3ZtYSwgbWlncmF0ZV92bWFfcGFnZXMgYW5kIGhlbHBlcnMsIGtzbV9tYWR2aXNlXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy01MS0gKiAzLiBrdm0tXFx1MDAzZWFyY2gudXZtZW1fbG9jayAtIHByb3RlY3RzIHJlYWQvd3JpdGVzIHRvIHV2bWVtIHNsb3RzIHRodXMgYWN0aW5nXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jPTUxMz1zdGF0aWMgaW50IF9fa3ZtcHBjX3N2bV9wYWdlX291dChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmMtNTc4LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmM6NTc5OlxcdG1pZ3JhdGVfdm1hX3BhZ2VzKFxcdTAwMjZtaWcpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmMtNTgwLVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYz03NDA9c3RhdGljIGludCBrdm1wcGNfc3ZtX3BhZ2VfaW4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTc4Ny1cXHQqbWlnLmRzdCA9IG1pZ3JhdGVfcGZuKHBhZ2VfdG9fcGZuKGRwYWdlKSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYzo3ODg6XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNm1pZyk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy03ODktb3V0X2ZpbmFsaXplOlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYz0zOTQ9c3ZtX21pZ3JhdGVfdm1hX3RvX3ZyYW0oc3RydWN0IGtmZF9ub2RlICpub2RlLCBzdHJ1Y3Qgc3ZtX3JhbmdlICpwcmFuZ2UsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTQ1MS1cXHRyID0gc3ZtX21pZ3JhdGVfY29weV90b192cmFtKG5vZGUsIHByYW5nZSwgXFx1MDAyNm1pZ3JhdGUsIFxcdTAwMjZtZmVuY2UsIHNjcmF0Y2gsIHR0bV9yZXNfb2Zmc2V0KTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jOjQ1MjpcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2bWlncmF0ZSk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYy00NTMtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jPTY5Mz1zdm1fbWlncmF0ZV92bWFfdG9fcmFtKHN0cnVjdCBrZmRfbm9kZSAqbm9kZSwgc3RydWN0IHN2bV9yYW5nZSAqcHJhbmdlLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYy03NTUtXFx0XFx0XFx0XFx0ICAgIHNjcmF0Y2gsIG5wYWdlcyk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYzo3NTY6XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNm1pZ3JhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNzU3LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9NjE2PWludCBkcm1fcGFnZW1hcF9taWdyYXRlX3RvX2Rldm1lbShzdHJ1Y3QgZHJtX3BhZ2VtYXBfZGV2bWVtICpkZXZtZW1fYWxsb2NhdGlvbixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTgxNy1lcnJfYWJvcnRlZF9taWdyYXRpb246XFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM6ODE4OlxcdG1pZ3JhdGVfdm1hX3BhZ2VzKFxcdTAwMjZtaWdyYXRlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy04MTktXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYz0xMjE2PXN0YXRpYyBpbnQgX19kcm1fcGFnZW1hcF9taWdyYXRlX3RvX3JhbShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZhcyxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTEzMDktXFx0XFx0ZHJtX3BhZ2VtYXBfbWlncmF0aW9uX3VubG9ja19wdXRfcGFnZXMobnBhZ2VzLCBtaWdyYXRlLmRzdCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM6MTMxMDpcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2bWlncmF0ZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtMTMxMS1cXHRtaWdyYXRlX3ZtYV9maW5hbGl6ZShcXHUwMDI2bWlncmF0ZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYz0xODM9c3RhdGljIHZtX2ZhdWx0X3Qgbm91dmVhdV9kbWVtX21pZ3JhdGVfdG9fcmFtKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtMjY3LVxcdG5vdXZlYXVfZmVuY2VfbmV3KFxcdTAwMjZmZW5jZSwgZG1lbS1cXHUwMDNlbWlncmF0ZS5jaGFuKTtcXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYzoyNjg6XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNmFyZ3MpO1xcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTI2OS1cXHRub3V2ZWF1X2RtZW1fZmVuY2VfZG9uZShcXHUwMDI2ZmVuY2UpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM9NzgzPXN0YXRpYyB2b2lkIG5vdXZlYXVfZG1lbV9taWdyYXRlX2NodW5rKHN0cnVjdCBub3V2ZWF1X2RybSAqZHJtLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtODA5LVxcdG5vdXZlYXVfZmVuY2VfbmV3KFxcdTAwMjZmZW5jZSwgZHJtLVxcdTAwM2VkbWVtLVxcdTAwM2VtaWdyYXRlLmNoYW4pO1xcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jOjgxMDpcXHRtaWdyYXRlX3ZtYV9wYWdlcyhhcmdzKTtcXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy04MTEtXFx0bm91dmVhdV9kbWVtX2ZlbmNlX2RvbmUoXFx1MDAyNmZlbmNlKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oPTE1OD1zdHJ1Y3QgbWlncmF0ZV92bWEge1xcbi0tXFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtMTY1LVxcdCAqIG1pZ3JhdGVfdm1hX3NldHVwKCksIGFuZCBtdXN0IG5vdCBjaGFuZ2UgdGhlIGRzdCBhcnJheSBhZnRlclxcbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oOjE2NjpcXHQgKiBtaWdyYXRlX3ZtYV9wYWdlcygpIHJldHVybnMuXFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtMTY3LVxcdCAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg9MTkzPWludCBtaWdyYXRlX3ZtYV9zZXR1cChzdHJ1Y3QgbWlncmF0ZV92bWEgKmFyZ3MpO1xcbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oOjE5NDp2b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSk7XFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtMTk1LXZvaWQgbWlncmF0ZV92bWFfZmluYWxpemUoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKTtcXG4tLVxcbmxpYi90ZXN0X2htbS5jPTEwMDQ9c3RhdGljIHZtX2ZhdWx0X3QgZG1pcnJvcl9kZXZtZW1fZmF1bHRfYWxsb2NfYW5kX2NvcHkoc3RydWN0IG1pZ3JhdGVfdm1hICphcmdzLFxcbi0tXFxubGliL3Rlc3RfaG1tLmMtMTA3NS1cXHRcXHRcXHRcXHRcXHQvKiBDbGVhciByZW1haW5pbmcgZHN0IGVudHJpZXMgdG8gYXZvaWRcXG5saWIvdGVzdF9obW0uYzoxMDc2OlxcdFxcdFxcdFxcdFxcdCAqIG1pZ3JhdGVfdm1hX3BhZ2VzL2ZpbmFsaXplKCkgdXNpbmdcXG5saWIvdGVzdF9obW0uYy0xMDc3LVxcdFxcdFxcdFxcdFxcdCAqIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLlxcbi0tXFxubGliL3Rlc3RfaG1tLmM9MTEyMD1zdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19zeXN0ZW0oc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXFxuLS1cXG5saWIvdGVzdF9obW0uYy0xMTc1LVxcbmxpYi90ZXN0X2htbS5jOjExNzY6XFx0XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNmFyZ3MpO1xcbmxpYi90ZXN0X2htbS5jLTExNzctXFx0XFx0Y21kLVxcdTAwM2VjcGFnZXMgKz0gZG1pcnJvcl9zdWNjZXNzZnVsX21pZ3JhdGVkX3BhZ2VzKFxcdTAwMjZhcmdzKTtcXG4tLVxcbmxpYi90ZXN0X2htbS5jPTExODk9c3RhdGljIGludCBkbWlycm9yX21pZ3JhdGVfdG9fZGV2aWNlKHN0cnVjdCBkbWlycm9yICpkbWlycm9yLFxcbi0tXFxubGliL3Rlc3RfaG1tLmMtMTI0OC1cXHRcXHRkbWlycm9yX21pZ3JhdGVfYWxsb2NfYW5kX2NvcHkoXFx1MDAyNmFyZ3MsIGRtaXJyb3IpO1xcbmxpYi90ZXN0X2htbS5jOjEyNDk6XFx0XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNmFyZ3MpO1xcbmxpYi90ZXN0X2htbS5jLTEyNTAtXFx0XFx0ZG1pcnJvcl9taWdyYXRlX2ZpbmFsaXplX2FuZF9tYXAoXFx1MDAyNmFyZ3MsIGRtaXJyb3IpO1xcbi0tXFxubGliL3Rlc3RfaG1tLmM9MTY1Mz1zdGF0aWMgdm1fZmF1bHRfdCBkbWlycm9yX2Rldm1lbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTE3MTgtXFx0fVxcbmxpYi90ZXN0X2htbS5jOjE3MTk6XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNmFyZ3MpO1xcbmxpYi90ZXN0X2htbS5jLTE3MjAtXFx0LypcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9NjU5PXN0YXRpYyB2b2lkIG1pZ3JhdGVfdm1hX3VubWFwKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNjk5LSAqIHRoaXMgY2FuIHN0aWxsIGZhaWwsIGFuZCB0aHVzIGluc2lkZSB0aGUgZGV2aWNlIGRyaXZlciB5b3UgbXVzdCBjaGVjayBpZiB0aGVcXG5tbS9taWdyYXRlX2RldmljZS5jOjcwMDogKiBtaWdyYXRpb24gd2FzIHN1Y2Nlc3NmdWwgZm9yIHRob3NlIGVudHJpZXMgYWZ0ZXIgY2FsbGluZyBtaWdyYXRlX3ZtYV9wYWdlcygpLFxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzAxLSAqIGp1c3QgbGlrZSBmb3IgcmVndWxhciBtaWdyYXRpb24uXFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MDItICpcXG5tbS9taWdyYXRlX2RldmljZS5jOjcwMzogKiBBZnRlciB0aGF0LCB0aGUgY2FsbGVycyBtdXN0IGNhbGwgbWlncmF0ZV92bWFfcGFnZXMoKSB0byBnbyBvdmVyIGVhY2ggZW50cnlcXG5tbS9taWdyYXRlX2RldmljZS5jLTcwNC0gKiBpbiB0aGUgc3JjIGFycmF5IHRoYXQgaGFzIHRoZSBNSUdSQVRFX1BGTl9WQUxJRCBhbmQgTUlHUkFURV9QRk5fTUlHUkFURSBmbGFnXFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MDUtICogc2V0LiBJZiB0aGUgY29ycmVzcG9uZGluZyBlbnRyeSBpbiBkc3QgYXJyYXkgaGFzIE1JR1JBVEVfUEZOX1ZBTElEIGZsYWcgc2V0LFxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6NzA2OiAqIHRoZW4gbWlncmF0ZV92bWFfcGFnZXMoKSB0byBtaWdyYXRlIHN0cnVjdCBwYWdlIGluZm9ybWF0aW9uIGZyb20gdGhlIHNvdXJjZVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzA3LSAqIHN0cnVjdCBwYWdlIHRvIHRoZSBkZXN0aW5hdGlvbiBzdHJ1Y3QgcGFnZS4gIElmIGl0IGZhaWxzIHRvIG1pZ3JhdGUgdGhlXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTcxNC0gKlxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6NzE1OiAqIE9uY2UgbWlncmF0ZV92bWFfcGFnZXMoKSByZXR1cm5zIHRoZSBjYWxsZXIgbWF5IGluc3BlY3Qgd2hpY2ggcGFnZXMgd2VyZVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzE2LSAqIHN1Y2Nlc3NmdWxseSBtaWdyYXRlZCwgYW5kIHdoaWNoIHdlcmUgbm90LiAgU3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkIHBhZ2VzIHdpbGxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzE4LSAqXFxubW0vbWlncmF0ZV9kZXZpY2UuYzo3MTk6ICogSXQgaXMgc2FmZSB0byB1cGRhdGUgZGV2aWNlIHBhZ2UgdGFibGUgYWZ0ZXIgbWlncmF0ZV92bWFfcGFnZXMoKSBiZWNhdXNlXFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MjAtICogYm90aCBkZXN0aW5hdGlvbiBhbmQgc291cmNlIHBhZ2UgYXJlIHN0aWxsIGxvY2tlZCwgYW5kIHRoZSBtbWFwX2xvY2sgaXMgaGVsZFxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMDk4PXN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTYtICpcXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNTc6ICogRXF1aXZhbGVudCB0byBtaWdyYXRlX3ZtYV9wYWdlcygpLiBUaGlzIGlzIGNhbGxlZCB0byBtaWdyYXRlIHN0cnVjdCBwYWdlXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjU4LSAqIG1ldGEtZGF0YSBmcm9tIHNvdXJjZSBzdHJ1Y3QgcGFnZSB0byBkZXN0aW5hdGlvbi5cXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI2NT1FWFBPUlRfU1lNQk9MKG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKTtcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2Ny0vKipcXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNjg6ICogbWlncmF0ZV92bWFfcGFnZXMoKSAtIG1pZ3JhdGUgbWV0YS1kYXRhIGZyb20gc3JjIHBhZ2UgdG8gZHN0IHBhZ2VcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjktICogQG1pZ3JhdGU6IG1pZ3JhdGUgc3RydWN0IGNvbnRhaW5pbmcgYWxsIG1pZ3JhdGlvbiBpbmZvcm1hdGlvblxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjc0LSAqL1xcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI3NTp2b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzYte1xcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjc4LX1cXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzk6RVhQT1JUX1NZTUJPTChtaWdyYXRlX3ZtYV9wYWdlcyk7XFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjgwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OToyNy44MzI1MTQ3MjdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjczNTI1NjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBITU0gUGFnZSBNaWdyYXRpb24gRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZXhwb3J0ZWQgZnVuY3Rpb25zLCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLiBJdCdzIHByZXR0eSBjbGVhciB0aGV5J3JlIHJlbGF0ZWQgdG8gcGFnZSBtaWdyYXRpb24sIHNwZWNpZmljYWxseSBpbiBhIGhldGVyb2dlbmVvdXMgbWVtb3J5IG1hbmFnZW1lbnQgKEhNTSkgY29udGV4dC4gSSBzZWUgdGhleSdyZSB1c2VkIGFjcm9zcyBhIGZldyBrZXkgYXJlYXMsIHdoaWNoIGlzIGludGVyZXN0aW5nOiBgbGliL3Rlc3RfaG1tLmNgLCBgZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmNgLCBgZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmNgLCBgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuY2AsIGFuZCBldmVuIGluIHRoZSBQb3dlclBDIEtWTSBjb2RlIChgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uY2ApLiBUaGlzIHNwYW5zIGEgZGVjZW50IHJhbmdlIG9mIHN1YnN5c3RlbXMuXG5cbmBsaWIvdGVzdF9obW0uY2AgaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBleWUgYXMgYSB0ZXN0aW5nIGdyb3VuZCBmb3IgSE1NLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ20gdGhpbmtpbmcgdGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhleSdyZSB2ZXJpZnlpbmcgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvZiB0aG9zZSBtaWdyYXRpb24gcm91dGluZXMuIEFuZCB0aGUgZmFjdCB0aGF0IGl0J3MgZGVzaWduZWQgZm9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBtYWtlcyBwZXJmZWN0IHNlbnNlIOKAkyBhIGNvbnRyb2xsZWQgZW52aXJvbm1lbnQgaXMgaWRlYWwgZm9yIHRlc3RpbmcgbWVtb3J5IG1pZ3JhdGlvbiBhY3Jvc3MgZGlmZmVyZW50IGRldmljZXMuXG5cblNvLCBsZXQncyBkaXZlIGludG8gYGxpYi90ZXN0X2htbS5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgdGVzdCBpcyBlbmFibGVkLiBJJ2xsIGNoZWNrIGl0cyBidWlsZCBjb25maWd1cmF0aW9uIGFuZCB0aGUgc3BlY2lmaWMgdGVzdCBjYXNlcyB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBzY2VuYXJpb3MgdGhhdCBhcmUgYmVpbmcgdmFsaWRhdGVkIGZvciBwYWdlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIEhNTSBmcmFtZXdvcmsuIEdldHRpbmcgYSBoYW5kbGUgb24gdGhhdCB3aWxsIG9mZmVyIHZhbHVhYmxlIGluc2lnaHQgaW50byBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCwgdGhlIGtpbmRzIG9mIG1pZ3JhdGlvbnMgaXQgc3VwcG9ydHMsIGFuZCB3aGF0IGZlYXR1cmVzIGFyZSB0ZXN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwNzUsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjU5OjMyLjEwNjA0NTI5NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzUzNjAzMywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGVzdF9obW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjU5OjMyLjE1OTU5MDQ2OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjEzMzY2ODcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGVidWdnaW5nIHRoZSBLY29uZmlnIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBJJ20gdHJ5aW5nIHRvIHRyYWNrIGRvd24gd2hlcmUgdGhpcyBwYXJ0aWN1bGFyIG9wdGlvbiBpcyBkZWZpbmVkIG9yIGNvbnRyb2xsZWQgd2l0aGluIHRoZSBrZXJuZWwncyBLY29uZmlnIHN5c3RlbS4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoZSBjb250ZXh0LCBpcyB0byBqdW1wIGludG8gdGhlIG1vc3QgbGlrZWx5IHBsYWNlcy4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBgbGliL0tjb25maWcuZGVidWdgLiBJdCdzIGEgcHJpbWUgc3VzcGVjdCBmb3IgZGVidWctcmVsYXRlZCBvcHRpb25zLCBzbyBpdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSWYgSSBkb24ndCBmaW5kIHdoYXQgSSdtIGxvb2tpbmcgZm9yIHRoZXJlLCBJJ2xsIG1vdmUgb24gdG8gYG1tL0tjb25maWdgLiBNZW1vcnkgbWFuYWdlbWVudCBvcHRpb25zIG9mdGVuIGhhdmUgaW50ZXJkZXBlbmRlbmNpZXMgd2l0aCBkZWJ1Z2dpbmcgZmxhZ3MsIHNvIEkgY2FuJ3QgcnVsZSB0aGF0IG91dC4gVGhlbiwgYXMgYSBmaW5hbCByZXNvcnQgYmVmb3JlIGEgd2lkZXIgc2VhcmNoLCBJJ2xsIG5lZWQgdG8gcGVlayBhdCBgbGliL01ha2VmaWxlYC4gS2NvbmZpZyBvcHRpb25zIGNhbiBzb21ldGltZXMgYmUgaW5kaXJlY3RseSBjb250cm9sbGVkIHRocm91Z2ggTWFrZWZpbGUgbG9naWMsIHNvIHRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuIFRoZSBnb2FsIGlzIHRvIHF1aWNrbHkgcGlucG9pbnQgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSBvciBNYWtlZmlsZSBydWxlIHRoYXQgZ292ZXJucyB0aGlzIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiwgc28gSSBjYW4gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzLCBkZWZhdWx0cywgYW5kIHBvdGVudGlhbCBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2MTUsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OTozNS4zNzI5NjE5MjlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMjM5MzQzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0ZXN0X2htbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImxpYi9NYWtlZmlsZT0xMDI9b2JqLSQoQ09ORklHX1RFU1RfTE9DS1VQKSArPSB0ZXN0X2xvY2t1cC5vXFxubGliL01ha2VmaWxlOjEwMzpvYmotJChDT05GSUdfVEVTVF9ITU0pICs9IHRlc3RfaG1tLm9cXG5saWIvTWFrZWZpbGUtMTA0LW9iai0kKENPTkZJR19URVNUX0ZSRUVfUEFHRVMpICs9IHRlc3RfZnJlZV9wYWdlcy5vXFxuLS1cXG5saWIvdGVzdF9obW0uYy0zMi1cXG5saWIvdGVzdF9obW0uYzozMzojaW5jbHVkZSBcXFwidGVzdF9obW1fdWFwaS5oXFxcIlxcbmxpYi90ZXN0X2htbS5jLTM0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OTozNS44MDUzNjM0MzhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzMTkxMTE0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKlRyYWNpbmcgRG93biBgQ09ORklHX1RFU1RfSE1NYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGBDT05GSUdfVEVTVF9ITU1gIGlzIGRlZmluZWQuIFRoaXMgaXMgYSBjb21tb24gc3RhcnRpbmcgcG9pbnQgZm9yIGRlYnVnZ2luZyBvciB1bmRlcnN0YW5kaW5nIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGluIGtlcm5lbCBvciBlbWJlZGRlZCBzeXN0ZW1zIGNvZGUuIEknbGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgdG9vbHMgYW5kIHRlY2huaXF1ZXMuIEZpcnN0LCBJIG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSBzY29wZSDigJMgaXMgdGhpcyBhIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5bWJvbCwgYSB1c2VyLXNwYWNlIGRlZmluZSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZW4sIEkgd2lsbCBlbXBsb3kgdG9vbHMgbGlrZSBgZ3JlcGAsIGBmaW5kYCwgb3IgZXZlbiBgY3RhZ3MvY3Njb3BlYCAoaWYgSSBoYXZlIHRoZW0gc2V0IHVwKSB0byBkbyBhIHJlY3Vyc2l2ZSBzZWFyY2ggYWNyb3NzIHRoZSBwcm9qZWN0J3Mgc291cmNlIHRyZWUgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMuIEknbSBleHBlY3RpbmcgdGhpcyB0byBiZSBhIHN0cmFpZ2h0Zm9yd2FyZCBmaW5kLCBnaXZlbiBpdHMgbmFtaW5nIGNvbnZlbnRpb24uIFBlcmhhcHMgaXQncyBpbiBhIGAuY29uZmlnYCBmaWxlLCBvciBtYXliZSBpdCdzIGRlZmluZWQgd2l0aGluIGEgS2NvbmZpZyBmaWxlLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgaGllcmFyY2h5IGlmIGl04oCZcyBhIGNvbmZpZ3VyYXRpb24gc3ltYm9sLiBJZiBpdCdzIGEgcmVndWxhciBgI2RlZmluZWAsIGl0IGNvdWxkIHJlc2lkZSBpbiBhIGhlYWRlciBmaWxlIGFueXdoZXJlIGluIHRoZSBjb2RlLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZGlnIHVwLiBGcm9tIHRoZXJlLCBJJ2xsIHRoZW4gbW92ZSBvbiB0byB0cmFjaW5nIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGhvdyBpdCdzIHVzZWQgd2l0aGluIHRoZSBzeXN0ZW0uIFRoaXMgd2lsbCBwcm9iYWJseSBpbnZvbHZlIGZ1cnRoZXIgc2VhcmNoaW5nIHdpdGggc2ltaWxhciB0b29scy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTAzNiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjU5OjM5LjEzNzI3ODA0NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2MjM1NTQwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVEVTVF9ITU1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL0tjb25maWcuZGVidWc9MzM0Nj1jb25maWcgVEVTVF9NRU1JTklUXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzUzLVxcbmxpYi9LY29uZmlnLmRlYnVnOjMzNTQ6Y29uZmlnIFRFU1RfSE1NXFxubGliL0tjb25maWcuZGVidWctMzM1NS1cXHR0cmlzdGF0ZSBcXFwiVGVzdCBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OTo0MC44OTk2NDExMjNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIxNDQ3ODEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmN5IExhbmRzY2FwZSBvZiBURVNUX0hNTSoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIEZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkZXBlbmRlbmN5IHN0cnVjdHVyZSBmb3IgYFRFU1RfSE1NYC4gSSBrbm93IHRoaXMgaXMgYSBrZXkgY29tcG9uZW50LCBzbyB1bmRlcnN0YW5kaW5nIGl0cyByZWxpYW5jZSBvbiBvdGhlciBtb2R1bGVzIG9yIGxpYnJhcmllcyBpcyBjcnVjaWFsLiBJdCdzIG5vdCBqdXN0IGFib3V0IGEgc2ltcGxlIGxpc3QsIHRob3VnaC4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSAqbmF0dXJlKiBvZiB0aG9zZSBkZXBlbmRlbmNpZXMuIEFyZSB0aGV5IGhhcmQgcmVxdWlyZW1lbnRzLCBvciBhcmUgdGhlcmUgc29mdCBkZXBlbmRlbmNpZXMsIHBvdGVudGlhbGx5IGhhbmRsZWQgd2l0aCBncmFjZWZ1bCBkZWdyYWRhdGlvbiBvciBmYWxsYmFjayBtZWNoYW5pc21zPyBUaGF0J3MgZ29pbmcgdG8gZGljdGF0ZSBteSBhcHByb2FjaCB0byB0ZXN0aW5nIGFuZCBhbnkgcG90ZW50aWFsIHJlZmFjdG9yaW5nLiBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiBpc29sYXRlIGBURVNUX0hNTWAgZm9yIGZvY3VzZWQgZGVidWdnaW5nIG9yIGlmIEknbSBnb2luZyB0byBoYXZlIHRvIHdyYW5nbGUgYSB3aG9sZSBlY29zeXN0ZW0uIEFyZSB0aGVyZSBhbnkgY2lyY3VsYXIgZGVwZW5kZW5jaWVzIEkgaGF2ZSB0byB3b3JyeSBhYm91dD8gVGhhdCdzIGFsd2F5cyBhIGZ1biBoZWFkYWNoZS4gQW5kIG9mIGNvdXJzZSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSB2ZXJzaW9ucy4gQXJlIHRoZXJlIHZlcnNpb24gY29uc3RyYWludHMgYXQgcGxheT8gQXJlIHdlIGRlYWxpbmcgd2l0aCBhbnkgZGVwcmVjYXRlZCBkZXBlbmRlbmNpZXM/IFRoZXNlIGNvbnNpZGVyYXRpb25zIHJlYWxseSBkcml2ZSBob3cgSSBhcHByb2FjaCB0aGUgZGVzaWduIGFuZCBpbXBsZW1lbnRhdGlvbi4gVGltZSB0byBjcmFjayBvcGVuIHRoZSBkZXBlbmRlbmN5IGdyYXBoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDMzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDM6NTk6NDQuMTE0MTIyODg3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODQ5MTcyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVEVTVF9ITU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL0tjb25maWcuZGVidWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL0tjb25maWcuZGVidWc9MzM0Nj1jb25maWcgVEVTVF9NRU1JTklUXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzUzLVxcbmxpYi9LY29uZmlnLmRlYnVnOjMzNTQ6Y29uZmlnIFRFU1RfSE1NXFxubGliL0tjb25maWcuZGVidWctMzM1NS1cXHR0cmlzdGF0ZSBcXFwiVGVzdCBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OTo0NC4xNjI2MjA2MzRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg2MTAxOTYwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIERlYnVnZ2luZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBzcGVjaWZpYyBhYm91dCB0aGUgZGVidWdnaW5nIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgcHJvamVjdC4gR2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGUgY29kZWJhc2UsIG15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgZm9yIHRoZSBLY29uZmlnIGZpbGUuIEknbSB0aGlua2luZyB0aGUgcmVsZXZhbnQgc2VjdGlvbiBpcyBwcm9iYWJseSBsb2NhdGVkIGFyb3VuZCBsaW5lIDMzNTQgaW4gYGxpYi9LY29uZmlnLmRlYnVnYC4gVGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgbG93LWxldmVsIGRldGFpbHMgcmVsYXRlZCB0byBkZWJ1ZyBmZWF0dXJlcy4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIHRoZXJlLiBJJ20gYW50aWNpcGF0aW5nIHNvbWUgZ3JhbnVsYXIgY29udHJvbHMuLi4gaG9wZWZ1bGx5LCBpdCdzIHdlbGwtZG9jdW1lbnRlZCEgVGltZSB0byBkaWcgaW4gYW5kIHBpbnBvaW50IHRoZSBzcGVjaWZpYyBzZXR0aW5ncyBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MDQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OTo0Ny4wMjM2NDI3NThaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc5NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImxpYi9LY29uZmlnLmRlYnVnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMzNTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMzNTA6XFx0XFx0ICBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gdGVzdCBpbml0X29uX2FsbG9jIGFuZCBpbml0X29uX2ZyZWUgZmVhdHVyZXMuXFxuMzM1MTpcXHRcXG4zMzUyOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4zMzUzOlxcdFxcbjMzNTQ6XFx0Y29uZmlnIFRFU1RfSE1NXFxuMzM1NTpcXHRcXHR0cmlzdGF0ZSBcXFwiVGVzdCBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpXFxcIlxcbjMzNTY6XFx0XFx0ZGVwZW5kcyBvbiBUUkFOU1BBUkVOVF9IVUdFUEFHRVxcbjMzNTc6XFx0XFx0ZGVwZW5kcyBvbiBERVZJQ0VfUFJJVkFURVxcbjMzNTg6XFx0XFx0c2VsZWN0IEhNTV9NSVJST1JcXG4zMzU5OlxcdFxcdHNlbGVjdCBNTVVfTk9USUZJRVJcXG4zMzYwOlxcdFxcdGhlbHBcXG4zMzYxOlxcdFxcdCAgVGhpcyBpcyBhIHBzZXVkbyBkZXZpY2UgZHJpdmVyIHNvbGVseSBmb3IgdGVzdGluZyBITU0uXFxuMzM2MjpcXHRcXHQgIFNheSBNIGhlcmUgaWYgeW91IHdhbnQgdG8gYnVpbGQgdGhlIEhNTSB0ZXN0IG1vZHVsZS5cXG4zMzYzOlxcdFxcdCAgRG9pbmcgc28gd2lsbCBhbGxvdyB5b3UgdG8gcnVuIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3Qvdm0vaG1tLXRlc3RzLlxcbjMzNjQ6XFx0XFxuMzM2NTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuMzM2NjpcXHRcXG4zMzY3OlxcdGNvbmZpZyBURVNUX0ZSRUVfUEFHRVNcXG4zMzY4OlxcdFxcdHRyaXN0YXRlIFxcXCJUZXN0IGZyZWVpbmcgcGFnZXNcXFwiXFxuMzM2OTpcXHRcXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjU5OjQ3LjAyMzkyNDQwOFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzQ4MTgwMDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGlubmVyIG1vbm9sb2d1ZTpcblxuKipEZXBlbmRlbmN5IERlZXAgRGl2ZTogVEVTVF9ITU0gYW5kIERFVklDRV9QUklWQVRFKipcblxuQWxyaWdodCwgc28gYFRFU1RfSE1NYCBoYXMgYSBjb3VwbGUgb2YgZGVwZW5kZW5jaWVzLCBuYW1lbHkgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBhbmQgYERFVklDRV9QUklWQVRFYC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgdGhlIGNvbm5lY3Rpb24gd2l0aCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIG1ha2VzIHNlbnNlOyBwZXJmb3JtYW5jZSBvZnRlbiBoaW5nZXMgb24gbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHRoYXQncyBhIGNvbW1vbiBwYWlyaW5nLiBCdXQgYERFVklDRV9QUklWQVRFYC4uLiB0aGF0J3MgdGhlIG1vcmUgaW50cmlndWluZyBvbmUgaW4gdGhpcyBjYXNlLiBMZXQncyBkaWcgaW50byB0aGF0IGJpdCBmaXJzdCwgc2luY2UgaXQncyBsZXNzIG9idmlvdXMgd2h5IHRoYXQgaXMgYSBkZXBlbmRlbmN5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHJvbGUgYERFVklDRV9QUklWQVRFYCBwbGF5cyBoZXJlIGFuZCB3aHkgaXRzIHByZXNlbmNlIG9yIGFic2VuY2Ugd291bGQgaGF2ZSBhIGRpcmVjdCBpbXBhY3Qgb24gdGhlIGV4ZWN1dGlvbiBvciB0ZXN0YWJpbGl0eSBvZiBgVEVTVF9ITU1gLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gb3IgdGhlIGNvZGUgZGlyZWN0bHkgdG8gY29uZmlybS4gVGhpcydsbCByZXF1aXJlIG1lIHRvIGludmVzdGlnYXRlIHRoZSBkZXRhaWxzIG9mIGBERVZJQ0VfUFJJVkFURWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzA4LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OTo1MC4zNzIxMDc3NzRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDE5NjQxNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERFVklDRV9QUklWQVRFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTI2ND1jb25maWcgR0VUX0ZSRUVfUkVHSU9OXFxuLS1cXG5tbS9LY29uZmlnLTEyNjYtXFxubW0vS2NvbmZpZzoxMjY3OmNvbmZpZyBERVZJQ0VfUFJJVkFURVxcbm1tL0tjb25maWctMTI2OC1cXHRib29sIFxcXCJVbmFkZHJlc3NhYmxlIGRldmljZSBtZW1vcnkgKEdQVSBtZW1vcnksIC4uLilcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjU5OjUyLjAxNDA3ODY4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjIxNDk1MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgcGFydGljdWxhciBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBoYW5kbGVkLiBMZXQncyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGBtbS9LY29uZmlnYC4gSXQncyBhIGtleSBmaWxlIGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0sIGFuZCBhcm91bmQgbGluZSAxMjY3IHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHBsYWNlIHRvIGJlZ2luLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb3IgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIGZvciB3aGF0ZXZlciBvcHRpb24gd2UncmUgZGVhbGluZyB3aXRoLiBLbm93aW5nIHRoZSBzcGVjaWZpYyBsaW5lIHJhbmdlIGhlbHBzIG1lIG5hdmlnYXRlIGVmZmljaWVudGx5IGFuZCBhdm9pZCBnZXR0aW5nIGxvc3QgaW4gdGhlIGJyb2FkZXIgY29uZmlndXJhdGlvbiBzcGFjZS4gSSdtIGhvcGluZyBpdCdzIGEgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgZGVmaW5pdGlvbiDigJMgbWF5YmUgYSBzaW1wbGUgYGNvbmZpZ2AgYmxvY2sgd2l0aCBzb21lIGRlcGVuZGVuY2llcyBvciBhIHRyaXN0YXRlIG9wdGlvbi4gT3IgcGVyaGFwcyB0aGlzIGFyZWEgZGVhbHMgd2l0aCBob3cgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlIHNwZWNpZmljIG9wdGlvbiBpcyBjb25maWd1cmVkLiBFaXRoZXIgd2F5LCB0aGlzIHNob3VsZCBiZSB0aGUgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbidzIGltcGFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2NTMsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OTo1NS4xMzYyMzA4NTVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkxMDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTI2MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTI2MDpcXHRjb25maWcgSE1NX01JUlJPUlxcbjEyNjE6XFx0XFx0Ym9vbFxcbjEyNjI6XFx0XFx0ZGVwZW5kcyBvbiBNTVVcXG4xMjYzOlxcdFxcbjEyNjQ6XFx0Y29uZmlnIEdFVF9GUkVFX1JFR0lPTlxcbjEyNjU6XFx0XFx0Ym9vbFxcbjEyNjY6XFx0XFxuMTI2NzpcXHRjb25maWcgREVWSUNFX1BSSVZBVEVcXG4xMjY4OlxcdFxcdGJvb2wgXFxcIlVuYWRkcmVzc2FibGUgZGV2aWNlIG1lbW9yeSAoR1BVIG1lbW9yeSwgLi4uKVxcXCJcXG4xMjY5OlxcdFxcdGRlcGVuZHMgb24gWk9ORV9ERVZJQ0VcXG4xMjcwOlxcdFxcdHNlbGVjdCBHRVRfRlJFRV9SRUdJT05cXG4xMjcxOlxcdFxcbjEyNzI6XFx0XFx0aGVscFxcbjEyNzM6XFx0XFx0ICBBbGxvd3MgY3JlYXRpb24gb2Ygc3RydWN0IHBhZ2VzIHRvIHJlcHJlc2VudCB1bmFkZHJlc3NhYmxlIGRldmljZVxcbjEyNzQ6XFx0XFx0ICBtZW1vcnk7IGkuZS4sIG1lbW9yeSB0aGF0IGlzIG9ubHkgYWNjZXNzaWJsZSBmcm9tIHRoZSBkZXZpY2UgKG9yXFxuMTI3NTpcXHRcXHQgIGdyb3VwIG9mIGRldmljZXMpLiBZb3UgbGlrZWx5IGFsc28gd2FudCB0byBzZWxlY3QgSE1NX01JUlJPUi5cXG4xMjc2OlxcdFxcbjEyNzc6XFx0Y29uZmlnIFZNQVBfUEZOXFxuMTI3ODpcXHRcXHRib29sXFxuMTI3OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDM6NTk6NTUuMTM2NDIyOTk1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NjIxMzI0NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzczpcblxuKipEZXBlbmRlbmN5IENoZWNrOiBEaXZpbmcgaW50byBab25lX0RldmljZSoqXG5cbk9rYXksIHNvIEkndmUgaGl0IGEgcG9pbnQgd2hlcmUgbXkgbWVudGFsIG1vZGVsIG9mIHRoZSBzeXN0ZW0gcmVxdWlyZXMgbWUgdG8gdW5kZXJzdGFuZCBgREVWSUNFX1BSSVZBVEVgLiBCdXQgSSBrbm93IGBERVZJQ0VfUFJJVkFURWAgcmVsaWVzIG9uIGBaT05FX0RFVklDRWAuICBUaGVyZWZvcmUsIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGBaT05FX0RFVklDRWAuICBJIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIHRoYXQgbW9kdWxlIG9yIGNvbmNlcHQgKmZpcnN0Ki4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgcmV2aWV3IGV2ZXJ5dGhpbmcgSSBrbm93IChvciwgbW9yZSBsaWtlbHksIG5lZWQgdG8gcmVsZWFybikgYWJvdXQgYFpPTkVfREVWSUNFYCBiZWZvcmUgSSBjYW4gbW92ZSBmb3J3YXJkIHdpdGggYSB0cnVseSBpbmZvcm1lZCBncmFzcCBvZiBgREVWSUNFX1BSSVZBVEVgLiBMZXQncyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTQ4LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OTo1Ny45OTg1NTg2MThaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3Mjk3NzMyMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFpPTkVfREVWSUNFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTIzMT1jb25maWcgWk9ORV9ETUEzMlxcbi0tXFxubW0vS2NvbmZpZy0xMjM1LVxcbm1tL0tjb25maWc6MTIzNjpjb25maWcgWk9ORV9ERVZJQ0VcXG5tbS9LY29uZmlnLTEyMzctXFx0Ym9vbCBcXFwiRGV2aWNlIG1lbW9yeSAocG1lbSwgSE1NLCBldGMuLi4pIGhvdHBsdWcgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDM6NTk6NTkuNzI4MzQxODk4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTg4NTg1NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIE1hemUqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYG1tL0tjb25maWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSdtIGFpbWluZyBmb3IgYXJvdW5kIGxpbmUgMTIzNi4gR2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLCBJIHN1c3BlY3QgdGhhdCBzZWN0aW9uIG1pZ2h0IGhvbGQgY2x1ZXMgYWJvdXQgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbiBvciByZWxhdGVkIGRlcGVuZGVuY2llcyBJJ3ZlIGJlZW4gY29uc2lkZXJpbmcuIEknbSBleHBlY3RpbmcgdG8gZmluZCBpbmZvcm1hdGlvbiBwZXJ0YWluaW5nIHRvIHNvbWUgbWVtb3J5IG1hbmFnZW1lbnQgZmVhdHVyZSBvciBhIGNvbmZpZ3VyYXRpb24ga25vYiB0aGF0IG1pZ2h0IGJlIGNydWNpYWwgdG8gc29tZSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gSSdtIHdvcmtpbmcgdGhyb3VnaCwgb3IgcG9zc2libHkgZXZlbiBkZWJ1Z2dpbmcuIExldCdzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGhhcyB0byBzYXkhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDIzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDQ6MDA6MDIuNzg3MjA0MjU4WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyMzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEyMzA6XFx0XFxuMTIzMTpcXHRjb25maWcgWk9ORV9ETUEzMlxcbjEyMzI6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBETUEzMiB6b25lXFxcIiBpZiBBUkNIX0hBU19aT05FX0RNQV9TRVRcXG4xMjMzOlxcdFxcdGRlcGVuZHMgb24gIVg4Nl8zMlxcbjEyMzQ6XFx0XFx0ZGVmYXVsdCB5IGlmIEFSTTY0XFxuMTIzNTpcXHRcXG4xMjM2OlxcdGNvbmZpZyBaT05FX0RFVklDRVxcbjEyMzc6XFx0XFx0Ym9vbCBcXFwiRGV2aWNlIG1lbW9yeSAocG1lbSwgSE1NLCBldGMuLi4pIGhvdHBsdWcgc3VwcG9ydFxcXCJcXG4xMjM4OlxcdFxcdGRlcGVuZHMgb24gTUVNT1JZX0hPVFBMVUdcXG4xMjM5OlxcdFxcdGRlcGVuZHMgb24gTUVNT1JZX0hPVFJFTU9WRVxcbjEyNDA6XFx0XFx0ZGVwZW5kcyBvbiBTUEFSU0VNRU1fVk1FTU1BUFxcbjEyNDE6XFx0XFx0c2VsZWN0IFhBUlJBWV9NVUxUSVxcbjEyNDI6XFx0XFxuMTI0MzpcXHRcXHRoZWxwXFxuMTI0NDpcXHRcXHQgIERldmljZSBtZW1vcnkgaG90cGx1ZyBzdXBwb3J0IGFsbG93cyBmb3IgZXN0YWJsaXNoaW5nIHBtZW0sXFxuMTI0NTpcXHRcXHQgIG9yIG90aGVyIGRldmljZSBkcml2ZXIgZGlzY292ZXJlZCBtZW1vcnkgcmVnaW9ucywgaW4gdGhlXFxuMTI0NjpcXHRcXHQgIG1lbW1hcC4gVGhpcyBhbGxvd3MgcGZuX3RvX3BhZ2UoKSBsb29rdXBzIG9mIG90aGVyd2lzZVxcbjEyNDc6XFx0XFx0ICBcXFwiZGV2aWNlLXBoeXNpY2FsXFxcIiBhZGRyZXNzZXMgd2hpY2ggaXMgbmVlZGVkIGZvciBEQVgsIFBDSV9QMlBETUEsIGFuZFxcbjEyNDg6XFx0XFx0ICBERVZJQ0VfUFJJVkFURSBmZWF0dXJlcyBhbW9uZyBvdGhlcnMuXFxuMTI0OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDQ6MDA6MDIuNzg3MzU0MjE4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNDE0NjE0MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgRGV2aWNlIFBhZ2UgTWlncmF0aW9uIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgLiBUaGlzIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgdGhhdCBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYW5kIGBtaWdyYXRlX3ZtYV9wYWdlc2AsIGFuZCB0aGUgcGF0Y2ggaXRzZWxmIGFkZHMgc29tZSBgVk1fV0FSTl9PTl9PTkNFYCBhbmQgbWFwcGluZyBjb2RlLiBMb29rcyBsaWtlIHRoaXMgaXMgYWxsIGFib3V0IGRldmljZSBwYWdlIG1pZ3JhdGlvbi4gSSBjYW4gc2VlIHRoYXQgdGhpcyBpcyByZWxhdGVkIHRvIHRoZSBgVEVTVF9ITU1gIHBzZXVkbyBkZXZpY2UgZHJpdmVyLCB3aGljaCBpcyBncmVhdCBiZWNhdXNlIHRoYXQgYWxsb3dzIHVzIHRvIHRlc3QgSE1NIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyDigJMgaWRlYWwgZm9yIGZ1enppbmcuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBjb2RlIGZsb3cuIFNpbmNlIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBpcyBzdGF0aWMsIEknbSBnb2luZyB0byBmb2N1cyBvbiBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLCB3aGljaCBhcmUgdGhlIGVudHJ5IHBvaW50cy4gSSd2ZSBjb25maXJtZWQgdGhleSBhcmUgKmV4cG9ydGVkKiB2aWEgYEVYUE9SVF9TWU1CT0xgLCBzbyBJIHNob3VsZCBiZSBhYmxlIHRvIGdldCBhdCB0aGVtLlxuXG5MZXQgbWUgY2hlY2sgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgY2FsbCBzaXRlcyBpbiBgbW0vbWlncmF0ZV9kZXZpY2UuY2AgdGhhdCBjYWxsIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYnV0IHNvIGZhciBpdCBsb29rcyBsaWtlIGp1c3QgdGhvc2UgdHdvLlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIG5lY2Vzc2FyeSBjb25maWdzLiBJJ3ZlIGdvdDogYFRFU1RfSE1NYCwgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCwgYERFVklDRV9QUklWQVRFYCwgYFpPTkVfREVWSUNFYCwgYE1FTU9SWV9IT1RQTFVHYCwgYE1FTU9SWV9IT1RSRU1PVkVgLCBhbmQgYFNQQVJTRU1FTV9WTUVNTUFQYC4gSXQgbG9va3MgbGlrZSBgVEVTVF9ITU1gIGlzIHRoZSBjb3JlIGRyaXZlciBmb3IgdGhlIGNvZGUsIGl0IGRlcGVuZHMgb24gYEhNTV9NSVJST1JgIGFuZCBgTU1VX05PVElGSUVSYCwgYW5kIGZ1cnRoZXIgZGVwZW5kcyBvbiBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGFuZCBgREVWSUNFX1BSSVZBVEVgLiBgREVWSUNFX1BSSVZBVEVgIGRlcGVuZHMgb24gYFpPTkVfREVWSUNFYCwgd2hpY2ggaXRzZWxmIGRlcGVuZHMgb24gdGhlIHN0YW5kYXJkIGNvbmZpZ3M6IGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYW5kIGBTUEFSU0VNRU1fVk1FTU1BUGAuIEV4Y2VsbGVudCwgdGhlc2UgbG9vayBmYWlybHkgc3RhbmRhcmQuXG5cbkZpbmFsbHksIEkgbmVlZCB0byBjb25maXJtIHRoYXQgZW5hYmxpbmcgYERFVklDRV9QUklWQVRFYCBjb21waWxlcyBpbiBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLiBJZiB0aGF0IGFsbCBjaGVja3Mgb3V0LCBJJ20gcmVhZHkgdG8gYmVnaW4gZnV6emluZyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTE5MzcsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNDowMDoxMC4xMjg4MTk1NTNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNDUwNjY5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtaWdyYXRlX2RldmljZS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL01ha2VmaWxlPTk5PW9iai0kKENPTkZJR19OVU1BKSArPSBtZW1vcnktdGllcnMub1xcbm1tL01ha2VmaWxlOjEwMDpvYmotJChDT05GSUdfREVWSUNFX01JR1JBVElPTikgKz0gbWlncmF0ZV9kZXZpY2Uub1xcbm1tL01ha2VmaWxlLTEwMS1vYmotJChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpICs9IGh1Z2VfbWVtb3J5Lm8ga2h1Z2VwYWdlZC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA0OjAwOjEwLjU2MzMzMzc0MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjgwNjI5MjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBEZXZpY2UgTWlncmF0aW9uIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBgQ09ORklHX0RFVklDRV9NSUdSQVRJT05gIGhhcyBwb3BwZWQgdXAgYWdhaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzY29wZSBhbmQgaW1wbGljYXRpb25zLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEknbSBnb2luZyB0byBxdWlja2x5IHRyYWNlIGl0cyBkZWZpbml0aW9uLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHZhcmlvdXMgYnVpbGQgY29uZmlndXJhdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBJJ20gZmFtaWxpYXIgd2l0aCBpbiB0aGUgc3lzdGVtLCBhbmQgd2hlcmUgdGhpcyBtaWdyYXRpb24gc3VwcG9ydCBtaWdodCBiZSBjb25kaXRpb25hbGx5IGVuYWJsZWQuIElzIGl0IGluIHRoZSBjb3JlIGtlcm5lbCBjb25maWcsIGEgcGxhdGZvcm0tc3BlY2lmaWMgb3ZlcmxheSwgb3IgcGVyaGFwcyB3aXRoaW4gYSBkcml2ZXIgbW9kdWxlPyBVbmRlcnN0YW5kaW5nIGl0cyBjb250ZXh0IHdpbGwgaW1tZWRpYXRlbHkgaW5mb3JtIGhvdyBpdCB3aWxsIGFmZmVjdCB0aGUgcnVudGltZSBiZWhhdmlvciBvZiBkZXZpY2VzIGluIHRoZSBwbGF0Zm9ybS4gR290dGEgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMwNjIsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNDowMDoxMy4yNDM5NjYyNjRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NjUyNzgzODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERFVklDRV9NSUdSQVRJT05cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz02OTY9Y29uZmlnIE1JR1JBVElPTlxcbi0tXFxubW0vS2NvbmZpZy02OTktXFxubW0vS2NvbmZpZzo3MDA6Y29uZmlnIERFVklDRV9NSUdSQVRJT05cXG5tbS9LY29uZmlnLTcwMS1cXHRkZWZfYm9vbCBNSUdSQVRJT04gXFx1MDAyNlxcdTAwMjYgWk9ORV9ERVZJQ0VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDQ6MDA6MTUuMDA5MjUwODQyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NjMxOTU1OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIGBERVZJQ0VfTUlHUkFUSU9OYCBmdW5jdGlvbmFsaXR5LiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgaXQncyBnYXRlZCBieSBib3RoIGBNSUdSQVRJT05gIGFuZCBgWk9ORV9ERVZJQ0VgLiBgTUlHUkFUSU9OYCBpcyBhbG1vc3QgYWx3YXlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgc28gYFpPTkVfREVWSUNFYCBpcyByZWFsbHkgdGhlIGNydXggb2YgdGhlIG1hdHRlci5cblxuTm93LCBgVEVTVF9ITU1gIHNlZW1zIHBhcnRpY3VsYXJseSByZWxldmFudCwgYW5kIGl0IGhhcyBhIGNhc2NhZGluZyBkZXBlbmRlbmN5IOKAkyBpdCBoaW5nZXMgb24gYERFVklDRV9QUklWQVRFYCwgd2hpY2ggaW4gdHVybiBoaW5nZXMgb24gYFpPTkVfREVWSUNFYC4gVGhhdCdzIGltcG9ydGFudC4gVGhpcyBtZWFucyB0aGF0IGVuYWJsaW5nIGBURVNUX0hNTWAgZWZmZWN0aXZlbHkgcHVsbHMgaW4gYERFVklDRV9QUklWQVRFYCBhbmQsIG1vc3QgaW1wb3J0YW50bHksIHRoZSBjb3JlIGBaT05FX0RFVklDRWAsIHdoaWNoIHRoZW4gbmVhdGx5IGJyaW5ncyBgREVWSUNFX01JR1JBVElPTmAgaW50byB0aGUgcGljdHVyZS5cblxuTGV0J3MgZGl2ZSBpbnRvIGBsaWIvS2NvbmZpZy5kZWJ1Z2AgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBgVEVTVF9ITU1gIGNvbmZpZy4gSSBzZWUgaXQncyBhIHRyaXN0YXRlLCBzbyBpdCBjYW4gYmUgbW9kdWxhcml6ZWQsIGJ1dCBpZiBJIHdhbnQgaXQgc3RhdGljYWxseSBsaW5rZWQsIEkganVzdCBuZWVkIHRvIGV4cGxpY2l0bHkgc2V0IGl0LlxuXG5CZWZvcmUgSSBtb3ZlIG9uLCBsZXQncyB2ZXJpZnkgdGhvc2UgZGVwZW5kZW5jaWVzIG9mIGBURVNUX0hNTWAgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIG9mIGV2ZXJ5dGhpbmcgSSd2ZSBzYWlkLiBJdCBkZXBlbmRzIG9uIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGBERVZJQ0VfUFJJVkFURWAsIGBaT05FX0RFVklDRWAsIGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYW5kIGBTUEFSU0VNRU1fVk1FTU1BUGAuIEkgY2FuIGFkZCBgVEVTVF9ITU1gLCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCBgREVWSUNFX1BSSVZBVEVgIGFuZCBgWk9ORV9ERVZJQ0VgIHRvIGBFbmFibGVDb25maWdzYCwgc28gSSB0aGluayBJIHNob3VsZCBiZSBnb29kLlxuXG5MZXQgbWUgdGFrZSBhIGxvb2sgYXQgdGhlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzLiBMZXQncyBzZWUuLi4gSSd2ZSBnb3QgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgYW5kIGBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb2AuIEl0IGxvb2tzIGxpa2UgYG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvYCBjYWxscyBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCBzbyBpdCdzIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLlxuXG5Pa2F5LCBsZXQncyBjaGVjayBgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9gLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMzIxLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA0OjAwOjIwLjc3MjQ0OTE2NFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyODIzNDQ4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9ndXAuYz0yMzIxPW1pZ3JhdGVfbG9uZ3Rlcm1fdW5waW5uYWJsZV9mb2xpb3Moc3RydWN0IGxpc3RfaGVhZCAqbW92YWJsZV9mb2xpb19saXN0LFxcbi0tXFxubW0vZ3VwLmMtMjMzOS1cXG5tbS9ndXAuYzoyMzQwOlxcdFxcdFxcdGlmIChtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyhmb2xpbykpIHtcXG5tbS9ndXAuYy0yMzQxLVxcdFxcdFxcdFxcdHJldCA9IC1FQlVTWTtcXG4tLVxcbm1tL2ludGVybmFsLmg9MTU4ND12b2lkIGZyZWVfem9uZV9kZXZpY2VfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbyk7XFxubW0vaW50ZXJuYWwuaDoxNTg1OmludCBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcXG5tbS9pbnRlcm5hbC5oLTE1ODYtXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTEwOTg9c3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTEyNy1cXHRcXHRcXHQgKiBUaGUgb25seSB0aW1lIHRoZXJlIGlzIG5vIHZtYSBpcyB3aGVuIGNhbGxlZCBmcm9tXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMTI4OlxcdFxcdFxcdCAqIG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvKCkuIEhvd2V2ZXIgdGhpcyBpc24ndFxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTEyOS1cXHRcXHRcXHQgKiBjYWxsZWQgaWYgdGhlIHBhZ2UgY291bGQgbm90IGJlIHVubWFwcGVkLlxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz0xNDYxPUVYUE9SVF9TWU1CT0wobWlncmF0ZV9kZXZpY2VfcGZucyk7XFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTE0NjctICovXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxNDY4OmludCBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTQ2OS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA0OjAwOjIyLjUwMDY5MDE0NFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDE0NzI2Nzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIERldmljZSBNaWdyYXRpb24gQ29kZSBhbmQgUmVsZXZhbnQgQ29uZmlndXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGNvZGUsIGFuZCB0aGUga2V5IGVudHJ5IHBvaW50IGZvciB0aGlzIGRldmljZSBtaWdyYXRpb24gc3R1ZmYgYXBwZWFycyB0byBiZSBgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9gLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgbWlncmF0ZV9sb25ndGVybV91bnBpbm5hYmxlX2ZvbGlvc2AgaW4gYG1tL2d1cC5jYC4gVGhhdCdzIGEgc29saWQgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZy4gVGhlIHJlbGF0ZWQgZnVuY3Rpb25zIG9mIGludGVyZXN0IGhlcmUgYXJlIGNsZWFybHkgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgYW5kLCBvZiBjb3Vyc2UsIGBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb2AuXG5cbk15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gc2VlIGlmIGBURVNUX0hNTWAgZGlyZWN0bHkgaW1wYWN0cyBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCBhbmQgaXQgbG9va3MgbGlrZSBpdCBkb2VzISBUaGUgYGRtaXJyb3JfZGV2aWNlX2V2aWN0X2NodW5rYCBjYWxscyBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLiBUaGVuIHRoZXJlIGFyZSBjYWxscyB0byBgbWlncmF0ZV92bWFfcGFnZXNgIGZyb20gYGRtaXJyb3JfbWlncmF0ZV90b19zeXN0ZW1gLCBgZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZWAgYW5kIGBkbWlycm9yX2Rldm1lbV9mYXVsdGAuIFNvLCB5ZWFoLCBlbmFibGluZyBgVEVTVF9ITU1gIGlzIGRlZmluaXRlbHkgdGhlIHdheSB0byBnby5cblxuTm93LCBsZXQncyBjaXJjbGUgYmFjayB0byB0aGUgcGF0Y2ggaW4gcXVlc3Rpb24uIEl0IGZvY3VzZXMgb24gaG93IGBucmAgaXMgcmVzZXQgd2l0aGluIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYC4gSXQncyBmaXhpbmcgYSBidWcgd2hlcmUgYG5yYCB3YXNuJ3QgYmVpbmcgY29ycmVjdGx5IHJlc2V0IGFmdGVyIGEgZm9saW8gc3BsaXQsIHdoaWNoIG1lYW5zIHdlIHdlcmUgcG90ZW50aWFsbHkgcHJvY2Vzc2luZyB0aGUgd3JvbmcgbnVtYmVyIG9mIHBhZ2VzLiBJdCBhbHNvIGFkZHMgYSBjcnVjaWFsIGBtYXBwaW5nID0gZm9saW9fbWFwcGluZyhmb2xpbyk7YCBjYWxsIGJlZm9yZSBgZm9saW9fbWlncmF0ZV9tYXBwaW5nYCBiZWNhdXNlIGBmb2xpb19mcmVlX3N3YXAoKWAgbWlnaHQgaGF2ZSByZW1vdmVkIHRoZSBmb2xpbyBmcm9tIHRoZSBzd2FwIGNhY2hlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGVlcCB3aXRoaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIGRldmljZSBtaWdyYXRpb24gcGF0aHMsIHNvLCB5ZWFoLCBJJ20gbWFya2luZyB0aGlzIGFzIGBXb3J0aEZ1enppbmcgPSB0cnVlYC5cblxuSnVzdCB0byByZWNhcCB0aGUgaW1wb3J0YW50IHN5bWJvbHM6IGBtaWdyYXRlX2RldmljZV9wYWdlc2AsIGBtaWdyYXRlX3ZtYV9wYWdlc2AsIGFuZCBgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9gLlxuXG5BbmQgbXkgdGFyZ2V0IGNvbmZpZ3VyYXRpb25zIG5lZWQgdG8gYmU6IGBURVNUX0hNTWAsIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGBERVZJQ0VfUFJJVkFURWAsIGFuZCBgWk9ORV9ERVZJQ0VgLlxuXG5TaW5jZSBgVEVTVF9ITU1gIGRlcGVuZHMgb24gdGhlIG90aGVycywgc3BlY2lmaWNhbGx5IGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgYW5kIGBERVZJQ0VfUFJJVkFURWAsIHdpdGggYERFVklDRV9QUklWQVRFYCBuZWVkaW5nIGBaT05FX0RFVklDRWAsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhvc2UgYXJlIGVuYWJsZWQuIGBaT05FX0RFVklDRWAgYWxzbyBoYXMgZGVwZW5kZW5jaWVzIG9uIGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYW5kIGBTUEFSU0VNRU1fVk1FTU1BUGAuIEknbGwgcHJvYmFibHkgaW5jbHVkZSBgTUVNT1JZX0hPVFBMVUdgIGFuZCBgTUVNT1JZX0hPVFJFTU9WRWAgdG8gYmUgc2FmZSwgc28gSSdsbCBjaGVjayB0aG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ0NzUsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDQ6MDA6MzAuNTE1NDIxODA4WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzg3MDgxMzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNRU1PUllfSE9UUExVR1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTUxOT1jb25maWcgQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUdcXG4tLVxcbm1tL0tjb25maWctNTIyLSMgZXZlbnR1YWxseSwgd2UgY2FuIGhhdmUgdGhpcyBvcHRpb24ganVzdCAnc2VsZWN0IFNQQVJTRU1FTSdcXG5tbS9LY29uZmlnOjUyMzptZW51Y29uZmlnIE1FTU9SWV9IT1RQTFVHXFxubW0vS2NvbmZpZy01MjQtXFx0Ym9vbCBcXFwiTWVtb3J5IGhvdHBsdWdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA0OjAwOjMyLjMwMjUwOTI1NloiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjQ1NzI1Njg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipNZW1vcnkgSG90LVJlbW92ZSBJbnZlc3RpZ2F0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gRmlyc3Qgb3JkZXIgb2YgYnVzaW5lc3M6ICpNRU1PUllfSE9UUkVNT1ZFKi4gVGhhdCdzIHdoZXJlIHdlIG5lZWQgdG8gc3RhcnQuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIFdoYXQncyBwcm9tcHRpbmcgdGhpcyBjaGVjaz8gSXMgaXQgYSBzcGVjaWZpYyBlcnJvciwgYSBwZXJmb3JtYW5jZSBhbm9tYWx5LCBvciBqdXN0IGdlbmVyYWwgY3VyaW9zaXR5IGFib3V0IG1lbW9yeSBtYW5hZ2VtZW50IG9uIHRoaXMgcGxhdGZvcm0/IFRoZSBnb2FsLCBvZiBjb3Vyc2UsIGlzIHRvIGRldGVybWluZSB0aGUgc3RhdGUgb2YgaG90LXJlbW92ZSBjYXBhYmlsaXRpZXMuIEFyZSB0aGV5IGVuYWJsZWQ/IFByb3Blcmx5IGNvbmZpZ3VyZWQ/IEZ1bmN0aW9uaW5nIGFzIGV4cGVjdGVkPyBNeSBleHBlcnQgaW50dWl0aW9uIGFscmVhZHkgc3VnZ2VzdHMgYSBmZXcgcG9zc2libGUgYXJlYXMgdG8gaW52ZXN0aWdhdGUsIGRlcGVuZGluZyBvbiB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggdGhpcyBpcyB0YWtpbmcgcGxhY2UuIElzIHRoaXMgb24gYmFyZSBtZXRhbCwgdmlydHVhbGl6ZWQsIGluIGEgc3BlY2lmaWMgY2xvdWQgcHJvdmlkZXI/IEVhY2ggaGFzIGl0cyBvd24gbnVhbmNlcyB3aXRoIGhvdC1yZW1vdmUuIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgZnVuZGFtZW50YWxzIGJlZm9yZSBleHBsb3JpbmcgYW55IHBvdGVudGlhbCBpc3N1ZXMgb3IgYXZlbnVlcyBmb3Igb3B0aW1pemF0aW9uLiBNeSBuZXh0IHN0ZXBzIHdpbGwgZGVwZW5kIGVudGlyZWx5IG9uIHdoYXQgSSBmaW5kIHdoZW4gSSBpbnNwZWN0IGBNRU1PUllfSE9UUkVNT1ZFYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU3MDgsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNDowMDozNS45NDgyMzgyODFaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NTI4NjYwNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1FTU9SWV9IT1RSRU1PVkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz01ODk9ZW5kY2hvaWNlXFxubW0vS2NvbmZpZy01OTAtXFxubW0vS2NvbmZpZzo1OTE6Y29uZmlnIE1FTU9SWV9IT1RSRU1PVkVcXG5tbS9LY29uZmlnLTU5Mi1cXHRib29sIFxcXCJBbGxvdyBmb3IgbWVtb3J5IGhvdCByZW1vdmVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA0OjAwOjM3LjcwMTExNTEzWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3MTg3NTk0ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBWdWxuZXJhYmlsaXR5IGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCwgd2hpY2ggdG91Y2hlcyBkZXZpY2UgbWVtb3J5IG1pZ3JhdGlvbiBpbiBgbW0vbWlncmF0ZV9kZXZpY2UuY2AsIGxvb2tzIHByb21pc2luZyBmb3IgZnV6emluZy4gV2UncmUgZGVhbGluZyB3aXRoIGZ1bmRhbWVudGFsIG1lbW9yeSBtYW5hZ2VtZW50IHJvdXRpbmVzIHRoYXQgYXJlIGNyaXRpY2FsIGZvciBITU0gYW5kIGRyaXZlcnMsIGVzcGVjaWFsbHkgR1BVcywgaGFuZGxpbmcgZm9saW8gc3BsaXR0aW5nIGFuZCBzd2FwIGNhY2hlIG1hcHBpbmcgZHVyaW5nIGRldmljZSBtZW1vcnkgbWlncmF0aW9uLiBUaGF0J3MgYSBrZXkgYXJlYS5cblxuSSd2ZSBtYWRlIHN1cmUgdG8gaW5jbHVkZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gb3VyIHRlc3Rpbmcgc3RyYXRlZ3kuIGBNRU1PUllfSE9UUExVR2AgYW5kIGBNRU1PUllfSE9UUkVNT1ZFYCBhcmUgb2J2aW91cyBjYW5kaWRhdGVzLCBnaXZlbiB0aGUgY29udGV4dC4gVGhlbiB3ZSBoYXZlIGBaT05FX0RFVklDRWAgYW5kIGBERVZJQ0VfUFJJVkFURWAsIHdoaWNoIGFyZSBjcnVjaWFsIGZvciB0aGUgZGV2aWNlIG1lbW9yeSBpbnRlcmFjdGlvbnMgdGhpcyBwYXRjaCBtb2RpZmllcy4gSSd2ZSBhbHNvIGFkZGVkIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgc2luY2UgaHVnZXBhZ2UgaW50ZXJhY3Rpb25zIGNhbiBleHBvc2UgaXNzdWVzIGluIG1pZ3JhdGlvbiBsb2dpYywgYW5kIGBURVNUX0hNTWAsIHdoaWNoIHByb3ZpZGVzIGEga25vd24gZ29vZCBwYXRoIGZvciB0ZXN0aW5nLCBhbmQgdGhlIGNyaXRpY2FsIHBpZWNlLCBgU1BBUlNFTUVNX1ZNRU1NQVBgLiBBbHRob3VnaCBvZnRlbiBlbmFibGVkIGJ5IGRlZmF1bHQgb24geDg2XzY0LCBpdCdzIHdvcnRoIGV4cGxpY2l0bHkgaW5jbHVkaW5nIGZvciB0aG9yb3VnaG5lc3MuXG5cbkkgYWxzbyBjaGVja2VkIHRoZSBleHBvcnQgc3RhdHVzIG9mIHRoZSByZWxldmFudCBmdW5jdGlvbnMuIGBtaWdyYXRlX3ZtYV9wYWdlc2AgYW5kIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYXJlIGV4cG9ydGVkLCB3aGljaCBpcyBnb29kIGZvciB1cy4gYG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvYCBpc24ndCBzdGF0aWMsIGFuZCBpdCdzIGRlZmluZWQgaW4gYG1tL2ludGVybmFsLmhgLCBzbyBpdCBpcyBpbmRpcmVjdGx5IGV4cG9zZWQuXG5cbkRpZ2dpbmcgZnVydGhlciwgSSB0cmFjZWQgdGhlIGNhbGwgcGF0aHMgdG8gYG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvYC4gSXQncyB1bHRpbWF0ZWx5IHJlYWNoYWJsZSB0aHJvdWdoIGBtaWdyYXRlX2xvbmd0ZXJtX3VucGlubmFibGVfZm9saW9zYCB3aGljaCBpcyB0aGVuIGNhbGxlZCBmcm9tIGBjaGVja19hbmRfbWlncmF0ZV9tb3ZhYmxlX2ZvbGlvc2AgYW5kIHRoZW4gYF9fZ3VwX2xvbmd0ZXJtX2xvY2tlZGAgd2hpY2ggaXMgY2FsbGVkIGZyb20gYHBpbl91c2VyX3BhZ2VzYC4gVGhpcyBjb25maXJtcyBpdCdzIGFjY2Vzc2libGUgdGhyb3VnaCBpb191cmluZywgUkRNQSwgVkZJTywgYW5kIG90aGVyIGNvbW1vbiBwYXRocyB0aGF0IHdlIGNhbiB0YXJnZXQgaW4gb3VyIGZ1enplci4gU28sIHRoZSBrZXkgZnVuY3Rpb25zIGFyZSBpbmRlZWQgZXhwb3NlZCBhbmQgcmVhY2hhYmxlLlxuXG5CYXNlZCBvbiB0aGlzLCBJJ20gY29uZmlkZW50IHRoYXQgdGhlIGZvbGxvd2luZyBhcmUgd29ydGggZm9jdXNpbmcgb246IGBtaWdyYXRlX2RldmljZV9wYWdlc2AsIGBtaWdyYXRlX3ZtYV9wYWdlc2AsIGFuZCBgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9gLiBUaGVzZSBhcmUgdGhlIGNvcmUgZnVuY3Rpb25zIHRoYXQgZW5jYXBzdWxhdGUgdGhlIGNvcmUgbG9naWMgdGhpcyBwYXRjaCB0b3VjaGVzLiBXZSBzaG91bGQgYmUgYWJsZSB0byB0cmlnZ2VyIHRoZSBwYXRjaGVkIGNvZGUgaW4gb3VyIGZ1enppbmcgc2V0dXAuXG5cblRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2AgaXMgc2V0IHRvIGB0cnVlYCwgYW5kIEkndmUgY29uc3RydWN0ZWQgbXkgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCBhY2NvcmRpbmdseS4gSSB3aWxsIG5vdyBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjAxMywiT3V0cHV0VG9rZW5zIjoxODgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDQ6MDA6NDYuNDE5ODc3MjMzWiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ5NTQyOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRFU1RfSE1NXCIsXG4gICAgXCJUUkFOU1BBUkVOVF9IVUdFUEFHRVwiLFxuICAgIFwiREVWSUNFX1BSSVZBVEVcIixcbiAgICBcIlpPTkVfREVWSUNFXCIsXG4gICAgXCJNRU1PUllfSE9UUExVR1wiLFxuICAgIFwiTUVNT1JZX0hPVFJFTU9WRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1pZ3JhdGVfZGV2aWNlX3BhZ2VzXCIsXG4gICAgXCJtaWdyYXRlX3ZtYV9wYWdlc1wiLFxuICAgIFwibWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgIHRvIGZpeCBmb2xpbyBzcGxpdHRpbmcgYW5kIHN3YXAgY2FjaGUgbWFwcGluZyBkdXJpbmcgZGV2aWNlIG1lbW9yeSBtaWdyYXRpb24uIFRoaXMgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB1c2VkIGJ5IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudCkgYW5kIGRldmljZSBkcml2ZXJzLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8tZGV2aWNlIGRyaXZlciBhbmQgc3RhbmRhcmQgR1VQIChnZXRfdXNlcl9wYWdlcykgcGF0aHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVEVTVF9ITU1cIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJERVZJQ0VfUFJJVkFURVwiLFxuICAgIFwiWk9ORV9ERVZJQ0VcIixcbiAgICBcIk1FTU9SWV9IT1RQTFVHXCIsXG4gICAgXCJNRU1PUllfSE9UUkVNT1ZFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWlncmF0ZV9kZXZpY2VfcGFnZXNcIixcbiAgICBcIm1pZ3JhdGVfdm1hX3BhZ2VzXCIsXG4gICAgXCJtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBpbiBgbW0vbWlncmF0ZV9kZXZpY2UuY2AgdG8gZml4IGZvbGlvIHNwbGl0dGluZyBhbmQgc3dhcCBjYWNoZSBtYXBwaW5nIGR1cmluZyBkZXZpY2UgbWVtb3J5IG1pZ3JhdGlvbi4gVGhpcyBpcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHVzZWQgYnkgSE1NIChIZXRlcm9nZW5lb3VzIE1lbW9yeSBNYW5hZ2VtZW50KSBhbmQgZGV2aWNlIGRyaXZlcnMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHRoZSBgVEVTVF9ITU1gIHBzZXVkby1kZXZpY2UgZHJpdmVyIGFuZCBzdGFuZGFyZCBHVVAgKGdldF91c2VyX3BhZ2VzKSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowplshm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-29 03:31:16 +0000 UTC FinishedAt: 2026-07-29 04:00:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TEST_HMM", "TRANSPARENT_HUGEPAGE", "DEVICE_PRIVATE", "ZONE_DEVICE", "MEMORY_HOTPLUG", "MEMORY_HOTREMOVE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TEST_HMM", "TRANSPARENT_HUGEPAGE", "DEVICE_PRIVATE", "ZONE_DEVICE", "MEMORY_HOTPLUG", "MEMORY_HOTREMOVE" ], "series_id": "5331a1c1-1dca-4ea4-b252-b85f5f90a499" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "migrate_device_pages", "migrate_vma_pages", "migrate_device_coherent_folio" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RFU1RfSE1NJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1pPTkVfREVWSUNFJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RSRU1PVkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttaWdyYXRlX2RldmljZV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX3ZtYV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgIHRvIGZpeCBmb2xpbyBzcGxpdHRpbmcgYW5kIHN3YXAgY2FjaGUgbWFwcGluZyBkdXJpbmcgZGV2aWNlIG1lbW9yeSBtaWdyYXRpb24uIFRoaXMgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB1c2VkIGJ5IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudCkgYW5kIGRldmljZSBkcml2ZXJzLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8tZGV2aWNlIGRyaXZlciBhbmQgc3RhbmRhcmQgR1VQIChnZXRfdXNlcl9wYWdlcykgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3N2ExZGY2MTdlYmUyNjMyYzZiZGIxZjI1YjI5ODQ1YTI2YmU0N2U4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDM6NTk6MTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vbWlncmF0ZV9kZXZpY2UuYyBiL21tL21pZ3JhdGVfZGV2aWNlLmNcbmluZGV4IDU1NDc1NGViMjZmZjIuLjBlNmYwMDE5MGZkODMgMTAwNjQ0XG4tLS0gYS9tbS9taWdyYXRlX2RldmljZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9taWdyYXRlX2RldmljZS5jXG5AQCAtMTE4Miw2ICYjNDM7MTE4MiwxMyBAQCBzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxuIFx0XHRcdFx0XHRcdFx0IE1JR1JBVEVfUEZOX0NPTVBPVU5EKTtcbiBcdFx0XHRcdFx0Z290byBuZXh0O1xuIFx0XHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0XHQvKlxuJiM0MztcdFx0XHRcdCAqIHJlc2V0IG5yIHNvIHRoYXQgb25seSBmaXJzdCBhZnRlci1zcGxpdCBmb2xpb1xuJiM0MztcdFx0XHRcdCAqIGlzIHByb2Nlc3NlZCBiZWxvd1xuJiM0MztcdFx0XHRcdCAqL1xuJiM0MztcdFx0XHRcdFZNX1dBUk5fT05fT05DRShmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSk7XG4mIzQzO1x0XHRcdFx0bnIgPSAxO1xuIFx0XHRcdH0gZWxzZSBpZiAoKHNyY19wZm5zW2ldIFx1MDAyNiBNSUdSQVRFX1BGTl9NSUdSQVRFKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHRcdChkc3RfcGZuc1tpXSBcdTAwMjYgTUlHUkFURV9QRk5fQ09NUE9VTkQpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0IShzcmNfcGZuc1tpXSBcdTAwMjYgTUlHUkFURV9QRk5fQ09NUE9VTkQpKSB7XG5AQCAtMTIyMSw2ICYjNDM7MTIyOCwxMiBAQCBzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxuIFx0XHRcdGZvbGlvID0gcGFnZV9mb2xpbyhtaWdyYXRlX3Bmbl90b19wYWdlKHNyY19wZm5zW2kmIzQzO2pdKSk7XG4gXHRcdFx0bmV3Zm9saW8gPSBwYWdlX2ZvbGlvKG1pZ3JhdGVfcGZuX3RvX3BhZ2UoZHN0X3BmbnNbaSYjNDM7al0pKTtcbiBcbiYjNDM7XHRcdFx0LypcbiYjNDM7XHRcdFx0ICogZm9saW9fZnJlZV9zd2FwKCkgcmVtb3ZlZCB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcFxuJiM0MztcdFx0XHQgKiBjYWNoZS4gUmVmcmVzaCB0aGUgc2F2ZWQgbWFwcGluZyBiZWZvcmUgbWlncmF0aW9uLlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0bWFwcGluZyA9IGZvbGlvX21hcHBpbmcoZm9saW8pO1xuJiM0MztcbiBcdFx0XHRyID0gZm9saW9fbWlncmF0ZV9tYXBwaW5nKG1hcHBpbmcsIG5ld2ZvbGlvLCBmb2xpbywgZXh0cmFfY250KTtcbiBcdFx0XHRpZiAocilcbiBcdFx0XHRcdHNyY19wZm5zW2kmIzQzO2pdIFx1MDAyNj0gfk1JR1JBVEVfUEZOX01JR1JBVEU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RFU1RfSE1NJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1pPTkVfREVWSUNFJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RSRU1PVkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttaWdyYXRlX2RldmljZV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX3ZtYV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgIHRvIGZpeCBmb2xpbyBzcGxpdHRpbmcgYW5kIHN3YXAgY2FjaGUgbWFwcGluZyBkdXJpbmcgZGV2aWNlIG1lbW9yeSBtaWdyYXRpb24uIFRoaXMgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB1c2VkIGJ5IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudCkgYW5kIGRldmljZSBkcml2ZXJzLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8tZGV2aWNlIGRyaXZlciBhbmQgc3RhbmRhcmQgR1VQIChnZXRfdXNlcl9wYWdlcykgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3N2ExZGY2MTdlYmUyNjMyYzZiZGIxZjI1YjI5ODQ1YTI2YmU0N2U4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjkgMDM6NTk6MTMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9taWdyYXRlX2RldmljZS5jIGIvbW0vbWlncmF0ZV9kZXZpY2UuYwppbmRleCA1NTQ3NTRlYjI2ZmYyLi4wZTZmMDAxOTBmZDgzIDEwMDY0NAotLS0gYS9tbS9taWdyYXRlX2RldmljZS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL21pZ3JhdGVfZGV2aWNlLmMKQEAgLTExODIsNiAmIzQzOzExODIsMTMgQEAgc3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywKIAkJCQkJCQkgTUlHUkFURV9QRk5fQ09NUE9VTkQpOwogCQkJCQlnb3RvIG5leHQ7CiAJCQkJfQomIzQzOwomIzQzOwkJCQkvKgomIzQzOwkJCQkgKiByZXNldCBuciBzbyB0aGF0IG9ubHkgZmlyc3QgYWZ0ZXItc3BsaXQgZm9saW8KJiM0MzsJCQkJICogaXMgcHJvY2Vzc2VkIGJlbG93CiYjNDM7CQkJCSAqLwomIzQzOwkJCQlWTV9XQVJOX09OX09OQ0UoZm9saW9fdGVzdF9sYXJnZShmb2xpbykpOwomIzQzOwkJCQluciA9IDE7CiAJCQl9IGVsc2UgaWYgKChzcmNfcGZuc1tpXSAmYW1wOyBNSUdSQVRFX1BGTl9NSUdSQVRFKSAmYW1wOyZhbXA7CiAJCQkJKGRzdF9wZm5zW2ldICZhbXA7IE1JR1JBVEVfUEZOX0NPTVBPVU5EKSAmYW1wOyZhbXA7CiAJCQkJIShzcmNfcGZuc1tpXSAmYW1wOyBNSUdSQVRFX1BGTl9DT01QT1VORCkpIHsKQEAgLTEyMjEsNiAmIzQzOzEyMjgsMTIgQEAgc3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywKIAkJCWZvbGlvID0gcGFnZV9mb2xpbyhtaWdyYXRlX3Bmbl90b19wYWdlKHNyY19wZm5zW2kmIzQzO2pdKSk7CiAJCQluZXdmb2xpbyA9IHBhZ2VfZm9saW8obWlncmF0ZV9wZm5fdG9fcGFnZShkc3RfcGZuc1tpJiM0MztqXSkpOwogCiYjNDM7CQkJLyoKJiM0MzsJCQkgKiBmb2xpb19mcmVlX3N3YXAoKSByZW1vdmVkIHRoZSBmb2xpbyBmcm9tIHRoZSBzd2FwCiYjNDM7CQkJICogY2FjaGUuIFJlZnJlc2ggdGhlIHNhdmVkIG1hcHBpbmcgYmVmb3JlIG1pZ3JhdGlvbi4KJiM0MzsJCQkgKi8KJiM0MzsJCQltYXBwaW5nID0gZm9saW9fbWFwcGluZyhmb2xpbyk7CiYjNDM7CiAJCQlyID0gZm9saW9fbWlncmF0ZV9tYXBwaW5nKG1hcHBpbmcsIG5ld2ZvbGlvLCBmb2xpbywgZXh0cmFfY250KTsKIAkJCWlmIChyKQogCQkJCXNyY19wZm5zW2kmIzQzO2pdICZhbXA7PSB+TUlHUkFURV9QRk5fTUlHUkFURTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMwMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1pZ3JhdGUgRGV2aWNlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbW0vbWlncmF0ZV9kZXZpY2UuY2AsIHNwZWNpZmljYWxseSB0aGUgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZXMgYXJlIGludGVyZXN0aW5nIGFuZCB3b3J0aCBhIGNsb3NlciBsb29rLgoKRmlyc3QsIHRoZXkmIzM5O3ZlIGluc2VydGVkIGEgYFZNX1dBUk5fT05fT05DRShmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSk7IG5yID0gMTtgIHN0YXRlbWVudCB3aXRoaW4gYSBibG9jayB3aGVyZSBgZm9saW9fc3BsaXRgIG9yIHNvbWV0aGluZyBzaW1pbGFyIGlzIGhhcHBlbmluZy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2h5IHRoZSB3YXJuaW5nPyBXaGF0JiMzOTtzIHRoZSBwb3RlbnRpYWwgaXNzdWUgd2l0aCBtaWdyYXRpbmcgYSBsYXJnZSBmb2xpbyBoZXJlPyYjMzQ7IEl0IHN1Z2dlc3RzIHRoZXkmIzM5O3JlIGVuY291bnRlcmluZyB1bmV4cGVjdGVkIGxhcmdlIGZvbGlvcyBhbmQgd2FudCB0byBmbGFnIHRoYXQuIFRoZSBgbnIgPSAxO2AgaW5kaWNhdGVzIHRoZXkmIzM5O3JlIGZvcmNpbmcgdGhlIG1pZ3JhdGlvbiB0byB0cmVhdCBpdCBhcyBhIHNpbmdsZSBwYWdlLCB3aGljaCBpcyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgKndoeSogdGhleSYjMzk7cmUgZG9pbmcgdGhpcy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY29uZGl0aW9uLiBXaGF0IGlzIHNwZWNpYWwgYWJvdXQgdGhlIG1pZ3JhdGlvbiBvZiBsYXJnZSBmb2xpb3MgZnJvbSBvciB0byBkZXZpY2UgbWVtb3J5PyBJcyB0aGVyZSBhIHN1YnRsZSBpbnRlcmFjdGlvbiB3aXRoIGhvdyBkZXZpY2UgbWVtb3J5IGlzIG1hbmFnZWQgaW4gdGhpcyBwYXJ0IG9mIHRoZSBrZXJuZWw/CgpTZWNvbmRseSwgdGhleSYjMzk7dmUgYWRkZWQgYG1hcHBpbmcgPSBmb2xpb19tYXBwaW5nKGZvbGlvKTtgIGJlZm9yZSB0aGUgY2FsbCB0byBgZm9saW9fbWlncmF0ZV9tYXBwaW5nYC4gQWgsIHRoaXMgaXMgbW9yZSBzdHJhaWdodGZvcndhcmQ7IHRoZSBjb21tZW50IGFib3V0IGBmb2xpb19mcmVlX3N3YXAoKWAgcG90ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGZvbGlvIGZyb20gdGhlIHN3YXAgY2FjaGUgbWFrZXMgdGhpcyBwZXJmZWN0bHkgY2xlYXIuIFdlJiMzOTtyZSBnZXR0aW5nIHRoZSBtYXBwaW5nICpiZWZvcmUqIHRoZSBzd2FwLXJlbGF0ZWQgb3BlcmF0aW9ucyB0aGF0IG1pZ2h0IGZyZWUgdGhlIGZvbGlvIGFuZCBpbnZhbGlkYXRlIGBmb2xpby0mZ3Q7bWFwcGluZ2AuIEEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBwcmV2ZW50aW9uLiBUaGlzIGluZGljYXRlcyBhIHBvdGVudGlhbCBpc3N1ZSB3aGVyZSB0aGUgZm9saW8gY291bGQgYmUgdW5tYXBwZWQgZnJvbSBpdHMgb3JpZ2luYWwgbG9jYXRpb24gKGxpa2VseSB0aGUgc3dhcCBjYWNoZSkgZHVyaW5nIHRoZSBtaWdyYXRpb24gcHJvY2VzcywgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbiBpZiB3ZSBkaWRuJiMzOTt0IGNhcHR1cmUgdGhlIG1hcHBpbmcgZmlyc3QuIFRoZSBnb2FsIGhlcmUgaXMgdG8gZW5zdXJlIHRoYXQgYGZvbGlvX21pZ3JhdGVfbWFwcGluZ2AgaGFzIHRoZSBjb3JyZWN0IGBtYXBwaW5nYCBldmVuIGlmIHRoZSBmb2xpbyYjMzk7cyBzd2FwIGNhY2hlIGVudHJ5IGJlY29tZXMgaW52YWxpZC4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIHZlcmlmeSBleGFjdGx5ICpob3cqIGBmb2xpb19mcmVlX3N3YXAoKWAgaXMgY2FsbGVkIGFuZCBjb25maXJtIHRoYXQgdGhpcyBpcyBhIHZhbGlkIGFuZCBuZWNlc3NhcnkgcHJlY2F1dGlvbi4gTm93LCBsZXQmIzM5O3MgcHVsbCB1cCB0aGUgY29udGV4dCBvZiBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbi4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fbWlncmF0ZV9kZXZpY2VfcGFnZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9taWdyYXRlX2RldmljZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21pZ3JhdGVfZGV2aWNlLmM9OTY1PXN0YXRpYyB2b2lkIG1pZ3JhdGVfdm1hX2luc2VydF9wYWdlKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSxcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEwOTctXG5tbS9taWdyYXRlX2RldmljZS5jOjEwOTg6c3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTA5OS1cdFx0XHRcdHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLCB1bnNpZ25lZCBsb25nIG5wYWdlcyxcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNjA9dm9pZCBtaWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjYyLXtcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI2MzpcdF9fbWlncmF0ZV9kZXZpY2VfcGFnZXMoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMsIE5VTEwpO1xubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjY0LX1cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNzU9dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzYte1xubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjc3Olx0X19taWdyYXRlX2RldmljZV9wYWdlcyhtaWdyYXRlLVx1MDAzZXNyYywgbWlncmF0ZS1cdTAwM2Vkc3QsIG1pZ3JhdGUtXHUwMDNlbnBhZ2VzLCBtaWdyYXRlKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3OC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI3OAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEaXZpbmcgaW50byB0aGUgUGFnZSBNaWdyYXRpb24gTGFuZHNjYXBlKioKClJpZ2h0LCBzbyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaXMgdGhlIGNvcmUgZnVuY3Rpb24gaGVyZSwgYW5kIGl0JiMzOTtzIGJlaW5nIGNhbGxlZCBieSBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLiBJbW1lZGlhdGVseSBJJiMzOTttIHRoaW5raW5nLCB0aGVzZSBhcmUgbGlrZWx5IGV4cG9zZWQgdG8gZGV2aWNlIGRyaXZlcnMsIG1heWJlIHRocm91Z2ggZXhwb3J0cyBvciBzb21lIHNpbWlsYXIgbWVjaGFuaXNtLiBUaGUgbmFtaW5nIGNvbnZlbnRpb24gc3Ryb25nbHkgc3VnZ2VzdHMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBwYWdlIG1pZ3JhdGlvbiwgcHJvYmFibHkgcmVsYXRlZCB0byBtZW1vcnkgbWFuYWdlbWVudCBhbmQgdGhlIG1vdmUgb2YgZGF0YSB3aXRoaW4gdGhlIHN5c3RlbS4gV2UmIzM5O3JlIHRhbGtpbmcgbG93LWxldmVsIHN0dWZmIGhlcmUsIGZ1bmRhbWVudGFsIHRvIGhvdyB3ZSBoYW5kbGUgZGV2aWNlIG1lbW9yeS4KClRoZSBzaWduaWZpY2FudCB0aGluZyBpcyB0aGF0IGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYW5kIGBtaWdyYXRlX3ZtYV9wYWdlc2AgKm11c3QqIGJlIGltcG9ydGFudCwgc2luY2UgdGhleSBhcmUgY2FsbGluZyB0aGlzIG90aGVyIGZ1bmN0aW9uLiBJIHN1c3BlY3QgdGhleSBjb3VsZCBiZSBob3cgZHJpdmVycyBsaWtlIE5vdXZlYXUsIEFNREdQVSwgb3IgdGhlIEhvc3QgTWVtb3J5IE1hbmFnZXIgYXJlIGFjdHVhbGx5IHRyaWdnZXJpbmcgcGFnZSBtaWdyYXRpb25zLiBUaGVyZWZvcmUsIG15IG5leHQgbW92ZSBpcyBjbGVhcjogSSBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIHVzYWdlIG9mIGJvdGggYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYC4gVW5kZXJzdGFuZGluZyAqd2hlcmUqIGFuZCAqaG93KiB0aGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCB3aWxsIHJldmVhbCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEFyZSB0aGV5IHNwZWNpZmljIHRvIGNlcnRhaW4gaGFyZHdhcmU/IEFyZSB0aGV5IHBhcnQgb2YgYSBsYXJnZXIgbWlncmF0aW9uIGZyYW1ld29yaz8gVGhlIGFuc3dlcnMgYXJlIGNydWNpYWwgdG8gYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWlncmF0ZV9kZXZpY2VfcGFnZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9MTExND1pbnQgZHJtX3BhZ2VtYXBfZXZpY3RfdG9fcmFtKHN0cnVjdCBkcm1fcGFnZW1hcF9kZXZtZW0gKmRldm1lbV9hbGxvY2F0aW9uKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTExNzktXHRcdGRybV9wYWdlbWFwX21pZ3JhdGlvbl91bmxvY2tfcHV0X3BhZ2VzKG5wYWdlcywgZHN0KTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jOjExODA6XHRtaWdyYXRlX2RldmljZV9wYWdlcyhzcmMsIGRzdCwgbnBhZ2VzKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTExODEtXHRtaWdyYXRlX2RldmljZV9maW5hbGl6ZShzcmMsIGRzdCwgbnBhZ2VzKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYz00NzU9bm91dmVhdV9kbWVtX2V2aWN0X2NodW5rKHN0cnVjdCBub3V2ZWF1X2RtZW1fY2h1bmsgKmNodW5rKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTUxNy1cdG5vdXZlYXVfZmVuY2VfbmV3KFx1MDAyNmZlbmNlLCBjaHVuay1cdTAwM2Vkcm0tXHUwMDNlZG1lbS1cdTAwM2VtaWdyYXRlLmNoYW4pO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM6NTE4Olx0bWlncmF0ZV9kZXZpY2VfcGFnZXMoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMpO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtNTE5LVx0bm91dmVhdV9kbWVtX2ZlbmNlX2RvbmUoXHUwMDI2ZmVuY2UpO1xuLS1cbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oPTE5OD1pbnQgbWlncmF0ZV9kZXZpY2VfcGZucyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMpO1xuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6MTk5OnZvaWQgbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsIHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtMjAwLVx0XHRcdHVuc2lnbmVkIGxvbmcgbnBhZ2VzKTtcbi0tXG5saWIvdGVzdF9obW0uYz0xODg9c3RhdGljIHZvaWQgZG1pcnJvcl9kZXZpY2VfZXZpY3RfY2h1bmsoc3RydWN0IGRtaXJyb3JfY2h1bmsgKmNodW5rKVxuLS1cbmxpYi90ZXN0X2htbS5jLTIzMS1cdH1cbmxpYi90ZXN0X2htbS5jOjIzMjpcdG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzKTtcbmxpYi90ZXN0X2htbS5jLTIzMy1cdG1pZ3JhdGVfZGV2aWNlX2ZpbmFsaXplKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzKTtcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTk2NT1zdGF0aWMgdm9pZCBtaWdyYXRlX3ZtYV9pbnNlcnRfcGFnZShzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk3LVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMDk4OnN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXG5tbS9taWdyYXRlX2RldmljZS5jLTEwOTktXHRcdFx0XHR1bnNpZ25lZCBsb25nICpkc3RfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjUxLS8qKlxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjUyOiAqIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKCkgLSBtaWdyYXRlIG1ldGEtZGF0YSBmcm9tIHNyYyBwYWdlIHRvIGRzdCBwYWdlXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTMtICogQHNyY19wZm5zOiBzcmNfcGZucyByZXR1cm5lZCBmcm9tIG1pZ3JhdGVfZGV2aWNlX3JhbmdlKClcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTktICovXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNjA6dm9pZCBtaWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjEtXHRcdFx0dW5zaWduZWQgbG9uZyBucGFnZXMpXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjIte1xubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjYzOlx0X19taWdyYXRlX2RldmljZV9wYWdlcyhzcmNfcGZucywgZHN0X3BmbnMsIG5wYWdlcywgTlVMTCk7XG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjQtfVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjY1OkVYUE9SVF9TWU1CT0wobWlncmF0ZV9kZXZpY2VfcGFnZXMpO1xubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjY2LVxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI3NT12b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3Ni17XG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzc6XHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKG1pZ3JhdGUtXHUwMDNlc3JjLCBtaWdyYXRlLVx1MDAzZWRzdCwgbWlncmF0ZS1cdTAwM2VucGFnZXMsIG1pZ3JhdGUpO1xubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjc4LX1cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEzNjg9c3RhdGljIHVuc2lnbmVkIGxvbmcgbWlncmF0ZV9kZXZpY2VfcGZuX2xvY2sodW5zaWduZWQgbG9uZyBwZm4pXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xNDAwLSAqIGFsbG9jYXRlIGRlc3RpbmF0aW9uIHBhZ2VzIGFuZCBzdGFydCBjb3B5aW5nIGRhdGEgZnJvbSB0aGUgZGV2aWNlIHRvIENQVVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxNDAxOiAqIG1lbW9yeSBiZWZvcmUgY2FsbGluZyBtaWdyYXRlX2RldmljZV9wYWdlcygpLlxubW0vbWlncmF0ZV9kZXZpY2UuYy0xNDAyLSAqL1xuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTQ2OD1pbnQgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTE0OTItXG5tbS9taWdyYXRlX2RldmljZS5jOjE0OTM6XHRtaWdyYXRlX2RldmljZV9wYWdlcyhcdTAwMjZzcmNfcGZuLCBcdTAwMjZkc3RfcGZuLCAxKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTQ5NC1cdGlmIChzcmNfcGZuIFx1MDAyNiBNSUdSQVRFX1BGTl9NSUdSQVRFKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21pZ3JhdGVfdm1hX3BhZ2VzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0yNjQ9dXNlIGhhcmR3YXJlIERNQSBvciBkZXZpY2Ugc3BlY2lmaWMgbG9hZC9zdG9yZSBpbnN0cnVjdGlvbnMgdG8gbWlncmF0ZSBkYXRhLlxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0OjI2NTpUaGUgbWlncmF0ZV92bWFfc2V0dXAoKSwgbWlncmF0ZV92bWFfcGFnZXMoKSwgYW5kIG1pZ3JhdGVfdm1hX2ZpbmFsaXplKClcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdC0yNjYtZnVuY3Rpb25zIGFyZSBkZXNpZ25lZCB0byBtYWtlIGRyaXZlcnMgZWFzaWVyIHRvIHdyaXRlIGFuZCB0byBjZW50cmFsaXplIGNvbW1vblxuLS1cbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdD0yOTc9YmV0d2VlbiBkZXZpY2UgZHJpdmVyIHNwZWNpZmljIGNvZGUgYW5kIHNoYXJlZCBjb21tb24gY29kZTpcbi0tXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMzY0LVxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0OjM2NTo0LiBgYG1pZ3JhdGVfdm1hX3BhZ2VzKClgYFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTM2Ni1cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0PTIxMj1ITU0g5YiH5o2i5Yiw55u05o6l5L2/55SoIHN0cnVjdCBwYWdlIOeUqOS6juiuvuWkh+WGheWtmO+8jOi/meS9v+W+l+Wkp+WkmuaVsOWGheaguOS7o+eggei3r+W+hOS4jeefpemBk+W3ruW8guOAglxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3QtMjE4LeeUseS6jiBDUFUg5peg5rOV55u05o6l6K6/6Zeu6K6+5aSH5YaF5a2Y77yM5Zug5q2k6K6+5aSH6amx5Yqo56iL5bqP5b+F6aG75L2/55So56Gs5Lu2IERNQSDmiJborr7lpIfnibnlrprnmoTliqDovb0v5a2YXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0OjIxOTrlgqjmjIfku6TmnaXov4Hnp7vmlbDmja7jgIJtaWdyYXRlX3ZtYV9zZXR1cCgp44CBbWlncmF0ZV92bWFfcGFnZXMoKSDlkoxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3QtMjIwLW1pZ3JhdGVfdm1hX2ZpbmFsaXplKCkg5Ye95pWw5peo5Zyo5L2/6amx5Yqo56iL5bqP5pu05piT5LqO57yW5YaZ5bm26ZuG5Lit6Leo6amx5Yqo56iL5bqP55qE6YCa55So5Luj56CB44CCXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdD0yNDM9ZGV2bV9tZW11bm1hcF9wYWdlcygpIOWSjCBkZXZtX3JlbGVhc2VfbWVtX3JlZ2lvbigpIOW9k+i1hOa6kOWPr+S7pee7keWumuWIsCBgYHN0cnVjdCBkZXZpY2VgYC5cbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0LTI5Ny1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3Q6Mjk4OjQuIGBgbWlncmF0ZV92bWFfcGFnZXMoKWBgXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0LTI5OS1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTQ5LSAqIDEuIGt2bS1cdTAwM2VzcmN1IC0gUHJvdGVjdHMgS1ZNIG1lbXNsb3RzXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jOjUwOiAqIDIuIGt2bS1cdTAwM2VtbS1cdTAwM2VtbWFwX2xvY2sgLSBmaW5kX3ZtYSwgbWlncmF0ZV92bWFfcGFnZXMgYW5kIGhlbHBlcnMsIGtzbV9tYWR2aXNlXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTUxLSAqIDMuIGt2bS1cdTAwM2VhcmNoLnV2bWVtX2xvY2sgLSBwcm90ZWN0cyByZWFkL3dyaXRlcyB0byB1dm1lbSBzbG90cyB0aHVzIGFjdGluZ1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmM9NTEzPXN0YXRpYyBpbnQgX19rdm1wcGNfc3ZtX3BhZ2Vfb3V0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmMtNTc4LVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYzo1Nzk6XHRtaWdyYXRlX3ZtYV9wYWdlcyhcdTAwMjZtaWcpO1xuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy01ODAtXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYz03NDA9c3RhdGljIGludCBrdm1wcGNfc3ZtX3BhZ2VfaW4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy03ODctXHQqbWlnLmRzdCA9IG1pZ3JhdGVfcGZuKHBhZ2VfdG9fcGZuKGRwYWdlKSk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jOjc4ODpcdG1pZ3JhdGVfdm1hX3BhZ2VzKFx1MDAyNm1pZyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTc4OS1vdXRfZmluYWxpemU6XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYz0zOTQ9c3ZtX21pZ3JhdGVfdm1hX3RvX3ZyYW0oc3RydWN0IGtmZF9ub2RlICpub2RlLCBzdHJ1Y3Qgc3ZtX3JhbmdlICpwcmFuZ2UsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYy00NTEtXHRyID0gc3ZtX21pZ3JhdGVfY29weV90b192cmFtKG5vZGUsIHByYW5nZSwgXHUwMDI2bWlncmF0ZSwgXHUwMDI2bWZlbmNlLCBzY3JhdGNoLCB0dG1fcmVzX29mZnNldCk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jOjQ1MjpcdG1pZ3JhdGVfdm1hX3BhZ2VzKFx1MDAyNm1pZ3JhdGUpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYy00NTMtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYz02OTM9c3ZtX21pZ3JhdGVfdm1hX3RvX3JhbShzdHJ1Y3Qga2ZkX25vZGUgKm5vZGUsIHN0cnVjdCBzdm1fcmFuZ2UgKnByYW5nZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTc1NS1cdFx0XHRcdCAgICBzY3JhdGNoLCBucGFnZXMpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYzo3NTY6XHRtaWdyYXRlX3ZtYV9wYWdlcyhcdTAwMjZtaWdyYXRlKTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNzU3LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jPTYxNj1pbnQgZHJtX3BhZ2VtYXBfbWlncmF0ZV90b19kZXZtZW0oc3RydWN0IGRybV9wYWdlbWFwX2Rldm1lbSAqZGV2bWVtX2FsbG9jYXRpb24sXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtODE3LWVycl9hYm9ydGVkX21pZ3JhdGlvbjpcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jOjgxODpcdG1pZ3JhdGVfdm1hX3BhZ2VzKFx1MDAyNm1pZ3JhdGUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtODE5LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jPTEyMTY9c3RhdGljIGludCBfX2RybV9wYWdlbWFwX21pZ3JhdGVfdG9fcmFtKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdmFzLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTEzMDktXHRcdGRybV9wYWdlbWFwX21pZ3JhdGlvbl91bmxvY2tfcHV0X3BhZ2VzKG5wYWdlcywgbWlncmF0ZS5kc3QpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM6MTMxMDpcdG1pZ3JhdGVfdm1hX3BhZ2VzKFx1MDAyNm1pZ3JhdGUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtMTMxMS1cdG1pZ3JhdGVfdm1hX2ZpbmFsaXplKFx1MDAyNm1pZ3JhdGUpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jPTE4Mz1zdGF0aWMgdm1fZmF1bHRfdCBub3V2ZWF1X2RtZW1fbWlncmF0ZV90b19yYW0oc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtMjY3LVx0bm91dmVhdV9mZW5jZV9uZXcoXHUwMDI2ZmVuY2UsIGRtZW0tXHUwMDNlbWlncmF0ZS5jaGFuKTtcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jOjI2ODpcdG1pZ3JhdGVfdm1hX3BhZ2VzKFx1MDAyNmFyZ3MpO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtMjY5LVx0bm91dmVhdV9kbWVtX2ZlbmNlX2RvbmUoXHUwMDI2ZmVuY2UpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jPTc4Mz1zdGF0aWMgdm9pZCBub3V2ZWF1X2RtZW1fbWlncmF0ZV9jaHVuayhzdHJ1Y3Qgbm91dmVhdV9kcm0gKmRybSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy04MDktXHRub3V2ZWF1X2ZlbmNlX25ldyhcdTAwMjZmZW5jZSwgZHJtLVx1MDAzZWRtZW0tXHUwMDNlbWlncmF0ZS5jaGFuKTtcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jOjgxMDpcdG1pZ3JhdGVfdm1hX3BhZ2VzKGFyZ3MpO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtODExLVx0bm91dmVhdV9kbWVtX2ZlbmNlX2RvbmUoXHUwMDI2ZmVuY2UpO1xuLS1cbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oPTE1OD1zdHJ1Y3QgbWlncmF0ZV92bWEge1xuLS1cbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oLTE2NS1cdCAqIG1pZ3JhdGVfdm1hX3NldHVwKCksIGFuZCBtdXN0IG5vdCBjaGFuZ2UgdGhlIGRzdCBhcnJheSBhZnRlclxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6MTY2Olx0ICogbWlncmF0ZV92bWFfcGFnZXMoKSByZXR1cm5zLlxuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtMTY3LVx0ICovXG4tLVxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg9MTkzPWludCBtaWdyYXRlX3ZtYV9zZXR1cChzdHJ1Y3QgbWlncmF0ZV92bWEgKmFyZ3MpO1xuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6MTk0OnZvaWQgbWlncmF0ZV92bWFfcGFnZXMoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKTtcbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oLTE5NS12b2lkIG1pZ3JhdGVfdm1hX2ZpbmFsaXplKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSk7XG4tLVxubGliL3Rlc3RfaG1tLmM9MTAwND1zdGF0aWMgdm1fZmF1bHRfdCBkbWlycm9yX2Rldm1lbV9mYXVsdF9hbGxvY19hbmRfY29weShzdHJ1Y3QgbWlncmF0ZV92bWEgKmFyZ3MsXG4tLVxubGliL3Rlc3RfaG1tLmMtMTA3NS1cdFx0XHRcdFx0LyogQ2xlYXIgcmVtYWluaW5nIGRzdCBlbnRyaWVzIHRvIGF2b2lkXG5saWIvdGVzdF9obW0uYzoxMDc2Olx0XHRcdFx0XHQgKiBtaWdyYXRlX3ZtYV9wYWdlcy9maW5hbGl6ZSgpIHVzaW5nXG5saWIvdGVzdF9obW0uYy0xMDc3LVx0XHRcdFx0XHQgKiB1bmluaXRpYWxpemVkIHZhbHVlcy5cbi0tXG5saWIvdGVzdF9obW0uYz0xMTIwPXN0YXRpYyBpbnQgZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcbi0tXG5saWIvdGVzdF9obW0uYy0xMTc1LVxubGliL3Rlc3RfaG1tLmM6MTE3NjpcdFx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2YXJncyk7XG5saWIvdGVzdF9obW0uYy0xMTc3LVx0XHRjbWQtXHUwMDNlY3BhZ2VzICYjNDM7PSBkbWlycm9yX3N1Y2Nlc3NmdWxfbWlncmF0ZWRfcGFnZXMoXHUwMDI2YXJncyk7XG4tLVxubGliL3Rlc3RfaG1tLmM9MTE4OT1zdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2Uoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXG4tLVxubGliL3Rlc3RfaG1tLmMtMTI0OC1cdFx0ZG1pcnJvcl9taWdyYXRlX2FsbG9jX2FuZF9jb3B5KFx1MDAyNmFyZ3MsIGRtaXJyb3IpO1xubGliL3Rlc3RfaG1tLmM6MTI0OTpcdFx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2YXJncyk7XG5saWIvdGVzdF9obW0uYy0xMjUwLVx0XHRkbWlycm9yX21pZ3JhdGVfZmluYWxpemVfYW5kX21hcChcdTAwMjZhcmdzLCBkbWlycm9yKTtcbi0tXG5saWIvdGVzdF9obW0uYz0xNjUzPXN0YXRpYyB2bV9mYXVsdF90IGRtaXJyb3JfZGV2bWVtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuLS1cbmxpYi90ZXN0X2htbS5jLTE3MTgtXHR9XG5saWIvdGVzdF9obW0uYzoxNzE5Olx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2YXJncyk7XG5saWIvdGVzdF9obW0uYy0xNzIwLVx0Lypcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTY1OT1zdGF0aWMgdm9pZCBtaWdyYXRlX3ZtYV91bm1hcChzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy02OTktICogdGhpcyBjYW4gc3RpbGwgZmFpbCwgYW5kIHRodXMgaW5zaWRlIHRoZSBkZXZpY2UgZHJpdmVyIHlvdSBtdXN0IGNoZWNrIGlmIHRoZVxubW0vbWlncmF0ZV9kZXZpY2UuYzo3MDA6ICogbWlncmF0aW9uIHdhcyBzdWNjZXNzZnVsIGZvciB0aG9zZSBlbnRyaWVzIGFmdGVyIGNhbGxpbmcgbWlncmF0ZV92bWFfcGFnZXMoKSxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzAxLSAqIGp1c3QgbGlrZSBmb3IgcmVndWxhciBtaWdyYXRpb24uXG5tbS9taWdyYXRlX2RldmljZS5jLTcwMi0gKlxubW0vbWlncmF0ZV9kZXZpY2UuYzo3MDM6ICogQWZ0ZXIgdGhhdCwgdGhlIGNhbGxlcnMgbXVzdCBjYWxsIG1pZ3JhdGVfdm1hX3BhZ2VzKCkgdG8gZ28gb3ZlciBlYWNoIGVudHJ5XG5tbS9taWdyYXRlX2RldmljZS5jLTcwNC0gKiBpbiB0aGUgc3JjIGFycmF5IHRoYXQgaGFzIHRoZSBNSUdSQVRFX1BGTl9WQUxJRCBhbmQgTUlHUkFURV9QRk5fTUlHUkFURSBmbGFnXG5tbS9taWdyYXRlX2RldmljZS5jLTcwNS0gKiBzZXQuIElmIHRoZSBjb3JyZXNwb25kaW5nIGVudHJ5IGluIGRzdCBhcnJheSBoYXMgTUlHUkFURV9QRk5fVkFMSUQgZmxhZyBzZXQsXG5tbS9taWdyYXRlX2RldmljZS5jOjcwNjogKiB0aGVuIG1pZ3JhdGVfdm1hX3BhZ2VzKCkgdG8gbWlncmF0ZSBzdHJ1Y3QgcGFnZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzb3VyY2Vcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzA3LSAqIHN0cnVjdCBwYWdlIHRvIHRoZSBkZXN0aW5hdGlvbiBzdHJ1Y3QgcGFnZS4gIElmIGl0IGZhaWxzIHRvIG1pZ3JhdGUgdGhlXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy03MTQtICpcbm1tL21pZ3JhdGVfZGV2aWNlLmM6NzE1OiAqIE9uY2UgbWlncmF0ZV92bWFfcGFnZXMoKSByZXR1cm5zIHRoZSBjYWxsZXIgbWF5IGluc3BlY3Qgd2hpY2ggcGFnZXMgd2VyZVxubW0vbWlncmF0ZV9kZXZpY2UuYy03MTYtICogc3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkLCBhbmQgd2hpY2ggd2VyZSBub3QuICBTdWNjZXNzZnVsbHkgbWlncmF0ZWQgcGFnZXMgd2lsbFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzE4LSAqXG5tbS9taWdyYXRlX2RldmljZS5jOjcxOTogKiBJdCBpcyBzYWZlIHRvIHVwZGF0ZSBkZXZpY2UgcGFnZSB0YWJsZSBhZnRlciBtaWdyYXRlX3ZtYV9wYWdlcygpIGJlY2F1c2Vcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzIwLSAqIGJvdGggZGVzdGluYXRpb24gYW5kIHNvdXJjZSBwYWdlIGFyZSBzdGlsbCBsb2NrZWQsIGFuZCB0aGUgbW1hcF9sb2NrIGlzIGhlbGRcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEwOTg9c3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTYtICpcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI1NzogKiBFcXVpdmFsZW50IHRvIG1pZ3JhdGVfdm1hX3BhZ2VzKCkuIFRoaXMgaXMgY2FsbGVkIHRvIG1pZ3JhdGUgc3RydWN0IHBhZ2Vcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI1OC0gKiBtZXRhLWRhdGEgZnJvbSBzb3VyY2Ugc3RydWN0IHBhZ2UgdG8gZGVzdGluYXRpb24uXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMjY1PUVYUE9SVF9TWU1CT0wobWlncmF0ZV9kZXZpY2VfcGFnZXMpO1xuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2Ny0vKipcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI2ODogKiBtaWdyYXRlX3ZtYV9wYWdlcygpIC0gbWlncmF0ZSBtZXRhLWRhdGEgZnJvbSBzcmMgcGFnZSB0byBkc3QgcGFnZVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjY5LSAqIEBtaWdyYXRlOiBtaWdyYXRlIHN0cnVjdCBjb250YWluaW5nIGFsbCBtaWdyYXRpb24gaW5mb3JtYXRpb25cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzQtICovXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzU6dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzYte1xuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3OC19XG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzk6RVhQT1JUX1NZTUJPTChtaWdyYXRlX3ZtYV9wYWdlcyk7XG5tbS9taWdyYXRlX2RldmljZS5jLTEyODAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODA3NQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDE1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgSE1NIFBhZ2UgTWlncmF0aW9uIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgZXhwb3J0ZWQgZnVuY3Rpb25zLCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhleSYjMzk7cmUgcmVsYXRlZCB0byBwYWdlIG1pZ3JhdGlvbiwgc3BlY2lmaWNhbGx5IGluIGEgaGV0ZXJvZ2VuZW91cyBtZW1vcnkgbWFuYWdlbWVudCAoSE1NKSBjb250ZXh0LiBJIHNlZSB0aGV5JiMzOTtyZSB1c2VkIGFjcm9zcyBhIGZldyBrZXkgYXJlYXMsIHdoaWNoIGlzIGludGVyZXN0aW5nOiBgbGliL3Rlc3RfaG1tLmNgLCBgZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmNgLCBgZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmNgLCBgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuY2AsIGFuZCBldmVuIGluIHRoZSBQb3dlclBDIEtWTSBjb2RlIChgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uY2ApLiBUaGlzIHNwYW5zIGEgZGVjZW50IHJhbmdlIG9mIHN1YnN5c3RlbXMuCgpgbGliL3Rlc3RfaG1tLmNgIGltbWVkaWF0ZWx5IGNhdGNoZXMgbXkgZXllIGFzIGEgdGVzdGluZyBncm91bmQgZm9yIEhNTS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSYjMzk7bSB0aGlua2luZyB0aGlzIGlzIGxpa2VseSB3aGVyZSB0aGV5JiMzOTtyZSB2ZXJpZnlpbmcgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvZiB0aG9zZSBtaWdyYXRpb24gcm91dGluZXMuIEFuZCB0aGUgZmFjdCB0aGF0IGl0JiMzOTtzIGRlc2lnbmVkIGZvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbWFrZXMgcGVyZmVjdCBzZW5zZSDigJMgYSBjb250cm9sbGVkIGVudmlyb25tZW50IGlzIGlkZWFsIGZvciB0ZXN0aW5nIG1lbW9yeSBtaWdyYXRpb24gYWNyb3NzIGRpZmZlcmVudCBkZXZpY2VzLgoKU28sIGxldCYjMzk7cyBkaXZlIGludG8gYGxpYi90ZXN0X2htbS5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgdGVzdCBpcyBlbmFibGVkLiBJJiMzOTtsbCBjaGVjayBpdHMgYnVpbGQgY29uZmlndXJhdGlvbiBhbmQgdGhlIHNwZWNpZmljIHRlc3QgY2FzZXMgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3Qgc2NlbmFyaW9zIHRoYXQgYXJlIGJlaW5nIHZhbGlkYXRlZCBmb3IgcGFnZSBtaWdyYXRpb24gd2l0aGluIHRoZSBITU0gZnJhbWV3b3JrLiBHZXR0aW5nIGEgaGFuZGxlIG9uIHRoYXQgd2lsbCBvZmZlciB2YWx1YWJsZSBpbnNpZ2h0IGludG8gaG93IHRoZSBjb2RlIGlzIHN0cnVjdHVyZWQsIHRoZSBraW5kcyBvZiBtaWdyYXRpb25zIGl0IHN1cHBvcnRzLCBhbmQgd2hhdCBmZWF0dXJlcyBhcmUgdGVzdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGVzdF9obW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MTUKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGVidWdnaW5nIHRoZSBLY29uZmlnIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2sgZG93biB3aGVyZSB0aGlzIHBhcnRpY3VsYXIgb3B0aW9uIGlzIGRlZmluZWQgb3IgY29udHJvbGxlZCB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBLY29uZmlnIHN5c3RlbS4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoZSBjb250ZXh0LCBpcyB0byBqdW1wIGludG8gdGhlIG1vc3QgbGlrZWx5IHBsYWNlcy4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYGxpYi9LY29uZmlnLmRlYnVnYC4gSXQmIzM5O3MgYSBwcmltZSBzdXNwZWN0IGZvciBkZWJ1Zy1yZWxhdGVkIG9wdGlvbnMsIHNvIGl0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSWYgSSBkb24mIzM5O3QgZmluZCB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IgdGhlcmUsIEkmIzM5O2xsIG1vdmUgb24gdG8gYG1tL0tjb25maWdgLiBNZW1vcnkgbWFuYWdlbWVudCBvcHRpb25zIG9mdGVuIGhhdmUgaW50ZXJkZXBlbmRlbmNpZXMgd2l0aCBkZWJ1Z2dpbmcgZmxhZ3MsIHNvIEkgY2FuJiMzOTt0IHJ1bGUgdGhhdCBvdXQuIFRoZW4sIGFzIGEgZmluYWwgcmVzb3J0IGJlZm9yZSBhIHdpZGVyIHNlYXJjaCwgSSYjMzk7bGwgbmVlZCB0byBwZWVrIGF0IGBsaWIvTWFrZWZpbGVgLiBLY29uZmlnIG9wdGlvbnMgY2FuIHNvbWV0aW1lcyBiZSBpbmRpcmVjdGx5IGNvbnRyb2xsZWQgdGhyb3VnaCBNYWtlZmlsZSBsb2dpYywgc28gdGhhdCYjMzk7cyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuIFRoZSBnb2FsIGlzIHRvIHF1aWNrbHkgcGlucG9pbnQgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSBvciBNYWtlZmlsZSBydWxlIHRoYXQgZ292ZXJucyB0aGlzIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiwgc28gSSBjYW4gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzLCBkZWZhdWx0cywgYW5kIHBvdGVudGlhbCBpbXBhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Rlc3RfaG1tJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvTWFrZWZpbGU9MTAyPW9iai0kKENPTkZJR19URVNUX0xPQ0tVUCkgJiM0Mzs9IHRlc3RfbG9ja3VwLm9cbmxpYi9NYWtlZmlsZToxMDM6b2JqLSQoQ09ORklHX1RFU1RfSE1NKSAmIzQzOz0gdGVzdF9obW0ub1xubGliL01ha2VmaWxlLTEwNC1vYmotJChDT05GSUdfVEVTVF9GUkVFX1BBR0VTKSAmIzQzOz0gdGVzdF9mcmVlX3BhZ2VzLm9cbi0tXG5saWIvdGVzdF9obW0uYy0zMi1cbmxpYi90ZXN0X2htbS5jOjMzOiNpbmNsdWRlIFwmIzM0O3Rlc3RfaG1tX3VhcGkuaFwmIzM0O1xubGliL3Rlc3RfaG1tLmMtMzQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwMzYKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqVHJhY2luZyBEb3duIGBDT05GSUdfVEVTVF9ITU1gKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGBDT05GSUdfVEVTVF9ITU1gIGlzIGRlZmluZWQuIFRoaXMgaXMgYSBjb21tb24gc3RhcnRpbmcgcG9pbnQgZm9yIGRlYnVnZ2luZyBvciB1bmRlcnN0YW5kaW5nIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGluIGtlcm5lbCBvciBlbWJlZGRlZCBzeXN0ZW1zIGNvZGUuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIG15IHVzdWFsIHRvb2xzIGFuZCB0ZWNobmlxdWVzLiBGaXJzdCwgSSBuZWVkIHRvIGRldGVybWluZSB0aGUgc2NvcGUg4oCTIGlzIHRoaXMgYSBrZXJuZWwgY29uZmlndXJhdGlvbiBzeW1ib2wsIGEgdXNlci1zcGFjZSBkZWZpbmUsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGVuLCBJIHdpbGwgZW1wbG95IHRvb2xzIGxpa2UgYGdyZXBgLCBgZmluZGAsIG9yIGV2ZW4gYGN0YWdzL2NzY29wZWAgKGlmIEkgaGF2ZSB0aGVtIHNldCB1cCkgdG8gZG8gYSByZWN1cnNpdmUgc2VhcmNoIGFjcm9zcyB0aGUgcHJvamVjdCYjMzk7cyBzb3VyY2UgdHJlZSBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBiZSBhIHN0cmFpZ2h0Zm9yd2FyZCBmaW5kLCBnaXZlbiBpdHMgbmFtaW5nIGNvbnZlbnRpb24uIFBlcmhhcHMgaXQmIzM5O3MgaW4gYSBgLmNvbmZpZ2AgZmlsZSwgb3IgbWF5YmUgaXQmIzM5O3MgZGVmaW5lZCB3aXRoaW4gYSBLY29uZmlnIGZpbGUuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgaGllcmFyY2h5IGlmIGl04oCZcyBhIGNvbmZpZ3VyYXRpb24gc3ltYm9sLiBJZiBpdCYjMzk7cyBhIHJlZ3VsYXIgYCNkZWZpbmVgLCBpdCBjb3VsZCByZXNpZGUgaW4gYSBoZWFkZXIgZmlsZSBhbnl3aGVyZSBpbiB0aGUgY29kZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBkaWcgdXAuIEZyb20gdGhlcmUsIEkmIzM5O2xsIHRoZW4gbW92ZSBvbiB0byB0cmFjaW5nIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGhvdyBpdCYjMzk7cyB1c2VkIHdpdGhpbiB0aGUgc3lzdGVtLiBUaGlzIHdpbGwgcHJvYmFibHkgaW52b2x2ZSBmdXJ0aGVyIHNlYXJjaGluZyB3aXRoIHNpbWlsYXIgdG9vbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAzOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBURVNUX0hNTSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvS2NvbmZpZy5kZWJ1Zz0zMzQ2PWNvbmZpZyBURVNUX01FTUlOSVRcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzUzLVxubGliL0tjb25maWcuZGVidWc6MzM1NDpjb25maWcgVEVTVF9ITU1cbmxpYi9LY29uZmlnLmRlYnVnLTMzNTUtXHR0cmlzdGF0ZSBcJiMzNDtUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQzMwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBMYW5kc2NhcGUgb2YgVEVTVF9ITU0qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkZXBlbmRlbmN5IHN0cnVjdHVyZSBmb3IgYFRFU1RfSE1NYC4gSSBrbm93IHRoaXMgaXMgYSBrZXkgY29tcG9uZW50LCBzbyB1bmRlcnN0YW5kaW5nIGl0cyByZWxpYW5jZSBvbiBvdGhlciBtb2R1bGVzIG9yIGxpYnJhcmllcyBpcyBjcnVjaWFsLiBJdCYjMzk7cyBub3QganVzdCBhYm91dCBhIHNpbXBsZSBsaXN0LCB0aG91Z2guIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlICpuYXR1cmUqIG9mIHRob3NlIGRlcGVuZGVuY2llcy4gQXJlIHRoZXkgaGFyZCByZXF1aXJlbWVudHMsIG9yIGFyZSB0aGVyZSBzb2Z0IGRlcGVuZGVuY2llcywgcG90ZW50aWFsbHkgaGFuZGxlZCB3aXRoIGdyYWNlZnVsIGRlZ3JhZGF0aW9uIG9yIGZhbGxiYWNrIG1lY2hhbmlzbXM/IFRoYXQmIzM5O3MgZ29pbmcgdG8gZGljdGF0ZSBteSBhcHByb2FjaCB0byB0ZXN0aW5nIGFuZCBhbnkgcG90ZW50aWFsIHJlZmFjdG9yaW5nLiBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiBpc29sYXRlIGBURVNUX0hNTWAgZm9yIGZvY3VzZWQgZGVidWdnaW5nIG9yIGlmIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byB3cmFuZ2xlIGEgd2hvbGUgZWNvc3lzdGVtLiBBcmUgdGhlcmUgYW55IGNpcmN1bGFyIGRlcGVuZGVuY2llcyBJIGhhdmUgdG8gd29ycnkgYWJvdXQ/IFRoYXQmIzM5O3MgYWx3YXlzIGEgZnVuIGhlYWRhY2hlLiBBbmQgb2YgY291cnNlLCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSB2ZXJzaW9ucy4gQXJlIHRoZXJlIHZlcnNpb24gY29uc3RyYWludHMgYXQgcGxheT8gQXJlIHdlIGRlYWxpbmcgd2l0aCBhbnkgZGVwcmVjYXRlZCBkZXBlbmRlbmNpZXM/IFRoZXNlIGNvbnNpZGVyYXRpb25zIHJlYWxseSBkcml2ZSBob3cgSSBhcHByb2FjaCB0aGUgZGVzaWduIGFuZCBpbXBsZW1lbnRhdGlvbi4gVGltZSB0byBjcmFjayBvcGVuIHRoZSBkZXBlbmRlbmN5IGdyYXBoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMzo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVEVTVF9ITU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvS2NvbmZpZy5kZWJ1ZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvS2NvbmZpZy5kZWJ1Zz0zMzQ2PWNvbmZpZyBURVNUX01FTUlOSVRcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzUzLVxubGliL0tjb25maWcuZGVidWc6MzM1NDpjb25maWcgVEVTVF9ITU1cbmxpYi9LY29uZmlnLmRlYnVnLTMzNTUtXHR0cmlzdGF0ZSBcJiMzNDtUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTgwNAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBEZWJ1Z2dpbmcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIHNwZWNpZmljIGFib3V0IHRoZSBkZWJ1Z2dpbmcgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBwcm9qZWN0LiBHaXZlbiBteSBmYW1pbGlhcml0eSB3aXRoIHRoZSBjb2RlYmFzZSwgbXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCBmb3IgdGhlIEtjb25maWcgZmlsZS4gSSYjMzk7bSB0aGlua2luZyB0aGUgcmVsZXZhbnQgc2VjdGlvbiBpcyBwcm9iYWJseSBsb2NhdGVkIGFyb3VuZCBsaW5lIDMzNTQgaW4gYGxpYi9LY29uZmlnLmRlYnVnYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBsb3ctbGV2ZWwgZGV0YWlscyByZWxhdGVkIHRvIGRlYnVnIGZlYXR1cmVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIHRoZXJlLiBJJiMzOTttIGFudGljaXBhdGluZyBzb21lIGdyYW51bGFyIGNvbnRyb2xzLi4uIGhvcGVmdWxseSwgaXQmIzM5O3Mgd2VsbC1kb2N1bWVudGVkISBUaW1lIHRvIGRpZyBpbiBhbmQgcGlucG9pbnQgdGhlIHNwZWNpZmljIHNldHRpbmdzIEkgbmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtsaWIvS2NvbmZpZy5kZWJ1ZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzM1MDpcdFx0ICBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gdGVzdCBpbml0X29uX2FsbG9jIGFuZCBpbml0X29uX2ZyZWUgZmVhdHVyZXMuXG4zMzUxOlx0XG4zMzUyOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4zMzUzOlx0XG4zMzU0Olx0Y29uZmlnIFRFU1RfSE1NXG4zMzU1Olx0XHR0cmlzdGF0ZSBcJiMzNDtUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcJiMzNDtcbjMzNTY6XHRcdGRlcGVuZHMgb24gVFJBTlNQQVJFTlRfSFVHRVBBR0VcbjMzNTc6XHRcdGRlcGVuZHMgb24gREVWSUNFX1BSSVZBVEVcbjMzNTg6XHRcdHNlbGVjdCBITU1fTUlSUk9SXG4zMzU5Olx0XHRzZWxlY3QgTU1VX05PVElGSUVSXG4zMzYwOlx0XHRoZWxwXG4zMzYxOlx0XHQgIFRoaXMgaXMgYSBwc2V1ZG8gZGV2aWNlIGRyaXZlciBzb2xlbHkgZm9yIHRlc3RpbmcgSE1NLlxuMzM2MjpcdFx0ICBTYXkgTSBoZXJlIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHRoZSBITU0gdGVzdCBtb2R1bGUuXG4zMzYzOlx0XHQgIERvaW5nIHNvIHdpbGwgYWxsb3cgeW91IHRvIHJ1biB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0L3ZtL2htbS10ZXN0cy5cbjMzNjQ6XHRcbjMzNjU6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbjMzNjY6XHRcbjMzNjc6XHRjb25maWcgVEVTVF9GUkVFX1BBR0VTXG4zMzY4Olx0XHR0cmlzdGF0ZSBcJiMzNDtUZXN0IGZyZWVpbmcgcGFnZXNcJiMzNDtcbjMzNjk6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzMDgKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGlubmVyIG1vbm9sb2d1ZToKCioqRGVwZW5kZW5jeSBEZWVwIERpdmU6IFRFU1RfSE1NIGFuZCBERVZJQ0VfUFJJVkFURSoqCgpBbHJpZ2h0LCBzbyBgVEVTVF9ITU1gIGhhcyBhIGNvdXBsZSBvZiBkZXBlbmRlbmNpZXMsIG5hbWVseSBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGFuZCBgREVWSUNFX1BSSVZBVEVgLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgY29ubmVjdGlvbiB3aXRoIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgbWFrZXMgc2Vuc2U7IHBlcmZvcm1hbmNlIG9mdGVuIGhpbmdlcyBvbiBtZW1vcnkgbWFuYWdlbWVudCBhbmQgdGhhdCYjMzk7cyBhIGNvbW1vbiBwYWlyaW5nLiBCdXQgYERFVklDRV9QUklWQVRFYC4uLiB0aGF0JiMzOTtzIHRoZSBtb3JlIGludHJpZ3Vpbmcgb25lIGluIHRoaXMgY2FzZS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgYml0IGZpcnN0LCBzaW5jZSBpdCYjMzk7cyBsZXNzIG9idmlvdXMgd2h5IHRoYXQgaXMgYSBkZXBlbmRlbmN5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHJvbGUgYERFVklDRV9QUklWQVRFYCBwbGF5cyBoZXJlIGFuZCB3aHkgaXRzIHByZXNlbmNlIG9yIGFic2VuY2Ugd291bGQgaGF2ZSBhIGRpcmVjdCBpbXBhY3Qgb24gdGhlIGV4ZWN1dGlvbiBvciB0ZXN0YWJpbGl0eSBvZiBgVEVTVF9ITU1gLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gb3IgdGhlIGNvZGUgZGlyZWN0bHkgdG8gY29uZmlybS4gVGhpcyYjMzk7bGwgcmVxdWlyZSBtZSB0byBpbnZlc3RpZ2F0ZSB0aGUgZGV0YWlscyBvZiBgREVWSUNFX1BSSVZBVEVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMzo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgREVWSUNFX1BSSVZBVEUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz0xMjY0PWNvbmZpZyBHRVRfRlJFRV9SRUdJT05cbi0tXG5tbS9LY29uZmlnLTEyNjYtXG5tbS9LY29uZmlnOjEyNjc6Y29uZmlnIERFVklDRV9QUklWQVRFXG5tbS9LY29uZmlnLTEyNjgtXHRib29sIFwmIzM0O1VuYWRkcmVzc2FibGUgZGV2aWNlIG1lbW9yeSAoR1BVIG1lbW9yeSwgLi4uKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMzo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDY1MwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIGhvdyB0aGlzIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgaGFuZGxlZC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYG1tL0tjb25maWdgLiBJdCYjMzk7cyBhIGtleSBmaWxlIGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0sIGFuZCBhcm91bmQgbGluZSAxMjY3IHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHBsYWNlIHRvIGJlZ2luLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9yIHJlbGV2YW50IGRlcGVuZGVuY2llcyBmb3Igd2hhdGV2ZXIgb3B0aW9uIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGguIEtub3dpbmcgdGhlIHNwZWNpZmljIGxpbmUgcmFuZ2UgaGVscHMgbWUgbmF2aWdhdGUgZWZmaWNpZW50bHkgYW5kIGF2b2lkIGdldHRpbmcgbG9zdCBpbiB0aGUgYnJvYWRlciBjb25maWd1cmF0aW9uIHNwYWNlLiBJJiMzOTttIGhvcGluZyBpdCYjMzk7cyBhIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIGRlZmluaXRpb24g4oCTIG1heWJlIGEgc2ltcGxlIGBjb25maWdgIGJsb2NrIHdpdGggc29tZSBkZXBlbmRlbmNpZXMgb3IgYSB0cmlzdGF0ZSBvcHRpb24uIE9yIHBlcmhhcHMgdGhpcyBhcmVhIGRlYWxzIHdpdGggaG93IHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSBzcGVjaWZpYyBvcHRpb24gaXMgY29uZmlndXJlZC4gRWl0aGVyIHdheSwgdGhpcyBzaG91bGQgYmUgdGhlIHN0YXJ0aW5nIHBvaW50IHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24mIzM5O3MgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMzo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyNjA6XHRjb25maWcgSE1NX01JUlJPUlxuMTI2MTpcdFx0Ym9vbFxuMTI2MjpcdFx0ZGVwZW5kcyBvbiBNTVVcbjEyNjM6XHRcbjEyNjQ6XHRjb25maWcgR0VUX0ZSRUVfUkVHSU9OXG4xMjY1Olx0XHRib29sXG4xMjY2Olx0XG4xMjY3Olx0Y29uZmlnIERFVklDRV9QUklWQVRFXG4xMjY4Olx0XHRib29sIFwmIzM0O1VuYWRkcmVzc2FibGUgZGV2aWNlIG1lbW9yeSAoR1BVIG1lbW9yeSwgLi4uKVwmIzM0O1xuMTI2OTpcdFx0ZGVwZW5kcyBvbiBaT05FX0RFVklDRVxuMTI3MDpcdFx0c2VsZWN0IEdFVF9GUkVFX1JFR0lPTlxuMTI3MTpcdFxuMTI3MjpcdFx0aGVscFxuMTI3MzpcdFx0ICBBbGxvd3MgY3JlYXRpb24gb2Ygc3RydWN0IHBhZ2VzIHRvIHJlcHJlc2VudCB1bmFkZHJlc3NhYmxlIGRldmljZVxuMTI3NDpcdFx0ICBtZW1vcnk7IGkuZS4sIG1lbW9yeSB0aGF0IGlzIG9ubHkgYWNjZXNzaWJsZSBmcm9tIHRoZSBkZXZpY2UgKG9yXG4xMjc1Olx0XHQgIGdyb3VwIG9mIGRldmljZXMpLiBZb3UgbGlrZWx5IGFsc28gd2FudCB0byBzZWxlY3QgSE1NX01JUlJPUi5cbjEyNzY6XHRcbjEyNzc6XHRjb25maWcgVk1BUF9QRk5cbjEyNzg6XHRcdGJvb2xcbjEyNzk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExNDgKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzczoKCioqRGVwZW5kZW5jeSBDaGVjazogRGl2aW5nIGludG8gWm9uZV9EZXZpY2UqKgoKT2theSwgc28gSSYjMzk7dmUgaGl0IGEgcG9pbnQgd2hlcmUgbXkgbWVudGFsIG1vZGVsIG9mIHRoZSBzeXN0ZW0gcmVxdWlyZXMgbWUgdG8gdW5kZXJzdGFuZCBgREVWSUNFX1BSSVZBVEVgLiBCdXQgSSBrbm93IGBERVZJQ0VfUFJJVkFURWAgcmVsaWVzIG9uIGBaT05FX0RFVklDRWAuICBUaGVyZWZvcmUsIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGBaT05FX0RFVklDRWAuICBJIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIHRoYXQgbW9kdWxlIG9yIGNvbmNlcHQgKmZpcnN0Ki4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHJldmlldyBldmVyeXRoaW5nIEkga25vdyAob3IsIG1vcmUgbGlrZWx5LCBuZWVkIHRvIHJlbGVhcm4pIGFib3V0IGBaT05FX0RFVklDRWAgYmVmb3JlIEkgY2FuIG1vdmUgZm9yd2FyZCB3aXRoIGEgdHJ1bHkgaW5mb3JtZWQgZ3Jhc3Agb2YgYERFVklDRV9QUklWQVRFYC4gTGV0JiMzOTtzIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDM6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFpPTkVfREVWSUNFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9MTIzMT1jb25maWcgWk9ORV9ETUEzMlxuLS1cbm1tL0tjb25maWctMTIzNS1cbm1tL0tjb25maWc6MTIzNjpjb25maWcgWk9ORV9ERVZJQ0Vcbm1tL0tjb25maWctMTIzNy1cdGJvb2wgXCYjMzQ7RGV2aWNlIG1lbW9yeSAocG1lbSwgSE1NLCBldGMuLi4pIGhvdHBsdWcgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMzo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQyMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIE1hemUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYG1tL0tjb25maWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBhaW1pbmcgZm9yIGFyb3VuZCBsaW5lIDEyMzYuIEdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSwgSSBzdXNwZWN0IHRoYXQgc2VjdGlvbiBtaWdodCBob2xkIGNsdWVzIGFib3V0IGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24gb3IgcmVsYXRlZCBkZXBlbmRlbmNpZXMgSSYjMzk7dmUgYmVlbiBjb25zaWRlcmluZy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBpbmZvcm1hdGlvbiBwZXJ0YWluaW5nIHRvIHNvbWUgbWVtb3J5IG1hbmFnZW1lbnQgZmVhdHVyZSBvciBhIGNvbmZpZ3VyYXRpb24ga25vYiB0aGF0IG1pZ2h0IGJlIGNydWNpYWwgdG8gc29tZSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gSSYjMzk7bSB3b3JraW5nIHRocm91Z2gsIG9yIHBvc3NpYmx5IGV2ZW4gZGVidWdnaW5nLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgaGFzIHRvIHNheSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDQ6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTIzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMjMwOlx0XG4xMjMxOlx0Y29uZmlnIFpPTkVfRE1BMzJcbjEyMzI6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBETUEzMiB6b25lXCYjMzQ7IGlmIEFSQ0hfSEFTX1pPTkVfRE1BX1NFVFxuMTIzMzpcdFx0ZGVwZW5kcyBvbiAhWDg2XzMyXG4xMjM0Olx0XHRkZWZhdWx0IHkgaWYgQVJNNjRcbjEyMzU6XHRcbjEyMzY6XHRjb25maWcgWk9ORV9ERVZJQ0VcbjEyMzc6XHRcdGJvb2wgXCYjMzQ7RGV2aWNlIG1lbW9yeSAocG1lbSwgSE1NLCBldGMuLi4pIGhvdHBsdWcgc3VwcG9ydFwmIzM0O1xuMTIzODpcdFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUExVR1xuMTIzOTpcdFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUkVNT1ZFXG4xMjQwOlx0XHRkZXBlbmRzIG9uIFNQQVJTRU1FTV9WTUVNTUFQXG4xMjQxOlx0XHRzZWxlY3QgWEFSUkFZX01VTFRJXG4xMjQyOlx0XG4xMjQzOlx0XHRoZWxwXG4xMjQ0Olx0XHQgIERldmljZSBtZW1vcnkgaG90cGx1ZyBzdXBwb3J0IGFsbG93cyBmb3IgZXN0YWJsaXNoaW5nIHBtZW0sXG4xMjQ1Olx0XHQgIG9yIG90aGVyIGRldmljZSBkcml2ZXIgZGlzY292ZXJlZCBtZW1vcnkgcmVnaW9ucywgaW4gdGhlXG4xMjQ2Olx0XHQgIG1lbW1hcC4gVGhpcyBhbGxvd3MgcGZuX3RvX3BhZ2UoKSBsb29rdXBzIG9mIG90aGVyd2lzZVxuMTI0NzpcdFx0ICBcJiMzNDtkZXZpY2UtcGh5c2ljYWxcJiMzNDsgYWRkcmVzc2VzIHdoaWNoIGlzIG5lZWRlZCBmb3IgREFYLCBQQ0lfUDJQRE1BLCBhbmRcbjEyNDg6XHRcdCAgREVWSUNFX1BSSVZBVEUgZmVhdHVyZXMgYW1vbmcgb3RoZXJzLlxuMTI0OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTkzNwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDUyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBEZXZpY2UgUGFnZSBNaWdyYXRpb24gQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHRvdWNoZXMgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGluIGBtbS9taWdyYXRlX2RldmljZS5jYC4gVGhpcyBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIHRoYXQgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLCBhbmQgdGhlIHBhdGNoIGl0c2VsZiBhZGRzIHNvbWUgYFZNX1dBUk5fT05fT05DRWAgYW5kIG1hcHBpbmcgY29kZS4gTG9va3MgbGlrZSB0aGlzIGlzIGFsbCBhYm91dCBkZXZpY2UgcGFnZSBtaWdyYXRpb24uIEkgY2FuIHNlZSB0aGF0IHRoaXMgaXMgcmVsYXRlZCB0byB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8gZGV2aWNlIGRyaXZlciwgd2hpY2ggaXMgZ3JlYXQgYmVjYXVzZSB0aGF0IGFsbG93cyB1cyB0byB0ZXN0IEhNTSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMg4oCTIGlkZWFsIGZvciBmdXp6aW5nLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvZGUgZmxvdy4gU2luY2UgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGlzIHN0YXRpYywgSSYjMzk7bSBnb2luZyB0byBmb2N1cyBvbiBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLCB3aGljaCBhcmUgdGhlIGVudHJ5IHBvaW50cy4gSSYjMzk7dmUgY29uZmlybWVkIHRoZXkgYXJlICpleHBvcnRlZCogdmlhIGBFWFBPUlRfU1lNQk9MYCwgc28gSSBzaG91bGQgYmUgYWJsZSB0byBnZXQgYXQgdGhlbS4KCkxldCBtZSBjaGVjayB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY2FsbCBzaXRlcyBpbiBgbW0vbWlncmF0ZV9kZXZpY2UuY2AgdGhhdCBjYWxsIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYnV0IHNvIGZhciBpdCBsb29rcyBsaWtlIGp1c3QgdGhvc2UgdHdvLgoKTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3MuIEkmIzM5O3ZlIGdvdDogYFRFU1RfSE1NYCwgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCwgYERFVklDRV9QUklWQVRFYCwgYFpPTkVfREVWSUNFYCwgYE1FTU9SWV9IT1RQTFVHYCwgYE1FTU9SWV9IT1RSRU1PVkVgLCBhbmQgYFNQQVJTRU1FTV9WTUVNTUFQYC4gSXQgbG9va3MgbGlrZSBgVEVTVF9ITU1gIGlzIHRoZSBjb3JlIGRyaXZlciBmb3IgdGhlIGNvZGUsIGl0IGRlcGVuZHMgb24gYEhNTV9NSVJST1JgIGFuZCBgTU1VX05PVElGSUVSYCwgYW5kIGZ1cnRoZXIgZGVwZW5kcyBvbiBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGFuZCBgREVWSUNFX1BSSVZBVEVgLiBgREVWSUNFX1BSSVZBVEVgIGRlcGVuZHMgb24gYFpPTkVfREVWSUNFYCwgd2hpY2ggaXRzZWxmIGRlcGVuZHMgb24gdGhlIHN0YW5kYXJkIGNvbmZpZ3M6IGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYW5kIGBTUEFSU0VNRU1fVk1FTU1BUGAuIEV4Y2VsbGVudCwgdGhlc2UgbG9vayBmYWlybHkgc3RhbmRhcmQuCgpGaW5hbGx5LCBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGVuYWJsaW5nIGBERVZJQ0VfUFJJVkFURWAgY29tcGlsZXMgaW4gYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYC4gSWYgdGhhdCBhbGwgY2hlY2tzIG91dCwgSSYjMzk7bSByZWFkeSB0byBiZWdpbiBmdXp6aW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttaWdyYXRlX2RldmljZS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vTWFrZWZpbGU9OTk9b2JqLSQoQ09ORklHX05VTUEpICYjNDM7PSBtZW1vcnktdGllcnMub1xubW0vTWFrZWZpbGU6MTAwOm9iai0kKENPTkZJR19ERVZJQ0VfTUlHUkFUSU9OKSAmIzQzOz0gbWlncmF0ZV9kZXZpY2Uub1xubW0vTWFrZWZpbGUtMTAxLW9iai0kKENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRSkgJiM0Mzs9IGh1Z2VfbWVtb3J5Lm8ga2h1Z2VwYWdlZC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA0OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMDYyCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gRGV2aWNlIE1pZ3JhdGlvbiBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIGBDT05GSUdfREVWSUNFX01JR1JBVElPTmAgaGFzIHBvcHBlZCB1cCBhZ2Fpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlIGFuZCBpbXBsaWNhdGlvbnMuIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHRyYWNlIGl0cyBkZWZpbml0aW9uLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSB2YXJpb3VzIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgSSYjMzk7bSBmYW1pbGlhciB3aXRoIGluIHRoZSBzeXN0ZW0sIGFuZCB3aGVyZSB0aGlzIG1pZ3JhdGlvbiBzdXBwb3J0IG1pZ2h0IGJlIGNvbmRpdGlvbmFsbHkgZW5hYmxlZC4gSXMgaXQgaW4gdGhlIGNvcmUga2VybmVsIGNvbmZpZywgYSBwbGF0Zm9ybS1zcGVjaWZpYyBvdmVybGF5LCBvciBwZXJoYXBzIHdpdGhpbiBhIGRyaXZlciBtb2R1bGU/IFVuZGVyc3RhbmRpbmcgaXRzIGNvbnRleHQgd2lsbCBpbW1lZGlhdGVseSBpbmZvcm0gaG93IGl0IHdpbGwgYWZmZWN0IHRoZSBydW50aW1lIGJlaGF2aW9yIG9mIGRldmljZXMgaW4gdGhlIHBsYXRmb3JtLiBHb3R0YSBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgREVWSUNFX01JR1JBVElPTiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnPTY5Nj1jb25maWcgTUlHUkFUSU9OXG4tLVxubW0vS2NvbmZpZy02OTktXG5tbS9LY29uZmlnOjcwMDpjb25maWcgREVWSUNFX01JR1JBVElPTlxubW0vS2NvbmZpZy03MDEtXHRkZWZfYm9vbCBNSUdSQVRJT04gXHUwMDI2XHUwMDI2IFpPTkVfREVWSUNFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA0OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMzIxCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMzE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIGBERVZJQ0VfTUlHUkFUSU9OYCBmdW5jdGlvbmFsaXR5LiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgaXQmIzM5O3MgZ2F0ZWQgYnkgYm90aCBgTUlHUkFUSU9OYCBhbmQgYFpPTkVfREVWSUNFYC4gYE1JR1JBVElPTmAgaXMgYWxtb3N0IGFsd2F5cyBlbmFibGVkIGJ5IGRlZmF1bHQsIHNvIGBaT05FX0RFVklDRWAgaXMgcmVhbGx5IHRoZSBjcnV4IG9mIHRoZSBtYXR0ZXIuCgpOb3csIGBURVNUX0hNTWAgc2VlbXMgcGFydGljdWxhcmx5IHJlbGV2YW50LCBhbmQgaXQgaGFzIGEgY2FzY2FkaW5nIGRlcGVuZGVuY3kg4oCTIGl0IGhpbmdlcyBvbiBgREVWSUNFX1BSSVZBVEVgLCB3aGljaCBpbiB0dXJuIGhpbmdlcyBvbiBgWk9ORV9ERVZJQ0VgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4gVGhpcyBtZWFucyB0aGF0IGVuYWJsaW5nIGBURVNUX0hNTWAgZWZmZWN0aXZlbHkgcHVsbHMgaW4gYERFVklDRV9QUklWQVRFYCBhbmQsIG1vc3QgaW1wb3J0YW50bHksIHRoZSBjb3JlIGBaT05FX0RFVklDRWAsIHdoaWNoIHRoZW4gbmVhdGx5IGJyaW5ncyBgREVWSUNFX01JR1JBVElPTmAgaW50byB0aGUgcGljdHVyZS4KCkxldCYjMzk7cyBkaXZlIGludG8gYGxpYi9LY29uZmlnLmRlYnVnYCBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGBURVNUX0hNTWAgY29uZmlnLiBJIHNlZSBpdCYjMzk7cyBhIHRyaXN0YXRlLCBzbyBpdCBjYW4gYmUgbW9kdWxhcml6ZWQsIGJ1dCBpZiBJIHdhbnQgaXQgc3RhdGljYWxseSBsaW5rZWQsIEkganVzdCBuZWVkIHRvIGV4cGxpY2l0bHkgc2V0IGl0LgoKQmVmb3JlIEkgbW92ZSBvbiwgbGV0JiMzOTtzIHZlcmlmeSB0aG9zZSBkZXBlbmRlbmNpZXMgb2YgYFRFU1RfSE1NYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gb2YgZXZlcnl0aGluZyBJJiMzOTt2ZSBzYWlkLiBJdCBkZXBlbmRzIG9uIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGBERVZJQ0VfUFJJVkFURWAsIGBaT05FX0RFVklDRWAsIGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYW5kIGBTUEFSU0VNRU1fVk1FTU1BUGAuIEkgY2FuIGFkZCBgVEVTVF9ITU1gLCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCBgREVWSUNFX1BSSVZBVEVgIGFuZCBgWk9ORV9ERVZJQ0VgIHRvIGBFbmFibGVDb25maWdzYCwgc28gSSB0aGluayBJIHNob3VsZCBiZSBnb29kLgoKTGV0IG1lIHRha2UgYSBsb29rIGF0IHRoZSBmdW5jdGlvbnMgdGhlbXNlbHZlcy4gTGV0JiMzOTtzIHNlZS4uLiBJJiMzOTt2ZSBnb3QgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgYW5kIGBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb2AuIEl0IGxvb2tzIGxpa2UgYG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvYCBjYWxscyBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCBzbyBpdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi4KCk9rYXksIGxldCYjMzk7cyBjaGVjayBgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9gLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2d1cC5jPTIzMjE9bWlncmF0ZV9sb25ndGVybV91bnBpbm5hYmxlX2ZvbGlvcyhzdHJ1Y3QgbGlzdF9oZWFkICptb3ZhYmxlX2ZvbGlvX2xpc3QsXG4tLVxubW0vZ3VwLmMtMjMzOS1cbm1tL2d1cC5jOjIzNDA6XHRcdFx0aWYgKG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvKGZvbGlvKSkge1xubW0vZ3VwLmMtMjM0MS1cdFx0XHRcdHJldCA9IC1FQlVTWTtcbi0tXG5tbS9pbnRlcm5hbC5oPTE1ODQ9dm9pZCBmcmVlX3pvbmVfZGV2aWNlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xubW0vaW50ZXJuYWwuaDoxNTg1OmludCBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcbm1tL2ludGVybmFsLmgtMTU4Ni1cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEwOTg9c3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTExMjctXHRcdFx0ICogVGhlIG9ubHkgdGltZSB0aGVyZSBpcyBubyB2bWEgaXMgd2hlbiBjYWxsZWQgZnJvbVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMTI4Olx0XHRcdCAqIG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvKCkuIEhvd2V2ZXIgdGhpcyBpc24mIzM5O3Rcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTEyOS1cdFx0XHQgKiBjYWxsZWQgaWYgdGhlIHBhZ2UgY291bGQgbm90IGJlIHVubWFwcGVkLlxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTQ2MT1FWFBPUlRfU1lNQk9MKG1pZ3JhdGVfZGV2aWNlX3BmbnMpO1xuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTQ2Ny0gKi9cbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTQ2ODppbnQgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTQ2OS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA0OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDc1CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIERldmljZSBNaWdyYXRpb24gQ29kZSBhbmQgUmVsZXZhbnQgQ29uZmlndXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgY29kZSwgYW5kIHRoZSBrZXkgZW50cnkgcG9pbnQgZm9yIHRoaXMgZGV2aWNlIG1pZ3JhdGlvbiBzdHVmZiBhcHBlYXJzIHRvIGJlIGBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb2AsIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBtaWdyYXRlX2xvbmd0ZXJtX3VucGlubmFibGVfZm9saW9zYCBpbiBgbW0vZ3VwLmNgLiBUaGF0JiMzOTtzIGEgc29saWQgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZy4gVGhlIHJlbGF0ZWQgZnVuY3Rpb25zIG9mIGludGVyZXN0IGhlcmUgYXJlIGNsZWFybHkgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgYW5kLCBvZiBjb3Vyc2UsIGBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb2AuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIHNlZSBpZiBgVEVTVF9ITU1gIGRpcmVjdGx5IGltcGFjdHMgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQgZG9lcyEgVGhlIGBkbWlycm9yX2RldmljZV9ldmljdF9jaHVua2AgY2FsbHMgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYC4gVGhlbiB0aGVyZSBhcmUgY2FsbHMgdG8gYG1pZ3JhdGVfdm1hX3BhZ2VzYCBmcm9tIGBkbWlycm9yX21pZ3JhdGVfdG9fc3lzdGVtYCwgYGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2VgIGFuZCBgZG1pcnJvcl9kZXZtZW1fZmF1bHRgLiBTbywgeWVhaCwgZW5hYmxpbmcgYFRFU1RfSE1NYCBpcyBkZWZpbml0ZWx5IHRoZSB3YXkgdG8gZ28uCgpOb3csIGxldCYjMzk7cyBjaXJjbGUgYmFjayB0byB0aGUgcGF0Y2ggaW4gcXVlc3Rpb24uIEl0IGZvY3VzZXMgb24gaG93IGBucmAgaXMgcmVzZXQgd2l0aGluIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYC4gSXQmIzM5O3MgZml4aW5nIGEgYnVnIHdoZXJlIGBucmAgd2FzbiYjMzk7dCBiZWluZyBjb3JyZWN0bHkgcmVzZXQgYWZ0ZXIgYSBmb2xpbyBzcGxpdCwgd2hpY2ggbWVhbnMgd2Ugd2VyZSBwb3RlbnRpYWxseSBwcm9jZXNzaW5nIHRoZSB3cm9uZyBudW1iZXIgb2YgcGFnZXMuIEl0IGFsc28gYWRkcyBhIGNydWNpYWwgYG1hcHBpbmcgPSBmb2xpb19tYXBwaW5nKGZvbGlvKTtgIGNhbGwgYmVmb3JlIGBmb2xpb19taWdyYXRlX21hcHBpbmdgIGJlY2F1c2UgYGZvbGlvX2ZyZWVfc3dhcCgpYCBtaWdodCBoYXZlIHJlbW92ZWQgdGhlIGZvbGlvIGZyb20gdGhlIHN3YXAgY2FjaGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkZWVwIHdpdGhpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgZGV2aWNlIG1pZ3JhdGlvbiBwYXRocywgc28sIHllYWgsIEkmIzM5O20gbWFya2luZyB0aGlzIGFzIGBXb3J0aEZ1enppbmcgPSB0cnVlYC4KCkp1c3QgdG8gcmVjYXAgdGhlIGltcG9ydGFudCBzeW1ib2xzOiBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCBgbWlncmF0ZV92bWFfcGFnZXNgLCBhbmQgYG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvYC4KCkFuZCBteSB0YXJnZXQgY29uZmlndXJhdGlvbnMgbmVlZCB0byBiZTogYFRFU1RfSE1NYCwgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCwgYERFVklDRV9QUklWQVRFYCwgYW5kIGBaT05FX0RFVklDRWAuCgpTaW5jZSBgVEVTVF9ITU1gIGRlcGVuZHMgb24gdGhlIG90aGVycywgc3BlY2lmaWNhbGx5IGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgYW5kIGBERVZJQ0VfUFJJVkFURWAsIHdpdGggYERFVklDRV9QUklWQVRFYCBuZWVkaW5nIGBaT05FX0RFVklDRWAsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhvc2UgYXJlIGVuYWJsZWQuIGBaT05FX0RFVklDRWAgYWxzbyBoYXMgZGVwZW5kZW5jaWVzIG9uIGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYW5kIGBTUEFSU0VNRU1fVk1FTU1BUGAuIEkmIzM5O2xsIHByb2JhYmx5IGluY2x1ZGUgYE1FTU9SWV9IT1RQTFVHYCBhbmQgYE1FTU9SWV9IT1RSRU1PVkVgIHRvIGJlIHNhZmUsIHNvIEkmIzM5O2xsIGNoZWNrIHRob3NlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUVNT1JZX0hPVFBMVUcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz01MTk9Y29uZmlnIEFSQ0hfRU5BQkxFX01FTU9SWV9IT1RQTFVHXG4tLVxubW0vS2NvbmZpZy01MjItIyBldmVudHVhbGx5LCB3ZSBjYW4gaGF2ZSB0aGlzIG9wdGlvbiBqdXN0ICYjMzk7c2VsZWN0IFNQQVJTRU1FTSYjMzk7XG5tbS9LY29uZmlnOjUyMzptZW51Y29uZmlnIE1FTU9SWV9IT1RQTFVHXG5tbS9LY29uZmlnLTUyNC1cdGJvb2wgXCYjMzQ7TWVtb3J5IGhvdHBsdWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDQ6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU3MDgKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipNZW1vcnkgSG90LVJlbW92ZSBJbnZlc3RpZ2F0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBGaXJzdCBvcmRlciBvZiBidXNpbmVzczogKk1FTU9SWV9IT1RSRU1PVkUqLiBUaGF0JiMzOTtzIHdoZXJlIHdlIG5lZWQgdG8gc3RhcnQuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIFdoYXQmIzM5O3MgcHJvbXB0aW5nIHRoaXMgY2hlY2s/IElzIGl0IGEgc3BlY2lmaWMgZXJyb3IsIGEgcGVyZm9ybWFuY2UgYW5vbWFseSwgb3IganVzdCBnZW5lcmFsIGN1cmlvc2l0eSBhYm91dCBtZW1vcnkgbWFuYWdlbWVudCBvbiB0aGlzIHBsYXRmb3JtPyBUaGUgZ29hbCwgb2YgY291cnNlLCBpcyB0byBkZXRlcm1pbmUgdGhlIHN0YXRlIG9mIGhvdC1yZW1vdmUgY2FwYWJpbGl0aWVzLiBBcmUgdGhleSBlbmFibGVkPyBQcm9wZXJseSBjb25maWd1cmVkPyBGdW5jdGlvbmluZyBhcyBleHBlY3RlZD8gTXkgZXhwZXJ0IGludHVpdGlvbiBhbHJlYWR5IHN1Z2dlc3RzIGEgZmV3IHBvc3NpYmxlIGFyZWFzIHRvIGludmVzdGlnYXRlLCBkZXBlbmRpbmcgb24gdGhlIGVudmlyb25tZW50IGluIHdoaWNoIHRoaXMgaXMgdGFraW5nIHBsYWNlLiBJcyB0aGlzIG9uIGJhcmUgbWV0YWwsIHZpcnR1YWxpemVkLCBpbiBhIHNwZWNpZmljIGNsb3VkIHByb3ZpZGVyPyBFYWNoIGhhcyBpdHMgb3duIG51YW5jZXMgd2l0aCBob3QtcmVtb3ZlLiBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggdGhlIGZ1bmRhbWVudGFscyBiZWZvcmUgZXhwbG9yaW5nIGFueSBwb3RlbnRpYWwgaXNzdWVzIG9yIGF2ZW51ZXMgZm9yIG9wdGltaXphdGlvbi4gTXkgbmV4dCBzdGVwcyB3aWxsIGRlcGVuZCBlbnRpcmVseSBvbiB3aGF0IEkgZmluZCB3aGVuIEkgaW5zcGVjdCBgTUVNT1JZX0hPVFJFTU9WRWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNRU1PUllfSE9UUkVNT1ZFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9NTg5PWVuZGNob2ljZVxubW0vS2NvbmZpZy01OTAtXG5tbS9LY29uZmlnOjU5MTpjb25maWcgTUVNT1JZX0hPVFJFTU9WRVxubW0vS2NvbmZpZy01OTItXHRib29sIFwmIzM0O0FsbG93IGZvciBtZW1vcnkgaG90IHJlbW92ZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjAxMwoJCQkJCQkJb3V0cHV0OiAxODgKCQkJCQkJCXRob3VnaHRzOiA1MDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgVnVsbmVyYWJpbGl0eSBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCwgd2hpY2ggdG91Y2hlcyBkZXZpY2UgbWVtb3J5IG1pZ3JhdGlvbiBpbiBgbW0vbWlncmF0ZV9kZXZpY2UuY2AsIGxvb2tzIHByb21pc2luZyBmb3IgZnV6emluZy4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBmdW5kYW1lbnRhbCBtZW1vcnkgbWFuYWdlbWVudCByb3V0aW5lcyB0aGF0IGFyZSBjcml0aWNhbCBmb3IgSE1NIGFuZCBkcml2ZXJzLCBlc3BlY2lhbGx5IEdQVXMsIGhhbmRsaW5nIGZvbGlvIHNwbGl0dGluZyBhbmQgc3dhcCBjYWNoZSBtYXBwaW5nIGR1cmluZyBkZXZpY2UgbWVtb3J5IG1pZ3JhdGlvbi4gVGhhdCYjMzk7cyBhIGtleSBhcmVhLgoKSSYjMzk7dmUgbWFkZSBzdXJlIHRvIGluY2x1ZGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGluIG91ciB0ZXN0aW5nIHN0cmF0ZWd5LiBgTUVNT1JZX0hPVFBMVUdgIGFuZCBgTUVNT1JZX0hPVFJFTU9WRWAgYXJlIG9idmlvdXMgY2FuZGlkYXRlcywgZ2l2ZW4gdGhlIGNvbnRleHQuIFRoZW4gd2UgaGF2ZSBgWk9ORV9ERVZJQ0VgIGFuZCBgREVWSUNFX1BSSVZBVEVgLCB3aGljaCBhcmUgY3J1Y2lhbCBmb3IgdGhlIGRldmljZSBtZW1vcnkgaW50ZXJhY3Rpb25zIHRoaXMgcGF0Y2ggbW9kaWZpZXMuIEkmIzM5O3ZlIGFsc28gYWRkZWQgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBzaW5jZSBodWdlcGFnZSBpbnRlcmFjdGlvbnMgY2FuIGV4cG9zZSBpc3N1ZXMgaW4gbWlncmF0aW9uIGxvZ2ljLCBhbmQgYFRFU1RfSE1NYCwgd2hpY2ggcHJvdmlkZXMgYSBrbm93biBnb29kIHBhdGggZm9yIHRlc3RpbmcsIGFuZCB0aGUgY3JpdGljYWwgcGllY2UsIGBTUEFSU0VNRU1fVk1FTU1BUGAuIEFsdGhvdWdoIG9mdGVuIGVuYWJsZWQgYnkgZGVmYXVsdCBvbiB4ODZfNjQsIGl0JiMzOTtzIHdvcnRoIGV4cGxpY2l0bHkgaW5jbHVkaW5nIGZvciB0aG9yb3VnaG5lc3MuCgpJIGFsc28gY2hlY2tlZCB0aGUgZXhwb3J0IHN0YXR1cyBvZiB0aGUgcmVsZXZhbnQgZnVuY3Rpb25zLiBgbWlncmF0ZV92bWFfcGFnZXNgIGFuZCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFyZSBleHBvcnRlZCwgd2hpY2ggaXMgZ29vZCBmb3IgdXMuIGBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb2AgaXNuJiMzOTt0IHN0YXRpYywgYW5kIGl0JiMzOTtzIGRlZmluZWQgaW4gYG1tL2ludGVybmFsLmhgLCBzbyBpdCBpcyBpbmRpcmVjdGx5IGV4cG9zZWQuCgpEaWdnaW5nIGZ1cnRoZXIsIEkgdHJhY2VkIHRoZSBjYWxsIHBhdGhzIHRvIGBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb2AuIEl0JiMzOTtzIHVsdGltYXRlbHkgcmVhY2hhYmxlIHRocm91Z2ggYG1pZ3JhdGVfbG9uZ3Rlcm1fdW5waW5uYWJsZV9mb2xpb3NgIHdoaWNoIGlzIHRoZW4gY2FsbGVkIGZyb20gYGNoZWNrX2FuZF9taWdyYXRlX21vdmFibGVfZm9saW9zYCBhbmQgdGhlbiBgX19ndXBfbG9uZ3Rlcm1fbG9ja2VkYCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgcGluX3VzZXJfcGFnZXNgLiBUaGlzIGNvbmZpcm1zIGl0JiMzOTtzIGFjY2Vzc2libGUgdGhyb3VnaCBpb191cmluZywgUkRNQSwgVkZJTywgYW5kIG90aGVyIGNvbW1vbiBwYXRocyB0aGF0IHdlIGNhbiB0YXJnZXQgaW4gb3VyIGZ1enplci4gU28sIHRoZSBrZXkgZnVuY3Rpb25zIGFyZSBpbmRlZWQgZXhwb3NlZCBhbmQgcmVhY2hhYmxlLgoKQmFzZWQgb24gdGhpcywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCB0aGUgZm9sbG93aW5nIGFyZSB3b3J0aCBmb2N1c2luZyBvbjogYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgYW5kIGBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb2AuIFRoZXNlIGFyZSB0aGUgY29yZSBmdW5jdGlvbnMgdGhhdCBlbmNhcHN1bGF0ZSB0aGUgY29yZSBsb2dpYyB0aGlzIHBhdGNoIHRvdWNoZXMuIFdlIHNob3VsZCBiZSBhYmxlIHRvIHRyaWdnZXIgdGhlIHBhdGNoZWQgY29kZSBpbiBvdXIgZnV6emluZyBzZXR1cC4KClRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2AgaXMgc2V0IHRvIGB0cnVlYCwgYW5kIEkmIzM5O3ZlIGNvbnN0cnVjdGVkIG15IGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AgYWNjb3JkaW5nbHkuIEkgd2lsbCBub3cgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDQ6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RFU1RfSE1NJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1pPTkVfREVWSUNFJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RSRU1PVkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttaWdyYXRlX2RldmljZV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX3ZtYV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgIHRvIGZpeCBmb2xpbyBzcGxpdHRpbmcgYW5kIHN3YXAgY2FjaGUgbWFwcGluZyBkdXJpbmcgZGV2aWNlIG1lbW9yeSBtaWdyYXRpb24uIFRoaXMgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB1c2VkIGJ5IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudCkgYW5kIGRldmljZSBkcml2ZXJzLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8tZGV2aWNlIGRyaXZlciBhbmQgc3RhbmRhcmQgR1VQIChnZXRfdXNlcl9wYWdlcykgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RFU1RfSE1NJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1pPTkVfREVWSUNFJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RSRU1PVkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttaWdyYXRlX2RldmljZV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX3ZtYV9wYWdlcyYjMzQ7LAogICAgJiMzNDttaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgIHRvIGZpeCBmb2xpbyBzcGxpdHRpbmcgYW5kIHN3YXAgY2FjaGUgbWFwcGluZyBkdXJpbmcgZGV2aWNlIG1lbW9yeSBtaWdyYXRpb24uIFRoaXMgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB1c2VkIGJ5IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudCkgYW5kIGRldmljZSBkcml2ZXJzLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8tZGV2aWNlIGRyaXZlciBhbmQgc3RhbmRhcmQgR1VQIChnZXRfdXNlcl9wYWdlcykgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OToxNC42MjEwNTEzNzlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTg4Mzc5NzUxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJURVNUX0hNTVwiLFxuICAgIFwiVFJBTlNQQVJFTlRfSFVHRVBBR0VcIixcbiAgICBcIkRFVklDRV9QUklWQVRFXCIsXG4gICAgXCJaT05FX0RFVklDRVwiLFxuICAgIFwiTUVNT1JZX0hPVFBMVUdcIixcbiAgICBcIk1FTU9SWV9IT1RSRU1PVkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtaWdyYXRlX2RldmljZV9wYWdlc1wiLFxuICAgIFwibWlncmF0ZV92bWFfcGFnZXNcIixcbiAgICBcIm1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGluIGBtbS9taWdyYXRlX2RldmljZS5jYCB0byBmaXggZm9saW8gc3BsaXR0aW5nIGFuZCBzd2FwIGNhY2hlIG1hcHBpbmcgZHVyaW5nIGRldmljZSBtZW1vcnkgbWlncmF0aW9uLiBUaGlzIGlzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgdXNlZCBieSBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpIGFuZCBkZXZpY2UgZHJpdmVycy4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgdGhlIGBURVNUX0hNTWAgcHNldWRvLWRldmljZSBkcml2ZXIgYW5kIHN0YW5kYXJkIEdVUCAoZ2V0X3VzZXJfcGFnZXMpIHBhdGhzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OToxNC42MjEwNTkxMTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNTAxMjEzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDc3YTFkZjYxN2ViZTI2MzJjNmJkYjFmMjViMjk4NDVhMjZiZTQ3ZThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDM6NTk6MTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vbWlncmF0ZV9kZXZpY2UuYyBiL21tL21pZ3JhdGVfZGV2aWNlLmNcXG5pbmRleCA1NTQ3NTRlYjI2ZmYyLi4wZTZmMDAxOTBmZDgzIDEwMDY0NFxcbi0tLSBhL21tL21pZ3JhdGVfZGV2aWNlLmNcXG4rKysgYi9tbS9taWdyYXRlX2RldmljZS5jXFxuQEAgLTExODIsNiArMTE4MiwxMyBAQCBzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHQgTUlHUkFURV9QRk5fQ09NUE9VTkQpO1xcbiBcXHRcXHRcXHRcXHRcXHRnb3RvIG5leHQ7XFxuIFxcdFxcdFxcdFxcdH1cXG4rXFxuK1xcdFxcdFxcdFxcdC8qXFxuK1xcdFxcdFxcdFxcdCAqIHJlc2V0IG5yIHNvIHRoYXQgb25seSBmaXJzdCBhZnRlci1zcGxpdCBmb2xpb1xcbitcXHRcXHRcXHRcXHQgKiBpcyBwcm9jZXNzZWQgYmVsb3dcXG4rXFx0XFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdFxcdFZNX1dBUk5fT05fT05DRShmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSk7XFxuK1xcdFxcdFxcdFxcdG5yID0gMTtcXG4gXFx0XFx0XFx0fSBlbHNlIGlmICgoc3JjX3BmbnNbaV0gXFx1MDAyNiBNSUdSQVRFX1BGTl9NSUdSQVRFKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHRcXHQoZHN0X3BmbnNbaV0gXFx1MDAyNiBNSUdSQVRFX1BGTl9DT01QT1VORCkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0XFx0IShzcmNfcGZuc1tpXSBcXHUwMDI2IE1JR1JBVEVfUEZOX0NPTVBPVU5EKSkge1xcbkBAIC0xMjIxLDYgKzEyMjgsMTIgQEAgc3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcXG4gXFx0XFx0XFx0Zm9saW8gPSBwYWdlX2ZvbGlvKG1pZ3JhdGVfcGZuX3RvX3BhZ2Uoc3JjX3BmbnNbaStqXSkpO1xcbiBcXHRcXHRcXHRuZXdmb2xpbyA9IHBhZ2VfZm9saW8obWlncmF0ZV9wZm5fdG9fcGFnZShkc3RfcGZuc1tpK2pdKSk7XFxuIFxcbitcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHQgKiBmb2xpb19mcmVlX3N3YXAoKSByZW1vdmVkIHRoZSBmb2xpbyBmcm9tIHRoZSBzd2FwXFxuK1xcdFxcdFxcdCAqIGNhY2hlLiBSZWZyZXNoIHRoZSBzYXZlZCBtYXBwaW5nIGJlZm9yZSBtaWdyYXRpb24uXFxuK1xcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRtYXBwaW5nID0gZm9saW9fbWFwcGluZyhmb2xpbyk7XFxuK1xcbiBcXHRcXHRcXHRyID0gZm9saW9fbWlncmF0ZV9tYXBwaW5nKG1hcHBpbmcsIG5ld2ZvbGlvLCBmb2xpbywgZXh0cmFfY250KTtcXG4gXFx0XFx0XFx0aWYgKHIpXFxuIFxcdFxcdFxcdFxcdHNyY19wZm5zW2kral0gXFx1MDAyNj0gfk1JR1JBVEVfUEZOX01JR1JBVEU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjU5OjE1LjE1Njc2MzAxOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjkxMzQ4MDcyODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRFU1RfSE1NXCIsXG4gICAgXCJUUkFOU1BBUkVOVF9IVUdFUEFHRVwiLFxuICAgIFwiREVWSUNFX1BSSVZBVEVcIixcbiAgICBcIlpPTkVfREVWSUNFXCIsXG4gICAgXCJNRU1PUllfSE9UUExVR1wiLFxuICAgIFwiTUVNT1JZX0hPVFJFTU9WRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1pZ3JhdGVfZGV2aWNlX3BhZ2VzXCIsXG4gICAgXCJtaWdyYXRlX3ZtYV9wYWdlc1wiLFxuICAgIFwibWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgIHRvIGZpeCBmb2xpbyBzcGxpdHRpbmcgYW5kIHN3YXAgY2FjaGUgbWFwcGluZyBkdXJpbmcgZGV2aWNlIG1lbW9yeSBtaWdyYXRpb24uIFRoaXMgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB1c2VkIGJ5IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudCkgYW5kIGRldmljZSBkcml2ZXJzLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8tZGV2aWNlIGRyaXZlciBhbmQgc3RhbmRhcmQgR1VQIChnZXRfdXNlcl9wYWdlcykgcGF0aHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc3YTFkZjYxN2ViZTI2MzJjNmJkYjFmMjViMjk4NDVhMjZiZTQ3ZThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAwMzo1OToxMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL21pZ3JhdGVfZGV2aWNlLmMgYi9tbS9taWdyYXRlX2RldmljZS5jXG5pbmRleCA1NTQ3NTRlYjI2ZmYyLi4wZTZmMDAxOTBmZDgzIDEwMDY0NFxuLS0tIGEvbW0vbWlncmF0ZV9kZXZpY2UuY1xuKysrIGIvbW0vbWlncmF0ZV9kZXZpY2UuY1xuQEAgLTExODIsNiArMTE4MiwxMyBAQCBzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxuIFx0XHRcdFx0XHRcdFx0IE1JR1JBVEVfUEZOX0NPTVBPVU5EKTtcbiBcdFx0XHRcdFx0Z290byBuZXh0O1xuIFx0XHRcdFx0fVxuK1xuK1x0XHRcdFx0LypcbitcdFx0XHRcdCAqIHJlc2V0IG5yIHNvIHRoYXQgb25seSBmaXJzdCBhZnRlci1zcGxpdCBmb2xpb1xuK1x0XHRcdFx0ICogaXMgcHJvY2Vzc2VkIGJlbG93XG4rXHRcdFx0XHQgKi9cbitcdFx0XHRcdFZNX1dBUk5fT05fT05DRShmb2xpb190ZXN0X2xhcmdlKGZvbGlvKSk7XG4rXHRcdFx0XHRuciA9IDE7XG4gXHRcdFx0fSBlbHNlIGlmICgoc3JjX3BmbnNbaV0gXHUwMDI2IE1JR1JBVEVfUEZOX01JR1JBVEUpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0KGRzdF9wZm5zW2ldIFx1MDAyNiBNSUdSQVRFX1BGTl9DT01QT1VORCkgXHUwMDI2XHUwMDI2XG4gXHRcdFx0XHQhKHNyY19wZm5zW2ldIFx1MDAyNiBNSUdSQVRFX1BGTl9DT01QT1VORCkpIHtcbkBAIC0xMjIxLDYgKzEyMjgsMTIgQEAgc3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcbiBcdFx0XHRmb2xpbyA9IHBhZ2VfZm9saW8obWlncmF0ZV9wZm5fdG9fcGFnZShzcmNfcGZuc1tpK2pdKSk7XG4gXHRcdFx0bmV3Zm9saW8gPSBwYWdlX2ZvbGlvKG1pZ3JhdGVfcGZuX3RvX3BhZ2UoZHN0X3BmbnNbaStqXSkpO1xuIFxuK1x0XHRcdC8qXG4rXHRcdFx0ICogZm9saW9fZnJlZV9zd2FwKCkgcmVtb3ZlZCB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcFxuK1x0XHRcdCAqIGNhY2hlLiBSZWZyZXNoIHRoZSBzYXZlZCBtYXBwaW5nIGJlZm9yZSBtaWdyYXRpb24uXG4rXHRcdFx0ICovXG4rXHRcdFx0bWFwcGluZyA9IGZvbGlvX21hcHBpbmcoZm9saW8pO1xuK1xuIFx0XHRcdHIgPSBmb2xpb19taWdyYXRlX21hcHBpbmcobWFwcGluZywgbmV3Zm9saW8sIGZvbGlvLCBleHRyYV9jbnQpO1xuIFx0XHRcdGlmIChyKVxuIFx0XHRcdFx0c3JjX3BmbnNbaStqXSBcdTAwMjY9IH5NSUdSQVRFX1BGTl9NSUdSQVRFO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDM6NTk6MTUuMTU2NzY0NjQ3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIwMzQ3MjI1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1pZ3JhdGUgRGV2aWNlIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG1tL21pZ3JhdGVfZGV2aWNlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2VzIGFyZSBpbnRlcmVzdGluZyBhbmQgd29ydGggYSBjbG9zZXIgbG9vay5cblxuRmlyc3QsIHRoZXkndmUgaW5zZXJ0ZWQgYSBgVk1fV0FSTl9PTl9PTkNFKGZvbGlvX3Rlc3RfbGFyZ2UoZm9saW8pKTsgbnIgPSAxO2Agc3RhdGVtZW50IHdpdGhpbiBhIGJsb2NrIHdoZXJlIGBmb2xpb19zcGxpdGAgb3Igc29tZXRoaW5nIHNpbWlsYXIgaXMgaGFwcGVuaW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaHkgdGhlIHdhcm5pbmc/IFdoYXQncyB0aGUgcG90ZW50aWFsIGlzc3VlIHdpdGggbWlncmF0aW5nIGEgbGFyZ2UgZm9saW8gaGVyZT9cIiBJdCBzdWdnZXN0cyB0aGV5J3JlIGVuY291bnRlcmluZyB1bmV4cGVjdGVkIGxhcmdlIGZvbGlvcyBhbmQgd2FudCB0byBmbGFnIHRoYXQuIFRoZSBgbnIgPSAxO2AgaW5kaWNhdGVzIHRoZXkncmUgZm9yY2luZyB0aGUgbWlncmF0aW9uIHRvIHRyZWF0IGl0IGFzIGEgc2luZ2xlIHBhZ2UsIHdoaWNoIGlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGV5J3JlIGRvaW5nIHRoaXMuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNvbmRpdGlvbi4gV2hhdCBpcyBzcGVjaWFsIGFib3V0IHRoZSBtaWdyYXRpb24gb2YgbGFyZ2UgZm9saW9zIGZyb20gb3IgdG8gZGV2aWNlIG1lbW9yeT8gSXMgdGhlcmUgYSBzdWJ0bGUgaW50ZXJhY3Rpb24gd2l0aCBob3cgZGV2aWNlIG1lbW9yeSBpcyBtYW5hZ2VkIGluIHRoaXMgcGFydCBvZiB0aGUga2VybmVsP1xuXG5TZWNvbmRseSwgdGhleSd2ZSBhZGRlZCBgbWFwcGluZyA9IGZvbGlvX21hcHBpbmcoZm9saW8pO2AgYmVmb3JlIHRoZSBjYWxsIHRvIGBmb2xpb19taWdyYXRlX21hcHBpbmdgLiBBaCwgdGhpcyBpcyBtb3JlIHN0cmFpZ2h0Zm9yd2FyZDsgdGhlIGNvbW1lbnQgYWJvdXQgYGZvbGlvX2ZyZWVfc3dhcCgpYCBwb3RlbnRpYWxseSByZW1vdmluZyB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcCBjYWNoZSBtYWtlcyB0aGlzIHBlcmZlY3RseSBjbGVhci4gV2UncmUgZ2V0dGluZyB0aGUgbWFwcGluZyAqYmVmb3JlKiB0aGUgc3dhcC1yZWxhdGVkIG9wZXJhdGlvbnMgdGhhdCBtaWdodCBmcmVlIHRoZSBmb2xpbyBhbmQgaW52YWxpZGF0ZSBgZm9saW8tXHUwMDNlbWFwcGluZ2AuIEEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBwcmV2ZW50aW9uLiBUaGlzIGluZGljYXRlcyBhIHBvdGVudGlhbCBpc3N1ZSB3aGVyZSB0aGUgZm9saW8gY291bGQgYmUgdW5tYXBwZWQgZnJvbSBpdHMgb3JpZ2luYWwgbG9jYXRpb24gKGxpa2VseSB0aGUgc3dhcCBjYWNoZSkgZHVyaW5nIHRoZSBtaWdyYXRpb24gcHJvY2VzcywgcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbiBpZiB3ZSBkaWRuJ3QgY2FwdHVyZSB0aGUgbWFwcGluZyBmaXJzdC4gVGhlIGdvYWwgaGVyZSBpcyB0byBlbnN1cmUgdGhhdCBgZm9saW9fbWlncmF0ZV9tYXBwaW5nYCBoYXMgdGhlIGNvcnJlY3QgYG1hcHBpbmdgIGV2ZW4gaWYgdGhlIGZvbGlvJ3Mgc3dhcCBjYWNoZSBlbnRyeSBiZWNvbWVzIGludmFsaWQuIEknbSBnb2luZyB0byB3YW50IHRvIHZlcmlmeSBleGFjdGx5ICpob3cqIGBmb2xpb19mcmVlX3N3YXAoKWAgaXMgY2FsbGVkIGFuZCBjb25maXJtIHRoYXQgdGhpcyBpcyBhIHZhbGlkIGFuZCBuZWNlc3NhcnkgcHJlY2F1dGlvbi4gTm93LCBsZXQncyBwdWxsIHVwIHRoZSBjb250ZXh0IG9mIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBpbiBgbW0vbWlncmF0ZV9kZXZpY2UuY2AgYW5kIHNlZSB3aGF0J3MgZ29pbmcgb24uLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMwMSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjU5OjIwLjM2MDI0MTEzNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjkxNTgxMjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19taWdyYXRlX2RldmljZV9wYWdlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9taWdyYXRlX2RldmljZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL21pZ3JhdGVfZGV2aWNlLmM9OTY1PXN0YXRpYyB2b2lkIG1pZ3JhdGVfdm1hX2luc2VydF9wYWdlKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTA5Ny1cXG5tbS9taWdyYXRlX2RldmljZS5jOjEwOTg6c3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcXG5tbS9taWdyYXRlX2RldmljZS5jLTEwOTktXFx0XFx0XFx0XFx0dW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsIHVuc2lnbmVkIGxvbmcgbnBhZ2VzLFxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMjYwPXZvaWQgbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsIHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLFxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjYyLXtcXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNjM6XFx0X19taWdyYXRlX2RldmljZV9wYWdlcyhzcmNfcGZucywgZHN0X3BmbnMsIG5wYWdlcywgTlVMTCk7XFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjY0LX1cXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI3NT12b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzYte1xcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI3NzpcXHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKG1pZ3JhdGUtXFx1MDAzZXNyYywgbWlncmF0ZS1cXHUwMDNlZHN0LCBtaWdyYXRlLVxcdTAwM2VucGFnZXMsIG1pZ3JhdGUpO1xcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3OC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjU5OjIwLjc4OTQwNjEwOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MTg0MTg4MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipEaXZpbmcgaW50byB0aGUgUGFnZSBNaWdyYXRpb24gTGFuZHNjYXBlKipcblxuUmlnaHQsIHNvIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBpcyB0aGUgY29yZSBmdW5jdGlvbiBoZXJlLCBhbmQgaXQncyBiZWluZyBjYWxsZWQgYnkgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYC4gSW1tZWRpYXRlbHkgSSdtIHRoaW5raW5nLCB0aGVzZSBhcmUgbGlrZWx5IGV4cG9zZWQgdG8gZGV2aWNlIGRyaXZlcnMsIG1heWJlIHRocm91Z2ggZXhwb3J0cyBvciBzb21lIHNpbWlsYXIgbWVjaGFuaXNtLiBUaGUgbmFtaW5nIGNvbnZlbnRpb24gc3Ryb25nbHkgc3VnZ2VzdHMgd2UncmUgZGVhbGluZyB3aXRoIHBhZ2UgbWlncmF0aW9uLCBwcm9iYWJseSByZWxhdGVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCB0aGUgbW92ZSBvZiBkYXRhIHdpdGhpbiB0aGUgc3lzdGVtLiBXZSdyZSB0YWxraW5nIGxvdy1sZXZlbCBzdHVmZiBoZXJlLCBmdW5kYW1lbnRhbCB0byBob3cgd2UgaGFuZGxlIGRldmljZSBtZW1vcnkuXG5cblRoZSBzaWduaWZpY2FudCB0aGluZyBpcyB0aGF0IGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYW5kIGBtaWdyYXRlX3ZtYV9wYWdlc2AgKm11c3QqIGJlIGltcG9ydGFudCwgc2luY2UgdGhleSBhcmUgY2FsbGluZyB0aGlzIG90aGVyIGZ1bmN0aW9uLiBJIHN1c3BlY3QgdGhleSBjb3VsZCBiZSBob3cgZHJpdmVycyBsaWtlIE5vdXZlYXUsIEFNREdQVSwgb3IgdGhlIEhvc3QgTWVtb3J5IE1hbmFnZXIgYXJlIGFjdHVhbGx5IHRyaWdnZXJpbmcgcGFnZSBtaWdyYXRpb25zLiBUaGVyZWZvcmUsIG15IG5leHQgbW92ZSBpcyBjbGVhcjogSSBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIHVzYWdlIG9mIGJvdGggYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYC4gVW5kZXJzdGFuZGluZyAqd2hlcmUqIGFuZCAqaG93KiB0aGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCB3aWxsIHJldmVhbCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEFyZSB0aGV5IHNwZWNpZmljIHRvIGNlcnRhaW4gaGFyZHdhcmU/IEFyZSB0aGV5IHBhcnQgb2YgYSBsYXJnZXIgbWlncmF0aW9uIGZyYW1ld29yaz8gVGhlIGFuc3dlcnMgYXJlIGNydWNpYWwgdG8gYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNzgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OToyNC4yMDc4Mjc2NThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyMTI1NjgwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtaWdyYXRlX2RldmljZV9wYWdlc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYz0xMTE0PWludCBkcm1fcGFnZW1hcF9ldmljdF90b19yYW0oc3RydWN0IGRybV9wYWdlbWFwX2Rldm1lbSAqZGV2bWVtX2FsbG9jYXRpb24pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy0xMTc5LVxcdFxcdGRybV9wYWdlbWFwX21pZ3JhdGlvbl91bmxvY2tfcHV0X3BhZ2VzKG5wYWdlcywgZHN0KTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYzoxMTgwOlxcdG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKHNyYywgZHN0LCBucGFnZXMpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTExODEtXFx0bWlncmF0ZV9kZXZpY2VfZmluYWxpemUoc3JjLCBkc3QsIG5wYWdlcyk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYz00NzU9bm91dmVhdV9kbWVtX2V2aWN0X2NodW5rKHN0cnVjdCBub3V2ZWF1X2RtZW1fY2h1bmsgKmNodW5rKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtNTE3LVxcdG5vdXZlYXVfZmVuY2VfbmV3KFxcdTAwMjZmZW5jZSwgY2h1bmstXFx1MDAzZWRybS1cXHUwMDNlZG1lbS1cXHUwMDNlbWlncmF0ZS5jaGFuKTtcXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYzo1MTg6XFx0bWlncmF0ZV9kZXZpY2VfcGFnZXMoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMpO1xcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTUxOS1cXHRub3V2ZWF1X2RtZW1fZmVuY2VfZG9uZShcXHUwMDI2ZmVuY2UpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg9MTk4PWludCBtaWdyYXRlX2RldmljZV9wZm5zKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLCB1bnNpZ25lZCBsb25nIG5wYWdlcyk7XFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6MTk5OnZvaWQgbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsIHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLFxcbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oLTIwMC1cXHRcXHRcXHR1bnNpZ25lZCBsb25nIG5wYWdlcyk7XFxuLS1cXG5saWIvdGVzdF9obW0uYz0xODg9c3RhdGljIHZvaWQgZG1pcnJvcl9kZXZpY2VfZXZpY3RfY2h1bmsoc3RydWN0IGRtaXJyb3JfY2h1bmsgKmNodW5rKVxcbi0tXFxubGliL3Rlc3RfaG1tLmMtMjMxLVxcdH1cXG5saWIvdGVzdF9obW0uYzoyMzI6XFx0bWlncmF0ZV9kZXZpY2VfcGFnZXMoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMpO1xcbmxpYi90ZXN0X2htbS5jLTIzMy1cXHRtaWdyYXRlX2RldmljZV9maW5hbGl6ZShzcmNfcGZucywgZHN0X3BmbnMsIG5wYWdlcyk7XFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTk2NT1zdGF0aWMgdm9pZCBtaWdyYXRlX3ZtYV9pbnNlcnRfcGFnZShzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEwOTctXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMDk4OnN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk5LVxcdFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLCB1bnNpZ25lZCBsb25nIG5wYWdlcyxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI1MS0vKipcXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNTI6ICogbWlncmF0ZV9kZXZpY2VfcGFnZXMoKSAtIG1pZ3JhdGUgbWV0YS1kYXRhIGZyb20gc3JjIHBhZ2UgdG8gZHN0IHBhZ2VcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTMtICogQHNyY19wZm5zOiBzcmNfcGZucyByZXR1cm5lZCBmcm9tIG1pZ3JhdGVfZGV2aWNlX3JhbmdlKClcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI1OS0gKi9cXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNjA6dm9pZCBtaWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjYxLVxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgbnBhZ2VzKVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2Mi17XFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjYzOlxcdF9fbWlncmF0ZV9kZXZpY2VfcGFnZXMoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMsIE5VTEwpO1xcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2NC19XFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjY1OkVYUE9SVF9TWU1CT0wobWlncmF0ZV9kZXZpY2VfcGFnZXMpO1xcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2Ni1cXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI3NT12b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzYte1xcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI3NzpcXHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKG1pZ3JhdGUtXFx1MDAzZXNyYywgbWlncmF0ZS1cXHUwMDNlZHN0LCBtaWdyYXRlLVxcdTAwM2VucGFnZXMsIG1pZ3JhdGUpO1xcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3OC19XFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTEzNjg9c3RhdGljIHVuc2lnbmVkIGxvbmcgbWlncmF0ZV9kZXZpY2VfcGZuX2xvY2sodW5zaWduZWQgbG9uZyBwZm4pXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTE0MDAtICogYWxsb2NhdGUgZGVzdGluYXRpb24gcGFnZXMgYW5kIHN0YXJ0IGNvcHlpbmcgZGF0YSBmcm9tIHRoZSBkZXZpY2UgdG8gQ1BVXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxNDAxOiAqIG1lbW9yeSBiZWZvcmUgY2FsbGluZyBtaWdyYXRlX2RldmljZV9wYWdlcygpLlxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTQwMi0gKi9cXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTQ2OD1pbnQgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTQ5Mi1cXG5tbS9taWdyYXRlX2RldmljZS5jOjE0OTM6XFx0bWlncmF0ZV9kZXZpY2VfcGFnZXMoXFx1MDAyNnNyY19wZm4sIFxcdTAwMjZkc3RfcGZuLCAxKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTE0OTQtXFx0aWYgKHNyY19wZm4gXFx1MDAyNiBNSUdSQVRFX1BGTl9NSUdSQVRFKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OToyNS45MjkwOTAxMDNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwMzQxMjU4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtaWdyYXRlX3ZtYV9wYWdlc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL21tL2htbS5yc3Q9MjY0PXVzZSBoYXJkd2FyZSBETUEgb3IgZGV2aWNlIHNwZWNpZmljIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb25zIHRvIG1pZ3JhdGUgZGF0YS5cXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q6MjY1OlRoZSBtaWdyYXRlX3ZtYV9zZXR1cCgpLCBtaWdyYXRlX3ZtYV9wYWdlcygpLCBhbmQgbWlncmF0ZV92bWFfZmluYWxpemUoKVxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdC0yNjYtZnVuY3Rpb25zIGFyZSBkZXNpZ25lZCB0byBtYWtlIGRyaXZlcnMgZWFzaWVyIHRvIHdyaXRlIGFuZCB0byBjZW50cmFsaXplIGNvbW1vblxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0PTI5Nz1iZXR3ZWVuIGRldmljZSBkcml2ZXIgc3BlY2lmaWMgY29kZSBhbmQgc2hhcmVkIGNvbW1vbiBjb2RlOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTM2NC1cXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q6MzY1OjQuIGBgbWlncmF0ZV92bWFfcGFnZXMoKWBgXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTM2Ni1cXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3Q9MjEyPUhNTSDliIfmjaLliLDnm7TmjqXkvb/nlKggc3RydWN0IHBhZ2Ug55So5LqO6K6+5aSH5YaF5a2Y77yM6L+Z5L2/5b6X5aSn5aSa5pWw5YaF5qC45Luj56CB6Lev5b6E5LiN55+l6YGT5beu5byC44CCXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0LTIxOC3nlLHkuo4gQ1BVIOaXoOazleebtOaOpeiuv+mXruiuvuWkh+WGheWtmO+8jOWboOatpOiuvuWkh+mpseWKqOeoi+W6j+W/hemhu+S9v+eUqOehrOS7tiBETUEg5oiW6K6+5aSH54m55a6a55qE5Yqg6L29L+WtmFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3Q6MjE5OuWCqOaMh+S7pOadpei/geenu+aVsOaNruOAgm1pZ3JhdGVfdm1hX3NldHVwKCnjgIFtaWdyYXRlX3ZtYV9wYWdlcygpIOWSjFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3QtMjIwLW1pZ3JhdGVfdm1hX2ZpbmFsaXplKCkg5Ye95pWw5peo5Zyo5L2/6amx5Yqo56iL5bqP5pu05piT5LqO57yW5YaZ5bm26ZuG5Lit6Leo6amx5Yqo56iL5bqP55qE6YCa55So5Luj56CB44CCXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0PTI0Mz1kZXZtX21lbXVubWFwX3BhZ2VzKCkg5ZKMIGRldm1fcmVsZWFzZV9tZW1fcmVnaW9uKCkg5b2T6LWE5rqQ5Y+v5Lul57uR5a6a5YiwIGBgc3RydWN0IGRldmljZWBgLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdC0yOTctXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdDoyOTg6NC4gYGBtaWdyYXRlX3ZtYV9wYWdlcygpYGBcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0LTI5OS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmMtNDktICogMS4ga3ZtLVxcdTAwM2VzcmN1IC0gUHJvdGVjdHMgS1ZNIG1lbXNsb3RzXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYzo1MDogKiAyLiBrdm0tXFx1MDAzZW1tLVxcdTAwM2VtbWFwX2xvY2sgLSBmaW5kX3ZtYSwgbWlncmF0ZV92bWFfcGFnZXMgYW5kIGhlbHBlcnMsIGtzbV9tYWR2aXNlXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy01MS0gKiAzLiBrdm0tXFx1MDAzZWFyY2gudXZtZW1fbG9jayAtIHByb3RlY3RzIHJlYWQvd3JpdGVzIHRvIHV2bWVtIHNsb3RzIHRodXMgYWN0aW5nXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jPTUxMz1zdGF0aWMgaW50IF9fa3ZtcHBjX3N2bV9wYWdlX291dChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmMtNTc4LVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmM6NTc5OlxcdG1pZ3JhdGVfdm1hX3BhZ2VzKFxcdTAwMjZtaWcpO1xcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmMtNTgwLVxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYz03NDA9c3RhdGljIGludCBrdm1wcGNfc3ZtX3BhZ2VfaW4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTc4Ny1cXHQqbWlnLmRzdCA9IG1pZ3JhdGVfcGZuKHBhZ2VfdG9fcGZuKGRwYWdlKSk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYzo3ODg6XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNm1pZyk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy03ODktb3V0X2ZpbmFsaXplOlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYz0zOTQ9c3ZtX21pZ3JhdGVfdm1hX3RvX3ZyYW0oc3RydWN0IGtmZF9ub2RlICpub2RlLCBzdHJ1Y3Qgc3ZtX3JhbmdlICpwcmFuZ2UsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTQ1MS1cXHRyID0gc3ZtX21pZ3JhdGVfY29weV90b192cmFtKG5vZGUsIHByYW5nZSwgXFx1MDAyNm1pZ3JhdGUsIFxcdTAwMjZtZmVuY2UsIHNjcmF0Y2gsIHR0bV9yZXNfb2Zmc2V0KTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jOjQ1MjpcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2bWlncmF0ZSk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYy00NTMtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jPTY5Mz1zdm1fbWlncmF0ZV92bWFfdG9fcmFtKHN0cnVjdCBrZmRfbm9kZSAqbm9kZSwgc3RydWN0IHN2bV9yYW5nZSAqcHJhbmdlLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYy03NTUtXFx0XFx0XFx0XFx0ICAgIHNjcmF0Y2gsIG5wYWdlcyk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYzo3NTY6XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNm1pZ3JhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNzU3LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9NjE2PWludCBkcm1fcGFnZW1hcF9taWdyYXRlX3RvX2Rldm1lbShzdHJ1Y3QgZHJtX3BhZ2VtYXBfZGV2bWVtICpkZXZtZW1fYWxsb2NhdGlvbixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTgxNy1lcnJfYWJvcnRlZF9taWdyYXRpb246XFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM6ODE4OlxcdG1pZ3JhdGVfdm1hX3BhZ2VzKFxcdTAwMjZtaWdyYXRlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy04MTktXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYz0xMjE2PXN0YXRpYyBpbnQgX19kcm1fcGFnZW1hcF9taWdyYXRlX3RvX3JhbShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZhcyxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTEzMDktXFx0XFx0ZHJtX3BhZ2VtYXBfbWlncmF0aW9uX3VubG9ja19wdXRfcGFnZXMobnBhZ2VzLCBtaWdyYXRlLmRzdCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM6MTMxMDpcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2bWlncmF0ZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtMTMxMS1cXHRtaWdyYXRlX3ZtYV9maW5hbGl6ZShcXHUwMDI2bWlncmF0ZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYz0xODM9c3RhdGljIHZtX2ZhdWx0X3Qgbm91dmVhdV9kbWVtX21pZ3JhdGVfdG9fcmFtKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtMjY3LVxcdG5vdXZlYXVfZmVuY2VfbmV3KFxcdTAwMjZmZW5jZSwgZG1lbS1cXHUwMDNlbWlncmF0ZS5jaGFuKTtcXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYzoyNjg6XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNmFyZ3MpO1xcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTI2OS1cXHRub3V2ZWF1X2RtZW1fZmVuY2VfZG9uZShcXHUwMDI2ZmVuY2UpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM9NzgzPXN0YXRpYyB2b2lkIG5vdXZlYXVfZG1lbV9taWdyYXRlX2NodW5rKHN0cnVjdCBub3V2ZWF1X2RybSAqZHJtLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtODA5LVxcdG5vdXZlYXVfZmVuY2VfbmV3KFxcdTAwMjZmZW5jZSwgZHJtLVxcdTAwM2VkbWVtLVxcdTAwM2VtaWdyYXRlLmNoYW4pO1xcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jOjgxMDpcXHRtaWdyYXRlX3ZtYV9wYWdlcyhhcmdzKTtcXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy04MTEtXFx0bm91dmVhdV9kbWVtX2ZlbmNlX2RvbmUoXFx1MDAyNmZlbmNlKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oPTE1OD1zdHJ1Y3QgbWlncmF0ZV92bWEge1xcbi0tXFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtMTY1LVxcdCAqIG1pZ3JhdGVfdm1hX3NldHVwKCksIGFuZCBtdXN0IG5vdCBjaGFuZ2UgdGhlIGRzdCBhcnJheSBhZnRlclxcbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oOjE2NjpcXHQgKiBtaWdyYXRlX3ZtYV9wYWdlcygpIHJldHVybnMuXFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtMTY3LVxcdCAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg9MTkzPWludCBtaWdyYXRlX3ZtYV9zZXR1cChzdHJ1Y3QgbWlncmF0ZV92bWEgKmFyZ3MpO1xcbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oOjE5NDp2b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSk7XFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtMTk1LXZvaWQgbWlncmF0ZV92bWFfZmluYWxpemUoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKTtcXG4tLVxcbmxpYi90ZXN0X2htbS5jPTEwMDQ9c3RhdGljIHZtX2ZhdWx0X3QgZG1pcnJvcl9kZXZtZW1fZmF1bHRfYWxsb2NfYW5kX2NvcHkoc3RydWN0IG1pZ3JhdGVfdm1hICphcmdzLFxcbi0tXFxubGliL3Rlc3RfaG1tLmMtMTA3NS1cXHRcXHRcXHRcXHRcXHQvKiBDbGVhciByZW1haW5pbmcgZHN0IGVudHJpZXMgdG8gYXZvaWRcXG5saWIvdGVzdF9obW0uYzoxMDc2OlxcdFxcdFxcdFxcdFxcdCAqIG1pZ3JhdGVfdm1hX3BhZ2VzL2ZpbmFsaXplKCkgdXNpbmdcXG5saWIvdGVzdF9obW0uYy0xMDc3LVxcdFxcdFxcdFxcdFxcdCAqIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLlxcbi0tXFxubGliL3Rlc3RfaG1tLmM9MTEyMD1zdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19zeXN0ZW0oc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXFxuLS1cXG5saWIvdGVzdF9obW0uYy0xMTc1LVxcbmxpYi90ZXN0X2htbS5jOjExNzY6XFx0XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNmFyZ3MpO1xcbmxpYi90ZXN0X2htbS5jLTExNzctXFx0XFx0Y21kLVxcdTAwM2VjcGFnZXMgKz0gZG1pcnJvcl9zdWNjZXNzZnVsX21pZ3JhdGVkX3BhZ2VzKFxcdTAwMjZhcmdzKTtcXG4tLVxcbmxpYi90ZXN0X2htbS5jPTExODk9c3RhdGljIGludCBkbWlycm9yX21pZ3JhdGVfdG9fZGV2aWNlKHN0cnVjdCBkbWlycm9yICpkbWlycm9yLFxcbi0tXFxubGliL3Rlc3RfaG1tLmMtMTI0OC1cXHRcXHRkbWlycm9yX21pZ3JhdGVfYWxsb2NfYW5kX2NvcHkoXFx1MDAyNmFyZ3MsIGRtaXJyb3IpO1xcbmxpYi90ZXN0X2htbS5jOjEyNDk6XFx0XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNmFyZ3MpO1xcbmxpYi90ZXN0X2htbS5jLTEyNTAtXFx0XFx0ZG1pcnJvcl9taWdyYXRlX2ZpbmFsaXplX2FuZF9tYXAoXFx1MDAyNmFyZ3MsIGRtaXJyb3IpO1xcbi0tXFxubGliL3Rlc3RfaG1tLmM9MTY1Mz1zdGF0aWMgdm1fZmF1bHRfdCBkbWlycm9yX2Rldm1lbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTE3MTgtXFx0fVxcbmxpYi90ZXN0X2htbS5jOjE3MTk6XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNmFyZ3MpO1xcbmxpYi90ZXN0X2htbS5jLTE3MjAtXFx0LypcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9NjU5PXN0YXRpYyB2b2lkIG1pZ3JhdGVfdm1hX3VubWFwKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNjk5LSAqIHRoaXMgY2FuIHN0aWxsIGZhaWwsIGFuZCB0aHVzIGluc2lkZSB0aGUgZGV2aWNlIGRyaXZlciB5b3UgbXVzdCBjaGVjayBpZiB0aGVcXG5tbS9taWdyYXRlX2RldmljZS5jOjcwMDogKiBtaWdyYXRpb24gd2FzIHN1Y2Nlc3NmdWwgZm9yIHRob3NlIGVudHJpZXMgYWZ0ZXIgY2FsbGluZyBtaWdyYXRlX3ZtYV9wYWdlcygpLFxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzAxLSAqIGp1c3QgbGlrZSBmb3IgcmVndWxhciBtaWdyYXRpb24uXFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MDItICpcXG5tbS9taWdyYXRlX2RldmljZS5jOjcwMzogKiBBZnRlciB0aGF0LCB0aGUgY2FsbGVycyBtdXN0IGNhbGwgbWlncmF0ZV92bWFfcGFnZXMoKSB0byBnbyBvdmVyIGVhY2ggZW50cnlcXG5tbS9taWdyYXRlX2RldmljZS5jLTcwNC0gKiBpbiB0aGUgc3JjIGFycmF5IHRoYXQgaGFzIHRoZSBNSUdSQVRFX1BGTl9WQUxJRCBhbmQgTUlHUkFURV9QRk5fTUlHUkFURSBmbGFnXFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MDUtICogc2V0LiBJZiB0aGUgY29ycmVzcG9uZGluZyBlbnRyeSBpbiBkc3QgYXJyYXkgaGFzIE1JR1JBVEVfUEZOX1ZBTElEIGZsYWcgc2V0LFxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6NzA2OiAqIHRoZW4gbWlncmF0ZV92bWFfcGFnZXMoKSB0byBtaWdyYXRlIHN0cnVjdCBwYWdlIGluZm9ybWF0aW9uIGZyb20gdGhlIHNvdXJjZVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzA3LSAqIHN0cnVjdCBwYWdlIHRvIHRoZSBkZXN0aW5hdGlvbiBzdHJ1Y3QgcGFnZS4gIElmIGl0IGZhaWxzIHRvIG1pZ3JhdGUgdGhlXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTcxNC0gKlxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6NzE1OiAqIE9uY2UgbWlncmF0ZV92bWFfcGFnZXMoKSByZXR1cm5zIHRoZSBjYWxsZXIgbWF5IGluc3BlY3Qgd2hpY2ggcGFnZXMgd2VyZVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzE2LSAqIHN1Y2Nlc3NmdWxseSBtaWdyYXRlZCwgYW5kIHdoaWNoIHdlcmUgbm90LiAgU3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkIHBhZ2VzIHdpbGxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzE4LSAqXFxubW0vbWlncmF0ZV9kZXZpY2UuYzo3MTk6ICogSXQgaXMgc2FmZSB0byB1cGRhdGUgZGV2aWNlIHBhZ2UgdGFibGUgYWZ0ZXIgbWlncmF0ZV92bWFfcGFnZXMoKSBiZWNhdXNlXFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MjAtICogYm90aCBkZXN0aW5hdGlvbiBhbmQgc291cmNlIHBhZ2UgYXJlIHN0aWxsIGxvY2tlZCwgYW5kIHRoZSBtbWFwX2xvY2sgaXMgaGVsZFxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMDk4PXN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTYtICpcXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNTc6ICogRXF1aXZhbGVudCB0byBtaWdyYXRlX3ZtYV9wYWdlcygpLiBUaGlzIGlzIGNhbGxlZCB0byBtaWdyYXRlIHN0cnVjdCBwYWdlXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjU4LSAqIG1ldGEtZGF0YSBmcm9tIHNvdXJjZSBzdHJ1Y3QgcGFnZSB0byBkZXN0aW5hdGlvbi5cXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI2NT1FWFBPUlRfU1lNQk9MKG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKTtcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2Ny0vKipcXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNjg6ICogbWlncmF0ZV92bWFfcGFnZXMoKSAtIG1pZ3JhdGUgbWV0YS1kYXRhIGZyb20gc3JjIHBhZ2UgdG8gZHN0IHBhZ2VcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjktICogQG1pZ3JhdGU6IG1pZ3JhdGUgc3RydWN0IGNvbnRhaW5pbmcgYWxsIG1pZ3JhdGlvbiBpbmZvcm1hdGlvblxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjc0LSAqL1xcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI3NTp2b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzYte1xcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjc4LX1cXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzk6RVhQT1JUX1NZTUJPTChtaWdyYXRlX3ZtYV9wYWdlcyk7XFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjgwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OToyNy44MzI1MTQ3MjdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjczNTI1NjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBITU0gUGFnZSBNaWdyYXRpb24gRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZXhwb3J0ZWQgZnVuY3Rpb25zLCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLiBJdCdzIHByZXR0eSBjbGVhciB0aGV5J3JlIHJlbGF0ZWQgdG8gcGFnZSBtaWdyYXRpb24sIHNwZWNpZmljYWxseSBpbiBhIGhldGVyb2dlbmVvdXMgbWVtb3J5IG1hbmFnZW1lbnQgKEhNTSkgY29udGV4dC4gSSBzZWUgdGhleSdyZSB1c2VkIGFjcm9zcyBhIGZldyBrZXkgYXJlYXMsIHdoaWNoIGlzIGludGVyZXN0aW5nOiBgbGliL3Rlc3RfaG1tLmNgLCBgZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmNgLCBgZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmNgLCBgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuY2AsIGFuZCBldmVuIGluIHRoZSBQb3dlclBDIEtWTSBjb2RlIChgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uY2ApLiBUaGlzIHNwYW5zIGEgZGVjZW50IHJhbmdlIG9mIHN1YnN5c3RlbXMuXG5cbmBsaWIvdGVzdF9obW0uY2AgaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBleWUgYXMgYSB0ZXN0aW5nIGdyb3VuZCBmb3IgSE1NLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ20gdGhpbmtpbmcgdGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhleSdyZSB2ZXJpZnlpbmcgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvZiB0aG9zZSBtaWdyYXRpb24gcm91dGluZXMuIEFuZCB0aGUgZmFjdCB0aGF0IGl0J3MgZGVzaWduZWQgZm9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBtYWtlcyBwZXJmZWN0IHNlbnNlIOKAkyBhIGNvbnRyb2xsZWQgZW52aXJvbm1lbnQgaXMgaWRlYWwgZm9yIHRlc3RpbmcgbWVtb3J5IG1pZ3JhdGlvbiBhY3Jvc3MgZGlmZmVyZW50IGRldmljZXMuXG5cblNvLCBsZXQncyBkaXZlIGludG8gYGxpYi90ZXN0X2htbS5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgdGVzdCBpcyBlbmFibGVkLiBJJ2xsIGNoZWNrIGl0cyBidWlsZCBjb25maWd1cmF0aW9uIGFuZCB0aGUgc3BlY2lmaWMgdGVzdCBjYXNlcyB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBzY2VuYXJpb3MgdGhhdCBhcmUgYmVpbmcgdmFsaWRhdGVkIGZvciBwYWdlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIEhNTSBmcmFtZXdvcmsuIEdldHRpbmcgYSBoYW5kbGUgb24gdGhhdCB3aWxsIG9mZmVyIHZhbHVhYmxlIGluc2lnaHQgaW50byBob3cgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCwgdGhlIGtpbmRzIG9mIG1pZ3JhdGlvbnMgaXQgc3VwcG9ydHMsIGFuZCB3aGF0IGZlYXR1cmVzIGFyZSB0ZXN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwNzUsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjU5OjMyLjEwNjA0NTI5NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzUzNjAzMywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGVzdF9obW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjU5OjMyLjE1OTU5MDQ2OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjEzMzY2ODcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGVidWdnaW5nIHRoZSBLY29uZmlnIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBJJ20gdHJ5aW5nIHRvIHRyYWNrIGRvd24gd2hlcmUgdGhpcyBwYXJ0aWN1bGFyIG9wdGlvbiBpcyBkZWZpbmVkIG9yIGNvbnRyb2xsZWQgd2l0aGluIHRoZSBrZXJuZWwncyBLY29uZmlnIHN5c3RlbS4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoZSBjb250ZXh0LCBpcyB0byBqdW1wIGludG8gdGhlIG1vc3QgbGlrZWx5IHBsYWNlcy4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBgbGliL0tjb25maWcuZGVidWdgLiBJdCdzIGEgcHJpbWUgc3VzcGVjdCBmb3IgZGVidWctcmVsYXRlZCBvcHRpb25zLCBzbyBpdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSWYgSSBkb24ndCBmaW5kIHdoYXQgSSdtIGxvb2tpbmcgZm9yIHRoZXJlLCBJJ2xsIG1vdmUgb24gdG8gYG1tL0tjb25maWdgLiBNZW1vcnkgbWFuYWdlbWVudCBvcHRpb25zIG9mdGVuIGhhdmUgaW50ZXJkZXBlbmRlbmNpZXMgd2l0aCBkZWJ1Z2dpbmcgZmxhZ3MsIHNvIEkgY2FuJ3QgcnVsZSB0aGF0IG91dC4gVGhlbiwgYXMgYSBmaW5hbCByZXNvcnQgYmVmb3JlIGEgd2lkZXIgc2VhcmNoLCBJJ2xsIG5lZWQgdG8gcGVlayBhdCBgbGliL01ha2VmaWxlYC4gS2NvbmZpZyBvcHRpb25zIGNhbiBzb21ldGltZXMgYmUgaW5kaXJlY3RseSBjb250cm9sbGVkIHRocm91Z2ggTWFrZWZpbGUgbG9naWMsIHNvIHRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuIFRoZSBnb2FsIGlzIHRvIHF1aWNrbHkgcGlucG9pbnQgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSBvciBNYWtlZmlsZSBydWxlIHRoYXQgZ292ZXJucyB0aGlzIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiwgc28gSSBjYW4gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzLCBkZWZhdWx0cywgYW5kIHBvdGVudGlhbCBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2MTUsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OTozNS4zNzI5NjE5MjlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMjM5MzQzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0ZXN0X2htbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImxpYi9NYWtlZmlsZT0xMDI9b2JqLSQoQ09ORklHX1RFU1RfTE9DS1VQKSArPSB0ZXN0X2xvY2t1cC5vXFxubGliL01ha2VmaWxlOjEwMzpvYmotJChDT05GSUdfVEVTVF9ITU0pICs9IHRlc3RfaG1tLm9cXG5saWIvTWFrZWZpbGUtMTA0LW9iai0kKENPTkZJR19URVNUX0ZSRUVfUEFHRVMpICs9IHRlc3RfZnJlZV9wYWdlcy5vXFxuLS1cXG5saWIvdGVzdF9obW0uYy0zMi1cXG5saWIvdGVzdF9obW0uYzozMzojaW5jbHVkZSBcXFwidGVzdF9obW1fdWFwaS5oXFxcIlxcbmxpYi90ZXN0X2htbS5jLTM0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OTozNS44MDUzNjM0MzhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzMTkxMTE0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKlRyYWNpbmcgRG93biBgQ09ORklHX1RFU1RfSE1NYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGBDT05GSUdfVEVTVF9ITU1gIGlzIGRlZmluZWQuIFRoaXMgaXMgYSBjb21tb24gc3RhcnRpbmcgcG9pbnQgZm9yIGRlYnVnZ2luZyBvciB1bmRlcnN0YW5kaW5nIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGluIGtlcm5lbCBvciBlbWJlZGRlZCBzeXN0ZW1zIGNvZGUuIEknbGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgdG9vbHMgYW5kIHRlY2huaXF1ZXMuIEZpcnN0LCBJIG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSBzY29wZSDigJMgaXMgdGhpcyBhIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5bWJvbCwgYSB1c2VyLXNwYWNlIGRlZmluZSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZW4sIEkgd2lsbCBlbXBsb3kgdG9vbHMgbGlrZSBgZ3JlcGAsIGBmaW5kYCwgb3IgZXZlbiBgY3RhZ3MvY3Njb3BlYCAoaWYgSSBoYXZlIHRoZW0gc2V0IHVwKSB0byBkbyBhIHJlY3Vyc2l2ZSBzZWFyY2ggYWNyb3NzIHRoZSBwcm9qZWN0J3Mgc291cmNlIHRyZWUgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMuIEknbSBleHBlY3RpbmcgdGhpcyB0byBiZSBhIHN0cmFpZ2h0Zm9yd2FyZCBmaW5kLCBnaXZlbiBpdHMgbmFtaW5nIGNvbnZlbnRpb24uIFBlcmhhcHMgaXQncyBpbiBhIGAuY29uZmlnYCBmaWxlLCBvciBtYXliZSBpdCdzIGRlZmluZWQgd2l0aGluIGEgS2NvbmZpZyBmaWxlLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgaGllcmFyY2h5IGlmIGl04oCZcyBhIGNvbmZpZ3VyYXRpb24gc3ltYm9sLiBJZiBpdCdzIGEgcmVndWxhciBgI2RlZmluZWAsIGl0IGNvdWxkIHJlc2lkZSBpbiBhIGhlYWRlciBmaWxlIGFueXdoZXJlIGluIHRoZSBjb2RlLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZGlnIHVwLiBGcm9tIHRoZXJlLCBJJ2xsIHRoZW4gbW92ZSBvbiB0byB0cmFjaW5nIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGhvdyBpdCdzIHVzZWQgd2l0aGluIHRoZSBzeXN0ZW0uIFRoaXMgd2lsbCBwcm9iYWJseSBpbnZvbHZlIGZ1cnRoZXIgc2VhcmNoaW5nIHdpdGggc2ltaWxhciB0b29scy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTAzNiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjU5OjM5LjEzNzI3ODA0NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2MjM1NTQwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVEVTVF9ITU1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL0tjb25maWcuZGVidWc9MzM0Nj1jb25maWcgVEVTVF9NRU1JTklUXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzUzLVxcbmxpYi9LY29uZmlnLmRlYnVnOjMzNTQ6Y29uZmlnIFRFU1RfSE1NXFxubGliL0tjb25maWcuZGVidWctMzM1NS1cXHR0cmlzdGF0ZSBcXFwiVGVzdCBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OTo0MC44OTk2NDExMjNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIxNDQ3ODEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmN5IExhbmRzY2FwZSBvZiBURVNUX0hNTSoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIEZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkZXBlbmRlbmN5IHN0cnVjdHVyZSBmb3IgYFRFU1RfSE1NYC4gSSBrbm93IHRoaXMgaXMgYSBrZXkgY29tcG9uZW50LCBzbyB1bmRlcnN0YW5kaW5nIGl0cyByZWxpYW5jZSBvbiBvdGhlciBtb2R1bGVzIG9yIGxpYnJhcmllcyBpcyBjcnVjaWFsLiBJdCdzIG5vdCBqdXN0IGFib3V0IGEgc2ltcGxlIGxpc3QsIHRob3VnaC4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSAqbmF0dXJlKiBvZiB0aG9zZSBkZXBlbmRlbmNpZXMuIEFyZSB0aGV5IGhhcmQgcmVxdWlyZW1lbnRzLCBvciBhcmUgdGhlcmUgc29mdCBkZXBlbmRlbmNpZXMsIHBvdGVudGlhbGx5IGhhbmRsZWQgd2l0aCBncmFjZWZ1bCBkZWdyYWRhdGlvbiBvciBmYWxsYmFjayBtZWNoYW5pc21zPyBUaGF0J3MgZ29pbmcgdG8gZGljdGF0ZSBteSBhcHByb2FjaCB0byB0ZXN0aW5nIGFuZCBhbnkgcG90ZW50aWFsIHJlZmFjdG9yaW5nLiBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiBpc29sYXRlIGBURVNUX0hNTWAgZm9yIGZvY3VzZWQgZGVidWdnaW5nIG9yIGlmIEknbSBnb2luZyB0byBoYXZlIHRvIHdyYW5nbGUgYSB3aG9sZSBlY29zeXN0ZW0uIEFyZSB0aGVyZSBhbnkgY2lyY3VsYXIgZGVwZW5kZW5jaWVzIEkgaGF2ZSB0byB3b3JyeSBhYm91dD8gVGhhdCdzIGFsd2F5cyBhIGZ1biBoZWFkYWNoZS4gQW5kIG9mIGNvdXJzZSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSB2ZXJzaW9ucy4gQXJlIHRoZXJlIHZlcnNpb24gY29uc3RyYWludHMgYXQgcGxheT8gQXJlIHdlIGRlYWxpbmcgd2l0aCBhbnkgZGVwcmVjYXRlZCBkZXBlbmRlbmNpZXM/IFRoZXNlIGNvbnNpZGVyYXRpb25zIHJlYWxseSBkcml2ZSBob3cgSSBhcHByb2FjaCB0aGUgZGVzaWduIGFuZCBpbXBsZW1lbnRhdGlvbi4gVGltZSB0byBjcmFjayBvcGVuIHRoZSBkZXBlbmRlbmN5IGdyYXBoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDMzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDM6NTk6NDQuMTE0MTIyODg3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODQ5MTcyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVEVTVF9ITU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL0tjb25maWcuZGVidWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL0tjb25maWcuZGVidWc9MzM0Nj1jb25maWcgVEVTVF9NRU1JTklUXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzUzLVxcbmxpYi9LY29uZmlnLmRlYnVnOjMzNTQ6Y29uZmlnIFRFU1RfSE1NXFxubGliL0tjb25maWcuZGVidWctMzM1NS1cXHR0cmlzdGF0ZSBcXFwiVGVzdCBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OTo0NC4xNjI2MjA2MzRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg2MTAxOTYwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIERlYnVnZ2luZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyBzcGVjaWZpYyBhYm91dCB0aGUgZGVidWdnaW5nIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgcHJvamVjdC4gR2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGUgY29kZWJhc2UsIG15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgZm9yIHRoZSBLY29uZmlnIGZpbGUuIEknbSB0aGlua2luZyB0aGUgcmVsZXZhbnQgc2VjdGlvbiBpcyBwcm9iYWJseSBsb2NhdGVkIGFyb3VuZCBsaW5lIDMzNTQgaW4gYGxpYi9LY29uZmlnLmRlYnVnYC4gVGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgbG93LWxldmVsIGRldGFpbHMgcmVsYXRlZCB0byBkZWJ1ZyBmZWF0dXJlcy4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIHRoZXJlLiBJJ20gYW50aWNpcGF0aW5nIHNvbWUgZ3JhbnVsYXIgY29udHJvbHMuLi4gaG9wZWZ1bGx5LCBpdCdzIHdlbGwtZG9jdW1lbnRlZCEgVGltZSB0byBkaWcgaW4gYW5kIHBpbnBvaW50IHRoZSBzcGVjaWZpYyBzZXR0aW5ncyBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MDQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OTo0Ny4wMjM2NDI3NThaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc5NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImxpYi9LY29uZmlnLmRlYnVnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMzNTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMzNTA6XFx0XFx0ICBUaGlzIGNhbiBiZSB1c2VmdWwgdG8gdGVzdCBpbml0X29uX2FsbG9jIGFuZCBpbml0X29uX2ZyZWUgZmVhdHVyZXMuXFxuMzM1MTpcXHRcXG4zMzUyOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4zMzUzOlxcdFxcbjMzNTQ6XFx0Y29uZmlnIFRFU1RfSE1NXFxuMzM1NTpcXHRcXHR0cmlzdGF0ZSBcXFwiVGVzdCBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpXFxcIlxcbjMzNTY6XFx0XFx0ZGVwZW5kcyBvbiBUUkFOU1BBUkVOVF9IVUdFUEFHRVxcbjMzNTc6XFx0XFx0ZGVwZW5kcyBvbiBERVZJQ0VfUFJJVkFURVxcbjMzNTg6XFx0XFx0c2VsZWN0IEhNTV9NSVJST1JcXG4zMzU5OlxcdFxcdHNlbGVjdCBNTVVfTk9USUZJRVJcXG4zMzYwOlxcdFxcdGhlbHBcXG4zMzYxOlxcdFxcdCAgVGhpcyBpcyBhIHBzZXVkbyBkZXZpY2UgZHJpdmVyIHNvbGVseSBmb3IgdGVzdGluZyBITU0uXFxuMzM2MjpcXHRcXHQgIFNheSBNIGhlcmUgaWYgeW91IHdhbnQgdG8gYnVpbGQgdGhlIEhNTSB0ZXN0IG1vZHVsZS5cXG4zMzYzOlxcdFxcdCAgRG9pbmcgc28gd2lsbCBhbGxvdyB5b3UgdG8gcnVuIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3Qvdm0vaG1tLXRlc3RzLlxcbjMzNjQ6XFx0XFxuMzM2NTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuMzM2NjpcXHRcXG4zMzY3OlxcdGNvbmZpZyBURVNUX0ZSRUVfUEFHRVNcXG4zMzY4OlxcdFxcdHRyaXN0YXRlIFxcXCJUZXN0IGZyZWVpbmcgcGFnZXNcXFwiXFxuMzM2OTpcXHRcXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjU5OjQ3LjAyMzkyNDQwOFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzQ4MTgwMDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGlubmVyIG1vbm9sb2d1ZTpcblxuKipEZXBlbmRlbmN5IERlZXAgRGl2ZTogVEVTVF9ITU0gYW5kIERFVklDRV9QUklWQVRFKipcblxuQWxyaWdodCwgc28gYFRFU1RfSE1NYCBoYXMgYSBjb3VwbGUgb2YgZGVwZW5kZW5jaWVzLCBuYW1lbHkgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBhbmQgYERFVklDRV9QUklWQVRFYC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgdGhlIGNvbm5lY3Rpb24gd2l0aCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIG1ha2VzIHNlbnNlOyBwZXJmb3JtYW5jZSBvZnRlbiBoaW5nZXMgb24gbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHRoYXQncyBhIGNvbW1vbiBwYWlyaW5nLiBCdXQgYERFVklDRV9QUklWQVRFYC4uLiB0aGF0J3MgdGhlIG1vcmUgaW50cmlndWluZyBvbmUgaW4gdGhpcyBjYXNlLiBMZXQncyBkaWcgaW50byB0aGF0IGJpdCBmaXJzdCwgc2luY2UgaXQncyBsZXNzIG9idmlvdXMgd2h5IHRoYXQgaXMgYSBkZXBlbmRlbmN5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHJvbGUgYERFVklDRV9QUklWQVRFYCBwbGF5cyBoZXJlIGFuZCB3aHkgaXRzIHByZXNlbmNlIG9yIGFic2VuY2Ugd291bGQgaGF2ZSBhIGRpcmVjdCBpbXBhY3Qgb24gdGhlIGV4ZWN1dGlvbiBvciB0ZXN0YWJpbGl0eSBvZiBgVEVTVF9ITU1gLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gb3IgdGhlIGNvZGUgZGlyZWN0bHkgdG8gY29uZmlybS4gVGhpcydsbCByZXF1aXJlIG1lIHRvIGludmVzdGlnYXRlIHRoZSBkZXRhaWxzIG9mIGBERVZJQ0VfUFJJVkFURWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzA4LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OTo1MC4zNzIxMDc3NzRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDE5NjQxNzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERFVklDRV9QUklWQVRFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTI2ND1jb25maWcgR0VUX0ZSRUVfUkVHSU9OXFxuLS1cXG5tbS9LY29uZmlnLTEyNjYtXFxubW0vS2NvbmZpZzoxMjY3OmNvbmZpZyBERVZJQ0VfUFJJVkFURVxcbm1tL0tjb25maWctMTI2OC1cXHRib29sIFxcXCJVbmFkZHJlc3NhYmxlIGRldmljZSBtZW1vcnkgKEdQVSBtZW1vcnksIC4uLilcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAzOjU5OjUyLjAxNDA3ODY4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjIxNDk1MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgcGFydGljdWxhciBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBoYW5kbGVkLiBMZXQncyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGBtbS9LY29uZmlnYC4gSXQncyBhIGtleSBmaWxlIGluIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0sIGFuZCBhcm91bmQgbGluZSAxMjY3IHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHBsYWNlIHRvIGJlZ2luLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb3IgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIGZvciB3aGF0ZXZlciBvcHRpb24gd2UncmUgZGVhbGluZyB3aXRoLiBLbm93aW5nIHRoZSBzcGVjaWZpYyBsaW5lIHJhbmdlIGhlbHBzIG1lIG5hdmlnYXRlIGVmZmljaWVudGx5IGFuZCBhdm9pZCBnZXR0aW5nIGxvc3QgaW4gdGhlIGJyb2FkZXIgY29uZmlndXJhdGlvbiBzcGFjZS4gSSdtIGhvcGluZyBpdCdzIGEgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgZGVmaW5pdGlvbiDigJMgbWF5YmUgYSBzaW1wbGUgYGNvbmZpZ2AgYmxvY2sgd2l0aCBzb21lIGRlcGVuZGVuY2llcyBvciBhIHRyaXN0YXRlIG9wdGlvbi4gT3IgcGVyaGFwcyB0aGlzIGFyZWEgZGVhbHMgd2l0aCBob3cgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlIHNwZWNpZmljIG9wdGlvbiBpcyBjb25maWd1cmVkLiBFaXRoZXIgd2F5LCB0aGlzIHNob3VsZCBiZSB0aGUgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbidzIGltcGFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2NTMsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OTo1NS4xMzYyMzA4NTVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkxMDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm1tL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTI2MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTI2MDpcXHRjb25maWcgSE1NX01JUlJPUlxcbjEyNjE6XFx0XFx0Ym9vbFxcbjEyNjI6XFx0XFx0ZGVwZW5kcyBvbiBNTVVcXG4xMjYzOlxcdFxcbjEyNjQ6XFx0Y29uZmlnIEdFVF9GUkVFX1JFR0lPTlxcbjEyNjU6XFx0XFx0Ym9vbFxcbjEyNjY6XFx0XFxuMTI2NzpcXHRjb25maWcgREVWSUNFX1BSSVZBVEVcXG4xMjY4OlxcdFxcdGJvb2wgXFxcIlVuYWRkcmVzc2FibGUgZGV2aWNlIG1lbW9yeSAoR1BVIG1lbW9yeSwgLi4uKVxcXCJcXG4xMjY5OlxcdFxcdGRlcGVuZHMgb24gWk9ORV9ERVZJQ0VcXG4xMjcwOlxcdFxcdHNlbGVjdCBHRVRfRlJFRV9SRUdJT05cXG4xMjcxOlxcdFxcbjEyNzI6XFx0XFx0aGVscFxcbjEyNzM6XFx0XFx0ICBBbGxvd3MgY3JlYXRpb24gb2Ygc3RydWN0IHBhZ2VzIHRvIHJlcHJlc2VudCB1bmFkZHJlc3NhYmxlIGRldmljZVxcbjEyNzQ6XFx0XFx0ICBtZW1vcnk7IGkuZS4sIG1lbW9yeSB0aGF0IGlzIG9ubHkgYWNjZXNzaWJsZSBmcm9tIHRoZSBkZXZpY2UgKG9yXFxuMTI3NTpcXHRcXHQgIGdyb3VwIG9mIGRldmljZXMpLiBZb3UgbGlrZWx5IGFsc28gd2FudCB0byBzZWxlY3QgSE1NX01JUlJPUi5cXG4xMjc2OlxcdFxcbjEyNzc6XFx0Y29uZmlnIFZNQVBfUEZOXFxuMTI3ODpcXHRcXHRib29sXFxuMTI3OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDM6NTk6NTUuMTM2NDIyOTk1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NjIxMzI0NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzczpcblxuKipEZXBlbmRlbmN5IENoZWNrOiBEaXZpbmcgaW50byBab25lX0RldmljZSoqXG5cbk9rYXksIHNvIEkndmUgaGl0IGEgcG9pbnQgd2hlcmUgbXkgbWVudGFsIG1vZGVsIG9mIHRoZSBzeXN0ZW0gcmVxdWlyZXMgbWUgdG8gdW5kZXJzdGFuZCBgREVWSUNFX1BSSVZBVEVgLiBCdXQgSSBrbm93IGBERVZJQ0VfUFJJVkFURWAgcmVsaWVzIG9uIGBaT05FX0RFVklDRWAuICBUaGVyZWZvcmUsIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGBaT05FX0RFVklDRWAuICBJIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIHRoYXQgbW9kdWxlIG9yIGNvbmNlcHQgKmZpcnN0Ki4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgcmV2aWV3IGV2ZXJ5dGhpbmcgSSBrbm93IChvciwgbW9yZSBsaWtlbHksIG5lZWQgdG8gcmVsZWFybikgYWJvdXQgYFpPTkVfREVWSUNFYCBiZWZvcmUgSSBjYW4gbW92ZSBmb3J3YXJkIHdpdGggYSB0cnVseSBpbmZvcm1lZCBncmFzcCBvZiBgREVWSUNFX1BSSVZBVEVgLiBMZXQncyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTQ4LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMzo1OTo1Ny45OTg1NTg2MThaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3Mjk3NzMyMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFpPTkVfREVWSUNFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTIzMT1jb25maWcgWk9ORV9ETUEzMlxcbi0tXFxubW0vS2NvbmZpZy0xMjM1LVxcbm1tL0tjb25maWc6MTIzNjpjb25maWcgWk9ORV9ERVZJQ0VcXG5tbS9LY29uZmlnLTEyMzctXFx0Ym9vbCBcXFwiRGV2aWNlIG1lbW9yeSAocG1lbSwgSE1NLCBldGMuLi4pIGhvdHBsdWcgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDM6NTk6NTkuNzI4MzQxODk4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTg4NTg1NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIE1hemUqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgYG1tL0tjb25maWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSdtIGFpbWluZyBmb3IgYXJvdW5kIGxpbmUgMTIzNi4gR2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtLCBJIHN1c3BlY3QgdGhhdCBzZWN0aW9uIG1pZ2h0IGhvbGQgY2x1ZXMgYWJvdXQgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbiBvciByZWxhdGVkIGRlcGVuZGVuY2llcyBJJ3ZlIGJlZW4gY29uc2lkZXJpbmcuIEknbSBleHBlY3RpbmcgdG8gZmluZCBpbmZvcm1hdGlvbiBwZXJ0YWluaW5nIHRvIHNvbWUgbWVtb3J5IG1hbmFnZW1lbnQgZmVhdHVyZSBvciBhIGNvbmZpZ3VyYXRpb24ga25vYiB0aGF0IG1pZ2h0IGJlIGNydWNpYWwgdG8gc29tZSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gSSdtIHdvcmtpbmcgdGhyb3VnaCwgb3IgcG9zc2libHkgZXZlbiBkZWJ1Z2dpbmcuIExldCdzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGhhcyB0byBzYXkhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDIzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDQ6MDA6MDIuNzg3MjA0MjU4WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyMzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEyMzA6XFx0XFxuMTIzMTpcXHRjb25maWcgWk9ORV9ETUEzMlxcbjEyMzI6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBETUEzMiB6b25lXFxcIiBpZiBBUkNIX0hBU19aT05FX0RNQV9TRVRcXG4xMjMzOlxcdFxcdGRlcGVuZHMgb24gIVg4Nl8zMlxcbjEyMzQ6XFx0XFx0ZGVmYXVsdCB5IGlmIEFSTTY0XFxuMTIzNTpcXHRcXG4xMjM2OlxcdGNvbmZpZyBaT05FX0RFVklDRVxcbjEyMzc6XFx0XFx0Ym9vbCBcXFwiRGV2aWNlIG1lbW9yeSAocG1lbSwgSE1NLCBldGMuLi4pIGhvdHBsdWcgc3VwcG9ydFxcXCJcXG4xMjM4OlxcdFxcdGRlcGVuZHMgb24gTUVNT1JZX0hPVFBMVUdcXG4xMjM5OlxcdFxcdGRlcGVuZHMgb24gTUVNT1JZX0hPVFJFTU9WRVxcbjEyNDA6XFx0XFx0ZGVwZW5kcyBvbiBTUEFSU0VNRU1fVk1FTU1BUFxcbjEyNDE6XFx0XFx0c2VsZWN0IFhBUlJBWV9NVUxUSVxcbjEyNDI6XFx0XFxuMTI0MzpcXHRcXHRoZWxwXFxuMTI0NDpcXHRcXHQgIERldmljZSBtZW1vcnkgaG90cGx1ZyBzdXBwb3J0IGFsbG93cyBmb3IgZXN0YWJsaXNoaW5nIHBtZW0sXFxuMTI0NTpcXHRcXHQgIG9yIG90aGVyIGRldmljZSBkcml2ZXIgZGlzY292ZXJlZCBtZW1vcnkgcmVnaW9ucywgaW4gdGhlXFxuMTI0NjpcXHRcXHQgIG1lbW1hcC4gVGhpcyBhbGxvd3MgcGZuX3RvX3BhZ2UoKSBsb29rdXBzIG9mIG90aGVyd2lzZVxcbjEyNDc6XFx0XFx0ICBcXFwiZGV2aWNlLXBoeXNpY2FsXFxcIiBhZGRyZXNzZXMgd2hpY2ggaXMgbmVlZGVkIGZvciBEQVgsIFBDSV9QMlBETUEsIGFuZFxcbjEyNDg6XFx0XFx0ICBERVZJQ0VfUFJJVkFURSBmZWF0dXJlcyBhbW9uZyBvdGhlcnMuXFxuMTI0OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDQ6MDA6MDIuNzg3MzU0MjE4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNDE0NjE0MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgRGV2aWNlIFBhZ2UgTWlncmF0aW9uIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgLiBUaGlzIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgdGhhdCBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYW5kIGBtaWdyYXRlX3ZtYV9wYWdlc2AsIGFuZCB0aGUgcGF0Y2ggaXRzZWxmIGFkZHMgc29tZSBgVk1fV0FSTl9PTl9PTkNFYCBhbmQgbWFwcGluZyBjb2RlLiBMb29rcyBsaWtlIHRoaXMgaXMgYWxsIGFib3V0IGRldmljZSBwYWdlIG1pZ3JhdGlvbi4gSSBjYW4gc2VlIHRoYXQgdGhpcyBpcyByZWxhdGVkIHRvIHRoZSBgVEVTVF9ITU1gIHBzZXVkbyBkZXZpY2UgZHJpdmVyLCB3aGljaCBpcyBncmVhdCBiZWNhdXNlIHRoYXQgYWxsb3dzIHVzIHRvIHRlc3QgSE1NIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyDigJMgaWRlYWwgZm9yIGZ1enppbmcuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBjb2RlIGZsb3cuIFNpbmNlIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBpcyBzdGF0aWMsIEknbSBnb2luZyB0byBmb2N1cyBvbiBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLCB3aGljaCBhcmUgdGhlIGVudHJ5IHBvaW50cy4gSSd2ZSBjb25maXJtZWQgdGhleSBhcmUgKmV4cG9ydGVkKiB2aWEgYEVYUE9SVF9TWU1CT0xgLCBzbyBJIHNob3VsZCBiZSBhYmxlIHRvIGdldCBhdCB0aGVtLlxuXG5MZXQgbWUgY2hlY2sgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgY2FsbCBzaXRlcyBpbiBgbW0vbWlncmF0ZV9kZXZpY2UuY2AgdGhhdCBjYWxsIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYnV0IHNvIGZhciBpdCBsb29rcyBsaWtlIGp1c3QgdGhvc2UgdHdvLlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgdGhlIG5lY2Vzc2FyeSBjb25maWdzLiBJJ3ZlIGdvdDogYFRFU1RfSE1NYCwgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCwgYERFVklDRV9QUklWQVRFYCwgYFpPTkVfREVWSUNFYCwgYE1FTU9SWV9IT1RQTFVHYCwgYE1FTU9SWV9IT1RSRU1PVkVgLCBhbmQgYFNQQVJTRU1FTV9WTUVNTUFQYC4gSXQgbG9va3MgbGlrZSBgVEVTVF9ITU1gIGlzIHRoZSBjb3JlIGRyaXZlciBmb3IgdGhlIGNvZGUsIGl0IGRlcGVuZHMgb24gYEhNTV9NSVJST1JgIGFuZCBgTU1VX05PVElGSUVSYCwgYW5kIGZ1cnRoZXIgZGVwZW5kcyBvbiBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGFuZCBgREVWSUNFX1BSSVZBVEVgLiBgREVWSUNFX1BSSVZBVEVgIGRlcGVuZHMgb24gYFpPTkVfREVWSUNFYCwgd2hpY2ggaXRzZWxmIGRlcGVuZHMgb24gdGhlIHN0YW5kYXJkIGNvbmZpZ3M6IGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYW5kIGBTUEFSU0VNRU1fVk1FTU1BUGAuIEV4Y2VsbGVudCwgdGhlc2UgbG9vayBmYWlybHkgc3RhbmRhcmQuXG5cbkZpbmFsbHksIEkgbmVlZCB0byBjb25maXJtIHRoYXQgZW5hYmxpbmcgYERFVklDRV9QUklWQVRFYCBjb21waWxlcyBpbiBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLiBJZiB0aGF0IGFsbCBjaGVja3Mgb3V0LCBJJ20gcmVhZHkgdG8gYmVnaW4gZnV6emluZyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTE5MzcsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNDowMDoxMC4xMjg4MTk1NTNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNDUwNjY5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtaWdyYXRlX2RldmljZS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL01ha2VmaWxlPTk5PW9iai0kKENPTkZJR19OVU1BKSArPSBtZW1vcnktdGllcnMub1xcbm1tL01ha2VmaWxlOjEwMDpvYmotJChDT05GSUdfREVWSUNFX01JR1JBVElPTikgKz0gbWlncmF0ZV9kZXZpY2Uub1xcbm1tL01ha2VmaWxlLTEwMS1vYmotJChDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UpICs9IGh1Z2VfbWVtb3J5Lm8ga2h1Z2VwYWdlZC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA0OjAwOjEwLjU2MzMzMzc0MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjgwNjI5MjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBEZXZpY2UgTWlncmF0aW9uIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBgQ09ORklHX0RFVklDRV9NSUdSQVRJT05gIGhhcyBwb3BwZWQgdXAgYWdhaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzY29wZSBhbmQgaW1wbGljYXRpb25zLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEknbSBnb2luZyB0byBxdWlja2x5IHRyYWNlIGl0cyBkZWZpbml0aW9uLiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIHZhcmlvdXMgYnVpbGQgY29uZmlndXJhdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBJJ20gZmFtaWxpYXIgd2l0aCBpbiB0aGUgc3lzdGVtLCBhbmQgd2hlcmUgdGhpcyBtaWdyYXRpb24gc3VwcG9ydCBtaWdodCBiZSBjb25kaXRpb25hbGx5IGVuYWJsZWQuIElzIGl0IGluIHRoZSBjb3JlIGtlcm5lbCBjb25maWcsIGEgcGxhdGZvcm0tc3BlY2lmaWMgb3ZlcmxheSwgb3IgcGVyaGFwcyB3aXRoaW4gYSBkcml2ZXIgbW9kdWxlPyBVbmRlcnN0YW5kaW5nIGl0cyBjb250ZXh0IHdpbGwgaW1tZWRpYXRlbHkgaW5mb3JtIGhvdyBpdCB3aWxsIGFmZmVjdCB0aGUgcnVudGltZSBiZWhhdmlvciBvZiBkZXZpY2VzIGluIHRoZSBwbGF0Zm9ybS4gR290dGEgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMwNjIsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNDowMDoxMy4yNDM5NjYyNjRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NjUyNzgzODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERFVklDRV9NSUdSQVRJT05cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz02OTY9Y29uZmlnIE1JR1JBVElPTlxcbi0tXFxubW0vS2NvbmZpZy02OTktXFxubW0vS2NvbmZpZzo3MDA6Y29uZmlnIERFVklDRV9NSUdSQVRJT05cXG5tbS9LY29uZmlnLTcwMS1cXHRkZWZfYm9vbCBNSUdSQVRJT04gXFx1MDAyNlxcdTAwMjYgWk9ORV9ERVZJQ0VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDQ6MDA6MTUuMDA5MjUwODQyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NjMxOTU1OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIGBERVZJQ0VfTUlHUkFUSU9OYCBmdW5jdGlvbmFsaXR5LiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgaXQncyBnYXRlZCBieSBib3RoIGBNSUdSQVRJT05gIGFuZCBgWk9ORV9ERVZJQ0VgLiBgTUlHUkFUSU9OYCBpcyBhbG1vc3QgYWx3YXlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgc28gYFpPTkVfREVWSUNFYCBpcyByZWFsbHkgdGhlIGNydXggb2YgdGhlIG1hdHRlci5cblxuTm93LCBgVEVTVF9ITU1gIHNlZW1zIHBhcnRpY3VsYXJseSByZWxldmFudCwgYW5kIGl0IGhhcyBhIGNhc2NhZGluZyBkZXBlbmRlbmN5IOKAkyBpdCBoaW5nZXMgb24gYERFVklDRV9QUklWQVRFYCwgd2hpY2ggaW4gdHVybiBoaW5nZXMgb24gYFpPTkVfREVWSUNFYC4gVGhhdCdzIGltcG9ydGFudC4gVGhpcyBtZWFucyB0aGF0IGVuYWJsaW5nIGBURVNUX0hNTWAgZWZmZWN0aXZlbHkgcHVsbHMgaW4gYERFVklDRV9QUklWQVRFYCBhbmQsIG1vc3QgaW1wb3J0YW50bHksIHRoZSBjb3JlIGBaT05FX0RFVklDRWAsIHdoaWNoIHRoZW4gbmVhdGx5IGJyaW5ncyBgREVWSUNFX01JR1JBVElPTmAgaW50byB0aGUgcGljdHVyZS5cblxuTGV0J3MgZGl2ZSBpbnRvIGBsaWIvS2NvbmZpZy5kZWJ1Z2AgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBgVEVTVF9ITU1gIGNvbmZpZy4gSSBzZWUgaXQncyBhIHRyaXN0YXRlLCBzbyBpdCBjYW4gYmUgbW9kdWxhcml6ZWQsIGJ1dCBpZiBJIHdhbnQgaXQgc3RhdGljYWxseSBsaW5rZWQsIEkganVzdCBuZWVkIHRvIGV4cGxpY2l0bHkgc2V0IGl0LlxuXG5CZWZvcmUgSSBtb3ZlIG9uLCBsZXQncyB2ZXJpZnkgdGhvc2UgZGVwZW5kZW5jaWVzIG9mIGBURVNUX0hNTWAgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIG9mIGV2ZXJ5dGhpbmcgSSd2ZSBzYWlkLiBJdCBkZXBlbmRzIG9uIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGBERVZJQ0VfUFJJVkFURWAsIGBaT05FX0RFVklDRWAsIGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYW5kIGBTUEFSU0VNRU1fVk1FTU1BUGAuIEkgY2FuIGFkZCBgVEVTVF9ITU1gLCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCBgREVWSUNFX1BSSVZBVEVgIGFuZCBgWk9ORV9ERVZJQ0VgIHRvIGBFbmFibGVDb25maWdzYCwgc28gSSB0aGluayBJIHNob3VsZCBiZSBnb29kLlxuXG5MZXQgbWUgdGFrZSBhIGxvb2sgYXQgdGhlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzLiBMZXQncyBzZWUuLi4gSSd2ZSBnb3QgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgYW5kIGBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb2AuIEl0IGxvb2tzIGxpa2UgYG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvYCBjYWxscyBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCBzbyBpdCdzIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLlxuXG5Pa2F5LCBsZXQncyBjaGVjayBgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9gLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMzIxLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA0OjAwOjIwLjc3MjQ0OTE2NFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyODIzNDQ4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9ndXAuYz0yMzIxPW1pZ3JhdGVfbG9uZ3Rlcm1fdW5waW5uYWJsZV9mb2xpb3Moc3RydWN0IGxpc3RfaGVhZCAqbW92YWJsZV9mb2xpb19saXN0LFxcbi0tXFxubW0vZ3VwLmMtMjMzOS1cXG5tbS9ndXAuYzoyMzQwOlxcdFxcdFxcdGlmIChtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyhmb2xpbykpIHtcXG5tbS9ndXAuYy0yMzQxLVxcdFxcdFxcdFxcdHJldCA9IC1FQlVTWTtcXG4tLVxcbm1tL2ludGVybmFsLmg9MTU4ND12b2lkIGZyZWVfem9uZV9kZXZpY2VfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbyk7XFxubW0vaW50ZXJuYWwuaDoxNTg1OmludCBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcXG5tbS9pbnRlcm5hbC5oLTE1ODYtXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTEwOTg9c3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTEyNy1cXHRcXHRcXHQgKiBUaGUgb25seSB0aW1lIHRoZXJlIGlzIG5vIHZtYSBpcyB3aGVuIGNhbGxlZCBmcm9tXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMTI4OlxcdFxcdFxcdCAqIG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvKCkuIEhvd2V2ZXIgdGhpcyBpc24ndFxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTEyOS1cXHRcXHRcXHQgKiBjYWxsZWQgaWYgdGhlIHBhZ2UgY291bGQgbm90IGJlIHVubWFwcGVkLlxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz0xNDYxPUVYUE9SVF9TWU1CT0wobWlncmF0ZV9kZXZpY2VfcGZucyk7XFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTE0NjctICovXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxNDY4OmludCBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTQ2OS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA0OjAwOjIyLjUwMDY5MDE0NFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDE0NzI2Nzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIERldmljZSBNaWdyYXRpb24gQ29kZSBhbmQgUmVsZXZhbnQgQ29uZmlndXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGNvZGUsIGFuZCB0aGUga2V5IGVudHJ5IHBvaW50IGZvciB0aGlzIGRldmljZSBtaWdyYXRpb24gc3R1ZmYgYXBwZWFycyB0byBiZSBgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9gLCB3aGljaCBpcyBjYWxsZWQgZnJvbSBgbWlncmF0ZV9sb25ndGVybV91bnBpbm5hYmxlX2ZvbGlvc2AgaW4gYG1tL2d1cC5jYC4gVGhhdCdzIGEgc29saWQgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZy4gVGhlIHJlbGF0ZWQgZnVuY3Rpb25zIG9mIGludGVyZXN0IGhlcmUgYXJlIGNsZWFybHkgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYG1pZ3JhdGVfdm1hX3BhZ2VzYCwgYW5kLCBvZiBjb3Vyc2UsIGBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb2AuXG5cbk15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gc2VlIGlmIGBURVNUX0hNTWAgZGlyZWN0bHkgaW1wYWN0cyBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCBhbmQgaXQgbG9va3MgbGlrZSBpdCBkb2VzISBUaGUgYGRtaXJyb3JfZGV2aWNlX2V2aWN0X2NodW5rYCBjYWxscyBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLiBUaGVuIHRoZXJlIGFyZSBjYWxscyB0byBgbWlncmF0ZV92bWFfcGFnZXNgIGZyb20gYGRtaXJyb3JfbWlncmF0ZV90b19zeXN0ZW1gLCBgZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZWAgYW5kIGBkbWlycm9yX2Rldm1lbV9mYXVsdGAuIFNvLCB5ZWFoLCBlbmFibGluZyBgVEVTVF9ITU1gIGlzIGRlZmluaXRlbHkgdGhlIHdheSB0byBnby5cblxuTm93LCBsZXQncyBjaXJjbGUgYmFjayB0byB0aGUgcGF0Y2ggaW4gcXVlc3Rpb24uIEl0IGZvY3VzZXMgb24gaG93IGBucmAgaXMgcmVzZXQgd2l0aGluIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYC4gSXQncyBmaXhpbmcgYSBidWcgd2hlcmUgYG5yYCB3YXNuJ3QgYmVpbmcgY29ycmVjdGx5IHJlc2V0IGFmdGVyIGEgZm9saW8gc3BsaXQsIHdoaWNoIG1lYW5zIHdlIHdlcmUgcG90ZW50aWFsbHkgcHJvY2Vzc2luZyB0aGUgd3JvbmcgbnVtYmVyIG9mIHBhZ2VzLiBJdCBhbHNvIGFkZHMgYSBjcnVjaWFsIGBtYXBwaW5nID0gZm9saW9fbWFwcGluZyhmb2xpbyk7YCBjYWxsIGJlZm9yZSBgZm9saW9fbWlncmF0ZV9tYXBwaW5nYCBiZWNhdXNlIGBmb2xpb19mcmVlX3N3YXAoKWAgbWlnaHQgaGF2ZSByZW1vdmVkIHRoZSBmb2xpbyBmcm9tIHRoZSBzd2FwIGNhY2hlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGVlcCB3aXRoaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIGRldmljZSBtaWdyYXRpb24gcGF0aHMsIHNvLCB5ZWFoLCBJJ20gbWFya2luZyB0aGlzIGFzIGBXb3J0aEZ1enppbmcgPSB0cnVlYC5cblxuSnVzdCB0byByZWNhcCB0aGUgaW1wb3J0YW50IHN5bWJvbHM6IGBtaWdyYXRlX2RldmljZV9wYWdlc2AsIGBtaWdyYXRlX3ZtYV9wYWdlc2AsIGFuZCBgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9gLlxuXG5BbmQgbXkgdGFyZ2V0IGNvbmZpZ3VyYXRpb25zIG5lZWQgdG8gYmU6IGBURVNUX0hNTWAsIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGBERVZJQ0VfUFJJVkFURWAsIGFuZCBgWk9ORV9ERVZJQ0VgLlxuXG5TaW5jZSBgVEVTVF9ITU1gIGRlcGVuZHMgb24gdGhlIG90aGVycywgc3BlY2lmaWNhbGx5IGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgYW5kIGBERVZJQ0VfUFJJVkFURWAsIHdpdGggYERFVklDRV9QUklWQVRFYCBuZWVkaW5nIGBaT05FX0RFVklDRWAsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhvc2UgYXJlIGVuYWJsZWQuIGBaT05FX0RFVklDRWAgYWxzbyBoYXMgZGVwZW5kZW5jaWVzIG9uIGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYW5kIGBTUEFSU0VNRU1fVk1FTU1BUGAuIEknbGwgcHJvYmFibHkgaW5jbHVkZSBgTUVNT1JZX0hPVFBMVUdgIGFuZCBgTUVNT1JZX0hPVFJFTU9WRWAgdG8gYmUgc2FmZSwgc28gSSdsbCBjaGVjayB0aG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ0NzUsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDQ6MDA6MzAuNTE1NDIxODA4WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzg3MDgxMzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNRU1PUllfSE9UUExVR1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTUxOT1jb25maWcgQVJDSF9FTkFCTEVfTUVNT1JZX0hPVFBMVUdcXG4tLVxcbm1tL0tjb25maWctNTIyLSMgZXZlbnR1YWxseSwgd2UgY2FuIGhhdmUgdGhpcyBvcHRpb24ganVzdCAnc2VsZWN0IFNQQVJTRU1FTSdcXG5tbS9LY29uZmlnOjUyMzptZW51Y29uZmlnIE1FTU9SWV9IT1RQTFVHXFxubW0vS2NvbmZpZy01MjQtXFx0Ym9vbCBcXFwiTWVtb3J5IGhvdHBsdWdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA0OjAwOjMyLjMwMjUwOTI1NloiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjQ1NzI1Njg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipNZW1vcnkgSG90LVJlbW92ZSBJbnZlc3RpZ2F0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gRmlyc3Qgb3JkZXIgb2YgYnVzaW5lc3M6ICpNRU1PUllfSE9UUkVNT1ZFKi4gVGhhdCdzIHdoZXJlIHdlIG5lZWQgdG8gc3RhcnQuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIFdoYXQncyBwcm9tcHRpbmcgdGhpcyBjaGVjaz8gSXMgaXQgYSBzcGVjaWZpYyBlcnJvciwgYSBwZXJmb3JtYW5jZSBhbm9tYWx5LCBvciBqdXN0IGdlbmVyYWwgY3VyaW9zaXR5IGFib3V0IG1lbW9yeSBtYW5hZ2VtZW50IG9uIHRoaXMgcGxhdGZvcm0/IFRoZSBnb2FsLCBvZiBjb3Vyc2UsIGlzIHRvIGRldGVybWluZSB0aGUgc3RhdGUgb2YgaG90LXJlbW92ZSBjYXBhYmlsaXRpZXMuIEFyZSB0aGV5IGVuYWJsZWQ/IFByb3Blcmx5IGNvbmZpZ3VyZWQ/IEZ1bmN0aW9uaW5nIGFzIGV4cGVjdGVkPyBNeSBleHBlcnQgaW50dWl0aW9uIGFscmVhZHkgc3VnZ2VzdHMgYSBmZXcgcG9zc2libGUgYXJlYXMgdG8gaW52ZXN0aWdhdGUsIGRlcGVuZGluZyBvbiB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggdGhpcyBpcyB0YWtpbmcgcGxhY2UuIElzIHRoaXMgb24gYmFyZSBtZXRhbCwgdmlydHVhbGl6ZWQsIGluIGEgc3BlY2lmaWMgY2xvdWQgcHJvdmlkZXI/IEVhY2ggaGFzIGl0cyBvd24gbnVhbmNlcyB3aXRoIGhvdC1yZW1vdmUuIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCB0aGUgZnVuZGFtZW50YWxzIGJlZm9yZSBleHBsb3JpbmcgYW55IHBvdGVudGlhbCBpc3N1ZXMgb3IgYXZlbnVlcyBmb3Igb3B0aW1pemF0aW9uLiBNeSBuZXh0IHN0ZXBzIHdpbGwgZGVwZW5kIGVudGlyZWx5IG9uIHdoYXQgSSBmaW5kIHdoZW4gSSBpbnNwZWN0IGBNRU1PUllfSE9UUkVNT1ZFYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU3MDgsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNDowMDozNS45NDgyMzgyODFaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NTI4NjYwNjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1FTU9SWV9IT1RSRU1PVkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz01ODk9ZW5kY2hvaWNlXFxubW0vS2NvbmZpZy01OTAtXFxubW0vS2NvbmZpZzo1OTE6Y29uZmlnIE1FTU9SWV9IT1RSRU1PVkVcXG5tbS9LY29uZmlnLTU5Mi1cXHRib29sIFxcXCJBbGxvdyBmb3IgbWVtb3J5IGhvdCByZW1vdmVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA0OjAwOjM3LjcwMTExNTEzWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg3MTg3NTk0ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBWdWxuZXJhYmlsaXR5IGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCwgd2hpY2ggdG91Y2hlcyBkZXZpY2UgbWVtb3J5IG1pZ3JhdGlvbiBpbiBgbW0vbWlncmF0ZV9kZXZpY2UuY2AsIGxvb2tzIHByb21pc2luZyBmb3IgZnV6emluZy4gV2UncmUgZGVhbGluZyB3aXRoIGZ1bmRhbWVudGFsIG1lbW9yeSBtYW5hZ2VtZW50IHJvdXRpbmVzIHRoYXQgYXJlIGNyaXRpY2FsIGZvciBITU0gYW5kIGRyaXZlcnMsIGVzcGVjaWFsbHkgR1BVcywgaGFuZGxpbmcgZm9saW8gc3BsaXR0aW5nIGFuZCBzd2FwIGNhY2hlIG1hcHBpbmcgZHVyaW5nIGRldmljZSBtZW1vcnkgbWlncmF0aW9uLiBUaGF0J3MgYSBrZXkgYXJlYS5cblxuSSd2ZSBtYWRlIHN1cmUgdG8gaW5jbHVkZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW4gb3VyIHRlc3Rpbmcgc3RyYXRlZ3kuIGBNRU1PUllfSE9UUExVR2AgYW5kIGBNRU1PUllfSE9UUkVNT1ZFYCBhcmUgb2J2aW91cyBjYW5kaWRhdGVzLCBnaXZlbiB0aGUgY29udGV4dC4gVGhlbiB3ZSBoYXZlIGBaT05FX0RFVklDRWAgYW5kIGBERVZJQ0VfUFJJVkFURWAsIHdoaWNoIGFyZSBjcnVjaWFsIGZvciB0aGUgZGV2aWNlIG1lbW9yeSBpbnRlcmFjdGlvbnMgdGhpcyBwYXRjaCBtb2RpZmllcy4gSSd2ZSBhbHNvIGFkZGVkIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgc2luY2UgaHVnZXBhZ2UgaW50ZXJhY3Rpb25zIGNhbiBleHBvc2UgaXNzdWVzIGluIG1pZ3JhdGlvbiBsb2dpYywgYW5kIGBURVNUX0hNTWAsIHdoaWNoIHByb3ZpZGVzIGEga25vd24gZ29vZCBwYXRoIGZvciB0ZXN0aW5nLCBhbmQgdGhlIGNyaXRpY2FsIHBpZWNlLCBgU1BBUlNFTUVNX1ZNRU1NQVBgLiBBbHRob3VnaCBvZnRlbiBlbmFibGVkIGJ5IGRlZmF1bHQgb24geDg2XzY0LCBpdCdzIHdvcnRoIGV4cGxpY2l0bHkgaW5jbHVkaW5nIGZvciB0aG9yb3VnaG5lc3MuXG5cbkkgYWxzbyBjaGVja2VkIHRoZSBleHBvcnQgc3RhdHVzIG9mIHRoZSByZWxldmFudCBmdW5jdGlvbnMuIGBtaWdyYXRlX3ZtYV9wYWdlc2AgYW5kIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYXJlIGV4cG9ydGVkLCB3aGljaCBpcyBnb29kIGZvciB1cy4gYG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvYCBpc24ndCBzdGF0aWMsIGFuZCBpdCdzIGRlZmluZWQgaW4gYG1tL2ludGVybmFsLmhgLCBzbyBpdCBpcyBpbmRpcmVjdGx5IGV4cG9zZWQuXG5cbkRpZ2dpbmcgZnVydGhlciwgSSB0cmFjZWQgdGhlIGNhbGwgcGF0aHMgdG8gYG1pZ3JhdGVfZGV2aWNlX2NvaGVyZW50X2ZvbGlvYC4gSXQncyB1bHRpbWF0ZWx5IHJlYWNoYWJsZSB0aHJvdWdoIGBtaWdyYXRlX2xvbmd0ZXJtX3VucGlubmFibGVfZm9saW9zYCB3aGljaCBpcyB0aGVuIGNhbGxlZCBmcm9tIGBjaGVja19hbmRfbWlncmF0ZV9tb3ZhYmxlX2ZvbGlvc2AgYW5kIHRoZW4gYF9fZ3VwX2xvbmd0ZXJtX2xvY2tlZGAgd2hpY2ggaXMgY2FsbGVkIGZyb20gYHBpbl91c2VyX3BhZ2VzYC4gVGhpcyBjb25maXJtcyBpdCdzIGFjY2Vzc2libGUgdGhyb3VnaCBpb191cmluZywgUkRNQSwgVkZJTywgYW5kIG90aGVyIGNvbW1vbiBwYXRocyB0aGF0IHdlIGNhbiB0YXJnZXQgaW4gb3VyIGZ1enplci4gU28sIHRoZSBrZXkgZnVuY3Rpb25zIGFyZSBpbmRlZWQgZXhwb3NlZCBhbmQgcmVhY2hhYmxlLlxuXG5CYXNlZCBvbiB0aGlzLCBJJ20gY29uZmlkZW50IHRoYXQgdGhlIGZvbGxvd2luZyBhcmUgd29ydGggZm9jdXNpbmcgb246IGBtaWdyYXRlX2RldmljZV9wYWdlc2AsIGBtaWdyYXRlX3ZtYV9wYWdlc2AsIGFuZCBgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9gLiBUaGVzZSBhcmUgdGhlIGNvcmUgZnVuY3Rpb25zIHRoYXQgZW5jYXBzdWxhdGUgdGhlIGNvcmUgbG9naWMgdGhpcyBwYXRjaCB0b3VjaGVzLiBXZSBzaG91bGQgYmUgYWJsZSB0byB0cmlnZ2VyIHRoZSBwYXRjaGVkIGNvZGUgaW4gb3VyIGZ1enppbmcgc2V0dXAuXG5cblRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2AgaXMgc2V0IHRvIGB0cnVlYCwgYW5kIEkndmUgY29uc3RydWN0ZWQgbXkgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYCBhY2NvcmRpbmdseS4gSSB3aWxsIG5vdyBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjAxMywiT3V0cHV0VG9rZW5zIjoxODgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDQ6MDA6NDYuNDE5ODc3MjMzWiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ5NTQyOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRFU1RfSE1NXCIsXG4gICAgXCJUUkFOU1BBUkVOVF9IVUdFUEFHRVwiLFxuICAgIFwiREVWSUNFX1BSSVZBVEVcIixcbiAgICBcIlpPTkVfREVWSUNFXCIsXG4gICAgXCJNRU1PUllfSE9UUExVR1wiLFxuICAgIFwiTUVNT1JZX0hPVFJFTU9WRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1pZ3JhdGVfZGV2aWNlX3BhZ2VzXCIsXG4gICAgXCJtaWdyYXRlX3ZtYV9wYWdlc1wiLFxuICAgIFwibWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgIHRvIGZpeCBmb2xpbyBzcGxpdHRpbmcgYW5kIHN3YXAgY2FjaGUgbWFwcGluZyBkdXJpbmcgZGV2aWNlIG1lbW9yeSBtaWdyYXRpb24uIFRoaXMgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyB1c2VkIGJ5IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudCkgYW5kIGRldmljZSBkcml2ZXJzLiBUaGUgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8tZGV2aWNlIGRyaXZlciBhbmQgc3RhbmRhcmQgR1VQIChnZXRfdXNlcl9wYWdlcykgcGF0aHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVEVTVF9ITU1cIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJERVZJQ0VfUFJJVkFURVwiLFxuICAgIFwiWk9ORV9ERVZJQ0VcIixcbiAgICBcIk1FTU9SWV9IT1RQTFVHXCIsXG4gICAgXCJNRU1PUllfSE9UUkVNT1ZFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWlncmF0ZV9kZXZpY2VfcGFnZXNcIixcbiAgICBcIm1pZ3JhdGVfdm1hX3BhZ2VzXCIsXG4gICAgXCJtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBpbiBgbW0vbWlncmF0ZV9kZXZpY2UuY2AgdG8gZml4IGZvbGlvIHNwbGl0dGluZyBhbmQgc3dhcCBjYWNoZSBtYXBwaW5nIGR1cmluZyBkZXZpY2UgbWVtb3J5IG1pZ3JhdGlvbi4gVGhpcyBpcyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIHVzZWQgYnkgSE1NIChIZXRlcm9nZW5lb3VzIE1lbW9yeSBNYW5hZ2VtZW50KSBhbmQgZGV2aWNlIGRyaXZlcnMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIHRoZSBgVEVTVF9ITU1gIHBzZXVkby1kZXZpY2UgZHJpdmVyIGFuZCBzdGFuZGFyZCBHVVAgKGdldF91c2VyX3BhZ2VzKSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowplshm[1] Phase: Succeeded StartedAt: 2026-07-29 04:01:14 +0000 UTC FinishedAt: 2026-07-29 04:01:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-29 04:01:14 +0000 UTC FinishedAt: 2026-07-29 04:01:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[2] Phase: Succeeded StartedAt: 2026-07-29 04:01:14 +0000 UTC FinishedAt: 2026-07-29 07:58:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-29 04:01:14 +0000 UTC FinishedAt: 2026-07-29 07:58:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-29 04:01:14 +0000 UTC FinishedAt: 2026-07-29 04:01:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-29 04:01:14 +0000 UTC FinishedAt: 2026-07-29 04:01:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowplshm/series-workflowplshm-convert-artifact-3598594428/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-29 04:01:34 +0000 UTC FinishedAt: 2026-07-29 04:24:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-29 04:01:34 +0000 UTC FinishedAt: 2026-07-29 04:24:05 +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:*069747aa-7320-4eb8-ac88-199b03da257d,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-workflowplshm/series-workflowplshm-convert-artifact-3598594428/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": "263605a4-e573-4ac1-9eea-e5ee474c83ed", "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-workflowplshm/series-workflowplshm-build-action-1495936170/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-29 04:01:34 +0000 UTC FinishedAt: 2026-07-29 04:23:55 +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:*069747aa-7320-4eb8-ac88-199b03da257d,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-workflowplshm/series-workflowplshm-convert-artifact-3598594428/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": "263605a4-e573-4ac1-9eea-e5ee474c83ed", "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-workflowplshm/series-workflowplshm-build-action-1495936170/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-29 04:24:05 +0000 UTC FinishedAt: 2026-07-29 04:24:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-29 04:24:05 +0000 UTC FinishedAt: 2026-07-29 04:24:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-29 04:24:05 +0000 UTC FinishedAt: 2026-07-29 04:24:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-29 04:24:05 +0000 UTC FinishedAt: 2026-07-29 04:24:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowplshm/series-workflowplshm-convert-artifact-1581643195/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-29 04:24:15 +0000 UTC FinishedAt: 2026-07-29 04:26:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-29 04:24:15 +0000 UTC FinishedAt: 2026-07-29 04:26:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*263605a4-e573-4ac1-9eea-e5ee474c83ed,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-workflowplshm/series-workflowplshm-build-action-1495936170/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-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-29 04:26:18 +0000 UTC FinishedAt: 2026-07-29 04:26:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-29 04:26:18 +0000 UTC FinishedAt: 2026-07-29 04:26:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-29 04:26:18 +0000 UTC FinishedAt: 2026-07-29 04:48:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-29 04:26:18 +0000 UTC FinishedAt: 2026-07-29 04:48: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:*069747aa-7320-4eb8-ac88-199b03da257d,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-workflowplshm/series-workflowplshm-convert-artifact-1581643195/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": "965f0be4-d2ec-4307-bc81-6d4d6eccbff5", "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-workflowplshm/series-workflowplshm-build-action-895381727/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-29 04:26:18 +0000 UTC FinishedAt: 2026-07-29 04:48:07 +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:*069747aa-7320-4eb8-ac88-199b03da257d,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-workflowplshm/series-workflowplshm-convert-artifact-1581643195/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": "965f0be4-d2ec-4307-bc81-6d4d6eccbff5", "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-workflowplshm/series-workflowplshm-build-action-895381727/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-29 04:48:17 +0000 UTC FinishedAt: 2026-07-29 04:48:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-29 04:48:17 +0000 UTC FinishedAt: 2026-07-29 04:48:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-29 04:48:17 +0000 UTC FinishedAt: 2026-07-29 04:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-29 04:48:17 +0000 UTC FinishedAt: 2026-07-29 04:50:11 +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:*965f0be4-d2ec-4307-bc81-6d4d6eccbff5,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-workflowplshm/series-workflowplshm-build-action-895381727/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-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-29 04:50:21 +0000 UTC FinishedAt: 2026-07-29 07:58:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-29 04:50:21 +0000 UTC FinishedAt: 2026-07-29 07:58:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*263605a4-e573-4ac1-9eea-e5ee474c83ed,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*965f0be4-d2ec-4307-bc81-6d4d6eccbff5,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-workflowplshm/series-workflowplshm-build-action-1495936170/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-workflowplshm/series-workflowplshm-build-action-895381727/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-29 04:50:21 +0000 UTC FinishedAt: 2026-07-29 04:50:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-29 04:50:21 +0000 UTC FinishedAt: 2026-07-29 04:50:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowplshm/series-workflowplshm-convert-artifact-1991218356/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-29 04:50:21 +0000 UTC FinishedAt: 2026-07-29 04:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-29 04:50:21 +0000 UTC FinishedAt: 2026-07-29 04:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-29 04:50:21 +0000 UTC FinishedAt: 2026-07-29 04:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-29 04:50:31 +0000 UTC FinishedAt: 2026-07-29 07:58:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowplshm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_device_pages","migrate_vma_pages","migrate_device_coherent_folio"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"aa6fc3defb36b11eb82c4d1f4e95b5f6d8a0bca6","config_name":"upstream-apparmor-kasan.config","enable_configs":["TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"5331a1c1-1dca-4ea4-b252-b85f5f90a499","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-29 04:50:31 +0000 UTC FinishedAt: 2026-07-29 07:58:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*263605a4-e573-4ac1-9eea-e5ee474c83ed,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*965f0be4-d2ec-4307-bc81-6d4d6eccbff5,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-workflowplshm/series-workflowplshm-build-action-1495936170/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-workflowplshm/series-workflowplshm-build-action-895381727/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-workflowplshm/series-workflowplshm-convert-artifact-1991218356/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,}